From beb6bc9bbf7606358771932028e61092871cf23a Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Fri, 13 Dec 2024 13:00:08 +0000 Subject: [PATCH] build based on a63d20e --- dev/404.html | 4 +- dev/about/citing.html | 6 +- dev/about/contributing.html | 6 +- dev/about/development.html | 6 +- dev/about/index.html | 10 +- dev/about/license.html | 10 +- dev/about/versions.html | 33 +++--- ...BYzFEErW.js => about_index.md.DDeqRwIY.js} | 2 +- ...ean.js => about_index.md.DDeqRwIY.lean.js} | 2 +- ...TPbAIg.js => about_license.md.B43Z_-HQ.js} | 2 +- ...n.js => about_license.md.B43Z_-HQ.lean.js} | 2 +- ...O0kAn.js => about_versions.md.Bk-sITSg.js} | 25 ++-- ....js => about_versions.md.Bk-sITSg.lean.js} | 25 ++-- .../{app.D86iw_p-.js => app.Cqn8wUEB.js} | 2 +- .../chunks/@localSearchIndexroot.DVDE_PMf.js | 1 - .../chunks/@localSearchIndexroot.E-8RDk93.js | 1 + ...INPjNu.js => VPLocalSearchBox.DxzrSaau.js} | 2 +- .../{theme.BCKAc1BQ.js => theme.CG5UfwCm.js} | 4 +- dev/assets/dcezsvt.CcecJ8jR.png | Bin 0 -> 51548 bytes ...rzso.CGB02zQg.png => ebauyfm.CGB02zQg.png} | Bin ...mples_generated_Actuator2D.md.DxDFVKMk.js} | 22 ++-- ..._generated_Actuator2D.md.DxDFVKMk.lean.js} | 22 ++-- ...rated_DecayingTurbulence2D.md.Di45Ivji.js} | 17 +-- ..._DecayingTurbulence2D.md.Di45Ivji.lean.js} | 17 +-- ...generated_RayleighBenard2D.md.DK8wXqn9.js} | 6 +- ...ated_RayleighBenard2D.md.DK8wXqn9.lean.js} | 6 +- ...generated_RayleighTaylor2D.md.QTiLYjii.js} | 16 +-- ...ated_RayleighTaylor2D.md.QTiLYjii.lean.js} | 16 +-- ...erated_TaylorGreenVortex2D.md.BBlb1Y2_.js} | 2 +- ...d_TaylorGreenVortex2D.md.BBlb1Y2_.lean.js} | 2 +- ...dpmh.B0GX2W7p.png => giwhfzn.B0GX2W7p.png} | Bin ...oqhm.D0gpz0HH.png => hcmbwbw.D0gpz0HH.png} | Bin dev/assets/ivcspuy.Pnvm2dOa.png | Bin 50098 -> 0 bytes dev/assets/jnffizt.DlMyxgTb.png | Bin 38774 -> 0 bytes ...iovy.BxypEGK2.png => koitmsv.BxypEGK2.png} | Bin ...trrx.C3CW_rGA.png => lslbzsj.C3CW_rGA.png} | Bin ....lean.js => manual_closure.md.Bp4YxggZ.js} | 30 ++--- ....js => manual_closure.md.Bp4YxggZ.lean.js} | 30 ++--- ...> manual_differentiability.md.D_UkzJTY.js} | 2 +- ...ual_differentiability.md.D_UkzJTY.lean.js} | 2 +- ...aAGh.js => manual_matrices.md.WgRK4vkk.js} | 12 +- ...js => manual_matrices.md.WgRK4vkk.lean.js} | 12 +- ...ean.js => manual_operators.md.DDNX2oaK.js} | 6 +- ...s => manual_operators.md.DDNX2oaK.lean.js} | 6 +- ...lBfk.js => manual_pressure.md.CGOE2Wqh.js} | 10 +- ...js => manual_pressure.md.CGOE2Wqh.lean.js} | 10 +- ...ER13ld6.js => manual_sciml.md.CcNBgquF.js} | 78 ++++++------ ...an.js => manual_sciml.md.CcNBgquF.lean.js} | 78 ++++++------ ...6x6ynsm.js => manual_setup.md.B7b6UkIH.js} | 18 +-- ...an.js => manual_setup.md.B7b6UkIH.lean.js} | 18 +-- ...ATxmgf.js => manual_solver.md.CveGplQk.js} | 10 +- ...n.js => manual_solver.md.CveGplQk.lean.js} | 10 +- ...B.js => manual_temperature.md.DGNhfuFk.js} | 6 +- ...=> manual_temperature.md.DGNhfuFk.lean.js} | 6 +- ...3eTgRN26.js => manual_time.md.BJBCC_BN.js} | 104 ++++++++-------- ...ean.js => manual_time.md.BJBCC_BN.lean.js} | 104 ++++++++-------- ...BLFMcXv.js => manual_utils.md.BH_DwoJc.js} | 8 +- ...an.js => manual_utils.md.BH_DwoJc.lean.js} | 8 +- ...usgj.C2NI-x6W.png => pmidlev.C2NI-x6W.png} | Bin dev/assets/pqbunkl.lOgoLSNC.png | Bin 161840 -> 0 bytes dev/assets/uvwqkqs.LQXaN1Di.png | Bin 0 -> 38578 bytes ...ebju.D8geYuhY.png => vyxolzy.D8geYuhY.png} | Bin ...mpek.BjVPut0E.png => ybniibi.BjVPut0E.png} | Bin dev/assets/yoqfjhw.OfhdAyXL.png | Bin 0 -> 152047 bytes ...jwfa.BQ4kmQL6.png => zlzjvsb.BQ4kmQL6.png} | Bin dev/examples/generated/Actuator2D.html | 36 +++--- dev/examples/generated/Actuator3D.html | 6 +- .../generated/BackwardFacingStep2D.html | 6 +- .../generated/BackwardFacingStep3D.html | 6 +- .../generated/DecayingTurbulence2D.html | 23 ++-- .../generated/DecayingTurbulence3D.html | 6 +- dev/examples/generated/Kolmogorov2D.html | 6 +- dev/examples/generated/LidDrivenCavity2D.html | 6 +- dev/examples/generated/LidDrivenCavity3D.html | 6 +- dev/examples/generated/MultiActuator.html | 6 +- dev/examples/generated/PlanarMixing2D.html | 6 +- dev/examples/generated/PlaneJets2D.html | 6 +- dev/examples/generated/RayleighBenard2D.html | 14 +-- dev/examples/generated/RayleighBenard3D.html | 6 +- dev/examples/generated/RayleighTaylor2D.html | 24 ++-- dev/examples/generated/RayleighTaylor3D.html | 6 +- dev/examples/generated/ShearLayer2D.html | 6 +- .../generated/TaylorGreenVortex2D.html | 10 +- .../generated/TaylorGreenVortex3D.html | 6 +- dev/examples/index.html | 6 +- dev/getting_started.html | 6 +- dev/hashmap.json | 2 +- dev/index.html | 6 +- dev/manual/closure.html | 36 +++--- dev/manual/differentiability.html | 10 +- dev/manual/gpu.html | 6 +- dev/manual/les.html | 6 +- dev/manual/matrices.html | 20 ++-- dev/manual/ns.html | 6 +- dev/manual/operators.html | 14 +-- dev/manual/precision.html | 6 +- dev/manual/pressure.html | 18 +-- dev/manual/sciml.html | 86 +++++++------- dev/manual/setup.html | 26 ++-- dev/manual/solver.html | 18 +-- dev/manual/spatial.html | 6 +- dev/manual/temperature.html | 10 +- dev/manual/time.html | 112 +++++++++--------- dev/manual/utils.html | 16 +-- dev/references.html | 6 +- 105 files changed, 725 insertions(+), 725 deletions(-) rename dev/assets/{about_index.md.BYzFEErW.js => about_index.md.DDeqRwIY.js} (99%) rename dev/assets/{about_index.md.BYzFEErW.lean.js => about_index.md.DDeqRwIY.lean.js} (99%) rename dev/assets/{about_license.md.BMTPbAIg.js => about_license.md.B43Z_-HQ.js} (92%) rename dev/assets/{about_license.md.BMTPbAIg.lean.js => about_license.md.B43Z_-HQ.lean.js} (92%) rename dev/assets/{about_versions.md.ByqO0kAn.js => about_versions.md.Bk-sITSg.js} (97%) rename dev/assets/{about_versions.md.ByqO0kAn.lean.js => about_versions.md.Bk-sITSg.lean.js} (97%) rename dev/assets/{app.D86iw_p-.js => app.Cqn8wUEB.js} (95%) delete mode 100644 dev/assets/chunks/@localSearchIndexroot.DVDE_PMf.js create mode 100644 dev/assets/chunks/@localSearchIndexroot.E-8RDk93.js rename dev/assets/chunks/{VPLocalSearchBox.DFINPjNu.js => VPLocalSearchBox.DxzrSaau.js} (99%) rename dev/assets/chunks/{theme.BCKAc1BQ.js => theme.CG5UfwCm.js} (99%) create mode 100644 dev/assets/dcezsvt.CcecJ8jR.png rename dev/assets/{izirzso.CGB02zQg.png => ebauyfm.CGB02zQg.png} (100%) rename dev/assets/{examples_generated_Actuator2D.md.CicJvifW.lean.js => examples_generated_Actuator2D.md.DxDFVKMk.js} (98%) rename dev/assets/{examples_generated_Actuator2D.md.CicJvifW.js => examples_generated_Actuator2D.md.DxDFVKMk.lean.js} (98%) rename dev/assets/{examples_generated_DecayingTurbulence2D.md.BUaxapZ_.js => examples_generated_DecayingTurbulence2D.md.Di45Ivji.js} (95%) rename dev/assets/{examples_generated_DecayingTurbulence2D.md.BUaxapZ_.lean.js => examples_generated_DecayingTurbulence2D.md.Di45Ivji.lean.js} (95%) rename dev/assets/{examples_generated_RayleighBenard2D.md.Cmmj9k1P.lean.js => examples_generated_RayleighBenard2D.md.DK8wXqn9.js} (99%) rename dev/assets/{examples_generated_RayleighBenard2D.md.Cmmj9k1P.js => examples_generated_RayleighBenard2D.md.DK8wXqn9.lean.js} (99%) rename dev/assets/{examples_generated_RayleighTaylor2D.md.C4WmLQbK.js => examples_generated_RayleighTaylor2D.md.QTiLYjii.js} (99%) rename dev/assets/{examples_generated_RayleighTaylor2D.md.C4WmLQbK.lean.js => examples_generated_RayleighTaylor2D.md.QTiLYjii.lean.js} (99%) rename dev/assets/{examples_generated_TaylorGreenVortex2D.md.XLjKfMqJ.js => examples_generated_TaylorGreenVortex2D.md.BBlb1Y2_.js} (99%) rename dev/assets/{examples_generated_TaylorGreenVortex2D.md.XLjKfMqJ.lean.js => examples_generated_TaylorGreenVortex2D.md.BBlb1Y2_.lean.js} (99%) rename dev/assets/{bbydpmh.B0GX2W7p.png => giwhfzn.B0GX2W7p.png} (100%) rename dev/assets/{joyoqhm.D0gpz0HH.png => hcmbwbw.D0gpz0HH.png} (100%) delete mode 100644 dev/assets/ivcspuy.Pnvm2dOa.png delete mode 100644 dev/assets/jnffizt.DlMyxgTb.png rename dev/assets/{yhyiovy.BxypEGK2.png => koitmsv.BxypEGK2.png} (100%) rename dev/assets/{jyvtrrx.C3CW_rGA.png => lslbzsj.C3CW_rGA.png} (100%) rename dev/assets/{manual_closure.md.Bl_bxqy7.lean.js => manual_closure.md.Bp4YxggZ.js} (97%) rename dev/assets/{manual_closure.md.Bl_bxqy7.js => manual_closure.md.Bp4YxggZ.lean.js} (97%) rename dev/assets/{manual_differentiability.md.DHl4CtMi.js => manual_differentiability.md.D_UkzJTY.js} (89%) rename dev/assets/{manual_differentiability.md.DHl4CtMi.lean.js => manual_differentiability.md.D_UkzJTY.lean.js} (89%) rename dev/assets/{manual_matrices.md.CgitaAGh.js => manual_matrices.md.WgRK4vkk.js} (98%) rename dev/assets/{manual_matrices.md.CgitaAGh.lean.js => manual_matrices.md.WgRK4vkk.lean.js} (98%) rename dev/assets/{manual_operators.md.d5WWXEo-.lean.js => manual_operators.md.DDNX2oaK.js} (97%) rename dev/assets/{manual_operators.md.d5WWXEo-.js => manual_operators.md.DDNX2oaK.lean.js} (97%) rename dev/assets/{manual_pressure.md.CRdAlBfk.js => manual_pressure.md.CGOE2Wqh.js} (95%) rename dev/assets/{manual_pressure.md.CRdAlBfk.lean.js => manual_pressure.md.CGOE2Wqh.lean.js} (95%) rename dev/assets/{manual_sciml.md.CER13ld6.js => manual_sciml.md.CcNBgquF.js} (75%) rename dev/assets/{manual_sciml.md.CER13ld6.lean.js => manual_sciml.md.CcNBgquF.lean.js} (75%) rename dev/assets/{manual_setup.md.w6x6ynsm.js => manual_setup.md.B7b6UkIH.js} (97%) rename dev/assets/{manual_setup.md.w6x6ynsm.lean.js => manual_setup.md.B7b6UkIH.lean.js} (97%) rename dev/assets/{manual_solver.md.CSATxmgf.js => manual_solver.md.CveGplQk.js} (84%) rename dev/assets/{manual_solver.md.CSATxmgf.lean.js => manual_solver.md.CveGplQk.lean.js} (84%) rename dev/assets/{manual_temperature.md.CvylYS1B.js => manual_temperature.md.DGNhfuFk.js} (93%) rename dev/assets/{manual_temperature.md.CvylYS1B.lean.js => manual_temperature.md.DGNhfuFk.lean.js} (93%) rename dev/assets/{manual_time.md.3eTgRN26.js => manual_time.md.BJBCC_BN.js} (99%) rename dev/assets/{manual_time.md.3eTgRN26.lean.js => manual_time.md.BJBCC_BN.lean.js} (99%) rename dev/assets/{manual_utils.md.CBLFMcXv.js => manual_utils.md.BH_DwoJc.js} (94%) rename dev/assets/{manual_utils.md.CBLFMcXv.lean.js => manual_utils.md.BH_DwoJc.lean.js} (94%) rename dev/assets/{aeuusgj.C2NI-x6W.png => pmidlev.C2NI-x6W.png} (100%) delete mode 100644 dev/assets/pqbunkl.lOgoLSNC.png create mode 100644 dev/assets/uvwqkqs.LQXaN1Di.png rename dev/assets/{giyebju.D8geYuhY.png => vyxolzy.D8geYuhY.png} (100%) rename dev/assets/{vwimpek.BjVPut0E.png => ybniibi.BjVPut0E.png} (100%) create mode 100644 dev/assets/yoqfjhw.OfhdAyXL.png rename dev/assets/{eimjwfa.BQ4kmQL6.png => zlzjvsb.BQ4kmQL6.png} (100%) diff --git a/dev/404.html b/dev/404.html index d9d843684..1c6903fb0 100644 --- a/dev/404.html +++ b/dev/404.html @@ -9,7 +9,7 @@ - + @@ -21,7 +21,7 @@
- + \ No newline at end of file diff --git a/dev/about/citing.html b/dev/about/citing.html index e2a654cce..98a6fd084 100644 --- a/dev/about/citing.html +++ b/dev/about/citing.html @@ -9,9 +9,9 @@ - + - + @@ -24,7 +24,7 @@
- + \ No newline at end of file diff --git a/dev/about/contributing.html b/dev/about/contributing.html index 9481b7d60..f1a9cd9c0 100644 --- a/dev/about/contributing.html +++ b/dev/about/contributing.html @@ -9,9 +9,9 @@ - + - + @@ -24,7 +24,7 @@
- + \ No newline at end of file diff --git a/dev/about/development.html b/dev/about/development.html index 4a24cf0af..7e2b17cb7 100644 --- a/dev/about/development.html +++ b/dev/about/development.html @@ -9,9 +9,9 @@ - + - + @@ -25,7 +25,7 @@
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).

- + \ No newline at end of file diff --git a/dev/about/index.html b/dev/about/index.html index 13220d6d8..bc9aaa62f 100644 --- a/dev/about/index.html +++ b/dev/about/index.html @@ -9,11 +9,11 @@ - + - + - + @@ -23,8 +23,8 @@ -
Skip to content
- +
Skip to content
+ \ No newline at end of file diff --git a/dev/about/license.html b/dev/about/license.html index fef5e038b..58d11eb65 100644 --- a/dev/about/license.html +++ b/dev/about/license.html @@ -9,11 +9,11 @@ - + - + - + @@ -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/dev/about/versions.html b/dev/about/versions.html index f17756268..dea6598cf 100644 --- a/dev/about/versions.html +++ b/dev/about/versions.html @@ -9,11 +9,11 @@ - + - + - + @@ -46,7 +46,7 @@ [27a7e980] Animations v0.4.2 [dce04be8] ArgCheck v2.4.0 [4fba245c] ArrayInterface v7.17.1 - [a9b6321e] Atomix v1.0.0 + [a9b6321e] Atomix v1.0.1 [67c07d97] Automa v1.1.0 [13072b0f] AxisAlgorithms v1.1.0 [39de3d68] AxisArrays v0.4.7 @@ -59,7 +59,7 @@ [fa961155] CEnum v0.5.0 [2a0fbf3d] CPUSummary v0.2.6 [159f3aea] Cairo v1.1.1 - [13f3f980] CairoMakie v0.12.17 + [13f3f980] CairoMakie v0.12.18 [082447d4] ChainRules v1.72.1 [d360d2e6] ChainRulesCore v1.25.0 [fb6a15b2] CloseOpenIntervals v0.1.13 @@ -96,7 +96,7 @@ [daee34ce] DocumenterCitations v1.3.5 [4710194d] DocumenterVitepress v0.1.3 [4e289a0a] EnumX v1.0.4 - [7da242da] Enzyme v0.13.21 + [7da242da] Enzyme v0.13.22 [f151be2c] EnzymeCore v0.8.8 [429591f6] ExactPredicates v2.2.8 [318dbb63] Examples v1.0.0 `../examples` @@ -122,7 +122,7 @@ [77dc65aa] FunctionWrappersWrappers v0.1.3 [d9f16b24] Functors v0.5.2 [f7f18e0c] GLFW v3.4.3 - [e9467ef8] GLMakie v0.10.17 + [e9467ef8] GLMakie v0.10.18 ⌃ [0c68f7d7] GPUArrays v10.3.1 ⌅ [46192b85] GPUArraysCore v0.1.6 [61eb1bfa] GPUCompiler v1.0.1 @@ -163,7 +163,7 @@ [7d188eb4] JSONSchema v1.4.1 [b835a17e] JpegTurbo v0.1.5 [b14d175d] JuliaVariables v0.2.4 - [63c18a36] KernelAbstractions v0.9.30 + [63c18a36] KernelAbstractions v0.9.31 [5ab0869b] KernelDensity v0.6.9 [929cbde3] LLVM v9.1.3 [b964fa9f] LaTeXStrings v1.4.0 @@ -172,7 +172,7 @@ [8cdb02fc] LazyModules v0.3.1 [9c8b4983] LightXML v0.9.1 [98b081ad] Literate v2.20.1 - [2ab3a3ac] LogExpFunctions v0.3.28 + [2ab3a3ac] LogExpFunctions v0.3.29 [b2108857] Lux v1.4.1 [bb33d45b] LuxCore v1.2.1 [82251201] LuxLib v1.3.10 @@ -180,8 +180,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 + [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 @@ -201,7 +201,7 @@ [510215fc] Observables v0.5.5 [6fe1bfb0] OffsetArrays v1.14.2 [52e1d378] OpenEXR v0.3.3 - [3bd65402] Optimisers v0.4.1 + [3bd65402] Optimisers v0.4.2 [bac558e1] OrderedCollections v1.7.0 [bbf590c4] OrdinaryDiffEqCore v1.13.0 [b1df2697] OrdinaryDiffEqTsit5 v1.1.0 @@ -252,7 +252,7 @@ [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 @@ -262,7 +262,7 @@ [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 @@ -285,8 +285,7 @@ [3a884ed6] UnPack v1.0.2 [1cfade01] UnicodeFun v0.4.1 [1986cc42] Unitful v1.21.1 - [013be700] UnsafeAtomics v0.2.1 - [d80eeb9a] UnsafeAtomicsLLVM v0.2.2 + [013be700] UnsafeAtomics v0.3.0 [4004b06d] VTKBase v1.0.1 [e3aaa7dc] WebP v0.1.3 [d49dbf32] WeightInitializers v1.0.4 @@ -427,7 +426,7 @@ [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` - + \ No newline at end of file diff --git a/dev/assets/about_index.md.BYzFEErW.js b/dev/assets/about_index.md.DDeqRwIY.js similarity index 99% rename from dev/assets/about_index.md.BYzFEErW.js rename to dev/assets/about_index.md.DDeqRwIY.js index 0eb0278eb..33195068c 100644 --- a/dev/assets/about_index.md.BYzFEErW.js +++ b/dev/assets/about_index.md.DDeqRwIY.js @@ -1 +1 @@ -import{_ as r,c as i,j as s,a as o,G as a,a5 as p,B as n,o as t}from"./chunks/framework.Dr1kDDE8.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"},d={class:"jldocstring custom-block",open:""};function m(v,e,u,b,k,N){const l=n("Badge");return t(),i("div",null,[e[3]||(e[3]=s("h1",{id:"About-IncompressibleNavierStokes.jl",tabindex:"-1"},[o("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",d,[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]=o()),a(l,{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=r(c,[["render",m]]);export{I as __pageData,f as default}; +import{_ as r,c as i,j as s,a as o,G as a,a5 as p,B as n,o as t}from"./chunks/framework.Dr1kDDE8.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"},d={class:"jldocstring custom-block",open:""};function m(v,e,u,b,k,N){const l=n("Badge");return t(),i("div",null,[e[3]||(e[3]=s("h1",{id:"About-IncompressibleNavierStokes.jl",tabindex:"-1"},[o("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",d,[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]=o()),a(l,{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=r(c,[["render",m]]);export{I as __pageData,f as default}; diff --git a/dev/assets/about_index.md.BYzFEErW.lean.js b/dev/assets/about_index.md.DDeqRwIY.lean.js similarity index 99% rename from dev/assets/about_index.md.BYzFEErW.lean.js rename to dev/assets/about_index.md.DDeqRwIY.lean.js index 0eb0278eb..33195068c 100644 --- a/dev/assets/about_index.md.BYzFEErW.lean.js +++ b/dev/assets/about_index.md.DDeqRwIY.lean.js @@ -1 +1 @@ -import{_ as r,c as i,j as s,a as o,G as a,a5 as p,B as n,o as t}from"./chunks/framework.Dr1kDDE8.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"},d={class:"jldocstring custom-block",open:""};function m(v,e,u,b,k,N){const l=n("Badge");return t(),i("div",null,[e[3]||(e[3]=s("h1",{id:"About-IncompressibleNavierStokes.jl",tabindex:"-1"},[o("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",d,[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]=o()),a(l,{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=r(c,[["render",m]]);export{I as __pageData,f as default}; +import{_ as r,c as i,j as s,a as o,G as a,a5 as p,B as n,o as t}from"./chunks/framework.Dr1kDDE8.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"},d={class:"jldocstring custom-block",open:""};function m(v,e,u,b,k,N){const l=n("Badge");return t(),i("div",null,[e[3]||(e[3]=s("h1",{id:"About-IncompressibleNavierStokes.jl",tabindex:"-1"},[o("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",d,[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]=o()),a(l,{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=r(c,[["render",m]]);export{I as __pageData,f as default}; diff --git a/dev/assets/about_license.md.BMTPbAIg.js b/dev/assets/about_license.md.B43Z_-HQ.js similarity index 92% rename from dev/assets/about_license.md.BMTPbAIg.js rename to dev/assets/about_license.md.B43Z_-HQ.js index 64ea2b795..053394c3a 100644 --- a/dev/assets/about_license.md.BMTPbAIg.js +++ b/dev/assets/about_license.md.B43Z_-HQ.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.Dr1kDDE8.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,c,E){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/03acafa3566742b1f37d722d2207f5dc21d031c0/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.Dr1kDDE8.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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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/dev/assets/about_license.md.BMTPbAIg.lean.js b/dev/assets/about_license.md.B43Z_-HQ.lean.js similarity index 92% rename from dev/assets/about_license.md.BMTPbAIg.lean.js rename to dev/assets/about_license.md.B43Z_-HQ.lean.js index 64ea2b795..053394c3a 100644 --- a/dev/assets/about_license.md.BMTPbAIg.lean.js +++ b/dev/assets/about_license.md.B43Z_-HQ.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.Dr1kDDE8.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,c,E){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/03acafa3566742b1f37d722d2207f5dc21d031c0/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.Dr1kDDE8.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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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/dev/assets/about_versions.md.ByqO0kAn.js b/dev/assets/about_versions.md.Bk-sITSg.js similarity index 97% rename from dev/assets/about_versions.md.ByqO0kAn.js rename to dev/assets/about_versions.md.Bk-sITSg.js index bbf670922..f5a53a5a8 100644 --- a/dev/assets/about_versions.md.ByqO0kAn.js +++ b/dev/assets/about_versions.md.Bk-sITSg.js @@ -21,7 +21,7 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.Dr1kDDE8.js";const b [27a7e980] Animations v0.4.2 [dce04be8] ArgCheck v2.4.0 [4fba245c] ArrayInterface v7.17.1 - [a9b6321e] Atomix v1.0.0 + [a9b6321e] Atomix v1.0.1 [67c07d97] Automa v1.1.0 [13072b0f] AxisAlgorithms v1.1.0 [39de3d68] AxisArrays v0.4.7 @@ -34,7 +34,7 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.Dr1kDDE8.js";const b [fa961155] CEnum v0.5.0 [2a0fbf3d] CPUSummary v0.2.6 [159f3aea] Cairo v1.1.1 - [13f3f980] CairoMakie v0.12.17 + [13f3f980] CairoMakie v0.12.18 [082447d4] ChainRules v1.72.1 [d360d2e6] ChainRulesCore v1.25.0 [fb6a15b2] CloseOpenIntervals v0.1.13 @@ -71,7 +71,7 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.Dr1kDDE8.js";const b [daee34ce] DocumenterCitations v1.3.5 [4710194d] DocumenterVitepress v0.1.3 [4e289a0a] EnumX v1.0.4 - [7da242da] Enzyme v0.13.21 + [7da242da] Enzyme v0.13.22 [f151be2c] EnzymeCore v0.8.8 [429591f6] ExactPredicates v2.2.8 [318dbb63] Examples v1.0.0 \`../examples\` @@ -97,7 +97,7 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.Dr1kDDE8.js";const b [77dc65aa] FunctionWrappersWrappers v0.1.3 [d9f16b24] Functors v0.5.2 [f7f18e0c] GLFW v3.4.3 - [e9467ef8] GLMakie v0.10.17 + [e9467ef8] GLMakie v0.10.18 ⌃ [0c68f7d7] GPUArrays v10.3.1 ⌅ [46192b85] GPUArraysCore v0.1.6 [61eb1bfa] GPUCompiler v1.0.1 @@ -138,7 +138,7 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.Dr1kDDE8.js";const b [7d188eb4] JSONSchema v1.4.1 [b835a17e] JpegTurbo v0.1.5 [b14d175d] JuliaVariables v0.2.4 - [63c18a36] KernelAbstractions v0.9.30 + [63c18a36] KernelAbstractions v0.9.31 [5ab0869b] KernelDensity v0.6.9 [929cbde3] LLVM v9.1.3 [b964fa9f] LaTeXStrings v1.4.0 @@ -147,7 +147,7 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.Dr1kDDE8.js";const b [8cdb02fc] LazyModules v0.3.1 [9c8b4983] LightXML v0.9.1 [98b081ad] Literate v2.20.1 - [2ab3a3ac] LogExpFunctions v0.3.28 + [2ab3a3ac] LogExpFunctions v0.3.29 [b2108857] Lux v1.4.1 [bb33d45b] LuxCore v1.2.1 [82251201] LuxLib v1.3.10 @@ -155,8 +155,8 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.Dr1kDDE8.js";const b [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 + [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 @@ -176,7 +176,7 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.Dr1kDDE8.js";const b [510215fc] Observables v0.5.5 [6fe1bfb0] OffsetArrays v1.14.2 [52e1d378] OpenEXR v0.3.3 - [3bd65402] Optimisers v0.4.1 + [3bd65402] Optimisers v0.4.2 [bac558e1] OrderedCollections v1.7.0 [bbf590c4] OrdinaryDiffEqCore v1.13.0 [b1df2697] OrdinaryDiffEqTsit5 v1.1.0 @@ -227,7 +227,7 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.Dr1kDDE8.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 @@ -237,7 +237,7 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.Dr1kDDE8.js";const b [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 @@ -260,8 +260,7 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.Dr1kDDE8.js";const b [3a884ed6] UnPack v1.0.2 [1cfade01] UnicodeFun v0.4.1 [1986cc42] Unitful v1.21.1 - [013be700] UnsafeAtomics v0.2.1 - [d80eeb9a] UnsafeAtomicsLLVM v0.2.2 + [013be700] UnsafeAtomics v0.3.0 [4004b06d] VTKBase v1.0.1 [e3aaa7dc] WebP v0.1.3 [d49dbf32] WeightInitializers v1.0.4 diff --git a/dev/assets/about_versions.md.ByqO0kAn.lean.js b/dev/assets/about_versions.md.Bk-sITSg.lean.js similarity index 97% rename from dev/assets/about_versions.md.ByqO0kAn.lean.js rename to dev/assets/about_versions.md.Bk-sITSg.lean.js index bbf670922..f5a53a5a8 100644 --- a/dev/assets/about_versions.md.ByqO0kAn.lean.js +++ b/dev/assets/about_versions.md.Bk-sITSg.lean.js @@ -21,7 +21,7 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.Dr1kDDE8.js";const b [27a7e980] Animations v0.4.2 [dce04be8] ArgCheck v2.4.0 [4fba245c] ArrayInterface v7.17.1 - [a9b6321e] Atomix v1.0.0 + [a9b6321e] Atomix v1.0.1 [67c07d97] Automa v1.1.0 [13072b0f] AxisAlgorithms v1.1.0 [39de3d68] AxisArrays v0.4.7 @@ -34,7 +34,7 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.Dr1kDDE8.js";const b [fa961155] CEnum v0.5.0 [2a0fbf3d] CPUSummary v0.2.6 [159f3aea] Cairo v1.1.1 - [13f3f980] CairoMakie v0.12.17 + [13f3f980] CairoMakie v0.12.18 [082447d4] ChainRules v1.72.1 [d360d2e6] ChainRulesCore v1.25.0 [fb6a15b2] CloseOpenIntervals v0.1.13 @@ -71,7 +71,7 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.Dr1kDDE8.js";const b [daee34ce] DocumenterCitations v1.3.5 [4710194d] DocumenterVitepress v0.1.3 [4e289a0a] EnumX v1.0.4 - [7da242da] Enzyme v0.13.21 + [7da242da] Enzyme v0.13.22 [f151be2c] EnzymeCore v0.8.8 [429591f6] ExactPredicates v2.2.8 [318dbb63] Examples v1.0.0 \`../examples\` @@ -97,7 +97,7 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.Dr1kDDE8.js";const b [77dc65aa] FunctionWrappersWrappers v0.1.3 [d9f16b24] Functors v0.5.2 [f7f18e0c] GLFW v3.4.3 - [e9467ef8] GLMakie v0.10.17 + [e9467ef8] GLMakie v0.10.18 ⌃ [0c68f7d7] GPUArrays v10.3.1 ⌅ [46192b85] GPUArraysCore v0.1.6 [61eb1bfa] GPUCompiler v1.0.1 @@ -138,7 +138,7 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.Dr1kDDE8.js";const b [7d188eb4] JSONSchema v1.4.1 [b835a17e] JpegTurbo v0.1.5 [b14d175d] JuliaVariables v0.2.4 - [63c18a36] KernelAbstractions v0.9.30 + [63c18a36] KernelAbstractions v0.9.31 [5ab0869b] KernelDensity v0.6.9 [929cbde3] LLVM v9.1.3 [b964fa9f] LaTeXStrings v1.4.0 @@ -147,7 +147,7 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.Dr1kDDE8.js";const b [8cdb02fc] LazyModules v0.3.1 [9c8b4983] LightXML v0.9.1 [98b081ad] Literate v2.20.1 - [2ab3a3ac] LogExpFunctions v0.3.28 + [2ab3a3ac] LogExpFunctions v0.3.29 [b2108857] Lux v1.4.1 [bb33d45b] LuxCore v1.2.1 [82251201] LuxLib v1.3.10 @@ -155,8 +155,8 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.Dr1kDDE8.js";const b [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 + [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 @@ -176,7 +176,7 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.Dr1kDDE8.js";const b [510215fc] Observables v0.5.5 [6fe1bfb0] OffsetArrays v1.14.2 [52e1d378] OpenEXR v0.3.3 - [3bd65402] Optimisers v0.4.1 + [3bd65402] Optimisers v0.4.2 [bac558e1] OrderedCollections v1.7.0 [bbf590c4] OrdinaryDiffEqCore v1.13.0 [b1df2697] OrdinaryDiffEqTsit5 v1.1.0 @@ -227,7 +227,7 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.Dr1kDDE8.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 @@ -237,7 +237,7 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.Dr1kDDE8.js";const b [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 @@ -260,8 +260,7 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.Dr1kDDE8.js";const b [3a884ed6] UnPack v1.0.2 [1cfade01] UnicodeFun v0.4.1 [1986cc42] Unitful v1.21.1 - [013be700] UnsafeAtomics v0.2.1 - [d80eeb9a] UnsafeAtomicsLLVM v0.2.2 + [013be700] UnsafeAtomics v0.3.0 [4004b06d] VTKBase v1.0.1 [e3aaa7dc] WebP v0.1.3 [d49dbf32] WeightInitializers v1.0.4 diff --git a/dev/assets/app.D86iw_p-.js b/dev/assets/app.Cqn8wUEB.js similarity index 95% rename from dev/assets/app.D86iw_p-.js rename to dev/assets/app.Cqn8wUEB.js index 4547f450a..dc100c61f 100644 --- a/dev/assets/app.D86iw_p-.js +++ b/dev/assets/app.Cqn8wUEB.js @@ -1 +1 @@ -import{R as p}from"./chunks/theme.BCKAc1BQ.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.Dr1kDDE8.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.CG5UfwCm.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.Dr1kDDE8.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/dev/assets/chunks/@localSearchIndexroot.DVDE_PMf.js b/dev/assets/chunks/@localSearchIndexroot.DVDE_PMf.js deleted file mode 100644 index 64186f030..000000000 --- a/dev/assets/chunks/@localSearchIndexroot.DVDE_PMf.js +++ /dev/null @@ -1 +0,0 @@ -const e='{"documentCount":148,"nextId":148,"documentIds":{"0":"/IncompressibleNavierStokes.jl/dev/about/citing#citing","1":"/IncompressibleNavierStokes.jl/dev/about/contributing#contributing","2":"/IncompressibleNavierStokes.jl/dev/about/development#Local-development","3":"/IncompressibleNavierStokes.jl/dev/about/development#Use-Juliaup","4":"/IncompressibleNavierStokes.jl/dev/about/development#revise","5":"/IncompressibleNavierStokes.jl/dev/about/development#environments","6":"/IncompressibleNavierStokes.jl/dev/about/development#vscode","7":"/IncompressibleNavierStokes.jl/dev/about/development#Environment-vs-package","8":"/IncompressibleNavierStokes.jl/dev/about/#About-IncompressibleNavierStokes.jl","9":"/IncompressibleNavierStokes.jl/dev/about/license#license","10":"/IncompressibleNavierStokes.jl/dev/about/versions#Package-versions","11":"/IncompressibleNavierStokes.jl/dev/about/versions#Julia-version","12":"/IncompressibleNavierStokes.jl/dev/about/versions#Package-versions-2","13":"/IncompressibleNavierStokes.jl/dev/examples/generated/Actuator2D#Unsteady-actuator-case-2D","14":"/IncompressibleNavierStokes.jl/dev/examples/generated/Actuator2D#packages","15":"/IncompressibleNavierStokes.jl/dev/examples/generated/Actuator2D#setup","16":"/IncompressibleNavierStokes.jl/dev/examples/generated/Actuator2D#Solve-unsteady-problem","17":"/IncompressibleNavierStokes.jl/dev/examples/generated/Actuator2D#post-process","18":"/IncompressibleNavierStokes.jl/dev/examples/generated/Actuator2D#Copy-pasteable-code","19":"/IncompressibleNavierStokes.jl/dev/examples/generated/Actuator3D#Unsteady-actuator-case-3D","20":"/IncompressibleNavierStokes.jl/dev/examples/generated/Actuator3D#post-process","21":"/IncompressibleNavierStokes.jl/dev/examples/generated/Actuator3D#Copy-pasteable-code","22":"/IncompressibleNavierStokes.jl/dev/examples/generated/BackwardFacingStep2D#Backward-Facing-Step-2D","23":"/IncompressibleNavierStokes.jl/dev/examples/generated/BackwardFacingStep2D#post-process","24":"/IncompressibleNavierStokes.jl/dev/examples/generated/BackwardFacingStep2D#Copy-pasteable-code","25":"/IncompressibleNavierStokes.jl/dev/examples/generated/BackwardFacingStep3D#Backward-Facing-Step-3D","26":"/IncompressibleNavierStokes.jl/dev/examples/generated/BackwardFacingStep3D#post-process","27":"/IncompressibleNavierStokes.jl/dev/examples/generated/BackwardFacingStep3D#Copy-pasteable-code","28":"/IncompressibleNavierStokes.jl/dev/examples/generated/DecayingTurbulence2D#Decaying-Homogeneous-Isotropic-Turbulence-2D","29":"/IncompressibleNavierStokes.jl/dev/examples/generated/DecayingTurbulence2D#packages","30":"/IncompressibleNavierStokes.jl/dev/examples/generated/DecayingTurbulence2D#post-process","31":"/IncompressibleNavierStokes.jl/dev/examples/generated/DecayingTurbulence2D#Copy-pasteable-code","32":"/IncompressibleNavierStokes.jl/dev/examples/generated/DecayingTurbulence3D#Decaying-Homogeneous-Isotropic-Turbulence-3D","33":"/IncompressibleNavierStokes.jl/dev/examples/generated/DecayingTurbulence3D#Problem-setup","34":"/IncompressibleNavierStokes.jl/dev/examples/generated/DecayingTurbulence3D#Solve-problem","35":"/IncompressibleNavierStokes.jl/dev/examples/generated/DecayingTurbulence3D#post-process","36":"/IncompressibleNavierStokes.jl/dev/examples/generated/DecayingTurbulence3D#Copy-pasteable-code","37":"/IncompressibleNavierStokes.jl/dev/examples/generated/Kolmogorov2D#Kolmogorov-flow-(2D)","38":"/IncompressibleNavierStokes.jl/dev/examples/generated/Kolmogorov2D#packages","39":"/IncompressibleNavierStokes.jl/dev/examples/generated/Kolmogorov2D#setup","40":"/IncompressibleNavierStokes.jl/dev/examples/generated/Kolmogorov2D#Plot-body-force","41":"/IncompressibleNavierStokes.jl/dev/examples/generated/Kolmogorov2D#Solve-unsteady-problem","42":"/IncompressibleNavierStokes.jl/dev/examples/generated/Kolmogorov2D#Copy-pasteable-code","43":"/IncompressibleNavierStokes.jl/dev/examples/generated/LidDrivenCavity2D#Tutorial:-Lid-Driven-Cavity-2D","44":"/IncompressibleNavierStokes.jl/dev/examples/generated/LidDrivenCavity2D#post-process","45":"/IncompressibleNavierStokes.jl/dev/examples/generated/LidDrivenCavity2D#Copy-pasteable-code","46":"/IncompressibleNavierStokes.jl/dev/examples/generated/LidDrivenCavity3D#Lid-Driven-Cavity-3D","47":"/IncompressibleNavierStokes.jl/dev/examples/generated/LidDrivenCavity3D#post-process","48":"/IncompressibleNavierStokes.jl/dev/examples/generated/LidDrivenCavity3D#Copy-pasteable-code","49":"/IncompressibleNavierStokes.jl/dev/examples/generated/MultiActuator#Unsteady-actuator-case-2D","50":"/IncompressibleNavierStokes.jl/dev/examples/generated/MultiActuator#post-process","51":"/IncompressibleNavierStokes.jl/dev/examples/generated/MultiActuator#Copy-pasteable-code","52":"/IncompressibleNavierStokes.jl/dev/examples/generated/PlanarMixing2D#Planar-mixing-2D","53":"/IncompressibleNavierStokes.jl/dev/examples/generated/PlanarMixing2D#post-process","54":"/IncompressibleNavierStokes.jl/dev/examples/generated/PlanarMixing2D#Copy-pasteable-code","55":"/IncompressibleNavierStokes.jl/dev/examples/generated/PlaneJets2D#Plane-jets-2D","56":"/IncompressibleNavierStokes.jl/dev/examples/generated/PlaneJets2D#post-process","57":"/IncompressibleNavierStokes.jl/dev/examples/generated/PlaneJets2D#Copy-pasteable-code","58":"/IncompressibleNavierStokes.jl/dev/examples/generated/RayleighBenard2D#Rayleigh-Bénard-convection-(2D)","59":"/IncompressibleNavierStokes.jl/dev/examples/generated/RayleighBenard2D#Copy-pasteable-code","60":"/IncompressibleNavierStokes.jl/dev/examples/generated/RayleighBenard3D#Rayleigh-Bénard-convection-(3D)","61":"/IncompressibleNavierStokes.jl/dev/examples/generated/RayleighBenard3D#Copy-pasteable-code","62":"/IncompressibleNavierStokes.jl/dev/examples/generated/RayleighTaylor3D#Rayleigh-Taylor-instability-in-2D","63":"/IncompressibleNavierStokes.jl/dev/examples/generated/RayleighTaylor3D#Copy-pasteable-code","64":"/IncompressibleNavierStokes.jl/dev/examples/generated/RayleighTaylor2D#Rayleigh-Taylor-instability-in-2D","65":"/IncompressibleNavierStokes.jl/dev/examples/generated/RayleighTaylor2D#Copy-pasteable-code","66":"/IncompressibleNavierStokes.jl/dev/examples/generated/ShearLayer2D#Shear-layer-2D","67":"/IncompressibleNavierStokes.jl/dev/examples/generated/ShearLayer2D#post-process","68":"/IncompressibleNavierStokes.jl/dev/examples/generated/ShearLayer2D#Copy-pasteable-code","69":"/IncompressibleNavierStokes.jl/dev/examples/generated/TaylorGreenVortex2D#Convergence-study:-Taylor-Green-vortex-(2D)","70":"/IncompressibleNavierStokes.jl/dev/examples/generated/TaylorGreenVortex2D#Copy-pasteable-code","71":"/IncompressibleNavierStokes.jl/dev/examples/generated/TaylorGreenVortex3D#Taylor-Green-vortex-3D","72":"/IncompressibleNavierStokes.jl/dev/examples/generated/TaylorGreenVortex3D#backend","73":"/IncompressibleNavierStokes.jl/dev/examples/generated/TaylorGreenVortex3D#setup","74":"/IncompressibleNavierStokes.jl/dev/examples/generated/TaylorGreenVortex3D#Solve-unsteady-problem","75":"/IncompressibleNavierStokes.jl/dev/examples/generated/TaylorGreenVortex3D#post-process","76":"/IncompressibleNavierStokes.jl/dev/examples/generated/TaylorGreenVortex3D#Copy-pasteable-code","77":"/IncompressibleNavierStokes.jl/dev/examples/#Examples-gallery","78":"/IncompressibleNavierStokes.jl/dev/examples/#Simple-flows","79":"/IncompressibleNavierStokes.jl/dev/examples/#Flows-with-mixed-boundary-conditions","80":"/IncompressibleNavierStokes.jl/dev/examples/#With-a-temperature-equation","81":"/IncompressibleNavierStokes.jl/dev/examples/#Neural-network-closure-models","82":"/IncompressibleNavierStokes.jl/dev/getting_started#Getting-Started","83":"/IncompressibleNavierStokes.jl/dev/manual/closure#Neural-closure-models","84":"/IncompressibleNavierStokes.jl/dev/manual/closure#NeuralClosure-module","85":"/IncompressibleNavierStokes.jl/dev/manual/closure#filters","86":"/IncompressibleNavierStokes.jl/dev/manual/closure#training","87":"/IncompressibleNavierStokes.jl/dev/manual/closure#Neural-architectures","88":"/IncompressibleNavierStokes.jl/dev/manual/closure#Data-generation","89":"/IncompressibleNavierStokes.jl/dev/manual/differentiability#Differentiating-through-the-code","90":"/IncompressibleNavierStokes.jl/dev/manual/differentiability#Automatic-differentiation-with-Zygote","91":"/IncompressibleNavierStokes.jl/dev/manual/differentiability#Example:-Gradient-of-kinetic-energy","92":"/IncompressibleNavierStokes.jl/dev/manual/differentiability#Automatic-differentiation-with-Enzyme","93":"/IncompressibleNavierStokes.jl/dev/manual/differentiability#Example:-Gradient-of-the-right-hand-side","94":"/IncompressibleNavierStokes.jl/dev/manual/gpu#GPU-Support","95":"/IncompressibleNavierStokes.jl/dev/manual/les#Large-eddy-simulation","96":"/IncompressibleNavierStokes.jl/dev/manual/matrices#Sparse-matrices","97":"/IncompressibleNavierStokes.jl/dev/manual/matrices#example","98":"/IncompressibleNavierStokes.jl/dev/manual/matrices#Boundary-conditions-and-matrices","99":"/IncompressibleNavierStokes.jl/dev/manual/matrices#api","100":"/IncompressibleNavierStokes.jl/dev/manual/ns#Incompressible-Navier-Stokes-equations","101":"/IncompressibleNavierStokes.jl/dev/manual/ns#Integral-form","102":"/IncompressibleNavierStokes.jl/dev/manual/ns#Boundary-conditions","103":"/IncompressibleNavierStokes.jl/dev/manual/ns#Pressure-equation","104":"/IncompressibleNavierStokes.jl/dev/manual/ns#Other-quantities-of-interest","105":"/IncompressibleNavierStokes.jl/dev/manual/ns#Reynolds-number","106":"/IncompressibleNavierStokes.jl/dev/manual/ns#Kinetic-energy","107":"/IncompressibleNavierStokes.jl/dev/manual/ns#vorticity","108":"/IncompressibleNavierStokes.jl/dev/manual/ns#Stream-function","109":"/IncompressibleNavierStokes.jl/dev/manual/operators#operators","110":"/IncompressibleNavierStokes.jl/dev/manual/precision#Floating-point-precision","111":"/IncompressibleNavierStokes.jl/dev/manual/pressure#Pressure-solvers","112":"/IncompressibleNavierStokes.jl/dev/manual/sciml#Using-IncompressibleNavierStokes-in-SciML","113":"/IncompressibleNavierStokes.jl/dev/manual/sciml#api","114":"/IncompressibleNavierStokes.jl/dev/manual/setup#Problem-setup","115":"/IncompressibleNavierStokes.jl/dev/manual/setup#Boundary-conditions","116":"/IncompressibleNavierStokes.jl/dev/manual/setup#grid","117":"/IncompressibleNavierStokes.jl/dev/manual/setup#setup","118":"/IncompressibleNavierStokes.jl/dev/manual/setup#Field-initializers","119":"/IncompressibleNavierStokes.jl/dev/manual/solver#solvers","120":"/IncompressibleNavierStokes.jl/dev/manual/solver#Solvers-2","121":"/IncompressibleNavierStokes.jl/dev/manual/solver#processors","122":"/IncompressibleNavierStokes.jl/dev/manual/spatial#Spatial-discretization","123":"/IncompressibleNavierStokes.jl/dev/manual/spatial#Finite-volume-discretization-of-the-Navier-Stokes-equations","124":"/IncompressibleNavierStokes.jl/dev/manual/spatial#Boundary-conditions","125":"/IncompressibleNavierStokes.jl/dev/manual/spatial#Fourth-order-accurate-discretization","126":"/IncompressibleNavierStokes.jl/dev/manual/spatial#Matrix-representation","127":"/IncompressibleNavierStokes.jl/dev/manual/spatial#Discrete-pressure-Poisson-equation","128":"/IncompressibleNavierStokes.jl/dev/manual/spatial#Discrete-output-quantities","129":"/IncompressibleNavierStokes.jl/dev/manual/spatial#Kinetic-energy","130":"/IncompressibleNavierStokes.jl/dev/manual/spatial#vorticity","131":"/IncompressibleNavierStokes.jl/dev/manual/spatial#Stream-function","132":"/IncompressibleNavierStokes.jl/dev/manual/temperature#Temperature-equation","133":"/IncompressibleNavierStokes.jl/dev/manual/time#Time-discretization","134":"/IncompressibleNavierStokes.jl/dev/manual/time#Adams-Bashforth-Crank-Nicolson-method","135":"/IncompressibleNavierStokes.jl/dev/manual/time#One-leg-beta-method","136":"/IncompressibleNavierStokes.jl/dev/manual/time#Runge-Kutta-methods","137":"/IncompressibleNavierStokes.jl/dev/manual/time#Explicit-Methods","138":"/IncompressibleNavierStokes.jl/dev/manual/time#Implicit-Methods","139":"/IncompressibleNavierStokes.jl/dev/manual/time#Half-explicit-methods","140":"/IncompressibleNavierStokes.jl/dev/manual/time#Classical-Methods","141":"/IncompressibleNavierStokes.jl/dev/manual/time#Chebyshev-methods","142":"/IncompressibleNavierStokes.jl/dev/manual/time#Miscellaneous-Methods","143":"/IncompressibleNavierStokes.jl/dev/manual/time#DSRK-Methods","144":"/IncompressibleNavierStokes.jl/dev/manual/time#Non-SSP-Methods-of-Wong-and-Spiteri","145":"/IncompressibleNavierStokes.jl/dev/manual/utils#utils","146":"/IncompressibleNavierStokes.jl/dev/references#references","147":"/IncompressibleNavierStokes.jl/dev/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,937],"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":[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,77],"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,150],"63":[3,5,127],"64":[5,1,138],"65":[3,5,101],"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,56],"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,316],"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":[1,1,338],"110":[3,1,70],"111":[2,1,123],"112":[4,1,501],"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":[2,1,215],"134":[5,2,194],"135":[4,2,105],"136":[3,2,289],"137":[2,5,51],"138":[2,5,34],"139":[3,5,23],"140":[2,5,36],"141":[2,5,34],"142":[2,5,58],"143":[2,5,21],"144":[9,5,18],"145":[1,1,93],"146":[1,1,1],"147":[1,1,264]},"averageFieldLength":[2.6621621621621623,2.945945945945946,98.15540540540542],"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":"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":"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":"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":"Time discretization","titles":[]},"134":{"title":"Adams-Bashforth Crank-Nicolson method","titles":["Time discretization"]},"135":{"title":"One-leg beta method","titles":["Time discretization"]},"136":{"title":"Runge-Kutta methods","titles":["Time discretization"]},"137":{"title":"Explicit Methods","titles":["Time discretization","Runge-Kutta methods"]},"138":{"title":"Implicit Methods","titles":["Time discretization","Runge-Kutta methods"]},"139":{"title":"Half explicit methods","titles":["Time discretization","Runge-Kutta methods"]},"140":{"title":"Classical Methods","titles":["Time discretization","Runge-Kutta methods"]},"141":{"title":"Chebyshev methods","titles":["Time discretization","Runge-Kutta methods"]},"142":{"title":"Miscellaneous Methods","titles":["Time discretization","Runge-Kutta methods"]},"143":{"title":"DSRK Methods","titles":["Time discretization","Runge-Kutta methods"]},"144":{"title":""Non-SSP" Methods of Wong & Spiteri","titles":["Time discretization","Runge-Kutta methods"]},"145":{"title":"Utils","titles":[]},"146":{"title":"References","titles":[]},"147":{"title":"Bibliography","titles":[]}},"dirtCount":0,"index":[["μ±nσ",{"2":{"145":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,"145":2}}],["κ∈n",{"2":{"121":1}}],["β−12",{"2":{"135":1}}],["β=12",{"2":{"135":1}}],["β=1d",{"2":{"122":1}}],["β",{"2":{"115":2,"116":6,"123":1,"135":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":{"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,"109":4}}],["λ=",{"2":{"109":1}}],["λ",{"2":{"86":2,"109":2}}],["≈c",{"2":{"83":1}}],["θ=12",{"2":{"134":1}}],["θ∈",{"2":{"134":1}}],["θ",{"2":{"83":2,"86":12,"87":9,"109":5,"120":1,"133":2,"134":3}}],["−δt",{"2":{"135":1}}],["−12",{"2":{"134":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,"136":2}}],["−yg",{"2":{"112":1,"127":3,"134":2,"136":1}}],["−",{"2":{"123":1,"125":1,"126":1,"133":1,"134":2,"136":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":{"58":7,"102":3,"116":1}}],["α0",{"2":{"134":1}}],["α0c",{"2":{"134":2}}],["α₂",{"2":{"134":2}}],["α₁",{"2":{"134":2}}],["α−1",{"2":{"130":1,"134":1}}],["α−=mod3",{"2":{"130":1}}],["α+1",{"2":{"130":1}}],["α+=mod3",{"2":{"130":1}}],["α=β",{"2":{"122":1}}],["α∈",{"2":{"122":1}}],["α",{"2":{"69":1,"70":1,"109":4,"115":1,"116":22,"118":2,"122":1,"123":3,"124":1,"126":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}}],["|γ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":{"58":3,"59":3}}],["||",{"2":{"58":2,"59":2,"69":1,"70":1}}],["$filename",{"2":{"121":1}}],["$dir",{"2":{"121":1}}],["$s",{"2":{"121":1}}],["$t",{"2":{"121":1}}],["$n",{"2":{"60":1,"61":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,"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,"62":1,"63":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,"93":2}}],["⋮",{"2":{"15":6,"93":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,"120":2,"121":3,"133":1,"137":13,"138":6,"139":3,"140":11,"141":4,"142":10,"143":3,"144":4,"145":7}}],["≤",{"2":{"15":2,"18":2,"19":2,"21":2,"49":2,"51":2,"66":2,"68":2}}],["δp",{"2":{"134":1,"135":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":{"58":2,"59":2}}],["δy1",{"2":{"58":2,"59":2}}],["δu",{"2":{"52":1,"54":2,"58":9,"59":3,"93":1,"97":1,"98":1,"116":1}}],["δti",{"2":{"136":1}}],["δtinui=vi−δtigpi",{"2":{"136":1}}],["δtin=wmvi+ym",{"2":{"136":1}}],["δti=w",{"2":{"136":1}}],["δti=ciδt",{"2":{"136":1}}],["δts=δt",{"2":{"136":1}}],["δt−wm",{"2":{"134":1}}],["δtr+1",{"2":{"136":1}}],["δtr",{"2":{"133":1,"136":1}}],["δtn=tn+1−tn",{"2":{"133":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,"91":2,"120":8,"127":2,"133":2,"134":2,"135":1,"136":2}}],["δ",{"2":{"15":3,"17":5,"18":8,"19":3,"21":3,"49":10,"51":10,"58":12,"59":6,"93":1,"97":1,"98":1,"109":1,"116":1}}],["x2",{"2":{"124":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":{"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,"109":1,"115":4,"117":1,"120":1,"121":2,"134":1,"135":1,"136":4,"145":2}}],["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":{"58":6,"93":1,"97":1,"98":1,"116":1}}],["xlims",{"2":{"58":6,"93":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,"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,"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":6,"63":6,"64":8,"65":8,"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,"145":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":{"143":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,"93":2,"98":2,"99":1,"111":1,"115":4,"121":1,"126":1,"127":3,"133":1}}],["zpull",{"2":{"93":2}}],["z",{"2":{"19":8,"21":8,"25":5,"27":5,"43":1,"46":3,"48":3,"60":2,"61":2,"62":3,"63":3,"73":1,"76":1,"121":1,"145":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":{"134":1}}],["yg",{"2":{"126":1,"134":1}}],["yd",{"2":{"126":1,"134":1}}],["yields",{"2":{"103":1,"127":1,"131":2}}],["ym",{"2":{"98":3,"126":1,"127":1,"136":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,"145":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}}],["8519285538097519",{"2":{"112":3}}],["859552971776503",{"2":{"93":1}}],["856f044c",{"2":{"12":1}}],["856f2bd8",{"2":{"12":1}}],["88\\titertime",{"2":{"64":1}}],["88015f11",{"2":{"12":1}}],["89\\titertime",{"2":{"64":1}}],["89763e89",{"2":{"12":1}}],["809654104932039",{"2":{"93":1}}],["80",{"2":{"62":1,"63":1}}],["875",{"2":{"97":4,"98":4}}],["873193\\tδt",{"2":{"29":1}}],["872c559c",{"2":{"12":1}}],["8\\tδt",{"2":{"16":2,"64":1}}],["8e850ede",{"2":{"12":1}}],["8e850b90",{"2":{"12":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+2",{"2":{"12":1}}],["842170943040401e",{"2":{"98":1}}],["84375",{"2":{"97":4,"98":4}}],["84\\titertime",{"2":{"64":2}}],["84",{"2":{"12":1}}],["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,"62":1,"63":1,"66":1,"68":1,"69":2,"70":1,"109":1,"112":2,"121":1,"132":1,"147":1}}],["⌃",{"2":{"12":4}}],["9130080474847379",{"2":{"112":1}}],["915",{"2":{"93":4}}],["91d4177d",{"2":{"12":1}}],["9\\tδt",{"2":{"64":1}}],["9316537922498789",{"2":{"112":3}}],["9371708873148851",{"2":{"112":1}}],["9371663222572626",{"2":{"93":1}}],["9375",{"2":{"97":4,"98":4}}],["935",{"2":{"93":4}}],["935fb764",{"2":{"12":1}}],["93",{"2":{"93":4}}],["933f0",{"2":{"58":3}}],["952330459812817",{"2":{"112":3}}],["9523190847272895",{"2":{"112":3}}],["955",{"2":{"93":4}}],["955742",{"2":{"58":6}}],["95",{"2":{"93":4}}],["959353",{"2":{"58":6}}],["9587832",{"2":{"58":6}}],["973769704494905",{"2":{"112":3}}],["9730158",{"2":{"58":6}}],["9749461242781639",{"2":{"112":1}}],["974473",{"2":{"58":6}}],["975",{"2":{"93":4}}],["975736",{"2":{"58":6}}],["97",{"2":{"93":4}}],["9793203",{"2":{"58":6}}],["9783547",{"2":{"58":6}}],["97029555",{"2":{"58":6}}],["9769204",{"2":{"58":6}}],["9720256",{"2":{"58":6}}],["9718e550",{"2":{"12":1}}],["9621483766861515",{"2":{"112":1}}],["96875",{"2":{"97":4,"98":4}}],["965",{"2":{"93":4}}],["96",{"2":{"93":4}}],["9695302",{"2":{"58":6}}],["9645745014573777",{"2":{"93":1}}],["9644907",{"2":{"58":6}}],["96464634",{"2":{"58":6}}],["96747094",{"2":{"58":6}}],["9670348",{"2":{"58":6}}],["96171474",{"2":{"58":6}}],["9619466",{"2":{"58":6}}],["9e88b42a",{"2":{"12":1}}],["9fa8497b",{"2":{"12":1}}],["9879491389935008",{"2":{"112":1}}],["984229402628956",{"2":{"93":1}}],["9840734",{"2":{"58":6}}],["985",{"2":{"93":4}}],["98",{"2":{"93":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}}],["9024753354508308",{"2":{"112":3}}],["9021130325903073",{"2":{"93":1}}],["901224250082742",{"2":{"112":1}}],["90137ffa",{"2":{"12":1}}],["90625",{"2":{"97":4,"98":4}}],["90",{"2":{"87":1}}],["905a6f67",{"2":{"12":1}}],["90014a1f",{"2":{"12":1}}],["996053456856544",{"2":{"93":1}}],["9977826",{"2":{"58":6}}],["9977603",{"2":{"58":6}}],["9937508037134614",{"2":{"112":3}}],["9933032",{"2":{"58":6}}],["99319035",{"2":{"58":6}}],["9908601",{"2":{"58":6}}],["995",{"2":{"93":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,"93":4}}],["992d4aef",{"2":{"12":1}}],["9495567173255886",{"2":{"112":1}}],["94",{"2":{"93":4,"147":1}}],["94557386934597e",{"2":{"93":4}}],["9454449003225e",{"2":{"93":1}}],["9454449003201e",{"2":{"93":1}}],["9454449186859e",{"2":{"93":1}}],["94544491868354e",{"2":{"93":1}}],["9454449186883e",{"2":{"93":1}}],["94544491869066e",{"2":{"93":1}}],["9454449184535e",{"2":{"93":1}}],["94544489398975e",{"2":{"93":1}}],["9454448939107e",{"2":{"93":1}}],["9454448939123e",{"2":{"93":1}}],["94544489383323e",{"2":{"93":1}}],["945445343448e",{"2":{"93":1}}],["945",{"2":{"17":3,"93":4}}],["94ce4f54",{"2":{"12":1}}],["94e857df",{"2":{"12":1}}],["944b1d66",{"2":{"12":1}}],["9c8b4983",{"2":{"12":1}}],["9249889455158832",{"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,"25":1,"27":1,"82":1,"97":1,"109":2,"121":1}}],["⌅",{"2":{"12":14}}],["3rd",{"2":{"136":1,"137":1}}],["33445088457939787",{"2":{"112":3}}],["3339782227758397",{"2":{"112":1}}],["3370223269085002",{"2":{"112":3}}],["33bec58e",{"2":{"12":1}}],["3\\tδt",{"2":{"64":1}}],["3\\titertime",{"2":{"29":2}}],["3π",{"2":{"52":1,"54":1,"66":2,"68":2}}],["3213680514666326",{"2":{"112":3}}],["328244716289856",{"2":{"112":1}}],["324×648",{"2":{"97":1}}],["324",{"2":{"93":4}}],["32\\titertime",{"2":{"64":1}}],["32",{"2":{"43":1,"45":1,"52":2,"54":2,"69":1,"70":1,"73":1,"76":1,"134":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,"121":3,"122":1,"124":1,"130":1}}],["3da002f7",{"2":{"12":1}}],["3f19e933",{"2":{"12":1}}],["3fa0cd96",{"2":{"12":1}}],["3716771235605255",{"2":{"112":3}}],["375",{"2":{"97":4,"98":4}}],["3752",{"2":{"58":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}}],["3683796071986178",{"2":{"112":3}}],["3690211337021703",{"2":{"112":1}}],["365317344444688",{"2":{"112":1}}],["3663723301818125",{"2":{"112":1}}],["3603877858297053",{"2":{"112":1}}],["362910971332051",{"2":{"112":3}}],["36c8627f",{"2":{"12":1}}],["36",{"2":{"12":1}}],["3cdcf5f2",{"2":{"12":1}}],["3063",{"2":{"147":1}}],["3041",{"2":{"147":1}}],["3035223637128313",{"2":{"112":1}}],["30392449",{"2":{"12":1}}],["3053634757715198",{"2":{"112":3}}],["3013119147766734",{"2":{"112":1}}],["301",{"2":{"22":1,"24":1}}],["300",{"2":{"15":1,"16":1,"17":3,"18":5,"49":2,"50":3,"51":5,"58":1,"64":1,"65":1,"121":1}}],["30",{"2":{"12":1}}],["343",{"2":{"113":1,"147":1}}],["34375",{"2":{"97":4,"98":4}}],["3464251477003929",{"2":{"112":1}}],["34+0",{"2":{"12":1}}],["34",{"2":{"12":1}}],["34004b35",{"2":{"12":1}}],["34da2185",{"2":{"12":1}}],["3828341523658447",{"2":{"112":1}}],["3875380448857541",{"2":{"112":1}}],["385276367047268",{"2":{"112":1}}],["38540f10",{"2":{"12":1}}],["3817735608576356",{"2":{"112":1}}],["3819660112501049",{"2":{"93":1}}],["386514337448187",{"2":{"112":3}}],["3805743951790925",{"2":{"112":1}}],["38a345b3",{"2":{"12":1}}],["38",{"2":{"12":1}}],["3156703421666662",{"2":{"112":3}}],["3181719180513525",{"2":{"112":3}}],["318dbb63",{"2":{"12":1}}],["3125",{"2":{"97":4,"98":4}}],["3113441489959696",{"2":{"93":1}}],["3113441489959698",{"2":{"93":2}}],["311364\\tδt",{"2":{"29":1}}],["310im",{"2":{"93":2}}],["310",{"2":{"93":14}}],["3161d3a3",{"2":{"12":1}}],["31",{"2":{"12":2,"19":1,"21":1}}],["31c24e10",{"2":{"12":1}}],["3522441846097827",{"2":{"112":3}}],["3535592264250835",{"2":{"112":3}}],["35174924827336546",{"2":{"112":3}}],["3504876501454939",{"2":{"112":1}}],["350",{"2":{"58":2,"59":1}}],["35661453",{"2":{"12":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,"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,"93":10,"97":1,"100":1,"109":1,"112":1,"116":3,"121":2,"124":2,"136":1,"138":2,"141":1}}],["3991132007652158",{"2":{"112":1}}],["3997760803661724",{"2":{"112":3}}],["3926613103435367",{"2":{"112":3}}],["392277169520958",{"2":{"112":3}}],["3982457674622089",{"2":{"112":3}}],["398196176974059",{"2":{"112":3}}],["3959226077864737",{"2":{"112":1}}],["3955a311",{"2":{"12":1}}],["39172103069959563",{"2":{"112":3}}],["39de3d68",{"2":{"12":1}}],["39",{"2":{"12":2,"43":1,"92":2,"97":1,"136":1,"137":1,"143":3}}],["7427051143709156",{"2":{"112":3}}],["7595072686400752",{"2":{"112":3}}],["7563563398627091",{"2":{"112":3}}],["7530707144997295",{"2":{"112":3}}],["75",{"2":{"97":4,"98":4}}],["752613360087727",{"2":{"93":1}}],["75\\titertime",{"2":{"64":1}}],["7688174940989976",{"2":{"112":3}}],["7656684357322596",{"2":{"112":3}}],["7625884932762157",{"2":{"112":3}}],["7629660533384574",{"2":{"112":3}}],["76",{"2":{"93":1}}],["76f85450",{"2":{"12":1}}],["7\\tδt",{"2":{"64":1}}],["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":1}}],["7add5ba3",{"2":{"12":1}}],["7a1cc6ca",{"2":{"12":1}}],["7cc45869",{"2":{"12":1}}],["7097434315940944",{"2":{"112":3}}],["700de1a5",{"2":{"12":1}}],["7034ab61",{"2":{"12":1}}],["7867408714068179",{"2":{"112":3}}],["7869d1d1",{"2":{"12":1}}],["78125",{"2":{"97":4,"98":4}}],["781d530d",{"2":{"12":1}}],["78\\titertime",{"2":{"64":2}}],["78b55507",{"2":{"12":1}}],["734226\\tδt",{"2":{"29":1}}],["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}}],["79098fc4",{"2":{"12":1}}],["79e6a3ab",{"2":{"12":1}}],["7790232145791847",{"2":{"112":3}}],["7792a7ef",{"2":{"12":1}}],["7756002089136793",{"2":{"112":3}}],["77210571029155",{"2":{"112":3}}],["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}}],["7271704846904127",{"2":{"112":3}}],["720743997824583",{"2":{"112":3}}],["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,"109":1}}],["5259282049009588",{"2":{"112":3}}],["525527954532172",{"2":{"112":1}}],["521365358678493",{"2":{"112":3}}],["52e1d378",{"2":{"12":1}}],["5νϵ",{"2":{"109":1}}],["586",{"2":{"147":1}}],["5869964933941038",{"2":{"112":3}}],["5878474701844734",{"2":{"112":3}}],["5829655020559292",{"2":{"112":4}}],["58",{"2":{"86":1}}],["5\\tδt",{"2":{"64":1}}],["5\\titertime",{"2":{"29":2}}],["5508991383515363",{"2":{"112":1}}],["5540711551942565",{"2":{"112":3}}],["55",{"2":{"86":1,"147":1}}],["5570665390686788e",{"2":{"69":1}}],["55\\titertime",{"2":{"58":1}}],["559328eb",{"2":{"12":1}}],["5734647082450985",{"2":{"112":3}}],["570006347040808",{"2":{"112":1}}],["57",{"2":{"86":2}}],["579297\\tδt",{"2":{"29":1}}],["5789e2e9",{"2":{"12":1}}],["512459536652462",{"2":{"112":3}}],["5108383856845689",{"2":{"112":1}}],["5106962082836307",{"2":{"112":3}}],["510215fc",{"2":{"12":1}}],["5198755947284115",{"2":{"112":3}}],["51",{"2":{"22":1,"24":1}}],["5n",{"2":{"15":1,"18":1,"49":1,"51":1,"55":1,"57":1}}],["5973613484526877",{"2":{"112":3}}],["5989199688668567",{"2":{"112":3}}],["5969962068782388",{"2":{"112":3}}],["595010124997473",{"2":{"112":3}}],["592875884389524",{"2":{"112":3}}],["5905130283970155",{"2":{"112":3}}],["5937429121457573",{"2":{"112":3}}],["59375",{"2":{"97":4,"98":4}}],["59",{"2":{"12":1,"86":1}}],["59f7168a",{"2":{"12":1}}],["5630968696272343",{"2":{"112":1}}],["5625",{"2":{"97":4,"98":4}}],["56",{"2":{"86":1}}],["56ddb016",{"2":{"12":1}}],["56f22d72",{"2":{"12":1}}],["5467494943080825",{"2":{"112":3}}],["5408896224744166",{"2":{"112":3}}],["54",{"2":{"12":1}}],["5432bcbf",{"2":{"12":1}}],["5+0",{"2":{"12":2}}],["5+1",{"2":{"12":1}}],["5039442703140851",{"2":{"112":3}}],["5021723583509827",{"2":{"112":3}}],["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}}],["5094113",{"2":{"58":3}}],["5094086",{"2":{"58":3}}],["5092935",{"2":{"58":3}}],["50929356",{"2":{"58":3}}],["5091811",{"2":{"58":3}}],["509176",{"2":{"58":3}}],["5000000000000001",{"2":{"93":2}}],["5000000000000002",{"2":{"93":2}}],["5000000000000003",{"2":{"93":6}}],["5000000000000056",{"2":{"93":4}}],["500",{"2":{"22":1,"24":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,"58":2,"59":1,"64":2,"65":2}}],["5c2747f8",{"2":{"12":1}}],["5c1252a2",{"2":{"12":1}}],["5395856426560672",{"2":{"112":1}}],["53125",{"2":{"97":4,"98":4}}],["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":{"64":1,"65":1}}],["5eaf0fd0",{"2":{"12":1}}],["5e318141",{"2":{"12":1}}],["5e9a32e7af2",{"2":{"11":1}}],["5",{"2":{"12":34,"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":3,"63":3,"64":2,"65":2,"69":1,"93":130,"97":140,"98":132,"109":2,"121":1,"139":1}}],["63",{"2":{"147":1}}],["63c18a36",{"2":{"12":1}}],["6544973553185032",{"2":{"112":3}}],["65625",{"2":{"97":4,"98":4}}],["65257c39",{"2":{"12":1}}],["6\\titertime",{"2":{"29":1}}],["6\\tδt",{"2":{"16":3,"64":1}}],["6029384976802836",{"2":{"112":3}}],["6025523523428413",{"2":{"112":3}}],["608510095624186",{"2":{"112":3}}],["6068139332770977",{"2":{"112":3}}],["6043280594687412",{"2":{"112":3}}],["6033919710125044",{"2":{"112":3}}],["601725136184899",{"2":{"112":3}}],["605003300278285",{"2":{"112":3}}],["60544291809869",{"2":{"112":3}}],["6058662108882434e",{"2":{"69":1}}],["605ecd9f",{"2":{"12":1}}],["60",{"2":{"60":1,"61":1}}],["6008706855176826",{"2":{"112":3}}],["6008269440350635",{"2":{"112":3}}],["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+0",{"2":{"12":2}}],["6+1",{"2":{"12":3}}],["6e34b625",{"2":{"12":1}}],["6c6a2e73",{"2":{"12":1}}],["6703849125869374",{"2":{"112":3}}],["67071744709628",{"2":{"112":3}}],["6707555983699267",{"2":{"112":3}}],["670873685384534",{"2":{"112":3}}],["6774105000129884",{"2":{"112":3}}],["67",{"2":{"12":1}}],["67c07d97",{"2":{"12":1}}],["69",{"2":{"147":1}}],["6904669028807235",{"2":{"112":3}}],["69024149",{"2":{"12":1}}],["699a6c99",{"2":{"12":1}}],["69de0a69",{"2":{"12":1}}],["692b3bcd",{"2":{"12":1}}],["6fe1bfb0",{"2":{"12":1}}],["6875",{"2":{"97":4,"98":4}}],["68865585100403",{"2":{"93":1}}],["682c06a0",{"2":{"12":1}}],["68eda718",{"2":{"12":1}}],["610391429817098",{"2":{"112":3}}],["619435700313733",{"2":{"55":1,"57":1}}],["615f187c",{"2":{"12":1}}],["61eb1bfa",{"2":{"12":1}}],["669642952553338",{"2":{"112":3}}],["669603929032186",{"2":{"112":3}}],["6693620397707933",{"2":{"112":3}}],["6693650234422095",{"2":{"112":3}}],["6694280502383273",{"2":{"112":3}}],["6699787184933967",{"2":{"112":3}}],["66fc600b",{"2":{"12":1}}],["663a7486",{"2":{"12":1}}],["66dad0bd",{"2":{"12":1}}],["6b7a57c9",{"2":{"12":1}}],["6add18c4",{"2":{"12":1}}],["6226597041634463",{"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":24,"15":2,"18":2,"19":5,"21":5,"49":3,"51":3,"55":1,"57":1,"69":3,"93":17,"109":2,"121":3}}],["6467626475342549",{"2":{"112":3}}],["6462fe0b",{"2":{"12":1}}],["648",{"2":{"97":1}}],["648×648",{"2":{"97":2}}],["648×324",{"2":{"97":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,"93":1,"97":1,"98":1}}],["×",{"2":{"11":1}}],["4888266014764763",{"2":{"112":3}}],["48303489816549916",{"2":{"112":3}}],["48307344888160403",{"2":{"112":1}}],["4845376104979045",{"2":{"112":1}}],["48068540055078907",{"2":{"112":1}}],["48062228",{"2":{"12":1}}],["48034789830989794",{"2":{"112":1}}],["48945401328925586",{"2":{"112":1}}],["4818224716447106",{"2":{"112":3}}],["4th",{"2":{"112":1,"138":1,"139":1}}],["49289307311066627",{"2":{"112":1}}],["49375215219778495",{"2":{"112":1}}],["49976125856316267",{"2":{"112":1}}],["49999999999999445",{"2":{"93":4}}],["49999999999999967",{"2":{"93":6}}],["4999999999999999",{"2":{"93":2}}],["4999999999999998",{"2":{"93":2}}],["4944627425749468",{"2":{"112":1}}],["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\\titertime",{"2":{"29":1}}],["4\\tδt",{"2":{"16":2,"64":1}}],["4159338427947474",{"2":{"112":1}}],["4150660872718007",{"2":{"112":3}}],["41329173959034654",{"2":{"112":3}}],["4199001649488927",{"2":{"112":3}}],["417292500615618e",{"2":{"69":1}}],["41",{"2":{"19":2,"21":2}}],["411431e0",{"2":{"12":1}}],["4503361141495976",{"2":{"112":1}}],["4570355653834647",{"2":{"112":1}}],["4540567364223937",{"2":{"112":1}}],["4526439021987227",{"2":{"112":3}}],["4557841819910529",{"2":{"112":4}}],["4536629a",{"2":{"12":1}}],["45891337949608374",{"2":{"112":1}}],["4587472110645654",{"2":{"112":1}}],["458c3c95",{"2":{"12":1}}],["45858cf5",{"2":{"12":1}}],["44592067738554064",{"2":{"112":1}}],["44514969973593976",{"2":{"112":3}}],["44171996769365324",{"2":{"112":1}}],["4410136860931138",{"2":{"112":3}}],["4413378175847538",{"2":{"112":1}}],["44",{"2":{"86":1}}],["44cfe95a",{"2":{"12":1}}],["44+0",{"2":{"12":1}}],["4af54fe1",{"2":{"12":1}}],["4f6342f7",{"2":{"12":1}}],["4fba245c",{"2":{"12":1}}],["4359437228387498",{"2":{"112":1}}],["4315704938609758",{"2":{"112":1}}],["431183\\tδt",{"2":{"29":1}}],["4387165340878582",{"2":{"112":3}}],["43877942685883076",{"2":{"112":1}}],["43201651748195663",{"2":{"112":3}}],["43287f4e",{"2":{"12":1}}],["4339439282537916",{"2":{"112":1}}],["4375",{"2":{"97":4,"98":4}}],["43",{"2":{"12":1}}],["4046273175965032",{"2":{"112":1}}],["4042773366315602",{"2":{"112":1}}],["40684472968608854",{"2":{"112":1}}],["40625",{"2":{"97":4,"98":4}}],["4098001513934582",{"2":{"112":1}}],["400",{"2":{"62":3,"63":3,"64":1,"65":1}}],["4004b06d",{"2":{"12":1}}],["40",{"2":{"12":2,"15":1,"18":1,"62":1,"63":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":{"29":1,"31":1,"33":1,"36":1}}],["4ec0a83e",{"2":{"12":1}}],["4e9b3aee",{"2":{"12":1}}],["4e289a0a",{"2":{"12":1}}],["4c63d2b9",{"2":{"12":1}}],["463391491674076",{"2":{"112":3}}],["4633875966731134",{"2":{"112":3}}],["4632574290511748",{"2":{"112":1}}],["461953758496949",{"2":{"112":3}}],["46192b85",{"2":{"12":1}}],["46875",{"2":{"97":4,"98":4}}],["46792424402653476",{"2":{"112":1}}],["467",{"2":{"55":1,"57":1}}],["4607b0f0",{"2":{"12":1}}],["46d2c3a1",{"2":{"12":1}}],["4201590976985429",{"2":{"112":1}}],["4221548844285295",{"2":{"112":1}}],["42842794202681916",{"2":{"112":3}}],["4212503200258166",{"2":{"112":1}}],["42495415887972643",{"2":{"112":1}}],["4246354105995818",{"2":{"112":4}}],["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}}],["4746627267546408",{"2":{"112":1}}],["4708320861058763",{"2":{"112":1}}],["470507049199323",{"2":{"112":1}}],["4771639752382986",{"2":{"112":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,"58":2,"69":2,"70":1,"93":2,"94":1,"109":1,"120":1,"121":2,"145":1,"147":1}}],["0im",{"2":{"93":14}}],["08931652432247436",{"2":{"112":1}}],["0835433984703027",{"2":{"112":1}}],["0869729837454651",{"2":{"112":3}}],["08449421949182555",{"2":{"112":1}}],["08499999999999999",{"2":{"93":4}}],["08",{"2":{"93":4}}],["082ubar",{"2":{"52":1,"54":1}}],["082447d4",{"2":{"12":1}}],["07064790536525153",{"2":{"112":1}}],["07587720474553815",{"2":{"112":3}}],["07500000000000001",{"2":{"93":4}}],["075b6546",{"2":{"12":1}}],["07",{"2":{"93":4,"109":1}}],["04360335395341",{"2":{"112":3}}],["043240547",{"2":{"58":3}}],["04071943324047422",{"2":{"112":4}}],["04064697",{"2":{"58":6}}],["045",{"2":{"93":4}}],["04",{"2":{"93":4}}],["047299176",{"2":{"58":3}}],["04121679",{"2":{"58":6}}],["044257984",{"2":{"58":6}}],["044",{"2":{"16":1}}],["037287070103049",{"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":{"58":6}}],["03535363",{"2":{"58":6}}],["030469775",{"2":{"58":6}}],["038491252983957634",{"2":{"112":3}}],["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}}],["00836604328705504",{"2":{"112":1}}],["008958757",{"2":{"58":6}}],["007106129763889296",{"2":{"112":1}}],["0036642837413415376",{"2":{"112":1}}],["003946543143456883",{"2":{"93":1}}],["003946543143456876",{"2":{"93":2}}],["003967967340085e",{"2":{"69":1}}],["0034",{"2":{"64":1}}],["0033",{"2":{"64":8}}],["005918078594056992",{"2":{"112":1}}],["005972743",{"2":{"58":3}}],["005972773",{"2":{"58":3}}],["005",{"2":{"93":8}}],["005\\tumax",{"2":{"64":10}}],["0053389072",{"2":{"58":3}}],["0053388774",{"2":{"58":3}}],["0057561994",{"2":{"58":3}}],["0057561696",{"2":{"58":3}}],["0055448413",{"2":{"58":6}}],["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":{"93":6}}],["0050395727",{"2":{"58":3}}],["005039513",{"2":{"58":9}}],["00508821",{"2":{"58":6}}],["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}}],["004709119986944817",{"2":{"112":1}}],["0047063828",{"2":{"58":3}}],["004706502",{"2":{"58":3}}],["0047538877",{"2":{"58":3}}],["0047539026",{"2":{"58":3}}],["004753113",{"2":{"58":3}}],["0047531724",{"2":{"58":3}}],["004799843",{"2":{"58":6}}],["0044794083",{"2":{"58":6}}],["0044793785",{"2":{"58":12}}],["004434824",{"2":{"58":3}}],["0044347644",{"2":{"58":9}}],["0061945915",{"2":{"58":3}}],["006082356",{"2":{"58":3}}],["006082386",{"2":{"58":3}}],["0066967607",{"2":{"58":6}}],["006809652",{"2":{"58":6}}],["0016659277128752055",{"2":{"112":1}}],["001",{"2":{"55":1,"57":1}}],["0014\\tumax",{"2":{"29":2}}],["0017\\tumax",{"2":{"29":1}}],["0013\\tumax",{"2":{"29":1}}],["001\\tumax",{"2":{"29":1}}],["0012\\tumax",{"2":{"29":1}}],["0011\\tumax",{"2":{"29":1}}],["002432989100957199",{"2":{"112":1}}],["002265195818241",{"2":{"112":3}}],["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}}],["000",{"2":{"22":2,"24":2,"43":1,"45":1,"46":1,"48":1,"55":1,"57":1}}],["009999999999999981",{"2":{"93":2}}],["009999999999999995",{"2":{"93":8}}],["009999999999999998",{"2":{"93":4}}],["009999999999999898",{"2":{"93":6}}],["00964424423128464",{"2":{"112":1}}],["0096",{"2":{"16":1}}],["009139925",{"2":{"58":6}}],["0091",{"2":{"16":2}}],["0093",{"2":{"16":3}}],["0098",{"2":{"16":1}}],["009",{"2":{"16":1}}],["056633316058722",{"2":{"112":3}}],["050084445556004",{"2":{"112":3}}],["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,"109":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}}],["0678539731154677",{"2":{"112":3}}],["06998",{"2":{"147":2}}],["06988",{"2":{"147":1}}],["06965546592090349",{"2":{"112":3}}],["069b7b12",{"2":{"12":1}}],["06243496138227762",{"2":{"112":3}}],["0625",{"2":{"97":80,"98":66}}],["06283367774273789",{"2":{"93":1}}],["06283367774273778",{"2":{"93":2}}],["065",{"2":{"93":4}}],["0656b61e",{"2":{"12":1}}],["06",{"2":{"93":4}}],["09676710645672201",{"2":{"112":1}}],["09689754026634612",{"2":{"112":1}}],["09332391529212641",{"2":{"112":3}}],["09375",{"2":{"97":4,"98":4}}],["094947017729282e",{"2":{"97":1}}],["09788696740969302",{"2":{"93":1}}],["09788696740969285",{"2":{"93":2}}],["09",{"2":{"93":2}}],["0994394874030844",{"2":{"112":3}}],["0997245\\tδt",{"2":{"29":1}}],["099dac27",{"2":{"12":1}}],["09ab397b",{"2":{"12":1}}],["0bca4576",{"2":{"12":1}}],["0e",{"2":{"93":4}}],["0e3",{"2":{"69":1,"70":1}}],["0e77f7df",{"2":{"12":1}}],["0e44f5e4",{"2":{"12":1}}],["0",{"2":{"11":2,"12":121,"15":887,"16":24,"17":5,"18":18,"19":13,"21":13,"22":6,"24":6,"25":8,"27":8,"29":29,"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":9,"63":9,"64":34,"65":5,"66":4,"68":4,"69":10,"70":7,"73":1,"74":2,"76":3,"91":5,"93":1626,"97":368,"98":739,"109":3,"112":361,"121":11,"122":1,"133":2,"134":1,"136":1}}],["02742315032289014",{"2":{"112":3}}],["027974367",{"2":{"58":6}}],["025",{"2":{"93":4}}],["02552703",{"2":{"58":6}}],["020679772",{"2":{"58":6}}],["0269842",{"2":{"58":6}}],["021645322",{"2":{"58":6}}],["029704452",{"2":{"58":6}}],["024263948",{"2":{"58":6}}],["023079693",{"2":{"58":6}}],["0287556320125302",{"2":{"112":3}}],["028",{"2":{"29":1}}],["02c8fc9c",{"2":{"12":1}}],["02",{"2":{"11":1,"93":4}}],["0121162640308192",{"2":{"112":3}}],["012ubar",{"2":{"52":1,"54":1}}],["019902445757816967",{"2":{"112":3}}],["019026697",{"2":{"58":6}}],["014192943737148224",{"2":{"112":3}}],["010963315612198047",{"2":{"112":1}}],["010000000000000005",{"2":{"93":2}}],["010000000000000002",{"2":{"93":12}}],["010000000000000009",{"2":{"93":42}}],["015770597371044366",{"2":{"93":1}}],["01577059737104434",{"2":{"93":2}}],["015",{"2":{"93":4}}],["01563057410408e",{"2":{"69":1}}],["0159266",{"2":{"58":6}}],["01\\tumax",{"2":{"58":2}}],["011",{"2":{"64":1}}],["011266053",{"2":{"58":6}}],["011563554",{"2":{"58":6}}],["01827985",{"2":{"58":6}}],["013",{"2":{"58":1}}],["013987184",{"2":{"58":6}}],["0135733485",{"2":{"58":6}}],["013be700",{"2":{"12":1}}],["01650694",{"2":{"58":6}}],["016",{"2":{"29":6,"58":1}}],["01",{"2":{"11":1,"25":1,"27":1,"60":1,"61":1,"66":1,"68":1,"69":1,"70":1,"91":1,"93":12}}],["2βu0−",{"2":{"135":1}}],["2|",{"2":{"126":1}}],["2−12",{"2":{"122":1}}],["233",{"2":{"147":1}}],["2307",{"2":{"147":1}}],["23660175169771755",{"2":{"112":1}}],["23694196283383762",{"2":{"112":1}}],["2347131913588917",{"2":{"112":1}}],["231",{"2":{"112":2,"147":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":{"64":1}}],["2\\tδt",{"2":{"16":2,"64":1}}],["2y",{"2":{"52":1,"54":1,"73":2,"76":2}}],["2nd",{"2":{"137":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,"121":2,"122":1,"130":1,"131":1}}],["293",{"2":{"147":1}}],["29",{"2":{"147":1}}],["297699263119553",{"2":{"112":4}}],["298",{"2":{"58":1,"121":1}}],["29816b5a",{"2":{"12":1}}],["296",{"2":{"58":4,"121":2}}],["295",{"2":{"58":4,"121":2}}],["2913bbd2",{"2":{"12":1}}],["2f01184e",{"2":{"12":1}}],["2+",{"2":{"109":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}}],["2411303332989192",{"2":{"112":1}}],["2418115695622559",{"2":{"112":1}}],["2463409906236072",{"2":{"112":1}}],["24759663011960842",{"2":{"112":1}}],["24738663991227255",{"2":{"93":1}}],["24738663991227286",{"2":{"93":2}}],["24497890654035046",{"2":{"112":1}}],["2444333030428174",{"2":{"112":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}}],["2618841428071021",{"2":{"112":1}}],["2609742895493716",{"2":{"112":1}}],["26641087398409063",{"2":{"112":1}}],["26478892718363534",{"2":{"112":4}}],["26",{"2":{"12":2}}],["285",{"2":{"147":1}}],["2897012151421563",{"2":{"112":3}}],["2889311032174006",{"2":{"112":1}}],["2823513003411383",{"2":{"112":3}}],["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}}],["22−xi2−1",{"2":{"131":1}}],["22−xi1+1",{"2":{"131":1}}],["22−ψi+h1+h2−ψi+h1−h2xi2+1",{"2":{"131":1}}],["2270321872946439",{"2":{"112":1}}],["22736271126184718",{"2":{"112":1}}],["2291179186626557",{"2":{"112":3}}],["22988601908419418",{"2":{"112":1}}],["2265543344592271",{"2":{"112":3}}],["2202",{"2":{"147":1}}],["22058510657086466",{"2":{"112":3}}],["220446049250313e",{"2":{"98":6}}],["22cec73e",{"2":{"12":1}}],["22",{"2":{"12":2,"52":1,"54":1,"131":1,"142":2}}],["21−xi1−1",{"2":{"131":1}}],["21−xi1+1",{"2":{"131":1}}],["21−ψi+h1+h2−ψi−h1+h2xi1+1",{"2":{"131":1}}],["2136712153718837",{"2":{"112":1}}],["21062948058998315",{"2":{"112":1}}],["210591588403964",{"2":{"112":1}}],["21587331386783326",{"2":{"112":1}}],["2192143197882487",{"2":{"112":1}}],["2189",{"2":{"147":1}}],["2182",{"2":{"147":1}}],["2184662498967187",{"2":{"112":1}}],["21875",{"2":{"97":4,"98":4}}],["2165332725882426",{"2":{"112":1}}],["21216c6a",{"2":{"12":1}}],["21",{"2":{"12":7,"55":1,"57":1,"131":1}}],["2b5f629d",{"2":{"12":1}}],["2740884031555848",{"2":{"112":3}}],["27430324498284664",{"2":{"112":1}}],["2748500876654998",{"2":{"112":4}}],["2706473908453082",{"2":{"112":1}}],["2702e6a9",{"2":{"12":1}}],["2755375395367514",{"2":{"112":3}}],["27143384224791994",{"2":{"112":3}}],["27+1",{"2":{"12":1}}],["276daf66",{"2":{"12":1}}],["2792f1a3",{"2":{"12":1}}],["27",{"2":{"12":2}}],["27a7e980",{"2":{"12":1}}],["257",{"2":{"147":1}}],["2576249104056681",{"2":{"112":1}}],["259",{"2":{"147":1}}],["25942194008273045",{"2":{"112":1}}],["25384740679321116",{"2":{"112":1}}],["2539479438729073",{"2":{"112":1}}],["250",{"2":{"52":2,"54":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}}],["2039499251814571",{"2":{"112":1}}],["2013",{"2":{"147":1}}],["2014",{"2":{"147":1}}],["201489026168355",{"2":{"112":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}}],["20071552063741827",{"2":{"112":3}}],["20044870227871497",{"2":{"112":1}}],["2000",{"2":{"66":1,"68":1,"147":2}}],["200",{"2":{"58":9,"64":1,"65":1}}],["205518\\tδt",{"2":{"29":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":2,"63":2,"64":1,"65":1,"66":1,"68":1,"74":1,"76":1,"93":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,"91":5,"93":20,"97":8,"98":14,"100":1,"109":4,"112":54,"121":3,"122":3,"123":1,"124":2,"134":1,"138":1,"142":3}}],["kurz",{"2":{"147":1}}],["kutta",{"0":{"136":1},"1":{"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1},"2":{"43":1,"133":4,"136":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":{"136":1}}],["known",{"2":{"95":2,"127":1}}],["kronecker",{"2":{"122":1}}],["kp",{"2":{"118":2}}],["ki=f",{"2":{"136":1}}],["ki=14∑α",{"2":{"109":1}}],["ki=18∑α",{"2":{"109":1}}],["kinematic",{"2":{"100":1}}],["kinetic",{"0":{"91":1,"106":1,"129":1},"2":{"8":2,"106":1,"109":7,"129":1}}],["kind",{"2":{"9":1}}],["kdk",{"2":{"109":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,"109":4,"111":2,"115":6,"121":7,"132":2,"133":1,"137":11,"138":4,"139":3,"140":11,"141":4,"142":10,"143":3,"144":4,"145":1}}],["k^",{"2":{"55":2,"57":2}}],["ksub",{"2":{"55":5,"57":5}}],["k",{"2":{"37":1,"55":9,"57":9,"109":2,"121":1,"122":2,"124":1,"145":2}}],["ketcheson",{"2":{"136":1}}],["ke",{"2":{"109":1}}],["keyword",{"2":{"109":1,"117":1,"121":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,"94":1,"109":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":{"109":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,"109":7,"122":1}}],["q=",{"2":{"135":1}}],["q=−12∑α",{"2":{"109":1}}],["q",{"2":{"109":3,"147":1}}],["quadrature",{"2":{"123":2,"131":1,"141":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,"22":1,"25":1,"43":1,"52":1,"55":1,"66":1}}],["quot",{"0":{"144":2},"2":{"0":2,"5":2,"9":4,"43":2,"72":4,"115":2,"121":10,"135":2}}],["qoi",{"2":{"12":1}}],["qfield",{"2":{"8":1,"109":2}}],["u−1+δtf",{"2":{"135":1}}],["u−1",{"2":{"134":2,"135":1}}],["u−1=u",{"2":{"134":1}}],["uα",{"2":{"123":1}}],["uαuβ",{"2":{"103":1,"123":2,"125":1}}],["ufunc",{"2":{"118":3}}],["u0−",{"2":{"134":1}}],["u0=u",{"2":{"133":1,"134":1,"136":2}}],["u0",{"2":{"112":4,"134":2,"135":1,"136":1}}],["uh=",{"2":{"124":1}}],["uh",{"2":{"112":2,"126":2,"127":3}}],["ui+2hβα",{"2":{"123":1}}],["ui+hαα",{"2":{"109":1}}],["ui+hαα+ui−hαα",{"2":{"109":1}}],["ui−1",{"2":{"136":1}}],["ui−2hβα",{"2":{"123":1}}],["ui−hαα",{"2":{"109":1}}],["uiα",{"2":{"123":2}}],["uijk",{"2":{"122":1}}],["uij",{"2":{"122":1}}],["ui",{"2":{"122":1,"136":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":{"135":1}}],["u=v−δt",{"2":{"134":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":{"145":1}}],["utils",{"0":{"145":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,"121":2,"127":1,"136":1}}],["upper",{"2":{"58":1,"59":1,"145":1}}],["updated",{"2":{"86":3,"121":1}}],["update",{"2":{"58":1,"59":1,"86":2,"121":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":{"133":1,"136":1}}],["un",{"2":{"133":1}}],["un≈u",{"2":{"133":1}}],["unless",{"2":{"127":1}}],["unknowns",{"2":{"123":1}}],["unknown",{"2":{"123":1,"127":2}}],["unnecessary",{"2":{"110":1}}],["underlying",{"2":{"96":1}}],["understand",{"2":{"90":1}}],["unresolved",{"2":{"95":2}}],["unsafeatomicsllvm",{"2":{"12":1}}],["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,"120":3,"121":1,"127":2,"133":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":{"58":4,"87":1,"111":2,"133":1,"137":13,"138":6,"139":3,"140":11,"141":4,"142":10,"143":3,"144":4}}],["units",{"2":{"126":1}}],["unit",{"2":{"100":1,"109":3,"122":1}}],["unitrange",{"2":{"58":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,"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,"62":2,"63":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,"109":39,"111":5,"112":6,"113":3,"115":13,"116":3,"118":2,"120":5,"122":3,"124":3,"133":5,"134":3,"136":2}}],["us=u",{"2":{"136":1}}],["usually",{"2":{"89":1,"112":1,"115":1}}],["us",{"2":{"69":1,"136":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":2,"63":3,"64":1,"65":2,"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,"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,"91":1,"93":1,"94":2,"109":2,"110":2,"111":1,"112":2,"116":1,"120":2,"121":1,"123":3,"127":2,"134":1,"136":1}}],["user",{"2":{"92":1,"110":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,"134":1,"136":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,"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":{"109":1,"147":1}}],["html",{"2":{"109":1}}],["https",{"2":{"11":1,"83":1,"109":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":{"58":1,"64":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,"120":1}}],["however",{"2":{"86":1,"89":1,"90":1,"92":1,"96":1,"127":1,"129":1,"133":1,"134":1}}],["how",{"2":{"43":2,"109":1,"112":2,"121":1,"123":2}}],["holders",{"2":{"9":1}}],["hist",{"2":{"60":1,"61":1,"62":1,"63":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,"121":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,"62":2,"66":3,"73":2,"74":1}}],["highest",{"2":{"112":1}}],["highly",{"2":{"92":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":{"142":1}}],["heun33",{"2":{"136":1,"142":2}}],["hem5",{"2":{"136":1,"139":1}}],["hem3bs",{"2":{"136":1,"139":2}}],["hem3",{"2":{"136":1,"139":1}}],["heated",{"2":{"147":1}}],["heatmap",{"2":{"42":1,"121":1}}],["heavier",{"2":{"72":1}}],["header",{"2":{"7":1}}],["here",{"2":{"22":1,"43":1,"46":1,"77":1,"83":1,"112":2,"134":1,"135":1}}],["hereby",{"2":{"9":1}}],["hairer",{"2":{"139":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":{"139":1},"2":{"22":1,"25":1,"43":1,"110":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,"109":2,"111":1,"112":3,"113":11,"134":2}}],["has",{"2":{"7":1,"69":1,"86":1,"87":1,"89":1,"91":1,"93":1,"94":3,"112":1,"115":2,"134":1}}],["+θyd",{"2":{"134":1}}],["+θf",{"2":{"134":2}}],["+θ",{"2":{"134":1}}],["+α−1c",{"2":{"134":2}}],["+o",{"2":{"133":1,"136":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,"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":4,"63":4,"64":1,"65":1,"66":3,"68":3,"69":1,"70":1,"73":1,"76":1,"91":1,"93":17,"98":1,"116":3,"121":1,"134":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":{"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,"93":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":49,"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":49,"63":49,"64":71,"65":31,"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,"109":5,"112":17,"115":2,"116":2,"120":1,"121":6,"132":2,"133":2,"134":2}}],["n∈",{"2":{"136":1}}],["nicholson",{"2":{"142":1}}],["nicolson",{"0":{"134":1},"2":{"133":1,"134":3}}],["niter",{"2":{"86":3}}],["n−1",{"2":{"133":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,"133":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":{"136":1,"144":2}}],["nssp33",{"2":{"136":1,"144":2}}],["nssp32",{"2":{"136":1,"144":2}}],["nssp21",{"2":{"136":1,"144":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":{"58":2,"69":1,"70":1,"120":1}}],["n^",{"2":{"69":2,"70":2}}],["npoint",{"2":{"121":1,"145":2}}],["np",{"2":{"58":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,"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":2,"63":3,"64":1,"65":2,"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,"136":2,"145":3,"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,"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,"120":2,"122":1,"132":3,"136":1,"145":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,"93":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":3,"63":3,"64":2,"65":2,"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,"136":1}}],["nonuniform",{"2":{"116":3,"145":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":{"144":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,"133":3}}],["noninfringement",{"2":{"9":1}}],["nodejs",{"2":{"12":1}}],["no",{"2":{"9":1,"95":1,"103":1,"111":1,"115":1,"136":2}}],["notation",{"2":{"103":1,"122":3,"126":1}}],["noting",{"2":{"130":1}}],["notify",{"2":{"58":1,"59":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,"109":1,"115":1,"116":2,"120":1,"122":1,"123":2,"134":1,"136":2,"141":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,"62":2,"66":3,"73":2,"74":1,"87":1,"91":1,"92":1,"93":8,"97":3,"98":7,"109":2,"112":1,"113":1,"115":1,"120":1,"121":2,"133":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,"92":1,"93":1,"94":2,"95":1,"97":1,"99":2,"116":1,"124":1,"127":1,"129":1,"133":2,"141":1,"142":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,"133":1,"147":3}}],["names",{"2":{"120":1}}],["namedtuple",{"2":{"58":15,"88":1,"109":1,"111":1,"120":1,"121":3,"145":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,"134":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":10,"85":7,"86":16,"87":9,"88":3}}],["near",{"2":{"22":1,"43":1,"46":1}}],["newton",{"2":{"133":1,"136":3}}],["new",{"2":{"12":1,"22":1,"25":1,"86":2,"87":1,"95":1,"145":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,"95":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":{"127":1}}],["dymdt",{"2":{"127":1,"133":1,"136":2}}],["dsso2",{"2":{"136":1,"143":1}}],["dsrkso2",{"2":{"143":1}}],["dsrk",{"0":{"143":1}}],["dsrk3",{"2":{"136":1,"143":2}}],["dsrk2",{"2":{"136":1,"143":2}}],["dv+yd",{"2":{"134":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":{"134":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,"133":1}}],["duplicated",{"2":{"92":1,"93":3}}],["du¯dt=f",{"2":{"83":1}}],["due",{"2":{"28":1,"32":1,"136":1}}],["dns",{"2":{"83":2,"85":6,"86":2,"88":4,"95":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,"122":3,"123":1,"126":1,"134":1,"147":2}}],["d6f4376e",{"2":{"12":1}}],["dftw",{"2":{"93":1}}],["dft",{"2":{"93":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":{"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}}],["d80eeb9a",{"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":{"136":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":{"136":1}}],["dormand",{"2":{"137":1}}],["dopri6",{"2":{"136":1,"137":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":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,"122":2,"133":1}}],["do",{"2":{"9":1,"43":1,"49":2,"51":2,"55":3,"57":3,"58":2,"59":2,"92":1,"121":1}}],["docopy",{"2":{"120":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,"64":1,"69":1}}],["døving",{"2":{"9":1}}],["diagonally",{"2":{"138":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":{"133":1}}],["divided",{"2":{"43":1,"101":1,"126":1,"136":1}}],["dividing",{"2":{"123":1}}],["divoftensor",{"2":{"109":1}}],["div",{"2":{"98":7,"109":1}}],["divergence",{"2":{"8":2,"90":2,"97":3,"98":4,"99":2,"100":1,"103":2,"109":5,"111":3,"118":1,"123":1,"126":2,"127":4,"133":2,"134":2,"135":1,"136":2}}],["digits",{"2":{"43":1}}],["dimensionless",{"2":{"117":1,"132":1}}],["dimensions",{"2":{"109":1,"122":1}}],["dimension",{"2":{"58":12,"87":8,"93":2,"97":3,"98":2,"100":1,"109":3,"115":1,"116":4,"122":2,"125":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,"123":1}}],["diffusion",{"2":{"8":3,"97":6,"99":2,"109":8,"120":1,"126":2,"134":2}}],["differences",{"2":{"131":1}}],["difference",{"2":{"123":1,"134":1}}],["differentiability",{"2":{"112":1}}],["differentiable",{"2":{"89":1,"90":4,"91":2,"109":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":{"133":1}}],["differentiate",{"2":{"86":1,"91":1,"93":2}}],["differentially",{"2":{"147":1}}],["differentialequations",{"2":{"112":1,"133":1}}],["differential",{"2":{"43":1,"112":1,"133":1}}],["different",{"2":{"43":5,"62":1,"64":1,"69":1,"98":1,"110":2,"129":1}}],["diffeqbase",{"2":{"12":1}}],["diffrules",{"2":{"12":1}}],["diffresults",{"2":{"12":1}}],["discussed",{"2":{"112":1}}],["discretize",{"2":{"133":1}}],["discretized",{"2":{"87":1,"133":2}}],["discretizing",{"2":{"127":1}}],["discretization",{"0":{"122":1,"123":1,"125":1,"133":1},"1":{"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1},"2":{"101":1,"122":2,"125":4,"135":1,"136":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,"109":1,"111":1,"112":1,"122":2,"123":4,"126":3,"127":8,"131":1,"133":3,"136":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":{"62":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":{"29":2,"31":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":{"138":2,"141":1}}],["dirichlet",{"2":{"43":1,"98":1,"102":1,"115":1,"127":2,"133":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":6,"63":6,"64":4,"65":4,"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":2,"63":2,"64":1,"65":1,"66":2,"68":2,"69":1,"70":1,"74":1,"76":1,"121":1}}],["directly",{"2":{"112":1,"127":1,"133":1}}],["direction",{"2":{"109":1,"116":6,"117":1,"132":1}}],["directbuf",{"2":{"93":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,"62":1,"63":1,"93":7,"94":2,"95":1,"110":1,"111":3,"147":2}}],["deep",{"2":{"147":1}}],["details",{"2":{"135":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,"110":1}}],["degrees",{"2":{"87":1,"99":2,"123":1}}],["decomposition",{"2":{"111":1,"134":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":{"134":1}}],["definition",{"2":{"133":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,"133":1,"134":1}}],["define",{"2":{"39":1,"58":2,"93":1,"122":1,"123":1,"130":1,"133":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":{"145":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":{"58":1,"98":1}}],["dependent",{"2":{"147":1}}],["dependencies",{"2":{"5":1,"82":1}}],["depended",{"2":{"7":1}}],["depends",{"2":{"5":1}}],["mte22",{"2":{"136":1,"142":1}}],["mvi+ym",{"2":{"136":1}}],["mv~+ym",{"2":{"135":1}}],["mv¯=0",{"2":{"83":1}}],["m",{"2":{"83":3,"84":1,"98":2,"109":2,"126":1,"127":1,"134":1,"135":1,"147":5}}],["mp4",{"2":{"60":1,"61":1,"62":1,"63":1,"121":1}}],["mu0+ym",{"2":{"136":1}}],["mu+ym=0",{"2":{"133":1}}],["muh+ym=0",{"2":{"126":1}}],["mutation",{"2":{"90":1,"92":1}}],["mutating",{"2":{"90":2,"91":1,"92":2,"93":4,"133":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,"109":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,"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,"121":1}}],["mkl",{"2":{"12":1}}],["m`",{"2":{"12":1}}],["mbedtls",{"2":{"12":1}}],["mmap",{"2":{"12":1}}],["miscellaneous",{"0":{"142":1}}],["missings",{"2":{"12":1}}],["midpoint",{"2":{"142":1}}],["mid22",{"2":{"136":1,"142":1}}],["mid",{"2":{"123":2,"131":1}}],["minimal",{"2":{"142":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,"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}}],["metal",{"2":{"94":1}}],["methods",{"0":{"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1},"1":{"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1},"2":{"133":2,"134":2,"136":2,"147":4}}],["method",{"0":{"134":1,"135":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,"91":3,"93":1,"120":2,"133":14,"134":2,"135":2,"136":6,"142":2}}],["meet",{"2":{"92":1}}],["meaning",{"2":{"92":1}}],["means",{"2":{"89":1,"123":1}}],["mean",{"2":{"55":1,"57":1,"86":1,"145":1}}],["meanplot",{"2":{"55":2,"57":2}}],["memory",{"2":{"43":1,"90":1,"109":1,"116":2,"136":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,"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,"58":6,"83":3,"84":2,"86":3,"87":3,"93":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,"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":{"145":1}}],["mass",{"2":{"100":1,"123":1,"125":1,"126":2,"133":5}}],["margin",{"2":{"145":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,"134":1}}],["maxiter",{"2":{"111":1,"133":1,"136":1}}],["maximum",{"2":{"97":1,"98":1,"120":1}}],["max",{"2":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"116":1}}],["maps",{"2":{"122":1}}],["map",{"2":{"49":1,"51":1}}],["mappedarrays",{"2":{"12":1}}],["main",{"2":{"15":2,"58":4,"69":1}}],["make",{"2":{"66":1,"90":1,"91":1,"93":2,"94":1}}],["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,"121":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,"95":2,"110":1,"120":1,"133":2,"136":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,"136":1}}],["matrices",{"0":{"96":1,"98":1},"1":{"97":1,"98":1,"99":1},"2":{"94":1,"96":1,"97":5,"98":1,"109":1}}],["matrix",{"0":{"126":1},"2":{"8":1,"60":1,"62":1,"93":2,"96":3,"97":5,"98":5,"99":13,"110":1,"111":3,"126":4,"127":2,"134":3,"136":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":{"95":2}}],["small",{"2":{"43":1}}],["s^2",{"2":{"137":1}}],["sdirk34",{"2":{"136":1,"138":1}}],["ssp43",{"2":{"136":1,"137":2}}],["ssp42",{"2":{"136":1,"137":2}}],["ssp33",{"2":{"136":1,"137":2}}],["ssp22",{"2":{"136":1,"137":2}}],["ssp104",{"2":{"136":1,"137":2}}],["ssp",{"0":{"144":1},"2":{"136":1,"137":2,"138":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":{"109":2}}],["s",{"2":{"92":2,"97":1,"109":1,"116":4,"121":6,"136":4,"137":4,"138":2,"143":3,"147":2}}],["squares",{"2":{"129":1}}],["squared",{"2":{"86":1,"109":1}}],["sqrt",{"2":{"55":1,"57":1,"69":2,"70":2}}],["suitable",{"2":{"134":1}}],["suitesparse",{"2":{"12":2}}],["success",{"2":{"112":1}}],["such",{"2":{"43":1,"94":1,"98":1,"103":1,"108":2,"110":2,"116":1,"120":1,"123":1,"133":1,"136":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":{"110":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,"58":6,"59":6,"69":2,"70":2,"91":2,"109":1,"111":1,"121":4}}],["subgrid",{"2":{"147":1}}],["substep",{"2":{"136":1}}],["substantial",{"2":{"9":1}}],["subtract",{"2":{"109":2}}],["subtypes",{"2":{"85":1}}],["sub",{"2":{"95":4,"133":2,"136":2,"147":1}}],["subject",{"2":{"9":1,"133":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,"58":1,"85":1,"109":3,"110":1,"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":{"142":5}}],["satisfied",{"2":{"141":1}}],["say",{"2":{"133":1}}],["san",{"2":{"121":1,"147":1}}],["sanderse",{"2":{"9":1,"136":3,"147":4}}],["samples",{"2":{"86":1,"87":1}}],["same",{"2":{"43":1,"46":1,"87":1,"91":1,"97":1,"109":1,"111":1,"115":1,"120":1,"122":1,"126":2,"129":1,"134":1,"136":1}}],["saving",{"2":{"43":2,"46":1,"58":1,"64":1}}],["saved",{"2":{"121":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,"121":2}}],["systems",{"2":{"112":1}}],["system",{"2":{"111":1,"133":2,"136":1}}],["syver",{"2":{"9":1}}],["symmetric",{"2":{"115":1,"127":1}}],["symmetricbc",{"2":{"8":1,"58":16,"59":2,"60":2,"61":2,"62":6,"63":6,"64":4,"65":4,"115":2}}],["symmetry",{"2":{"86":5,"109":2,"123":1,"135":1,"147":1}}],["symbol",{"2":{"58":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":{"138":2}}],["scheme",{"2":{"122":1,"133":1,"136":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,"109":6,"118":1,"121":1,"122":2,"130":1,"136":1}}],["scalarfield",{"2":{"8":2,"99":3,"118":1}}],["scales",{"2":{"95":2}}],["scaled",{"2":{"43":1}}],["scalewithvolume",{"2":{"8":1,"109":2}}],["scale",{"2":{"8":1,"83":2,"95":1,"109":9,"147":2}}],["screen",{"2":{"59":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":{"109":2}}],["singly",{"2":{"138":1}}],["single",{"2":{"43":4,"110":5}}],["since",{"2":{"40":1,"93":1,"122":1,"123":1,"127":1,"134":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":2,"63":2,"64":1,"65":1,"73":4,"76":4}}],["sixel",{"2":{"12":1}}],["signeddistancefields",{"2":{"12":1}}],["simplicity",{"2":{"123":1}}],["simply",{"2":{"99":1,"136":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,"133":1,"147":2}}],["simulations",{"2":{"5":1,"44":1,"77":1,"82":1,"147":2}}],["similarly",{"2":{"123":1}}],["similar",{"2":{"28":1,"32":1,"93":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,"126":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,"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,"25":1,"93":9,"109":2,"111":1,"112":3,"113":11,"115":2,"134":2}}],["stuff",{"2":{"145":2}}],["study",{"0":{"69":1},"1":{"70":1}}],["stubs",{"2":{"12":1}}],["stimulate",{"2":{"55":1}}],["storage",{"2":{"124":1,"137":2}}],["storing",{"2":{"109":1}}],["store",{"2":{"93":2,"113":1}}],["stores",{"2":{"92":1,"121":1}}],["stored",{"2":{"40":1,"90":1,"93":1,"97":4,"109":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,"133":1,"147":3}}],["steady",{"2":{"22":4,"24":1,"25":4,"27":1,"39":1,"40":1,"43":3,"46":3}}],["stepping",{"2":{"91":1,"121":2,"134":2}}],["steppers",{"2":{"133":2}}],["stepper",{"2":{"8":1,"91":5,"120":2,"121":1,"133":6}}],["steps",{"2":{"43":1,"121":4,"134":1,"136":2}}],["step",{"0":{"22":1,"25":1},"1":{"23":1,"24":1,"26":1,"27":1},"2":{"22":1,"25":1,"43":2,"120":4,"121":5,"133":5,"134":3,"135":1,"136":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,"109":2}}],["stresses",{"2":{"95":5}}],["structures",{"2":{"62":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":{"141":1}}],["stablerngs",{"2":{"12":1}}],["stage",{"2":{"137":2,"138":1,"139":1}}],["stages",{"2":{"136":1}}],["staggered",{"2":{"87":1,"122":1,"129":1,"147":1}}],["staples",{"2":{"121":1,"147":1}}],["stays",{"2":{"103":1,"133":1}}],["stamp",{"2":{"44":1}}],["standard",{"2":{"43":1,"145":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,"62":3,"63":4,"65":1,"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,"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":{"94":1}}],["starting",{"2":{"72":1,"101":1,"133":1,"134":1,"136":1}}],["start",{"2":{"6":1,"19":1,"22":1,"25":1,"43":1,"52":1,"55":1,"62":1,"64":1,"66":1,"94":1,"120":1,"121":1,"135":1}}],["startup",{"2":{"4":2,"134":1,"135":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,"133":1,"135":1}}],["sol",{"2":{"112":2}}],["solving",{"2":{"43":1,"46":1,"86":2,"108":2,"111":1,"112":2,"127":1,"134":1,"135":1}}],["solved",{"2":{"95":1,"121":1,"136":1}}],["solver",{"2":{"69":1,"84":1,"94":2,"110":1,"111":5,"112":1,"113":3,"122":1,"134":1}}],["solvers",{"0":{"111":1,"119":1,"120":1},"1":{"120":1,"121":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,"120":2,"121":1,"133":2,"134":2,"135":1,"136":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,"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":6,"85":5,"86":11,"87":9,"88":3,"99":10,"109":52,"111":11,"113":2,"115":14,"116":6,"117":3,"118":5,"120":3,"121":13,"132":1,"133":6,"134":1,"135":1,"136":5,"137":11,"138":4,"139":3,"140":11,"141":4,"142":10,"143":3,"144":4,"145":7}}],["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":{"133":1}}],["sections",{"2":{"5":1}}],["second",{"2":{"109":2,"125":2,"126":1,"134":2,"135":1,"142":2}}],["seaborn",{"2":{"58":2,"59":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,"136":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":13,"63":12,"64":7,"65":6,"66":8,"67":4,"68":12,"69":7,"70":7,"73":4,"74":6,"76":10,"84":2,"85":6,"86":4,"87":3,"88":1,"91":6,"93":6,"94":3,"97":12,"98":9,"99":7,"109":49,"111":11,"112":6,"113":6,"115":6,"117":3,"118":8,"120":2,"121":7,"132":3,"133":2,"145":2}}],["sell",{"2":{"9":1}}],["selected",{"2":{"6":1,"77":1}}],["seen",{"2":{"127":1}}],["seems",{"2":{"121":1}}],["seeds",{"2":{"145":1}}],["seed",{"2":{"93":1,"145":2}}],["see",{"2":{"0":1,"12":1,"85":1,"87":1,"96":1,"99":1,"109":2,"116":1,"121":2,"133":2,"135":1,"136":2}}],["springer",{"2":{"147":1}}],["spiteri",{"0":{"144":1}}],["span",{"2":{"112":1}}],["space",{"2":{"111":2,"116":1,"127":1,"136":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,"110":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":{"133":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,"109":1,"118":1}}],["specification",{"2":{"95":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,"145":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,"121":4,"145":4}}],["split",{"2":{"145":1}}],["splittablesbase",{"2":{"12":1}}],["splitseed",{"2":{"8":1,"145":1}}],["w",{"2":{"126":1,"147":2}}],["wu",{"2":{"126":1}}],["wray",{"2":{"136":1,"137":1}}],["wray3",{"2":{"136":1,"137":1}}],["wrapper",{"2":{"92":1}}],["wrapped",{"2":{"92":1}}],["wrappedclosure",{"2":{"84":1}}],["wrap",{"2":{"84":1,"92":1}}],["writing",{"2":{"109":1}}],["written",{"2":{"100":1}}],["writes",{"2":{"121":1}}],["write",{"2":{"109":1,"112":1,"122":1,"126":1,"127":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,"62":1,"63":1,"66":1,"68":1,"74":1,"76":1,"121":2}}],["wong",{"0":{"144":1}}],["would",{"2":{"127":2}}],["woodburymatrices",{"2":{"12":1}}],["worrying",{"2":{"95":1}}],["works",{"2":{"110":1}}],["workgroupsize",{"2":{"58":6,"93":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,"64":1,"66":1,"69":1,"92":1,"97":2}}],["word",{"2":{"11":1}}],["well",{"2":{"136":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":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,"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,"133":6,"134":6,"135":2,"136":5}}],["were",{"2":{"11":1,"12":1}}],["wang",{"2":{"147":1}}],["want",{"2":{"1":1,"95":1}}],["waterlily",{"2":{"109":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,"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":{"124":1}}],["whom",{"2":{"9":1}}],["while",{"2":{"97":2,"103":1,"109":1,"112":1,"117":1,"125":1,"132":1,"135":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,"133":1,"134":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,"95":1,"110":1,"115":1,"116":1,"121":1}}],["whether",{"2":{"9":1,"133":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,"120":1,"121":1,"122":4,"123":1,"125":1,"126":2,"127":1,"132":1,"134":1,"136":2}}],["widths",{"2":{"116":1}}],["widely",{"2":{"89":1}}],["windows",{"2":{"121":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,"62":1,"82":1,"92":2,"94":1,"124":1,"126":1,"127":3,"129":1,"133":2,"136":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":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,"90":2,"91":2,"92":3,"93":3,"94":3,"97":5,"99":3,"101":1,"109":6,"111":2,"115":1,"116":3,"118":2,"120":3,"121":1,"123":6,"125":2,"127":2,"131":3,"133":3,"136":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":{"136":3}}],["j",{"2":{"122":3,"124":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":{"140":1}}],["julialiiia2",{"2":{"140":1}}],["julialastdimcontract",{"2":{"109":1}}],["julialaplacian",{"2":{"99":1,"109":2}}],["julialang",{"2":{"11":1}}],["juliaheun33",{"2":{"142":1}}],["juliahem5",{"2":{"139":1}}],["juliahem3bs",{"2":{"139":1}}],["juliahem3",{"2":{"139":1}}],["juliaheatmap",{"2":{"40":1}}],["juliaissps3",{"2":{"138":1}}],["juliaisspm2",{"2":{"138":1}}],["juliainterpolate",{"2":{"109":4}}],["juliainflow",{"2":{"15":1}}],["juliawray3",{"2":{"137":1}}],["juliawrappedclosure",{"2":{"84":1}}],["julia>",{"2":{"116":1}}],["juliajulia>",{"2":{"116":1}}],["juliaode",{"2":{"133":1}}],["juliaobservespectrum",{"2":{"121":1}}],["juliaobservefield",{"2":{"121":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":{"142":1}}],["juliamid22",{"2":{"142":1}}],["juliamax",{"2":{"116":1}}],["juliamaximum",{"2":{"98":1}}],["juliamomentum",{"2":{"109":2}}],["juliakinetic",{"2":{"109":2}}],["juliagl3",{"2":{"140":1}}],["juliagl2",{"2":{"140":1}}],["juliagl1",{"2":{"140":1}}],["juliagrid",{"2":{"116":1}}],["juliagravity",{"2":{"109":2}}],["juliagetval",{"2":{"145":1}}],["juliagetoffset",{"2":{"145":1}}],["juliaget",{"2":{"109":1,"120":2,"145":2}}],["juliagcnn",{"2":{"87":1}}],["juliaeig2field",{"2":{"109":2}}],["juliaenzyme",{"2":{"93":1}}],["juliaavg",{"2":{"109":1}}],["juliaapply",{"2":{"115":6}}],["juliaapplypressure",{"2":{"109":2}}],["juliaapplybodyforce",{"2":{"109":2}}],["juliaabstract",{"2":{"85":1,"115":1,"133":1,"136":1}}],["juliaqfield",{"2":{"109":2}}],["juliaplotgrid",{"2":{"145":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,"58":1}}],["juliaproject",{"2":{"111":2}}],["juliapressure",{"2":{"111":2}}],["juliapressuregradient",{"2":{"97":1,"99":1,"109":2}}],["juliavtk",{"2":{"121":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":{"142":1}}],["juliark44c23",{"2":{"142":1}}],["juliark44c2",{"2":{"142":1}}],["juliark44",{"2":{"142":1}}],["juliark33p2",{"2":{"142":1}}],["juliark33c2",{"2":{"142":1}}],["juliark56",{"2":{"137":1}}],["juliariia3",{"2":{"140":1}}],["juliariia2",{"2":{"140":1}}],["juliariia1",{"2":{"140":1}}],["juliaria3",{"2":{"140":1}}],["juliaria2",{"2":{"140":1}}],["juliaria1",{"2":{"140":1}}],["juliaright",{"2":{"113":1}}],["juliarssps3",{"2":{"137":1}}],["juliarssps2",{"2":{"137":1}}],["juliarunge",{"2":{"133":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":{"143":1}}],["juliadsrk2",{"2":{"143":1}}],["juliadsso2",{"2":{"143":1}}],["juliadopri6",{"2":{"137":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":{"93":1}}],["juliad",{"2":{"66":1}}],["juliafe11",{"2":{"137":1}}],["juliaf",{"2":{"93":1,"112":1}}],["juliafno",{"2":{"87":1}}],["juliafunction",{"2":{"55":1,"58":2,"121":1}}],["juliafiltersaver",{"2":{"88":1}}],["juliafieldsaver",{"2":{"121":1}}],["juliafield",{"2":{"62":1}}],["juliafieldplot",{"2":{"23":3,"26":3,"30":1,"44":3,"56":4,"62":1,"67":3}}],["juliafig",{"2":{"17":3,"50":3,"69":1}}],["juliaδu",{"2":{"52":1}}],["juliacn22",{"2":{"142":1}}],["juliacnn",{"2":{"87":1}}],["juliachc5",{"2":{"141":1}}],["juliachc3",{"2":{"141":1}}],["juliachcons3",{"2":{"141":1}}],["juliachdirk3",{"2":{"141":1}}],["juliacosine",{"2":{"116":1}}],["juliaconvectiondiffusion",{"2":{"109":1}}],["juliaconvection",{"2":{"109":4}}],["juliacollocate",{"2":{"84":1}}],["juliacreate",{"2":{"49":1,"84":2,"86":9,"88":2,"113":1,"133":1}}],["juliacx",{"2":{"19":1}}],["juliax",{"2":{"19":1,"22":1,"25":1,"46":1}}],["juliaxc",{"2":{"15":1}}],["juliabe11",{"2":{"138":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":{"133":2}}],["juliatimelogger",{"2":{"121":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}}],["juliasplitseed",{"2":{"145":1}}],["juliaspectral",{"2":{"145":1}}],["juliasdirk34",{"2":{"138":1}}],["juliassp104",{"2":{"137":1}}],["juliassp43",{"2":{"137":1}}],["juliassp42",{"2":{"137":1}}],["juliassp33",{"2":{"137":1}}],["juliassp22",{"2":{"137":1}}],["juliasnapshotsaver",{"2":{"121":1}}],["juliasolve",{"2":{"120":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,"134":1,"135":1,"136":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,"121":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":{"144":1}}],["julianssp33",{"2":{"144":1}}],["julianssp32",{"2":{"144":1}}],["julianssp21",{"2":{"144":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,"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,"22":1,"25":1,"35":2,"43":1,"44":1,"46":1,"55":1,"60":1,"62":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,"136":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,"63":1,"64":2,"65":1,"68":1,"69":2,"70":1,"76":1,"77":1,"83":1,"89":2,"90":1,"92":1,"94":6,"109":2,"111":1,"112":1,"132":1,"133":1}}],["1δti−θd",{"2":{"134":2}}],["1δti−",{"2":{"134":1}}],["1−θ",{"2":{"134":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":{"64":1}}],["1\\titertime",{"2":{"16":10,"29":1,"64":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,"62":1,"63":1,"74":1,"76":1,"112":2,"145":1}}],["1e83bf80",{"2":{"12":1}}],["1a1011a3",{"2":{"12":1}}],["1a297f60",{"2":{"12":1}}],["1+β",{"2":{"135":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}}],["1472",{"2":{"147":1}}],["1474290970797436",{"2":{"112":1}}],["14912668082348163",{"2":{"112":1}}],["14940934717906382",{"2":{"112":3}}],["14455026801749912",{"2":{"112":1}}],["143",{"2":{"147":1}}],["14396194354418868",{"2":{"112":1}}],["14330182663680066",{"2":{"112":1}}],["1426348881246589",{"2":{"112":3}}],["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,"135":1}}],["1804995812640409",{"2":{"112":1}}],["1835916359291985",{"2":{"112":3}}],["188",{"2":{"109":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,"136":1}}],["1965",{"2":{"147":1}}],["1910",{"2":{"147":2}}],["1910924097524803",{"2":{"112":1}}],["19115740144457755",{"2":{"112":1}}],["1914dd2f",{"2":{"12":1}}],["197063579431731",{"2":{"112":1}}],["1941482529440282",{"2":{"112":3}}],["19399664043280868",{"2":{"112":3}}],["1902480109949739",{"2":{"112":1}}],["19034589506796068",{"2":{"93":1}}],["19034589506796099",{"2":{"93":2}}],["1920929f",{"2":{"58":18}}],["1997",{"2":{"147":1}}],["1995",{"2":{"147":1}}],["199",{"2":{"58":3}}],["1982588113475794",{"2":{"112":3}}],["1986cc42",{"2":{"12":1}}],["198e06fe",{"2":{"12":1}}],["19eb6ba3",{"2":{"12":1}}],["19",{"2":{"12":2}}],["1063",{"2":{"147":1}}],["10675480619510444",{"2":{"112":1}}],["10874v1",{"2":{"147":1}}],["1082639a",{"2":{"12":1}}],["10398180790626674",{"2":{"112":1}}],["10432541979422275",{"2":{"112":1}}],["10720478554028837",{"2":{"112":1}}],["10745b16",{"2":{"12":1}}],["1052396934185267",{"2":{"112":1}}],["105",{"2":{"111":1,"147":1}}],["10989002204298659",{"2":{"112":3}}],["109",{"2":{"111":1}}],["10\\tδt",{"2":{"64":1}}],["101",{"2":{"58":6,"91":1,"93":9,"111":2,"112":1}}],["10270212910901891",{"2":{"112":1}}],["1024",{"2":{"97":2}}],["102×102×2",{"2":{"93":1}}],["102",{"2":{"58":3,"91":2,"93":2}}],["10^4",{"2":{"55":1,"57":1}}],["10^",{"2":{"55":1,"57":1}}],["100×100",{"2":{"93":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,"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,"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":4,"63":4,"64":1,"65":1,"66":2,"68":2,"74":3,"76":3,"93":7,"98":2,"116":1,"147":1}}],["159",{"2":{"147":1}}],["15947240646934602",{"2":{"112":1}}],["159f3aea",{"2":{"12":1}}],["15555064935246116",{"2":{"112":1}}],["15889167346612212",{"2":{"112":1}}],["15141245391774916",{"2":{"112":1}}],["15114605561573108",{"2":{"112":3}}],["15625",{"2":{"97":4,"98":4}}],["1505",{"2":{"147":1}}],["15023250924374582",{"2":{"112":1}}],["150464010485413",{"2":{"112":1}}],["150443012586993",{"2":{"112":1}}],["15003064641999547",{"2":{"112":3}}],["150",{"2":{"22":2,"23":3,"24":5}}],["15+1",{"2":{"12":1}}],["15",{"2":{"12":6,"66":1,"68":1,"98":1,"121":1,"125":1}}],["1520ce14",{"2":{"12":1}}],["131",{"2":{"147":1}}],["1317d2d5",{"2":{"12":1}}],["1366855419132724",{"2":{"112":1}}],["13686518330313233",{"2":{"112":1}}],["13322622135795462",{"2":{"112":1}}],["13888179342208257",{"2":{"112":1}}],["1326468336290909",{"2":{"112":1}}],["1346989359254884",{"2":{"112":1}}],["135492610467593",{"2":{"112":3}}],["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}}],["17091984605417793",{"2":{"112":1}}],["17035942282706104",{"2":{"112":3}}],["173097581384703",{"2":{"112":1}}],["171d559e",{"2":{"12":1}}],["17",{"2":{"12":10,"25":1,"27":1,"97":7,"98":5,"136":1}}],["1655961649508638",{"2":{"112":1}}],["16873461937080209",{"2":{"112":1}}],["168+0",{"2":{"12":1}}],["16744408786115583",{"2":{"112":3}}],["16765558072050224",{"2":{"112":4}}],["163ba53b",{"2":{"12":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,"135":1}}],["12330344096559884",{"2":{"112":1}}],["12069919884062454",{"2":{"112":1}}],["127",{"2":{"147":1}}],["1274457448656976",{"2":{"112":1}}],["1270edf5",{"2":{"12":1}}],["12596507497113008",{"2":{"112":1}}],["12573523533040898",{"2":{"112":1}}],["1256376837392505",{"2":{"112":1}}],["125",{"2":{"97":4,"98":4}}],["124",{"2":{"93":1,"111":2}}],["12863269582615977",{"2":{"112":1}}],["128",{"2":{"33":1,"36":1,"55":1,"57":1,"66":1,"68":1,"69":1,"70":1,"93":3}}],["128add7d",{"2":{"12":1}}],["12906953547026517",{"2":{"112":1}}],["129",{"2":{"25":1,"27":1}}],["12\\tδt",{"2":{"16":1}}],["12",{"2":{"11":1,"12":12,"16":2,"18":1,"49":1,"51":1,"58":3,"121":1,"122":1}}],["1",{"2":{"3":2,"11":3,"12":121,"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":13,"63":13,"64":8,"65":7,"66":6,"68":5,"69":10,"70":7,"73":3,"74":2,"76":5,"82":1,"84":1,"87":1,"91":4,"93":32,"97":23,"98":26,"103":1,"109":10,"112":223,"115":1,"116":5,"121":5,"122":3,"123":1,"124":8,"134":2,"136":1,"147":1}}],["11734810375345404",{"2":{"112":1}}],["11789472462168231",{"2":{"112":3}}],["1108737142172876",{"2":{"112":1}}],["118",{"2":{"147":1}}],["11894958866689538",{"2":{"112":1}}],["1183f4f0",{"2":{"12":1}}],["11653309235413584",{"2":{"112":1}}],["11956158434217912",{"2":{"112":3}}],["11170467403179123",{"2":{"112":1}}],["11187293004895257",{"2":{"112":1}}],["111",{"2":{"111":1}}],["11+1",{"2":{"12":1}}],["11+0",{"2":{"12":2}}],["113",{"2":{"12":1}}],["11",{"2":{"3":3,"5":1,"11":1,"12":43,"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":{"135":1}}],["v~",{"2":{"135":1}}],["v=",{"2":{"134":1,"135":1}}],["v−u0δt=−",{"2":{"134":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,"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,"62":2,"63":2,"66":2,"67":2,"68":3,"74":2,"76":2,"121":5}}],["val",{"2":{"145":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,"134":1,"145":1}}],["values",{"2":{"43":1,"93":1,"127":1,"135":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":{"58":8,"84":1,"86":5,"93":1,"109":1,"111":7,"113":1,"121":3}}],["vanishing",{"2":{"43":1}}],["v",{"2":{"20":1,"55":10,"57":10,"85":5,"87":1,"109":4,"134":3,"135":1}}],["vi",{"2":{"136":1}}],["vi=u0+δt∑j=1iaijkjlpi=wm1ci∑j=1iaijkj+wym",{"2":{"136":1}}],["via",{"2":{"37":1,"97":1}}],["viscosity",{"2":{"52":1,"95":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":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":{"135":1}}],["v0",{"2":{"12":166}}],["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,"109":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":{"62":1,"69":2,"71":1,"147":2}}],["vorticity",{"0":{"107":1,"130":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,"121":1,"130":3,"131":3}}],["veldman",{"2":{"135":1,"147":2}}],["velocities",{"2":{"127":1,"136":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,"62":1,"63":1,"67":1,"83":1,"84":1,"85":5,"87":1,"90":1,"93":1,"95":1,"99":1,"100":2,"103":2,"109":6,"111":6,"113":1,"115":9,"116":3,"118":1,"121":2,"123":4,"126":3,"127":2,"129":2,"133":4,"134":6,"135":3,"136":2,"145":1}}],["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":{"135":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,"109":45,"111":6,"115":6,"133":2}}],["very",{"2":{"109":1,"127":1}}],["verify",{"2":{"97":1}}],["vertical",{"2":{"97":1}}],["vecrot2",{"2":{"87":1}}],["vec",{"2":{"60":1,"61":1,"62":1,"63":1}}],["vectorized",{"2":{"90":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,"124":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,"92":1,"93":1,"97":2,"98":1,"99":1,"102":1,"107":1,"108":1,"109":1,"112":2,"116":1,"118":1,"120":1,"121":1,"122":1,"130":1,"136":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":{"135":1}}],["lδp=wmv+ym",{"2":{"134":1}}],["lhs",{"2":{"134":1}}],["lu",{"2":{"134":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":{"109":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,"109":2,"127":1,"147":1}}],["learned",{"2":{"147":1}}],["learning",{"2":{"147":2}}],["leg",{"0":{"135":1},"2":{"133":1,"135":1}}],["level",{"2":{"121":1}}],["levels",{"2":{"35":1,"36":1,"60":4,"61":4,"62":5,"63":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,"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,"95":1,"116":1,"134":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":{"109":1}}],["lapack",{"2":{"92":1}}],["laplace",{"2":{"60":1,"62":1,"111":1,"127":1}}],["laplacian",{"2":{"8":2,"99":2,"109":4}}],["largest",{"2":{"116":1}}],["large",{"0":{"95":1},"2":{"83":3,"95":4,"109":2,"112":2,"147":2}}],["larger",{"2":{"28":1,"32":1,"87":1,"125":1}}],["layers",{"2":{"84":3}}],["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":{"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,"136":2}}],["li",{"2":{"147":1}}],["liiia3",{"2":{"136":1,"140":2}}],["liiia2",{"2":{"136":1,"140":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,"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":{"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,"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":{"94":1,"96":1,"97":1,"123":1,"134":1,"136":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,"62":7,"63":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,"145":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,"145":3}}],["license",{"0":{"9":1},"2":{"9":2}}],["lobatto",{"2":{"141":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":{"109":1}}],["loop",{"2":{"91":1}}],["low",{"2":{"89":1,"136":1,"137":2}}],["lower",{"2":{"58":1,"59":1,"145":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,"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":2,"63":2,"64":1,"65":1,"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":{"136":1}}],["aiming",{"2":{"127":1}}],["aα",{"2":{"122":2}}],["amp",{"0":{"144":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,"133":1}}],["approximating",{"2":{"123":2}}],["approximated",{"2":{"123":2}}],["approximate",{"2":{"83":1,"136":1,"145":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,"109":2}}],["applybodyforce",{"2":{"8":1,"109":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,"134":1,"136":2}}],["agnostic",{"2":{"94":1,"109":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,"58":2,"59":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":{"58":5,"59":2}}],["average",{"2":{"55":1,"58":3,"59":1,"85":2,"109":1,"123":2}}],["avg",{"2":{"58":3,"59":2,"109":1}}],["avoid",{"2":{"43":2,"122":1,"134":1}}],["available",{"2":{"12":1,"77":1,"85":2,"94":1,"112":1,"121":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,"121":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,"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":{"134":1}}],["accuracy",{"2":{"134":1,"136":3,"147":1}}],["accurate",{"0":{"125":1},"2":{"125":3,"126":1,"133":1,"134":2,"135":1}}],["accounted",{"2":{"98":1}}],["account",{"2":{"86":1}}],["actually",{"2":{"133":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":{"134":1}}],["ability",{"2":{"92":1}}],["abstol",{"2":{"111":1,"112":1,"133":1,"136":1}}],["abstractarray",{"2":{"145":1}}],["abstractrungekuttamethod",{"2":{"136":5}}],["abstract",{"2":{"133":1,"136":1}}],["abstractodemethod",{"2":{"133":2,"134":1,"135":1,"136":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,"136":1}}],["array",{"2":{"15":1,"58":2,"59":2,"60":1,"61":1,"62":1,"63":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,"109":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,"109":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,"134":1,"136":2}}],["aspect",{"2":{"147":1}}],["assuming",{"2":{"134":1}}],["assumption",{"2":{"123":1}}],["assume",{"2":{"100":1}}],["assumed",{"2":{"83":1}}],["assignment",{"2":{"117":1}}],["assembling",{"2":{"109":1,"127":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":{"93":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,"90":1,"94":1,"95":2,"96":1,"97":1,"98":1,"100":1,"101":1,"107":1,"109":5,"110":2,"111":1,"112":1,"116":1,"118":1,"121":3,"122":2,"123":1,"126":2,"127":2,"130":2,"132":1,"133":1,"134":1,"135":1,"136":4}}],["adjoint",{"2":{"92":1,"93":1}}],["ad",{"2":{"89":2,"90":1,"92":2}}],["ade2ca70",{"2":{"12":1}}],["adams",{"0":{"134":1},"2":{"133":1,"134":3}}],["adamsbashforthcranknicolsonmethod",{"2":{"8":1,"134":2}}],["adafc99b",{"2":{"12":1}}],["adapted",{"2":{"83":1,"133":1}}],["adaptive",{"2":{"43":1,"120":1}}],["adaptivepredicates",{"2":{"12":1}}],["adapt",{"2":{"12":1,"120":2}}],["adtypes",{"2":{"12":1}}],["added",{"2":{"133":1}}],["adding",{"2":{"98":1,"132":1}}],["addition",{"2":{"44":1,"133":1}}],["additional",{"2":{"1":1,"121":2,"134":1,"136":1}}],["add",{"2":{"3":1,"4":2,"5":1,"7":1,"43":1,"66":1,"72":1,"95":1,"109":7,"133":2,"134":1,"135":1,"136":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,"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,"109":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":7,"135":2,"136":5,"145":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,"62":1,"63":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,"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,"62":1,"63":1,"66":1,"68":1,"74":1,"76":1,"121":1}}],["ansicoloredprinters",{"2":{"12":1}}],["any",{"2":{"9":3,"44":1,"58":2,"84":2,"85":2,"87":4,"93":2,"99":3,"109":56,"111":2,"115":7,"116":6,"118":8,"120":2,"121":3,"145":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,"95":1,"98":1,"100":1,"101":1,"110":1,"111":1,"112":1,"115":1,"116":1,"120":1,"121":1,"123":1,"127":3,"133":3,"134":2,"136":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":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":15,"110":1,"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":4,"134":6,"135":5,"136":4,"139":2,"141":1,"142":1,"145":2,"147":16}}],["alieva",{"2":{"147":1}}],["aliastables",{"2":{"12":1}}],["algebraically",{"2":{"141":1}}],["algebraic",{"2":{"133":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,"109":1,"112":1,"115":1,"116":2,"121":1,"122":1,"127":1,"133":2}}],["allocating",{"2":{"90":2,"92":1,"133":2}}],["allows",{"2":{"3":1,"43":2,"69":1,"92":1,"109":1}}],["all",{"2":{"9":1,"82":1,"94":1,"95":1,"96":1,"109":3,"110":1,"112":2,"115":1,"116":2,"122":1,"123":1,"126":2,"133":1,"136":1}}],["already",{"2":{"4":1}}],["atomic",{"2":{"95":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,"90":1,"111":1,"115":4,"118":2,"121":7,"123":3,"127":1,"129":1,"131":2,"133":1,"134":3,"135":2,"136":4,"147":1}}],["pdf",{"2":{"147":1}}],["pdmats",{"2":{"12":1}}],["pérez",{"2":{"147":1}}],["ps",{"2":{"136":1}}],["psolve",{"2":{"93":1,"111":6}}],["psolver",{"2":{"8":5,"33":3,"34":1,"36":4,"52":4,"53":1,"54":5,"60":4,"61":4,"62":5,"63":5,"69":5,"70":5,"73":3,"74":1,"76":4,"86":3,"88":3,"91":3,"93":4,"94":2,"110":2,"111":12,"112":4,"113":3,"118":2,"120":1,"121":2,"133":1}}],["p=2p0−p−1+43δp",{"2":{"135":1}}],["p=p0+δp",{"2":{"134":1}}],["p−1",{"2":{"135":1}}],["p0−βp−1",{"2":{"135":1}}],["p0",{"2":{"135":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,"136":1}}],["pixman",{"2":{"12":1}}],["pvd",{"2":{"121":1}}],["peak",{"2":{"118":1}}],["perfectly",{"2":{"136":1}}],["performs",{"2":{"136":1}}],["performance",{"2":{"92":1,"112":1}}],["perform",{"2":{"92":1,"109":1,"127":1,"133":2,"134":1,"136":2}}],["performed",{"2":{"43":1}}],["percentage",{"2":{"121":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,"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":{"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,"92":1,"93":2,"109":24,"111":3,"112":2,"113":1,"115":3,"133":2}}],["plates",{"2":{"58":1}}],["plate",{"2":{"58":3,"59":2,"60":1}}],["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,"22":3,"25":3,"29":1,"38":1,"43":4,"52":3,"55":3,"66":3,"121":1,"145":1}}],["plots",{"2":{"14":1,"19":1,"22":1,"25":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,"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,"64":1,"65":1,"66":1,"68":1,"145":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,"62":2,"66":5,"67":3,"68":5,"69":1,"74":5,"76":5,"86":2,"121":15,"145":1}}],["pope",{"2":{"147":1}}],["positive",{"2":{"127":1,"134":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,"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,"121":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,"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,"133":1,"135":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":{"93":1}}],["pullbacks",{"2":{"92":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,"121":1,"123":1,"133":1,"134":2,"135":1,"136":3,"147":4}}],["prandtl",{"2":{"117":1,"132":1}}],["price",{"2":{"137":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":{"134":1}}],["predict",{"2":{"95":2}}],["predicts",{"2":{"87":3}}],["predictor",{"2":{"86":1}}],["prediction",{"2":{"86":1,"134":1}}],["previously",{"2":{"109":1}}],["previous",{"2":{"86":1,"133":1,"134":3,"135":1}}],["preserving",{"2":{"135":1,"147":1}}],["preservation",{"2":{"133":1}}],["preserved",{"2":{"136":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,"109":2}}],["pressure",{"0":{"103":1,"111":1,"127":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,"62":1,"63":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,"121":3,"123":3,"126":5,"127":9,"129":1,"133":3,"134":6,"135":3,"136":3,"142":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,"121":1}}],["preferences",{"2":{"12":1}}],["preconditioner",{"2":{"111":1}}],["precomputed",{"2":{"109":1}}],["precompute",{"2":{"96":1,"134":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":{"121":2}}],["processors",{"0":{"121":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,"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,"22":1,"25":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":{"109":1,"116":1,"120":1,"122":1}}],["propose",{"2":{"1":1}}],["provides",{"2":{"84":1,"133":1}}],["provide",{"2":{"43":2,"87":1,"92":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,"95":2,"112":2,"117":1,"120":1}}],["profile",{"2":{"13":1,"19":1,"49":1,"116":1}}],["protocols",{"2":{"12":1}}],["projecting",{"2":{"136":1}}],["projection",{"2":{"127":2,"136":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":{"137":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,"62":1,"63":1,"66":1,"68":1,"74":1,"76":1,"121":1}}],["past",{"2":{"127":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,"92":1,"93":2,"94":1,"111":1,"120":1,"121":6}}],["passes",{"2":{"22":1,"25":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,"134":1}}],["parameterized",{"2":{"83":1,"117":1,"132":1}}],["parameters",{"2":{"12":1,"84":1,"86":6,"87":3,"93":1,"113":1,"134":1}}],["paraview",{"2":{"44":1,"121":2}}],["parabolic",{"2":{"22":1,"25":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,"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":{"137":1,"138":1,"140":1}}],["edge",{"2":{"122":1}}],["eddy",{"0":{"95":1},"2":{"83":1,"95":2,"109":1,"118":1,"147":2}}],["eddies",{"2":{"28":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":{"109":2,"127":1}}],["eig2field",{"2":{"8":1,"60":4,"61":4,"62":3,"63":3,"109":2}}],["estimate",{"2":{"95":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}}],["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,"142":1}}],["errors",{"2":{"1":1,"86":1,"95":1,"134":1,"136":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,"136":1}}],["eventually",{"2":{"28":1,"32":1}}],["event",{"2":{"9":1}}],["every",{"2":{"43":1,"91":1,"120":2,"121":8,"134":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":{"141":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":3,"63":1,"64":2,"65":1,"83":1,"86":1,"99":1,"100":1,"103":2,"109":4,"111":3,"112":2,"117":4,"123":2,"125":2,"126":1,"127":3,"131":2,"132":9,"133":4,"135":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,"109":3,"112":5,"113":3,"122":1,"123":2,"125":1,"126":2,"127":5,"133":1,"147":3}}],["equivalent",{"2":{"122":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,"90":1}}],["each",{"2":{"77":1,"86":2,"87":2,"115":2,"122":1,"123":1,"125":1,"133":2,"136":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":{"60":1,"61":1,"62":1,"63":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":{"109":2}}],["exclamation",{"2":{"90":1}}],["extracted",{"2":{"83":1}}],["extrema",{"2":{"69":1,"70":1}}],["extensions",{"2":{"121":1}}],["extension",{"2":{"22":1,"25":1,"97":1}}],["extended",{"2":{"122":1,"136":1}}],["extend",{"2":{"15":1,"19":1,"22":1,"25":1,"49":1,"52":1}}],["extents",{"2":{"12":1}}],["exactly",{"2":{"95":1,"115":1,"127":1}}],["exact",{"2":{"86":2,"133":2,"136":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,"64":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":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,"93":1,"95":1,"96":1,"97":1,"109":1,"112":1,"121":1,"127":3}}],["expensive",{"2":{"109":1}}],["experimental",{"2":{"83":1}}],["explicitrungekuttamethod",{"2":{"133":1,"136":2,"137":13,"138":6,"139":3,"140":11,"141":4,"142":10,"143":3,"144":4}}],["explicit",{"0":{"137":1,"139":1},"2":{"112":1,"133":2,"134":2,"135":1,"136":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,"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,"136":1}}],["engineering",{"2":{"147":1}}],["england",{"2":{"147":1}}],["ensured",{"2":{"136":1}}],["ensures",{"2":{"133":1}}],["enable",{"2":{"132":1}}],["enforcing",{"2":{"127":1}}],["enforces",{"2":{"111":1}}],["enforced",{"2":{"43":1,"134":1,"145":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,"91":2,"115":1,"120":1,"121":2,"133":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":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,"91":4,"95":2,"106":1,"109":9,"118":1,"121":7,"123":1,"129":1,"145":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":{"141":1}}],["ij",{"2":{"136":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":{"142":3}}],["i=1",{"2":{"136":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":{"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,"121":1,"122":5,"123":3,"124":1,"136":1,"145":2}}],["ix",{"2":{"58":4,"59":4}}],["ip",{"2":{"55":1,"57":1,"58":8,"59":2,"60":1,"61":1,"62":1,"63":1,"69":4,"70":4,"93":1,"97":1,"98":1,"115":1,"116":1}}],["iu",{"2":{"55":2,"57":2,"58":6,"91":3,"93":1,"97":1,"98":1,"115":1,"116":1}}],["irrationalconstants",{"2":{"12":1}}],["irtools",{"2":{"12":1}}],["imex",{"2":{"134":1}}],["important",{"2":{"87":1}}],["improve",{"2":{"86":1}}],["implicitness",{"2":{"134":1}}],["implicitrungekuttamethod",{"2":{"133":1,"136":2,"137":13,"138":6,"139":3,"140":11,"141":4,"142":10,"143":3,"144":4}}],["implicit",{"0":{"138":1},"2":{"112":1,"133":2,"134":1,"136":2,"138":1,"140":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":{"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":{"136":1,"138":2}}],["isspm2",{"2":{"136":1,"138":2}}],["issteadybodyforce",{"2":{"15":1,"18":1,"39":1,"42":1,"49":1,"51":1,"58":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":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":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":7,"110":1,"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":6,"134":10,"135":5,"136":7,"140":1,"145":3}}],["itself",{"2":{"99":1,"125":1}}],["its",{"2":{"92":3,"93":1,"125":1,"134":1}}],["iterative",{"2":{"110":1,"111":2}}],["iterativesolvers",{"2":{"12":1,"111":1}}],["iterations",{"2":{"86":2,"136":1}}],["iteration",{"2":{"43":1,"120":1,"121":1,"136":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,"109":2,"112":3,"115":1,"120":2,"122":1,"127":4,"130":1,"133":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,"109":1,"115":2,"116":1,"120":3,"121":4,"122":1,"127":3,"133":3,"136":3,"145":1}}],["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":{"58":4,"120":1,"121":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,"91":2,"118":1,"133":1,"136":1}}],["initialvalues",{"2":{"12":1}}],["inds",{"2":{"145":1}}],["indexed",{"2":{"122":1}}],["index",{"2":{"109":2,"116":3,"122":2,"124":4}}],["independently",{"2":{"87":1}}],["indices",{"2":{"58":1,"59":1,"109":5,"115":1,"122":1}}],["indirectarrays",{"2":{"12":1}}],["input",{"2":{"87":4,"93":1,"98":1,"110":1,"136":1}}],["inputs",{"2":{"83":1,"99":1}}],["inverting",{"2":{"134":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":{"136":1}}],["into",{"2":{"82":1,"86":1,"87":3,"133":1,"136":1,"145":1}}],["int64",{"2":{"58":56,"86":1,"93":5,"97":4,"99":4,"121":1}}],["integrated",{"2":{"133":1}}],["integration",{"2":{"133":1}}],["integrating",{"2":{"131":1}}],["integrals",{"2":{"123":2,"131":1}}],["integral",{"0":{"101":1},"2":{"101":2,"109":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":{"109":1}}],["interpolate",{"2":{"8":2,"84":2,"109":10,"129":1}}],["interest",{"0":{"104":1},"1":{"105":1,"106":1,"107":1,"108":1}}],["interfaces",{"2":{"94":1}}],["intermediate",{"2":{"90":1,"136":1}}],["intervals",{"2":{"133":1}}],["intervalsets",{"2":{"12":1}}],["interval",{"2":{"133":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,"121":1}}],["injected",{"2":{"37":1}}],["instead",{"2":{"122":2,"127":2,"136":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,"94":1,"112":1}}],["inspecting",{"2":{"44":1}}],["inside",{"2":{"15":2,"18":2,"19":2,"21":2,"93":1}}],["influence",{"2":{"134":1}}],["inflow",{"2":{"15":5,"18":3,"19":1,"22":4,"25":4,"49":1,"52":1,"98":1,"127":3}}],["inflate",{"2":{"12":1}}],["info",{"2":{"11":2,"12":1,"16":10,"29":7,"58":2,"64":10,"69":1,"70":1}}],["information",{"2":{"0":1,"112":1,"121":1}}],["increment",{"2":{"133":1,"136":1}}],["incremented",{"2":{"124":1}}],["includes",{"2":{"133":1}}],["include",{"2":{"109":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":{"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":2,"63":2,"64":3,"65":1,"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":54,"110":1,"111":18,"112":2,"113":3,"115":18,"116":6,"117":2,"118":5,"120":3,"121":16,"132":2,"133":9,"134":2,"135":2,"136":9,"137":37,"138":16,"139":9,"140":33,"141":12,"142":30,"143":9,"144":12,"145":7}}],["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,"89":1,"90":3,"91":1,"92":5,"93":5,"95":1,"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,"120":1,"121":9,"122":6,"123":13,"124":2,"125":1,"126":1,"127":2,"130":1,"131":1,"132":2,"133":7,"134":2,"145":1,"147":2}}],["gq+yg",{"2":{"135":1}}],["gδp+yg",{"2":{"134":1}}],["g=wu−1mtw",{"2":{"126":1}}],["gp0+yg",{"2":{"134":2}}],["gp+yg",{"2":{"133":1}}],["gph+yg",{"2":{"126":2}}],["gpus",{"2":{"43":1,"94":1,"110":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,"133":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":8,"59":1,"60":1,"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,"109":4,"113":1,"115":1,"120":1,"125":1,"133":1,"134":2,"135":3,"136":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":{"136":1,"140":2}}],["gl2",{"2":{"136":1,"140":2}}],["gl1",{"2":{"136":1,"140":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,"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":{"145":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,"63":1,"64":1,"65":1,"68":1,"69":1,"70":1,"76":1,"77":1}}],["generic",{"2":{"15":1,"58":2,"69":1,"93":1}}],["geometrybasics",{"2":{"12":1}}],["geointerface",{"2":{"12":1}}],["geoformattypes",{"2":{"12":1}}],["getval",{"2":{"145":1}}],["gets",{"2":{"121":1}}],["getting",{"0":{"82":1}}],["gettext",{"2":{"12":1}}],["getoffset",{"2":{"8":1,"145":1}}],["get",{"2":{"0":1,"8":2,"82":1,"98":1,"99":1,"109":3,"111":1,"115":1,"116":1,"120":4,"133":2,"136":1,"145":8}}],["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,"134":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":1,"63":1,"64":3,"65":2,"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,"145":1,"147":1}}],["gradients",{"2":{"89":1,"111":2}}],["gradient",{"0":{"91":1,"93":1},"2":{"58":2,"59":1,"91":2,"93":2,"99":1,"109":6,"126":3,"127":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,"90":2,"91":3,"94":1,"99":2,"109":2,"124":1}}],["brenner",{"2":{"147":1}}],["break",{"2":{"110":1}}],["brasey",{"2":{"139":2}}],["bα",{"2":{"122":2}}],["b−a",{"2":{"116":3}}],["blog",{"2":{"109":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,"109":8,"111":2,"116":10,"133":1,"136":3,"147":9}}],["bool",{"2":{"58":17,"111":2,"121":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,"122":1}}],["boundary",{"0":{"79":1,"98":1,"102":1,"115":1,"124":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,"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,"133":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,"58":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,"109":2,"134":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}}],["batch",{"2":{"86":2}}],["batchsize",{"2":{"86":2}}],["bashforth",{"0":{"134":1},"2":{"133":1,"134":3}}],["basis",{"2":{"84":1,"109":2}}],["based",{"2":{"141":1,"145":1}}],["baseline",{"2":{"95":2}}],["baselet",{"2":{"12":1}}],["base",{"2":{"58":6,"93":1,"111":1}}],["base64",{"2":{"12":1}}],["back",{"2":{"89":1,"99":1,"120":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":{"90":1,"138":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":2,"63":3,"64":1,"65":2,"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,"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":{"136":1,"138":1}}],["beta",{"0":{"135":1},"2":{"133":1}}],["between",{"2":{"43":1,"86":1,"109":2,"116":1,"121":1}}],["before",{"2":{"121":1,"124":1,"129":1,"134":1,"136":1}}],["beneficial",{"2":{"117":1}}],["benjamin",{"2":{"9":1,"136":1}}],["beginning",{"2":{"115":1}}],["being",{"2":{"109":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,"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,"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":3,"110":1,"111":1,"112":1,"113":1,"115":2,"117":1,"121":3,"122":3,"125":1,"127":4,"132":1,"133":3,"134":2,"136":2}}],["business",{"2":{"147":1}}],["buf",{"2":{"120":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,"64":1,"66":1,"69":1,"136":2}}],["butcher",{"2":{"136":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,"125":1,"133":1,"142":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,"93":2,"94":1,"97":1,"98":2,"101":1,"106":1,"107":2,"108":2,"109":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,"133":1,"134":3,"135":4,"136":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,"133":4}}],["our",{"2":{"44":1,"69":1,"122":1}}],["outer",{"2":{"123":1,"136":1}}],["outside",{"2":{"115":1,"123":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,"62":1,"63":2,"65":1,"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,"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":2,"63":2,"64":3,"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,"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,"91":1,"120":3}}],["out",{"2":{"9":1,"49":3,"51":3,"82":1,"85":1,"93":1,"112":1,"133":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":{"137":2,"138":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,"136":1}}],["option",{"2":{"43":1}}],["operation",{"2":{"91":1}}],["operations",{"2":{"91":1,"109":1}}],["operating",{"2":{"87":1}}],["operator",{"2":{"87":1,"99":1,"109":1,"122":2,"123":1,"126":4,"127":3}}],["operators",{"0":{"109":1},"2":{"19":1,"22":1,"25":1,"43":2,"46":1,"49":1,"52":1,"55":1,"66":1,"90":2,"94":2,"96":2,"97":4,"109":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":{"133":1,"134":1}}],["obtained",{"2":{"43":1,"46":1,"86":1,"93":1,"112":1,"123":1,"125":1,"135":1}}],["obtaining",{"2":{"9":1,"112":1}}],["observable",{"2":{"58":6,"59":6,"120":1,"121":3}}],["observables",{"2":{"12":1}}],["observe",{"2":{"58":1,"59":1,"121":2}}],["observer",{"2":{"58":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,"136":1}}],["otherwise",{"2":{"6":1,"9":1,"87":1,"109":1,"115":1,"116":1,"122":1}}],["orlandi",{"2":{"147":1}}],["original",{"2":{"55":1,"136":1}}],["order",{"0":{"125":1},"2":{"43":1,"55":1,"66":1,"93":1,"111":1,"112":1,"125":5,"126":1,"133":1,"134":5,"135":1,"136":3,"137":2,"138":3,"139":1,"142":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,"92":2,"97":1,"98":1,"102":1,"109":1,"110":2,"115":1,"122":3,"136":1}}],["once",{"2":{"136":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,"110":2,"126":1,"127":3,"136":1}}],["oneapi",{"2":{"94":1}}],["onetbb",{"2":{"12":1}}],["onelegmethod",{"2":{"8":1,"135":2}}],["one",{"0":{"135":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,"64":1,"65":1,"92":1,"93":1,"102":1,"112":1,"115":2,"121":1,"122":1,"123":1,"124":1,"127":1,"133":3,"135":1,"136":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,"92":1,"94":1,"95":4,"97":3,"98":2,"99":1,"102":4,"109":2,"112":2,"115":3,"120":1,"121":3,"123":1,"125":1,"129":1,"134":2,"145":1,"147":1}}],["offenhäuser",{"2":{"147":1}}],["offstep",{"2":{"135":1}}],["offset",{"2":{"109":3,"115":2,"145":1}}],["offsetarrays",{"2":{"12":1}}],["off",{"2":{"87":2}}],["official",{"2":{"11":1}}],["of",{"0":{"91":1,"93":1,"104":1,"123":1,"144":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,"62":1,"63":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,"109":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":6,"134":4,"135":1,"136":8,"138":2,"145":3,"147":22}}],["t−1",{"2":{"134":2}}],["t−1=t0−δt",{"2":{"134":1,"135":1}}],["t−δt",{"2":{"127":1}}],["tn=t",{"2":{"133":1}}],["tn+1",{"2":{"133":1}}],["tn",{"2":{"133":4,"136":1}}],["t=t0+δt",{"2":{"134":1,"136":1}}],["t=2",{"2":{"121":2}}],["t=0",{"2":{"121":1}}],["t=$",{"2":{"121":1}}],["ts=t",{"2":{"136":1}}],["tspan",{"2":{"112":2}}],["tsit5",{"2":{"112":2}}],["tsim",{"2":{"88":1}}],["t0−δt",{"2":{"134":1}}],["t0=0",{"2":{"133":1}}],["t0",{"2":{"109":1,"134":12,"135":1,"136":5}}],["tv",{"2":{"99":8}}],["t3fv",{"2":{"93":1}}],["tburn",{"2":{"88":1}}],["ty0",{"2":{"58":2,"59":2}}],["ty",{"2":{"58":6,"59":6}}],["typically",{"2":{"115":1,"122":1}}],["typing",{"2":{"6":1}}],["types",{"2":{"43":1,"94":1,"121":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,"133":2,"136":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,"89":1,"90":1,"97":2,"123":1,"147":2}}],["turnover",{"2":{"109":1}}],["turbulent",{"2":{"28":1,"32":1,"95":1,"135":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,"93":2,"98":1,"109":4,"111":1,"116":3,"117":2,"120":1,"121":2,"132":1,"145":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,"120":1}}],["t",{"2":{"15":3,"16":10,"18":3,"19":14,"21":15,"22":9,"24":10,"25":11,"27":12,"29":7,"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":21,"63":22,"64":22,"65":13,"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,"109":4,"111":3,"112":6,"113":3,"115":8,"118":5,"120":5,"121":2,"123":2,"127":1,"133":7,"134":9,"135":5,"136":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":{"95":2}}],["transforms",{"2":{"87":1,"94":1}}],["transducers",{"2":{"12":1}}],["transcodingstreams",{"2":{"12":1}}],["truncation",{"2":{"142":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":{"136":5}}],["ti−1",{"2":{"136":2}}],["ti=t0+δti",{"2":{"136":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,"122":1,"125":2}}],["timestepping",{"2":{"121":1}}],["timestep",{"2":{"8":1,"91":1,"120":2,"133":4}}],["time",{"0":{"133":1},"1":{"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1},"2":{"14":1,"19":2,"22":2,"25":2,"43":5,"44":1,"46":1,"52":1,"55":2,"60":1,"61":1,"62":1,"63":1,"66":1,"69":1,"70":1,"91":1,"100":1,"103":2,"109":1,"111":1,"112":1,"113":1,"118":2,"120":4,"121":24,"123":1,"127":2,"133":14,"134":9,"135":3,"136":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,"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,"109":2}}],["tar",{"2":{"12":1}}],["tableau",{"2":{"136":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,"64":2,"65":2,"66":4,"68":4,"116":2}}],["tentative",{"2":{"134":2,"135":1,"136":1}}],["tensors",{"2":{"109":2}}],["tensor",{"2":{"84":1,"109":6}}],["tensorclosure",{"2":{"84":2}}],["tensorcore",{"2":{"12":1}}],["tensorbasis",{"2":{"8":1,"109":2}}],["terms",{"2":{"109":1,"120":1,"122":1,"134":3}}],["term",{"2":{"109":12,"123":3,"126":2,"127":2,"132":1,"133":2}}],["tested",{"2":{"94":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":3,"63":3,"64":2,"65":2,"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":15,"59":6,"60":8,"61":8,"62":9,"63":8,"64":4,"65":5,"93":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,"62":1,"63":1,"91":1,"99":2,"109":10,"111":2,"115":6,"120":2,"133":2}}],["thuerey",{"2":{"147":1}}],["thus",{"2":{"91":1,"97":1,"123":1,"124":1,"127":1,"136":1}}],["though",{"2":{"136":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,"109":1,"112":2,"113":2,"116":3,"120":2,"121":3,"123":3,"127":1,"133":3,"134":2,"135":1,"136":3,"145":1}}],["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,"25":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":{"142":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":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,"62":1,"63":2,"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,"109":2,"111":2,"112":2,"117":1,"121":2,"122":1,"123":1,"127":2,"133":4,"134":3,"136":2,"140":1,"141":1,"145":1}}],["them",{"2":{"120":1}}],["themselves",{"2":{"95":1}}],["these",{"2":{"83":1,"95":3,"109":1,"123":1}}],["their",{"2":{"43":1,"83":1,"97":1,"123":3,"126":1,"135":1}}],["they",{"2":{"5":1,"94":2,"95":1,"121":1,"133":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,"134":2,"135":1,"136":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":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,"62":1,"63":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":28,"110":2,"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":26,"134":25,"135":8,"136":21,"142":4,"145":1,"147":6}}],["toolkit",{"2":{"147":1}}],["toolchains",{"2":{"112":1}}],["tools",{"2":{"84":1,"92":1,"112":2}}],["too",{"2":{"95":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,"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":17,"110":3,"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":10,"134":5,"136":4,"145":1,"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":{"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,"133":1,"135":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":1,"63":1,"64":2,"65":1,"66":1,"68":1,"69":1,"71":1,"76":1,"93":4,"97":4,"98":3,"110":2,"112":2,"137":18,"138":8,"139":6,"140":22,"141":8,"142":20,"143":6,"144":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,"109":11,"111":5,"112":4,"123":1,"126":1,"127":3,"134":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,"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,"136":2}}],["future",{"2":{"12":1,"133":1}}],["functions",{"2":{"43":1,"87":1,"92":2,"100":1,"145":1}}],["function",{"0":{"108":1,"131":1},"2":{"15":1,"43":1,"49":1,"51":1,"57":1,"58":4,"59":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,"133":1}}],["functionwrapperswrappers",{"2":{"12":1}}],["functionwrappers",{"2":{"12":1}}],["functors",{"2":{"12":1}}],["furnished",{"2":{"9":1}}],["families",{"2":{"136":1}}],["far",{"2":{"121":1}}],["factor",{"2":{"116":1}}],["factorization",{"2":{"134":1}}],["factorizations",{"2":{"96":1,"110":1}}],["factorize",{"2":{"60":1,"62":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":{"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,"64":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":{"109":2,"116":1,"134":3,"136":1}}],["finite",{"0":{"123":1},"2":{"116":1,"122":1,"123":1,"131":1}}],["fine",{"2":{"85":2}}],["finally",{"2":{"93":1,"135":1,"136":1}}],["finalize",{"2":{"58":4,"121":7}}],["final",{"2":{"56":1,"69":1,"70":1,"91":4,"121":3,"136":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,"64":1,"65":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,"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,"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,"23":1,"26":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,"109":2,"115":5,"116":3,"117":1,"121":1,"123":1,"133":1,"134":1,"135":1,"136":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,"121":1}}],["fieldnames",{"2":{"60":2,"61":2,"62":1,"63":1,"121":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":5,"63":5,"64":1,"65":1,"67":3,"68":3,"121":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,"62":2,"63":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,"109":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":3,"134":2,"135":2,"136":2,"145":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,"62":1,"63":2,"66":1,"68":4,"74":1,"76":1,"121":1}}],["freund",{"2":{"147":1}}],["freeness",{"2":{"111":1,"127":2,"136":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,"133":2,"134":2,"135":1,"136":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,"93":1,"95":4,"109":6,"111":5,"112":2,"116":5,"118":1,"120":1,"121":2,"133":2,"134":1,"145":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,"142":1,"147":1}}],["found",{"2":{"77":1,"108":2}}],["fontconfig",{"2":{"12":1}}],["follows",{"2":{"132":1,"135":1,"136":1}}],["following",{"2":{"8":1,"9":1,"11":1,"12":1,"43":1,"85":1,"95":1,"98":1,"102":1,"109":1,"112":1,"116":1,"121":2,"123":1,"133":1,"135":1,"136":1}}],["folder",{"2":{"4":1,"77":1}}],["forward",{"2":{"137":1}}],["forwarddiff",{"2":{"12":1}}],["fortran",{"2":{"124":1}}],["formed",{"2":{"133":1}}],["formulation",{"2":{"55":1,"112":2,"127":1}}],["form",{"0":{"101":1},"2":{"28":1,"32":1,"43":1,"101":2,"126":1,"133":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,"109":2,"134":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,"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":9,"110":3,"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":7,"134":7,"135":2,"136":5,"142":5,"145":1,"147":6}}],["fe11",{"2":{"136":1,"137":2}}],["feature",{"2":{"95":1}}],["features",{"2":{"1":1,"28":1,"32":1,"83":1,"95":3,"112":1}}],["feel",{"2":{"1":1}}],["rssps3",{"2":{"136":1,"137":2}}],["rssps2",{"2":{"136":1,"137":2}}],["riia3",{"2":{"136":1,"140":2}}],["riia2",{"2":{"136":1,"140":2}}],["riia1",{"2":{"136":1,"140":2}}],["ria3",{"2":{"136":1,"140":2}}],["ria2",{"2":{"136":1,"140":2}}],["ria1",{"2":{"136":1,"140":1}}],["rights",{"2":{"9":1}}],["right",{"0":{"93":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,"93":9,"95":1,"109":2,"111":1,"112":3,"113":10,"115":1,"134":1}}],["rule",{"2":{"123":2,"131":1}}],["runner",{"2":{"58":1,"64":1,"69":1}}],["running",{"2":{"3":1,"43":1,"72":2}}],["runge",{"0":{"136":1},"1":{"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1},"2":{"43":1,"133":3,"136":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":2,"87":3,"88":1,"118":1}}],["r",{"2":{"73":4,"76":4,"87":4,"133":2,"136":4,"147":5}}],["rt3d",{"2":{"62":1,"63":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":{"142":3}}],["rk44c23",{"2":{"136":1,"142":1}}],["rk44c2",{"2":{"136":1,"142":1}}],["rk44",{"2":{"136":1,"142":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,"136":1,"142":1}}],["rk3",{"2":{"137":1,"142":2}}],["rk33p2",{"2":{"136":1,"142":1}}],["rk33c2",{"2":{"60":1,"61":1,"136":1,"142":1}}],["rk56",{"2":{"136":1,"137":2}}],["rk",{"2":{"133":1,"136":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,"91":1,"136":1,"137":11,"138":4,"139":3,"140":11,"141":4,"142":10,"143":3,"144":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":{"137":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}}],["rayleightaylor2d",{"2":{"64":2,"65":1}}],["rayleightaylor3d",{"2":{"62":1,"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":{"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,"145":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,"91":1,"93":1,"97":1,"98":1,"112":1,"118":3,"145":1}}],["reinforcement",{"2":{"147":1}}],["reused",{"2":{"134":1}}],["reu2",{"2":{"69":1}}],["remmerswaal",{"2":{"147":1}}],["remaining",{"2":{"123":1}}],["remember",{"2":{"93":1}}],["reλ=λuavg3ν",{"2":{"109":1}}],["reλ",{"2":{"109":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":{"22":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,"136":1}}],["return",{"2":{"86":3,"87":3,"116":3,"120":1,"136":1}}],["returns",{"2":{"44":1,"92":2,"109":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":{"133":1}}],["respect",{"2":{"87":1,"91":2,"93":1}}],["respective",{"2":{"43":1}}],["resulting",{"2":{"111":1,"116":1,"121":1,"125":1,"134":1}}],["result",{"2":{"85":1,"92":1,"109":7,"113":1,"126":1}}],["results",{"2":{"43":2,"44":1,"46":1,"58":1,"64":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,"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,"93":1,"120":1,"121":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,"121":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":{"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,"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,"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,"133":1,"136":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":{"122":1}}],["representation",{"0":{"126":1}}],["represent",{"2":{"98":1,"116":1}}],["replace",{"2":{"136":1}}],["replacement",{"2":{"136":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,"134":1,"135":1,"145":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,"145":1}}],["request",{"2":{"1":1}}],["cbm",{"2":{"143":2}}],["c2=c3",{"2":{"142":1}}],["cn22",{"2":{"136":1,"142":1}}],["cn",{"2":{"134":1}}],["cnn",{"2":{"87":5}}],["ct",{"2":{"93":3}}],["ctrl",{"2":{"6":1}}],["ci=∑j=1iaij",{"2":{"136":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}}],["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,"94":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,"94":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,"94":5,"109":1,"110":1}}],["currently",{"2":{"89":2,"115":1,"133":1}}],["current",{"2":{"6":2,"49":1,"51":1,"86":1,"113":2,"127":1,"135":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":{"134":1},"2":{"133":1,"134":3,"142":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":4,"86":18,"87":3,"88":5,"91":1,"93":1,"95":1,"98":1,"99":3,"109":1,"111":2,"112":1,"113":2,"116":4,"117":2,"118":5,"121":5,"132":1,"133":2}}],["cells",{"2":{"125":1}}],["cell",{"2":{"58":1,"60":1}}],["certain",{"2":{"43":1,"46":1,"136":1,"145":1}}],["central",{"2":{"131":1}}],["centers",{"2":{"84":2,"109":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,"109":4,"111":2,"124":1,"126":1,"133":1,"136":3,"141":1,"142":3,"147":1}}],["classical",{"0":{"140":1},"2":{"142":1}}],["claim",{"2":{"9":1}}],["clockwise",{"2":{"87":1}}],["clone",{"2":{"83":1}}],["cloning",{"2":{"83":1}}],["closeall",{"2":{"59":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,"58":6,"83":3,"84":7,"86":2,"87":9,"93":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,"122":2}}],["corners",{"2":{"122":1,"131":1}}],["corresponding",{"2":{"134":1,"136":1}}],["corresponds",{"2":{"109":1,"116":1}}],["correction",{"2":{"135":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,"133":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}}],["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,"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,"89":1},"1":{"90":1,"91":1,"92":1,"93":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,"89":1,"90":2,"92":2,"109":1,"110":2,"116":1,"117":1,"133":1}}],["codeczlib",{"2":{"12":1}}],["coefficients",{"2":{"134":1,"136":1}}],["coefficient",{"2":{"15":2,"18":1,"19":2,"21":1,"49":1,"136":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,"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,"93":1,"95":1,"109":37,"111":2,"134":2,"145":1}}],["computed",{"2":{"20":1,"23":1,"26":1,"30":1,"44":1,"47":1,"50":1,"53":1,"56":1,"67":1,"95":1,"113":1,"127":1,"134":1,"135":1,"136":1}}],["computing",{"2":{"44":1,"69":1,"70":1,"95":1,"134":1,"135":1}}],["compilersupportlibraries",{"2":{"12":1}}],["composed",{"2":{"91":1}}],["compositionsbase",{"2":{"12":1}}],["components",{"2":{"83":1,"84":1,"109":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,"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":{"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,"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,"142":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,"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,"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,"133":2,"136":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,"136":1}}],["convective",{"2":{"109":3,"123":2,"134":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,"126":1,"134":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,"134":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,"95":1,"97":1,"98":1,"110":1,"122":1,"133":1,"136":1}}],["constant",{"2":{"95":1,"99":1,"103":2,"109":2,"115":1,"123":1,"127":2,"134":2,"135":1,"145":1}}],["const",{"2":{"93":2}}],["constraint",{"2":{"100":1,"123":2,"127":1,"133":1}}],["constraints",{"2":{"12":1}}],["constructionbase",{"2":{"12":1}}],["consequently",{"2":{"91":1}}],["conserves",{"2":{"133":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,"133":1}}],["contained",{"2":{"145":1}}],["contain",{"2":{"115":1}}],["containing",{"2":{"98":1,"113":2,"116":1,"126":2,"134":1}}],["contains",{"2":{"5":1,"44":1,"112":1,"120":1,"126":2}}],["contourf",{"2":{"121":1}}],["contour",{"2":{"12":1,"121":3,"145":1}}],["contextvariablesx",{"2":{"12":1}}],["contrast",{"2":{"134":1}}],["contracted",{"2":{"109":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,"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":1,"63":1,"64":2,"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":{"58":18,"93":5,"97":3,"98":3,"115":1,"145":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,"122":4,"145":1}}],["cache",{"2":{"120":1,"133":4}}],["causes",{"2":{"110":1}}],["calculation",{"2":{"147":1}}],["calculated",{"2":{"136":1}}],["calibrated",{"2":{"95":1}}],["calling",{"2":{"109":1}}],["call",{"2":{"93":1}}],["calls",{"2":{"92":1}}],["callbackstate",{"2":{"86":5}}],["callback",{"2":{"86":5}}],["called",{"2":{"43":1,"93":1,"109":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,"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,"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,"134":4,"136":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,"93":1,"121":1}}],["chen",{"2":{"147":1}}],["chebyshev",{"0":{"141":1},"2":{"141":2}}],["checks",{"2":{"133":1}}],["check",{"2":{"62":1,"82":1}}],["chdirk3",{"2":{"136":1,"141":1}}],["chcons3",{"2":{"136":1,"141":2}}],["chc5",{"2":{"136":1,"141":2}}],["chc3",{"2":{"136":1,"141":1}}],["cholesky",{"2":{"134":1}}],["chosen",{"2":{"120":1,"136":1}}],["choice",{"2":{"90":1}}],["choose",{"2":{"6":1,"43":2}}],["choosing",{"2":{"3":1,"62":1,"123":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,"133":1}}],["changes",{"2":{"4":1,"103":1,"134":1}}],["charge",{"2":{"9":1}}]],"serializationVersion":2}';export{e as default}; diff --git a/dev/assets/chunks/@localSearchIndexroot.E-8RDk93.js b/dev/assets/chunks/@localSearchIndexroot.E-8RDk93.js new file mode 100644 index 000000000..64ccd5906 --- /dev/null +++ b/dev/assets/chunks/@localSearchIndexroot.E-8RDk93.js @@ -0,0 +1 @@ +const e='{"documentCount":148,"nextId":148,"documentIds":{"0":"/IncompressibleNavierStokes.jl/dev/about/citing#citing","1":"/IncompressibleNavierStokes.jl/dev/about/contributing#contributing","2":"/IncompressibleNavierStokes.jl/dev/about/development#Local-development","3":"/IncompressibleNavierStokes.jl/dev/about/development#Use-Juliaup","4":"/IncompressibleNavierStokes.jl/dev/about/development#revise","5":"/IncompressibleNavierStokes.jl/dev/about/development#environments","6":"/IncompressibleNavierStokes.jl/dev/about/development#vscode","7":"/IncompressibleNavierStokes.jl/dev/about/development#Environment-vs-package","8":"/IncompressibleNavierStokes.jl/dev/about/#About-IncompressibleNavierStokes.jl","9":"/IncompressibleNavierStokes.jl/dev/about/license#license","10":"/IncompressibleNavierStokes.jl/dev/about/versions#Package-versions","11":"/IncompressibleNavierStokes.jl/dev/about/versions#Julia-version","12":"/IncompressibleNavierStokes.jl/dev/about/versions#Package-versions-2","13":"/IncompressibleNavierStokes.jl/dev/examples/generated/Actuator2D#Unsteady-actuator-case-2D","14":"/IncompressibleNavierStokes.jl/dev/examples/generated/Actuator2D#packages","15":"/IncompressibleNavierStokes.jl/dev/examples/generated/Actuator2D#setup","16":"/IncompressibleNavierStokes.jl/dev/examples/generated/Actuator2D#Solve-unsteady-problem","17":"/IncompressibleNavierStokes.jl/dev/examples/generated/Actuator2D#post-process","18":"/IncompressibleNavierStokes.jl/dev/examples/generated/Actuator2D#Copy-pasteable-code","19":"/IncompressibleNavierStokes.jl/dev/examples/generated/Actuator3D#Unsteady-actuator-case-3D","20":"/IncompressibleNavierStokes.jl/dev/examples/generated/Actuator3D#post-process","21":"/IncompressibleNavierStokes.jl/dev/examples/generated/Actuator3D#Copy-pasteable-code","22":"/IncompressibleNavierStokes.jl/dev/examples/generated/BackwardFacingStep2D#Backward-Facing-Step-2D","23":"/IncompressibleNavierStokes.jl/dev/examples/generated/BackwardFacingStep2D#post-process","24":"/IncompressibleNavierStokes.jl/dev/examples/generated/BackwardFacingStep2D#Copy-pasteable-code","25":"/IncompressibleNavierStokes.jl/dev/examples/generated/BackwardFacingStep3D#Backward-Facing-Step-3D","26":"/IncompressibleNavierStokes.jl/dev/examples/generated/BackwardFacingStep3D#post-process","27":"/IncompressibleNavierStokes.jl/dev/examples/generated/BackwardFacingStep3D#Copy-pasteable-code","28":"/IncompressibleNavierStokes.jl/dev/examples/generated/DecayingTurbulence2D#Decaying-Homogeneous-Isotropic-Turbulence-2D","29":"/IncompressibleNavierStokes.jl/dev/examples/generated/DecayingTurbulence2D#packages","30":"/IncompressibleNavierStokes.jl/dev/examples/generated/DecayingTurbulence2D#post-process","31":"/IncompressibleNavierStokes.jl/dev/examples/generated/DecayingTurbulence2D#Copy-pasteable-code","32":"/IncompressibleNavierStokes.jl/dev/examples/generated/DecayingTurbulence3D#Decaying-Homogeneous-Isotropic-Turbulence-3D","33":"/IncompressibleNavierStokes.jl/dev/examples/generated/DecayingTurbulence3D#Problem-setup","34":"/IncompressibleNavierStokes.jl/dev/examples/generated/DecayingTurbulence3D#Solve-problem","35":"/IncompressibleNavierStokes.jl/dev/examples/generated/DecayingTurbulence3D#post-process","36":"/IncompressibleNavierStokes.jl/dev/examples/generated/DecayingTurbulence3D#Copy-pasteable-code","37":"/IncompressibleNavierStokes.jl/dev/examples/generated/Kolmogorov2D#Kolmogorov-flow-(2D)","38":"/IncompressibleNavierStokes.jl/dev/examples/generated/Kolmogorov2D#packages","39":"/IncompressibleNavierStokes.jl/dev/examples/generated/Kolmogorov2D#setup","40":"/IncompressibleNavierStokes.jl/dev/examples/generated/Kolmogorov2D#Plot-body-force","41":"/IncompressibleNavierStokes.jl/dev/examples/generated/Kolmogorov2D#Solve-unsteady-problem","42":"/IncompressibleNavierStokes.jl/dev/examples/generated/Kolmogorov2D#Copy-pasteable-code","43":"/IncompressibleNavierStokes.jl/dev/examples/generated/LidDrivenCavity2D#Tutorial:-Lid-Driven-Cavity-2D","44":"/IncompressibleNavierStokes.jl/dev/examples/generated/LidDrivenCavity2D#post-process","45":"/IncompressibleNavierStokes.jl/dev/examples/generated/LidDrivenCavity2D#Copy-pasteable-code","46":"/IncompressibleNavierStokes.jl/dev/examples/generated/LidDrivenCavity3D#Lid-Driven-Cavity-3D","47":"/IncompressibleNavierStokes.jl/dev/examples/generated/LidDrivenCavity3D#post-process","48":"/IncompressibleNavierStokes.jl/dev/examples/generated/LidDrivenCavity3D#Copy-pasteable-code","49":"/IncompressibleNavierStokes.jl/dev/examples/generated/MultiActuator#Unsteady-actuator-case-2D","50":"/IncompressibleNavierStokes.jl/dev/examples/generated/MultiActuator#post-process","51":"/IncompressibleNavierStokes.jl/dev/examples/generated/MultiActuator#Copy-pasteable-code","52":"/IncompressibleNavierStokes.jl/dev/examples/generated/PlanarMixing2D#Planar-mixing-2D","53":"/IncompressibleNavierStokes.jl/dev/examples/generated/PlanarMixing2D#post-process","54":"/IncompressibleNavierStokes.jl/dev/examples/generated/PlanarMixing2D#Copy-pasteable-code","55":"/IncompressibleNavierStokes.jl/dev/examples/generated/PlaneJets2D#Plane-jets-2D","56":"/IncompressibleNavierStokes.jl/dev/examples/generated/PlaneJets2D#post-process","57":"/IncompressibleNavierStokes.jl/dev/examples/generated/PlaneJets2D#Copy-pasteable-code","58":"/IncompressibleNavierStokes.jl/dev/examples/generated/RayleighBenard2D#Rayleigh-Bénard-convection-(2D)","59":"/IncompressibleNavierStokes.jl/dev/examples/generated/RayleighBenard2D#Copy-pasteable-code","60":"/IncompressibleNavierStokes.jl/dev/examples/generated/RayleighBenard3D#Rayleigh-Bénard-convection-(3D)","61":"/IncompressibleNavierStokes.jl/dev/examples/generated/RayleighBenard3D#Copy-pasteable-code","62":"/IncompressibleNavierStokes.jl/dev/examples/generated/RayleighTaylor2D#Rayleigh-Taylor-instability-in-2D","63":"/IncompressibleNavierStokes.jl/dev/examples/generated/RayleighTaylor2D#Copy-pasteable-code","64":"/IncompressibleNavierStokes.jl/dev/examples/generated/RayleighTaylor3D#Rayleigh-Taylor-instability-in-2D","65":"/IncompressibleNavierStokes.jl/dev/examples/generated/RayleighTaylor3D#Copy-pasteable-code","66":"/IncompressibleNavierStokes.jl/dev/examples/generated/ShearLayer2D#Shear-layer-2D","67":"/IncompressibleNavierStokes.jl/dev/examples/generated/ShearLayer2D#post-process","68":"/IncompressibleNavierStokes.jl/dev/examples/generated/ShearLayer2D#Copy-pasteable-code","69":"/IncompressibleNavierStokes.jl/dev/examples/generated/TaylorGreenVortex2D#Convergence-study:-Taylor-Green-vortex-(2D)","70":"/IncompressibleNavierStokes.jl/dev/examples/generated/TaylorGreenVortex2D#Copy-pasteable-code","71":"/IncompressibleNavierStokes.jl/dev/examples/generated/TaylorGreenVortex3D#Taylor-Green-vortex-3D","72":"/IncompressibleNavierStokes.jl/dev/examples/generated/TaylorGreenVortex3D#backend","73":"/IncompressibleNavierStokes.jl/dev/examples/generated/TaylorGreenVortex3D#setup","74":"/IncompressibleNavierStokes.jl/dev/examples/generated/TaylorGreenVortex3D#Solve-unsteady-problem","75":"/IncompressibleNavierStokes.jl/dev/examples/generated/TaylorGreenVortex3D#post-process","76":"/IncompressibleNavierStokes.jl/dev/examples/generated/TaylorGreenVortex3D#Copy-pasteable-code","77":"/IncompressibleNavierStokes.jl/dev/examples/#Examples-gallery","78":"/IncompressibleNavierStokes.jl/dev/examples/#Simple-flows","79":"/IncompressibleNavierStokes.jl/dev/examples/#Flows-with-mixed-boundary-conditions","80":"/IncompressibleNavierStokes.jl/dev/examples/#With-a-temperature-equation","81":"/IncompressibleNavierStokes.jl/dev/examples/#Neural-network-closure-models","82":"/IncompressibleNavierStokes.jl/dev/getting_started#Getting-Started","83":"/IncompressibleNavierStokes.jl/dev/manual/closure#Neural-closure-models","84":"/IncompressibleNavierStokes.jl/dev/manual/closure#NeuralClosure-module","85":"/IncompressibleNavierStokes.jl/dev/manual/closure#filters","86":"/IncompressibleNavierStokes.jl/dev/manual/closure#training","87":"/IncompressibleNavierStokes.jl/dev/manual/closure#Neural-architectures","88":"/IncompressibleNavierStokes.jl/dev/manual/closure#Data-generation","89":"/IncompressibleNavierStokes.jl/dev/manual/gpu#GPU-Support","90":"/IncompressibleNavierStokes.jl/dev/manual/differentiability#Differentiating-through-the-code","91":"/IncompressibleNavierStokes.jl/dev/manual/differentiability#Automatic-differentiation-with-Zygote","92":"/IncompressibleNavierStokes.jl/dev/manual/differentiability#Example:-Gradient-of-kinetic-energy","93":"/IncompressibleNavierStokes.jl/dev/manual/differentiability#Automatic-differentiation-with-Enzyme","94":"/IncompressibleNavierStokes.jl/dev/manual/differentiability#Example:-Gradient-of-the-right-hand-side","95":"/IncompressibleNavierStokes.jl/dev/manual/les#Large-eddy-simulation","96":"/IncompressibleNavierStokes.jl/dev/manual/matrices#Sparse-matrices","97":"/IncompressibleNavierStokes.jl/dev/manual/matrices#example","98":"/IncompressibleNavierStokes.jl/dev/manual/matrices#Boundary-conditions-and-matrices","99":"/IncompressibleNavierStokes.jl/dev/manual/matrices#api","100":"/IncompressibleNavierStokes.jl/dev/manual/ns#Incompressible-Navier-Stokes-equations","101":"/IncompressibleNavierStokes.jl/dev/manual/ns#Integral-form","102":"/IncompressibleNavierStokes.jl/dev/manual/ns#Boundary-conditions","103":"/IncompressibleNavierStokes.jl/dev/manual/ns#Pressure-equation","104":"/IncompressibleNavierStokes.jl/dev/manual/ns#Other-quantities-of-interest","105":"/IncompressibleNavierStokes.jl/dev/manual/ns#Reynolds-number","106":"/IncompressibleNavierStokes.jl/dev/manual/ns#Kinetic-energy","107":"/IncompressibleNavierStokes.jl/dev/manual/ns#vorticity","108":"/IncompressibleNavierStokes.jl/dev/manual/ns#Stream-function","109":"/IncompressibleNavierStokes.jl/dev/manual/operators#operators","110":"/IncompressibleNavierStokes.jl/dev/manual/precision#Floating-point-precision","111":"/IncompressibleNavierStokes.jl/dev/manual/pressure#Pressure-solvers","112":"/IncompressibleNavierStokes.jl/dev/manual/sciml#Using-IncompressibleNavierStokes-in-SciML","113":"/IncompressibleNavierStokes.jl/dev/manual/sciml#api","114":"/IncompressibleNavierStokes.jl/dev/manual/setup#Problem-setup","115":"/IncompressibleNavierStokes.jl/dev/manual/setup#Boundary-conditions","116":"/IncompressibleNavierStokes.jl/dev/manual/setup#grid","117":"/IncompressibleNavierStokes.jl/dev/manual/setup#setup","118":"/IncompressibleNavierStokes.jl/dev/manual/setup#Field-initializers","119":"/IncompressibleNavierStokes.jl/dev/manual/solver#solvers","120":"/IncompressibleNavierStokes.jl/dev/manual/solver#Solvers-2","121":"/IncompressibleNavierStokes.jl/dev/manual/solver#processors","122":"/IncompressibleNavierStokes.jl/dev/manual/spatial#Spatial-discretization","123":"/IncompressibleNavierStokes.jl/dev/manual/spatial#Finite-volume-discretization-of-the-Navier-Stokes-equations","124":"/IncompressibleNavierStokes.jl/dev/manual/spatial#Boundary-conditions","125":"/IncompressibleNavierStokes.jl/dev/manual/spatial#Fourth-order-accurate-discretization","126":"/IncompressibleNavierStokes.jl/dev/manual/spatial#Matrix-representation","127":"/IncompressibleNavierStokes.jl/dev/manual/spatial#Discrete-pressure-Poisson-equation","128":"/IncompressibleNavierStokes.jl/dev/manual/spatial#Discrete-output-quantities","129":"/IncompressibleNavierStokes.jl/dev/manual/spatial#Kinetic-energy","130":"/IncompressibleNavierStokes.jl/dev/manual/spatial#vorticity","131":"/IncompressibleNavierStokes.jl/dev/manual/spatial#Stream-function","132":"/IncompressibleNavierStokes.jl/dev/manual/temperature#Temperature-equation","133":"/IncompressibleNavierStokes.jl/dev/manual/time#Time-discretization","134":"/IncompressibleNavierStokes.jl/dev/manual/time#Adams-Bashforth-Crank-Nicolson-method","135":"/IncompressibleNavierStokes.jl/dev/manual/time#One-leg-beta-method","136":"/IncompressibleNavierStokes.jl/dev/manual/time#Runge-Kutta-methods","137":"/IncompressibleNavierStokes.jl/dev/manual/time#Explicit-Methods","138":"/IncompressibleNavierStokes.jl/dev/manual/time#Implicit-Methods","139":"/IncompressibleNavierStokes.jl/dev/manual/time#Half-explicit-methods","140":"/IncompressibleNavierStokes.jl/dev/manual/time#Classical-Methods","141":"/IncompressibleNavierStokes.jl/dev/manual/time#Chebyshev-methods","142":"/IncompressibleNavierStokes.jl/dev/manual/time#Miscellaneous-Methods","143":"/IncompressibleNavierStokes.jl/dev/manual/time#DSRK-Methods","144":"/IncompressibleNavierStokes.jl/dev/manual/time#Non-SSP-Methods-of-Wong-and-Spiteri","145":"/IncompressibleNavierStokes.jl/dev/manual/utils#utils","146":"/IncompressibleNavierStokes.jl/dev/references#references","147":"/IncompressibleNavierStokes.jl/dev/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,935],"13":[4,1,29],"14":[1,4,37],"15":[1,4,95],"16":[3,4,52],"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,77],"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,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,56],"85":[1,3,61],"86":[1,3,169],"87":[2,3,184],"88":[2,3,48],"89":[2,1,92],"90":[4,1,47],"91":[4,4,73],"92":[5,8,84],"93":[4,4,101],"94":[7,8,341],"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":[1,1,338],"110":[3,1,70],"111":[2,1,123],"112":[4,1,502],"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":[2,1,215],"134":[5,2,194],"135":[4,2,105],"136":[3,2,289],"137":[2,5,51],"138":[2,5,34],"139":[3,5,23],"140":[2,5,36],"141":[2,5,34],"142":[2,5,58],"143":[2,5,21],"144":[9,5,18],"145":[1,1,93],"146":[1,1,1],"147":[1,1,264]},"averageFieldLength":[2.6621621621621623,2.945945945945946,98.3310810810811],"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":"Differentiating through the code","titles":[]},"91":{"title":"Automatic differentiation with Zygote","titles":["Differentiating through the code"]},"92":{"title":"Example: Gradient of kinetic energy","titles":["Differentiating through the code","Automatic differentiation with Zygote"]},"93":{"title":"Automatic differentiation with Enzyme","titles":["Differentiating through the code"]},"94":{"title":"Example: Gradient of the right-hand side","titles":["Differentiating through the code","Automatic differentiation with Enzyme"]},"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":"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":"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":"Time discretization","titles":[]},"134":{"title":"Adams-Bashforth Crank-Nicolson method","titles":["Time discretization"]},"135":{"title":"One-leg beta method","titles":["Time discretization"]},"136":{"title":"Runge-Kutta methods","titles":["Time discretization"]},"137":{"title":"Explicit Methods","titles":["Time discretization","Runge-Kutta methods"]},"138":{"title":"Implicit Methods","titles":["Time discretization","Runge-Kutta methods"]},"139":{"title":"Half explicit methods","titles":["Time discretization","Runge-Kutta methods"]},"140":{"title":"Classical Methods","titles":["Time discretization","Runge-Kutta methods"]},"141":{"title":"Chebyshev methods","titles":["Time discretization","Runge-Kutta methods"]},"142":{"title":"Miscellaneous Methods","titles":["Time discretization","Runge-Kutta methods"]},"143":{"title":"DSRK Methods","titles":["Time discretization","Runge-Kutta methods"]},"144":{"title":""Non-SSP" Methods of Wong & Spiteri","titles":["Time discretization","Runge-Kutta methods"]},"145":{"title":"Utils","titles":[]},"146":{"title":"References","titles":[]},"147":{"title":"Bibliography","titles":[]}},"dirtCount":0,"index":[["μ±nσ",{"2":{"145":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,"145":2}}],["κ∈n",{"2":{"121":1}}],["β−12",{"2":{"135":1}}],["β=12",{"2":{"135":1}}],["β=1d",{"2":{"122":1}}],["β",{"2":{"115":2,"116":6,"123":1,"135":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":{"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,"109":4}}],["λ=",{"2":{"109":1}}],["λ",{"2":{"86":2,"109":2}}],["≈c",{"2":{"83":1}}],["θ=12",{"2":{"134":1}}],["θ∈",{"2":{"134":1}}],["θ",{"2":{"83":2,"86":12,"87":9,"109":5,"120":1,"133":2,"134":3}}],["−δt",{"2":{"135":1}}],["−12",{"2":{"134":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,"136":2}}],["−yg",{"2":{"112":1,"127":3,"134":2,"136":1}}],["−",{"2":{"123":1,"125":1,"126":1,"133":1,"134":2,"136":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":{"58":7,"102":3,"116":1}}],["α0",{"2":{"134":1}}],["α0c",{"2":{"134":2}}],["α₂",{"2":{"134":2}}],["α₁",{"2":{"134":2}}],["α−1",{"2":{"130":1,"134":1}}],["α−=mod3",{"2":{"130":1}}],["α+1",{"2":{"130":1}}],["α+=mod3",{"2":{"130":1}}],["α=β",{"2":{"122":1}}],["α∈",{"2":{"122":1}}],["α",{"2":{"69":1,"70":1,"109":4,"115":1,"116":22,"118":2,"122":1,"123":3,"124":1,"126":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}}],["|γ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":{"58":3,"59":3}}],["||",{"2":{"58":2,"59":2,"69":1,"70":1}}],["$filename",{"2":{"121":1}}],["$dir",{"2":{"121":1}}],["$s",{"2":{"121":1}}],["$t",{"2":{"121":1}}],["$n",{"2":{"60":1,"61":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,"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,"94":2}}],["⋮",{"2":{"15":6,"94":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,"120":2,"121":3,"133":1,"137":13,"138":6,"139":3,"140":11,"141":4,"142":10,"143":3,"144":4,"145":7}}],["≤",{"2":{"15":2,"18":2,"19":2,"21":2,"49":2,"51":2,"66":2,"68":2}}],["δp",{"2":{"134":1,"135":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":{"58":2,"59":2}}],["δy1",{"2":{"58":2,"59":2}}],["δu",{"2":{"52":1,"54":2,"58":9,"59":3,"94":1,"97":1,"98":1,"116":1}}],["δti",{"2":{"136":1}}],["δtinui=vi−δtigpi",{"2":{"136":1}}],["δtin=wmvi+ym",{"2":{"136":1}}],["δti=w",{"2":{"136":1}}],["δti=ciδt",{"2":{"136":1}}],["δts=δt",{"2":{"136":1}}],["δt−wm",{"2":{"134":1}}],["δtr+1",{"2":{"136":1}}],["δtr",{"2":{"133":1,"136":1}}],["δtn=tn+1−tn",{"2":{"133":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,"92":2,"120":8,"127":2,"133":2,"134":2,"135":1,"136":2}}],["δ",{"2":{"15":3,"17":5,"18":8,"19":3,"21":3,"49":10,"51":10,"58":12,"59":6,"94":1,"97":1,"98":1,"109":1,"116":1}}],["x2",{"2":{"124":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":{"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,"109":1,"115":4,"117":1,"120":1,"121":2,"134":1,"135":1,"136":4,"145":2}}],["x+τ",{"2":{"102":2}}],["xd",{"2":{"100":1}}],["x1",{"2":{"100":1,"124":1}}],["x10",{"2":{"94":2}}],["x100",{"2":{"94":1}}],["x=",{"2":{"100":1}}],["x51",{"2":{"94":1}}],["xticks",{"2":{"69":1,"70":1}}],["xtrans",{"2":{"12":1}}],["xu",{"2":{"58":6,"94":1,"97":1,"98":1,"116":1}}],["xlims",{"2":{"58":6,"94":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,"94":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,"92":1,"94":2,"97":2,"98":2,"102":2,"112":1,"115":2,"116":3,"117":1,"118":1,"121":1,"145":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":{"143":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,"94":2,"98":2,"99":1,"111":1,"115":4,"121":1,"126":1,"127":3,"133":1}}],["zpull",{"2":{"94":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,"121":1,"145":1}}],["zlib",{"2":{"12":1}}],["zstd",{"2":{"12":1}}],["zygoterules",{"2":{"12":1}}],["zygote",{"0":{"91":1},"1":{"92":1},"2":{"12":1,"90":1,"91":2,"92":2,"94":3}}],["znver3",{"2":{"11":1}}],["yet",{"2":{"134":1}}],["yg",{"2":{"126":1,"134":1}}],["yd",{"2":{"126":1,"134":1}}],["yields",{"2":{"103":1,"127":1,"131":2}}],["ym",{"2":{"98":3,"126":1,"127":1,"136":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,"145":2}}],["yaml",{"2":{"12":1}}],["your",{"2":{"4":1,"82":1,"91":1}}],["you",{"2":{"1":1,"6":1,"72":1,"90":1,"91":1,"112":1,"120":1,"132":1}}],["``x",{"2":{"116":1}}],["`status",{"2":{"12":1}}],["`",{"2":{"12":4,"116":1}}],["`~",{"2":{"12":1}}],["87080429663847",{"2":{"112":3}}],["8754147141679445",{"2":{"112":3}}],["875",{"2":{"97":4,"98":4}}],["872c559c",{"2":{"12":1}}],["859552971776503",{"2":{"94":1}}],["856f044c",{"2":{"12":1}}],["856f2bd8",{"2":{"12":1}}],["807686775420112",{"2":{"112":3}}],["802014516816849",{"2":{"112":3}}],["809654104932039",{"2":{"94":1}}],["80",{"2":{"64":1,"65":1}}],["889816751078532",{"2":{"112":3}}],["884965007263431",{"2":{"112":3}}],["880149347154071",{"2":{"112":3}}],["88015f11",{"2":{"12":1}}],["88\\titertime",{"2":{"62":1}}],["8994459366486214",{"2":{"112":3}}],["8946587976801346",{"2":{"112":3}}],["8931676655837408",{"2":{"112":1}}],["89362187e",{"2":{"94":2}}],["89668687e",{"2":{"94":2}}],["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}}],["836607060649013",{"2":{"112":3}}],["8309339928553903",{"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}}],["8462520790618577",{"2":{"112":3}}],["846368\\tδt",{"2":{"29":1}}],["8421164708795263",{"2":{"112":3}}],["842170943040401e",{"2":{"98":1}}],["84375",{"2":{"97":4,"98":4}}],["84\\titertime",{"2":{"62":2}}],["84",{"2":{"12":1}}],["86215878e",{"2":{"94":1}}],["860ef19b",{"2":{"12":1}}],["864edb3b",{"2":{"12":1}}],["819309423233572",{"2":{"112":3}}],["8197267c",{"2":{"12":1}}],["813469779247899",{"2":{"112":3}}],["8103888188649462",{"2":{"112":1}}],["8125",{"2":{"97":4,"98":4}}],["8162dcfd",{"2":{"12":1}}],["8cdb02fc",{"2":{"12":1}}],["825149688747564",{"2":{"112":3}}],["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,"109":1,"112":2,"121":1,"132":1,"147":1}}],["⌃",{"2":{"12":4}}],["9e",{"2":{"94":4}}],["9e88b42a",{"2":{"12":1}}],["919340601659627",{"2":{"112":1}}],["916971514217e",{"2":{"94":1}}],["9169715142154e",{"2":{"94":1}}],["91697151413636e",{"2":{"94":1}}],["9169715141348e",{"2":{"94":1}}],["91697151413952e",{"2":{"94":1}}],["91697151413794e",{"2":{"94":1}}],["91711403163036e",{"2":{"94":1}}],["915",{"2":{"94":4}}],["91d4177d",{"2":{"12":1}}],["9\\tδt",{"2":{"62":1}}],["9\\titertime",{"2":{"29":2}}],["9327544152402584",{"2":{"112":1}}],["9375",{"2":{"97":4,"98":4}}],["9371663222572626",{"2":{"94":1}}],["935",{"2":{"94":4}}],["935fb764",{"2":{"12":1}}],["93",{"2":{"94":4}}],["933f0",{"2":{"58":3}}],["959306024454923",{"2":{"112":3}}],["959353",{"2":{"58":6}}],["956875322629214",{"2":{"112":3}}],["9553476091080677",{"2":{"112":3}}],["955624e",{"2":{"94":1}}],["955",{"2":{"94":4}}],["955742",{"2":{"58":6}}],["95",{"2":{"94":4}}],["9587832",{"2":{"58":6}}],["9660441565022179",{"2":{"112":3}}],["9624474399026997",{"2":{"112":3}}],["9602625548035638",{"2":{"112":1}}],["96875",{"2":{"97":4,"98":4}}],["9657206624363858",{"2":{"112":3}}],["965",{"2":{"94":4}}],["96",{"2":{"94":4}}],["9695302",{"2":{"58":6}}],["964686349775314",{"2":{"112":3}}],["96464634",{"2":{"58":6}}],["9645745014573777",{"2":{"94":1}}],["9644907",{"2":{"58":6}}],["9671985740264187",{"2":{"112":3}}],["96747094",{"2":{"58":6}}],["9670348",{"2":{"58":6}}],["9617752484760846",{"2":{"112":1}}],["96171474",{"2":{"58":6}}],["9619466",{"2":{"58":6}}],["97036081328936",{"2":{"112":3}}],["97029555",{"2":{"58":6}}],["9789438261026857",{"2":{"112":1}}],["9783547",{"2":{"58":6}}],["9743640183560942",{"2":{"112":1}}],["974473",{"2":{"58":6}}],["975",{"2":{"94":4}}],["975736",{"2":{"58":6}}],["97",{"2":{"94":4}}],["9793203",{"2":{"58":6}}],["9730158",{"2":{"58":6}}],["976298023468234",{"2":{"112":3}}],["9769204",{"2":{"58":6}}],["976317\\tδt",{"2":{"29":1}}],["9720256",{"2":{"58":6}}],["9718e550",{"2":{"12":1}}],["9fa8497b",{"2":{"12":1}}],["9824637292406186",{"2":{"112":3}}],["984229402628956",{"2":{"94":1}}],["9840734",{"2":{"58":6}}],["985",{"2":{"94":4}}],["98",{"2":{"94":4}}],["988821699344505",{"2":{"112":3}}],["9887005249941152",{"2":{"112":1}}],["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}}],["9076829270352",{"2":{"112":3}}],["904134731547883",{"2":{"112":3}}],["9019365262381107",{"2":{"112":4}}],["90137ffa",{"2":{"12":1}}],["9061469742584687",{"2":{"112":1}}],["90625",{"2":{"97":4,"98":4}}],["9021130325903073",{"2":{"94":1}}],["90",{"2":{"87":1}}],["905a6f67",{"2":{"12":1}}],["90014a1f",{"2":{"12":1}}],["9984703617618144",{"2":{"112":1}}],["996053456856544",{"2":{"94":1}}],["9977826",{"2":{"58":6}}],["9977603",{"2":{"58":6}}],["9933032",{"2":{"58":6}}],["99319035",{"2":{"58":6}}],["9908601",{"2":{"58":6}}],["995334854799291",{"2":{"112":3}}],["995",{"2":{"94":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,"94":4}}],["992d4aef",{"2":{"12":1}}],["9491191475659925",{"2":{"112":3}}],["940824698067689",{"2":{"112":3}}],["9413941876448982",{"2":{"112":1}}],["9463937370590901",{"2":{"112":1}}],["94",{"2":{"94":4,"147":1}}],["945",{"2":{"17":3,"94":4}}],["94ce4f54",{"2":{"12":1}}],["94e857df",{"2":{"12":1}}],["944b1d66",{"2":{"12":1}}],["9c8b4983",{"2":{"12":1}}],["9212619492755708",{"2":{"112":3}}],["9287639575248837",{"2":{"112":1}}],["925",{"2":{"94":4}}],["92",{"2":{"94":4}}],["9292960050685825",{"2":{"112":3}}],["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,"25":1,"27":1,"82":1,"109":2,"121":1}}],["⌅",{"2":{"12":14}}],["3rd",{"2":{"136":1,"137":1}}],["3e",{"2":{"94":2}}],["3\\tδt",{"2":{"62":1}}],["3\\titertime",{"2":{"29":1}}],["3π",{"2":{"52":1,"54":1,"66":2,"68":2}}],["32871871888720483",{"2":{"112":3}}],["3231573470541952",{"2":{"112":1}}],["3252824793032744",{"2":{"112":3}}],["320",{"2":{"94":1}}],["324×648",{"2":{"97":1}}],["324im",{"2":{"94":1}}],["324",{"2":{"94":6}}],["3224154042727793",{"2":{"112":3}}],["322im",{"2":{"94":4}}],["322",{"2":{"94":7}}],["32\\titertime",{"2":{"62":1}}],["32",{"2":{"43":1,"45":1,"52":2,"54":2,"69":1,"70":1,"73":1,"76":1,"134":1,"147":1}}],["339039\\tδt",{"2":{"29":1}}],["33bec58e",{"2":{"12":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,"121":3,"122":1,"124":1,"130":1}}],["3da002f7",{"2":{"12":1}}],["3063",{"2":{"147":1}}],["3041",{"2":{"147":1}}],["3022399050697672",{"2":{"112":1}}],["30173707668705024",{"2":{"112":3}}],["301",{"2":{"22":1,"24":1}}],["300",{"2":{"15":1,"16":1,"17":3,"18":5,"49":2,"50":3,"51":5,"58":1,"62":1,"63":1,"121":1}}],["30392449",{"2":{"12":1}}],["3f19e933",{"2":{"12":1}}],["3fa0cd96",{"2":{"12":1}}],["37075720835548737",{"2":{"112":3}}],["37542239460147797",{"2":{"112":3}}],["375",{"2":{"97":4,"98":4}}],["3752",{"2":{"58":3}}],["3716543e",{"2":{"94":1}}],["37e",{"2":{"94":1}}],["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}}],["36599946997720806",{"2":{"112":1}}],["36c8627f",{"2":{"12":1}}],["36",{"2":{"12":1}}],["3cdcf5f2",{"2":{"12":1}}],["34152297827772793",{"2":{"112":3}}],["343",{"2":{"113":1,"147":1}}],["3438758719644673",{"2":{"112":1}}],["34375",{"2":{"97":4,"98":4}}],["34907303e",{"2":{"94":1}}],["34907335e",{"2":{"94":1}}],["34+0",{"2":{"12":1}}],["34",{"2":{"12":1}}],["34004b35",{"2":{"12":1}}],["34da2185",{"2":{"12":1}}],["3859606097593504",{"2":{"112":1}}],["38540f10",{"2":{"12":1}}],["3819660112501049",{"2":{"94":1}}],["38a345b3",{"2":{"12":1}}],["38",{"2":{"12":1}}],["3125",{"2":{"97":4,"98":4}}],["3113441489959696",{"2":{"94":1}}],["3113441489959698",{"2":{"94":2}}],["310im",{"2":{"94":6}}],["310",{"2":{"94":1}}],["314",{"2":{"94":1}}],["316im",{"2":{"94":2}}],["316",{"2":{"94":2}}],["3161d3a3",{"2":{"12":1}}],["315im",{"2":{"94":3}}],["315",{"2":{"94":10}}],["31",{"2":{"12":3,"19":1,"21":1}}],["318dbb63",{"2":{"12":1}}],["31c24e10",{"2":{"12":1}}],["359421105360309",{"2":{"112":3}}],["35670101381030794",{"2":{"112":3}}],["35661453",{"2":{"12":1}}],["350",{"2":{"58":2,"59":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,"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,"94":18,"97":1,"100":1,"109":1,"112":133,"116":3,"121":2,"124":2,"136":1,"138":2,"141":1}}],["39080896304182966",{"2":{"112":3}}],["3929881372489748",{"2":{"112":3}}],["3955a311",{"2":{"12":1}}],["39de3d68",{"2":{"12":1}}],["39",{"2":{"12":2,"43":1,"93":2,"97":1,"136":1,"137":1,"143":3}}],["7468085939437812",{"2":{"112":1}}],["7564219120903566",{"2":{"112":3}}],["759979480483631",{"2":{"112":3}}],["7520072789803539",{"2":{"112":1}}],["752613360087727",{"2":{"94":1}}],["75",{"2":{"97":4,"98":4}}],["75\\titertime",{"2":{"62":1}}],["7648424333013457",{"2":{"112":3}}],["7613928194996743",{"2":{"112":1}}],["7633729952892768",{"2":{"112":1}}],["76",{"2":{"94":1}}],["76f85450",{"2":{"12":1}}],["7\\tδt",{"2":{"62":1}}],["7189623589035268",{"2":{"112":3}}],["71875",{"2":{"97":4,"98":4}}],["7128292402547007",{"2":{"112":3}}],["7154942060884073",{"2":{"112":1}}],["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}}],["7064289741897443",{"2":{"112":3}}],["7077642554434797",{"2":{"112":1}}],["7070415404350842",{"2":{"112":1}}],["7002697039880594",{"2":{"112":1}}],["700de1a5",{"2":{"12":1}}],["7034ab61",{"2":{"12":1}}],["787054128421903",{"2":{"112":3}}],["7852946444026969",{"2":{"112":1}}],["781138941703361",{"2":{"112":3}}],["78125",{"2":{"97":4,"98":4}}],["781d530d",{"2":{"12":1}}],["78\\titertime",{"2":{"62":2}}],["78b55507",{"2":{"12":1}}],["7869d1d1",{"2":{"12":1}}],["7325054853131627",{"2":{"112":1}}],["7398073162351184",{"2":{"112":1}}],["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}}],["7931619925313242",{"2":{"112":3}}],["7935311171092936",{"2":{"112":1}}],["7994309843333527",{"2":{"112":3}}],["795328987439447",{"2":{"112":1}}],["79098fc4",{"2":{"12":1}}],["79e6a3ab",{"2":{"12":1}}],["7700058000739514",{"2":{"112":3}}],["775446647182436",{"2":{"112":3}}],["7772387811463938",{"2":{"112":1}}],["7746737928097651",{"2":{"112":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}}],["7290632367754313",{"2":{"112":3}}],["724782882886711",{"2":{"112":3}}],["7207432202119071",{"2":{"112":1}}],["720378\\tδt",{"2":{"29":1}}],["7288355734403862",{"2":{"112":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,"94":1,"109":1}}],["520066837125464",{"2":{"112":3}}],["5271355479570685",{"2":{"112":3}}],["5227159953013423",{"2":{"112":1}}],["52e1d378",{"2":{"12":1}}],["5νϵ",{"2":{"109":1}}],["586",{"2":{"147":1}}],["5864006138472054",{"2":{"112":3}}],["5876193256254362",{"2":{"112":3}}],["58",{"2":{"86":1}}],["583124\\tδt",{"2":{"29":1}}],["5703936018276079",{"2":{"112":1}}],["5768681528721296",{"2":{"112":1}}],["57",{"2":{"86":2}}],["5789e2e9",{"2":{"12":1}}],["5\\tδt",{"2":{"62":1}}],["5\\titertime",{"2":{"29":1}}],["5541061496562956",{"2":{"112":1}}],["5509315902550779",{"2":{"112":1}}],["55",{"2":{"86":1,"147":1}}],["5570665390686788e",{"2":{"69":1}}],["55\\titertime",{"2":{"58":1}}],["559328eb",{"2":{"12":1}}],["5132283960223627",{"2":{"112":3}}],["51",{"2":{"22":1,"24":1}}],["510215fc",{"2":{"12":1}}],["5n",{"2":{"15":1,"18":1,"49":1,"51":1,"55":1,"57":1}}],["5903389547459356",{"2":{"112":1}}],["59375",{"2":{"97":4,"98":4}}],["59",{"2":{"12":1,"86":1}}],["59f7168a",{"2":{"12":1}}],["5630606239332288",{"2":{"112":3}}],["5635735249103916",{"2":{"112":1}}],["5631534762823838",{"2":{"112":3}}],["5625",{"2":{"97":4,"98":4}}],["56",{"2":{"86":1}}],["56ddb016",{"2":{"12":1}}],["56f22d72",{"2":{"12":1}}],["547473508864641e",{"2":{"97":1}}],["547993426e",{"2":{"94":1}}],["548380615e",{"2":{"94":1}}],["548379943e",{"2":{"94":1}}],["54",{"2":{"12":1}}],["5432bcbf",{"2":{"12":1}}],["5+0",{"2":{"12":2}}],["5+1",{"2":{"12":1}}],["506658733142349",{"2":{"112":3}}],["50778915727536",{"2":{"112":3}}],["508169955156378",{"2":{"112":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}}],["5094113",{"2":{"58":3}}],["5094086",{"2":{"58":3}}],["5092935",{"2":{"58":3}}],["50929356",{"2":{"58":3}}],["5091811",{"2":{"58":3}}],["509176",{"2":{"58":3}}],["5003941254461775",{"2":{"112":3}}],["5000000000000001",{"2":{"94":2}}],["5000000000000002",{"2":{"94":2}}],["5000000000000003",{"2":{"94":6}}],["5000000000000056",{"2":{"94":4}}],["500",{"2":{"22":1,"24":1,"52":1,"54":1,"92":1,"94":2,"112":1}}],["50",{"2":{"12":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"58":2,"59":1,"62":2,"63":2}}],["5c2747f8",{"2":{"12":1}}],["5c1252a2",{"2":{"12":1}}],["5370511513252602",{"2":{"112":3}}],["5385623982276309",{"2":{"112":1}}],["5382767313536597",{"2":{"112":1}}],["5351040570757701",{"2":{"112":3}}],["53125",{"2":{"97":4,"98":4}}],["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":35,"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,"94":136,"97":140,"98":132,"109":2,"121":1,"139":1}}],["63",{"2":{"147":1}}],["63658584761423",{"2":{"112":3}}],["6364067141130287",{"2":{"112":1}}],["6350966627306861",{"2":{"112":3}}],["63c18a36",{"2":{"12":1}}],["659205979536996",{"2":{"112":3}}],["653648807156927",{"2":{"112":3}}],["6550621306180234",{"2":{"112":3}}],["65625",{"2":{"97":4,"98":4}}],["65257c39",{"2":{"12":1}}],["6\\titertime",{"2":{"29":3}}],["6\\tδt",{"2":{"16":3,"62":1}}],["6075180742834505",{"2":{"112":3}}],["605135979844783",{"2":{"112":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+0",{"2":{"12":2}}],["6+1",{"2":{"12":3}}],["6e34b625",{"2":{"12":1}}],["6c6a2e73",{"2":{"12":1}}],["6785458556973847",{"2":{"112":3}}],["674841850453165",{"2":{"112":3}}],["6792423852120266",{"2":{"112":3}}],["6734710804676622",{"2":{"112":3}}],["6774858504104891",{"2":{"112":3}}],["6755414259048258",{"2":{"112":3}}],["6751625511510397",{"2":{"112":4}}],["67",{"2":{"12":1}}],["67c07d97",{"2":{"12":1}}],["69",{"2":{"147":1}}],["699812752232953",{"2":{"112":3}}],["699a6c99",{"2":{"12":1}}],["6930364840785233",{"2":{"112":3}}],["69024149",{"2":{"12":1}}],["69de0a69",{"2":{"12":1}}],["692b3bcd",{"2":{"12":1}}],["6fe1bfb0",{"2":{"12":1}}],["6861592819208227",{"2":{"112":3}}],["680425708364815",{"2":{"112":3}}],["6825094453029721",{"2":{"112":3}}],["682c06a0",{"2":{"12":1}}],["6838407372342077",{"2":{"112":3}}],["6846847916503316",{"2":{"112":3}}],["6851038391419311",{"2":{"112":3}}],["6853699779780761",{"2":{"112":3}}],["685483682807895",{"2":{"112":3}}],["6858371719768287",{"2":{"112":4}}],["6885635783211306",{"2":{"112":4}}],["68865585100403",{"2":{"94":1}}],["6875",{"2":{"97":4,"98":4}}],["68eda718",{"2":{"12":1}}],["6189002847950568",{"2":{"112":1}}],["6167849656697022",{"2":{"112":3}}],["619435700313733",{"2":{"55":1,"57":1}}],["615f187c",{"2":{"12":1}}],["61eb1bfa",{"2":{"12":1}}],["669843653298168",{"2":{"112":3}}],["664618686922103",{"2":{"112":3}}],["6683134884111677",{"2":{"112":3}}],["66fc600b",{"2":{"12":1}}],["663a7486",{"2":{"12":1}}],["66dad0bd",{"2":{"12":1}}],["6b7a57c9",{"2":{"12":1}}],["6add18c4",{"2":{"12":1}}],["625646198125405",{"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":24,"15":2,"18":2,"19":5,"21":5,"49":3,"51":3,"55":1,"57":1,"69":3,"94":17,"109":2,"121":3}}],["6479937698880462",{"2":{"112":3}}],["647866c9",{"2":{"12":1}}],["6422895086948026",{"2":{"112":3}}],["6422537978024514",{"2":{"112":3}}],["6480256803931433",{"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}}],["64",{"2":{"11":3,"52":1,"54":1,"55":1,"57":1,"58":3,"69":1,"70":1,"94":1,"97":1,"98":1}}],["×",{"2":{"11":1}}],["4800187689780997",{"2":{"112":3}}],["48062228",{"2":{"12":1}}],["4837458594845088",{"2":{"112":3}}],["4889102867335025",{"2":{"112":3}}],["48131272172605316",{"2":{"112":1}}],["4th",{"2":{"112":1,"138":1,"139":1}}],["4944680861051314",{"2":{"112":3}}],["4936027234603247",{"2":{"112":1}}],["49999999999999445",{"2":{"94":4}}],["49999999999999967",{"2":{"94":6}}],["4999999999999999",{"2":{"94":2}}],["4999999999999998",{"2":{"94":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}}],["41973786120245304",{"2":{"112":3}}],["41724563080337473",{"2":{"112":3}}],["417292500615618e",{"2":{"69":1}}],["4105067325565303",{"2":{"112":1}}],["4151166658241937",{"2":{"112":3}}],["41",{"2":{"19":2,"21":2}}],["411431e0",{"2":{"12":1}}],["4\\tδt",{"2":{"16":2,"62":1}}],["4536629a",{"2":{"12":1}}],["45890023630961585",{"2":{"112":1}}],["458c3c95",{"2":{"12":1}}],["45858cf5",{"2":{"12":1}}],["4498702836520243",{"2":{"112":3}}],["44178650328015645",{"2":{"112":4}}],["44",{"2":{"86":1}}],["44cfe95a",{"2":{"12":1}}],["44+0",{"2":{"12":1}}],["4af54fe1",{"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}}],["4033514875156646",{"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}}],["4b2f31a3",{"2":{"12":1}}],["4b34888f",{"2":{"12":1}}],["4+4",{"2":{"12":1}}],["4+1",{"2":{"12":2}}],["4+0",{"2":{"12":4}}],["4e",{"2":{"94":2}}],["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}}],["46178960323405305",{"2":{"112":4}}],["46192b85",{"2":{"12":1}}],["46875",{"2":{"97":4,"98":4}}],["46729446888215564",{"2":{"112":1}}],["467",{"2":{"55":1,"57":1}}],["462407\\tδt",{"2":{"29":1}}],["4607b0f0",{"2":{"12":1}}],["46d2c3a1",{"2":{"12":1}}],["4253979590103611",{"2":{"112":3}}],["42630326330333673",{"2":{"112":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}}],["479004319370875",{"2":{"112":3}}],["47e",{"2":{"94":1}}],["47edcb42",{"2":{"12":1}}],["47",{"2":{"12":1}}],["4710194d",{"2":{"12":1}}],["4",{"2":{"11":2,"12":52,"16":1,"49":2,"51":2,"55":5,"57":4,"58":2,"69":2,"70":1,"89":1,"94":4,"97":1,"109":1,"112":30,"120":1,"121":2,"145":1,"147":1}}],["0852337491691666",{"2":{"112":1}}],["08499999999999999",{"2":{"94":4}}],["08",{"2":{"94":4}}],["08253980267461902",{"2":{"112":1}}],["082ubar",{"2":{"52":1,"54":1}}],["082447d4",{"2":{"12":1}}],["07067439363603704",{"2":{"112":1}}],["07255414846164322",{"2":{"112":1}}],["07752884716293337",{"2":{"112":1}}],["07776985332212666",{"2":{"112":1}}],["0717162458898755",{"2":{"112":1}}],["07440002612503235",{"2":{"112":3}}],["07500000000000001",{"2":{"94":4}}],["075b6546",{"2":{"12":1}}],["07",{"2":{"94":4,"109":1}}],["037579010665183425",{"2":{"112":1}}],["03488300018573105",{"2":{"112":1}}],["03948559259932328",{"2":{"112":1}}],["036963640271927826",{"2":{"112":1}}],["03633131410140703",{"2":{"112":1}}],["0368592383448486",{"2":{"112":1}}],["0368409287211739",{"2":{"112":1}}],["03622302471012847",{"2":{"112":1}}],["036007412650382",{"2":{"112":1}}],["03125",{"2":{"97":14,"98":8}}],["03",{"2":{"94":4}}],["0358913760423405",{"2":{"112":1}}],["03581805063493754",{"2":{"112":1}}],["03565465237106255",{"2":{"112":1}}],["03562880939265571",{"2":{"112":1}}],["0354254985426227",{"2":{"94":1}}],["035425498542622634",{"2":{"94":2}}],["0355e",{"2":{"94":1}}],["03550929",{"2":{"58":6}}],["035",{"2":{"94":4}}],["03535363",{"2":{"58":6}}],["030469775",{"2":{"58":6}}],["0382162612055059",{"2":{"112":1}}],["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}}],["00753879858193828",{"2":{"112":1}}],["0038900689003174543",{"2":{"112":1}}],["003946543143456883",{"2":{"94":1}}],["003946543143456876",{"2":{"94":2}}],["003967967340085e",{"2":{"69":1}}],["0033",{"2":{"62":2}}],["0032",{"2":{"62":7}}],["005",{"2":{"94":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}}],["0055448413",{"2":{"58":6}}],["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}}],["0050004385667972275",{"2":{"112":1}}],["0050000000000000044",{"2":{"94":6}}],["0050395727",{"2":{"58":3}}],["005039513",{"2":{"58":9}}],["00508821",{"2":{"58":6}}],["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}}],["006282968599569631",{"2":{"112":1}}],["0061945915",{"2":{"58":3}}],["006082356",{"2":{"58":3}}],["006082386",{"2":{"58":3}}],["0066967607",{"2":{"58":6}}],["006809652",{"2":{"58":6}}],["0013580255384598883",{"2":{"112":1}}],["0013\\tumax",{"2":{"29":1}}],["001965753158543",{"2":{"112":3}}],["0017630725463301349",{"2":{"112":1}}],["001",{"2":{"55":1,"57":1}}],["0014\\tumax",{"2":{"29":2}}],["0012\\tumax",{"2":{"29":3}}],["0011\\tumax",{"2":{"29":1}}],["002578765391583634",{"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}}],["00098\\tumax",{"2":{"29":1}}],["000",{"2":{"22":2,"24":2,"43":1,"45":1,"46":1,"48":1,"55":1,"57":1}}],["009999999999999981",{"2":{"94":2}}],["009999999999999995",{"2":{"94":8}}],["009999999999999998",{"2":{"94":4}}],["009999999999999898",{"2":{"94":6}}],["009139925",{"2":{"58":6}}],["009",{"2":{"16":1}}],["0094",{"2":{"16":1}}],["008958757",{"2":{"58":6}}],["0089",{"2":{"16":1}}],["008865534083334846",{"2":{"112":1}}],["0088",{"2":{"16":1}}],["0086",{"2":{"16":1}}],["0087",{"2":{"16":3}}],["049249035456839486",{"2":{"112":1}}],["04716839537064069",{"2":{"112":1}}],["04789472899343934",{"2":{"112":1}}],["04729660729185216",{"2":{"112":1}}],["047299176",{"2":{"58":3}}],["046684910098105145",{"2":{"112":1}}],["044779726544458685",{"2":{"112":1}}],["04411934518849587",{"2":{"112":1}}],["044257984",{"2":{"58":6}}],["04367207752067032",{"2":{"112":1}}],["04344715710435443",{"2":{"112":1}}],["043240547",{"2":{"58":3}}],["04564030658404039",{"2":{"112":1}}],["045",{"2":{"94":4}}],["04064697",{"2":{"58":6}}],["04121679",{"2":{"58":6}}],["04",{"2":{"16":1,"94":4}}],["05038676185689626",{"2":{"112":1}}],["05030101815559454",{"2":{"112":1}}],["05886002218388251",{"2":{"112":1}}],["05823500",{"2":{"12":1}}],["05195426801286364",{"2":{"112":1}}],["05181044",{"2":{"12":1}}],["05988085958027444",{"2":{"112":1}}],["0541841942728225",{"2":{"112":1}}],["05534496e",{"2":{"94":1}}],["055",{"2":{"17":2,"94":4}}],["05\\tumax",{"2":{"16":10}}],["05",{"2":{"16":1,"18":1,"19":1,"21":1,"66":1,"68":1,"94":4,"109":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}}],["06465938047302927",{"2":{"112":1}}],["0639660324794772",{"2":{"112":1}}],["0625",{"2":{"97":80,"98":66}}],["06283367774273789",{"2":{"94":1}}],["06283367774273778",{"2":{"94":2}}],["0657005977508805",{"2":{"112":4}}],["065",{"2":{"94":4}}],["0656b61e",{"2":{"12":1}}],["06",{"2":{"94":4}}],["09438466632096755",{"2":{"112":1}}],["09048860694780399",{"2":{"112":1}}],["09783809929702272",{"2":{"112":1}}],["09788696740969302",{"2":{"94":1}}],["09788696740969285",{"2":{"94":2}}],["09162669561786173",{"2":{"112":1}}],["0958992233884258",{"2":{"112":1}}],["09375",{"2":{"97":4,"98":4}}],["09",{"2":{"94":2}}],["09ab397b",{"2":{"12":1}}],["099dac27",{"2":{"12":1}}],["0bca4576",{"2":{"12":1}}],["0e",{"2":{"94":7}}],["0e3",{"2":{"69":1,"70":1}}],["0e77f7df",{"2":{"12":1}}],["0e44f5e4",{"2":{"12":1}}],["0",{"2":{"11":2,"12":121,"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,"92":5,"94":1592,"97":368,"98":739,"109":3,"112":415,"121":11,"122":1,"133":2,"134":1,"136":1}}],["022154757023338023",{"2":{"112":1}}],["027321933899741135",{"2":{"112":1}}],["027974367",{"2":{"58":6}}],["020939295360611808",{"2":{"112":1}}],["020679772",{"2":{"58":6}}],["023211947861768473",{"2":{"112":1}}],["023721384830430667",{"2":{"112":1}}],["023079693",{"2":{"58":6}}],["02540851001379519",{"2":{"112":1}}],["025",{"2":{"94":4}}],["02552703",{"2":{"58":6}}],["021645322",{"2":{"58":6}}],["029704452",{"2":{"58":6}}],["024263948",{"2":{"58":6}}],["0269842",{"2":{"58":6}}],["026",{"2":{"29":1}}],["02c8fc9c",{"2":{"12":1}}],["02",{"2":{"11":1,"94":4}}],["019907432510493542",{"2":{"112":1}}],["019078978590910903",{"2":{"112":1}}],["019026697",{"2":{"58":6}}],["01797602011337264",{"2":{"112":1}}],["0170838011072034",{"2":{"112":1}}],["01812500342619521",{"2":{"112":1}}],["018108013501957024",{"2":{"112":1}}],["01847153724798791",{"2":{"112":1}}],["01809997695775903",{"2":{"112":1}}],["01827985",{"2":{"58":6}}],["014947618503139795",{"2":{"112":1}}],["010962759787617392",{"2":{"112":1}}],["01020691087682567",{"2":{"112":1}}],["010000000000000005",{"2":{"94":2}}],["010000000000000002",{"2":{"94":12}}],["010000000000000009",{"2":{"94":42}}],["012674494032257701",{"2":{"112":1}}],["012699036170763192",{"2":{"112":1}}],["012443154773298683",{"2":{"112":1}}],["012448758810299665",{"2":{"112":1}}],["012",{"2":{"58":1}}],["012ubar",{"2":{"52":1,"54":1}}],["01\\tumax",{"2":{"58":2}}],["011586923053397053",{"2":{"112":1}}],["011563554",{"2":{"58":6}}],["011",{"2":{"62":1}}],["011266053",{"2":{"58":6}}],["01650694",{"2":{"58":6}}],["013634784336917961",{"2":{"112":1}}],["01313197193049889",{"2":{"112":1}}],["013198507566411128",{"2":{"112":1}}],["013948554503623277",{"2":{"112":1}}],["013987184",{"2":{"58":6}}],["0135733485",{"2":{"58":6}}],["013be700",{"2":{"12":1}}],["015770597371044366",{"2":{"94":1}}],["01577059737104434",{"2":{"94":2}}],["01563057410408e",{"2":{"69":1}}],["0159266",{"2":{"58":6}}],["015",{"2":{"29":7,"58":1,"94":4}}],["01",{"2":{"11":1,"25":1,"27":1,"60":1,"61":1,"66":1,"68":1,"69":1,"70":1,"92":1,"94":12}}],["233",{"2":{"147":1}}],["231",{"2":{"147":1}}],["2307",{"2":{"147":1}}],["2381bf8a",{"2":{"12":1}}],["2βu0−",{"2":{"135":1}}],["2|",{"2":{"126":1}}],["2−12",{"2":{"122":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}}],["2y",{"2":{"52":1,"54":1,"73":2,"76":2}}],["2\\titertime",{"2":{"29":1,"62":1}}],["2\\tδt",{"2":{"16":2,"62":1}}],["2nd",{"2":{"137":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,"121":2,"122":1,"130":1,"131":1}}],["2f01184e",{"2":{"12":1}}],["2+",{"2":{"109":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}}],["285",{"2":{"147":1}}],["2820420403849458",{"2":{"112":1}}],["28931131157749934",{"2":{"112":3}}],["288196796069032",{"2":{"112":3}}],["28125",{"2":{"97":4,"98":4}}],["28",{"2":{"12":1}}],["28d57a85",{"2":{"12":1}}],["2803e5a7",{"2":{"12":1}}],["24453144804547416",{"2":{"112":1}}],["244e2a9f",{"2":{"12":1}}],["24090644121751478",{"2":{"112":1}}],["24738663991227255",{"2":{"94":1}}],["24738663991227286",{"2":{"94":2}}],["24e",{"2":{"94":1}}],["245092511e",{"2":{"94":1}}],["24\\titertime",{"2":{"58":1}}],["24y",{"2":{"22":1,"24":1,"25":1,"27":1}}],["24",{"2":{"12":1,"16":1,"18":1}}],["26217513977719487",{"2":{"112":1}}],["2670980496661108",{"2":{"112":1}}],["26542635844527523",{"2":{"112":3}}],["26",{"2":{"12":2}}],["293",{"2":{"147":1}}],["298",{"2":{"58":1,"121":1}}],["29816b5a",{"2":{"12":1}}],["29671655541944714",{"2":{"112":4}}],["296",{"2":{"58":4,"121":2}}],["295",{"2":{"58":4,"121":2}}],["2913bbd2",{"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":{"131":1}}],["21−xi1+1",{"2":{"131":1}}],["21−ψi+h1+h2−ψi−h1+h2xi1+1",{"2":{"131":1}}],["21089704909833185",{"2":{"112":3}}],["2143509894610831",{"2":{"112":1}}],["21754709879846393",{"2":{"112":3}}],["216847\\tδt",{"2":{"29":1}}],["21216c6a",{"2":{"12":1}}],["21",{"2":{"12":6,"55":1,"57":1,"131":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}}],["2254762160519092",{"2":{"112":1}}],["22742471892408855",{"2":{"112":1}}],["22677084776148035",{"2":{"112":3}}],["22322206e",{"2":{"94":1}}],["22cec73e",{"2":{"12":1}}],["22",{"2":{"12":3,"52":1,"54":1,"131":1,"142":2}}],["2b5f629d",{"2":{"12":1}}],["2762367848002056",{"2":{"112":1}}],["276daf66",{"2":{"12":1}}],["27+1",{"2":{"12":1}}],["2702e6a9",{"2":{"12":1}}],["2792f1a3",{"2":{"12":1}}],["27",{"2":{"12":2}}],["27a7e980",{"2":{"12":1}}],["257",{"2":{"147":1}}],["259",{"2":{"147":1}}],["2510489798819866",{"2":{"112":3}}],["2517644315667876",{"2":{"112":3}}],["25276676778988794",{"2":{"112":1}}],["25073137475113755",{"2":{"112":3}}],["250",{"2":{"52":2,"54":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}}],["208021775307386",{"2":{"112":3}}],["206449029719436",{"2":{"112":1}}],["2061158077915117",{"2":{"112":3}}],["204",{"2":{"112":2}}],["20435554e",{"2":{"94":2}}],["2013",{"2":{"147":1}}],["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}}],["2005661189336766",{"2":{"112":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,"94":3}}],["2022",{"2":{"147":2}}],["202317958546451",{"2":{"112":3}}],["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":63,"15":8,"16":1,"17":12,"18":17,"19":10,"21":10,"22":1,"24":1,"25":1,"27":1,"28":1,"29":5,"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,"92":5,"94":24,"97":8,"98":14,"100":1,"109":4,"112":54,"121":3,"122":3,"123":1,"124":2,"134":1,"138":1,"142":3}}],["kurz",{"2":{"147":1}}],["kutta",{"0":{"136":1},"1":{"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1},"2":{"43":1,"133":4,"136":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":{"136":1}}],["known",{"2":{"95":2,"127":1}}],["kronecker",{"2":{"122":1}}],["kp",{"2":{"118":2}}],["ki=f",{"2":{"136":1}}],["ki=14∑α",{"2":{"109":1}}],["ki=18∑α",{"2":{"109":1}}],["kinematic",{"2":{"100":1}}],["kinetic",{"0":{"92":1,"106":1,"129":1},"2":{"8":2,"106":1,"109":7,"129":1}}],["kind",{"2":{"9":1}}],["kdk",{"2":{"109":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,"89":1,"109":4,"111":2,"115":6,"121":7,"132":2,"133":1,"137":11,"138":4,"139":3,"140":11,"141":4,"142":10,"143":3,"144":4,"145":1}}],["k^",{"2":{"55":2,"57":2}}],["ksub",{"2":{"55":5,"57":5}}],["k",{"2":{"37":1,"55":9,"57":9,"109":2,"121":1,"122":2,"124":1,"145":2}}],["ketcheson",{"2":{"136":1}}],["ke",{"2":{"109":1}}],["keyword",{"2":{"109":1,"117":1,"121":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":{"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":{"109":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,"109":7,"122":1}}],["q=",{"2":{"135":1}}],["q=−12∑α",{"2":{"109":1}}],["q",{"2":{"109":3,"147":1}}],["quadrature",{"2":{"123":2,"131":1,"141":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,"22":1,"25":1,"43":1,"52":1,"55":1,"66":1}}],["quot",{"0":{"144":2},"2":{"0":2,"5":2,"9":4,"43":2,"72":4,"115":2,"121":10,"135":2}}],["qoi",{"2":{"12":1}}],["qfield",{"2":{"8":1,"109":2}}],["u−1+δtf",{"2":{"135":1}}],["u−1",{"2":{"134":2,"135":1}}],["u−1=u",{"2":{"134":1}}],["uα",{"2":{"123":1}}],["uαuβ",{"2":{"103":1,"123":2,"125":1}}],["ufunc",{"2":{"118":3}}],["u0−",{"2":{"134":1}}],["u0=u",{"2":{"133":1,"134":1,"136":2}}],["u0",{"2":{"112":4,"134":2,"135":1,"136":1}}],["uh=",{"2":{"124":1}}],["uh",{"2":{"112":2,"126":2,"127":3}}],["ui+2hβα",{"2":{"123":1}}],["ui+hαα",{"2":{"109":1}}],["ui+hαα+ui−hαα",{"2":{"109":1}}],["ui−1",{"2":{"136":1}}],["ui−2hβα",{"2":{"123":1}}],["ui−hαα",{"2":{"109":1}}],["uiα",{"2":{"123":2}}],["uijk",{"2":{"122":1}}],["uij",{"2":{"122":1}}],["ui",{"2":{"122":1,"136":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":{"135":1}}],["u=v−δt",{"2":{"134":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":{"145":1}}],["utils",{"0":{"145":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,"121":2,"127":1,"136":1}}],["upper",{"2":{"58":1,"59":1,"145":1}}],["updated",{"2":{"86":3,"121":1}}],["update",{"2":{"58":1,"59":1,"86":2,"121":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":{"133":1,"136":1}}],["un",{"2":{"133":1}}],["un≈u",{"2":{"133":1}}],["unless",{"2":{"127":1}}],["unknowns",{"2":{"123":1}}],["unknown",{"2":{"123":1,"127":2}}],["unnecessary",{"2":{"110":1}}],["underlying",{"2":{"96":1}}],["understand",{"2":{"91":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,"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,"120":3,"121":1,"127":2,"133":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":{"58":4,"87":1,"111":2,"133":1,"137":13,"138":6,"139":3,"140":11,"141":4,"142":10,"143":3,"144":4}}],["units",{"2":{"126":1}}],["unit",{"2":{"100":1,"109":3,"122":1}}],["unitrange",{"2":{"58":18,"94":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,"92":9,"94":7,"97":8,"98":7,"99":3,"102":1,"109":39,"111":5,"112":6,"113":3,"115":13,"116":3,"118":2,"120":5,"122":3,"124":3,"133":5,"134":3,"136":2}}],["us=u",{"2":{"136":1}}],["usually",{"2":{"90":1,"112":1,"115":1}}],["us",{"2":{"69":1,"136":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,"120":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,"92":1,"94":1,"109":2,"110":2,"111":1,"112":2,"116":1,"120":2,"121":1,"123":3,"127":2,"134":1,"136":1}}],["user",{"2":{"93":1,"110":1}}],["used",{"2":{"43":2,"44":1,"84":1,"89":1,"90":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,"134":1,"136":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,"91":2,"93":1,"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":{"109":1,"147":1}}],["html",{"2":{"109":1}}],["https",{"2":{"11":1,"83":1,"109":1,"147":1}}],["hc2cfdftv",{"2":{"94":2}}],["hc2c",{"2":{"94":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,"120":1}}],["however",{"2":{"86":1,"90":1,"91":1,"93":1,"96":1,"127":1,"129":1,"133":1,"134":1}}],["how",{"2":{"43":2,"109":1,"112":2,"121":1,"123":2}}],["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,"121":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":{"93":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":{"142":1}}],["heun33",{"2":{"136":1,"142":2}}],["hem5",{"2":{"136":1,"139":1}}],["hem3bs",{"2":{"136":1,"139":2}}],["hem3",{"2":{"136":1,"139":1}}],["heated",{"2":{"147":1}}],["heatmap",{"2":{"42":1,"121":1}}],["heavier",{"2":{"72":1}}],["header",{"2":{"7":1}}],["here",{"2":{"22":1,"43":1,"46":1,"77":1,"83":1,"112":2,"134":1,"135":1}}],["hereby",{"2":{"9":1}}],["hairer",{"2":{"139":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":{"139":1},"2":{"22":1,"25":1,"43":1,"110":3}}],["have",{"2":{"12":1,"89":1,"94":1,"101":1,"120":1,"121":1,"126":2,"127":1}}],["handle",{"2":{"93":1}}],["hand",{"0":{"94":1},"2":{"8":2,"94":9,"95":1,"109":2,"111":1,"112":3,"113":11,"134":2}}],["has",{"2":{"7":1,"69":1,"86":1,"87":1,"89":3,"90":1,"92":1,"94":1,"112":1,"115":2,"134":1}}],["+θyd",{"2":{"134":1}}],["+θf",{"2":{"134":2}}],["+θ",{"2":{"134":1}}],["+α−1c",{"2":{"134":2}}],["+o",{"2":{"133":1,"136":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,"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,"92":1,"94":17,"98":1,"116":3,"121":1,"134":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":{"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,"94":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,"92":17,"94":39,"97":32,"98":33,"109":5,"112":17,"115":2,"116":2,"120":1,"121":6,"132":2,"133":2,"134":2}}],["n∈",{"2":{"136":1}}],["nicholson",{"2":{"142":1}}],["nicolson",{"0":{"134":1},"2":{"133":1,"134":3}}],["niter",{"2":{"86":3}}],["n−1",{"2":{"133":1}}],["nα−1",{"2":{"122":1}}],["nα−12",{"2":{"122":1}}],["n1",{"2":{"122":1}}],["n1fv",{"2":{"94":3}}],["n=",{"2":{"122":1}}],["n=0",{"2":{"116":2,"133":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":{"136":1,"144":2}}],["nssp33",{"2":{"136":1,"144":2}}],["nssp32",{"2":{"136":1,"144":2}}],["nssp21",{"2":{"136":1,"144":2}}],["nsee",{"2":{"116":1}}],["nsample",{"2":{"87":3}}],["nstep",{"2":{"86":1,"92":2}}],["nsubstep",{"2":{"86":2}}],["ntrajectory",{"2":{"86":1}}],["ntuple",{"2":{"58":2,"69":1,"70":1,"120":1}}],["n^",{"2":{"69":2,"70":2}}],["npoint",{"2":{"121":1,"145":2}}],["np",{"2":{"58":6,"94":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,"94":1,"97":1,"98":1,"101":1,"115":1,"116":16,"120":4,"121":2,"133":3,"136":2,"145":3,"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,"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,"120":2,"122":1,"132":3,"136":1,"145":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,"94":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,"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":{"94":1}}],["noiselevel",{"2":{"86":1}}],["noise",{"2":{"55":1}}],["now",{"2":{"43":1,"92":1,"94":1,"123":1,"136":1}}],["nonuniform",{"2":{"116":3,"145":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":{"144":1},"2":{"43":1,"91":3,"92":1,"93":1,"94":2,"95":1,"98":1,"99":1,"115":2,"117":2,"126":1,"127":1,"132":2,"133":3}}],["noninfringement",{"2":{"9":1}}],["nodejs",{"2":{"12":1}}],["no",{"2":{"9":1,"95":1,"103":1,"111":1,"115":1,"136":2}}],["notation",{"2":{"103":1,"122":3,"126":1}}],["noting",{"2":{"130":1}}],["notify",{"2":{"58":1,"59":1}}],["notice",{"2":{"9":2,"94":1}}],["note",{"2":{"43":3,"44":1,"55":1,"82":1,"92":1,"97":1,"103":1,"107":1,"109":1,"115":1,"116":2,"120":1,"122":1,"123":2,"134":1,"136":2,"141":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,"92":1,"93":1,"94":8,"97":3,"98":7,"109":2,"112":1,"113":1,"115":1,"120":1,"121":2,"133":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,"93":1,"94":1,"95":1,"97":1,"99":2,"116":1,"124":1,"127":1,"129":1,"133":2,"141":1,"142":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,"94":1,"100":1,"101":1,"105":1,"112":2,"113":3,"133":1,"147":3}}],["names",{"2":{"120":1}}],["namedtuple",{"2":{"58":15,"88":1,"109":1,"111":1,"120":1,"121":3,"145":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,"134":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":10,"85":7,"86":16,"87":9,"88":3}}],["near",{"2":{"22":1,"43":1,"46":1}}],["newton",{"2":{"133":1,"136":3}}],["new",{"2":{"12":1,"22":1,"25":1,"86":2,"87":1,"95":1,"145":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,"91":1,"95":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":{"127":1}}],["dymdt",{"2":{"127":1,"133":1,"136":2}}],["dsso2",{"2":{"136":1,"143":1}}],["dsrkso2",{"2":{"143":1}}],["dsrk",{"0":{"143":1}}],["dsrk3",{"2":{"136":1,"143":2}}],["dsrk2",{"2":{"136":1,"143":2}}],["dv+yd",{"2":{"134":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":{"134":1}}],["duh+yd",{"2":{"126":1}}],["duhdt=−c",{"2":{"126":1}}],["duhdt=",{"2":{"112":1,"127":1}}],["du",{"2":{"94":4,"112":4}}],["dual",{"2":{"94":1}}],["dudt",{"2":{"94":5,"113":4}}],["dudt=f",{"2":{"83":1,"112":1,"133":1}}],["duplicated",{"2":{"93":1,"94":3}}],["du¯dt=f",{"2":{"83":1}}],["due",{"2":{"28":1,"32":1,"136":1}}],["dns",{"2":{"83":2,"85":6,"86":2,"88":4,"95":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,"122":3,"123":1,"126":1,"134":1,"147":2}}],["d6f4376e",{"2":{"12":1}}],["dftw",{"2":{"94":1}}],["dft",{"2":{"94":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":{"123":1,"125":1}}],["ddt1|o|∫oudω=1|o|∫∂o",{"2":{"101":1}}],["ddudt",{"2":{"94":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":{"136":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":{"136":1}}],["dormand",{"2":{"137":1}}],["dopri6",{"2":{"136":1,"137":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":{"93":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,"122":2,"133":1}}],["do",{"2":{"9":1,"43":1,"49":2,"51":2,"55":3,"57":3,"58":2,"59":2,"93":1,"121":1}}],["docopy",{"2":{"120":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":{"138":1}}],["diagonal",{"2":{"126":2}}],["diag",{"2":{"111":1}}],["diameter",{"2":{"15":1,"18":1,"19":1,"21":1}}],["dit",{"2":{"94":3}}],["divide",{"2":{"133":1}}],["divided",{"2":{"43":1,"101":1,"126":1,"136":1}}],["dividing",{"2":{"123":1}}],["divoftensor",{"2":{"109":1}}],["div",{"2":{"98":7,"109":1}}],["divergence",{"2":{"8":2,"91":2,"97":3,"98":4,"99":2,"100":1,"103":2,"109":5,"111":3,"118":1,"123":1,"126":2,"127":4,"133":2,"134":2,"135":1,"136":2}}],["digits",{"2":{"43":1}}],["dimensionless",{"2":{"117":1,"132":1}}],["dimensions",{"2":{"109":1,"122":1}}],["dimension",{"2":{"58":12,"87":8,"94":2,"97":3,"98":2,"100":1,"109":3,"115":1,"116":4,"122":2,"125":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,"123":1}}],["diffusion",{"2":{"8":3,"97":6,"99":2,"109":8,"120":1,"126":2,"134":2}}],["differences",{"2":{"131":1}}],["difference",{"2":{"123":1,"134":1}}],["differentiability",{"2":{"112":1}}],["differentiable",{"2":{"90":1,"91":4,"92":2,"109":21,"111":3,"115":3,"147":1}}],["differentiation",{"0":{"91":1,"93":1},"1":{"92":1,"94":1}}],["differentiating",{"0":{"90":1},"1":{"91":1,"92":1,"93":1,"94":1},"2":{"94":1}}],["differentiated",{"2":{"133":1}}],["differentiate",{"2":{"86":1,"92":1,"94":2}}],["differentially",{"2":{"147":1}}],["differentialequations",{"2":{"112":1,"133":1}}],["differential",{"2":{"43":1,"112":1,"133":1}}],["different",{"2":{"43":5,"62":1,"64":1,"69":1,"98":1,"110":2,"129":1}}],["diffeqbase",{"2":{"12":1}}],["diffrules",{"2":{"12":1}}],["diffresults",{"2":{"12":1}}],["discussed",{"2":{"112":1}}],["discretize",{"2":{"133":1}}],["discretized",{"2":{"87":1,"133":2}}],["discretizing",{"2":{"127":1}}],["discretization",{"0":{"122":1,"123":1,"125":1,"133":1},"1":{"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1},"2":{"101":1,"122":2,"125":4,"135":1,"136":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,"109":1,"111":1,"112":1,"122":2,"123":4,"126":3,"127":8,"131":1,"133":3,"136":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":{"121":3}}],["displayupdates",{"2":{"86":2,"121":1}}],["displayref",{"2":{"86":1}}],["displayed",{"2":{"77":1,"121":2}}],["displayfig",{"2":{"29":2,"31":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":{"138":2,"141":1}}],["dirichlet",{"2":{"43":1,"98":1,"102":1,"115":1,"127":2,"133":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,"121":1}}],["directly",{"2":{"112":1,"127":1,"133":1}}],["direction",{"2":{"109":1,"116":6,"117":1,"132":1}}],["directbuf",{"2":{"94":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,"94":7,"95":1,"110":1,"111":3,"147":2}}],["deep",{"2":{"147":1}}],["details",{"2":{"135":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":{"94":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":{"89":1,"110":1}}],["degrees",{"2":{"87":1,"99":2,"123":1}}],["decomposition",{"2":{"111":1,"134":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":{"134":1}}],["definition",{"2":{"133":2}}],["definitions",{"2":{"122":1}}],["defined",{"2":{"93":1,"106":1,"107":1,"112":1,"121":1,"123":1,"129":1,"130":1,"131":1,"133":1,"134":1}}],["define",{"2":{"39":1,"58":2,"94":1,"122":1,"123":1,"130":1,"133":1}}],["definesingletons",{"2":{"12":1}}],["defaults",{"2":{"117":1}}],["default",{"2":{"3":1,"8":1,"11":1,"33":1,"36":1,"43":2,"90":1,"91":1,"92":1,"94":1,"111":2,"112":1,"121":3}}],["deviation",{"2":{"145":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":{"58":1,"98":1}}],["dependent",{"2":{"147":1}}],["dependencies",{"2":{"5":1,"82":1}}],["depended",{"2":{"7":1}}],["depends",{"2":{"5":1}}],["mte22",{"2":{"136":1,"142":1}}],["mvi+ym",{"2":{"136":1}}],["mv~+ym",{"2":{"135":1}}],["mv¯=0",{"2":{"83":1}}],["m",{"2":{"83":3,"84":1,"98":2,"109":2,"126":1,"127":1,"134":1,"135":1,"147":5}}],["mp4",{"2":{"60":1,"61":1,"64":1,"65":1,"121":1}}],["mu0+ym",{"2":{"136":1}}],["mu+ym=0",{"2":{"133":1}}],["muh+ym=0",{"2":{"126":1}}],["mutation",{"2":{"91":1,"93":1}}],["mutating",{"2":{"91":2,"92":1,"93":2,"94":4,"133":2}}],["must",{"2":{"87":1,"91":1,"93":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,"89":1,"109":1,"111":1,"121":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,"121":1}}],["mkl",{"2":{"12":1}}],["m`",{"2":{"12":1}}],["mbedtls",{"2":{"12":1}}],["mmap",{"2":{"12":1}}],["miscellaneous",{"0":{"142":1}}],["missings",{"2":{"12":1}}],["midpoint",{"2":{"142":1}}],["mid22",{"2":{"136":1,"142":1}}],["mid",{"2":{"123":2,"131":1}}],["minimal",{"2":{"142":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,"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":{"93":1}}],["metal",{"2":{"89":1}}],["methods",{"0":{"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1},"1":{"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1},"2":{"133":2,"134":2,"136":2,"147":4}}],["method",{"0":{"134":1,"135":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,"92":3,"94":1,"120":2,"133":14,"134":2,"135":2,"136":6,"142":2}}],["meaning",{"2":{"93":1}}],["means",{"2":{"90":1,"123":1}}],["mean",{"2":{"55":1,"57":1,"86":1,"145":1}}],["meanplot",{"2":{"55":2,"57":2}}],["memory",{"2":{"43":1,"91":1,"109":1,"116":2,"136":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,"123":2,"125":1,"126":2,"127":3,"132":1}}],["more",{"2":{"102":1,"112":2}}],["motions",{"2":{"95":2}}],["most",{"2":{"90":2,"91":1,"93":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,"58":6,"83":3,"84":2,"86":3,"87":3,"94":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,"90":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":{"145":1}}],["mass",{"2":{"100":1,"123":1,"125":1,"126":2,"133":5}}],["margin",{"2":{"145":1}}],["marks",{"2":{"91":1}}],["marked",{"2":{"12":1}}],["markdown",{"2":{"12":1}}],["markdownast",{"2":{"12":1}}],["major",{"2":{"124":2}}],["made",{"2":{"89":1,"123":1,"134":1}}],["maxiter",{"2":{"111":1,"133":1,"136":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,"58":4,"69":1}}],["make",{"2":{"66":1,"89":1,"91":1,"92":1,"94":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,"121":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,"95":2,"110":1,"120":1,"133":2,"136":1}}],["many",{"2":{"91":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,"136":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":{"126":1},"2":{"8":1,"60":1,"64":1,"94":2,"96":3,"97":5,"98":5,"99":13,"110":1,"111":3,"126":4,"127":2,"134":3,"136":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":{"95":2}}],["small",{"2":{"43":1}}],["s^2",{"2":{"137":1}}],["sdirk34",{"2":{"136":1,"138":1}}],["ssp43",{"2":{"136":1,"137":2}}],["ssp42",{"2":{"136":1,"137":2}}],["ssp33",{"2":{"136":1,"137":2}}],["ssp22",{"2":{"136":1,"137":2}}],["ssp104",{"2":{"136":1,"137":2}}],["ssp",{"0":{"144":1},"2":{"136":1,"137":2,"138":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":{"94":1}}],["slow",{"2":{"91":1}}],["slip",{"2":{"111":1,"115":1}}],["s2+r2",{"2":{"109":2}}],["s",{"2":{"93":2,"97":1,"109":1,"116":4,"121":6,"136":4,"137":4,"138":2,"143":3,"147":2}}],["squares",{"2":{"129":1}}],["squared",{"2":{"86":1,"109":1}}],["sqrt",{"2":{"55":1,"57":1,"69":2,"70":2}}],["suitable",{"2":{"134":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,"123":1,"133":1,"136":1}}],["surface",{"2":{"101":1,"147":1}}],["sure",{"2":{"89":1}}],["sufficient",{"2":{"95":1}}],["supported",{"2":{"90":1,"93":1}}],["supporting",{"2":{"89":1}}],["supports",{"2":{"89":1,"132":1}}],["support",{"0":{"89":1},"2":{"110":1}}],["summing",{"2":{"129":1}}],["summand",{"2":{"121":7}}],["sum",{"2":{"52":1,"54":1,"55":1,"57":1,"58":6,"59":6,"69":2,"70":2,"92":2,"109":1,"111":1,"121":4}}],["subgrid",{"2":{"147":1}}],["substep",{"2":{"136":1}}],["substantial",{"2":{"9":1}}],["subtract",{"2":{"109":2}}],["subtypes",{"2":{"85":1}}],["sub",{"2":{"95":4,"133":2,"136":2,"147":1}}],["subject",{"2":{"9":1,"133":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,"58":1,"85":1,"109":3,"110":1,"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":{"92":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":{"142":5}}],["satisfied",{"2":{"141":1}}],["say",{"2":{"133":1}}],["san",{"2":{"121":1,"147":1}}],["sanderse",{"2":{"9":1,"136":3,"147":4}}],["samples",{"2":{"86":1,"87":1}}],["same",{"2":{"43":1,"46":1,"87":1,"92":1,"97":1,"109":1,"111":1,"115":1,"120":1,"122":1,"126":2,"129":1,"134":1,"136":1}}],["saving",{"2":{"43":2,"46":1,"58":1,"62":1}}],["saved",{"2":{"121":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,"121":2}}],["systems",{"2":{"112":1}}],["system",{"2":{"111":1,"133":2,"136":1}}],["syver",{"2":{"9":1}}],["symmetric",{"2":{"115":1,"127":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,"123":1,"135":1,"147":1}}],["symbol",{"2":{"58":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":{"138":2}}],["scheme",{"2":{"122":1,"133":1,"136":1}}],["scatterlines",{"2":{"69":1,"70":1}}],["scatter",{"2":{"55":2,"57":2}}],["scaling",{"2":{"118":1}}],["scalar",{"2":{"93":1,"97":2,"99":2,"103":1,"107":1,"108":1,"109":6,"118":1,"121":1,"122":2,"130":1,"136":1}}],["scalarfield",{"2":{"8":2,"99":3,"118":1}}],["scales",{"2":{"95":2}}],["scaled",{"2":{"43":1}}],["scalewithvolume",{"2":{"8":1,"109":2}}],["scale",{"2":{"8":1,"83":2,"95":1,"109":9,"147":2}}],["screen",{"2":{"59":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":{"109":2}}],["singly",{"2":{"138":1}}],["single",{"2":{"43":4,"110":5}}],["since",{"2":{"40":1,"94":1,"122":1,"123":1,"127":1,"134":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":{"123":1}}],["simply",{"2":{"99":1,"136":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,"92":1,"95":2,"113":1,"133":1,"147":2}}],["simulations",{"2":{"5":1,"44":1,"77":1,"82":1,"147":2}}],["similarly",{"2":{"123":1}}],["similar",{"2":{"28":1,"32":1,"94":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,"126":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,"92":3,"97":1,"98":1,"99":1,"101":1,"116":3,"123":1}}],["sides",{"2":{"115":1}}],["side",{"0":{"94":1},"2":{"8":2,"25":1,"94":9,"109":2,"111":1,"112":3,"113":11,"115":2,"134":2}}],["stuff",{"2":{"145":2}}],["study",{"0":{"69":1},"1":{"70":1}}],["stubs",{"2":{"12":1}}],["stimulate",{"2":{"55":1}}],["storage",{"2":{"124":1,"137":2}}],["storing",{"2":{"109":1}}],["store",{"2":{"94":2,"113":1}}],["stores",{"2":{"93":1,"121":1}}],["stored",{"2":{"40":1,"91":1,"94":1,"97":4,"109":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,"94":1,"100":1,"101":1,"105":1,"112":2,"113":3,"133":1,"147":3}}],["steady",{"2":{"22":4,"24":1,"25":4,"27":1,"39":1,"40":1,"43":3,"46":3}}],["stepping",{"2":{"92":1,"121":2,"134":2}}],["steppers",{"2":{"133":2}}],["stepper",{"2":{"8":1,"92":5,"120":2,"121":1,"133":6}}],["steps",{"2":{"43":1,"121":4,"134":1,"136":2}}],["step",{"0":{"22":1,"25":1},"1":{"23":1,"24":1,"26":1,"27":1},"2":{"22":1,"25":1,"43":2,"120":4,"121":5,"133":5,"134":3,"135":1,"136":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,"109":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,"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":{"141":1}}],["stablerngs",{"2":{"12":1}}],["stage",{"2":{"137":2,"138":1,"139":1}}],["stages",{"2":{"136":1}}],["staggered",{"2":{"87":1,"122":1,"129":1,"147":1}}],["staples",{"2":{"121":1,"147":1}}],["stays",{"2":{"103":1,"133":1}}],["stamp",{"2":{"44":1}}],["standard",{"2":{"43":1,"145":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,"93":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,"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,"133":1,"134":1,"136":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,"120":1,"121":1,"135":1}}],["startup",{"2":{"4":2,"134":1,"135":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,"133":1,"135":1}}],["sol",{"2":{"112":2}}],["solving",{"2":{"43":1,"46":1,"86":2,"108":2,"111":1,"112":2,"127":1,"134":1,"135":1}}],["solved",{"2":{"95":1,"121":1,"136":1}}],["solver",{"2":{"69":1,"84":1,"89":2,"110":1,"111":5,"112":1,"113":3,"122":1,"134":1}}],["solvers",{"0":{"111":1,"119":1,"120":1},"1":{"120":1,"121":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,"120":2,"121":1,"133":2,"134":2,"135":1,"136":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,"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":6,"85":5,"86":11,"87":9,"88":3,"99":10,"109":52,"111":11,"113":2,"115":14,"116":6,"117":3,"118":5,"120":3,"121":13,"132":1,"133":6,"134":1,"135":1,"136":5,"137":11,"138":4,"139":3,"140":11,"141":4,"142":10,"143":3,"144":4,"145":7}}],["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":{"133":1}}],["sections",{"2":{"5":1}}],["second",{"2":{"109":2,"125":2,"126":1,"134":2,"135":1,"142":2}}],["seaborn",{"2":{"58":2,"59":1}}],["serialization",{"2":{"12":1}}],["setting",{"2":{"116":1,"127":1}}],["settings",{"2":{"72":1}}],["set",{"2":{"86":1,"94":1,"103":1,"121":1,"127":1,"132":1,"136":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":2,"85":6,"86":4,"87":3,"88":1,"89":3,"92":6,"94":6,"97":12,"98":9,"99":7,"109":49,"111":11,"112":6,"113":6,"115":6,"117":3,"118":8,"120":2,"121":7,"132":3,"133":2,"145":2}}],["sell",{"2":{"9":1}}],["selected",{"2":{"6":1,"77":1}}],["seen",{"2":{"127":1}}],["seems",{"2":{"121":1}}],["seeds",{"2":{"145":1}}],["seed",{"2":{"94":1,"145":2}}],["see",{"2":{"0":1,"12":1,"85":1,"87":1,"96":1,"99":1,"109":2,"116":1,"121":2,"133":2,"135":1,"136":2}}],["springer",{"2":{"147":1}}],["spiteri",{"0":{"144":1}}],["span",{"2":{"112":1}}],["space",{"2":{"111":2,"116":1,"127":1,"136":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,"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":{"133":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":{"89":1,"112":1}}],["specialfunctions",{"2":{"12":1}}],["specifies",{"2":{"117":2,"132":2}}],["specified",{"2":{"43":1,"109":1,"118":1}}],["specification",{"2":{"95":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,"145":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,"121":4,"145":4}}],["split",{"2":{"145":1}}],["splittablesbase",{"2":{"12":1}}],["splitseed",{"2":{"8":1,"145":1}}],["w",{"2":{"126":1,"147":2}}],["wu",{"2":{"126":1}}],["wray",{"2":{"136":1,"137":1}}],["wray3",{"2":{"136":1,"137":1}}],["wrapper",{"2":{"93":1}}],["wrapped",{"2":{"93":1}}],["wrappedclosure",{"2":{"84":1}}],["wrap",{"2":{"84":1,"93":1}}],["writing",{"2":{"109":1}}],["written",{"2":{"100":1}}],["writes",{"2":{"121":1}}],["write",{"2":{"109":1,"112":1,"122":1,"126":1,"127":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,"121":2}}],["wong",{"0":{"144":1}}],["would",{"2":{"127":2}}],["woodburymatrices",{"2":{"12":1}}],["worrying",{"2":{"95":1}}],["works",{"2":{"110":1}}],["workgroupsize",{"2":{"58":6,"94":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,"93":1,"97":2}}],["word",{"2":{"11":1}}],["well",{"2":{"136":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":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,"93":1,"94":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,"133":6,"134":6,"135":2,"136":5}}],["were",{"2":{"11":1,"12":1}}],["wang",{"2":{"147":1}}],["want",{"2":{"1":1,"95":1}}],["waterlily",{"2":{"109":2}}],["way",{"2":{"93":1,"127":1}}],["wayland",{"2":{"12":2}}],["wavenumber",{"2":{"37":1,"87":2,"118":1,"121":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":{"124":1}}],["whom",{"2":{"9":1}}],["while",{"2":{"97":2,"103":1,"109":1,"112":1,"117":1,"125":1,"132":1,"135":1}}],["which",{"2":{"82":1,"83":1,"85":1,"90":1,"93":1,"94":1,"100":1,"112":1,"121":1,"122":1,"123":3,"127":1,"132":1,"133":1,"134":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,"95":1,"110":1,"115":1,"116":1,"121":1}}],["whether",{"2":{"9":1,"133":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,"120":1,"121":1,"122":4,"123":1,"125":1,"126":2,"127":1,"132":1,"134":1,"136":2}}],["widths",{"2":{"116":1}}],["widely",{"2":{"90":1}}],["windows",{"2":{"121":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,"93":2,"124":1,"126":1,"127":3,"129":1,"133":2,"136":1}}],["without",{"2":{"9":3,"91":1,"95":2,"97":1,"112":1,"127":3}}],["with",{"0":{"79":1,"80":1,"91":1,"93":1},"1":{"92":1,"94":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,"91":2,"92":2,"93":3,"94":3,"97":5,"99":3,"101":1,"109":6,"111":2,"115":1,"116":3,"118":2,"120":3,"121":1,"123":6,"125":2,"127":2,"131":3,"133":3,"136":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":{"136":3}}],["j",{"2":{"122":3,"124":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":{"140":1}}],["julialiiia2",{"2":{"140":1}}],["julialastdimcontract",{"2":{"109":1}}],["julialaplacian",{"2":{"99":1,"109":2}}],["julialang",{"2":{"11":1}}],["juliaheun33",{"2":{"142":1}}],["juliahem5",{"2":{"139":1}}],["juliahem3bs",{"2":{"139":1}}],["juliahem3",{"2":{"139":1}}],["juliaheatmap",{"2":{"40":1}}],["juliaissps3",{"2":{"138":1}}],["juliaisspm2",{"2":{"138":1}}],["juliainterpolate",{"2":{"109":4}}],["juliainflow",{"2":{"15":1}}],["juliawray3",{"2":{"137":1}}],["juliawrappedclosure",{"2":{"84":1}}],["julia>",{"2":{"116":1}}],["juliajulia>",{"2":{"116":1}}],["juliaode",{"2":{"133":1}}],["juliaobservespectrum",{"2":{"121":1}}],["juliaobservefield",{"2":{"121":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":{"142":1}}],["juliamid22",{"2":{"142":1}}],["juliamax",{"2":{"116":1}}],["juliamaximum",{"2":{"98":1}}],["juliamomentum",{"2":{"109":2}}],["juliakinetic",{"2":{"109":2}}],["juliagl3",{"2":{"140":1}}],["juliagl2",{"2":{"140":1}}],["juliagl1",{"2":{"140":1}}],["juliagrid",{"2":{"116":1}}],["juliagravity",{"2":{"109":2}}],["juliagetval",{"2":{"145":1}}],["juliagetoffset",{"2":{"145":1}}],["juliaget",{"2":{"109":1,"120":2,"145":2}}],["juliagcnn",{"2":{"87":1}}],["juliaeig2field",{"2":{"109":2}}],["juliaenzyme",{"2":{"94":1}}],["juliaavg",{"2":{"109":1}}],["juliaapply",{"2":{"115":6}}],["juliaapplypressure",{"2":{"109":2}}],["juliaapplybodyforce",{"2":{"109":2}}],["juliaabstract",{"2":{"85":1,"115":1,"133":1,"136":1}}],["juliaqfield",{"2":{"109":2}}],["juliaplotgrid",{"2":{"145":1}}],["juliapsolver",{"2":{"111":4}}],["juliapoisson",{"2":{"111":2}}],["juliapad",{"2":{"99":2}}],["juliaparams",{"2":{"94":1}}],["juliaprocessor",{"2":{"121":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":{"121":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":{"142":1}}],["juliark44c23",{"2":{"142":1}}],["juliark44c2",{"2":{"142":1}}],["juliark44",{"2":{"142":1}}],["juliark33p2",{"2":{"142":1}}],["juliark33c2",{"2":{"142":1}}],["juliark56",{"2":{"137":1}}],["juliariia3",{"2":{"140":1}}],["juliariia2",{"2":{"140":1}}],["juliariia1",{"2":{"140":1}}],["juliaria3",{"2":{"140":1}}],["juliaria2",{"2":{"140":1}}],["juliaria1",{"2":{"140":1}}],["juliaright",{"2":{"113":1}}],["juliarssps3",{"2":{"137":1}}],["juliarssps2",{"2":{"137":1}}],["juliarunge",{"2":{"133":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":{"143":1}}],["juliadsrk2",{"2":{"143":1}}],["juliadsso2",{"2":{"143":1}}],["juliadopri6",{"2":{"137":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":{"94":1}}],["juliad",{"2":{"66":1}}],["juliafe11",{"2":{"137":1}}],["juliaf",{"2":{"94":1,"112":1}}],["juliafno",{"2":{"87":1}}],["juliafunction",{"2":{"55":1,"58":2,"121":1}}],["juliafiltersaver",{"2":{"88":1}}],["juliafieldsaver",{"2":{"121":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":{"142":1}}],["juliacnn",{"2":{"87":1}}],["juliachc5",{"2":{"141":1}}],["juliachc3",{"2":{"141":1}}],["juliachcons3",{"2":{"141":1}}],["juliachdirk3",{"2":{"141":1}}],["juliacosine",{"2":{"116":1}}],["juliaconvectiondiffusion",{"2":{"109":1}}],["juliaconvection",{"2":{"109":4}}],["juliacollocate",{"2":{"84":1}}],["juliacreate",{"2":{"49":1,"84":2,"86":9,"88":2,"113":1,"133":1}}],["juliacx",{"2":{"19":1}}],["juliax",{"2":{"19":1,"22":1,"25":1,"46":1}}],["juliaxc",{"2":{"15":1}}],["juliabe11",{"2":{"138":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":{"133":2}}],["juliatimelogger",{"2":{"121":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}}],["juliasplitseed",{"2":{"145":1}}],["juliaspectral",{"2":{"145":1}}],["juliasdirk34",{"2":{"138":1}}],["juliassp104",{"2":{"137":1}}],["juliassp43",{"2":{"137":1}}],["juliassp42",{"2":{"137":1}}],["juliassp33",{"2":{"137":1}}],["juliassp22",{"2":{"137":1}}],["juliasnapshotsaver",{"2":{"121":1}}],["juliasolve",{"2":{"120":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,"134":1,"135":1,"136":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,"121":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":{"144":1}}],["julianssp33",{"2":{"144":1}}],["julianssp32",{"2":{"144":1}}],["julianssp21",{"2":{"144":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,"92":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,"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,"90":2,"91":1,"122":1,"124":1}}],["judiciously",{"2":{"43":1,"125":1,"136":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,"90":2,"91":1,"93":1,"109":2,"111":1,"112":1,"132":1,"133":1}}],["1δti−θd",{"2":{"134":2}}],["1δti−",{"2":{"134":1}}],["1−θ",{"2":{"134":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,"145":1}}],["1e83bf80",{"2":{"12":1}}],["1a1011a3",{"2":{"12":1}}],["1a297f60",{"2":{"12":1}}],["1+β",{"2":{"135":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}}],["1472",{"2":{"147":1}}],["14845993136139088",{"2":{"112":1}}],["14044702822349744",{"2":{"94":1}}],["1404470282234972",{"2":{"94":2}}],["14a3606d",{"2":{"12":1}}],["14d82f49",{"2":{"12":1}}],["14+1",{"2":{"12":1}}],["14+0",{"2":{"12":1}}],["14",{"2":{"12":4,"94":1,"98":1,"123":1,"125":1,"135":1}}],["1965",{"2":{"147":1}}],["19668244159331",{"2":{"112":3}}],["19034589506796068",{"2":{"94":1}}],["19034589506796099",{"2":{"94":2}}],["1910",{"2":{"147":2}}],["191145491275563",{"2":{"112":3}}],["191723655e",{"2":{"94":1}}],["1914dd2f",{"2":{"12":1}}],["1920929f",{"2":{"58":18}}],["1997",{"2":{"147":1}}],["1995",{"2":{"147":1}}],["199",{"2":{"58":3}}],["1986cc42",{"2":{"12":1}}],["198e06fe",{"2":{"12":1}}],["19eb6ba3",{"2":{"12":1}}],["19",{"2":{"12":2}}],["1063",{"2":{"147":1}}],["10613939385057908",{"2":{"112":1}}],["10874v1",{"2":{"147":1}}],["1082639a",{"2":{"12":1}}],["10346473297439138",{"2":{"112":1}}],["10352669378970476",{"2":{"112":3}}],["10545067559959928",{"2":{"112":1}}],["105436\\tδt",{"2":{"29":1}}],["10508365809857242",{"2":{"112":3}}],["105",{"2":{"111":1,"147":1}}],["10949734690268909",{"2":{"112":1}}],["109",{"2":{"111":1}}],["10\\tδt",{"2":{"62":1}}],["101",{"2":{"58":6,"92":1,"94":9,"111":2,"112":1}}],["1024",{"2":{"97":2}}],["102×102×2",{"2":{"94":1}}],["102",{"2":{"58":3,"92":2,"94":2}}],["10^4",{"2":{"55":1,"57":1}}],["10^",{"2":{"55":1,"57":1}}],["100×100",{"2":{"94":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,"92":1,"94":6,"147":1}}],["10+4",{"2":{"12":1}}],["10+1",{"2":{"12":1}}],["10+0",{"2":{"12":1}}],["10745b16",{"2":{"12":1}}],["10f19ff3",{"2":{"12":1}}],["10",{"2":{"12":15,"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,"94":7,"98":2,"116":1,"147":1}}],["180487610093032",{"2":{"112":3}}],["185737271493904",{"2":{"112":3}}],["18654629098805736",{"2":{"112":1}}],["18178407055780385",{"2":{"112":3}}],["18393668004949645",{"2":{"112":3}}],["188",{"2":{"109":1}}],["18×18",{"2":{"98":1}}],["187",{"2":{"147":1}}],["187096033329786",{"2":{"112":1}}],["1875",{"2":{"97":4,"98":4}}],["187b0558",{"2":{"12":1}}],["18a262bb",{"2":{"12":1}}],["189a3867",{"2":{"12":1}}],["18",{"2":{"12":6,"97":2,"98":2,"136":1}}],["159",{"2":{"147":1}}],["159f3aea",{"2":{"12":1}}],["15740701404420815",{"2":{"112":3}}],["15592766308666817",{"2":{"112":3}}],["15625",{"2":{"97":4,"98":4}}],["1505",{"2":{"147":1}}],["150",{"2":{"22":2,"23":3,"24":5}}],["15+1",{"2":{"12":1}}],["15",{"2":{"12":6,"66":1,"68":1,"98":1,"121":1,"125":1}}],["1520ce14",{"2":{"12":1}}],["131",{"2":{"147":1}}],["1317d2d5",{"2":{"12":1}}],["130992744235903",{"2":{"112":3}}],["1308558585256516",{"2":{"112":1}}],["13072b0f",{"2":{"12":1}}],["13+1",{"2":{"12":1}}],["13",{"2":{"12":9,"97":1,"122":1}}],["13f3f980",{"2":{"12":1}}],["13533e5b",{"2":{"12":1}}],["1761178",{"2":{"147":1}}],["170576881038018",{"2":{"112":3}}],["175425182695787",{"2":{"112":3}}],["1719243514619671",{"2":{"112":1}}],["171d559e",{"2":{"12":1}}],["17",{"2":{"12":7,"25":1,"27":1,"97":7,"98":5,"136":1}}],["1669743965658705",{"2":{"112":3}}],["16934281263560214",{"2":{"112":3}}],["1682545026029798",{"2":{"112":1}}],["168+0",{"2":{"12":1}}],["163ba53b",{"2":{"12":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,"135":1}}],["127",{"2":{"147":1}}],["1270edf5",{"2":{"12":1}}],["1225160105596109",{"2":{"112":1}}],["12557069044081098",{"2":{"112":3}}],["125",{"2":{"97":4,"98":4}}],["1241478218087033",{"2":{"112":3}}],["124",{"2":{"94":1,"111":2}}],["128",{"2":{"33":1,"36":1,"55":1,"57":1,"66":1,"68":1,"69":1,"70":1,"94":3}}],["128add7d",{"2":{"12":1}}],["12912223894278943",{"2":{"112":1}}],["129",{"2":{"25":1,"27":1}}],["12\\tδt",{"2":{"16":1}}],["12",{"2":{"11":1,"12":13,"16":1,"18":1,"49":1,"51":1,"58":3,"121":1,"122":1}}],["1",{"2":{"3":2,"11":3,"12":120,"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,"92":4,"94":35,"97":23,"98":26,"103":1,"109":10,"112":7,"115":1,"116":5,"121":5,"122":3,"123":1,"124":8,"134":2,"136":1,"147":1}}],["118",{"2":{"147":1}}],["1183f4f0",{"2":{"12":1}}],["1177386254998089",{"2":{"112":1}}],["1102895726892691",{"2":{"112":1}}],["11638439519314522",{"2":{"112":1}}],["111",{"2":{"111":1}}],["11+1",{"2":{"12":1}}],["11+0",{"2":{"12":2}}],["113",{"2":{"12":1}}],["11",{"2":{"3":3,"5":1,"11":1,"12":42,"15":1,"16":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":{"135":1}}],["v~",{"2":{"135":1}}],["v=",{"2":{"134":1,"135":1}}],["v−u0δt=−",{"2":{"134":1}}],["vrank>=1",{"2":{"94":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,"121":5}}],["val",{"2":{"145":2}}],["valid",{"2":{"122":1}}],["valued",{"2":{"93":1}}],["value",{"2":{"43":1,"94":2,"115":1,"121":1,"123":1,"126":1,"127":2,"134":1,"145":1}}],["values",{"2":{"43":1,"94":1,"127":1,"135":2}}],["vary",{"2":{"124":1}}],["varies",{"2":{"127":1}}],["variant",{"2":{"91":2,"125":1}}],["variants",{"2":{"87":1}}],["various",{"2":{"89":1}}],["var",{"2":{"58":8,"84":1,"86":5,"94":1,"109":1,"111":7,"113":1,"121":3}}],["vanishing",{"2":{"43":1}}],["v",{"2":{"20":1,"55":10,"57":10,"85":5,"87":1,"109":4,"134":3,"135":1}}],["vi",{"2":{"136":1}}],["vi=u0+δt∑j=1iaijkjlpi=wm1ci∑j=1iaijkj+wym",{"2":{"136":1}}],["via",{"2":{"37":1,"97":1}}],["viscosity",{"2":{"52":1,"95":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":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":{"135":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,"109":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,"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,"121":1,"130":3,"131":3}}],["veldman",{"2":{"135":1,"147":2}}],["velocities",{"2":{"127":1,"136":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,"91":1,"94":1,"95":1,"99":1,"100":2,"103":2,"109":6,"111":6,"113":1,"115":9,"116":3,"118":1,"121":2,"123":4,"126":3,"127":2,"129":2,"133":4,"134":6,"135":3,"136":2,"145":1}}],["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":{"135":1,"147":4}}],["versioninfo",{"2":{"11":1}}],["versions",{"0":{"10":1,"12":1},"1":{"11":1,"12":1},"2":{"12":2,"91":2,"96":1,"98":1}}],["version",{"0":{"11":1},"2":{"3":2,"11":2,"82":1,"94":3,"109":45,"111":6,"115":6,"133":2}}],["very",{"2":{"109":1,"127":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":{"91":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,"124":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,"93":1,"94":1,"97":2,"98":1,"99":1,"102":1,"107":1,"108":1,"109":1,"112":2,"116":1,"118":1,"120":1,"121":1,"122":1,"130":1,"136":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":{"135":1}}],["lδp=wmv+ym",{"2":{"134":1}}],["lhs",{"2":{"134":1}}],["lu",{"2":{"134":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":{"109":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,"109":2,"127":1,"147":1}}],["learned",{"2":{"147":1}}],["learning",{"2":{"147":2}}],["leg",{"0":{"135":1},"2":{"133":1,"135":1}}],["level",{"2":{"121":1}}],["levels",{"2":{"35":1,"36":1,"60":4,"61":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,"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,"95":1,"116":1,"134":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":{"109":1}}],["lapack",{"2":{"93":1}}],["laplace",{"2":{"60":1,"64":1,"111":1,"127":1}}],["laplacian",{"2":{"8":2,"99":2,"109":4}}],["largest",{"2":{"116":1}}],["large",{"0":{"95":1},"2":{"83":3,"95":4,"109":2,"112":2,"147":2}}],["larger",{"2":{"28":1,"32":1,"87":1,"125":1}}],["layers",{"2":{"84":3}}],["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":{"90":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,"136":2}}],["li",{"2":{"147":1}}],["liiia3",{"2":{"136":1,"140":2}}],["liiia2",{"2":{"136":1,"140":2}}],["living",{"2":{"120":1}}],["live",{"2":{"4":1}}],["list",{"2":{"96":1,"147":1}}],["like",{"2":{"93":1,"121":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":{"90":1}}],["libraries",{"2":{"90":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,"123":1,"134":1,"136":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,"145":1}}],["limited",{"2":{"9":1}}],["limitation",{"2":{"9":1,"91":1,"93":1}}],["lims",{"2":{"8":1,"43":3,"45":3,"66":3,"68":3,"69":4,"70":4,"88":1,"145":3}}],["license",{"0":{"9":1},"2":{"9":2}}],["lobatto",{"2":{"141":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":{"109":1}}],["loop",{"2":{"92":1}}],["low",{"2":{"90":1,"136":1,"137":2}}],["lower",{"2":{"58":1,"59":1,"145":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,"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":{"136":1}}],["aiming",{"2":{"127":1}}],["aα",{"2":{"122":2}}],["amp",{"0":{"144":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":{"127":1}}],["appending",{"2":{"97":1}}],["approximation",{"2":{"123":1,"133":1}}],["approximating",{"2":{"123":2}}],["approximated",{"2":{"123":2}}],["approximate",{"2":{"83":1,"136":1,"145":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":{"90":1}}],["applying",{"2":{"43":1,"83":1,"98":1,"99":3,"127":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":{"127":1}}],["affect",{"2":{"95":1}}],["after",{"2":{"43":2,"46":1,"120":1,"121":2,"134":1,"136":2}}],["agnostic",{"2":{"89":1,"109":1,"122":1}}],["agdestein",{"2":{"9":1,"83":1}}],["augmenter",{"2":{"87":1}}],["autodiff",{"2":{"93":1,"94":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,"93":1}}],["automatic",{"0":{"91":1,"93":1},"1":{"92":1,"94":1},"2":{"5":1}}],["authors",{"2":{"9":1}}],["avx2",{"2":{"94":6}}],["averaging",{"2":{"83":1,"123":1}}],["averagetemp",{"2":{"58":5,"59":2}}],["average",{"2":{"55":1,"58":3,"59":1,"85":2,"109":1,"123":2}}],["avg",{"2":{"58":3,"59":2,"109":1}}],["avoid",{"2":{"43":2,"122":1,"134":1}}],["available",{"2":{"12":1,"77":1,"85":2,"89":1,"112":1,"121":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,"121":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,"92":3,"94":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":{"134":1}}],["accuracy",{"2":{"134":1,"136":3,"147":1}}],["accurate",{"0":{"125":1},"2":{"125":3,"126":1,"133":1,"134":2,"135":1}}],["accounted",{"2":{"98":1}}],["account",{"2":{"86":1}}],["actually",{"2":{"133":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":{"134":1}}],["ability",{"2":{"93":1}}],["abstol",{"2":{"111":1,"112":1,"133":1,"136":1}}],["abstractarray",{"2":{"145":1}}],["abstractrungekuttamethod",{"2":{"136":5}}],["abstract",{"2":{"133":1,"136":1}}],["abstractodemethod",{"2":{"133":2,"134":1,"135":1,"136":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,"92":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":{"93":1}}],["artifacts",{"2":{"12":1}}],["architectures",{"0":{"87":1},"2":{"87":1}}],["arrays",{"2":{"43":1,"88":2,"116":1,"136":1}}],["array",{"2":{"15":1,"58":2,"59":2,"60":1,"61":1,"64":1,"65":1,"89":1,"91":1,"93":1,"94":2,"97":1,"112":1,"113":1,"120":1}}],["arrayinterface",{"2":{"12":1}}],["arguments",{"2":{"93":2,"109":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":2,"90":1,"94":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,"120":1,"121":8,"122":7,"123":4,"124":1,"125":1,"127":2,"129":1,"134":1,"136":2}}],["aspect",{"2":{"147":1}}],["assuming",{"2":{"134":1}}],["assumption",{"2":{"123":1}}],["assume",{"2":{"100":1}}],["assumed",{"2":{"83":1}}],["assignment",{"2":{"117":1}}],["assembling",{"2":{"109":1,"127":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":{"94":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,"91":1,"95":2,"96":1,"97":1,"98":1,"100":1,"101":1,"107":1,"109":5,"110":2,"111":1,"112":1,"116":1,"118":1,"121":3,"122":2,"123":1,"126":2,"127":2,"130":2,"132":1,"133":1,"134":1,"135":1,"136":4}}],["adjoint",{"2":{"93":1,"94":1}}],["ad",{"2":{"90":2,"91":1,"93":2}}],["ade2ca70",{"2":{"12":1}}],["adams",{"0":{"134":1},"2":{"133":1,"134":3}}],["adamsbashforthcranknicolsonmethod",{"2":{"8":1,"134":2}}],["adafc99b",{"2":{"12":1}}],["adapted",{"2":{"83":1,"133":1}}],["adaptive",{"2":{"43":1,"120":1}}],["adaptivepredicates",{"2":{"12":1}}],["adapt",{"2":{"12":1,"120":2}}],["adtypes",{"2":{"12":1}}],["added",{"2":{"133":1}}],["adding",{"2":{"98":1,"132":1}}],["addition",{"2":{"44":1,"133":1}}],["additional",{"2":{"1":1,"121":2,"134":1,"136":1}}],["add",{"2":{"3":1,"4":2,"5":1,"7":1,"43":1,"66":1,"72":1,"95":1,"109":7,"133":2,"134":1,"135":1,"136":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,"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,"109":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":7,"135":2,"136":5,"145":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":{"121":1}}],["animations",{"2":{"12":1}}],["animate",{"2":{"121":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,"121":1}}],["ansicoloredprinters",{"2":{"12":1}}],["any",{"2":{"9":3,"44":1,"58":2,"84":2,"85":2,"87":4,"94":2,"99":3,"109":56,"111":2,"115":7,"116":6,"118":8,"120":2,"121":3,"145":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,"95":1,"98":1,"100":1,"101":1,"110":1,"111":1,"112":1,"115":1,"116":1,"120":1,"121":1,"123":1,"127":3,"133":3,"134":2,"136":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":1,"91":3,"92":2,"93":4,"94":1,"95":2,"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,"120":2,"121":4,"122":6,"123":9,"124":2,"126":4,"130":1,"131":1,"132":2,"133":4,"134":6,"135":5,"136":4,"139":2,"141":1,"142":1,"145":2,"147":16}}],["alieva",{"2":{"147":1}}],["aliastables",{"2":{"12":1}}],["algebraically",{"2":{"141":1}}],["algebraic",{"2":{"133":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,"89":1,"94":2,"95":1,"99":1,"109":1,"112":1,"115":1,"116":2,"121":1,"122":1,"127":1,"133":2}}],["allocating",{"2":{"91":2,"93":1,"133":2}}],["allows",{"2":{"3":1,"43":2,"69":1,"93":1,"109":1}}],["all",{"2":{"9":1,"82":1,"89":1,"95":1,"96":1,"109":3,"110":1,"112":2,"115":1,"116":2,"122":1,"123":1,"126":2,"133":1,"136":1}}],["already",{"2":{"4":1}}],["atomic",{"2":{"95":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,"91":1,"111":1,"115":4,"118":2,"121":7,"123":3,"127":1,"129":1,"131":2,"133":1,"134":3,"135":2,"136":4,"147":1}}],["pdf",{"2":{"147":1}}],["pdmats",{"2":{"12":1}}],["pérez",{"2":{"147":1}}],["ps",{"2":{"136":1}}],["psolve",{"2":{"94":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,"92":3,"94":4,"110":2,"111":12,"112":4,"113":3,"118":2,"120":1,"121":2,"133":1}}],["p=2p0−p−1+43δp",{"2":{"135":1}}],["p=p0+δp",{"2":{"134":1}}],["p−1",{"2":{"135":1}}],["p0−βp−1",{"2":{"135":1}}],["p0",{"2":{"135":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,"136":1}}],["pixman",{"2":{"12":1}}],["pvd",{"2":{"121":1}}],["peak",{"2":{"118":1}}],["perfectly",{"2":{"136":1}}],["performs",{"2":{"136":1}}],["performance",{"2":{"93":1,"112":1}}],["perform",{"2":{"93":1,"109":1,"127":1,"133":2,"134":1,"136":2}}],["performed",{"2":{"43":1}}],["percentage",{"2":{"121":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,"94":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,"93":1,"94":2,"109":24,"111":3,"112":2,"113":1,"115":3,"133":2}}],["plates",{"2":{"58":1}}],["plate",{"2":{"58":3,"59":2,"60":1}}],["platform",{"2":{"11":1}}],["plan",{"2":{"94":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,"22":3,"25":3,"29":1,"38":1,"43":4,"52":3,"55":3,"66":3,"121":1,"145":1}}],["plots",{"2":{"14":1,"19":1,"22":1,"25":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,"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,"145":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,"121":15,"145":1}}],["pope",{"2":{"147":1}}],["positive",{"2":{"127":1,"134":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,"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,"121":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,"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,"133":1,"135":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":{"94":1}}],["pullbacks",{"2":{"93":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,"121":1,"123":1,"133":1,"134":2,"135":1,"136":3,"147":4}}],["prandtl",{"2":{"117":1,"132":1}}],["price",{"2":{"137":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":{"134":1}}],["predict",{"2":{"95":2}}],["predicts",{"2":{"87":3}}],["predictor",{"2":{"86":1}}],["prediction",{"2":{"86":1,"134":1}}],["previously",{"2":{"109":1}}],["previous",{"2":{"86":1,"133":1,"134":3,"135":1}}],["preserving",{"2":{"135":1,"147":1}}],["preservation",{"2":{"133":1}}],["preserved",{"2":{"136":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,"109":2}}],["pressure",{"0":{"103":1,"111":1,"127":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,"121":3,"123":3,"126":5,"127":9,"129":1,"133":3,"134":6,"135":3,"136":3,"142":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,"121":1}}],["preferences",{"2":{"12":1}}],["preconditioner",{"2":{"111":1}}],["precomputed",{"2":{"109":1}}],["precompute",{"2":{"96":1,"134":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":{"121":2}}],["processors",{"0":{"121":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,"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,"22":1,"25":1,"43":1,"46":1,"49":1,"52":1,"55":1,"66":1,"122":1}}],["programming",{"2":{"90":1}}],["progressmeter",{"2":{"12":1}}],["propagate",{"2":{"90":1}}],["proposed",{"2":{"109":1,"116":1,"120":1,"122":1}}],["propose",{"2":{"1":1}}],["provides",{"2":{"84":1,"133":1}}],["provide",{"2":{"43":2,"87":1,"93":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,"95":2,"112":2,"117":1,"120":1}}],["profile",{"2":{"13":1,"19":1,"49":1,"116":1}}],["protocols",{"2":{"12":1}}],["projecting",{"2":{"136":1}}],["projection",{"2":{"127":2,"136":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":{"137":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,"121":1}}],["past",{"2":{"127":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,"93":1,"94":2,"111":1,"120":1,"121":6}}],["passes",{"2":{"22":1,"25":1}}],["pass",{"2":{"43":1,"91":1}}],["pango",{"2":{"12":1}}],["partitioning",{"2":{"122":1}}],["particularly",{"2":{"44":1}}],["particular",{"2":{"9":1,"112":1}}],["part",{"2":{"94":1,"102":2}}],["parallel",{"2":{"112":1,"115":2}}],["params",{"2":{"94":3,"113":3}}],["parameter",{"2":{"105":1,"134":1}}],["parameterized",{"2":{"83":1,"117":1,"132":1}}],["parameters",{"2":{"12":1,"84":1,"86":6,"87":3,"94":1,"113":1,"134":1}}],["paraview",{"2":{"44":1,"121":2}}],["parabolic",{"2":{"22":1,"25":1}}],["parsers",{"2":{"12":1}}],["pack",{"2":{"94":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":{"137":1,"138":1,"140":1}}],["edge",{"2":{"122":1}}],["eddy",{"0":{"95":1},"2":{"83":1,"95":2,"109":1,"118":1,"147":2}}],["eddies",{"2":{"28":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":{"109":2,"127":1}}],["eig2field",{"2":{"8":1,"60":4,"61":4,"64":3,"65":3,"109":2}}],["estimate",{"2":{"95":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}}],["ecosystem",{"2":{"90":1,"91":1}}],["ec84b674",{"2":{"12":1}}],["err",{"2":{"86":1}}],["error",{"2":{"12":1,"69":3,"70":2,"83":1,"86":9,"87":3,"142":1}}],["errors",{"2":{"1":1,"86":1,"95":1,"134":1,"136":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":{"89":1,"136":1}}],["eventually",{"2":{"28":1,"32":1}}],["event",{"2":{"9":1}}],["every",{"2":{"43":1,"92":1,"120":2,"121":8,"134":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":{"141":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,"109":4,"111":3,"112":2,"117":4,"123":2,"125":2,"126":1,"127":3,"131":2,"132":9,"133":4,"135":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,"94":1,"95":1,"100":1,"101":1,"103":1,"105":1,"109":3,"112":5,"113":3,"122":1,"123":2,"125":1,"126":2,"127":5,"133":1,"147":3}}],["equivalent",{"2":{"122":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,"91":1}}],["each",{"2":{"77":1,"86":2,"87":2,"115":2,"122":1,"123":1,"125":1,"133":2,"136":4}}],["ea8e919c",{"2":{"12":1}}],["ea2f1a96",{"2":{"12":1}}],["earcut",{"2":{"12":1}}],["efficient",{"2":{"90":1,"93":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":{"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":{"126":1}}],["exceed",{"2":{"93":1}}],["excluding",{"2":{"109":2}}],["exclamation",{"2":{"91":1}}],["extracted",{"2":{"83":1}}],["extrema",{"2":{"69":1,"70":1}}],["extensions",{"2":{"121":1}}],["extension",{"2":{"22":1,"25":1,"97":1}}],["extended",{"2":{"122":1,"136":1}}],["extend",{"2":{"15":1,"19":1,"22":1,"25":1,"49":1,"52":1}}],["extents",{"2":{"12":1}}],["exactly",{"2":{"95":1,"115":1,"127":1}}],["exact",{"2":{"86":2,"133":2,"136":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":{"92":1,"94":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,"94":1,"95":1,"96":1,"97":1,"109":1,"112":1,"121":1,"127":3}}],["expensive",{"2":{"109":1}}],["experimental",{"2":{"83":1}}],["explicitrungekuttamethod",{"2":{"133":1,"136":2,"137":13,"138":6,"139":3,"140":11,"141":4,"142":10,"143":3,"144":4}}],["explicit",{"0":{"137":1,"139":1},"2":{"112":1,"133":2,"134":2,"135":1,"136":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,"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,"136":1}}],["engineering",{"2":{"147":1}}],["england",{"2":{"147":1}}],["ensured",{"2":{"136":1}}],["ensures",{"2":{"133":1}}],["enable",{"2":{"132":1}}],["enforcing",{"2":{"127":1}}],["enforces",{"2":{"111":1}}],["enforced",{"2":{"43":1,"134":1,"145":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,"92":2,"115":1,"120":1,"121":2,"133":1}}],["enzymecore",{"2":{"12":1}}],["enzyme",{"0":{"93":1},"1":{"94":1},"2":{"12":2,"90":1,"93":6,"94":5}}],["energy",{"0":{"92":1,"106":1,"129":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,"92":4,"95":2,"106":1,"109":9,"118":1,"121":7,"123":1,"129":1,"145":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,"91":2,"99":2,"116":1,"124":1,"147":3}}],["iiia",{"2":{"141":1}}],["ij",{"2":{"136":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":{"142":3}}],["i=1",{"2":{"136":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":{"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,"121":1,"122":5,"123":3,"124":1,"136":1,"145":2}}],["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,"94":1,"97":1,"98":1,"115":1,"116":1}}],["iu",{"2":{"55":2,"57":2,"58":6,"92":3,"94":1,"97":1,"98":1,"115":1,"116":1}}],["irrationalconstants",{"2":{"12":1}}],["irtools",{"2":{"12":1}}],["imex",{"2":{"134":1}}],["important",{"2":{"87":1}}],["improve",{"2":{"86":1}}],["implicitness",{"2":{"134":1}}],["implicitrungekuttamethod",{"2":{"133":1,"136":2,"137":13,"138":6,"139":3,"140":11,"141":4,"142":10,"143":3,"144":4}}],["implicit",{"0":{"138":1},"2":{"112":1,"133":2,"134":1,"136":2,"138":1,"140":1}}],["implied",{"2":{"9":1}}],["implemented",{"2":{"96":1,"97":1}}],["implementations",{"2":{"112":1}}],["implementation",{"2":{"93":1,"122":1}}],["implement",{"2":{"85":1,"93":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":{"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":{"136":1,"138":2}}],["isspm2",{"2":{"136":1,"138":2}}],["issteadybodyforce",{"2":{"15":1,"18":1,"39":1,"42":1,"49":1,"51":1,"58":6,"94":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":4,"91":2,"92":2,"93":3,"94":2,"95":6,"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,"120":6,"121":30,"122":10,"123":7,"125":4,"126":7,"127":7,"129":1,"130":3,"131":1,"132":2,"133":6,"134":10,"135":5,"136":7,"140":1,"145":3}}],["itself",{"2":{"99":1,"125":1}}],["its",{"2":{"93":3,"94":1,"125":1,"134":1}}],["iterative",{"2":{"110":1,"111":2}}],["iterativesolvers",{"2":{"12":1,"111":1}}],["iterations",{"2":{"86":2,"136":1}}],["iteration",{"2":{"43":1,"120":1,"121":1,"136":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,"90":2,"91":1,"92":1,"99":1,"105":1,"107":2,"108":2,"109":2,"112":3,"115":1,"120":2,"122":1,"127":4,"130":1,"133":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":1,"95":2,"103":1,"109":1,"115":2,"116":1,"120":3,"121":4,"122":1,"127":3,"133":3,"136":3,"145":1}}],["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":{"58":4,"120":1,"121":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,"92":2,"118":1,"133":1,"136":1}}],["initialvalues",{"2":{"12":1}}],["inds",{"2":{"145":1}}],["indexed",{"2":{"122":1}}],["index",{"2":{"109":2,"116":3,"122":2,"124":4}}],["independently",{"2":{"87":1}}],["indices",{"2":{"58":1,"59":1,"109":5,"115":1,"122":1}}],["indirectarrays",{"2":{"12":1}}],["input",{"2":{"87":4,"94":1,"98":1,"110":1,"136":1}}],["inputs",{"2":{"83":1,"99":1}}],["inverting",{"2":{"134":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":{"136":1}}],["into",{"2":{"82":1,"86":1,"87":3,"133":1,"136":1,"145":1}}],["int64",{"2":{"58":56,"86":1,"94":5,"97":4,"99":4,"121":1}}],["integrated",{"2":{"133":1}}],["integration",{"2":{"133":1}}],["integrating",{"2":{"131":1}}],["integrals",{"2":{"123":2,"131":1}}],["integral",{"0":{"101":1},"2":{"101":2,"109":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":{"109":1}}],["interpolate",{"2":{"8":2,"84":2,"109":10,"129":1}}],["interest",{"0":{"104":1},"1":{"105":1,"106":1,"107":1,"108":1}}],["intermediate",{"2":{"91":1,"136":1}}],["interfaces",{"2":{"89":1}}],["intervals",{"2":{"133":1}}],["intervalsets",{"2":{"12":1}}],["interval",{"2":{"133":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,"121":1}}],["injected",{"2":{"37":1}}],["instead",{"2":{"122":2,"127":2,"136":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,"94":1}}],["influence",{"2":{"134":1}}],["inflow",{"2":{"15":5,"18":3,"19":1,"22":4,"25":4,"49":1,"52":1,"98":1,"127":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,"121":1}}],["increment",{"2":{"133":1,"136":1}}],["incremented",{"2":{"124":1}}],["includes",{"2":{"133":1}}],["include",{"2":{"109":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":{"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,"90":1,"92":1,"93":1,"94":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,"120":3,"121":16,"132":2,"133":9,"134":2,"135":2,"136":9,"137":37,"138":16,"139":9,"140":33,"141":12,"142":30,"143":9,"144":12,"145":7}}],["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":3,"92":1,"93":5,"94":5,"95":1,"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,"120":1,"121":9,"122":6,"123":13,"124":2,"125":1,"126":1,"127":2,"130":1,"131":1,"132":2,"133":7,"134":2,"145":1,"147":2}}],["gq+yg",{"2":{"135":1}}],["gδp+yg",{"2":{"134":1}}],["g=wu−1mtw",{"2":{"126":1}}],["gp0+yg",{"2":{"134":2}}],["gp+yg",{"2":{"133":1}}],["gph+yg",{"2":{"126":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,"133":1}}],["ghost",{"2":{"99":1,"116":2}}],["garbage",{"2":{"93":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":{"91":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":{"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,"109":4,"113":1,"115":1,"120":1,"125":1,"133":1,"134":2,"135":3,"136":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":{"136":1,"140":2}}],["gl2",{"2":{"136":1,"140":2}}],["gl1",{"2":{"136":1,"140":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,"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":{"145":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,"94":1}}],["geometrybasics",{"2":{"12":1}}],["geointerface",{"2":{"12":1}}],["geoformattypes",{"2":{"12":1}}],["getval",{"2":{"145":1}}],["gets",{"2":{"121":1}}],["getting",{"0":{"82":1}}],["gettext",{"2":{"12":1}}],["getoffset",{"2":{"8":1,"145":1}}],["get",{"2":{"0":1,"8":2,"82":1,"98":1,"99":1,"109":3,"111":1,"115":1,"116":1,"120":4,"133":2,"136":1,"145":8}}],["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,"134":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,"92":1,"94":1,"95":8,"97":1,"98":1,"113":1,"116":18,"122":1,"125":1,"129":1,"145":1,"147":1}}],["gradients",{"2":{"90":1,"111":2}}],["gradient",{"0":{"92":1,"94":1},"2":{"58":2,"59":1,"92":2,"94":2,"99":1,"109":6,"126":3,"127":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,"91":2,"92":3,"99":2,"109":2,"124":1}}],["brenner",{"2":{"147":1}}],["break",{"2":{"110":1}}],["brasey",{"2":{"139":2}}],["bα",{"2":{"122":2}}],["b−a",{"2":{"116":3}}],["blog",{"2":{"109":1}}],["blas",{"2":{"91":1,"93":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,"133":1,"136":3,"147":9}}],["bool",{"2":{"58":17,"111":2,"121":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,"122":1}}],["boundary",{"0":{"79":1,"98":1,"102":1,"115":1,"124":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,"94":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,"133":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,"94":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,"94":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,"134":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}}],["batch",{"2":{"86":2}}],["batchsize",{"2":{"86":2}}],["bashforth",{"0":{"134":1},"2":{"133":1,"134":3}}],["basis",{"2":{"84":1,"109":2}}],["based",{"2":{"141":1,"145":1}}],["baseline",{"2":{"95":2}}],["baselet",{"2":{"12":1}}],["base",{"2":{"58":6,"94":1,"111":1}}],["base64",{"2":{"12":1}}],["back",{"2":{"90":1,"99":1,"120":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":{"91":1,"138":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,"91":1,"94":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":{"136":1,"138":1}}],["beta",{"0":{"135":1},"2":{"133":1}}],["between",{"2":{"43":1,"86":1,"109":2,"116":1,"121":1}}],["before",{"2":{"121":1,"124":1,"129":1,"134":1,"136":1}}],["beneficial",{"2":{"117":1}}],["benjamin",{"2":{"9":1,"136":1}}],["beginning",{"2":{"115":1}}],["being",{"2":{"109":1}}],["beck",{"2":{"147":1}}],["become",{"2":{"97":1,"126":1,"127":1}}],["becomes",{"2":{"85":1,"103":1,"126":1}}],["because",{"2":{"91":1}}],["been",{"2":{"89":3,"126":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,"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,"89":2,"91":1,"93":2,"94":3,"95":5,"96":1,"98":2,"99":1,"100":1,"108":2,"109":3,"110":1,"111":1,"112":1,"113":1,"115":2,"117":1,"121":3,"122":3,"125":1,"127":4,"132":1,"133":3,"134":2,"136":2}}],["business",{"2":{"147":1}}],["buf",{"2":{"120":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,"136":2}}],["butcher",{"2":{"136":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,"125":1,"133":1,"142":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,"94":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,"121":3,"122":2,"123":3,"125":2,"126":1,"127":1,"129":1,"132":1,"133":1,"134":3,"135":4,"136":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,"133":4}}],["our",{"2":{"44":1,"69":1,"122":1}}],["outer",{"2":{"123":1,"136":1}}],["outside",{"2":{"115":1,"123":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":{"128":1},"1":{"129":1,"130":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,"93":1,"94":3,"121":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,"92":1,"120":3}}],["out",{"2":{"9":1,"49":3,"51":3,"82":1,"85":1,"94":1,"112":1,"133":1}}],["over",{"2":{"15":1,"19":1,"49":1,"85":2,"90":1,"112":1,"131":1}}],["ogg",{"2":{"12":1}}],["opposite",{"2":{"115":1}}],["opt",{"2":{"86":4}}],["optimal",{"2":{"137":2,"138":2}}],["optimized",{"2":{"93":1}}],["optimiser",{"2":{"86":2}}],["optimisers",{"2":{"12":1}}],["options",{"2":{"111":1,"112":1,"117":1}}],["optional",{"2":{"43":1,"136":1}}],["option",{"2":{"43":1}}],["operation",{"2":{"92":1}}],["operations",{"2":{"92":1,"109":1}}],["operating",{"2":{"87":1}}],["operator",{"2":{"87":1,"99":1,"109":1,"122":2,"123":1,"126":4,"127":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,"91":2,"96":2,"97":4,"109":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":{"94":1}}],["objectfile",{"2":{"12":1}}],["obtain",{"2":{"133":1,"134":1}}],["obtained",{"2":{"43":1,"46":1,"86":1,"94":1,"112":1,"123":1,"125":1,"135":1}}],["obtaining",{"2":{"9":1,"112":1}}],["observable",{"2":{"58":6,"59":6,"120":1,"121":3}}],["observables",{"2":{"12":1}}],["observe",{"2":{"58":1,"59":1,"121":2}}],["observer",{"2":{"58":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,"89":1,"95":1,"136":1}}],["otherwise",{"2":{"6":1,"9":1,"87":1,"109":1,"115":1,"116":1,"122":1}}],["orlandi",{"2":{"147":1}}],["original",{"2":{"55":1,"136":1}}],["order",{"0":{"125":1},"2":{"43":1,"55":1,"66":1,"94":1,"111":1,"112":1,"125":5,"126":1,"133":1,"134":5,"135":1,"136":3,"137":2,"138":3,"139":1,"142":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,"93":2,"97":1,"98":1,"102":1,"109":1,"110":2,"115":1,"122":3,"136":1}}],["once",{"2":{"136":1}}],["onto",{"2":{"111":2,"127":1}}],["only",{"2":{"89":1,"93":1,"95":1,"97":1,"98":1,"99":2,"103":2,"105":1,"110":2,"126":1,"127":3,"136":1}}],["oneapi",{"2":{"89":1}}],["onetbb",{"2":{"12":1}}],["onelegmethod",{"2":{"8":1,"135":2}}],["one",{"0":{"135":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,"93":1,"94":1,"102":1,"112":1,"115":2,"121":1,"122":1,"123":1,"124":1,"127":1,"133":3,"135":1,"136":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,"93":1,"95":4,"97":3,"98":2,"99":1,"102":4,"109":2,"112":2,"115":3,"120":1,"121":3,"123":1,"125":1,"129":1,"134":2,"145":1,"147":1}}],["offenhäuser",{"2":{"147":1}}],["offstep",{"2":{"135":1}}],["offset",{"2":{"109":3,"115":2,"145":1}}],["offsetarrays",{"2":{"12":1}}],["off",{"2":{"87":2}}],["official",{"2":{"11":1}}],["of",{"0":{"92":1,"94":1,"104":1,"123":1,"144":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,"91":3,"92":3,"93":3,"94":10,"95":4,"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,"120":1,"121":7,"122":7,"123":2,"126":2,"127":11,"132":1,"133":6,"134":4,"135":1,"136":8,"138":2,"145":3,"147":22}}],["t−1",{"2":{"134":2}}],["t−1=t0−δt",{"2":{"134":1,"135":1}}],["t−δt",{"2":{"127":1}}],["tn=t",{"2":{"133":1}}],["tn+1",{"2":{"133":1}}],["tn",{"2":{"133":4,"136":1}}],["t=t0+δt",{"2":{"134":1,"136":1}}],["t=2",{"2":{"121":2}}],["t=0",{"2":{"121":1}}],["t=$",{"2":{"121":1}}],["ts=t",{"2":{"136":1}}],["tspan",{"2":{"112":2}}],["tsit5",{"2":{"112":2}}],["tsim",{"2":{"88":1}}],["t0−δt",{"2":{"134":1}}],["t0=0",{"2":{"133":1}}],["t0",{"2":{"109":1,"134":12,"135":1,"136":5}}],["tv",{"2":{"99":8}}],["t3fv",{"2":{"94":1}}],["tburn",{"2":{"88":1}}],["ty0",{"2":{"58":2,"59":2}}],["ty",{"2":{"58":6,"59":6}}],["typically",{"2":{"115":1,"122":1}}],["typing",{"2":{"6":1}}],["types",{"2":{"43":1,"89":1,"121":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,"133":2,"136":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,"90":1,"91":1,"97":2,"123":1,"147":2}}],["turnover",{"2":{"109":1}}],["turbulent",{"2":{"28":1,"32":1,"95":1,"135":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,"94":2,"98":1,"109":4,"111":1,"116":3,"117":2,"120":1,"121":2,"132":1,"145":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,"120":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,"92":1,"94":2,"100":1,"109":4,"111":3,"112":6,"113":3,"115":8,"118":5,"120":5,"121":2,"123":2,"127":1,"133":7,"134":9,"135":5,"136":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":{"95":2}}],["transforms",{"2":{"87":1,"89":1}}],["transducers",{"2":{"12":1}}],["transcodingstreams",{"2":{"12":1}}],["truncation",{"2":{"142":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":{"136":5}}],["ti−1",{"2":{"136":2}}],["ti=t0+δti",{"2":{"136":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,"122":1,"125":2}}],["timestepping",{"2":{"121":1}}],["timestep",{"2":{"8":1,"92":1,"120":2,"133":4}}],["time",{"0":{"133":1},"1":{"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":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,"92":1,"100":1,"103":2,"109":1,"111":1,"112":1,"113":1,"118":2,"120":4,"121":24,"123":1,"127":2,"133":14,"134":9,"135":3,"136":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,"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,"109":2}}],["tar",{"2":{"12":1}}],["tableau",{"2":{"136":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":{"134":2,"135":1,"136":1}}],["tensors",{"2":{"109":2}}],["tensor",{"2":{"84":1,"109":6}}],["tensorclosure",{"2":{"84":2}}],["tensorcore",{"2":{"12":1}}],["tensorbasis",{"2":{"8":1,"109":2}}],["terms",{"2":{"109":1,"120":1,"122":1,"134":3}}],["term",{"2":{"109":12,"123":3,"126":2,"127":2,"132":1,"133":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,"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":15,"59":6,"60":8,"61":8,"62":4,"63":5,"64":9,"65":8,"94":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,"92":1,"99":2,"109":10,"111":2,"115":6,"120":2,"133":2}}],["thuerey",{"2":{"147":1}}],["thus",{"2":{"92":1,"97":1,"123":1,"124":1,"127":1,"136":1}}],["though",{"2":{"136":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,"90":1,"92":1,"93":3,"94":3,"95":1,"97":1,"98":2,"99":1,"100":1,"103":1,"107":1,"108":2,"109":1,"112":2,"113":2,"116":3,"120":2,"121":3,"123":3,"127":1,"133":3,"134":2,"135":1,"136":3,"145":1}}],["through",{"0":{"90":1},"1":{"91":1,"92":1,"93":1,"94":1},"2":{"86":1,"90":1,"130":1,"132":1}}],["three",{"2":{"19":1,"25":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,"89":1}}],["thrust",{"2":{"15":2,"18":1,"19":2,"21":1,"49":1}}],["third",{"2":{"142":1}}],["thickness",{"2":{"15":1,"18":1,"19":1,"21":1}}],["things",{"2":{"93":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,"91":2,"93":1,"94":3,"95":3,"98":1,"99":3,"103":2,"109":2,"111":2,"112":2,"117":1,"121":2,"122":1,"123":1,"127":2,"133":4,"134":3,"136":2,"140":1,"141":1,"145":1}}],["them",{"2":{"120":1}}],["themselves",{"2":{"95":1}}],["these",{"2":{"83":1,"95":3,"109":1,"123":1}}],["their",{"2":{"43":1,"83":1,"97":1,"123":3,"126":1,"135":1}}],["they",{"2":{"5":1,"89":2,"95":1,"121":1,"133":1}}],["then",{"2":{"4":1,"6":1,"7":1,"43":1,"85":1,"87":1,"89":1,"94":2,"115":3,"116":1,"121":1,"127":1,"134":2,"135":1,"136":1}}],["therefore",{"2":{"96":1,"129":1}}],["there",{"2":{"4":1,"5":1,"95":1,"103":1,"111":1}}],["the",{"0":{"90":1,"94":1,"123":1},"1":{"91":1,"92":1,"93":1,"94":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":6,"91":7,"92":5,"93":8,"94":23,"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":28,"110":2,"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":26,"134":25,"135":8,"136":21,"142":4,"145":1,"147":6}}],["toolkit",{"2":{"147":1}}],["toolchains",{"2":{"112":1}}],["tools",{"2":{"84":1,"93":1,"112":2}}],["too",{"2":{"95":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,"91":3,"92":3,"93":6,"94":8,"95":9,"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,"120":3,"121":16,"122":3,"126":4,"127":6,"129":1,"132":3,"133":10,"134":5,"136":4,"145":1,"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":{"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,"133":1,"135":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,"94":4,"97":4,"98":3,"110":2,"112":2,"137":18,"138":8,"139":6,"140":22,"141":8,"142":20,"143":6,"144":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,"93":2,"94":3,"109":11,"111":5,"112":4,"123":1,"126":1,"127":3,"134":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":{"93":1,"95":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,"136":2}}],["future",{"2":{"12":1,"133":1}}],["functions",{"2":{"43":1,"87":1,"93":2,"100":1,"145":1}}],["function",{"0":{"108":1,"131":1},"2":{"15":1,"43":1,"49":1,"51":1,"57":1,"58":4,"59":2,"69":2,"70":1,"86":3,"89":1,"92":2,"93":4,"94":4,"97":1,"108":2,"111":1,"113":2,"118":2,"120":1,"121":4,"131":3,"133":1}}],["functionwrapperswrappers",{"2":{"12":1}}],["functionwrappers",{"2":{"12":1}}],["functors",{"2":{"12":1}}],["furnished",{"2":{"9":1}}],["families",{"2":{"136":1}}],["far",{"2":{"121":1}}],["factor",{"2":{"116":1}}],["factorization",{"2":{"134":1}}],["factorizations",{"2":{"96":1,"110":1}}],["factorize",{"2":{"60":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":{"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,"94":3,"97":3,"98":2,"117":1}}],["fa267f1f",{"2":{"12":1}}],["faster",{"2":{"112":1}}],["fast",{"2":{"89":1,"91":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,"94":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,"134":3,"136":1}}],["finite",{"0":{"123":1},"2":{"116":1,"122":1,"123":1,"131":1}}],["fine",{"2":{"85":2}}],["finally",{"2":{"94":1,"135":1,"136":1}}],["finalize",{"2":{"58":4,"121":7}}],["final",{"2":{"56":1,"69":1,"70":1,"92":4,"121":3,"136":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,"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,"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,"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,"23":1,"26":1,"30":1,"44":2,"47":1,"50":1,"53":1,"56":1,"67":1,"85":3,"87":4,"91":1,"97":3,"99":3,"109":2,"115":5,"116":3,"117":1,"121":1,"123":1,"133":1,"134":1,"135":1,"136":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,"121":1}}],["fieldnames",{"2":{"60":2,"61":2,"64":1,"65":1,"121":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,"121":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,"92":1,"94":2,"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,"120":1,"121":3,"122":1,"126":1,"127":3,"130":1,"132":1,"133":3,"134":2,"135":2,"136":2,"145":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,"121":1}}],["freund",{"2":{"147":1}}],["freeness",{"2":{"111":1,"127":2,"136":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,"133":2,"134":2,"135":1,"136":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,"94":1,"95":4,"109":6,"111":5,"112":2,"116":5,"118":1,"120":1,"121":2,"133":2,"134":1,"145":1}}],["fribidi",{"2":{"12":1}}],["footprint",{"2":{"116":2}}],["fourierlayer",{"2":{"87":2}}],["fourier",{"2":{"87":2,"89":1}}],["fourth",{"0":{"125":1},"2":{"43":1,"125":2,"126":1,"142":1,"147":1}}],["found",{"2":{"77":1,"108":2}}],["fontconfig",{"2":{"12":1}}],["follows",{"2":{"132":1,"135":1,"136":1}}],["following",{"2":{"8":1,"9":1,"11":1,"12":1,"43":1,"85":1,"95":1,"98":1,"102":1,"109":1,"112":1,"116":1,"121":2,"123":1,"133":1,"135":1,"136":1}}],["folder",{"2":{"4":1,"77":1}}],["forward",{"2":{"137":1}}],["forwarddiff",{"2":{"12":1}}],["fortran",{"2":{"124":1}}],["formed",{"2":{"133":1}}],["formulation",{"2":{"55":1,"112":2,"127":1}}],["form",{"0":{"101":1},"2":{"28":1,"32":1,"43":1,"101":2,"126":1,"133":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,"94":1,"100":2,"109":2,"134":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,"91":3,"92":1,"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,"120":1,"121":4,"122":2,"123":5,"124":1,"125":2,"126":3,"127":4,"131":1,"132":1,"133":7,"134":7,"135":2,"136":5,"142":5,"145":1,"147":6}}],["fe11",{"2":{"136":1,"137":2}}],["feature",{"2":{"95":1}}],["features",{"2":{"1":1,"28":1,"32":1,"83":1,"95":3,"112":1}}],["feel",{"2":{"1":1}}],["rssps3",{"2":{"136":1,"137":2}}],["rssps2",{"2":{"136":1,"137":2}}],["riia3",{"2":{"136":1,"140":2}}],["riia2",{"2":{"136":1,"140":2}}],["riia1",{"2":{"136":1,"140":2}}],["ria3",{"2":{"136":1,"140":2}}],["ria2",{"2":{"136":1,"140":2}}],["ria1",{"2":{"136":1,"140":1}}],["rights",{"2":{"9":1}}],["right",{"0":{"94":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,"94":9,"95":1,"109":2,"111":1,"112":3,"113":10,"115":1,"134":1}}],["rule",{"2":{"123":2,"131":1}}],["runner",{"2":{"58":1,"62":1,"69":1}}],["running",{"2":{"3":1,"43":1,"72":2}}],["runge",{"0":{"136":1},"1":{"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1},"2":{"43":1,"133":3,"136":4,"147":2}}],["runtimegeneratedfunctions",{"2":{"12":1}}],["run",{"2":{"5":2,"6":1}}],["r2cfii",{"2":{"94":1}}],["r2cf",{"2":{"94":1}}],["r2hc01",{"2":{"94":1}}],["r2hc",{"2":{"94":1}}],["rdft2",{"2":{"94":7}}],["rfftwplan",{"2":{"94":1}}],["rng",{"2":{"84":2,"87":3,"88":1,"118":1}}],["r",{"2":{"73":4,"76":4,"87":4,"133":2,"136":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":{"142":3}}],["rk44c23",{"2":{"136":1,"142":1}}],["rk44c2",{"2":{"136":1,"142":1}}],["rk44",{"2":{"136":1,"142":1}}],["rk44p2",{"2":{"16":1,"18":1,"19":1,"21":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"92":1,"136":1,"142":1}}],["rk3",{"2":{"137":1,"142":2}}],["rk33p2",{"2":{"136":1,"142":1}}],["rk33c2",{"2":{"60":1,"61":1,"136":1,"142":1}}],["rk56",{"2":{"136":1,"137":2}}],["rk",{"2":{"133":1,"136":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,"92":1,"136":1,"137":11,"138":4,"139":3,"140":11,"141":4,"142":10,"143":3,"144":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":{"137":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":{"94":1}}],["rangle",{"2":{"55":1,"57":1}}],["range",{"2":{"33":1,"36":1,"39":1,"42":1,"73":1,"76":1,"92":1,"94":1,"97":1,"112":1,"116":2,"145":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,"92":1,"94":1,"97":1,"98":1,"112":1,"118":3,"145":1}}],["reinforcement",{"2":{"147":1}}],["reused",{"2":{"134":1}}],["reu2",{"2":{"69":1}}],["remmerswaal",{"2":{"147":1}}],["remaining",{"2":{"123":1}}],["remember",{"2":{"94":1}}],["reλ=λuavg3ν",{"2":{"109":1}}],["reλ",{"2":{"109":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":{"22":1,"46":1}}],["refvalue",{"2":{"94":1}}],["ref",{"2":{"94":3,"112":1,"113":3}}],["reverse",{"2":{"90":1,"94":1}}],["revise",{"0":{"4":1},"2":{"4":3,"5":1}}],["retcode",{"2":{"112":1}}],["rethis",{"2":{"69":1}}],["returning",{"2":{"121":1,"136":1}}],["return",{"2":{"86":3,"87":3,"116":3,"120":1,"136":1}}],["returns",{"2":{"44":1,"93":2,"109":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":{"133":1}}],["respect",{"2":{"87":1,"92":2,"94":1}}],["respective",{"2":{"43":1}}],["resulting",{"2":{"111":1,"116":1,"121":1,"125":1,"134":1}}],["result",{"2":{"85":1,"93":1,"109":7,"113":1,"126":1}}],["results",{"2":{"43":2,"44":1,"46":1,"58":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":{"93":1}}],["restricted",{"2":{"12":1,"99":1}}],["restriction",{"2":{"9":1}}],["reason",{"2":{"91":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,"94":1,"120":1,"121":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,"121":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":{"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,"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,"92":1,"94":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,"133":1,"136":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":{"122":1}}],["representation",{"0":{"126":1}}],["represent",{"2":{"98":1,"116":1}}],["replace",{"2":{"136":1}}],["replacement",{"2":{"136":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,"93":1,"99":1,"127":1,"134":1,"135":1,"145":1}}],["requires",{"2":{"12":1,"19":1,"82":1,"94":1,"117":1,"132":1}}],["required",{"2":{"5":1,"83":1,"94":1,"123":3,"145":1}}],["request",{"2":{"1":1}}],["cbm",{"2":{"143":2}}],["c2=c3",{"2":{"142":1}}],["cn22",{"2":{"136":1,"142":1}}],["cn",{"2":{"134":1}}],["cnn",{"2":{"87":5}}],["ct",{"2":{"94":3}}],["ctrl",{"2":{"6":1}}],["ci=∑j=1iaij",{"2":{"136":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}}],["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":{"90":2,"115":1,"133":1}}],["current",{"2":{"6":2,"49":1,"51":1,"86":1,"113":2,"127":1,"135":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":{"134":1},"2":{"133":1,"134":3,"142":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":4,"86":18,"87":3,"88":5,"92":1,"94":1,"95":1,"98":1,"99":3,"109":1,"111":2,"112":1,"113":2,"116":4,"117":2,"118":5,"121":5,"132":1,"133":2}}],["cells",{"2":{"125":1}}],["cell",{"2":{"58":1,"60":1}}],["certain",{"2":{"43":1,"46":1,"136":1,"145":1}}],["central",{"2":{"131":1}}],["centers",{"2":{"84":2,"109":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,"109":4,"111":2,"124":1,"126":1,"133":1,"136":3,"141":1,"142":3,"147":1}}],["classical",{"0":{"140":1},"2":{"142":1}}],["claim",{"2":{"9":1}}],["clockwise",{"2":{"87":1}}],["clone",{"2":{"83":1}}],["cloning",{"2":{"83":1}}],["closeall",{"2":{"59":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,"58":6,"83":3,"84":7,"86":2,"87":9,"94":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,"122":2}}],["corners",{"2":{"122":1,"131":1}}],["corresponding",{"2":{"134":1,"136":1}}],["corresponds",{"2":{"109":1,"116":1}}],["correction",{"2":{"135":1}}],["correctly",{"2":{"95":1}}],["correct",{"2":{"93":1}}],["cores",{"2":{"11":1}}],["core",{"2":{"11":1,"94":1,"147":1}}],["coverage",{"2":{"90":1}}],["coupled",{"2":{"132":1}}],["could",{"2":{"89":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":{"93":1,"112":2,"121":1,"133":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}}],["costly",{"2":{"95":1,"127":1}}],["cost",{"2":{"91":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,"90":1},"1":{"91":1,"92":1,"93":1,"94":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,"90":1,"91":2,"93":2,"109":1,"110":2,"116":1,"117":1,"133":1}}],["codeczlib",{"2":{"12":1}}],["coefficients",{"2":{"134":1,"136":1}}],["coefficient",{"2":{"15":2,"18":1,"19":2,"21":1,"49":1,"136":1}}],["combining",{"2":{"125":1}}],["come",{"2":{"91":1}}],["comes",{"2":{"91":1}}],["com",{"2":{"83":1}}],["complex",{"2":{"94":1}}],["complexf64",{"2":{"94":2}}],["comp",{"2":{"85":2}}],["compression",{"2":{"85":2,"88":1}}],["compared",{"2":{"116":1}}],["compare",{"2":{"69":1,"70":1,"94":1}}],["compatible",{"2":{"89":1,"91":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,"94":1,"95":1,"109":37,"111":2,"134":2,"145":1}}],["computed",{"2":{"20":1,"23":1,"26":1,"30":1,"44":1,"47":1,"50":1,"53":1,"56":1,"67":1,"95":1,"113":1,"127":1,"134":1,"135":1,"136":1}}],["computing",{"2":{"44":1,"69":1,"70":1,"95":1,"134":1,"135":1}}],["compilersupportlibraries",{"2":{"12":1}}],["composed",{"2":{"92":1}}],["compositionsbase",{"2":{"12":1}}],["components",{"2":{"83":1,"84":1,"109":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,"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":{"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,"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,"142":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,"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,"92":2,"94":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,"133":2,"136":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,"136":1}}],["convective",{"2":{"109":3,"123":2,"134":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,"126":1,"134":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,"134":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,"95":1,"97":1,"98":1,"110":1,"122":1,"133":1,"136":1}}],["constant",{"2":{"95":1,"99":1,"103":2,"109":2,"115":1,"123":1,"127":2,"134":2,"135":1,"145":1}}],["const",{"2":{"94":2}}],["constraint",{"2":{"100":1,"123":2,"127":1,"133":1}}],["constraints",{"2":{"12":1}}],["constructionbase",{"2":{"12":1}}],["consequently",{"2":{"92":1}}],["conserves",{"2":{"133":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,"133":1}}],["contained",{"2":{"145":1}}],["contain",{"2":{"115":1}}],["containing",{"2":{"98":1,"113":2,"116":1,"126":2,"134":1}}],["contains",{"2":{"5":1,"44":1,"112":1,"120":1,"126":2}}],["contourf",{"2":{"121":1}}],["contour",{"2":{"12":1,"121":3,"145":1}}],["contextvariablesx",{"2":{"12":1}}],["contrast",{"2":{"134":1}}],["contracted",{"2":{"109":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,"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,"94":1,"97":1,"98":1,"117":4}}],["cmd",{"2":{"6":1}}],["cambridge",{"2":{"147":2}}],["carrica",{"2":{"147":1}}],["cartesianindices",{"2":{"58":18,"94":5,"97":3,"98":3,"115":1,"145":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,"122":4,"145":1}}],["cache",{"2":{"120":1,"133":4}}],["causes",{"2":{"110":1}}],["calculation",{"2":{"147":1}}],["calculated",{"2":{"136":1}}],["calibrated",{"2":{"95":1}}],["calling",{"2":{"109":1}}],["call",{"2":{"94":1}}],["calls",{"2":{"93":1}}],["callbackstate",{"2":{"86":5}}],["callback",{"2":{"86":5}}],["called",{"2":{"43":1,"94":1,"109":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,"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,"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,"90":1,"93":1,"94":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,"134":4,"136":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,"94":1,"121":1}}],["chen",{"2":{"147":1}}],["chebyshev",{"0":{"141":1},"2":{"141":2}}],["checks",{"2":{"133":1}}],["check",{"2":{"64":1,"82":1}}],["chdirk3",{"2":{"136":1,"141":1}}],["chcons3",{"2":{"136":1,"141":2}}],["chc5",{"2":{"136":1,"141":2}}],["chc3",{"2":{"136":1,"141":1}}],["cholesky",{"2":{"134":1}}],["chosen",{"2":{"120":1,"136":1}}],["choice",{"2":{"91":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,"109":1}}],["channel",{"2":{"22":1,"25":1,"87":1}}],["change",{"2":{"6":1,"133":1}}],["changes",{"2":{"4":1,"103":1,"134":1}}],["charge",{"2":{"9":1}}]],"serializationVersion":2}';export{e as default}; diff --git a/dev/assets/chunks/VPLocalSearchBox.DFINPjNu.js b/dev/assets/chunks/VPLocalSearchBox.DxzrSaau.js similarity index 99% rename from dev/assets/chunks/VPLocalSearchBox.DFINPjNu.js rename to dev/assets/chunks/VPLocalSearchBox.DxzrSaau.js index 445411429..473fd06be 100644 --- a/dev/assets/chunks/VPLocalSearchBox.DFINPjNu.js +++ b/dev/assets/chunks/VPLocalSearchBox.DxzrSaau.js @@ -1,4 +1,4 @@ -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.Dr1kDDE8.js";import{u as ss,c as ns}from"./theme.BCKAc1BQ.js";const is={root:()=>Ct(()=>import("./@localSearchIndexroot.DVDE_PMf.js"),[])};/*! +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.Dr1kDDE8.js";import{u as ss,c as ns}from"./theme.CG5UfwCm.js";const is={root:()=>Ct(()=>import("./@localSearchIndexroot.E-8RDk93.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)};/*! diff --git a/dev/assets/chunks/theme.BCKAc1BQ.js b/dev/assets/chunks/theme.CG5UfwCm.js similarity index 99% rename from dev/assets/chunks/theme.BCKAc1BQ.js rename to dev/assets/chunks/theme.CG5UfwCm.js index 89e2ab5b6..0d454df4a 100644 --- a/dev/assets/chunks/theme.BCKAc1BQ.js +++ b/dev/assets/chunks/theme.CG5UfwCm.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.DFINPjNu.js","assets/chunks/framework.Dr1kDDE8.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.Dr1kDDE8.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.DFINPjNu.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}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.DxzrSaau.js","assets/chunks/framework.Dr1kDDE8.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.Dr1kDDE8.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.DxzrSaau.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/dev/assets/dcezsvt.CcecJ8jR.png b/dev/assets/dcezsvt.CcecJ8jR.png new file mode 100644 index 0000000000000000000000000000000000000000..0aada7dfeec2521c3b652f395afa15d4b78efec9 GIT binary patch literal 51548 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 literal 0 HcmV?d00001 diff --git a/dev/assets/izirzso.CGB02zQg.png b/dev/assets/ebauyfm.CGB02zQg.png similarity index 100% rename from dev/assets/izirzso.CGB02zQg.png rename to dev/assets/ebauyfm.CGB02zQg.png diff --git a/dev/assets/examples_generated_Actuator2D.md.CicJvifW.lean.js b/dev/assets/examples_generated_Actuator2D.md.DxDFVKMk.js similarity index 98% rename from dev/assets/examples_generated_Actuator2D.md.CicJvifW.lean.js rename to dev/assets/examples_generated_Actuator2D.md.DxDFVKMk.js index f6811cbe3..83855edcc 100644 --- a/dev/assets/examples_generated_Actuator2D.md.CicJvifW.lean.js +++ b/dev/assets/examples_generated_Actuator2D.md.DxDFVKMk.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.Dr1kDDE8.js";const k="/IncompressibleNavierStokes.jl/dev/assets/joyoqhm.D0gpz0HH.png",p="/IncompressibleNavierStokes.jl/dev/Actuator2D.mp4",l="/IncompressibleNavierStokes.jl/dev/assets/bbydpmh.B0GX2W7p.png",t="/IncompressibleNavierStokes.jl/dev/assets/vwimpek.BjVPut0E.png",e="/IncompressibleNavierStokes.jl/dev/assets/eimjwfa.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.Dr1kDDE8.js";const k="/IncompressibleNavierStokes.jl/dev/assets/hcmbwbw.D0gpz0HH.png",p="/IncompressibleNavierStokes.jl/dev/Actuator2D.mp4",l="/IncompressibleNavierStokes.jl/dev/assets/giwhfzn.B0GX2W7p.png",t="/IncompressibleNavierStokes.jl/dev/assets/ybniibi.BjVPut0E.png",e="/IncompressibleNavierStokes.jl/dev/assets/zlzjvsb.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.Dr1kDDE8.js";const k
         rtp = realtimeplotter(; setup, size = (600, 300), nupdate = 5),
         log = timelogger(; nupdate = 24),
     ),
-);
[ Info: t = 1.2	Δt = 0.05	umax = 1.1	itertime = 0.12
-[ Info: t = 2.4	Δt = 0.05	umax = 1	itertime = 0.044
-[ Info: t = 3.6	Δt = 0.05	umax = 1	itertime = 0.009
-[ Info: t = 4.8	Δt = 0.05	umax = 1	itertime = 0.0098
-[ Info: t = 6	Δt = 0.05	umax = 1	itertime = 0.0093
-[ Info: t = 7.2	Δt = 0.05	umax = 1	itertime = 0.0091
-[ Info: t = 8.4	Δt = 0.05	umax = 1	itertime = 0.0096
-[ Info: t = 9.6	Δt = 0.05	umax = 1	itertime = 0.0093
-[ Info: t = 10.8	Δt = 0.05	umax = 1	itertime = 0.0093
-[ Info: t = 12	Δt = 0.05	umax = 1	itertime = 0.0091

Post-process

We create a box to visualize the actuator.

julia
box = (
+);
[ Info: t = 1.2	Δt = 0.05	umax = 1.1	itertime = 0.11
+[ Info: t = 2.4	Δt = 0.05	umax = 1	itertime = 0.04
+[ Info: t = 3.6	Δt = 0.05	umax = 1	itertime = 0.0087
+[ Info: t = 4.8	Δt = 0.05	umax = 1	itertime = 0.0094
+[ Info: t = 6	Δt = 0.05	umax = 1	itertime = 0.0087
+[ Info: t = 7.2	Δt = 0.05	umax = 1	itertime = 0.0086
+[ Info: t = 8.4	Δt = 0.05	umax = 1	itertime = 0.0088
+[ Info: t = 9.6	Δt = 0.05	umax = 1	itertime = 0.009
+[ Info: t = 10.8	Δt = 0.05	umax = 1	itertime = 0.0089
+[ Info: t = 12	Δt = 0.05	umax = 1	itertime = 0.0087

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/dev/assets/examples_generated_Actuator2D.md.CicJvifW.js b/dev/assets/examples_generated_Actuator2D.md.DxDFVKMk.lean.js
similarity index 98%
rename from dev/assets/examples_generated_Actuator2D.md.CicJvifW.js
rename to dev/assets/examples_generated_Actuator2D.md.DxDFVKMk.lean.js
index f6811cbe3..83855edcc 100644
--- a/dev/assets/examples_generated_Actuator2D.md.CicJvifW.js
+++ b/dev/assets/examples_generated_Actuator2D.md.DxDFVKMk.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.Dr1kDDE8.js";const k="/IncompressibleNavierStokes.jl/dev/assets/joyoqhm.D0gpz0HH.png",p="/IncompressibleNavierStokes.jl/dev/Actuator2D.mp4",l="/IncompressibleNavierStokes.jl/dev/assets/bbydpmh.B0GX2W7p.png",t="/IncompressibleNavierStokes.jl/dev/assets/vwimpek.BjVPut0E.png",e="/IncompressibleNavierStokes.jl/dev/assets/eimjwfa.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.Dr1kDDE8.js";const k="/IncompressibleNavierStokes.jl/dev/assets/hcmbwbw.D0gpz0HH.png",p="/IncompressibleNavierStokes.jl/dev/Actuator2D.mp4",l="/IncompressibleNavierStokes.jl/dev/assets/giwhfzn.B0GX2W7p.png",t="/IncompressibleNavierStokes.jl/dev/assets/ybniibi.BjVPut0E.png",e="/IncompressibleNavierStokes.jl/dev/assets/zlzjvsb.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.Dr1kDDE8.js";const k
         rtp = realtimeplotter(; setup, size = (600, 300), nupdate = 5),
         log = timelogger(; nupdate = 24),
     ),
-);
[ Info: t = 1.2	Δt = 0.05	umax = 1.1	itertime = 0.12
-[ Info: t = 2.4	Δt = 0.05	umax = 1	itertime = 0.044
-[ Info: t = 3.6	Δt = 0.05	umax = 1	itertime = 0.009
-[ Info: t = 4.8	Δt = 0.05	umax = 1	itertime = 0.0098
-[ Info: t = 6	Δt = 0.05	umax = 1	itertime = 0.0093
-[ Info: t = 7.2	Δt = 0.05	umax = 1	itertime = 0.0091
-[ Info: t = 8.4	Δt = 0.05	umax = 1	itertime = 0.0096
-[ Info: t = 9.6	Δt = 0.05	umax = 1	itertime = 0.0093
-[ Info: t = 10.8	Δt = 0.05	umax = 1	itertime = 0.0093
-[ Info: t = 12	Δt = 0.05	umax = 1	itertime = 0.0091

Post-process

We create a box to visualize the actuator.

julia
box = (
+);
[ Info: t = 1.2	Δt = 0.05	umax = 1.1	itertime = 0.11
+[ Info: t = 2.4	Δt = 0.05	umax = 1	itertime = 0.04
+[ Info: t = 3.6	Δt = 0.05	umax = 1	itertime = 0.0087
+[ Info: t = 4.8	Δt = 0.05	umax = 1	itertime = 0.0094
+[ Info: t = 6	Δt = 0.05	umax = 1	itertime = 0.0087
+[ Info: t = 7.2	Δt = 0.05	umax = 1	itertime = 0.0086
+[ Info: t = 8.4	Δt = 0.05	umax = 1	itertime = 0.0088
+[ Info: t = 9.6	Δt = 0.05	umax = 1	itertime = 0.009
+[ Info: t = 10.8	Δt = 0.05	umax = 1	itertime = 0.0089
+[ Info: t = 12	Δt = 0.05	umax = 1	itertime = 0.0087

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/dev/assets/examples_generated_DecayingTurbulence2D.md.BUaxapZ_.js b/dev/assets/examples_generated_DecayingTurbulence2D.md.Di45Ivji.js
similarity index 95%
rename from dev/assets/examples_generated_DecayingTurbulence2D.md.BUaxapZ_.js
rename to dev/assets/examples_generated_DecayingTurbulence2D.md.Di45Ivji.js
index 84690a02f..923f2d889 100644
--- a/dev/assets/examples_generated_DecayingTurbulence2D.md.BUaxapZ_.js
+++ b/dev/assets/examples_generated_DecayingTurbulence2D.md.Di45Ivji.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as p}from"./chunks/framework.Dr1kDDE8.js";const t="/IncompressibleNavierStokes.jl/dev/DecayingTurbulence2D.mp4",l="/IncompressibleNavierStokes.jl/dev/assets/jnffizt.DlMyxgTb.png",e="/IncompressibleNavierStokes.jl/dev/assets/ivcspuy.Pnvm2dOa.png",h="/IncompressibleNavierStokes.jl/dev/assets/pqbunkl.lOgoLSNC.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.Dr1kDDE8.js";const t="/IncompressibleNavierStokes.jl/dev/DecayingTurbulence2D.mp4",l="/IncompressibleNavierStokes.jl/dev/assets/uvwqkqs.LQXaN1Di.png",e="/IncompressibleNavierStokes.jl/dev/assets/dcezsvt.CcecJ8jR.png",h="/IncompressibleNavierStokes.jl/dev/assets/yoqfjhw.OfhdAyXL.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.Dr1kDDE8.js";const t
         ),
         log = timelogger(; nupdate = 100),
     ),
-);
[ Info: t = 0.0997245	Δt = 0.0011	umax = 3.3	itertime = 0.028
-[ Info: t = 0.205518	Δt = 0.0012	umax = 3	itertime = 0.016
-[ Info: t = 0.311364	Δt = 0.001	umax = 3.5	itertime = 0.016
-[ Info: t = 0.431183	Δt = 0.0013	umax = 2.6	itertime = 0.016
-[ Info: t = 0.579297	Δt = 0.0017	umax = 2.1	itertime = 0.016
-[ Info: t = 0.734226	Δt = 0.0014	umax = 2.4	itertime = 0.016
-[ Info: t = 0.873193	Δt = 0.0014	umax = 2.5	itertime = 0.016

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.105436	Δt = 0.0011	umax = 3.2	itertime = 0.026
+[ Info: t = 0.216847	Δt = 0.00098	umax = 3.6	itertime = 0.015
+[ Info: t = 0.339039	Δt = 0.0013	umax = 2.6	itertime = 0.015
+[ Info: t = 0.462407	Δt = 0.0012	umax = 3	itertime = 0.015
+[ Info: t = 0.583124	Δt = 0.0012	umax = 2.9	itertime = 0.015
+[ Info: t = 0.720378	Δt = 0.0014	umax = 2.6	itertime = 0.015
+[ Info: t = 0.846368	Δt = 0.0012	umax = 2.9	itertime = 0.015
+[ Info: t = 0.976317	Δt = 0.0014	umax = 2.5	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/dev/assets/examples_generated_DecayingTurbulence2D.md.BUaxapZ_.lean.js b/dev/assets/examples_generated_DecayingTurbulence2D.md.Di45Ivji.lean.js
similarity index 95%
rename from dev/assets/examples_generated_DecayingTurbulence2D.md.BUaxapZ_.lean.js
rename to dev/assets/examples_generated_DecayingTurbulence2D.md.Di45Ivji.lean.js
index 84690a02f..923f2d889 100644
--- a/dev/assets/examples_generated_DecayingTurbulence2D.md.BUaxapZ_.lean.js
+++ b/dev/assets/examples_generated_DecayingTurbulence2D.md.Di45Ivji.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as p}from"./chunks/framework.Dr1kDDE8.js";const t="/IncompressibleNavierStokes.jl/dev/DecayingTurbulence2D.mp4",l="/IncompressibleNavierStokes.jl/dev/assets/jnffizt.DlMyxgTb.png",e="/IncompressibleNavierStokes.jl/dev/assets/ivcspuy.Pnvm2dOa.png",h="/IncompressibleNavierStokes.jl/dev/assets/pqbunkl.lOgoLSNC.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.Dr1kDDE8.js";const t="/IncompressibleNavierStokes.jl/dev/DecayingTurbulence2D.mp4",l="/IncompressibleNavierStokes.jl/dev/assets/uvwqkqs.LQXaN1Di.png",e="/IncompressibleNavierStokes.jl/dev/assets/dcezsvt.CcecJ8jR.png",h="/IncompressibleNavierStokes.jl/dev/assets/yoqfjhw.OfhdAyXL.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.Dr1kDDE8.js";const t
         ),
         log = timelogger(; nupdate = 100),
     ),
-);
[ Info: t = 0.0997245	Δt = 0.0011	umax = 3.3	itertime = 0.028
-[ Info: t = 0.205518	Δt = 0.0012	umax = 3	itertime = 0.016
-[ Info: t = 0.311364	Δt = 0.001	umax = 3.5	itertime = 0.016
-[ Info: t = 0.431183	Δt = 0.0013	umax = 2.6	itertime = 0.016
-[ Info: t = 0.579297	Δt = 0.0017	umax = 2.1	itertime = 0.016
-[ Info: t = 0.734226	Δt = 0.0014	umax = 2.4	itertime = 0.016
-[ Info: t = 0.873193	Δt = 0.0014	umax = 2.5	itertime = 0.016

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.105436	Δt = 0.0011	umax = 3.2	itertime = 0.026
+[ Info: t = 0.216847	Δt = 0.00098	umax = 3.6	itertime = 0.015
+[ Info: t = 0.339039	Δt = 0.0013	umax = 2.6	itertime = 0.015
+[ Info: t = 0.462407	Δt = 0.0012	umax = 3	itertime = 0.015
+[ Info: t = 0.583124	Δt = 0.0012	umax = 2.9	itertime = 0.015
+[ Info: t = 0.720378	Δt = 0.0014	umax = 2.6	itertime = 0.015
+[ Info: t = 0.846368	Δt = 0.0012	umax = 2.9	itertime = 0.015
+[ Info: t = 0.976317	Δt = 0.0014	umax = 2.5	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/dev/assets/examples_generated_RayleighBenard2D.md.Cmmj9k1P.lean.js b/dev/assets/examples_generated_RayleighBenard2D.md.DK8wXqn9.js
similarity index 99%
rename from dev/assets/examples_generated_RayleighBenard2D.md.Cmmj9k1P.lean.js
rename to dev/assets/examples_generated_RayleighBenard2D.md.DK8wXqn9.js
index cf2072d36..612f1039a 100644
--- a/dev/assets/examples_generated_RayleighBenard2D.md.Cmmj9k1P.lean.js
+++ b/dev/assets/examples_generated_RayleighBenard2D.md.DK8wXqn9.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.Dr1kDDE8.js";const t="/IncompressibleNavierStokes.jl/dev/assets/yhyiovy.BxypEGK2.png",l="/IncompressibleNavierStokes.jl/dev/RayleighBenard2D.mp4",k="/IncompressibleNavierStokes.jl/dev/assets/jyvtrrx.C3CW_rGA.png",p="/IncompressibleNavierStokes.jl/dev/assets/giyebju.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.Dr1kDDE8.js";const t="/IncompressibleNavierStokes.jl/dev/assets/koitmsv.BxypEGK2.png",l="/IncompressibleNavierStokes.jl/dev/RayleighBenard2D.mp4",k="/IncompressibleNavierStokes.jl/dev/assets/lslbzsj.C3CW_rGA.png",p="/IncompressibleNavierStokes.jl/dev/assets/vyxolzy.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
@@ -93,8 +93,8 @@ import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.Dr1kDDE8.js";const t
     tlims = (T(0), T(20)),
     Δt = T(1e-2),
     processors,
-);
[ Info: t = 10.0001	Δt = 0.01	umax = 0.24	itertime = 0.016
-[ Info: t = 20.0004	Δt = 0.01	umax = 0.55	itertime = 0.013

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")
diff --git a/dev/assets/examples_generated_RayleighBenard2D.md.Cmmj9k1P.js b/dev/assets/examples_generated_RayleighBenard2D.md.DK8wXqn9.lean.js
similarity index 99%
rename from dev/assets/examples_generated_RayleighBenard2D.md.Cmmj9k1P.js
rename to dev/assets/examples_generated_RayleighBenard2D.md.DK8wXqn9.lean.js
index cf2072d36..612f1039a 100644
--- a/dev/assets/examples_generated_RayleighBenard2D.md.Cmmj9k1P.js
+++ b/dev/assets/examples_generated_RayleighBenard2D.md.DK8wXqn9.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.Dr1kDDE8.js";const t="/IncompressibleNavierStokes.jl/dev/assets/yhyiovy.BxypEGK2.png",l="/IncompressibleNavierStokes.jl/dev/RayleighBenard2D.mp4",k="/IncompressibleNavierStokes.jl/dev/assets/jyvtrrx.C3CW_rGA.png",p="/IncompressibleNavierStokes.jl/dev/assets/giyebju.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.Dr1kDDE8.js";const t="/IncompressibleNavierStokes.jl/dev/assets/koitmsv.BxypEGK2.png",l="/IncompressibleNavierStokes.jl/dev/RayleighBenard2D.mp4",k="/IncompressibleNavierStokes.jl/dev/assets/lslbzsj.C3CW_rGA.png",p="/IncompressibleNavierStokes.jl/dev/assets/vyxolzy.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
@@ -93,8 +93,8 @@ import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.Dr1kDDE8.js";const t
     tlims = (T(0), T(20)),
     Δt = T(1e-2),
     processors,
-);
[ Info: t = 10.0001	Δt = 0.01	umax = 0.24	itertime = 0.016
-[ Info: t = 20.0004	Δt = 0.01	umax = 0.55	itertime = 0.013

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")
diff --git a/dev/assets/examples_generated_RayleighTaylor2D.md.C4WmLQbK.js b/dev/assets/examples_generated_RayleighTaylor2D.md.QTiLYjii.js
similarity index 99%
rename from dev/assets/examples_generated_RayleighTaylor2D.md.C4WmLQbK.js
rename to dev/assets/examples_generated_RayleighTaylor2D.md.QTiLYjii.js
index ce9448534..d609a2689 100644
--- a/dev/assets/examples_generated_RayleighTaylor2D.md.C4WmLQbK.js
+++ b/dev/assets/examples_generated_RayleighTaylor2D.md.QTiLYjii.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.Dr1kDDE8.js";const k="/IncompressibleNavierStokes.jl/dev/assets/aeuusgj.C2NI-x6W.png",t="/IncompressibleNavierStokes.jl/dev/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.Dr1kDDE8.js";const k="/IncompressibleNavierStokes.jl/dev/assets/pmidlev.C2NI-x6W.png",t="/IncompressibleNavierStokes.jl/dev/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,14 +35,14 @@ import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.Dr1kDDE8.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.0033
-[ Info: t = 3	Δt = 0.005	umax = 0.78	itertime = 0.0034
-[ Info: t = 4	Δt = 0.005	umax = 0.75	itertime = 0.0033
-[ Info: t = 5	Δt = 0.005	umax = 0.78	itertime = 0.0033
+[ 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 = 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.0033
-[ Info: t = 7	Δt = 0.005	umax = 0.84	itertime = 0.0033
-[ Info: t = 8	Δt = 0.005	umax = 0.89	itertime = 0.0033
-[ Info: t = 9	Δt = 0.005	umax = 1.2	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.0032
+[ Info: t = 9	Δt = 0.005	umax = 1.2	itertime = 0.0032
 [ Info: t = 10	Δt = 0.005	umax = 0.88	itertime = 0.0033

Copy-pasteable code

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

julia
using GLMakie
 using IncompressibleNavierStokes
 
diff --git a/dev/assets/examples_generated_RayleighTaylor2D.md.C4WmLQbK.lean.js b/dev/assets/examples_generated_RayleighTaylor2D.md.QTiLYjii.lean.js
similarity index 99%
rename from dev/assets/examples_generated_RayleighTaylor2D.md.C4WmLQbK.lean.js
rename to dev/assets/examples_generated_RayleighTaylor2D.md.QTiLYjii.lean.js
index ce9448534..d609a2689 100644
--- a/dev/assets/examples_generated_RayleighTaylor2D.md.C4WmLQbK.lean.js
+++ b/dev/assets/examples_generated_RayleighTaylor2D.md.QTiLYjii.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.Dr1kDDE8.js";const k="/IncompressibleNavierStokes.jl/dev/assets/aeuusgj.C2NI-x6W.png",t="/IncompressibleNavierStokes.jl/dev/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.Dr1kDDE8.js";const k="/IncompressibleNavierStokes.jl/dev/assets/pmidlev.C2NI-x6W.png",t="/IncompressibleNavierStokes.jl/dev/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,14 +35,14 @@ import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.Dr1kDDE8.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.0033
-[ Info: t = 3	Δt = 0.005	umax = 0.78	itertime = 0.0034
-[ Info: t = 4	Δt = 0.005	umax = 0.75	itertime = 0.0033
-[ Info: t = 5	Δt = 0.005	umax = 0.78	itertime = 0.0033
+[ 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 = 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.0033
-[ Info: t = 7	Δt = 0.005	umax = 0.84	itertime = 0.0033
-[ Info: t = 8	Δt = 0.005	umax = 0.89	itertime = 0.0033
-[ Info: t = 9	Δt = 0.005	umax = 1.2	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.0032
+[ Info: t = 9	Δt = 0.005	umax = 1.2	itertime = 0.0032
 [ Info: t = 10	Δt = 0.005	umax = 0.88	itertime = 0.0033

Copy-pasteable code

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

julia
using GLMakie
 using IncompressibleNavierStokes
 
diff --git a/dev/assets/examples_generated_TaylorGreenVortex2D.md.XLjKfMqJ.js b/dev/assets/examples_generated_TaylorGreenVortex2D.md.BBlb1Y2_.js
similarity index 99%
rename from dev/assets/examples_generated_TaylorGreenVortex2D.md.XLjKfMqJ.js
rename to dev/assets/examples_generated_TaylorGreenVortex2D.md.BBlb1Y2_.js
index d4e9d2fa4..5a4d9cb0a 100644
--- a/dev/assets/examples_generated_TaylorGreenVortex2D.md.XLjKfMqJ.js
+++ b/dev/assets/examples_generated_TaylorGreenVortex2D.md.BBlb1Y2_.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.Dr1kDDE8.js";const p="/IncompressibleNavierStokes.jl/dev/assets/izirzso.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.Dr1kDDE8.js";const p="/IncompressibleNavierStokes.jl/dev/assets/ebauyfm.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/dev/assets/examples_generated_TaylorGreenVortex2D.md.XLjKfMqJ.lean.js b/dev/assets/examples_generated_TaylorGreenVortex2D.md.BBlb1Y2_.lean.js
similarity index 99%
rename from dev/assets/examples_generated_TaylorGreenVortex2D.md.XLjKfMqJ.lean.js
rename to dev/assets/examples_generated_TaylorGreenVortex2D.md.BBlb1Y2_.lean.js
index d4e9d2fa4..5a4d9cb0a 100644
--- a/dev/assets/examples_generated_TaylorGreenVortex2D.md.XLjKfMqJ.lean.js
+++ b/dev/assets/examples_generated_TaylorGreenVortex2D.md.BBlb1Y2_.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.Dr1kDDE8.js";const p="/IncompressibleNavierStokes.jl/dev/assets/izirzso.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.Dr1kDDE8.js";const p="/IncompressibleNavierStokes.jl/dev/assets/ebauyfm.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/dev/assets/bbydpmh.B0GX2W7p.png b/dev/assets/giwhfzn.B0GX2W7p.png
similarity index 100%
rename from dev/assets/bbydpmh.B0GX2W7p.png
rename to dev/assets/giwhfzn.B0GX2W7p.png
diff --git a/dev/assets/joyoqhm.D0gpz0HH.png b/dev/assets/hcmbwbw.D0gpz0HH.png
similarity index 100%
rename from dev/assets/joyoqhm.D0gpz0HH.png
rename to dev/assets/hcmbwbw.D0gpz0HH.png
diff --git a/dev/assets/ivcspuy.Pnvm2dOa.png b/dev/assets/ivcspuy.Pnvm2dOa.png
deleted file mode 100644
index 7b2b201ac460cba511c62e782cfa118fdf5d3cc3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 50098
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
B);$0K

diff --git a/dev/assets/yhyiovy.BxypEGK2.png b/dev/assets/koitmsv.BxypEGK2.png
similarity index 100%
rename from dev/assets/yhyiovy.BxypEGK2.png
rename to dev/assets/koitmsv.BxypEGK2.png
diff --git a/dev/assets/jyvtrrx.C3CW_rGA.png b/dev/assets/lslbzsj.C3CW_rGA.png
similarity index 100%
rename from dev/assets/jyvtrrx.C3CW_rGA.png
rename to dev/assets/lslbzsj.C3CW_rGA.png
diff --git a/dev/assets/manual_closure.md.Bl_bxqy7.lean.js b/dev/assets/manual_closure.md.Bp4YxggZ.js
similarity index 97%
rename from dev/assets/manual_closure.md.Bl_bxqy7.lean.js
rename to dev/assets/manual_closure.md.Bp4YxggZ.js
index 4aeb55510..5a50c5546 100644
--- a/dev/assets/manual_closure.md.Bl_bxqy7.lean.js
+++ b/dev/assets/manual_closure.md.Bp4YxggZ.js
@@ -1,8 +1,8 @@
-import{_ as r,c as n,a5 as e,j as t,a,G as i,B as d,o}from"./chunks/framework.Dr1kDDE8.js";const z1=JSON.parse('{"title":"Neural closure models","description":"","frontmatter":{},"headers":[],"relativePath":"manual/closure.md","filePath":"manual/closure.md","lastUpdated":null}'),p={name:"manual/closure.md"},T={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"}},c={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"},g={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"}},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:"jldocstring custom-block",open:""},$={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},K={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"},Y={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:"0.98ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 433 453","aria-hidden":"true"},t1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},s1={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"},l1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i1={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"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={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"},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:"5.117ex",height:"1.892ex",role:"img",focusable:"false",viewBox:"0 -836.1 2261.7 836.1","aria-hidden":"true"},p1={class:"jldocstring custom-block",open:""},T1={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:""},c1={class:"jldocstring custom-block",open:""},g1={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:""},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:"jldocstring custom-block",open:""},V1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N1={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"},Z1={class:"jldocstring custom-block",open:""},D1={class:"jldocstring custom-block",open:""};function F1(A1,s,O1,S1,B1,R1){const l=d("Badge");return o(),n("div",null,[s[169]||(s[169]=e(`

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",T,[(o(),n("svg",Q,s[0]||(s[0]=[e('',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]=a("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]=a(", the extracted large scale components ")),t("mjx-container",u,[(o(),n("svg",c,s[4]||(s[4]=[e('',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]=a(" are governed by the equation"))]),t("mjx-container",g,[(o(),n("svg",k,s[9]||(s[9]=[e('',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]=a("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]=a(", ")),t("mjx-container",x,[(o(),n("svg",f,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]=a(", and ")),t("mjx-container",E,[(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]=a(" are adapted to the size of their inputs and ")),t("mjx-container",v,[(o(),n("svg",H,s[17]||(s[17]=[e('',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]=a(" 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]=a(" 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]=a(" 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]=a(" with a parameterized closure model ")),t("mjx-container",Z,[(o(),n("svg",D,s[25]||(s[25]=[e('',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]=a(" gives the LES equations for the approximate large scale velocity ")),t("mjx-container",F,[(o(),n("svg",A,s[27]||(s[27]=[e('',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]=[e('',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[170]||(s[170]=t("h2",{id:"NeuralClosure-module",tabindex:"-1"},[a("NeuralClosure module "),t("a",{class:"header-anchor",href:"#NeuralClosure-module","aria-label":'Permalink to "NeuralClosure module {#NeuralClosure-module}"'},"​")],-1)),s[171]||(s[171]=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]=a()),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/03acafa3566742b1f37d722d2207f5dc21d031c0/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]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[46]||(s[46]=e('
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]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[49]||(s[49]=e('
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.create_tensorclosure-Tuple",href:"#NeuralClosure.create_tensorclosure-Tuple"},[t("span",{class:"jlbinding"},"NeuralClosure.create_tensorclosure")],-1)),s[51]||(s[51]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[52]||(s[52]=e('
julia
create_tensorclosure(layers...; setup, rng)

Create tensor basis closure.

source

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

Interpolate closure force from volume centers to volume faces.

source

',3))]),t("details",q,[t("summary",null,[s[56]||(s[56]=t("a",{id:"NeuralClosure.wrappedclosure-Tuple{Any, Any}",href:"#NeuralClosure.wrappedclosure-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.wrappedclosure")],-1)),s[57]||(s[57]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[58]||(s[58]=e(`
julia
wrappedclosure(
+import{_ as r,c as n,a5 as e,j as t,a,G as i,B as d,o}from"./chunks/framework.Dr1kDDE8.js";const z1=JSON.parse('{"title":"Neural closure models","description":"","frontmatter":{},"headers":[],"relativePath":"manual/closure.md","filePath":"manual/closure.md","lastUpdated":null}'),p={name:"manual/closure.md"},T={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"}},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:"jldocstring custom-block",open:""},$={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},K={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"},Y={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:"0.98ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 433 453","aria-hidden":"true"},t1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},s1={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"},l1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i1={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"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={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"},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:"5.117ex",height:"1.892ex",role:"img",focusable:"false",viewBox:"0 -836.1 2261.7 836.1","aria-hidden":"true"},p1={class:"jldocstring custom-block",open:""},T1={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:""},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:"jldocstring custom-block",open:""},V1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N1={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"},Z1={class:"jldocstring custom-block",open:""},D1={class:"jldocstring custom-block",open:""};function F1(A1,s,O1,S1,B1,R1){const l=d("Badge");return o(),n("div",null,[s[169]||(s[169]=e(`

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",T,[(o(),n("svg",Q,s[0]||(s[0]=[e('',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]=a("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]=a(", the extracted large scale components ")),t("mjx-container",u,[(o(),n("svg",g,s[4]||(s[4]=[e('',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]=a(" are governed by the equation"))]),t("mjx-container",c,[(o(),n("svg",k,s[9]||(s[9]=[e('',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]=a("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]=a(", ")),t("mjx-container",x,[(o(),n("svg",f,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]=a(", and ")),t("mjx-container",E,[(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]=a(" are adapted to the size of their inputs and ")),t("mjx-container",v,[(o(),n("svg",H,s[17]||(s[17]=[e('',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]=a(" 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]=a(" 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]=a(" 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]=a(" with a parameterized closure model ")),t("mjx-container",Z,[(o(),n("svg",D,s[25]||(s[25]=[e('',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]=a(" gives the LES equations for the approximate large scale velocity ")),t("mjx-container",F,[(o(),n("svg",A,s[27]||(s[27]=[e('',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]=[e('',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[170]||(s[170]=t("h2",{id:"NeuralClosure-module",tabindex:"-1"},[a("NeuralClosure module "),t("a",{class:"header-anchor",href:"#NeuralClosure-module","aria-label":'Permalink to "NeuralClosure module {#NeuralClosure-module}"'},"​")],-1)),s[171]||(s[171]=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]=a()),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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[46]||(s[46]=e('
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]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[49]||(s[49]=e('
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.create_tensorclosure-Tuple",href:"#NeuralClosure.create_tensorclosure-Tuple"},[t("span",{class:"jlbinding"},"NeuralClosure.create_tensorclosure")],-1)),s[51]||(s[51]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[52]||(s[52]=e('
julia
create_tensorclosure(layers...; setup, rng)

Create tensor basis closure.

source

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

Interpolate closure force from volume centers to volume faces.

source

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

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

source

`,3))]),s[172]||(s[172]=t("h2",{id:"filters",tabindex:"-1"},[a("Filters "),t("a",{class:"header-anchor",href:"#filters","aria-label":'Permalink to "Filters"'},"​")],-1)),s[173]||(s[173]=t("p",null,"The following filters are available:",-1)),t("details",X,[t("summary",null,[s[59]||(s[59]=t("a",{id:"NeuralClosure.AbstractFilter",href:"#NeuralClosure.AbstractFilter"},[t("span",{class:"jlbinding"},"NeuralClosure.AbstractFilter")],-1)),s[60]||(s[60]=a()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[61]||(s[61]=e('
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",J,[t("summary",null,[s[62]||(s[62]=t("a",{id:"NeuralClosure.FaceAverage",href:"#NeuralClosure.FaceAverage"},[t("span",{class:"jlbinding"},"NeuralClosure.FaceAverage")],-1)),s[63]||(s[63]=a()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[64]||(s[64]=e('
julia
struct FaceAverage <: NeuralClosure.AbstractFilter

Average fine grid velocity field over coarse volume face.

Fields

source

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

Average fine grid velocity field over coarse volume.

Fields

source

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

Reconstruct DNS velocity u from LES velocity v.

source

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

Reconstruct DNS velocity field. See also reconstruct!.

source

',3))]),s[174]||(s[174]=t("h2",{id:"training",tabindex:"-1"},[a("Training "),t("a",{class:"header-anchor",href:"#training","aria-label":'Permalink to "Training"'},"​")],-1)),t("p",null,[s[78]||(s[78]=a("To improve the model parameters, we exploit exact filtered DNS data ")),t("mjx-container",$,[(o(),n("svg",K,s[74]||(s[74]=[e('',1)]))),s[75]||(s[75]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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[79]||(s[79]=a(" and exact commutator errors ")),t("mjx-container",Y,[(o(),n("svg",_,s[76]||(s[76]=[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[77]||(s[77]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 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[80]||(s[80]=a(" obtained through DNS. The model is trained by minimizing the a priori loss function"))]),t("mjx-container",t1,[(o(),n("svg",s1,s[81]||(s[81]=[e('',1)]))),s[82]||(s[82]=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[175]||(s[175]=t("p",null,"or the a posteriori loss function",-1)),t("mjx-container",a1,[(o(),n("svg",e1,s[83]||(s[83]=[e('',1)]))),s[84]||(s[84]=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[91]||(s[91]=a("where ")),t("mjx-container",l1,[(o(),n("svg",i1,s[85]||(s[85]=[e('',1)]))),s[86]||(s[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("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mi",null,"θ")])])],-1))]),s[92]||(s[92]=a(" is the solution to the LES equation for the given parameters ")),t("mjx-container",n1,[(o(),n("svg",o1,s[87]||(s[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":"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[88]||(s[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,"θ")])],-1))]),s[93]||(s[93]=a(". The prior loss is easy to evaluate and easy to differentiate, as it does not involve solving the ODE. However, minimizing ")),t("mjx-container",r1,[(o(),n("svg",d1,s[89]||(s[89]=[e('',1)]))),s[90]||(s[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("msup",null,[t("mi",null,"L"),t("mtext",null,"prior")])])],-1))]),s[94]||(s[94]=a(" 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",p1,[t("summary",null,[s[95]||(s[95]=t("a",{id:"NeuralClosure.create_callback-Tuple{Any}",href:"#NeuralClosure.create_callback-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_callback")],-1)),s[96]||(s[96]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[97]||(s[97]=e(`
julia
create_callback(
+) -> NeuralClosure.var"#neuralclosure#1"

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

source

`,3))]),s[172]||(s[172]=t("h2",{id:"filters",tabindex:"-1"},[a("Filters "),t("a",{class:"header-anchor",href:"#filters","aria-label":'Permalink to "Filters"'},"​")],-1)),s[173]||(s[173]=t("p",null,"The following filters are available:",-1)),t("details",X,[t("summary",null,[s[59]||(s[59]=t("a",{id:"NeuralClosure.AbstractFilter",href:"#NeuralClosure.AbstractFilter"},[t("span",{class:"jlbinding"},"NeuralClosure.AbstractFilter")],-1)),s[60]||(s[60]=a()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[61]||(s[61]=e('
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",J,[t("summary",null,[s[62]||(s[62]=t("a",{id:"NeuralClosure.FaceAverage",href:"#NeuralClosure.FaceAverage"},[t("span",{class:"jlbinding"},"NeuralClosure.FaceAverage")],-1)),s[63]||(s[63]=a()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[64]||(s[64]=e('
julia
struct FaceAverage <: NeuralClosure.AbstractFilter

Average fine grid velocity field over coarse volume face.

Fields

source

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

Average fine grid velocity field over coarse volume.

Fields

source

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

Reconstruct DNS velocity u from LES velocity v.

source

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

Reconstruct DNS velocity field. See also reconstruct!.

source

',3))]),s[174]||(s[174]=t("h2",{id:"training",tabindex:"-1"},[a("Training "),t("a",{class:"header-anchor",href:"#training","aria-label":'Permalink to "Training"'},"​")],-1)),t("p",null,[s[78]||(s[78]=a("To improve the model parameters, we exploit exact filtered DNS data ")),t("mjx-container",$,[(o(),n("svg",K,s[74]||(s[74]=[e('',1)]))),s[75]||(s[75]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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[79]||(s[79]=a(" and exact commutator errors ")),t("mjx-container",Y,[(o(),n("svg",_,s[76]||(s[76]=[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[77]||(s[77]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 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[80]||(s[80]=a(" obtained through DNS. The model is trained by minimizing the a priori loss function"))]),t("mjx-container",t1,[(o(),n("svg",s1,s[81]||(s[81]=[e('',1)]))),s[82]||(s[82]=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[175]||(s[175]=t("p",null,"or the a posteriori loss function",-1)),t("mjx-container",a1,[(o(),n("svg",e1,s[83]||(s[83]=[e('',1)]))),s[84]||(s[84]=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[91]||(s[91]=a("where ")),t("mjx-container",l1,[(o(),n("svg",i1,s[85]||(s[85]=[e('',1)]))),s[86]||(s[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("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mi",null,"θ")])])],-1))]),s[92]||(s[92]=a(" is the solution to the LES equation for the given parameters ")),t("mjx-container",n1,[(o(),n("svg",o1,s[87]||(s[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":"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[88]||(s[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,"θ")])],-1))]),s[93]||(s[93]=a(". The prior loss is easy to evaluate and easy to differentiate, as it does not involve solving the ODE. However, minimizing ")),t("mjx-container",r1,[(o(),n("svg",d1,s[89]||(s[89]=[e('',1)]))),s[90]||(s[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("msup",null,[t("mi",null,"L"),t("mtext",null,"prior")])])],-1))]),s[94]||(s[94]=a(" 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",p1,[t("summary",null,[s[95]||(s[95]=t("a",{id:"NeuralClosure.create_callback-Tuple{Any}",href:"#NeuralClosure.create_callback-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_callback")],-1)),s[96]||(s[96]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[97]||(s[97]=e(`
julia
create_callback(
     err;
     θ,
     callbackstate,
@@ -11,29 +11,29 @@ import{_ as r,c as n,a5 as e,j as t,a,G as i,B as d,o}from"./chunks/framework.Dr
     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,[s[98]||(s[98]=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[99]||(s[99]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[100]||(s[100]=e(`
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[98]||(s[98]=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[99]||(s[99]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[100]||(s[100]=e(`
julia
create_dataloader_post(
     trajectories;
     ntrajectory,
     nunroll,
     device
-)

Create trajectory dataloader.

source

`,3))]),t("details",Q1,[t("summary",null,[s[101]||(s[101]=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[102]||(s[102]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[103]||(s[103]=e(`
julia
create_dataloader_prior(
+)

Create trajectory dataloader.

source

`,3))]),t("details",Q1,[t("summary",null,[s[101]||(s[101]=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[102]||(s[102]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[103]||(s[103]=e(`
julia
create_dataloader_prior(
     data;
     batchsize,
     device
-) -> NeuralClosure.var"#dataloader#44"{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",m1,[t("summary",null,[s[104]||(s[104]=t("a",{id:"NeuralClosure.create_loss_post-Tuple{}",href:"#NeuralClosure.create_loss_post-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_loss_post")],-1)),s[105]||(s[105]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[106]||(s[106]=e(`
julia
create_loss_post(
+) -> NeuralClosure.var"#dataloader#44"{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",m1,[t("summary",null,[s[104]||(s[104]=t("a",{id:"NeuralClosure.create_loss_post-Tuple{}",href:"#NeuralClosure.create_loss_post-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_loss_post")],-1)),s[105]||(s[105]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[106]||(s[106]=e(`
julia
create_loss_post(
 ;
     setup,
     method,
     psolver,
     closure,
     nsubstep
-)

Create a-posteriori loss function.

source

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

Create a-posteriori loss function.

source

`,3))]),t("details",h1,[t("summary",null,[s[107]||(s[107]=t("a",{id:"NeuralClosure.create_loss_prior",href:"#NeuralClosure.create_loss_prior"},[t("span",{class:"jlbinding"},"NeuralClosure.create_loss_prior")],-1)),s[108]||(s[108]=a()),i(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[109]||(s[109]=e(`
julia
create_loss_prior(
     f
 ) -> NeuralClosure.var"#loss_prior#57"{_A, NeuralClosure.var"#55#56"} where _A
 create_loss_prior(
     f,
     normalize
-) -> NeuralClosure.var"#loss_prior#57"

Return mean squared error loss for the predictor f.

source

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

Return mean squared error loss for the predictor f.

source

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

Create a-posteriori relative error.

source

`,3))]),t("details",c1,[t("summary",null,[s[113]||(s[113]=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[114]||(s[114]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[115]||(s[115]=e('
julia
create_relerr_prior(f, x, y) -> NeuralClosure.var"#58#59"

Create a-priori error.

source

',3))]),t("details",g1,[t("summary",null,[s[116]||(s[116]=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[117]||(s[117]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[118]||(s[118]=e(`
julia
create_relerr_symmetry_post(
+)

Create a-posteriori relative error.

source

`,3))]),t("details",g1,[t("summary",null,[s[113]||(s[113]=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[114]||(s[114]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[115]||(s[115]=e('
julia
create_relerr_prior(f, x, y) -> NeuralClosure.var"#58#59"

Create a-priori error.

source

',3))]),t("details",c1,[t("summary",null,[s[116]||(s[116]=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[117]||(s[117]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[118]||(s[118]=e(`
julia
create_relerr_symmetry_post(
 ;
     u,
     setup,
@@ -50,7 +50,7 @@ import{_ as r,c as n,a5 as e,j as t,a,G as i,B as d,o}from"./chunks/framework.Dr
     Δt,
     nstep,
     g
-)

Create a-posteriori symmetry error.

source

`,3))]),t("details",k1,[t("summary",null,[s[119]||(s[119]=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[120]||(s[120]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[121]||(s[121]=e('
julia
create_relerr_symmetry_prior(; u, setup, g)

Create a-priori equivariance error.

source

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

Create a-posteriori symmetry error.

source

`,3))]),t("details",k1,[t("summary",null,[s[119]||(s[119]=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[120]||(s[120]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[121]||(s[121]=e('
julia
create_relerr_symmetry_prior(; u, setup, g)

Create a-priori equivariance error.

source

',3))]),t("details",y1,[t("summary",null,[s[122]||(s[122]=t("a",{id:"NeuralClosure.train-Tuple{}",href:"#NeuralClosure.train-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.train")],-1)),s[123]||(s[123]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[124]||(s[124]=e(`
julia
train(
 ;
     dataloader,
     loss,
@@ -59,7 +59,7 @@ import{_ as r,c as n,a5 as e,j as t,a,G as i,B as d,o}from"./chunks/framework.Dr
     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,[s[125]||(s[125]=t("a",{id:"NeuralClosure.trainepoch-Tuple{}",href:"#NeuralClosure.trainepoch-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.trainepoch")],-1)),s[126]||(s[126]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[127]||(s[127]=e(`
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",b1,[t("summary",null,[s[125]||(s[125]=t("a",{id:"NeuralClosure.trainepoch-Tuple{}",href:"#NeuralClosure.trainepoch-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.trainepoch")],-1)),s[126]||(s[126]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[127]||(s[127]=e(`
julia
trainepoch(
 ;
     dataloader,
     loss,
@@ -69,7 +69,7 @@ import{_ as r,c as n,a5 as e,j as t,a,G as i,B as d,o}from"./chunks/framework.Dr
     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))]),s[176]||(s[176]=t("h2",{id:"Neural-architectures",tabindex:"-1"},[a("Neural architectures "),t("a",{class:"header-anchor",href:"#Neural-architectures","aria-label":'Permalink to "Neural architectures {#Neural-architectures}"'},"​")],-1)),s[177]||(s[177]=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",x1,[t("summary",null,[s[128]||(s[128]=t("a",{id:"NeuralClosure.cnn-Tuple{}",href:"#NeuralClosure.cnn-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.cnn")],-1)),s[129]||(s[129]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[130]||(s[130]=e(`
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[176]||(s[176]=t("h2",{id:"Neural-architectures",tabindex:"-1"},[a("Neural architectures "),t("a",{class:"header-anchor",href:"#Neural-architectures","aria-label":'Permalink to "Neural architectures {#Neural-architectures}"'},"​")],-1)),s[177]||(s[177]=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",x1,[t("summary",null,[s[128]||(s[128]=t("a",{id:"NeuralClosure.cnn-Tuple{}",href:"#NeuralClosure.cnn-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.cnn")],-1)),s[129]||(s[129]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[130]||(s[130]=e(`
julia
cnn(
 ;
     setup,
     radii,
@@ -78,7 +78,7 @@ import{_ as r,c as n,a5 as e,j as t,a,G as i,B as d,o}from"./chunks/framework.Dr
     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",f1,[t("summary",null,[s[131]||(s[131]=t("a",{id:"NeuralClosure.GroupConv2D",href:"#NeuralClosure.GroupConv2D"},[t("span",{class:"jlbinding"},"NeuralClosure.GroupConv2D")],-1)),s[132]||(s[132]=a()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[133]||(s[133]=e('
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[134]||(s[134]=t("a",{id:"NeuralClosure.gcnn-Tuple{}",href:"#NeuralClosure.gcnn-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.gcnn")],-1)),s[135]||(s[135]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[136]||(s[136]=e('
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",w1,[t("summary",null,[s[137]||(s[137]=t("a",{id:"NeuralClosure.rot2",href:"#NeuralClosure.rot2"},[t("span",{class:"jlbinding"},"NeuralClosure.rot2")],-1)),s[138]||(s[138]=a()),i(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[139]||(s[139]=e('
julia
rot2(u, r)

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

source

',3))]),t("details",v1,[t("summary",null,[s[140]||(s[140]=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[141]||(s[141]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[142]||(s[142]=e('
julia
rot2(u::Tuple{T, T}, r) -> Union{Nothing, Tuple{Any, Any}}

Rotate vector fields [ux;;; uy]

source

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

Rotate staggered grid velocity field. See also rot2.

source

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

Rotate vector fields [ux;;; uy]

source

',3))]),t("details",C1,[t("summary",null,[s[149]||(s[149]=t("a",{id:"NeuralClosure.FourierLayer",href:"#NeuralClosure.FourierLayer"},[t("span",{class:"jlbinding"},"NeuralClosure.FourierLayer")],-1)),s[150]||(s[150]=a()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[151]||(s[151]=e('
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",M1,[t("summary",null,[s[152]||(s[152]=t("a",{id:"NeuralClosure.fno-Tuple{}",href:"#NeuralClosure.fno-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.fno")],-1)),s[153]||(s[153]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[154]||(s[154]=e('
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[178]||(s[178]=t("h2",{id:"Data-generation",tabindex:"-1"},[a("Data generation "),t("a",{class:"header-anchor",href:"#Data-generation","aria-label":'Permalink to "Data generation {#Data-generation}"'},"​")],-1)),t("details",L1,[t("summary",null,[s[155]||(s[155]=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[156]||(s[156]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[161]||(s[161]=e('
julia
create_io_arrays(data, setup) -> NamedTuple
',1)),t("p",null,[s[159]||(s[159]=a("Create ")),t("mjx-container",V1,[(o(),n("svg",N1,s[157]||(s[157]=[e('',1)]))),s[158]||(s[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("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[160]||(s[160]=a(" pairs for a-priori training."))]),s[162]||(s[162]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/03acafa3566742b1f37d722d2207f5dc21d031c0/lib/NeuralClosure/src/data_generation.jl#L228",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",Z1,[t("summary",null,[s[163]||(s[163]=t("a",{id:"NeuralClosure.create_les_data-Tuple{}",href:"#NeuralClosure.create_les_data-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_les_data")],-1)),s[164]||(s[164]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[165]||(s[165]=e(`
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",f1,[t("summary",null,[s[131]||(s[131]=t("a",{id:"NeuralClosure.GroupConv2D",href:"#NeuralClosure.GroupConv2D"},[t("span",{class:"jlbinding"},"NeuralClosure.GroupConv2D")],-1)),s[132]||(s[132]=a()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[133]||(s[133]=e('
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[134]||(s[134]=t("a",{id:"NeuralClosure.gcnn-Tuple{}",href:"#NeuralClosure.gcnn-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.gcnn")],-1)),s[135]||(s[135]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[136]||(s[136]=e('
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",w1,[t("summary",null,[s[137]||(s[137]=t("a",{id:"NeuralClosure.rot2",href:"#NeuralClosure.rot2"},[t("span",{class:"jlbinding"},"NeuralClosure.rot2")],-1)),s[138]||(s[138]=a()),i(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[139]||(s[139]=e('
julia
rot2(u, r)

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

source

',3))]),t("details",v1,[t("summary",null,[s[140]||(s[140]=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[141]||(s[141]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[142]||(s[142]=e('
julia
rot2(u::Tuple{T, T}, r) -> Union{Nothing, Tuple{Any, Any}}

Rotate vector fields [ux;;; uy]

source

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

Rotate staggered grid velocity field. See also rot2.

source

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

Rotate vector fields [ux;;; uy]

source

',3))]),t("details",C1,[t("summary",null,[s[149]||(s[149]=t("a",{id:"NeuralClosure.FourierLayer",href:"#NeuralClosure.FourierLayer"},[t("span",{class:"jlbinding"},"NeuralClosure.FourierLayer")],-1)),s[150]||(s[150]=a()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[151]||(s[151]=e('
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",M1,[t("summary",null,[s[152]||(s[152]=t("a",{id:"NeuralClosure.fno-Tuple{}",href:"#NeuralClosure.fno-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.fno")],-1)),s[153]||(s[153]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[154]||(s[154]=e('
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[178]||(s[178]=t("h2",{id:"Data-generation",tabindex:"-1"},[a("Data generation "),t("a",{class:"header-anchor",href:"#Data-generation","aria-label":'Permalink to "Data generation {#Data-generation}"'},"​")],-1)),t("details",L1,[t("summary",null,[s[155]||(s[155]=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[156]||(s[156]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[161]||(s[161]=e('
julia
create_io_arrays(data, setup) -> NamedTuple
',1)),t("p",null,[s[159]||(s[159]=a("Create ")),t("mjx-container",V1,[(o(),n("svg",N1,s[157]||(s[157]=[e('',1)]))),s[158]||(s[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("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[160]||(s[160]=a(" pairs for a-priori training."))]),s[162]||(s[162]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/a63d20e3a410f14ba6cc612a27e89f8974019d9f/lib/NeuralClosure/src/data_generation.jl#L228",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",Z1,[t("summary",null,[s[163]||(s[163]=t("a",{id:"NeuralClosure.create_les_data-Tuple{}",href:"#NeuralClosure.create_les_data-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_les_data")],-1)),s[164]||(s[164]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[165]||(s[165]=e(`
julia
create_les_data(
 ;
     D,
     Re,
@@ -98,7 +98,7 @@ import{_ as r,c as n,a5 as e,j as t,a,G as i,B as d,o}from"./chunks/framework.Dr
     rng,
     filenames,
     kwargs...
-)

Create filtered DNS data.

source

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

Create filtered DNS data.

source

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

Save filtered DNS data.

source

`,3))])])}const G1=r(p,[["render",F1]]);export{z1 as __pageData,G1 as default}; +)

Save filtered DNS data.

source

`,3))])])}const G1=r(p,[["render",F1]]);export{z1 as __pageData,G1 as default}; diff --git a/dev/assets/manual_closure.md.Bl_bxqy7.js b/dev/assets/manual_closure.md.Bp4YxggZ.lean.js similarity index 97% rename from dev/assets/manual_closure.md.Bl_bxqy7.js rename to dev/assets/manual_closure.md.Bp4YxggZ.lean.js index 4aeb55510..5a50c5546 100644 --- a/dev/assets/manual_closure.md.Bl_bxqy7.js +++ b/dev/assets/manual_closure.md.Bp4YxggZ.lean.js @@ -1,8 +1,8 @@ -import{_ as r,c as n,a5 as e,j as t,a,G as i,B as d,o}from"./chunks/framework.Dr1kDDE8.js";const z1=JSON.parse('{"title":"Neural closure models","description":"","frontmatter":{},"headers":[],"relativePath":"manual/closure.md","filePath":"manual/closure.md","lastUpdated":null}'),p={name:"manual/closure.md"},T={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"}},c={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"},g={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"}},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:"jldocstring custom-block",open:""},$={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},K={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"},Y={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:"0.98ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 433 453","aria-hidden":"true"},t1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},s1={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"},l1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i1={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"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={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"},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:"5.117ex",height:"1.892ex",role:"img",focusable:"false",viewBox:"0 -836.1 2261.7 836.1","aria-hidden":"true"},p1={class:"jldocstring custom-block",open:""},T1={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:""},c1={class:"jldocstring custom-block",open:""},g1={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:""},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:"jldocstring custom-block",open:""},V1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N1={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"},Z1={class:"jldocstring custom-block",open:""},D1={class:"jldocstring custom-block",open:""};function F1(A1,s,O1,S1,B1,R1){const l=d("Badge");return o(),n("div",null,[s[169]||(s[169]=e(`

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",T,[(o(),n("svg",Q,s[0]||(s[0]=[e('',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]=a("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]=a(", the extracted large scale components ")),t("mjx-container",u,[(o(),n("svg",c,s[4]||(s[4]=[e('',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]=a(" are governed by the equation"))]),t("mjx-container",g,[(o(),n("svg",k,s[9]||(s[9]=[e('',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]=a("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]=a(", ")),t("mjx-container",x,[(o(),n("svg",f,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]=a(", and ")),t("mjx-container",E,[(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]=a(" are adapted to the size of their inputs and ")),t("mjx-container",v,[(o(),n("svg",H,s[17]||(s[17]=[e('',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]=a(" 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]=a(" 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]=a(" 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]=a(" with a parameterized closure model ")),t("mjx-container",Z,[(o(),n("svg",D,s[25]||(s[25]=[e('',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]=a(" gives the LES equations for the approximate large scale velocity ")),t("mjx-container",F,[(o(),n("svg",A,s[27]||(s[27]=[e('',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]=[e('',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[170]||(s[170]=t("h2",{id:"NeuralClosure-module",tabindex:"-1"},[a("NeuralClosure module "),t("a",{class:"header-anchor",href:"#NeuralClosure-module","aria-label":'Permalink to "NeuralClosure module {#NeuralClosure-module}"'},"​")],-1)),s[171]||(s[171]=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]=a()),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/03acafa3566742b1f37d722d2207f5dc21d031c0/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]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[46]||(s[46]=e('
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]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[49]||(s[49]=e('
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.create_tensorclosure-Tuple",href:"#NeuralClosure.create_tensorclosure-Tuple"},[t("span",{class:"jlbinding"},"NeuralClosure.create_tensorclosure")],-1)),s[51]||(s[51]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[52]||(s[52]=e('
julia
create_tensorclosure(layers...; setup, rng)

Create tensor basis closure.

source

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

Interpolate closure force from volume centers to volume faces.

source

',3))]),t("details",q,[t("summary",null,[s[56]||(s[56]=t("a",{id:"NeuralClosure.wrappedclosure-Tuple{Any, Any}",href:"#NeuralClosure.wrappedclosure-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.wrappedclosure")],-1)),s[57]||(s[57]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[58]||(s[58]=e(`
julia
wrappedclosure(
+import{_ as r,c as n,a5 as e,j as t,a,G as i,B as d,o}from"./chunks/framework.Dr1kDDE8.js";const z1=JSON.parse('{"title":"Neural closure models","description":"","frontmatter":{},"headers":[],"relativePath":"manual/closure.md","filePath":"manual/closure.md","lastUpdated":null}'),p={name:"manual/closure.md"},T={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"}},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:"jldocstring custom-block",open:""},$={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},K={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"},Y={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:"0.98ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 433 453","aria-hidden":"true"},t1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},s1={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"},l1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i1={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"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={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"},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:"5.117ex",height:"1.892ex",role:"img",focusable:"false",viewBox:"0 -836.1 2261.7 836.1","aria-hidden":"true"},p1={class:"jldocstring custom-block",open:""},T1={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:""},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:"jldocstring custom-block",open:""},V1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N1={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"},Z1={class:"jldocstring custom-block",open:""},D1={class:"jldocstring custom-block",open:""};function F1(A1,s,O1,S1,B1,R1){const l=d("Badge");return o(),n("div",null,[s[169]||(s[169]=e(`

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",T,[(o(),n("svg",Q,s[0]||(s[0]=[e('',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]=a("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]=a(", the extracted large scale components ")),t("mjx-container",u,[(o(),n("svg",g,s[4]||(s[4]=[e('',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]=a(" are governed by the equation"))]),t("mjx-container",c,[(o(),n("svg",k,s[9]||(s[9]=[e('',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]=a("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]=a(", ")),t("mjx-container",x,[(o(),n("svg",f,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]=a(", and ")),t("mjx-container",E,[(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]=a(" are adapted to the size of their inputs and ")),t("mjx-container",v,[(o(),n("svg",H,s[17]||(s[17]=[e('',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]=a(" 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]=a(" 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]=a(" 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]=a(" with a parameterized closure model ")),t("mjx-container",Z,[(o(),n("svg",D,s[25]||(s[25]=[e('',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]=a(" gives the LES equations for the approximate large scale velocity ")),t("mjx-container",F,[(o(),n("svg",A,s[27]||(s[27]=[e('',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]=[e('',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[170]||(s[170]=t("h2",{id:"NeuralClosure-module",tabindex:"-1"},[a("NeuralClosure module "),t("a",{class:"header-anchor",href:"#NeuralClosure-module","aria-label":'Permalink to "NeuralClosure module {#NeuralClosure-module}"'},"​")],-1)),s[171]||(s[171]=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]=a()),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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[46]||(s[46]=e('
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]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[49]||(s[49]=e('
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.create_tensorclosure-Tuple",href:"#NeuralClosure.create_tensorclosure-Tuple"},[t("span",{class:"jlbinding"},"NeuralClosure.create_tensorclosure")],-1)),s[51]||(s[51]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[52]||(s[52]=e('
julia
create_tensorclosure(layers...; setup, rng)

Create tensor basis closure.

source

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

Interpolate closure force from volume centers to volume faces.

source

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

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

source

`,3))]),s[172]||(s[172]=t("h2",{id:"filters",tabindex:"-1"},[a("Filters "),t("a",{class:"header-anchor",href:"#filters","aria-label":'Permalink to "Filters"'},"​")],-1)),s[173]||(s[173]=t("p",null,"The following filters are available:",-1)),t("details",X,[t("summary",null,[s[59]||(s[59]=t("a",{id:"NeuralClosure.AbstractFilter",href:"#NeuralClosure.AbstractFilter"},[t("span",{class:"jlbinding"},"NeuralClosure.AbstractFilter")],-1)),s[60]||(s[60]=a()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[61]||(s[61]=e('
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",J,[t("summary",null,[s[62]||(s[62]=t("a",{id:"NeuralClosure.FaceAverage",href:"#NeuralClosure.FaceAverage"},[t("span",{class:"jlbinding"},"NeuralClosure.FaceAverage")],-1)),s[63]||(s[63]=a()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[64]||(s[64]=e('
julia
struct FaceAverage <: NeuralClosure.AbstractFilter

Average fine grid velocity field over coarse volume face.

Fields

source

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

Average fine grid velocity field over coarse volume.

Fields

source

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

Reconstruct DNS velocity u from LES velocity v.

source

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

Reconstruct DNS velocity field. See also reconstruct!.

source

',3))]),s[174]||(s[174]=t("h2",{id:"training",tabindex:"-1"},[a("Training "),t("a",{class:"header-anchor",href:"#training","aria-label":'Permalink to "Training"'},"​")],-1)),t("p",null,[s[78]||(s[78]=a("To improve the model parameters, we exploit exact filtered DNS data ")),t("mjx-container",$,[(o(),n("svg",K,s[74]||(s[74]=[e('',1)]))),s[75]||(s[75]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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[79]||(s[79]=a(" and exact commutator errors ")),t("mjx-container",Y,[(o(),n("svg",_,s[76]||(s[76]=[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[77]||(s[77]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 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[80]||(s[80]=a(" obtained through DNS. The model is trained by minimizing the a priori loss function"))]),t("mjx-container",t1,[(o(),n("svg",s1,s[81]||(s[81]=[e('',1)]))),s[82]||(s[82]=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[175]||(s[175]=t("p",null,"or the a posteriori loss function",-1)),t("mjx-container",a1,[(o(),n("svg",e1,s[83]||(s[83]=[e('',1)]))),s[84]||(s[84]=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[91]||(s[91]=a("where ")),t("mjx-container",l1,[(o(),n("svg",i1,s[85]||(s[85]=[e('',1)]))),s[86]||(s[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("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mi",null,"θ")])])],-1))]),s[92]||(s[92]=a(" is the solution to the LES equation for the given parameters ")),t("mjx-container",n1,[(o(),n("svg",o1,s[87]||(s[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":"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[88]||(s[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,"θ")])],-1))]),s[93]||(s[93]=a(". The prior loss is easy to evaluate and easy to differentiate, as it does not involve solving the ODE. However, minimizing ")),t("mjx-container",r1,[(o(),n("svg",d1,s[89]||(s[89]=[e('',1)]))),s[90]||(s[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("msup",null,[t("mi",null,"L"),t("mtext",null,"prior")])])],-1))]),s[94]||(s[94]=a(" 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",p1,[t("summary",null,[s[95]||(s[95]=t("a",{id:"NeuralClosure.create_callback-Tuple{Any}",href:"#NeuralClosure.create_callback-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_callback")],-1)),s[96]||(s[96]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[97]||(s[97]=e(`
julia
create_callback(
+) -> NeuralClosure.var"#neuralclosure#1"

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

source

`,3))]),s[172]||(s[172]=t("h2",{id:"filters",tabindex:"-1"},[a("Filters "),t("a",{class:"header-anchor",href:"#filters","aria-label":'Permalink to "Filters"'},"​")],-1)),s[173]||(s[173]=t("p",null,"The following filters are available:",-1)),t("details",X,[t("summary",null,[s[59]||(s[59]=t("a",{id:"NeuralClosure.AbstractFilter",href:"#NeuralClosure.AbstractFilter"},[t("span",{class:"jlbinding"},"NeuralClosure.AbstractFilter")],-1)),s[60]||(s[60]=a()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[61]||(s[61]=e('
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",J,[t("summary",null,[s[62]||(s[62]=t("a",{id:"NeuralClosure.FaceAverage",href:"#NeuralClosure.FaceAverage"},[t("span",{class:"jlbinding"},"NeuralClosure.FaceAverage")],-1)),s[63]||(s[63]=a()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[64]||(s[64]=e('
julia
struct FaceAverage <: NeuralClosure.AbstractFilter

Average fine grid velocity field over coarse volume face.

Fields

source

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

Average fine grid velocity field over coarse volume.

Fields

source

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

Reconstruct DNS velocity u from LES velocity v.

source

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

Reconstruct DNS velocity field. See also reconstruct!.

source

',3))]),s[174]||(s[174]=t("h2",{id:"training",tabindex:"-1"},[a("Training "),t("a",{class:"header-anchor",href:"#training","aria-label":'Permalink to "Training"'},"​")],-1)),t("p",null,[s[78]||(s[78]=a("To improve the model parameters, we exploit exact filtered DNS data ")),t("mjx-container",$,[(o(),n("svg",K,s[74]||(s[74]=[e('',1)]))),s[75]||(s[75]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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[79]||(s[79]=a(" and exact commutator errors ")),t("mjx-container",Y,[(o(),n("svg",_,s[76]||(s[76]=[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[77]||(s[77]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 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[80]||(s[80]=a(" obtained through DNS. The model is trained by minimizing the a priori loss function"))]),t("mjx-container",t1,[(o(),n("svg",s1,s[81]||(s[81]=[e('',1)]))),s[82]||(s[82]=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[175]||(s[175]=t("p",null,"or the a posteriori loss function",-1)),t("mjx-container",a1,[(o(),n("svg",e1,s[83]||(s[83]=[e('',1)]))),s[84]||(s[84]=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[91]||(s[91]=a("where ")),t("mjx-container",l1,[(o(),n("svg",i1,s[85]||(s[85]=[e('',1)]))),s[86]||(s[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("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mi",null,"θ")])])],-1))]),s[92]||(s[92]=a(" is the solution to the LES equation for the given parameters ")),t("mjx-container",n1,[(o(),n("svg",o1,s[87]||(s[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":"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[88]||(s[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,"θ")])],-1))]),s[93]||(s[93]=a(". The prior loss is easy to evaluate and easy to differentiate, as it does not involve solving the ODE. However, minimizing ")),t("mjx-container",r1,[(o(),n("svg",d1,s[89]||(s[89]=[e('',1)]))),s[90]||(s[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("msup",null,[t("mi",null,"L"),t("mtext",null,"prior")])])],-1))]),s[94]||(s[94]=a(" 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",p1,[t("summary",null,[s[95]||(s[95]=t("a",{id:"NeuralClosure.create_callback-Tuple{Any}",href:"#NeuralClosure.create_callback-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_callback")],-1)),s[96]||(s[96]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[97]||(s[97]=e(`
julia
create_callback(
     err;
     θ,
     callbackstate,
@@ -11,29 +11,29 @@ import{_ as r,c as n,a5 as e,j as t,a,G as i,B as d,o}from"./chunks/framework.Dr
     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,[s[98]||(s[98]=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[99]||(s[99]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[100]||(s[100]=e(`
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[98]||(s[98]=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[99]||(s[99]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[100]||(s[100]=e(`
julia
create_dataloader_post(
     trajectories;
     ntrajectory,
     nunroll,
     device
-)

Create trajectory dataloader.

source

`,3))]),t("details",Q1,[t("summary",null,[s[101]||(s[101]=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[102]||(s[102]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[103]||(s[103]=e(`
julia
create_dataloader_prior(
+)

Create trajectory dataloader.

source

`,3))]),t("details",Q1,[t("summary",null,[s[101]||(s[101]=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[102]||(s[102]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[103]||(s[103]=e(`
julia
create_dataloader_prior(
     data;
     batchsize,
     device
-) -> NeuralClosure.var"#dataloader#44"{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",m1,[t("summary",null,[s[104]||(s[104]=t("a",{id:"NeuralClosure.create_loss_post-Tuple{}",href:"#NeuralClosure.create_loss_post-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_loss_post")],-1)),s[105]||(s[105]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[106]||(s[106]=e(`
julia
create_loss_post(
+) -> NeuralClosure.var"#dataloader#44"{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",m1,[t("summary",null,[s[104]||(s[104]=t("a",{id:"NeuralClosure.create_loss_post-Tuple{}",href:"#NeuralClosure.create_loss_post-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_loss_post")],-1)),s[105]||(s[105]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[106]||(s[106]=e(`
julia
create_loss_post(
 ;
     setup,
     method,
     psolver,
     closure,
     nsubstep
-)

Create a-posteriori loss function.

source

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

Create a-posteriori loss function.

source

`,3))]),t("details",h1,[t("summary",null,[s[107]||(s[107]=t("a",{id:"NeuralClosure.create_loss_prior",href:"#NeuralClosure.create_loss_prior"},[t("span",{class:"jlbinding"},"NeuralClosure.create_loss_prior")],-1)),s[108]||(s[108]=a()),i(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[109]||(s[109]=e(`
julia
create_loss_prior(
     f
 ) -> NeuralClosure.var"#loss_prior#57"{_A, NeuralClosure.var"#55#56"} where _A
 create_loss_prior(
     f,
     normalize
-) -> NeuralClosure.var"#loss_prior#57"

Return mean squared error loss for the predictor f.

source

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

Return mean squared error loss for the predictor f.

source

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

Create a-posteriori relative error.

source

`,3))]),t("details",c1,[t("summary",null,[s[113]||(s[113]=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[114]||(s[114]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[115]||(s[115]=e('
julia
create_relerr_prior(f, x, y) -> NeuralClosure.var"#58#59"

Create a-priori error.

source

',3))]),t("details",g1,[t("summary",null,[s[116]||(s[116]=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[117]||(s[117]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[118]||(s[118]=e(`
julia
create_relerr_symmetry_post(
+)

Create a-posteriori relative error.

source

`,3))]),t("details",g1,[t("summary",null,[s[113]||(s[113]=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[114]||(s[114]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[115]||(s[115]=e('
julia
create_relerr_prior(f, x, y) -> NeuralClosure.var"#58#59"

Create a-priori error.

source

',3))]),t("details",c1,[t("summary",null,[s[116]||(s[116]=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[117]||(s[117]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[118]||(s[118]=e(`
julia
create_relerr_symmetry_post(
 ;
     u,
     setup,
@@ -50,7 +50,7 @@ import{_ as r,c as n,a5 as e,j as t,a,G as i,B as d,o}from"./chunks/framework.Dr
     Δt,
     nstep,
     g
-)

Create a-posteriori symmetry error.

source

`,3))]),t("details",k1,[t("summary",null,[s[119]||(s[119]=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[120]||(s[120]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[121]||(s[121]=e('
julia
create_relerr_symmetry_prior(; u, setup, g)

Create a-priori equivariance error.

source

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

Create a-posteriori symmetry error.

source

`,3))]),t("details",k1,[t("summary",null,[s[119]||(s[119]=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[120]||(s[120]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[121]||(s[121]=e('
julia
create_relerr_symmetry_prior(; u, setup, g)

Create a-priori equivariance error.

source

',3))]),t("details",y1,[t("summary",null,[s[122]||(s[122]=t("a",{id:"NeuralClosure.train-Tuple{}",href:"#NeuralClosure.train-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.train")],-1)),s[123]||(s[123]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[124]||(s[124]=e(`
julia
train(
 ;
     dataloader,
     loss,
@@ -59,7 +59,7 @@ import{_ as r,c as n,a5 as e,j as t,a,G as i,B as d,o}from"./chunks/framework.Dr
     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,[s[125]||(s[125]=t("a",{id:"NeuralClosure.trainepoch-Tuple{}",href:"#NeuralClosure.trainepoch-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.trainepoch")],-1)),s[126]||(s[126]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[127]||(s[127]=e(`
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",b1,[t("summary",null,[s[125]||(s[125]=t("a",{id:"NeuralClosure.trainepoch-Tuple{}",href:"#NeuralClosure.trainepoch-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.trainepoch")],-1)),s[126]||(s[126]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[127]||(s[127]=e(`
julia
trainepoch(
 ;
     dataloader,
     loss,
@@ -69,7 +69,7 @@ import{_ as r,c as n,a5 as e,j as t,a,G as i,B as d,o}from"./chunks/framework.Dr
     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))]),s[176]||(s[176]=t("h2",{id:"Neural-architectures",tabindex:"-1"},[a("Neural architectures "),t("a",{class:"header-anchor",href:"#Neural-architectures","aria-label":'Permalink to "Neural architectures {#Neural-architectures}"'},"​")],-1)),s[177]||(s[177]=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",x1,[t("summary",null,[s[128]||(s[128]=t("a",{id:"NeuralClosure.cnn-Tuple{}",href:"#NeuralClosure.cnn-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.cnn")],-1)),s[129]||(s[129]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[130]||(s[130]=e(`
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[176]||(s[176]=t("h2",{id:"Neural-architectures",tabindex:"-1"},[a("Neural architectures "),t("a",{class:"header-anchor",href:"#Neural-architectures","aria-label":'Permalink to "Neural architectures {#Neural-architectures}"'},"​")],-1)),s[177]||(s[177]=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",x1,[t("summary",null,[s[128]||(s[128]=t("a",{id:"NeuralClosure.cnn-Tuple{}",href:"#NeuralClosure.cnn-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.cnn")],-1)),s[129]||(s[129]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[130]||(s[130]=e(`
julia
cnn(
 ;
     setup,
     radii,
@@ -78,7 +78,7 @@ import{_ as r,c as n,a5 as e,j as t,a,G as i,B as d,o}from"./chunks/framework.Dr
     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",f1,[t("summary",null,[s[131]||(s[131]=t("a",{id:"NeuralClosure.GroupConv2D",href:"#NeuralClosure.GroupConv2D"},[t("span",{class:"jlbinding"},"NeuralClosure.GroupConv2D")],-1)),s[132]||(s[132]=a()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[133]||(s[133]=e('
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[134]||(s[134]=t("a",{id:"NeuralClosure.gcnn-Tuple{}",href:"#NeuralClosure.gcnn-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.gcnn")],-1)),s[135]||(s[135]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[136]||(s[136]=e('
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",w1,[t("summary",null,[s[137]||(s[137]=t("a",{id:"NeuralClosure.rot2",href:"#NeuralClosure.rot2"},[t("span",{class:"jlbinding"},"NeuralClosure.rot2")],-1)),s[138]||(s[138]=a()),i(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[139]||(s[139]=e('
julia
rot2(u, r)

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

source

',3))]),t("details",v1,[t("summary",null,[s[140]||(s[140]=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[141]||(s[141]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[142]||(s[142]=e('
julia
rot2(u::Tuple{T, T}, r) -> Union{Nothing, Tuple{Any, Any}}

Rotate vector fields [ux;;; uy]

source

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

Rotate staggered grid velocity field. See also rot2.

source

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

Rotate vector fields [ux;;; uy]

source

',3))]),t("details",C1,[t("summary",null,[s[149]||(s[149]=t("a",{id:"NeuralClosure.FourierLayer",href:"#NeuralClosure.FourierLayer"},[t("span",{class:"jlbinding"},"NeuralClosure.FourierLayer")],-1)),s[150]||(s[150]=a()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[151]||(s[151]=e('
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",M1,[t("summary",null,[s[152]||(s[152]=t("a",{id:"NeuralClosure.fno-Tuple{}",href:"#NeuralClosure.fno-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.fno")],-1)),s[153]||(s[153]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[154]||(s[154]=e('
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[178]||(s[178]=t("h2",{id:"Data-generation",tabindex:"-1"},[a("Data generation "),t("a",{class:"header-anchor",href:"#Data-generation","aria-label":'Permalink to "Data generation {#Data-generation}"'},"​")],-1)),t("details",L1,[t("summary",null,[s[155]||(s[155]=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[156]||(s[156]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[161]||(s[161]=e('
julia
create_io_arrays(data, setup) -> NamedTuple
',1)),t("p",null,[s[159]||(s[159]=a("Create ")),t("mjx-container",V1,[(o(),n("svg",N1,s[157]||(s[157]=[e('',1)]))),s[158]||(s[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("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[160]||(s[160]=a(" pairs for a-priori training."))]),s[162]||(s[162]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/03acafa3566742b1f37d722d2207f5dc21d031c0/lib/NeuralClosure/src/data_generation.jl#L228",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",Z1,[t("summary",null,[s[163]||(s[163]=t("a",{id:"NeuralClosure.create_les_data-Tuple{}",href:"#NeuralClosure.create_les_data-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_les_data")],-1)),s[164]||(s[164]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[165]||(s[165]=e(`
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",f1,[t("summary",null,[s[131]||(s[131]=t("a",{id:"NeuralClosure.GroupConv2D",href:"#NeuralClosure.GroupConv2D"},[t("span",{class:"jlbinding"},"NeuralClosure.GroupConv2D")],-1)),s[132]||(s[132]=a()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[133]||(s[133]=e('
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[134]||(s[134]=t("a",{id:"NeuralClosure.gcnn-Tuple{}",href:"#NeuralClosure.gcnn-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.gcnn")],-1)),s[135]||(s[135]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[136]||(s[136]=e('
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",w1,[t("summary",null,[s[137]||(s[137]=t("a",{id:"NeuralClosure.rot2",href:"#NeuralClosure.rot2"},[t("span",{class:"jlbinding"},"NeuralClosure.rot2")],-1)),s[138]||(s[138]=a()),i(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[139]||(s[139]=e('
julia
rot2(u, r)

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

source

',3))]),t("details",v1,[t("summary",null,[s[140]||(s[140]=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[141]||(s[141]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[142]||(s[142]=e('
julia
rot2(u::Tuple{T, T}, r) -> Union{Nothing, Tuple{Any, Any}}

Rotate vector fields [ux;;; uy]

source

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

Rotate staggered grid velocity field. See also rot2.

source

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

Rotate vector fields [ux;;; uy]

source

',3))]),t("details",C1,[t("summary",null,[s[149]||(s[149]=t("a",{id:"NeuralClosure.FourierLayer",href:"#NeuralClosure.FourierLayer"},[t("span",{class:"jlbinding"},"NeuralClosure.FourierLayer")],-1)),s[150]||(s[150]=a()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[151]||(s[151]=e('
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",M1,[t("summary",null,[s[152]||(s[152]=t("a",{id:"NeuralClosure.fno-Tuple{}",href:"#NeuralClosure.fno-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.fno")],-1)),s[153]||(s[153]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[154]||(s[154]=e('
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[178]||(s[178]=t("h2",{id:"Data-generation",tabindex:"-1"},[a("Data generation "),t("a",{class:"header-anchor",href:"#Data-generation","aria-label":'Permalink to "Data generation {#Data-generation}"'},"​")],-1)),t("details",L1,[t("summary",null,[s[155]||(s[155]=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[156]||(s[156]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[161]||(s[161]=e('
julia
create_io_arrays(data, setup) -> NamedTuple
',1)),t("p",null,[s[159]||(s[159]=a("Create ")),t("mjx-container",V1,[(o(),n("svg",N1,s[157]||(s[157]=[e('',1)]))),s[158]||(s[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("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[160]||(s[160]=a(" pairs for a-priori training."))]),s[162]||(s[162]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/a63d20e3a410f14ba6cc612a27e89f8974019d9f/lib/NeuralClosure/src/data_generation.jl#L228",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",Z1,[t("summary",null,[s[163]||(s[163]=t("a",{id:"NeuralClosure.create_les_data-Tuple{}",href:"#NeuralClosure.create_les_data-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_les_data")],-1)),s[164]||(s[164]=a()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[165]||(s[165]=e(`
julia
create_les_data(
 ;
     D,
     Re,
@@ -98,7 +98,7 @@ import{_ as r,c as n,a5 as e,j as t,a,G as i,B as d,o}from"./chunks/framework.Dr
     rng,
     filenames,
     kwargs...
-)

Create filtered DNS data.

source

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

Create filtered DNS data.

source

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

Save filtered DNS data.

source

`,3))])])}const G1=r(p,[["render",F1]]);export{z1 as __pageData,G1 as default}; +)

Save filtered DNS data.

source

`,3))])])}const G1=r(p,[["render",F1]]);export{z1 as __pageData,G1 as default}; diff --git a/dev/assets/manual_differentiability.md.DHl4CtMi.js b/dev/assets/manual_differentiability.md.D_UkzJTY.js similarity index 89% rename from dev/assets/manual_differentiability.md.DHl4CtMi.js rename to dev/assets/manual_differentiability.md.D_UkzJTY.js index 9564a486a..ef7eecea5 100644 --- a/dev/assets/manual_differentiability.md.DHl4CtMi.js +++ b/dev/assets/manual_differentiability.md.D_UkzJTY.js @@ -88,6 +88,6 @@ import{_ as p,c as n,a5 as e,j as i,a,o as t}from"./chunks/framework.Dr1kDDE8.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")))), [6.945445343448e-310 6.9454449186883e-310 … 5.0e-324 5.0e-324; 6.9454449184535e-310 6.94544491869066e-310 … 6.94544489383323e-310 6.9454448939123e-310; … ; 6.94544491868354e-310 6.9454449003201e-310 … 5.0e-324 5.0e-324; 6.9454449186859e-310 6.9454449003225e-310 … 6.9454448939107e-310 6.94544489398975e-310], ComplexF64[6.94557386934597e-310 + 6.94557386934597e-310im 0.0 + 0.0im … 0.0 + 0.0im 0.0 + 0.0im; 6.94557386934597e-310 + 6.94557386934597e-310im 0.0 + 0.0im … 0.0 + 0.0im 0.0 + 0.0im; … ; 0.0 + 0.0im 0.0 + 0.0im … 0.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 0.0 + 0.0im … 0.0 + 0.0im 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)
+      (dft-directbuf/14-10-x10 "n1fv_10_avx2")))), [3.86215878e-315 0.0 … 6.548379943e-315 3.89362187e-316; 6.547993426e-315 0.0 … 6.548380615e-315 3.89362187e-316; … ; 4.245092511e-314 3.22322206e-315 … 6.34907335e-315 0.0; 0.0 6.91711403163036e-310 … 2.9e-322 6.34907303e-315], ComplexF64[1.89668687e-315 + 2.20435554e-315im 5.0e-324 + 6.91697151413794e-310im … 1.191723655e-315 + 4.9e-322im 3.0355e-320 + 6.37e-322im; 1.89668687e-315 + 2.20435554e-315im 5.0e-324 + 6.91697151413952e-310im … 3.9e-322 + 5.0e-324im 5.3e-322 + 3.05534496e-315im; … ; 5.0e-324 + 6.9169715141348e-310im 5.0e-324 + 6.9169715142154e-310im … 5.24e-322 + 2.3716543e-316im 6.4e-322 + 3.955624e-316im; 5.0e-324 + 6.91697151413636e-310im 5.0e-324 + 6.916971514217e-310im … 6.4e-322 + 5.3e-322im 7.9e-322 + 6.47e-322im], 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/dev/assets/manual_differentiability.md.DHl4CtMi.lean.js b/dev/assets/manual_differentiability.md.D_UkzJTY.lean.js similarity index 89% rename from dev/assets/manual_differentiability.md.DHl4CtMi.lean.js rename to dev/assets/manual_differentiability.md.D_UkzJTY.lean.js index 9564a486a..ef7eecea5 100644 --- a/dev/assets/manual_differentiability.md.DHl4CtMi.lean.js +++ b/dev/assets/manual_differentiability.md.D_UkzJTY.lean.js @@ -88,6 +88,6 @@ import{_ as p,c as n,a5 as e,j as i,a,o as t}from"./chunks/framework.Dr1kDDE8.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")))), [6.945445343448e-310 6.9454449186883e-310 … 5.0e-324 5.0e-324; 6.9454449184535e-310 6.94544491869066e-310 … 6.94544489383323e-310 6.9454448939123e-310; … ; 6.94544491868354e-310 6.9454449003201e-310 … 5.0e-324 5.0e-324; 6.9454449186859e-310 6.9454449003225e-310 … 6.9454448939107e-310 6.94544489398975e-310], ComplexF64[6.94557386934597e-310 + 6.94557386934597e-310im 0.0 + 0.0im … 0.0 + 0.0im 0.0 + 0.0im; 6.94557386934597e-310 + 6.94557386934597e-310im 0.0 + 0.0im … 0.0 + 0.0im 0.0 + 0.0im; … ; 0.0 + 0.0im 0.0 + 0.0im … 0.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 0.0 + 0.0im … 0.0 + 0.0im 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)
+      (dft-directbuf/14-10-x10 "n1fv_10_avx2")))), [3.86215878e-315 0.0 … 6.548379943e-315 3.89362187e-316; 6.547993426e-315 0.0 … 6.548380615e-315 3.89362187e-316; … ; 4.245092511e-314 3.22322206e-315 … 6.34907335e-315 0.0; 0.0 6.91711403163036e-310 … 2.9e-322 6.34907303e-315], ComplexF64[1.89668687e-315 + 2.20435554e-315im 5.0e-324 + 6.91697151413794e-310im … 1.191723655e-315 + 4.9e-322im 3.0355e-320 + 6.37e-322im; 1.89668687e-315 + 2.20435554e-315im 5.0e-324 + 6.91697151413952e-310im … 3.9e-322 + 5.0e-324im 5.3e-322 + 3.05534496e-315im; … ; 5.0e-324 + 6.9169715141348e-310im 5.0e-324 + 6.9169715142154e-310im … 5.24e-322 + 2.3716543e-316im 6.4e-322 + 3.955624e-316im; 5.0e-324 + 6.91697151413636e-310im 5.0e-324 + 6.916971514217e-310im … 6.4e-322 + 5.3e-322im 7.9e-322 + 6.47e-322im], 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/dev/assets/manual_matrices.md.CgitaAGh.js b/dev/assets/manual_matrices.md.WgRK4vkk.js similarity index 98% rename from dev/assets/manual_matrices.md.CgitaAGh.js rename to dev/assets/manual_matrices.md.WgRK4vkk.js index d7942052e..03c3c9c8c 100644 --- a/dev/assets/manual_matrices.md.CgitaAGh.js +++ b/dev/assets/manual_matrices.md.WgRK4vkk.js @@ -76,7 +76,7 @@ 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 D = diffusion_mat(setup) d_kernel = diffusion(apply_bc_u(u, 0.0, setup), setup; use_viscosity = false) d_matrix = reshape(D * B * u[:], size(u)) -maximum(abs, d_matrix - d_kernel)
9.094947017729282e-13
`,5)),a("p",null,[s[15]||(s[15]=i("Matrices only work on flattened fields ")),s[16]||(s[16]=a("code",null,"u[:]",-1)),s[17]||(s[17]=i(", while the kernels work on ")),a("mjx-container",m,[(p(),l("svg",u,s[11]||(s[11]=[n('',1)]))),s[12]||(s[12]=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("mo",{stretchy:"false"},"("),a("mi",null,"D"),a("mo",null,"+"),a("mn",null,"1"),a("mo",{stretchy:"false"},")")])],-1))]),s[18]||(s[18]=i("-array-shaped fields for a dimension ")),a("mjx-container",E,[(p(),l("svg",y,s[13]||(s[13]=[n('',1)]))),s[14]||(s[14]=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("mi",null,"D"),a("mo",null,"∈"),a("mo",{fence:"false",stretchy:"false"},"{"),a("mn",null,"2"),a("mo",null,","),a("mn",null,"3"),a("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),s[19]||(s[19]=i("."))]),s[55]||(s[55]=n(`

Boundary conditions and matrices

Matrices can only be used to represent boundary conditions that depend linearly on the input, such as periodic or Neumann boundary conditions. Non-zero Dirichlet boundary conditions need to be accounted for separately. Consider the following inflow-setup:

julia
setup = Setup(;
+maximum(abs, d_matrix - d_kernel)
4.547473508864641e-13
`,5)),a("p",null,[s[15]||(s[15]=i("Matrices only work on flattened fields ")),s[16]||(s[16]=a("code",null,"u[:]",-1)),s[17]||(s[17]=i(", while the kernels work on ")),a("mjx-container",m,[(p(),l("svg",u,s[11]||(s[11]=[n('',1)]))),s[12]||(s[12]=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("mo",{stretchy:"false"},"("),a("mi",null,"D"),a("mo",null,"+"),a("mn",null,"1"),a("mo",{stretchy:"false"},")")])],-1))]),s[18]||(s[18]=i("-array-shaped fields for a dimension ")),a("mjx-container",E,[(p(),l("svg",y,s[13]||(s[13]=[n('',1)]))),s[14]||(s[14]=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("mi",null,"D"),a("mo",null,"∈"),a("mo",{fence:"false",stretchy:"false"},"{"),a("mn",null,"2"),a("mo",null,","),a("mn",null,"3"),a("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),s[19]||(s[19]=i("."))]),s[55]||(s[55]=n(`

Boundary conditions and matrices

Matrices can only be used to represent boundary conditions that depend linearly on the input, such as periodic or Neumann boundary conditions. Non-zero Dirichlet boundary conditions need to be accounted for separately. Consider the following inflow-setup:

julia
setup = Setup(;
     x = (ax, ax),
     boundary_conditions = (
         (DirichletBC((10.0, 0.0)), PressureBC()),
@@ -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/03acafa3566742b1f37d722d2207f5dc21d031c0/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/03acafa3566742b1f37d722d2207f5dc21d031c0/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/dev/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/dev/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/03acafa3566742b1f37d722d2207f5dc21d031c0/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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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/dev/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/dev/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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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/dev/assets/manual_matrices.md.CgitaAGh.lean.js b/dev/assets/manual_matrices.md.WgRK4vkk.lean.js similarity index 98% rename from dev/assets/manual_matrices.md.CgitaAGh.lean.js rename to dev/assets/manual_matrices.md.WgRK4vkk.lean.js index d7942052e..03c3c9c8c 100644 --- a/dev/assets/manual_matrices.md.CgitaAGh.lean.js +++ b/dev/assets/manual_matrices.md.WgRK4vkk.lean.js @@ -76,7 +76,7 @@ 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 D = diffusion_mat(setup) d_kernel = diffusion(apply_bc_u(u, 0.0, setup), setup; use_viscosity = false) d_matrix = reshape(D * B * u[:], size(u)) -maximum(abs, d_matrix - d_kernel)
9.094947017729282e-13
`,5)),a("p",null,[s[15]||(s[15]=i("Matrices only work on flattened fields ")),s[16]||(s[16]=a("code",null,"u[:]",-1)),s[17]||(s[17]=i(", while the kernels work on ")),a("mjx-container",m,[(p(),l("svg",u,s[11]||(s[11]=[n('',1)]))),s[12]||(s[12]=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("mo",{stretchy:"false"},"("),a("mi",null,"D"),a("mo",null,"+"),a("mn",null,"1"),a("mo",{stretchy:"false"},")")])],-1))]),s[18]||(s[18]=i("-array-shaped fields for a dimension ")),a("mjx-container",E,[(p(),l("svg",y,s[13]||(s[13]=[n('',1)]))),s[14]||(s[14]=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("mi",null,"D"),a("mo",null,"∈"),a("mo",{fence:"false",stretchy:"false"},"{"),a("mn",null,"2"),a("mo",null,","),a("mn",null,"3"),a("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),s[19]||(s[19]=i("."))]),s[55]||(s[55]=n(`

Boundary conditions and matrices

Matrices can only be used to represent boundary conditions that depend linearly on the input, such as periodic or Neumann boundary conditions. Non-zero Dirichlet boundary conditions need to be accounted for separately. Consider the following inflow-setup:

julia
setup = Setup(;
+maximum(abs, d_matrix - d_kernel)
4.547473508864641e-13
`,5)),a("p",null,[s[15]||(s[15]=i("Matrices only work on flattened fields ")),s[16]||(s[16]=a("code",null,"u[:]",-1)),s[17]||(s[17]=i(", while the kernels work on ")),a("mjx-container",m,[(p(),l("svg",u,s[11]||(s[11]=[n('',1)]))),s[12]||(s[12]=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("mo",{stretchy:"false"},"("),a("mi",null,"D"),a("mo",null,"+"),a("mn",null,"1"),a("mo",{stretchy:"false"},")")])],-1))]),s[18]||(s[18]=i("-array-shaped fields for a dimension ")),a("mjx-container",E,[(p(),l("svg",y,s[13]||(s[13]=[n('',1)]))),s[14]||(s[14]=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("mi",null,"D"),a("mo",null,"∈"),a("mo",{fence:"false",stretchy:"false"},"{"),a("mn",null,"2"),a("mo",null,","),a("mn",null,"3"),a("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),s[19]||(s[19]=i("."))]),s[55]||(s[55]=n(`

Boundary conditions and matrices

Matrices can only be used to represent boundary conditions that depend linearly on the input, such as periodic or Neumann boundary conditions. Non-zero Dirichlet boundary conditions need to be accounted for separately. Consider the following inflow-setup:

julia
setup = Setup(;
     x = (ax, ax),
     boundary_conditions = (
         (DirichletBC((10.0, 0.0)), PressureBC()),
@@ -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/03acafa3566742b1f37d722d2207f5dc21d031c0/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/03acafa3566742b1f37d722d2207f5dc21d031c0/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/dev/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/dev/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/03acafa3566742b1f37d722d2207f5dc21d031c0/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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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/dev/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/dev/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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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/dev/assets/manual_operators.md.d5WWXEo-.lean.js b/dev/assets/manual_operators.md.DDNX2oaK.js similarity index 97% rename from dev/assets/manual_operators.md.d5WWXEo-.lean.js rename to dev/assets/manual_operators.md.DDNX2oaK.js index eee6825e6..353a61433 100644 --- a/dev/assets/manual_operators.md.d5WWXEo-.lean.js +++ b/dev/assets/manual_operators.md.DDNX2oaK.js @@ -1,6 +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.Dr1kDDE8.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:""},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"}},X={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"},q={class:"jldocstring custom-block",open:""},P={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:""},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:""},X1={class:"jldocstring custom-block",open:""},q1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P1={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/03acafa3566742b1f37d722d2207f5dc21d031c0/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/dev/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/03acafa3566742b1f37d722d2207f5dc21d031c0/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/03acafa3566742b1f37d722d2207f5dc21d031c0/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/dev/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/03acafa3566742b1f37d722d2207f5dc21d031c0/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",O,[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",B,[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",X,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/03acafa3566742b1f37d722d2207f5dc21d031c0/src/operators.jl#L810",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",q,[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",P,[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/03acafa3566742b1f37d722d2207f5dc21d031c0/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/dev/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/03acafa3566742b1f37d722d2207f5dc21d031c0/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(
+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.Dr1kDDE8.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:""},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"}},X={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"},q={class:"jldocstring custom-block",open:""},P={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:""},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:""},X1={class:"jldocstring custom-block",open:""},q1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P1={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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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/dev/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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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/dev/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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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",O,[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",B,[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",X,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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/src/operators.jl#L810",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",q,[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",P,[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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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/dev/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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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, ), <: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,[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/03acafa3566742b1f37d722d2207f5dc21d031c0/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/dev/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/03acafa3566742b1f37d722d2207f5dc21d031c0/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(
+) -> 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,[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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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/dev/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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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#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,[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",B1,[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",X1,[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/dev/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",q1,[(o(),n("svg",P1,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/03acafa3566742b1f37d722d2207f5dc21d031c0/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}; +) -> 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,[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",B1,[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",X1,[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/dev/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",q1,[(o(),n("svg",P1,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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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/dev/assets/manual_operators.md.d5WWXEo-.js b/dev/assets/manual_operators.md.DDNX2oaK.lean.js similarity index 97% rename from dev/assets/manual_operators.md.d5WWXEo-.js rename to dev/assets/manual_operators.md.DDNX2oaK.lean.js index eee6825e6..353a61433 100644 --- a/dev/assets/manual_operators.md.d5WWXEo-.js +++ b/dev/assets/manual_operators.md.DDNX2oaK.lean.js @@ -1,6 +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.Dr1kDDE8.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:""},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"}},X={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"},q={class:"jldocstring custom-block",open:""},P={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:""},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:""},X1={class:"jldocstring custom-block",open:""},q1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P1={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/03acafa3566742b1f37d722d2207f5dc21d031c0/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/dev/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/03acafa3566742b1f37d722d2207f5dc21d031c0/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/03acafa3566742b1f37d722d2207f5dc21d031c0/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/dev/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/03acafa3566742b1f37d722d2207f5dc21d031c0/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",O,[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",B,[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",X,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/03acafa3566742b1f37d722d2207f5dc21d031c0/src/operators.jl#L810",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",q,[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",P,[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/03acafa3566742b1f37d722d2207f5dc21d031c0/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/dev/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/03acafa3566742b1f37d722d2207f5dc21d031c0/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(
+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.Dr1kDDE8.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:""},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"}},X={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"},q={class:"jldocstring custom-block",open:""},P={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:""},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:""},X1={class:"jldocstring custom-block",open:""},q1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P1={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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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/dev/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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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/dev/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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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",O,[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",B,[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",X,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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/src/operators.jl#L810",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",q,[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",P,[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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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/dev/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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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, ), <: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,[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/03acafa3566742b1f37d722d2207f5dc21d031c0/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/dev/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/03acafa3566742b1f37d722d2207f5dc21d031c0/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(
+) -> 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,[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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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/dev/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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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#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,[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",B1,[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",X1,[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/dev/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",q1,[(o(),n("svg",P1,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/03acafa3566742b1f37d722d2207f5dc21d031c0/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}; +) -> 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,[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",B1,[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",X1,[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/dev/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",q1,[(o(),n("svg",P1,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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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/dev/assets/manual_pressure.md.CRdAlBfk.js b/dev/assets/manual_pressure.md.CGOE2Wqh.js similarity index 95% rename from dev/assets/manual_pressure.md.CRdAlBfk.js rename to dev/assets/manual_pressure.md.CGOE2Wqh.js index 5e80ac24a..b47c4639e 100644 --- a/dev/assets/manual_pressure.md.CRdAlBfk.js +++ b/dev/assets/manual_pressure.md.CGOE2Wqh.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.Dr1kDDE8.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:""},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:""},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(
     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",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(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",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(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",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(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",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(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!#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",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(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",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(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",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(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",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(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(
     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(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[28]||(s[28]=a(`
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(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[31]||(s[31]=a(`
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",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(
     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!#124"

Create spectral Poisson solver from setup.

source

`,3))])])}const H=r(d,[["render",j]]);export{I as __pageData,H as default}; diff --git a/dev/assets/manual_pressure.md.CRdAlBfk.lean.js b/dev/assets/manual_pressure.md.CGOE2Wqh.lean.js similarity index 95% rename from dev/assets/manual_pressure.md.CRdAlBfk.lean.js rename to dev/assets/manual_pressure.md.CGOE2Wqh.lean.js index 5e80ac24a..b47c4639e 100644 --- a/dev/assets/manual_pressure.md.CRdAlBfk.lean.js +++ b/dev/assets/manual_pressure.md.CGOE2Wqh.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.Dr1kDDE8.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:""},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:""},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(
     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",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(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",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(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",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(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",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(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!#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",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(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",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(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",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(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",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(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(
     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(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[28]||(s[28]=a(`
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(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[31]||(s[31]=a(`
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",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(
     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!#124"

Create spectral Poisson solver from setup.

source

`,3))])])}const H=r(d,[["render",j]]);export{I as __pageData,H as default}; diff --git a/dev/assets/manual_sciml.md.CER13ld6.js b/dev/assets/manual_sciml.md.CcNBgquF.js similarity index 75% rename from dev/assets/manual_sciml.md.CER13ld6.js rename to dev/assets/manual_sciml.md.CcNBgquF.js index 31cefc7c6..4f8747521 100644 --- a/dev/assets/manual_sciml.md.CER13ld6.js +++ b/dev/assets/manual_sciml.md.CcNBgquF.js @@ -9,48 +9,48 @@ 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: 231-element Vector{Float64}:
+t: 204-element Vector{Float64}:
  0.0
- 0.0016659277128752055
- 0.002432989100957199
- 0.0036642837413415376
- 0.004709119986944817
- 0.005918078594056992
- 0.007106129763889296
- 0.00836604328705504
- 0.00964424423128464
- 0.010963315612198047
+ 0.0017630725463301349
+ 0.002578765391583634
+ 0.0038900689003174543
+ 0.0050004385667972275
+ 0.006282968599569631
+ 0.00753879858193828
+ 0.008865534083334846
+ 0.01020691087682567
+ 0.011586923053397053
 
- 0.901224250082742
- 0.9130080474847379
- 0.9249889455158832
- 0.9371708873148851
- 0.9495567173255886
- 0.9621483766861515
- 0.9749461242781639
- 0.9879491389935008
+ 0.8931676655837408
+ 0.9061469742584687
+ 0.919340601659627
+ 0.9327544152402584
+ 0.9463937370590901
+ 0.9602625548035638
+ 0.9743640183560942
+ 0.9887005249941152
  1.0
-u: 231-element Vector{Array{Float64, 3}}:
- [0.2748500876654998 -0.04071943324047422 … 0.2748500876654998 -0.04071943324047422; 0.26478892718363534 -0.16765558072050224 … 0.26478892718363534 -0.16765558072050224; … ; 0.2748500876654998 -0.04071943324047422 … 0.2748500876654998 -0.04071943324047422; 0.26478892718363534 -0.16765558072050224 … 0.26478892718363534 -0.16765558072050224;;; -1.5829655020559292 -1.4557841819910529 … -1.5829655020559292 -1.4557841819910529; -1.4246354105995818 -1.297699263119553 … -1.4246354105995818 -1.297699263119553; … ; -1.5829655020559292 -1.4557841819910529 … -1.5829655020559292 -1.4557841819910529; -1.4246354105995818 -1.297699263119553 … -1.4246354105995818 -1.297699263119553]
- [0.22058510657086466 -0.15003064641999547 … 0.22058510657086466 -0.15003064641999547; 0.1982588113475794 -0.1902480109949739 … 0.2576249104056681 -0.27143384224791994; … ; 0.22058510657086466 -0.07064790536525153 … 0.26641087398409063 -0.15003064641999547; 0.1982588113475794 -0.27143384224791994 … 0.1982588113475794 -0.27143384224791994;;; -1.5540711551942565 -1.392277169520958 … -1.5540711551942565 -1.392277169520958; -1.398196176974059 -1.2609742895493716 … -1.3805743951790925 -1.2265543344592271; … ; -1.5540711551942565 -1.4413378175847538 … -1.570006347040808 -1.392277169520958; -1.398196176974059 -1.2265543344592271 … -1.398196176974059 -1.2265543344592271]
- [0.19399664043280868 -0.20071552063741827 … 0.19399664043280868 -0.20071552063741827; 0.16744408786115583 -0.20044870227871497 … 0.2539479438729073 -0.3181719180513525; … ; 0.19399664043280868 -0.08449421949182555 … 0.2618841428071021 -0.20071552063741827; 0.16744408786115583 -0.3181719180513525 … 0.16744408786115583 -0.3181719180513525;;; -1.5408896224744166 -1.362910971332051 … -1.5408896224744166 -1.362910971332051; -1.386514337448187 -1.2444333030428174 … -1.3603877858297053 -1.1941482529440282; … ; -1.5408896224744166 -1.4339439282537916 … -1.5630968696272343 -1.362910971332051; -1.386514337448187 -1.1941482529440282 … -1.386514337448187 -1.1941482529440282]
- [0.14940934717906382 -0.2823513003411383 … 0.14940934717906382 -0.2823513003411383; 0.11789472462168231 -0.2165332725882426 … 0.24759663011960842 -0.39172103069959563; … ; 0.14940934717906382 -0.10675480619510444 … 0.25384740679321116 -0.2823513003411383; 0.11789472462168231 -0.39172103069959563 … 0.11789472462168231 -0.39172103069959563;;; -1.5198755947284115 -1.3156703421666662 … -1.5198755947284115 -1.3156703421666662; -1.3683796071986178 -1.2184662498967187 … -1.328244716289856 -1.1426348881246589; … ; -1.5198755947284115 -1.4212503200258166 … -1.5508991383515363 -1.3156703421666662; -1.3683796071986178 -1.1426348881246589 … -1.3683796071986178 -1.1426348881246589]
- [0.10989002204298659 -0.35174924827336546 … 0.10989002204298659 -0.35174924827336546; 0.07587720474553815 -0.22988601908419418 … 0.2418115695622559 -0.4526439021987227; … ; 0.10989002204298659 -0.1256376837392505 … 0.2463409906236072 -0.35174924827336546; 0.07587720474553815 -0.4526439021987227 … 0.07587720474553815 -0.4526439021987227;;; -1.5021723583509827 -1.2755375395367514 … -1.5021723583509827 -1.2755375395367514; -1.3535592264250835 -1.197063579431731 … -1.3013119147766734 -1.0994394874030844; … ; -1.5021723583509827 -1.4098001513934582 … -1.5395856426560672 -1.2755375395367514; -1.3535592264250835 -1.0994394874030844 … -1.3535592264250835 -1.0994394874030844]
- [0.06243496138227762 -0.43201651748195663 … 0.06243496138227762 -0.43201651748195663; 0.02742315032289014 -0.24497890654035046 … 0.2347131913588917 -0.521365358678493; … ; 0.06243496138227762 -0.1474290970797436 … 0.23694196283383762 -0.43201651748195663; 0.02742315032289014 -0.521365358678493 … 0.02742315032289014 -0.521365358678493;;; -1.4818224716447106 -1.2291179186626557 … -1.4818224716447106 -1.2291179186626557; -1.3370223269085002 -1.173097581384703 … -1.2706473908453082 -1.050084445556004; … ; -1.4818224716447106 -1.3959226077864737 … -1.525527954532172 -1.2291179186626557; -1.3370223269085002 -1.050084445556004 … -1.3370223269085002 -1.050084445556004]
- [0.014192943737148224 -0.5106962082836307 … 0.014192943737148224 -0.5106962082836307; -0.019902445757816967 -0.25942194008273045 … 0.22736271126184718 -0.5869964933941038; … ; 0.014192943737148224 -0.16873461937080209 … 0.2270321872946439 -0.5106962082836307; -0.019902445757816967 -0.5869964933941038 … -0.019902445757816967 -0.5869964933941038;;; -1.461953758496949 -1.1835916359291985 … -1.461953758496949 -1.1835916359291985; -1.3213680514666326 -1.150443012586993 … -1.2411303332989192 -1.002265195818241; … ; -1.461953758496949 -1.3817735608576356 … -1.5108383856845689 -1.1835916359291985; -1.3213680514666326 -1.002265195818241 … -1.3213680514666326 -1.002265195818241]
- [-0.038491252983957634 -0.5937429121457573 … -0.038491252983957634 -0.5937429121457573; -0.06965546592090349 -0.27430324498284664 … 0.2192143197882487 -0.6544973553185032; … ; -0.038491252983957634 -0.19115740144457755 … 0.21587331386783326 -0.5937429121457573; -0.06965546592090349 -0.6544973553185032 … -0.06965546592090349 -0.6544973553185032;;; -1.4410136860931138 -1.135492610467593 … -1.4410136860931138 -1.135492610467593; -1.3053634757715198 -1.1274457448656976 … -1.210591588403964 -0.9523190847272895; … ; -1.4410136860931138 -1.3663723301818125 … -1.4944627425749468 -1.135492610467593; -1.3053634757715198 -0.9523190847272895 … -1.3053634757715198 -0.9523190847272895]
- [-0.09332391529212641 -0.6774105000129884 … -0.09332391529212641 -0.6774105000129884; -0.11956158434217912 -0.2889311032174006 … 0.21062948058998315 -0.720743997824583; … ; -0.09332391529212641 -0.2136712153718837 … 0.2039499251814571 -0.6774105000129884; -0.11956158434217912 -0.720743997824583 … -0.11956158434217912 -0.720743997824583;;; -1.4199001649488927 -1.0869729837454651 … -1.4199001649488927 -1.0869729837454651; -1.2897012151421563 -1.1052396934185267 … -1.1804995812640409 -0.9024753354508308; … ; -1.4199001649488927 -1.3504876501454939 … -1.4771639752382986 -1.0869729837454651; -1.2897012151421563 -0.9024753354508308 … -1.2897012151421563 -0.9024753354508308]
- [-0.15114605561573108 -0.7629660533384574 … -0.15114605561573108 -0.7629660533384574; -0.17035942282706104 -0.3035223637128313 … 0.201489026168355 -0.7867408714068179; … ; -0.15114605561573108 -0.23660175169771755 … 0.1910924097524803 -0.7629660533384574; -0.17035942282706104 -0.7867408714068179 … -0.17035942282706104 -0.7867408714068179;;; -1.3982457674622089 -1.037287070103049 … -1.3982457674622089 -1.037287070103049; -1.2740884031555848 -1.0835433984703027 … -1.150464010485413 -0.8519285538097519; … ; -1.3982457674622089 -1.3339782227758397 … -1.4587472110645654 -1.037287070103049; -1.2740884031555848 -0.8519285538097519 … -1.2740884031555848 -0.8519285538097519]
+u: 204-element Vector{Array{Float64, 3}}:
+ [0.0657005977508805 -0.46178960323405305 … 0.0657005977508805 -0.46178960323405305; -0.29671655541944714 -0.6751625511510397 … -0.29671655541944714 -0.6751625511510397; … ; 0.0657005977508805 -0.46178960323405305 … 0.0657005977508805 -0.46178960323405305; -0.29671655541944714 -0.6751625511510397 … -0.29671655541944714 -0.6751625511510397;;; 0.44178650328015645 0.6858371719768287 … 0.44178650328015645 0.6858371719768287; 0.6885635783211306 0.9019365262381107 … 0.6885635783211306 0.9019365262381107; … ; 0.44178650328015645 0.6858371719768287 … 0.44178650328015645 0.6858371719768287; 0.6885635783211306 0.9019365262381107 … 0.6885635783211306 0.9019365262381107]
+ [0.10508365809857242 -0.4151166658241937 … 0.10508365809857242 -0.4151166658241937; -0.26542635844527523 -0.6480256803931433 … -0.2762367848002056 -0.6350966627306861; … ; 0.10508365809857242 -0.42630326330333673 … 0.0958992233884258 -0.4151166658241937; -0.26542635844527523 -0.6350966627306861 … -0.26542635844527523 -0.6350966627306861;;; 0.4253979590103611 0.685483682807895 … 0.4253979590103611 0.685483682807895; 0.6755414259048258 0.9287639575248837 … 0.7070415404350842 0.9212619492755708; … ; 0.4253979590103611 0.7002697039880594 … 0.45890023630961585 0.685483682807895; 0.6755414259048258 0.9212619492755708 … 0.6755414259048258 0.9212619492755708]
+ [0.1241478218087033 -0.3929881372489748 … 0.1241478218087033 -0.3929881372489748; -0.25073137475113755 -0.6364067141130287 … -0.2670980496661108 -0.6167849656697022; … ; 0.1241478218087033 -0.4105067325565303 … 0.10949734690268909 -0.3929881372489748; -0.25073137475113755 -0.6167849656697022 … -0.25073137475113755 -0.6167849656697022;;; 0.41724563080337473 0.6853699779780761 … 0.41724563080337473 0.6853699779780761; 0.6683134884111677 0.9413941876448982 … 0.7154942060884073 0.9292960050685825; … ; 0.41724563080337473 0.7077642554434797 … 0.46729446888215564 0.6853699779780761; 0.6683134884111677 0.9292960050685825 … 0.6683134884111677 0.9292960050685825]
+ [0.15592766308666817 -0.35670101381030794 … 0.15592766308666817 -0.35670101381030794; -0.22677084776148035 -0.6189002847950568 … -0.25276676778988794 -0.5876193256254362; … ; 0.15592766308666817 -0.3859606097593504 … 0.1308558585256516 -0.35670101381030794; -0.22677084776148035 -0.5876193256254362 … -0.22677084776148035 -0.5876193256254362;;; 0.4033514875156646 0.6851038391419311 … 0.4033514875156646 0.6851038391419311; 0.6550621306180234 0.9617752484760846 … 0.7288355734403862 0.940824698067689; … ; 0.4033514875156646 0.7207432202119071 … 0.48131272172605316 0.6851038391419311; 0.6550621306180234 0.940824698067689 … 0.6550621306180234 0.940824698067689]
+ [0.18393668004949645 -0.3252824793032744 … 0.18393668004949645 -0.3252824793032744; -0.2061158077915117 -0.605135979844783 … -0.24090644121751478 -0.5631534762823838; … ; 0.18393668004949645 -0.36599946997720806 … 0.14845993136139088 -0.3252824793032744; -0.2061158077915117 -0.5631534762823838 … -0.2061158077915117 -0.5631534762823838;;; 0.39080896304182966 0.6846847916503316 … 0.39080896304182966 0.6846847916503316; 0.6422537978024514 0.9789438261026857 … 0.7398073162351184 0.9491191475659925; … ; 0.39080896304182966 0.7325054853131627 … 0.4936027234603247 0.6846847916503316; 0.6422537978024514 0.9491191475659925 … 0.6422537978024514 0.9491191475659925]
+ [0.21754709879846393 -0.288196796069032 … 0.21754709879846393 -0.288196796069032; -0.18178407055780385 -0.5903389547459356 … -0.22742471892408855 -0.5351040570757701; … ; 0.21754709879846393 -0.3438758719644673 … 0.1682545026029798 -0.288196796069032; -0.18178407055780385 -0.5351040570757701 … -0.18178407055780385 -0.5351040570757701;;; 0.37542239460147797 0.6838407372342077 … 0.37542239460147797 0.6838407372342077; 0.625646198125405 0.9984703617618144 … 0.7520072789803539 0.956875322629214; … ; 0.37542239460147797 0.7468085939437812 … 0.508169955156378 0.6838407372342077; 0.625646198125405 0.956875322629214 … 0.625646198125405 0.956875322629214]
+ [0.2517644315667876 -0.2510489798819866 … 0.2517644315667876 -0.2510489798819866; -0.15740701404420815 -0.5768681528721296 … -0.2143509894610831 -0.50778915727536; … ; 0.2517644315667876 -0.3231573470541952 … 0.187096033329786 -0.2510489798819866; -0.15740701404420815 -0.50778915727536 … -0.15740701404420815 -0.50778915727536;;; 0.359421105360309 0.6825094453029721 … 0.359421105360309 0.6825094453029721; 0.6075180742834505 1.0170838011072034 … 0.7633729952892768 0.9624474399026997; … ; 0.359421105360309 0.7613928194996743 … 0.5227159953013423 0.6825094453029721; 0.6075180742834505 0.9624474399026997 … 0.6075180742834505 0.9624474399026997]
+ [0.28931131157749934 -0.21089704909833185 … 0.28931131157749934 -0.21089704909833185; -0.130992744235903 -0.5635735249103916 … -0.2005661189336766 -0.479004319370875; … ; 0.28931131157749934 -0.3022399050697672 … 0.206449029719436 -0.21089704909833185; -0.130992744235903 -0.479004319370875 … -0.130992744235903 -0.479004319370875;;; 0.34152297827772793 0.680425708364815 … 0.34152297827772793 0.680425708364815; 0.5864006138472054 1.036007412650382 … 0.7746737928097651 0.9660441565022179; … ; 0.34152297827772793 0.7772387811463938 … 0.5382767313536597 0.680425708364815; 0.5864006138472054 0.9660441565022179 … 0.5864006138472054 0.9660441565022179]
+ [0.32871871888720483 -0.16934281263560214 … 0.32871871888720483 -0.16934281263560214; -0.10352669378970476 -0.5509315902550779 … -0.18654629098805736 -0.4498702836520243; … ; 0.32871871888720483 -0.2820420403849458 … 0.2254762160519092 -0.16934281263560214; -0.10352669378970476 -0.4498702836520243 … -0.10352669378970476 -0.4498702836520243;;; 0.3224154042727793 0.6774858504104891 … 0.3224154042727793 0.6774858504104891; 0.5630606239332288 1.0541841942728225 … 0.7852946444026969 0.9671985740264187; … ; 0.3224154042727793 0.7935311171092936 … 0.5541061496562956 0.6774858504104891; 0.5630606239332288 0.9671985740264187 … 0.5630606239332288 0.9671985740264187]
+ [0.37075720835548737 -0.12557069044081098 … 0.37075720835548737 -0.12557069044081098; -0.07440002612503235 -0.5385623982276309 … -0.1719243514619671 -0.41973786120245304; … ; 0.37075720835548737 -0.26217513977719487 … 0.24453144804547416 -0.12557069044081098; -0.07440002612503235 -0.41973786120245304 … -0.07440002612503235 -0.41973786120245304;;; 0.30173707668705024 0.6734710804676622 … 0.30173707668705024 0.6734710804676622; 0.5370511513252602 1.0717162458898755 … 0.795328987439447 0.9657206624363858; … ; 0.30173707668705024 0.8103888188649462 … 0.5703936018276079 0.6734710804676622; 0.5370511513252602 0.9657206624363858 … 0.5370511513252602 0.9657206624363858]
 
- [-2.6008269440350635 -2.6707555983699267 … -2.6008269440350635 -2.6707555983699267; -1.7530707144997295 0.09689754026634612 … 0.08931652432247436 -1.5878474701844734; … ; -2.6008269440350635 0.10720478554028837 … 0.10270212910901891 -2.6707555983699267; -1.7530707144997295 -1.5878474701844734 … -1.7530707144997295 -1.5878474701844734;;; -0.33445088457939787 0.7427051143709156 … -0.33445088457939787 0.7427051143709156; -0.3997760803661724 0.49976125856316267 … 0.48945401328925586 1.0678539731154677; … ; -0.33445088457939787 0.49375215219778495 … 0.48034789830989794 0.7427051143709156; -0.3997760803661724 1.0678539731154677 … -0.3997760803661724 1.0678539731154677]
- [-2.601725136184899 -2.670873685384534 … -2.601725136184899 -2.670873685384534; -1.7563563398627091 0.10432541979422275 … 0.09676710645672201 -1.5905130283970155; … ; -2.601725136184899 0.11653309235413584 … 0.11187293004895257 -2.670873685384534; -1.7563563398627091 -1.5905130283970155 … -1.7563563398627091 -1.5905130283970155;;; -0.3522441846097827 0.7271704846904127 … -0.3522441846097827 0.7271704846904127; -0.41329173959034654 0.49289307311066627 … 0.48068540055078907 1.056633316058722; … ; -0.3522441846097827 0.48307344888160403 … 0.46792424402653476 0.7271704846904127; -0.41329173959034654 1.056633316058722 … -0.41329173959034654 1.056633316058722]
- [-2.6025523523428413 -2.67071744709628 … -2.6025523523428413 -2.67071744709628; -1.7595072686400752 0.11170467403179123 … 0.10398180790626674 -1.592875884389524; … ; -2.6025523523428413 0.12573523533040898 … 0.12069919884062454 -2.67071744709628; -1.7595072686400752 -1.592875884389524 … -1.7595072686400752 -1.592875884389524;;; -0.3716771235605255 0.7097434315940944 … -0.3716771235605255 0.7097434315940944; -0.42842794202681916 0.4845376104979045 … 0.470507049199323 1.04360335395341; … ; -0.3716771235605255 0.4708320861058763 … 0.4540567364223937 0.7097434315940944; -0.42842794202681916 1.04360335395341 … -0.42842794202681916 1.04360335395341]
- [-2.6033919710125044 -2.6703849125869374 … -2.6033919710125044 -2.6703849125869374; -1.7625884932762157 0.11894958866689538 … 0.1108737142172876 -1.595010124997473; … ; -2.6033919710125044 0.1346989359254884 … 0.12906953547026517 -2.6703849125869374; -1.7625884932762157 -1.595010124997473 … -1.7625884932762157 -1.595010124997473;;; -0.3926613103435367 0.6904669028807235 … -0.3926613103435367 0.6904669028807235; -0.44514969973593976 0.4746627267546408 … 0.45891337949608374 1.0287556320125302; … ; -0.3926613103435367 0.4570355653834647 … 0.43877942685883076 0.6904669028807235; -0.44514969973593976 1.0287556320125302 … -0.44514969973593976 1.0287556320125302]
- [-2.6043280594687412 -2.6699787184933967 … -2.6043280594687412 -2.6699787184933967; -1.7656684357322596 0.12596507497113008 … 0.11734810375345404 -1.5969962068782388; … ; -2.6043280594687412 0.14330182663680066 … 0.13686518330313233 -2.6699787184933967; -1.7656684357322596 -1.5969962068782388 … -1.7656684357322596 -1.5969962068782388;;; -0.4150660872718007 0.6694280502383273 … -0.4150660872718007 0.6694280502383273; -0.4633875966731134 0.4632574290511748 … 0.44592067738554064 1.0121162640308192; … ; -0.4150660872718007 0.44171996769365324 … 0.4221548844285295 0.6694280502383273; -0.4633875966731134 1.0121162640308192 … -0.4633875966731134 1.0121162640308192]
- [-2.60544291809869 -2.669603929032186 … -2.60544291809869 -2.669603929032186; -1.7688174940989976 0.1326468336290909 … 0.12330344096559884 -1.5989199688668567; … ; -2.60544291809869 0.15141245391774916 … 0.14396194354418868 -2.669603929032186; -1.7688174940989976 -1.5989199688668567 … -1.7688174940989976 -1.5989199688668567;;; -0.4387165340878582 0.6467626475342549 … -0.4387165340878582 0.6467626475342549; -0.48303489816549916 0.4503361141495976 … 0.4315704938609758 0.9937508037134614; … ; -0.4387165340878582 0.42495415887972643 … 0.4042773366315602 0.6467626475342549; -0.48303489816549916 0.9937508037134614 … -0.48303489816549916 0.9937508037134614]
- [-2.6068139332770977 -2.6693650234422095 … -2.6068139332770977 -2.6693650234422095; -1.77210571029155 0.13888179342208257 … 0.12863269582615977 -1.6008706855176826; … ; -2.6068139332770977 0.15889167346612212 … 0.15023250924374582 -2.6693650234422095; -1.77210571029155 -1.6008706855176826 … -1.77210571029155 -1.6008706855176826;;; -0.463391491674076 0.6226597041634463 … -0.463391491674076 0.6226597041634463; -0.5039442703140851 0.4359437228387498 … 0.4159338427947474 0.973769704494905; … ; -0.463391491674076 0.40684472968608854 … 0.385276367047268 0.6226597041634463; -0.5039442703140851 0.973769704494905 … -0.5039442703140851 0.973769704494905]
- [-2.608510095624186 -2.6693620397707933 … -2.608510095624186 -2.6693620397707933; -1.7756002089136793 0.14455026801749912 … 0.13322622135795462 -1.6029384976802836; … ; -2.608510095624186 0.1655961649508638 … 0.15555064935246116 -2.6693620397707933; -1.7756002089136793 -1.6029384976802836 … -1.7756002089136793 -1.6029384976802836;;; -0.4888266014764763 0.5973613484526877 … -0.4888266014764763 0.5973613484526877; -0.5259282049009588 0.4201590976985429 … 0.3991132007652158 0.952330459812817; … ; -0.4888266014764763 0.3875380448857541 … 0.365317344444688 0.5973613484526877; -0.5259282049009588 0.952330459812817 … -0.5259282049009588 0.952330459812817]
- [-2.610391429817098 -2.669642952553338 … -2.610391429817098 -2.669642952553338; -1.7790232145791847 0.14912668082348163 … 0.1366855419132724 -1.605003300278285; … ; -2.610391429817098 0.17091984605417793 … 0.15947240646934602 -2.669642952553338; -1.7790232145791847 -1.605003300278285 … -1.7790232145791847 -1.605003300278285;;; -0.512459536652462 0.5734647082450985 … -0.512459536652462 0.5734647082450985; -0.5467494943080825 0.4046273175965032 … 0.3828341523658447 0.9316537922498789; … ; -0.512459536652462 0.3690211337021703 … 0.3464251477003929 0.5734647082450985; -0.5467494943080825 0.9316537922498789 … -0.5467494943080825 0.9316537922498789]

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)
+ [3.63658584761423 3.87080429663847 … 3.63658584761423 3.87080429663847; 2.6792423852120266 -0.1225160105596109 … -0.10545067559959928 2.802014516816849; … ; 3.63658584761423 -0.12912223894278943 … -0.11638439519314522 3.87080429663847; 2.6792423852120266 2.802014516816849 … 2.6792423852120266 2.802014516816849;;; -3.7994309843333527 -4.208021775307386 … -3.7994309843333527 -4.208021775307386; -3.5271355479570685 0.0368409287211739 … 0.04344715710435443 -4.001965753158543; … ; -3.7994309843333527 0.014947618503139795 … 0.018108013501957024 -4.208021775307386; -3.5271355479570685 -4.001965753158543 … -3.5271355479570685 -4.001965753158543]
+ [3.6422895086948026 3.8754147141679445 … 3.6422895086948026 3.8754147141679445; 2.6861592819208227 -0.1102895726892691 … -0.09162669561786173 2.807686775420112; … ; 3.6422895086948026 -0.1177386254998089 … -0.10346473297439138 3.8754147141679445; 2.6861592819208227 2.807686775420112 … 2.6861592819208227 2.807686775420112;;; -3.7931619925313242 -4.202317958546451 … -3.7931619925313242 -4.202317958546451; -3.520066837125464 0.03622302471012847 … 0.04367207752067032 -3.995334854799291; … ; -3.7931619925313242 0.013948554503623277 … 0.01797602011337264 -4.202317958546451; -3.520066837125464 -3.995334854799291 … -3.520066837125464 -3.995334854799291]
+ [3.6479937698880462 3.880149347154071 … 3.6479937698880462 3.880149347154071; 2.6930364840785233 -0.09783809929702272 … -0.07776985332212666 2.813469779247899; … ; 3.6479937698880462 -0.10613939385057908 … -0.09048860694780399 3.880149347154071; 2.6930364840785233 2.813469779247899 … 2.6930364840785233 2.813469779247899;;; -3.787054128421903 -4.19668244159331 … -3.787054128421903 -4.19668244159331; -3.5132283960223627 0.03581805063493754 … 0.04411934518849587 -3.988821699344505; … ; -3.787054128421903 0.013198507566411128 … 0.01809997695775903 -4.19668244159331; -3.5132283960223627 -3.988821699344505 … -3.5132283960223627 -3.988821699344505]
+ [3.653648807156927 3.884965007263431 … 3.653648807156927 3.884965007263431; 2.699812752232953 -0.0852337491691666 … -0.0639660324794772 2.819309423233572; … ; 3.653648807156927 -0.09438466632096755 … -0.07752884716293337 3.884965007263431; 2.699812752232953 2.819309423233572 … 2.699812752232953 2.819309423233572;;; -3.781138941703361 -4.191145491275563 … -3.781138941703361 -4.191145491275563; -3.506658733142349 0.03562880939265571 … 0.044779726544458685 -3.9824637292406186; … ; -3.781138941703361 0.012699036170763192 … 0.01847153724798791 -4.191145491275563; -3.506658733142349 -3.9824637292406186 … -3.506658733142349 -3.9824637292406186]
+ [3.659205979536996 3.889816751078532 … 3.659205979536996 3.889816751078532; 2.7064289741897443 -0.07255414846164322 … -0.05030101815559454 2.825149688747564; … ; 3.659205979536996 -0.08253980267461902 … -0.06465938047302927 3.889816751078532; 2.7064289741897443 2.825149688747564 … 2.7064289741897443 2.825149688747564;;; -3.775446647182436 -4.185737271493904 … -3.775446647182436 -4.185737271493904; -3.5003941254461775 0.03565465237106255 … 0.04564030658404039 -3.976298023468234; … ; -3.775446647182436 0.012448758810299665 … 0.019078978590910903 -4.185737271493904; -3.5003941254461775 -3.976298023468234 … -3.5003941254461775 -3.976298023468234]
+ [3.664618686922103 3.8946587976801346 … 3.664618686922103 3.8946587976801346; 2.7128292402547007 -0.05988085958027444 … -0.0368592383448486 2.8309339928553903; … ; 3.664618686922103 -0.07067439363603704 … -0.05195426801286364 3.8946587976801346; 2.7128292402547007 2.8309339928553903 … 2.7128292402547007 2.8309339928553903;;; -3.7700058000739514 -4.180487610093032 … -3.7700058000739514 -4.180487610093032; -3.4944680861051314 0.0358913760423405 … 0.046684910098105145 -3.97036081328936; … ; -3.7700058000739514 0.012443154773298683 … 0.019907432510493542 -4.180487610093032; -3.4944680861051314 -3.97036081328936 … -3.4944680861051314 -3.97036081328936]
+ [3.669843653298168 3.8994459366486214 … 3.669843653298168 3.8994459366486214; 2.7189623589035268 -0.04729660729185216 … -0.023721384830430667 2.836607060649013; … ; 3.669843653298168 -0.05886002218388251 … -0.03948559259932328 3.8994459366486214; 2.7189623589035268 2.836607060649013 … 2.7189623589035268 2.836607060649013;;; -3.7648424333013457 -4.175425182695787 … -3.7648424333013457 -4.175425182695787; -3.4889102867335025 0.03633131410140703 … 0.04789472899343934 -3.964686349775314; … ; -3.7648424333013457 0.012674494032257701 … 0.020939295360611808 -4.175425182695787; -3.4889102867335025 -3.964686349775314 … -3.4889102867335025 -3.964686349775314]
+ [3.674841850453165 3.904134731547883 … 3.674841850453165 3.904134731547883; 2.724782882886711 -0.03488300018573105 … -0.010962759787617392 2.8421164708795263; … ; 3.674841850453165 -0.04716839537064069 … -0.027321933899741135 3.904134731547883; 2.724782882886711 2.8421164708795263 … 2.724782882886711 2.8421164708795263;;; -3.759979480483631 -4.170576881038018 … -3.759979480483631 -4.170576881038018; -3.4837458594845088 0.036963640271927826 … 0.049249035456839486 -3.959306024454923; … ; -3.759979480483631 0.01313197193049889 … 0.022154757023338023 -4.170576881038018; -3.4837458594845088 -3.959306024454923 … -3.4837458594845088 -3.959306024454923]
+ [3.6785458556973847 3.9076829270352 … 3.6785458556973847 3.9076829270352; 2.7290632367754313 -0.02540851001379519 … -0.0013580255384598883 2.8462520790618577; … ; 3.6785458556973847 -0.0382162612055059 … -0.01812500342619521 3.9076829270352; 2.7290632367754313 2.8462520790618577 … 2.7290632367754313 2.8462520790618577;;; -3.7564219120903566 -4.1669743965658705 … -3.7564219120903566 -4.1669743965658705; -3.4800187689780997 0.037579010665183425 … 0.05038676185689626 -3.9553476091080677; … ; -3.7564219120903566 0.013634784336917961 … 0.023211947861768473 -4.1669743965658705; -3.4800187689780997 -3.9553476091080677 … -3.4800187689780997 -3.9553476091080677]

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
@@ -58,4 +58,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/fr
 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(
     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{b as __pageData,v as default}; +) -> 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{b as __pageData,v as default}; diff --git a/dev/assets/manual_sciml.md.CER13ld6.lean.js b/dev/assets/manual_sciml.md.CcNBgquF.lean.js similarity index 75% rename from dev/assets/manual_sciml.md.CER13ld6.lean.js rename to dev/assets/manual_sciml.md.CcNBgquF.lean.js index 31cefc7c6..4f8747521 100644 --- a/dev/assets/manual_sciml.md.CER13ld6.lean.js +++ b/dev/assets/manual_sciml.md.CcNBgquF.lean.js @@ -9,48 +9,48 @@ 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: 231-element Vector{Float64}:
+t: 204-element Vector{Float64}:
  0.0
- 0.0016659277128752055
- 0.002432989100957199
- 0.0036642837413415376
- 0.004709119986944817
- 0.005918078594056992
- 0.007106129763889296
- 0.00836604328705504
- 0.00964424423128464
- 0.010963315612198047
+ 0.0017630725463301349
+ 0.002578765391583634
+ 0.0038900689003174543
+ 0.0050004385667972275
+ 0.006282968599569631
+ 0.00753879858193828
+ 0.008865534083334846
+ 0.01020691087682567
+ 0.011586923053397053
 
- 0.901224250082742
- 0.9130080474847379
- 0.9249889455158832
- 0.9371708873148851
- 0.9495567173255886
- 0.9621483766861515
- 0.9749461242781639
- 0.9879491389935008
+ 0.8931676655837408
+ 0.9061469742584687
+ 0.919340601659627
+ 0.9327544152402584
+ 0.9463937370590901
+ 0.9602625548035638
+ 0.9743640183560942
+ 0.9887005249941152
  1.0
-u: 231-element Vector{Array{Float64, 3}}:
- [0.2748500876654998 -0.04071943324047422 … 0.2748500876654998 -0.04071943324047422; 0.26478892718363534 -0.16765558072050224 … 0.26478892718363534 -0.16765558072050224; … ; 0.2748500876654998 -0.04071943324047422 … 0.2748500876654998 -0.04071943324047422; 0.26478892718363534 -0.16765558072050224 … 0.26478892718363534 -0.16765558072050224;;; -1.5829655020559292 -1.4557841819910529 … -1.5829655020559292 -1.4557841819910529; -1.4246354105995818 -1.297699263119553 … -1.4246354105995818 -1.297699263119553; … ; -1.5829655020559292 -1.4557841819910529 … -1.5829655020559292 -1.4557841819910529; -1.4246354105995818 -1.297699263119553 … -1.4246354105995818 -1.297699263119553]
- [0.22058510657086466 -0.15003064641999547 … 0.22058510657086466 -0.15003064641999547; 0.1982588113475794 -0.1902480109949739 … 0.2576249104056681 -0.27143384224791994; … ; 0.22058510657086466 -0.07064790536525153 … 0.26641087398409063 -0.15003064641999547; 0.1982588113475794 -0.27143384224791994 … 0.1982588113475794 -0.27143384224791994;;; -1.5540711551942565 -1.392277169520958 … -1.5540711551942565 -1.392277169520958; -1.398196176974059 -1.2609742895493716 … -1.3805743951790925 -1.2265543344592271; … ; -1.5540711551942565 -1.4413378175847538 … -1.570006347040808 -1.392277169520958; -1.398196176974059 -1.2265543344592271 … -1.398196176974059 -1.2265543344592271]
- [0.19399664043280868 -0.20071552063741827 … 0.19399664043280868 -0.20071552063741827; 0.16744408786115583 -0.20044870227871497 … 0.2539479438729073 -0.3181719180513525; … ; 0.19399664043280868 -0.08449421949182555 … 0.2618841428071021 -0.20071552063741827; 0.16744408786115583 -0.3181719180513525 … 0.16744408786115583 -0.3181719180513525;;; -1.5408896224744166 -1.362910971332051 … -1.5408896224744166 -1.362910971332051; -1.386514337448187 -1.2444333030428174 … -1.3603877858297053 -1.1941482529440282; … ; -1.5408896224744166 -1.4339439282537916 … -1.5630968696272343 -1.362910971332051; -1.386514337448187 -1.1941482529440282 … -1.386514337448187 -1.1941482529440282]
- [0.14940934717906382 -0.2823513003411383 … 0.14940934717906382 -0.2823513003411383; 0.11789472462168231 -0.2165332725882426 … 0.24759663011960842 -0.39172103069959563; … ; 0.14940934717906382 -0.10675480619510444 … 0.25384740679321116 -0.2823513003411383; 0.11789472462168231 -0.39172103069959563 … 0.11789472462168231 -0.39172103069959563;;; -1.5198755947284115 -1.3156703421666662 … -1.5198755947284115 -1.3156703421666662; -1.3683796071986178 -1.2184662498967187 … -1.328244716289856 -1.1426348881246589; … ; -1.5198755947284115 -1.4212503200258166 … -1.5508991383515363 -1.3156703421666662; -1.3683796071986178 -1.1426348881246589 … -1.3683796071986178 -1.1426348881246589]
- [0.10989002204298659 -0.35174924827336546 … 0.10989002204298659 -0.35174924827336546; 0.07587720474553815 -0.22988601908419418 … 0.2418115695622559 -0.4526439021987227; … ; 0.10989002204298659 -0.1256376837392505 … 0.2463409906236072 -0.35174924827336546; 0.07587720474553815 -0.4526439021987227 … 0.07587720474553815 -0.4526439021987227;;; -1.5021723583509827 -1.2755375395367514 … -1.5021723583509827 -1.2755375395367514; -1.3535592264250835 -1.197063579431731 … -1.3013119147766734 -1.0994394874030844; … ; -1.5021723583509827 -1.4098001513934582 … -1.5395856426560672 -1.2755375395367514; -1.3535592264250835 -1.0994394874030844 … -1.3535592264250835 -1.0994394874030844]
- [0.06243496138227762 -0.43201651748195663 … 0.06243496138227762 -0.43201651748195663; 0.02742315032289014 -0.24497890654035046 … 0.2347131913588917 -0.521365358678493; … ; 0.06243496138227762 -0.1474290970797436 … 0.23694196283383762 -0.43201651748195663; 0.02742315032289014 -0.521365358678493 … 0.02742315032289014 -0.521365358678493;;; -1.4818224716447106 -1.2291179186626557 … -1.4818224716447106 -1.2291179186626557; -1.3370223269085002 -1.173097581384703 … -1.2706473908453082 -1.050084445556004; … ; -1.4818224716447106 -1.3959226077864737 … -1.525527954532172 -1.2291179186626557; -1.3370223269085002 -1.050084445556004 … -1.3370223269085002 -1.050084445556004]
- [0.014192943737148224 -0.5106962082836307 … 0.014192943737148224 -0.5106962082836307; -0.019902445757816967 -0.25942194008273045 … 0.22736271126184718 -0.5869964933941038; … ; 0.014192943737148224 -0.16873461937080209 … 0.2270321872946439 -0.5106962082836307; -0.019902445757816967 -0.5869964933941038 … -0.019902445757816967 -0.5869964933941038;;; -1.461953758496949 -1.1835916359291985 … -1.461953758496949 -1.1835916359291985; -1.3213680514666326 -1.150443012586993 … -1.2411303332989192 -1.002265195818241; … ; -1.461953758496949 -1.3817735608576356 … -1.5108383856845689 -1.1835916359291985; -1.3213680514666326 -1.002265195818241 … -1.3213680514666326 -1.002265195818241]
- [-0.038491252983957634 -0.5937429121457573 … -0.038491252983957634 -0.5937429121457573; -0.06965546592090349 -0.27430324498284664 … 0.2192143197882487 -0.6544973553185032; … ; -0.038491252983957634 -0.19115740144457755 … 0.21587331386783326 -0.5937429121457573; -0.06965546592090349 -0.6544973553185032 … -0.06965546592090349 -0.6544973553185032;;; -1.4410136860931138 -1.135492610467593 … -1.4410136860931138 -1.135492610467593; -1.3053634757715198 -1.1274457448656976 … -1.210591588403964 -0.9523190847272895; … ; -1.4410136860931138 -1.3663723301818125 … -1.4944627425749468 -1.135492610467593; -1.3053634757715198 -0.9523190847272895 … -1.3053634757715198 -0.9523190847272895]
- [-0.09332391529212641 -0.6774105000129884 … -0.09332391529212641 -0.6774105000129884; -0.11956158434217912 -0.2889311032174006 … 0.21062948058998315 -0.720743997824583; … ; -0.09332391529212641 -0.2136712153718837 … 0.2039499251814571 -0.6774105000129884; -0.11956158434217912 -0.720743997824583 … -0.11956158434217912 -0.720743997824583;;; -1.4199001649488927 -1.0869729837454651 … -1.4199001649488927 -1.0869729837454651; -1.2897012151421563 -1.1052396934185267 … -1.1804995812640409 -0.9024753354508308; … ; -1.4199001649488927 -1.3504876501454939 … -1.4771639752382986 -1.0869729837454651; -1.2897012151421563 -0.9024753354508308 … -1.2897012151421563 -0.9024753354508308]
- [-0.15114605561573108 -0.7629660533384574 … -0.15114605561573108 -0.7629660533384574; -0.17035942282706104 -0.3035223637128313 … 0.201489026168355 -0.7867408714068179; … ; -0.15114605561573108 -0.23660175169771755 … 0.1910924097524803 -0.7629660533384574; -0.17035942282706104 -0.7867408714068179 … -0.17035942282706104 -0.7867408714068179;;; -1.3982457674622089 -1.037287070103049 … -1.3982457674622089 -1.037287070103049; -1.2740884031555848 -1.0835433984703027 … -1.150464010485413 -0.8519285538097519; … ; -1.3982457674622089 -1.3339782227758397 … -1.4587472110645654 -1.037287070103049; -1.2740884031555848 -0.8519285538097519 … -1.2740884031555848 -0.8519285538097519]
+u: 204-element Vector{Array{Float64, 3}}:
+ [0.0657005977508805 -0.46178960323405305 … 0.0657005977508805 -0.46178960323405305; -0.29671655541944714 -0.6751625511510397 … -0.29671655541944714 -0.6751625511510397; … ; 0.0657005977508805 -0.46178960323405305 … 0.0657005977508805 -0.46178960323405305; -0.29671655541944714 -0.6751625511510397 … -0.29671655541944714 -0.6751625511510397;;; 0.44178650328015645 0.6858371719768287 … 0.44178650328015645 0.6858371719768287; 0.6885635783211306 0.9019365262381107 … 0.6885635783211306 0.9019365262381107; … ; 0.44178650328015645 0.6858371719768287 … 0.44178650328015645 0.6858371719768287; 0.6885635783211306 0.9019365262381107 … 0.6885635783211306 0.9019365262381107]
+ [0.10508365809857242 -0.4151166658241937 … 0.10508365809857242 -0.4151166658241937; -0.26542635844527523 -0.6480256803931433 … -0.2762367848002056 -0.6350966627306861; … ; 0.10508365809857242 -0.42630326330333673 … 0.0958992233884258 -0.4151166658241937; -0.26542635844527523 -0.6350966627306861 … -0.26542635844527523 -0.6350966627306861;;; 0.4253979590103611 0.685483682807895 … 0.4253979590103611 0.685483682807895; 0.6755414259048258 0.9287639575248837 … 0.7070415404350842 0.9212619492755708; … ; 0.4253979590103611 0.7002697039880594 … 0.45890023630961585 0.685483682807895; 0.6755414259048258 0.9212619492755708 … 0.6755414259048258 0.9212619492755708]
+ [0.1241478218087033 -0.3929881372489748 … 0.1241478218087033 -0.3929881372489748; -0.25073137475113755 -0.6364067141130287 … -0.2670980496661108 -0.6167849656697022; … ; 0.1241478218087033 -0.4105067325565303 … 0.10949734690268909 -0.3929881372489748; -0.25073137475113755 -0.6167849656697022 … -0.25073137475113755 -0.6167849656697022;;; 0.41724563080337473 0.6853699779780761 … 0.41724563080337473 0.6853699779780761; 0.6683134884111677 0.9413941876448982 … 0.7154942060884073 0.9292960050685825; … ; 0.41724563080337473 0.7077642554434797 … 0.46729446888215564 0.6853699779780761; 0.6683134884111677 0.9292960050685825 … 0.6683134884111677 0.9292960050685825]
+ [0.15592766308666817 -0.35670101381030794 … 0.15592766308666817 -0.35670101381030794; -0.22677084776148035 -0.6189002847950568 … -0.25276676778988794 -0.5876193256254362; … ; 0.15592766308666817 -0.3859606097593504 … 0.1308558585256516 -0.35670101381030794; -0.22677084776148035 -0.5876193256254362 … -0.22677084776148035 -0.5876193256254362;;; 0.4033514875156646 0.6851038391419311 … 0.4033514875156646 0.6851038391419311; 0.6550621306180234 0.9617752484760846 … 0.7288355734403862 0.940824698067689; … ; 0.4033514875156646 0.7207432202119071 … 0.48131272172605316 0.6851038391419311; 0.6550621306180234 0.940824698067689 … 0.6550621306180234 0.940824698067689]
+ [0.18393668004949645 -0.3252824793032744 … 0.18393668004949645 -0.3252824793032744; -0.2061158077915117 -0.605135979844783 … -0.24090644121751478 -0.5631534762823838; … ; 0.18393668004949645 -0.36599946997720806 … 0.14845993136139088 -0.3252824793032744; -0.2061158077915117 -0.5631534762823838 … -0.2061158077915117 -0.5631534762823838;;; 0.39080896304182966 0.6846847916503316 … 0.39080896304182966 0.6846847916503316; 0.6422537978024514 0.9789438261026857 … 0.7398073162351184 0.9491191475659925; … ; 0.39080896304182966 0.7325054853131627 … 0.4936027234603247 0.6846847916503316; 0.6422537978024514 0.9491191475659925 … 0.6422537978024514 0.9491191475659925]
+ [0.21754709879846393 -0.288196796069032 … 0.21754709879846393 -0.288196796069032; -0.18178407055780385 -0.5903389547459356 … -0.22742471892408855 -0.5351040570757701; … ; 0.21754709879846393 -0.3438758719644673 … 0.1682545026029798 -0.288196796069032; -0.18178407055780385 -0.5351040570757701 … -0.18178407055780385 -0.5351040570757701;;; 0.37542239460147797 0.6838407372342077 … 0.37542239460147797 0.6838407372342077; 0.625646198125405 0.9984703617618144 … 0.7520072789803539 0.956875322629214; … ; 0.37542239460147797 0.7468085939437812 … 0.508169955156378 0.6838407372342077; 0.625646198125405 0.956875322629214 … 0.625646198125405 0.956875322629214]
+ [0.2517644315667876 -0.2510489798819866 … 0.2517644315667876 -0.2510489798819866; -0.15740701404420815 -0.5768681528721296 … -0.2143509894610831 -0.50778915727536; … ; 0.2517644315667876 -0.3231573470541952 … 0.187096033329786 -0.2510489798819866; -0.15740701404420815 -0.50778915727536 … -0.15740701404420815 -0.50778915727536;;; 0.359421105360309 0.6825094453029721 … 0.359421105360309 0.6825094453029721; 0.6075180742834505 1.0170838011072034 … 0.7633729952892768 0.9624474399026997; … ; 0.359421105360309 0.7613928194996743 … 0.5227159953013423 0.6825094453029721; 0.6075180742834505 0.9624474399026997 … 0.6075180742834505 0.9624474399026997]
+ [0.28931131157749934 -0.21089704909833185 … 0.28931131157749934 -0.21089704909833185; -0.130992744235903 -0.5635735249103916 … -0.2005661189336766 -0.479004319370875; … ; 0.28931131157749934 -0.3022399050697672 … 0.206449029719436 -0.21089704909833185; -0.130992744235903 -0.479004319370875 … -0.130992744235903 -0.479004319370875;;; 0.34152297827772793 0.680425708364815 … 0.34152297827772793 0.680425708364815; 0.5864006138472054 1.036007412650382 … 0.7746737928097651 0.9660441565022179; … ; 0.34152297827772793 0.7772387811463938 … 0.5382767313536597 0.680425708364815; 0.5864006138472054 0.9660441565022179 … 0.5864006138472054 0.9660441565022179]
+ [0.32871871888720483 -0.16934281263560214 … 0.32871871888720483 -0.16934281263560214; -0.10352669378970476 -0.5509315902550779 … -0.18654629098805736 -0.4498702836520243; … ; 0.32871871888720483 -0.2820420403849458 … 0.2254762160519092 -0.16934281263560214; -0.10352669378970476 -0.4498702836520243 … -0.10352669378970476 -0.4498702836520243;;; 0.3224154042727793 0.6774858504104891 … 0.3224154042727793 0.6774858504104891; 0.5630606239332288 1.0541841942728225 … 0.7852946444026969 0.9671985740264187; … ; 0.3224154042727793 0.7935311171092936 … 0.5541061496562956 0.6774858504104891; 0.5630606239332288 0.9671985740264187 … 0.5630606239332288 0.9671985740264187]
+ [0.37075720835548737 -0.12557069044081098 … 0.37075720835548737 -0.12557069044081098; -0.07440002612503235 -0.5385623982276309 … -0.1719243514619671 -0.41973786120245304; … ; 0.37075720835548737 -0.26217513977719487 … 0.24453144804547416 -0.12557069044081098; -0.07440002612503235 -0.41973786120245304 … -0.07440002612503235 -0.41973786120245304;;; 0.30173707668705024 0.6734710804676622 … 0.30173707668705024 0.6734710804676622; 0.5370511513252602 1.0717162458898755 … 0.795328987439447 0.9657206624363858; … ; 0.30173707668705024 0.8103888188649462 … 0.5703936018276079 0.6734710804676622; 0.5370511513252602 0.9657206624363858 … 0.5370511513252602 0.9657206624363858]
 
- [-2.6008269440350635 -2.6707555983699267 … -2.6008269440350635 -2.6707555983699267; -1.7530707144997295 0.09689754026634612 … 0.08931652432247436 -1.5878474701844734; … ; -2.6008269440350635 0.10720478554028837 … 0.10270212910901891 -2.6707555983699267; -1.7530707144997295 -1.5878474701844734 … -1.7530707144997295 -1.5878474701844734;;; -0.33445088457939787 0.7427051143709156 … -0.33445088457939787 0.7427051143709156; -0.3997760803661724 0.49976125856316267 … 0.48945401328925586 1.0678539731154677; … ; -0.33445088457939787 0.49375215219778495 … 0.48034789830989794 0.7427051143709156; -0.3997760803661724 1.0678539731154677 … -0.3997760803661724 1.0678539731154677]
- [-2.601725136184899 -2.670873685384534 … -2.601725136184899 -2.670873685384534; -1.7563563398627091 0.10432541979422275 … 0.09676710645672201 -1.5905130283970155; … ; -2.601725136184899 0.11653309235413584 … 0.11187293004895257 -2.670873685384534; -1.7563563398627091 -1.5905130283970155 … -1.7563563398627091 -1.5905130283970155;;; -0.3522441846097827 0.7271704846904127 … -0.3522441846097827 0.7271704846904127; -0.41329173959034654 0.49289307311066627 … 0.48068540055078907 1.056633316058722; … ; -0.3522441846097827 0.48307344888160403 … 0.46792424402653476 0.7271704846904127; -0.41329173959034654 1.056633316058722 … -0.41329173959034654 1.056633316058722]
- [-2.6025523523428413 -2.67071744709628 … -2.6025523523428413 -2.67071744709628; -1.7595072686400752 0.11170467403179123 … 0.10398180790626674 -1.592875884389524; … ; -2.6025523523428413 0.12573523533040898 … 0.12069919884062454 -2.67071744709628; -1.7595072686400752 -1.592875884389524 … -1.7595072686400752 -1.592875884389524;;; -0.3716771235605255 0.7097434315940944 … -0.3716771235605255 0.7097434315940944; -0.42842794202681916 0.4845376104979045 … 0.470507049199323 1.04360335395341; … ; -0.3716771235605255 0.4708320861058763 … 0.4540567364223937 0.7097434315940944; -0.42842794202681916 1.04360335395341 … -0.42842794202681916 1.04360335395341]
- [-2.6033919710125044 -2.6703849125869374 … -2.6033919710125044 -2.6703849125869374; -1.7625884932762157 0.11894958866689538 … 0.1108737142172876 -1.595010124997473; … ; -2.6033919710125044 0.1346989359254884 … 0.12906953547026517 -2.6703849125869374; -1.7625884932762157 -1.595010124997473 … -1.7625884932762157 -1.595010124997473;;; -0.3926613103435367 0.6904669028807235 … -0.3926613103435367 0.6904669028807235; -0.44514969973593976 0.4746627267546408 … 0.45891337949608374 1.0287556320125302; … ; -0.3926613103435367 0.4570355653834647 … 0.43877942685883076 0.6904669028807235; -0.44514969973593976 1.0287556320125302 … -0.44514969973593976 1.0287556320125302]
- [-2.6043280594687412 -2.6699787184933967 … -2.6043280594687412 -2.6699787184933967; -1.7656684357322596 0.12596507497113008 … 0.11734810375345404 -1.5969962068782388; … ; -2.6043280594687412 0.14330182663680066 … 0.13686518330313233 -2.6699787184933967; -1.7656684357322596 -1.5969962068782388 … -1.7656684357322596 -1.5969962068782388;;; -0.4150660872718007 0.6694280502383273 … -0.4150660872718007 0.6694280502383273; -0.4633875966731134 0.4632574290511748 … 0.44592067738554064 1.0121162640308192; … ; -0.4150660872718007 0.44171996769365324 … 0.4221548844285295 0.6694280502383273; -0.4633875966731134 1.0121162640308192 … -0.4633875966731134 1.0121162640308192]
- [-2.60544291809869 -2.669603929032186 … -2.60544291809869 -2.669603929032186; -1.7688174940989976 0.1326468336290909 … 0.12330344096559884 -1.5989199688668567; … ; -2.60544291809869 0.15141245391774916 … 0.14396194354418868 -2.669603929032186; -1.7688174940989976 -1.5989199688668567 … -1.7688174940989976 -1.5989199688668567;;; -0.4387165340878582 0.6467626475342549 … -0.4387165340878582 0.6467626475342549; -0.48303489816549916 0.4503361141495976 … 0.4315704938609758 0.9937508037134614; … ; -0.4387165340878582 0.42495415887972643 … 0.4042773366315602 0.6467626475342549; -0.48303489816549916 0.9937508037134614 … -0.48303489816549916 0.9937508037134614]
- [-2.6068139332770977 -2.6693650234422095 … -2.6068139332770977 -2.6693650234422095; -1.77210571029155 0.13888179342208257 … 0.12863269582615977 -1.6008706855176826; … ; -2.6068139332770977 0.15889167346612212 … 0.15023250924374582 -2.6693650234422095; -1.77210571029155 -1.6008706855176826 … -1.77210571029155 -1.6008706855176826;;; -0.463391491674076 0.6226597041634463 … -0.463391491674076 0.6226597041634463; -0.5039442703140851 0.4359437228387498 … 0.4159338427947474 0.973769704494905; … ; -0.463391491674076 0.40684472968608854 … 0.385276367047268 0.6226597041634463; -0.5039442703140851 0.973769704494905 … -0.5039442703140851 0.973769704494905]
- [-2.608510095624186 -2.6693620397707933 … -2.608510095624186 -2.6693620397707933; -1.7756002089136793 0.14455026801749912 … 0.13322622135795462 -1.6029384976802836; … ; -2.608510095624186 0.1655961649508638 … 0.15555064935246116 -2.6693620397707933; -1.7756002089136793 -1.6029384976802836 … -1.7756002089136793 -1.6029384976802836;;; -0.4888266014764763 0.5973613484526877 … -0.4888266014764763 0.5973613484526877; -0.5259282049009588 0.4201590976985429 … 0.3991132007652158 0.952330459812817; … ; -0.4888266014764763 0.3875380448857541 … 0.365317344444688 0.5973613484526877; -0.5259282049009588 0.952330459812817 … -0.5259282049009588 0.952330459812817]
- [-2.610391429817098 -2.669642952553338 … -2.610391429817098 -2.669642952553338; -1.7790232145791847 0.14912668082348163 … 0.1366855419132724 -1.605003300278285; … ; -2.610391429817098 0.17091984605417793 … 0.15947240646934602 -2.669642952553338; -1.7790232145791847 -1.605003300278285 … -1.7790232145791847 -1.605003300278285;;; -0.512459536652462 0.5734647082450985 … -0.512459536652462 0.5734647082450985; -0.5467494943080825 0.4046273175965032 … 0.3828341523658447 0.9316537922498789; … ; -0.512459536652462 0.3690211337021703 … 0.3464251477003929 0.5734647082450985; -0.5467494943080825 0.9316537922498789 … -0.5467494943080825 0.9316537922498789]

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)
+ [3.63658584761423 3.87080429663847 … 3.63658584761423 3.87080429663847; 2.6792423852120266 -0.1225160105596109 … -0.10545067559959928 2.802014516816849; … ; 3.63658584761423 -0.12912223894278943 … -0.11638439519314522 3.87080429663847; 2.6792423852120266 2.802014516816849 … 2.6792423852120266 2.802014516816849;;; -3.7994309843333527 -4.208021775307386 … -3.7994309843333527 -4.208021775307386; -3.5271355479570685 0.0368409287211739 … 0.04344715710435443 -4.001965753158543; … ; -3.7994309843333527 0.014947618503139795 … 0.018108013501957024 -4.208021775307386; -3.5271355479570685 -4.001965753158543 … -3.5271355479570685 -4.001965753158543]
+ [3.6422895086948026 3.8754147141679445 … 3.6422895086948026 3.8754147141679445; 2.6861592819208227 -0.1102895726892691 … -0.09162669561786173 2.807686775420112; … ; 3.6422895086948026 -0.1177386254998089 … -0.10346473297439138 3.8754147141679445; 2.6861592819208227 2.807686775420112 … 2.6861592819208227 2.807686775420112;;; -3.7931619925313242 -4.202317958546451 … -3.7931619925313242 -4.202317958546451; -3.520066837125464 0.03622302471012847 … 0.04367207752067032 -3.995334854799291; … ; -3.7931619925313242 0.013948554503623277 … 0.01797602011337264 -4.202317958546451; -3.520066837125464 -3.995334854799291 … -3.520066837125464 -3.995334854799291]
+ [3.6479937698880462 3.880149347154071 … 3.6479937698880462 3.880149347154071; 2.6930364840785233 -0.09783809929702272 … -0.07776985332212666 2.813469779247899; … ; 3.6479937698880462 -0.10613939385057908 … -0.09048860694780399 3.880149347154071; 2.6930364840785233 2.813469779247899 … 2.6930364840785233 2.813469779247899;;; -3.787054128421903 -4.19668244159331 … -3.787054128421903 -4.19668244159331; -3.5132283960223627 0.03581805063493754 … 0.04411934518849587 -3.988821699344505; … ; -3.787054128421903 0.013198507566411128 … 0.01809997695775903 -4.19668244159331; -3.5132283960223627 -3.988821699344505 … -3.5132283960223627 -3.988821699344505]
+ [3.653648807156927 3.884965007263431 … 3.653648807156927 3.884965007263431; 2.699812752232953 -0.0852337491691666 … -0.0639660324794772 2.819309423233572; … ; 3.653648807156927 -0.09438466632096755 … -0.07752884716293337 3.884965007263431; 2.699812752232953 2.819309423233572 … 2.699812752232953 2.819309423233572;;; -3.781138941703361 -4.191145491275563 … -3.781138941703361 -4.191145491275563; -3.506658733142349 0.03562880939265571 … 0.044779726544458685 -3.9824637292406186; … ; -3.781138941703361 0.012699036170763192 … 0.01847153724798791 -4.191145491275563; -3.506658733142349 -3.9824637292406186 … -3.506658733142349 -3.9824637292406186]
+ [3.659205979536996 3.889816751078532 … 3.659205979536996 3.889816751078532; 2.7064289741897443 -0.07255414846164322 … -0.05030101815559454 2.825149688747564; … ; 3.659205979536996 -0.08253980267461902 … -0.06465938047302927 3.889816751078532; 2.7064289741897443 2.825149688747564 … 2.7064289741897443 2.825149688747564;;; -3.775446647182436 -4.185737271493904 … -3.775446647182436 -4.185737271493904; -3.5003941254461775 0.03565465237106255 … 0.04564030658404039 -3.976298023468234; … ; -3.775446647182436 0.012448758810299665 … 0.019078978590910903 -4.185737271493904; -3.5003941254461775 -3.976298023468234 … -3.5003941254461775 -3.976298023468234]
+ [3.664618686922103 3.8946587976801346 … 3.664618686922103 3.8946587976801346; 2.7128292402547007 -0.05988085958027444 … -0.0368592383448486 2.8309339928553903; … ; 3.664618686922103 -0.07067439363603704 … -0.05195426801286364 3.8946587976801346; 2.7128292402547007 2.8309339928553903 … 2.7128292402547007 2.8309339928553903;;; -3.7700058000739514 -4.180487610093032 … -3.7700058000739514 -4.180487610093032; -3.4944680861051314 0.0358913760423405 … 0.046684910098105145 -3.97036081328936; … ; -3.7700058000739514 0.012443154773298683 … 0.019907432510493542 -4.180487610093032; -3.4944680861051314 -3.97036081328936 … -3.4944680861051314 -3.97036081328936]
+ [3.669843653298168 3.8994459366486214 … 3.669843653298168 3.8994459366486214; 2.7189623589035268 -0.04729660729185216 … -0.023721384830430667 2.836607060649013; … ; 3.669843653298168 -0.05886002218388251 … -0.03948559259932328 3.8994459366486214; 2.7189623589035268 2.836607060649013 … 2.7189623589035268 2.836607060649013;;; -3.7648424333013457 -4.175425182695787 … -3.7648424333013457 -4.175425182695787; -3.4889102867335025 0.03633131410140703 … 0.04789472899343934 -3.964686349775314; … ; -3.7648424333013457 0.012674494032257701 … 0.020939295360611808 -4.175425182695787; -3.4889102867335025 -3.964686349775314 … -3.4889102867335025 -3.964686349775314]
+ [3.674841850453165 3.904134731547883 … 3.674841850453165 3.904134731547883; 2.724782882886711 -0.03488300018573105 … -0.010962759787617392 2.8421164708795263; … ; 3.674841850453165 -0.04716839537064069 … -0.027321933899741135 3.904134731547883; 2.724782882886711 2.8421164708795263 … 2.724782882886711 2.8421164708795263;;; -3.759979480483631 -4.170576881038018 … -3.759979480483631 -4.170576881038018; -3.4837458594845088 0.036963640271927826 … 0.049249035456839486 -3.959306024454923; … ; -3.759979480483631 0.01313197193049889 … 0.022154757023338023 -4.170576881038018; -3.4837458594845088 -3.959306024454923 … -3.4837458594845088 -3.959306024454923]
+ [3.6785458556973847 3.9076829270352 … 3.6785458556973847 3.9076829270352; 2.7290632367754313 -0.02540851001379519 … -0.0013580255384598883 2.8462520790618577; … ; 3.6785458556973847 -0.0382162612055059 … -0.01812500342619521 3.9076829270352; 2.7290632367754313 2.8462520790618577 … 2.7290632367754313 2.8462520790618577;;; -3.7564219120903566 -4.1669743965658705 … -3.7564219120903566 -4.1669743965658705; -3.4800187689780997 0.037579010665183425 … 0.05038676185689626 -3.9553476091080677; … ; -3.7564219120903566 0.013634784336917961 … 0.023211947861768473 -4.1669743965658705; -3.4800187689780997 -3.9553476091080677 … -3.4800187689780997 -3.9553476091080677]

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
@@ -58,4 +58,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/fr
 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(
     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{b as __pageData,v as default}; +) -> 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{b as __pageData,v as default}; diff --git a/dev/assets/manual_setup.md.w6x6ynsm.js b/dev/assets/manual_setup.md.B7b6UkIH.js similarity index 97% rename from dev/assets/manual_setup.md.w6x6ynsm.js rename to dev/assets/manual_setup.md.B7b6UkIH.js index b1bac10f5..6084c86b4 100644 --- a/dev/assets/manual_setup.md.w6x6ynsm.js +++ b/dev/assets/manual_setup.md.B7b6UkIH.js @@ -1,10 +1,10 @@ -import{_ as r,c as n,j as t,a as e,G as l,a5 as a,B as d,o}from"./chunks/framework.Dr1kDDE8.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"}},G={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"},R={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:""},t1={class:"jldocstring custom-block",open:""},s1={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,s,o1,r1,d1,p1){const i=d("Badge");return o(),n("div",null,[s[124]||(s[124]=t("h1",{id:"Problem-setup",tabindex:"-1"},[e("Problem setup "),t("a",{class:"header-anchor",href:"#Problem-setup","aria-label":'Permalink to "Problem setup {#Problem-setup}"'},"​")],-1)),s[125]||(s[125]=t("h2",{id:"Boundary-conditions",tabindex:"-1"},[e("Boundary conditions "),t("a",{class:"header-anchor",href:"#Boundary-conditions","aria-label":'Permalink to "Boundary conditions {#Boundary-conditions}"'},"​")],-1)),s[126]||(s[126]=t("p",null,"Each boundary has exactly one type of boundary conditions. For periodic boundary conditions, the opposite boundary must also be periodic.",-1)),t("details",Q,[t("summary",null,[s[0]||(s[0]=t("a",{id:"IncompressibleNavierStokes.AbstractBC",href:"#IncompressibleNavierStokes.AbstractBC"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.AbstractBC")],-1)),s[1]||(s[1]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[2]||(s[2]=a('
julia
abstract type AbstractBC

Boundary condition for one side of the domain.

Fields

source

',4))]),t("details",T,[t("summary",null,[s[3]||(s[3]=t("a",{id:"IncompressibleNavierStokes.DirichletBC",href:"#IncompressibleNavierStokes.DirichletBC"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.DirichletBC")],-1)),s[4]||(s[4]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[5]||(s[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))]),t("details",m,[t("summary",null,[s[6]||(s[6]=t("a",{id:"IncompressibleNavierStokes.PeriodicBC",href:"#IncompressibleNavierStokes.PeriodicBC"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.PeriodicBC")],-1)),s[7]||(s[7]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[8]||(s[8]=a('
julia
struct PeriodicBC <: IncompressibleNavierStokes.AbstractBC

Periodic boundary conditions. Must be periodic on both sides.

Fields

source

',4))]),t("details",h,[t("summary",null,[s[9]||(s[9]=t("a",{id:"IncompressibleNavierStokes.PressureBC",href:"#IncompressibleNavierStokes.PressureBC"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.PressureBC")],-1)),s[10]||(s[10]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[11]||(s[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))]),t("details",c,[t("summary",null,[s[12]||(s[12]=t("a",{id:"IncompressibleNavierStokes.SymmetricBC",href:"#IncompressibleNavierStokes.SymmetricBC"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.SymmetricBC")],-1)),s[13]||(s[13]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[14]||(s[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))]),t("details",g,[t("summary",null,[s[15]||(s[15]=t("a",{id:"IncompressibleNavierStokes.apply_bc_p!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_p!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_p!")],-1)),s[16]||(s[16]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[17]||(s[17]=a('
julia
apply_bc_p!(p, t, setup; kwargs...) -> Any

Apply pressure boundary conditions (in-place version).

source

',3))]),t("details",k,[t("summary",null,[s[18]||(s[18]=t("a",{id:"IncompressibleNavierStokes.apply_bc_p-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_p-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_p")],-1)),s[19]||(s[19]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[20]||(s[20]=a('
julia
apply_bc_p(p, t, setup; kwargs...) -> Any

Apply pressure boundary conditions (differentiable version).

source

',3))]),t("details",u,[t("summary",null,[s[21]||(s[21]=t("a",{id:"IncompressibleNavierStokes.apply_bc_temp!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_temp!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_temp!")],-1)),s[22]||(s[22]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[23]||(s[23]=a('
julia
apply_bc_temp!(temp, t, setup; kwargs...) -> Any

Apply temperature boundary conditions (in-place version).

source

',3))]),t("details",b,[t("summary",null,[s[24]||(s[24]=t("a",{id:"IncompressibleNavierStokes.apply_bc_temp-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_temp-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_temp")],-1)),s[25]||(s[25]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[26]||(s[26]=a('
julia
apply_bc_temp(temp, t, setup; kwargs...) -> Any

Apply temperature boundary conditions (differentiable version).

source

',3))]),t("details",y,[t("summary",null,[s[27]||(s[27]=t("a",{id:"IncompressibleNavierStokes.apply_bc_u!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_u!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_u!")],-1)),s[28]||(s[28]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[29]||(s[29]=a('
julia
apply_bc_u!(u, t, setup; kwargs...) -> Any

Apply velocity boundary conditions (in-place version).

source

',3))]),t("details",f,[t("summary",null,[s[30]||(s[30]=t("a",{id:"IncompressibleNavierStokes.apply_bc_u-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_u-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_u")],-1)),s[31]||(s[31]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[32]||(s[32]=a('
julia
apply_bc_u(u, t, setup; kwargs...) -> Any

Apply velocity boundary conditions (differentiable version).

source

',3))]),t("details",v,[t("summary",null,[s[33]||(s[33]=t("a",{id:"IncompressibleNavierStokes.boundary-NTuple{4, Any}",href:"#IncompressibleNavierStokes.boundary-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.boundary")],-1)),s[34]||(s[34]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[35]||(s[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))]),t("details",E,[t("summary",null,[s[36]||(s[36]=t("a",{id:"IncompressibleNavierStokes.offset_p",href:"#IncompressibleNavierStokes.offset_p"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.offset_p")],-1)),s[37]||(s[37]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[38]||(s[38]=a('
julia
offset_p(bc, isnormal, isright)

Number of non-DOF pressure components at boundary.

source

',3))]),t("details",x,[t("summary",null,[s[39]||(s[39]=t("a",{id:"IncompressibleNavierStokes.offset_u",href:"#IncompressibleNavierStokes.offset_u"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.offset_u")],-1)),s[40]||(s[40]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[41]||(s[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))]),s[127]||(s[127]=t("h2",{id:"grid",tabindex:"-1"},[e("Grid "),t("a",{class:"header-anchor",href:"#grid","aria-label":'Permalink to "Grid"'},"​")],-1)),t("details",w,[t("summary",null,[s[42]||(s[42]=t("a",{id:"IncompressibleNavierStokes.Dimension",href:"#IncompressibleNavierStokes.Dimension"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Dimension")],-1)),s[43]||(s[43]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[44]||(s[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 t,a as e,G as l,a5 as a,B as d,o}from"./chunks/framework.Dr1kDDE8.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"}},G={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"},R={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:""},t1={class:"jldocstring custom-block",open:""},s1={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,s,o1,r1,d1,p1){const i=d("Badge");return o(),n("div",null,[s[124]||(s[124]=t("h1",{id:"Problem-setup",tabindex:"-1"},[e("Problem setup "),t("a",{class:"header-anchor",href:"#Problem-setup","aria-label":'Permalink to "Problem setup {#Problem-setup}"'},"​")],-1)),s[125]||(s[125]=t("h2",{id:"Boundary-conditions",tabindex:"-1"},[e("Boundary conditions "),t("a",{class:"header-anchor",href:"#Boundary-conditions","aria-label":'Permalink to "Boundary conditions {#Boundary-conditions}"'},"​")],-1)),s[126]||(s[126]=t("p",null,"Each boundary has exactly one type of boundary conditions. For periodic boundary conditions, the opposite boundary must also be periodic.",-1)),t("details",Q,[t("summary",null,[s[0]||(s[0]=t("a",{id:"IncompressibleNavierStokes.AbstractBC",href:"#IncompressibleNavierStokes.AbstractBC"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.AbstractBC")],-1)),s[1]||(s[1]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[2]||(s[2]=a('
julia
abstract type AbstractBC

Boundary condition for one side of the domain.

Fields

source

',4))]),t("details",T,[t("summary",null,[s[3]||(s[3]=t("a",{id:"IncompressibleNavierStokes.DirichletBC",href:"#IncompressibleNavierStokes.DirichletBC"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.DirichletBC")],-1)),s[4]||(s[4]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[5]||(s[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))]),t("details",m,[t("summary",null,[s[6]||(s[6]=t("a",{id:"IncompressibleNavierStokes.PeriodicBC",href:"#IncompressibleNavierStokes.PeriodicBC"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.PeriodicBC")],-1)),s[7]||(s[7]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[8]||(s[8]=a('
julia
struct PeriodicBC <: IncompressibleNavierStokes.AbstractBC

Periodic boundary conditions. Must be periodic on both sides.

Fields

source

',4))]),t("details",h,[t("summary",null,[s[9]||(s[9]=t("a",{id:"IncompressibleNavierStokes.PressureBC",href:"#IncompressibleNavierStokes.PressureBC"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.PressureBC")],-1)),s[10]||(s[10]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[11]||(s[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))]),t("details",c,[t("summary",null,[s[12]||(s[12]=t("a",{id:"IncompressibleNavierStokes.SymmetricBC",href:"#IncompressibleNavierStokes.SymmetricBC"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.SymmetricBC")],-1)),s[13]||(s[13]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[14]||(s[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))]),t("details",g,[t("summary",null,[s[15]||(s[15]=t("a",{id:"IncompressibleNavierStokes.apply_bc_p!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_p!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_p!")],-1)),s[16]||(s[16]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[17]||(s[17]=a('
julia
apply_bc_p!(p, t, setup; kwargs...) -> Any

Apply pressure boundary conditions (in-place version).

source

',3))]),t("details",k,[t("summary",null,[s[18]||(s[18]=t("a",{id:"IncompressibleNavierStokes.apply_bc_p-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_p-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_p")],-1)),s[19]||(s[19]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[20]||(s[20]=a('
julia
apply_bc_p(p, t, setup; kwargs...) -> Any

Apply pressure boundary conditions (differentiable version).

source

',3))]),t("details",u,[t("summary",null,[s[21]||(s[21]=t("a",{id:"IncompressibleNavierStokes.apply_bc_temp!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_temp!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_temp!")],-1)),s[22]||(s[22]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[23]||(s[23]=a('
julia
apply_bc_temp!(temp, t, setup; kwargs...) -> Any

Apply temperature boundary conditions (in-place version).

source

',3))]),t("details",b,[t("summary",null,[s[24]||(s[24]=t("a",{id:"IncompressibleNavierStokes.apply_bc_temp-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_temp-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_temp")],-1)),s[25]||(s[25]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[26]||(s[26]=a('
julia
apply_bc_temp(temp, t, setup; kwargs...) -> Any

Apply temperature boundary conditions (differentiable version).

source

',3))]),t("details",y,[t("summary",null,[s[27]||(s[27]=t("a",{id:"IncompressibleNavierStokes.apply_bc_u!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_u!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_u!")],-1)),s[28]||(s[28]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[29]||(s[29]=a('
julia
apply_bc_u!(u, t, setup; kwargs...) -> Any

Apply velocity boundary conditions (in-place version).

source

',3))]),t("details",f,[t("summary",null,[s[30]||(s[30]=t("a",{id:"IncompressibleNavierStokes.apply_bc_u-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_u-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_u")],-1)),s[31]||(s[31]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[32]||(s[32]=a('
julia
apply_bc_u(u, t, setup; kwargs...) -> Any

Apply velocity boundary conditions (differentiable version).

source

',3))]),t("details",v,[t("summary",null,[s[33]||(s[33]=t("a",{id:"IncompressibleNavierStokes.boundary-NTuple{4, Any}",href:"#IncompressibleNavierStokes.boundary-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.boundary")],-1)),s[34]||(s[34]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[35]||(s[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))]),t("details",E,[t("summary",null,[s[36]||(s[36]=t("a",{id:"IncompressibleNavierStokes.offset_p",href:"#IncompressibleNavierStokes.offset_p"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.offset_p")],-1)),s[37]||(s[37]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[38]||(s[38]=a('
julia
offset_p(bc, isnormal, isright)

Number of non-DOF pressure components at boundary.

source

',3))]),t("details",x,[t("summary",null,[s[39]||(s[39]=t("a",{id:"IncompressibleNavierStokes.offset_u",href:"#IncompressibleNavierStokes.offset_u"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.offset_u")],-1)),s[40]||(s[40]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[41]||(s[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))]),s[127]||(s[127]=t("h2",{id:"grid",tabindex:"-1"},[e("Grid "),t("a",{class:"header-anchor",href:"#grid","aria-label":'Permalink to "Grid"'},"​")],-1)),t("details",w,[t("summary",null,[s[42]||(s[42]=t("a",{id:"IncompressibleNavierStokes.Dimension",href:"#IncompressibleNavierStokes.Dimension"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Dimension")],-1)),s[43]||(s[43]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[44]||(s[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))]),t("details",j,[t("summary",null,[s[45]||(s[45]=t("a",{id:"IncompressibleNavierStokes.Grid-Tuple{}",href:"#IncompressibleNavierStokes.Grid-Tuple{}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Grid")],-1)),s[46]||(s[46]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[55]||(s[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)),t("ul",null,[s[54]||(s[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)),t("li",null,[t("p",null,[s[51]||(s[51]=t("code",null,"A[α][β]",-1)),s[52]||(s[52]=e(": Interpolation weights from α-face centers ")),t("mjx-container",H,[(o(),n("svg",M,s[47]||(s[47]=[a('',1)]))),s[48]||(s[48]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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,"x"),t("mi",null,"I")])])],-1))]),s[53]||(s[53]=e(" to ")),t("mjx-container",L,[(o(),n("svg",C,s[49]||(s[49]=[a('',1)]))),s[50]||(s[50]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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,"x"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"I"),t("mo",null,"±"),t("msub",null,[t("mi",null,"h"),t("mi",null,"β")])])])])],-1))])])])]),s[56]||(s[56]=t("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)),s[57]||(s[57]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/03acafa3566742b1f37d722d2207f5dc21d031c0/src/grid.jl#L79",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",N,[t("summary",null,[s[58]||(s[58]=t("a",{id:"IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.cosine_grid")],-1)),s[59]||(s[59]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[62]||(s[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)),t("mjx-container",F,[(o(),n("svg",Z,s[60]||(s[60]=[a('',1)]))),s[61]||(s[61]=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,"x"),t("mi",null,"i")]),t("mo",null,"="),t("mi",null,"a"),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,"1"),t("mo",null,"−"),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"π"),t("mfrac",null,[t("mi",null,"i"),t("mi",null,"n")]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",{stretchy:"false"},"("),t("mi",null,"b"),t("mo",null,"−"),t("mi",null,"a"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"1em"})]),t("mi",null,"i"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"N")])],-1))]),s[63]||(s[63]=t("p",null,[e("See also "),t("a",{href:"/IncompressibleNavierStokes.jl/dev/manual/setup#IncompressibleNavierStokes.stretched_grid"},[t("code",null,"stretched_grid")]),e(".")],-1)),s[64]||(s[64]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/03acafa3566742b1f37d722d2207f5dc21d031c0/src/grid.jl#L28",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",S,[t("summary",null,[s[65]||(s[65]=t("a",{id:"IncompressibleNavierStokes.max_size-Tuple{Any}",href:"#IncompressibleNavierStokes.max_size-Tuple{Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.max_size")],-1)),s[66]||(s[66]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[67]||(s[67]=a('
    julia
    max_size(grid) -> Any

    Get size of the largest grid element.

    source

    ',3))]),t("details",A,[t("summary",null,[s[68]||(s[68]=t("a",{id:"IncompressibleNavierStokes.stretched_grid",href:"#IncompressibleNavierStokes.stretched_grid"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.stretched_grid")],-1)),s[69]||(s[69]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[94]||(s[94]=a(`
    julia
    stretched_grid(a, b, N) -> Any
    -stretched_grid(a, b, N, s) -> Any
    `,1)),t("p",null,[s[80]||(s[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)),t("mjx-container",D,[(o(),n("svg",I,s[70]||(s[70]=[a('',1)]))),s[71]||(s[71]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 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("msup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"double-struck"},"R")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"N"),t("mo",null,"+"),t("mn",null,"1")])])])],-1))]),s[81]||(s[81]=e(" such that ")),t("mjx-container",V,[(o(),n("svg",B,s[72]||(s[72]=[a('',1)]))),s[73]||(s[73]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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,"x"),t("mi",null,"n")]),t("mo",null,"="),t("mi",null,"a"),t("mo",null,"+"),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"n")]),t("msup",null,[t("mi",null,"s"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,"−"),t("mn",null,"1")])]),t("mi",null,"h")])],-1))]),s[82]||(s[82]=e(" for ")),t("mjx-container",O,[(o(),n("svg",P,s[74]||(s[74]=[a('',1)]))),s[75]||(s[75]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 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")])],-1))]),s[83]||(s[83]=e(". Setting ")),t("mjx-container",z,[(o(),n("svg",G,s[76]||(s[76]=[a('',1)]))),s[77]||(s[77]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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,"x"),t("mi",null,"N")]),t("mo",null,"="),t("mi",null,"b")])],-1))]),s[84]||(s[84]=e(" then gives ")),t("mjx-container",R,[(o(),n("svg",J,s[78]||(s[78]=[a('',1)]))),s[79]||(s[79]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"h"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("mi",null,"b"),t("mo",null,"−"),t("mi",null,"a"),t("mo",{stretchy:"false"},")"),t("mfrac",null,[t("mrow",null,[t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"s")]),t("mrow",null,[t("mn",null,"1"),t("mo",null,"−"),t("msup",null,[t("mi",null,"s"),t("mi",null,"N")])])])])],-1))]),s[85]||(s[85]=e(", resulting in"))]),t("mjx-container",q,[(o(),n("svg",U,s[86]||(s[86]=[a('',1)]))),s[87]||(s[87]=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,"x"),t("mi",null,"n")]),t("mo",null,"="),t("mi",null,"a"),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("mi",null,"b"),t("mo",null,"−"),t("mi",null,"a"),t("mo",{stretchy:"false"},")"),t("mfrac",null,[t("mrow",null,[t("mn",null,"1"),t("mo",null,"−"),t("msup",null,[t("mi",null,"s"),t("mi",null,"n")])]),t("mrow",null,[t("mn",null,"1"),t("mo",null,"−"),t("msup",null,[t("mi",null,"s"),t("mi",null,"N")])])]),t("mo",null,","),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"1em"})]),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,".")])],-1))]),t("p",null,[s[90]||(s[90]=e("Note that ")),s[91]||(s[91]=t("code",null,"stretched_grid(a, b, N, s)[n]",-1)),s[92]||(s[92]=e(" corresponds to ")),t("mjx-container",X,[(o(),n("svg",K,s[88]||(s[88]=[a('',1)]))),s[89]||(s[89]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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,"x"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"−"),t("mn",null,"1")])])])],-1))]),s[93]||(s[93]=e("."))]),s[95]||(s[95]=t("p",null,[e("See also "),t("a",{href:"/IncompressibleNavierStokes.jl/dev/manual/setup#IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}"},[t("code",null,"cosine_grid")]),e(".")],-1)),s[96]||(s[96]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/03acafa3566742b1f37d722d2207f5dc21d031c0/src/grid.jl#L45",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",$,[t("summary",null,[s[97]||(s[97]=t("a",{id:"IncompressibleNavierStokes.tanh_grid",href:"#IncompressibleNavierStokes.tanh_grid"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.tanh_grid")],-1)),s[98]||(s[98]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[99]||(s[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))]),s[128]||(s[128]=t("h2",{id:"setup",tabindex:"-1"},[e("Setup "),t("a",{class:"header-anchor",href:"#setup","aria-label":'Permalink to "Setup"'},"​")],-1)),t("details",W,[t("summary",null,[s[100]||(s[100]=t("a",{id:"KernelAbstractions.CPU",href:"#KernelAbstractions.CPU"},[t("span",{class:"jlbinding"},"KernelAbstractions.CPU")],-1)),s[101]||(s[101]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[102]||(s[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))]),t("details",Y,[t("summary",null,[s[103]||(s[103]=t("a",{id:"IncompressibleNavierStokes.Setup-Tuple{}",href:"#IncompressibleNavierStokes.Setup-Tuple{}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Setup")],-1)),s[104]||(s[104]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[105]||(s[105]=a(`
    julia
    Setup(
    +3

    Fields

    source

    `,5))]),t("details",j,[t("summary",null,[s[45]||(s[45]=t("a",{id:"IncompressibleNavierStokes.Grid-Tuple{}",href:"#IncompressibleNavierStokes.Grid-Tuple{}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Grid")],-1)),s[46]||(s[46]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[55]||(s[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)),t("ul",null,[s[54]||(s[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)),t("li",null,[t("p",null,[s[51]||(s[51]=t("code",null,"A[α][β]",-1)),s[52]||(s[52]=e(": Interpolation weights from α-face centers ")),t("mjx-container",H,[(o(),n("svg",M,s[47]||(s[47]=[a('',1)]))),s[48]||(s[48]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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,"x"),t("mi",null,"I")])])],-1))]),s[53]||(s[53]=e(" to ")),t("mjx-container",L,[(o(),n("svg",C,s[49]||(s[49]=[a('',1)]))),s[50]||(s[50]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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,"x"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"I"),t("mo",null,"±"),t("msub",null,[t("mi",null,"h"),t("mi",null,"β")])])])])],-1))])])])]),s[56]||(s[56]=t("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)),s[57]||(s[57]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/a63d20e3a410f14ba6cc612a27e89f8974019d9f/src/grid.jl#L79",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",N,[t("summary",null,[s[58]||(s[58]=t("a",{id:"IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.cosine_grid")],-1)),s[59]||(s[59]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[62]||(s[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)),t("mjx-container",F,[(o(),n("svg",Z,s[60]||(s[60]=[a('',1)]))),s[61]||(s[61]=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,"x"),t("mi",null,"i")]),t("mo",null,"="),t("mi",null,"a"),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,"1"),t("mo",null,"−"),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"π"),t("mfrac",null,[t("mi",null,"i"),t("mi",null,"n")]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",{stretchy:"false"},"("),t("mi",null,"b"),t("mo",null,"−"),t("mi",null,"a"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"1em"})]),t("mi",null,"i"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"N")])],-1))]),s[63]||(s[63]=t("p",null,[e("See also "),t("a",{href:"/IncompressibleNavierStokes.jl/dev/manual/setup#IncompressibleNavierStokes.stretched_grid"},[t("code",null,"stretched_grid")]),e(".")],-1)),s[64]||(s[64]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/a63d20e3a410f14ba6cc612a27e89f8974019d9f/src/grid.jl#L28",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",S,[t("summary",null,[s[65]||(s[65]=t("a",{id:"IncompressibleNavierStokes.max_size-Tuple{Any}",href:"#IncompressibleNavierStokes.max_size-Tuple{Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.max_size")],-1)),s[66]||(s[66]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[67]||(s[67]=a('
    julia
    max_size(grid) -> Any

    Get size of the largest grid element.

    source

    ',3))]),t("details",A,[t("summary",null,[s[68]||(s[68]=t("a",{id:"IncompressibleNavierStokes.stretched_grid",href:"#IncompressibleNavierStokes.stretched_grid"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.stretched_grid")],-1)),s[69]||(s[69]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[94]||(s[94]=a(`
    julia
    stretched_grid(a, b, N) -> Any
    +stretched_grid(a, b, N, s) -> Any
    `,1)),t("p",null,[s[80]||(s[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)),t("mjx-container",D,[(o(),n("svg",I,s[70]||(s[70]=[a('',1)]))),s[71]||(s[71]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 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("msup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"double-struck"},"R")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"N"),t("mo",null,"+"),t("mn",null,"1")])])])],-1))]),s[81]||(s[81]=e(" such that ")),t("mjx-container",V,[(o(),n("svg",B,s[72]||(s[72]=[a('',1)]))),s[73]||(s[73]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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,"x"),t("mi",null,"n")]),t("mo",null,"="),t("mi",null,"a"),t("mo",null,"+"),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"n")]),t("msup",null,[t("mi",null,"s"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,"−"),t("mn",null,"1")])]),t("mi",null,"h")])],-1))]),s[82]||(s[82]=e(" for ")),t("mjx-container",O,[(o(),n("svg",P,s[74]||(s[74]=[a('',1)]))),s[75]||(s[75]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 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")])],-1))]),s[83]||(s[83]=e(". Setting ")),t("mjx-container",z,[(o(),n("svg",G,s[76]||(s[76]=[a('',1)]))),s[77]||(s[77]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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,"x"),t("mi",null,"N")]),t("mo",null,"="),t("mi",null,"b")])],-1))]),s[84]||(s[84]=e(" then gives ")),t("mjx-container",R,[(o(),n("svg",J,s[78]||(s[78]=[a('',1)]))),s[79]||(s[79]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"h"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("mi",null,"b"),t("mo",null,"−"),t("mi",null,"a"),t("mo",{stretchy:"false"},")"),t("mfrac",null,[t("mrow",null,[t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"s")]),t("mrow",null,[t("mn",null,"1"),t("mo",null,"−"),t("msup",null,[t("mi",null,"s"),t("mi",null,"N")])])])])],-1))]),s[85]||(s[85]=e(", resulting in"))]),t("mjx-container",q,[(o(),n("svg",U,s[86]||(s[86]=[a('',1)]))),s[87]||(s[87]=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,"x"),t("mi",null,"n")]),t("mo",null,"="),t("mi",null,"a"),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("mi",null,"b"),t("mo",null,"−"),t("mi",null,"a"),t("mo",{stretchy:"false"},")"),t("mfrac",null,[t("mrow",null,[t("mn",null,"1"),t("mo",null,"−"),t("msup",null,[t("mi",null,"s"),t("mi",null,"n")])]),t("mrow",null,[t("mn",null,"1"),t("mo",null,"−"),t("msup",null,[t("mi",null,"s"),t("mi",null,"N")])])]),t("mo",null,","),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"1em"})]),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,".")])],-1))]),t("p",null,[s[90]||(s[90]=e("Note that ")),s[91]||(s[91]=t("code",null,"stretched_grid(a, b, N, s)[n]",-1)),s[92]||(s[92]=e(" corresponds to ")),t("mjx-container",X,[(o(),n("svg",K,s[88]||(s[88]=[a('',1)]))),s[89]||(s[89]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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,"x"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"−"),t("mn",null,"1")])])])],-1))]),s[93]||(s[93]=e("."))]),s[95]||(s[95]=t("p",null,[e("See also "),t("a",{href:"/IncompressibleNavierStokes.jl/dev/manual/setup#IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}"},[t("code",null,"cosine_grid")]),e(".")],-1)),s[96]||(s[96]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/a63d20e3a410f14ba6cc612a27e89f8974019d9f/src/grid.jl#L45",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",$,[t("summary",null,[s[97]||(s[97]=t("a",{id:"IncompressibleNavierStokes.tanh_grid",href:"#IncompressibleNavierStokes.tanh_grid"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.tanh_grid")],-1)),s[98]||(s[98]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[99]||(s[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))]),s[128]||(s[128]=t("h2",{id:"setup",tabindex:"-1"},[e("Setup "),t("a",{class:"header-anchor",href:"#setup","aria-label":'Permalink to "Setup"'},"​")],-1)),t("details",W,[t("summary",null,[s[100]||(s[100]=t("a",{id:"KernelAbstractions.CPU",href:"#KernelAbstractions.CPU"},[t("span",{class:"jlbinding"},"KernelAbstractions.CPU")],-1)),s[101]||(s[101]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[102]||(s[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))]),t("details",Y,[t("summary",null,[s[103]||(s[103]=t("a",{id:"IncompressibleNavierStokes.Setup-Tuple{}",href:"#IncompressibleNavierStokes.Setup-Tuple{}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Setup")],-1)),s[104]||(s[104]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[105]||(s[105]=a(`
    julia
    Setup(
     ;
         x,
         boundary_conditions,
    @@ -16,7 +16,7 @@ import{_ as r,c as n,j as t,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))]),t("details",_,[t("summary",null,[s[106]||(s[106]=t("a",{id:"IncompressibleNavierStokes.temperature_equation-Tuple{}",href:"#IncompressibleNavierStokes.temperature_equation-Tuple{}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.temperature_equation")],-1)),s[107]||(s[107]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[108]||(s[108]=a(`
    julia
    temperature_equation(
    +)

    Create problem setup (stored in a named tuple).

    source

    `,3))]),t("details",_,[t("summary",null,[s[106]||(s[106]=t("a",{id:"IncompressibleNavierStokes.temperature_equation-Tuple{}",href:"#IncompressibleNavierStokes.temperature_equation-Tuple{}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.temperature_equation")],-1)),s[107]||(s[107]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[108]||(s[108]=a(`
    julia
    temperature_equation(
     ;
         Pr,
         Ra,
    @@ -25,7 +25,7 @@ import{_ as r,c as n,j as t,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))]),s[129]||(s[129]=t("h2",{id:"Field-initializers",tabindex:"-1"},[e("Field initializers "),t("a",{class:"header-anchor",href:"#Field-initializers","aria-label":'Permalink to "Field initializers {#Field-initializers}"'},"​")],-1)),t("details",t1,[t("summary",null,[s[109]||(s[109]=t("a",{id:"IncompressibleNavierStokes.random_field",href:"#IncompressibleNavierStokes.random_field"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.random_field")],-1)),s[110]||(s[110]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[111]||(s[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))]),t("details",s1,[t("summary",null,[s[112]||(s[112]=t("a",{id:"IncompressibleNavierStokes.scalarfield-Tuple{Any}",href:"#IncompressibleNavierStokes.scalarfield-Tuple{Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.scalarfield")],-1)),s[113]||(s[113]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[114]||(s[114]=a('
    julia
    scalarfield(setup) -> Any

    Create empty scalar field.

    source

    ',3))]),t("details",e1,[t("summary",null,[s[115]||(s[115]=t("a",{id:"IncompressibleNavierStokes.temperaturefield",href:"#IncompressibleNavierStokes.temperaturefield"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.temperaturefield")],-1)),s[116]||(s[116]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[117]||(s[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))]),t("details",a1,[t("summary",null,[s[118]||(s[118]=t("a",{id:"IncompressibleNavierStokes.vectorfield-Tuple{Any}",href:"#IncompressibleNavierStokes.vectorfield-Tuple{Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.vectorfield")],-1)),s[119]||(s[119]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[120]||(s[120]=a('
    julia
    vectorfield(setup) -> Any

    Create empty vector field.

    source

    ',3))]),t("details",i1,[t("summary",null,[s[121]||(s[121]=t("a",{id:"IncompressibleNavierStokes.velocityfield",href:"#IncompressibleNavierStokes.velocityfield"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.velocityfield")],-1)),s[122]||(s[122]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[123]||(s[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))]),s[129]||(s[129]=t("h2",{id:"Field-initializers",tabindex:"-1"},[e("Field initializers "),t("a",{class:"header-anchor",href:"#Field-initializers","aria-label":'Permalink to "Field initializers {#Field-initializers}"'},"​")],-1)),t("details",t1,[t("summary",null,[s[109]||(s[109]=t("a",{id:"IncompressibleNavierStokes.random_field",href:"#IncompressibleNavierStokes.random_field"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.random_field")],-1)),s[110]||(s[110]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[111]||(s[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))]),t("details",s1,[t("summary",null,[s[112]||(s[112]=t("a",{id:"IncompressibleNavierStokes.scalarfield-Tuple{Any}",href:"#IncompressibleNavierStokes.scalarfield-Tuple{Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.scalarfield")],-1)),s[113]||(s[113]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[114]||(s[114]=a('
    julia
    scalarfield(setup) -> Any

    Create empty scalar field.

    source

    ',3))]),t("details",e1,[t("summary",null,[s[115]||(s[115]=t("a",{id:"IncompressibleNavierStokes.temperaturefield",href:"#IncompressibleNavierStokes.temperaturefield"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.temperaturefield")],-1)),s[116]||(s[116]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[117]||(s[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))]),t("details",a1,[t("summary",null,[s[118]||(s[118]=t("a",{id:"IncompressibleNavierStokes.vectorfield-Tuple{Any}",href:"#IncompressibleNavierStokes.vectorfield-Tuple{Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.vectorfield")],-1)),s[119]||(s[119]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[120]||(s[120]=a('
    julia
    vectorfield(setup) -> Any

    Create empty vector field.

    source

    ',3))]),t("details",i1,[t("summary",null,[s[121]||(s[121]=t("a",{id:"IncompressibleNavierStokes.velocityfield",href:"#IncompressibleNavierStokes.velocityfield"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.velocityfield")],-1)),s[122]||(s[122]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[123]||(s[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/dev/assets/manual_setup.md.w6x6ynsm.lean.js b/dev/assets/manual_setup.md.B7b6UkIH.lean.js similarity index 97% rename from dev/assets/manual_setup.md.w6x6ynsm.lean.js rename to dev/assets/manual_setup.md.B7b6UkIH.lean.js index b1bac10f5..6084c86b4 100644 --- a/dev/assets/manual_setup.md.w6x6ynsm.lean.js +++ b/dev/assets/manual_setup.md.B7b6UkIH.lean.js @@ -1,10 +1,10 @@ -import{_ as r,c as n,j as t,a as e,G as l,a5 as a,B as d,o}from"./chunks/framework.Dr1kDDE8.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"}},G={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"},R={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:""},t1={class:"jldocstring custom-block",open:""},s1={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,s,o1,r1,d1,p1){const i=d("Badge");return o(),n("div",null,[s[124]||(s[124]=t("h1",{id:"Problem-setup",tabindex:"-1"},[e("Problem setup "),t("a",{class:"header-anchor",href:"#Problem-setup","aria-label":'Permalink to "Problem setup {#Problem-setup}"'},"​")],-1)),s[125]||(s[125]=t("h2",{id:"Boundary-conditions",tabindex:"-1"},[e("Boundary conditions "),t("a",{class:"header-anchor",href:"#Boundary-conditions","aria-label":'Permalink to "Boundary conditions {#Boundary-conditions}"'},"​")],-1)),s[126]||(s[126]=t("p",null,"Each boundary has exactly one type of boundary conditions. For periodic boundary conditions, the opposite boundary must also be periodic.",-1)),t("details",Q,[t("summary",null,[s[0]||(s[0]=t("a",{id:"IncompressibleNavierStokes.AbstractBC",href:"#IncompressibleNavierStokes.AbstractBC"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.AbstractBC")],-1)),s[1]||(s[1]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[2]||(s[2]=a('
    julia
    abstract type AbstractBC

    Boundary condition for one side of the domain.

    Fields

    source

    ',4))]),t("details",T,[t("summary",null,[s[3]||(s[3]=t("a",{id:"IncompressibleNavierStokes.DirichletBC",href:"#IncompressibleNavierStokes.DirichletBC"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.DirichletBC")],-1)),s[4]||(s[4]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[5]||(s[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))]),t("details",m,[t("summary",null,[s[6]||(s[6]=t("a",{id:"IncompressibleNavierStokes.PeriodicBC",href:"#IncompressibleNavierStokes.PeriodicBC"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.PeriodicBC")],-1)),s[7]||(s[7]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[8]||(s[8]=a('
    julia
    struct PeriodicBC <: IncompressibleNavierStokes.AbstractBC

    Periodic boundary conditions. Must be periodic on both sides.

    Fields

    source

    ',4))]),t("details",h,[t("summary",null,[s[9]||(s[9]=t("a",{id:"IncompressibleNavierStokes.PressureBC",href:"#IncompressibleNavierStokes.PressureBC"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.PressureBC")],-1)),s[10]||(s[10]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[11]||(s[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))]),t("details",c,[t("summary",null,[s[12]||(s[12]=t("a",{id:"IncompressibleNavierStokes.SymmetricBC",href:"#IncompressibleNavierStokes.SymmetricBC"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.SymmetricBC")],-1)),s[13]||(s[13]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[14]||(s[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))]),t("details",g,[t("summary",null,[s[15]||(s[15]=t("a",{id:"IncompressibleNavierStokes.apply_bc_p!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_p!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_p!")],-1)),s[16]||(s[16]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[17]||(s[17]=a('
    julia
    apply_bc_p!(p, t, setup; kwargs...) -> Any

    Apply pressure boundary conditions (in-place version).

    source

    ',3))]),t("details",k,[t("summary",null,[s[18]||(s[18]=t("a",{id:"IncompressibleNavierStokes.apply_bc_p-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_p-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_p")],-1)),s[19]||(s[19]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[20]||(s[20]=a('
    julia
    apply_bc_p(p, t, setup; kwargs...) -> Any

    Apply pressure boundary conditions (differentiable version).

    source

    ',3))]),t("details",u,[t("summary",null,[s[21]||(s[21]=t("a",{id:"IncompressibleNavierStokes.apply_bc_temp!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_temp!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_temp!")],-1)),s[22]||(s[22]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[23]||(s[23]=a('
    julia
    apply_bc_temp!(temp, t, setup; kwargs...) -> Any

    Apply temperature boundary conditions (in-place version).

    source

    ',3))]),t("details",b,[t("summary",null,[s[24]||(s[24]=t("a",{id:"IncompressibleNavierStokes.apply_bc_temp-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_temp-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_temp")],-1)),s[25]||(s[25]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[26]||(s[26]=a('
    julia
    apply_bc_temp(temp, t, setup; kwargs...) -> Any

    Apply temperature boundary conditions (differentiable version).

    source

    ',3))]),t("details",y,[t("summary",null,[s[27]||(s[27]=t("a",{id:"IncompressibleNavierStokes.apply_bc_u!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_u!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_u!")],-1)),s[28]||(s[28]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[29]||(s[29]=a('
    julia
    apply_bc_u!(u, t, setup; kwargs...) -> Any

    Apply velocity boundary conditions (in-place version).

    source

    ',3))]),t("details",f,[t("summary",null,[s[30]||(s[30]=t("a",{id:"IncompressibleNavierStokes.apply_bc_u-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_u-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_u")],-1)),s[31]||(s[31]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[32]||(s[32]=a('
    julia
    apply_bc_u(u, t, setup; kwargs...) -> Any

    Apply velocity boundary conditions (differentiable version).

    source

    ',3))]),t("details",v,[t("summary",null,[s[33]||(s[33]=t("a",{id:"IncompressibleNavierStokes.boundary-NTuple{4, Any}",href:"#IncompressibleNavierStokes.boundary-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.boundary")],-1)),s[34]||(s[34]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[35]||(s[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))]),t("details",E,[t("summary",null,[s[36]||(s[36]=t("a",{id:"IncompressibleNavierStokes.offset_p",href:"#IncompressibleNavierStokes.offset_p"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.offset_p")],-1)),s[37]||(s[37]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[38]||(s[38]=a('
    julia
    offset_p(bc, isnormal, isright)

    Number of non-DOF pressure components at boundary.

    source

    ',3))]),t("details",x,[t("summary",null,[s[39]||(s[39]=t("a",{id:"IncompressibleNavierStokes.offset_u",href:"#IncompressibleNavierStokes.offset_u"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.offset_u")],-1)),s[40]||(s[40]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[41]||(s[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))]),s[127]||(s[127]=t("h2",{id:"grid",tabindex:"-1"},[e("Grid "),t("a",{class:"header-anchor",href:"#grid","aria-label":'Permalink to "Grid"'},"​")],-1)),t("details",w,[t("summary",null,[s[42]||(s[42]=t("a",{id:"IncompressibleNavierStokes.Dimension",href:"#IncompressibleNavierStokes.Dimension"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Dimension")],-1)),s[43]||(s[43]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[44]||(s[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 t,a as e,G as l,a5 as a,B as d,o}from"./chunks/framework.Dr1kDDE8.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"}},G={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"},R={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:""},t1={class:"jldocstring custom-block",open:""},s1={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,s,o1,r1,d1,p1){const i=d("Badge");return o(),n("div",null,[s[124]||(s[124]=t("h1",{id:"Problem-setup",tabindex:"-1"},[e("Problem setup "),t("a",{class:"header-anchor",href:"#Problem-setup","aria-label":'Permalink to "Problem setup {#Problem-setup}"'},"​")],-1)),s[125]||(s[125]=t("h2",{id:"Boundary-conditions",tabindex:"-1"},[e("Boundary conditions "),t("a",{class:"header-anchor",href:"#Boundary-conditions","aria-label":'Permalink to "Boundary conditions {#Boundary-conditions}"'},"​")],-1)),s[126]||(s[126]=t("p",null,"Each boundary has exactly one type of boundary conditions. For periodic boundary conditions, the opposite boundary must also be periodic.",-1)),t("details",Q,[t("summary",null,[s[0]||(s[0]=t("a",{id:"IncompressibleNavierStokes.AbstractBC",href:"#IncompressibleNavierStokes.AbstractBC"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.AbstractBC")],-1)),s[1]||(s[1]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[2]||(s[2]=a('
    julia
    abstract type AbstractBC

    Boundary condition for one side of the domain.

    Fields

    source

    ',4))]),t("details",T,[t("summary",null,[s[3]||(s[3]=t("a",{id:"IncompressibleNavierStokes.DirichletBC",href:"#IncompressibleNavierStokes.DirichletBC"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.DirichletBC")],-1)),s[4]||(s[4]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[5]||(s[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))]),t("details",m,[t("summary",null,[s[6]||(s[6]=t("a",{id:"IncompressibleNavierStokes.PeriodicBC",href:"#IncompressibleNavierStokes.PeriodicBC"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.PeriodicBC")],-1)),s[7]||(s[7]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[8]||(s[8]=a('
    julia
    struct PeriodicBC <: IncompressibleNavierStokes.AbstractBC

    Periodic boundary conditions. Must be periodic on both sides.

    Fields

    source

    ',4))]),t("details",h,[t("summary",null,[s[9]||(s[9]=t("a",{id:"IncompressibleNavierStokes.PressureBC",href:"#IncompressibleNavierStokes.PressureBC"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.PressureBC")],-1)),s[10]||(s[10]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[11]||(s[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))]),t("details",c,[t("summary",null,[s[12]||(s[12]=t("a",{id:"IncompressibleNavierStokes.SymmetricBC",href:"#IncompressibleNavierStokes.SymmetricBC"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.SymmetricBC")],-1)),s[13]||(s[13]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[14]||(s[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))]),t("details",g,[t("summary",null,[s[15]||(s[15]=t("a",{id:"IncompressibleNavierStokes.apply_bc_p!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_p!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_p!")],-1)),s[16]||(s[16]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[17]||(s[17]=a('
    julia
    apply_bc_p!(p, t, setup; kwargs...) -> Any

    Apply pressure boundary conditions (in-place version).

    source

    ',3))]),t("details",k,[t("summary",null,[s[18]||(s[18]=t("a",{id:"IncompressibleNavierStokes.apply_bc_p-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_p-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_p")],-1)),s[19]||(s[19]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[20]||(s[20]=a('
    julia
    apply_bc_p(p, t, setup; kwargs...) -> Any

    Apply pressure boundary conditions (differentiable version).

    source

    ',3))]),t("details",u,[t("summary",null,[s[21]||(s[21]=t("a",{id:"IncompressibleNavierStokes.apply_bc_temp!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_temp!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_temp!")],-1)),s[22]||(s[22]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[23]||(s[23]=a('
    julia
    apply_bc_temp!(temp, t, setup; kwargs...) -> Any

    Apply temperature boundary conditions (in-place version).

    source

    ',3))]),t("details",b,[t("summary",null,[s[24]||(s[24]=t("a",{id:"IncompressibleNavierStokes.apply_bc_temp-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_temp-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_temp")],-1)),s[25]||(s[25]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[26]||(s[26]=a('
    julia
    apply_bc_temp(temp, t, setup; kwargs...) -> Any

    Apply temperature boundary conditions (differentiable version).

    source

    ',3))]),t("details",y,[t("summary",null,[s[27]||(s[27]=t("a",{id:"IncompressibleNavierStokes.apply_bc_u!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_u!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_u!")],-1)),s[28]||(s[28]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[29]||(s[29]=a('
    julia
    apply_bc_u!(u, t, setup; kwargs...) -> Any

    Apply velocity boundary conditions (in-place version).

    source

    ',3))]),t("details",f,[t("summary",null,[s[30]||(s[30]=t("a",{id:"IncompressibleNavierStokes.apply_bc_u-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_u-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_u")],-1)),s[31]||(s[31]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[32]||(s[32]=a('
    julia
    apply_bc_u(u, t, setup; kwargs...) -> Any

    Apply velocity boundary conditions (differentiable version).

    source

    ',3))]),t("details",v,[t("summary",null,[s[33]||(s[33]=t("a",{id:"IncompressibleNavierStokes.boundary-NTuple{4, Any}",href:"#IncompressibleNavierStokes.boundary-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.boundary")],-1)),s[34]||(s[34]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[35]||(s[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))]),t("details",E,[t("summary",null,[s[36]||(s[36]=t("a",{id:"IncompressibleNavierStokes.offset_p",href:"#IncompressibleNavierStokes.offset_p"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.offset_p")],-1)),s[37]||(s[37]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[38]||(s[38]=a('
    julia
    offset_p(bc, isnormal, isright)

    Number of non-DOF pressure components at boundary.

    source

    ',3))]),t("details",x,[t("summary",null,[s[39]||(s[39]=t("a",{id:"IncompressibleNavierStokes.offset_u",href:"#IncompressibleNavierStokes.offset_u"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.offset_u")],-1)),s[40]||(s[40]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[41]||(s[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))]),s[127]||(s[127]=t("h2",{id:"grid",tabindex:"-1"},[e("Grid "),t("a",{class:"header-anchor",href:"#grid","aria-label":'Permalink to "Grid"'},"​")],-1)),t("details",w,[t("summary",null,[s[42]||(s[42]=t("a",{id:"IncompressibleNavierStokes.Dimension",href:"#IncompressibleNavierStokes.Dimension"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Dimension")],-1)),s[43]||(s[43]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[44]||(s[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))]),t("details",j,[t("summary",null,[s[45]||(s[45]=t("a",{id:"IncompressibleNavierStokes.Grid-Tuple{}",href:"#IncompressibleNavierStokes.Grid-Tuple{}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Grid")],-1)),s[46]||(s[46]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[55]||(s[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)),t("ul",null,[s[54]||(s[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)),t("li",null,[t("p",null,[s[51]||(s[51]=t("code",null,"A[α][β]",-1)),s[52]||(s[52]=e(": Interpolation weights from α-face centers ")),t("mjx-container",H,[(o(),n("svg",M,s[47]||(s[47]=[a('',1)]))),s[48]||(s[48]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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,"x"),t("mi",null,"I")])])],-1))]),s[53]||(s[53]=e(" to ")),t("mjx-container",L,[(o(),n("svg",C,s[49]||(s[49]=[a('',1)]))),s[50]||(s[50]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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,"x"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"I"),t("mo",null,"±"),t("msub",null,[t("mi",null,"h"),t("mi",null,"β")])])])])],-1))])])])]),s[56]||(s[56]=t("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)),s[57]||(s[57]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/03acafa3566742b1f37d722d2207f5dc21d031c0/src/grid.jl#L79",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",N,[t("summary",null,[s[58]||(s[58]=t("a",{id:"IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.cosine_grid")],-1)),s[59]||(s[59]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[62]||(s[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)),t("mjx-container",F,[(o(),n("svg",Z,s[60]||(s[60]=[a('',1)]))),s[61]||(s[61]=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,"x"),t("mi",null,"i")]),t("mo",null,"="),t("mi",null,"a"),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,"1"),t("mo",null,"−"),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"π"),t("mfrac",null,[t("mi",null,"i"),t("mi",null,"n")]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",{stretchy:"false"},"("),t("mi",null,"b"),t("mo",null,"−"),t("mi",null,"a"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"1em"})]),t("mi",null,"i"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"N")])],-1))]),s[63]||(s[63]=t("p",null,[e("See also "),t("a",{href:"/IncompressibleNavierStokes.jl/dev/manual/setup#IncompressibleNavierStokes.stretched_grid"},[t("code",null,"stretched_grid")]),e(".")],-1)),s[64]||(s[64]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/03acafa3566742b1f37d722d2207f5dc21d031c0/src/grid.jl#L28",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",S,[t("summary",null,[s[65]||(s[65]=t("a",{id:"IncompressibleNavierStokes.max_size-Tuple{Any}",href:"#IncompressibleNavierStokes.max_size-Tuple{Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.max_size")],-1)),s[66]||(s[66]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[67]||(s[67]=a('
    julia
    max_size(grid) -> Any

    Get size of the largest grid element.

    source

    ',3))]),t("details",A,[t("summary",null,[s[68]||(s[68]=t("a",{id:"IncompressibleNavierStokes.stretched_grid",href:"#IncompressibleNavierStokes.stretched_grid"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.stretched_grid")],-1)),s[69]||(s[69]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[94]||(s[94]=a(`
    julia
    stretched_grid(a, b, N) -> Any
    -stretched_grid(a, b, N, s) -> Any
    `,1)),t("p",null,[s[80]||(s[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)),t("mjx-container",D,[(o(),n("svg",I,s[70]||(s[70]=[a('',1)]))),s[71]||(s[71]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 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("msup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"double-struck"},"R")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"N"),t("mo",null,"+"),t("mn",null,"1")])])])],-1))]),s[81]||(s[81]=e(" such that ")),t("mjx-container",V,[(o(),n("svg",B,s[72]||(s[72]=[a('',1)]))),s[73]||(s[73]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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,"x"),t("mi",null,"n")]),t("mo",null,"="),t("mi",null,"a"),t("mo",null,"+"),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"n")]),t("msup",null,[t("mi",null,"s"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,"−"),t("mn",null,"1")])]),t("mi",null,"h")])],-1))]),s[82]||(s[82]=e(" for ")),t("mjx-container",O,[(o(),n("svg",P,s[74]||(s[74]=[a('',1)]))),s[75]||(s[75]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 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")])],-1))]),s[83]||(s[83]=e(". Setting ")),t("mjx-container",z,[(o(),n("svg",G,s[76]||(s[76]=[a('',1)]))),s[77]||(s[77]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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,"x"),t("mi",null,"N")]),t("mo",null,"="),t("mi",null,"b")])],-1))]),s[84]||(s[84]=e(" then gives ")),t("mjx-container",R,[(o(),n("svg",J,s[78]||(s[78]=[a('',1)]))),s[79]||(s[79]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"h"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("mi",null,"b"),t("mo",null,"−"),t("mi",null,"a"),t("mo",{stretchy:"false"},")"),t("mfrac",null,[t("mrow",null,[t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"s")]),t("mrow",null,[t("mn",null,"1"),t("mo",null,"−"),t("msup",null,[t("mi",null,"s"),t("mi",null,"N")])])])])],-1))]),s[85]||(s[85]=e(", resulting in"))]),t("mjx-container",q,[(o(),n("svg",U,s[86]||(s[86]=[a('',1)]))),s[87]||(s[87]=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,"x"),t("mi",null,"n")]),t("mo",null,"="),t("mi",null,"a"),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("mi",null,"b"),t("mo",null,"−"),t("mi",null,"a"),t("mo",{stretchy:"false"},")"),t("mfrac",null,[t("mrow",null,[t("mn",null,"1"),t("mo",null,"−"),t("msup",null,[t("mi",null,"s"),t("mi",null,"n")])]),t("mrow",null,[t("mn",null,"1"),t("mo",null,"−"),t("msup",null,[t("mi",null,"s"),t("mi",null,"N")])])]),t("mo",null,","),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"1em"})]),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,".")])],-1))]),t("p",null,[s[90]||(s[90]=e("Note that ")),s[91]||(s[91]=t("code",null,"stretched_grid(a, b, N, s)[n]",-1)),s[92]||(s[92]=e(" corresponds to ")),t("mjx-container",X,[(o(),n("svg",K,s[88]||(s[88]=[a('',1)]))),s[89]||(s[89]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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,"x"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"−"),t("mn",null,"1")])])])],-1))]),s[93]||(s[93]=e("."))]),s[95]||(s[95]=t("p",null,[e("See also "),t("a",{href:"/IncompressibleNavierStokes.jl/dev/manual/setup#IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}"},[t("code",null,"cosine_grid")]),e(".")],-1)),s[96]||(s[96]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/03acafa3566742b1f37d722d2207f5dc21d031c0/src/grid.jl#L45",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",$,[t("summary",null,[s[97]||(s[97]=t("a",{id:"IncompressibleNavierStokes.tanh_grid",href:"#IncompressibleNavierStokes.tanh_grid"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.tanh_grid")],-1)),s[98]||(s[98]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[99]||(s[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))]),s[128]||(s[128]=t("h2",{id:"setup",tabindex:"-1"},[e("Setup "),t("a",{class:"header-anchor",href:"#setup","aria-label":'Permalink to "Setup"'},"​")],-1)),t("details",W,[t("summary",null,[s[100]||(s[100]=t("a",{id:"KernelAbstractions.CPU",href:"#KernelAbstractions.CPU"},[t("span",{class:"jlbinding"},"KernelAbstractions.CPU")],-1)),s[101]||(s[101]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[102]||(s[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))]),t("details",Y,[t("summary",null,[s[103]||(s[103]=t("a",{id:"IncompressibleNavierStokes.Setup-Tuple{}",href:"#IncompressibleNavierStokes.Setup-Tuple{}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Setup")],-1)),s[104]||(s[104]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[105]||(s[105]=a(`
    julia
    Setup(
    +3

    Fields

    source

    `,5))]),t("details",j,[t("summary",null,[s[45]||(s[45]=t("a",{id:"IncompressibleNavierStokes.Grid-Tuple{}",href:"#IncompressibleNavierStokes.Grid-Tuple{}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Grid")],-1)),s[46]||(s[46]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[55]||(s[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)),t("ul",null,[s[54]||(s[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)),t("li",null,[t("p",null,[s[51]||(s[51]=t("code",null,"A[α][β]",-1)),s[52]||(s[52]=e(": Interpolation weights from α-face centers ")),t("mjx-container",H,[(o(),n("svg",M,s[47]||(s[47]=[a('',1)]))),s[48]||(s[48]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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,"x"),t("mi",null,"I")])])],-1))]),s[53]||(s[53]=e(" to ")),t("mjx-container",L,[(o(),n("svg",C,s[49]||(s[49]=[a('',1)]))),s[50]||(s[50]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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,"x"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"I"),t("mo",null,"±"),t("msub",null,[t("mi",null,"h"),t("mi",null,"β")])])])])],-1))])])])]),s[56]||(s[56]=t("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)),s[57]||(s[57]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/a63d20e3a410f14ba6cc612a27e89f8974019d9f/src/grid.jl#L79",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",N,[t("summary",null,[s[58]||(s[58]=t("a",{id:"IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.cosine_grid")],-1)),s[59]||(s[59]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[62]||(s[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)),t("mjx-container",F,[(o(),n("svg",Z,s[60]||(s[60]=[a('',1)]))),s[61]||(s[61]=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,"x"),t("mi",null,"i")]),t("mo",null,"="),t("mi",null,"a"),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,"1"),t("mo",null,"−"),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"π"),t("mfrac",null,[t("mi",null,"i"),t("mi",null,"n")]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",{stretchy:"false"},"("),t("mi",null,"b"),t("mo",null,"−"),t("mi",null,"a"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"1em"})]),t("mi",null,"i"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"N")])],-1))]),s[63]||(s[63]=t("p",null,[e("See also "),t("a",{href:"/IncompressibleNavierStokes.jl/dev/manual/setup#IncompressibleNavierStokes.stretched_grid"},[t("code",null,"stretched_grid")]),e(".")],-1)),s[64]||(s[64]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/a63d20e3a410f14ba6cc612a27e89f8974019d9f/src/grid.jl#L28",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",S,[t("summary",null,[s[65]||(s[65]=t("a",{id:"IncompressibleNavierStokes.max_size-Tuple{Any}",href:"#IncompressibleNavierStokes.max_size-Tuple{Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.max_size")],-1)),s[66]||(s[66]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[67]||(s[67]=a('
    julia
    max_size(grid) -> Any

    Get size of the largest grid element.

    source

    ',3))]),t("details",A,[t("summary",null,[s[68]||(s[68]=t("a",{id:"IncompressibleNavierStokes.stretched_grid",href:"#IncompressibleNavierStokes.stretched_grid"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.stretched_grid")],-1)),s[69]||(s[69]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[94]||(s[94]=a(`
    julia
    stretched_grid(a, b, N) -> Any
    +stretched_grid(a, b, N, s) -> Any
    `,1)),t("p",null,[s[80]||(s[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)),t("mjx-container",D,[(o(),n("svg",I,s[70]||(s[70]=[a('',1)]))),s[71]||(s[71]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 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("msup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"double-struck"},"R")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"N"),t("mo",null,"+"),t("mn",null,"1")])])])],-1))]),s[81]||(s[81]=e(" such that ")),t("mjx-container",V,[(o(),n("svg",B,s[72]||(s[72]=[a('',1)]))),s[73]||(s[73]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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,"x"),t("mi",null,"n")]),t("mo",null,"="),t("mi",null,"a"),t("mo",null,"+"),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"n")]),t("msup",null,[t("mi",null,"s"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,"−"),t("mn",null,"1")])]),t("mi",null,"h")])],-1))]),s[82]||(s[82]=e(" for ")),t("mjx-container",O,[(o(),n("svg",P,s[74]||(s[74]=[a('',1)]))),s[75]||(s[75]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 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")])],-1))]),s[83]||(s[83]=e(". Setting ")),t("mjx-container",z,[(o(),n("svg",G,s[76]||(s[76]=[a('',1)]))),s[77]||(s[77]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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,"x"),t("mi",null,"N")]),t("mo",null,"="),t("mi",null,"b")])],-1))]),s[84]||(s[84]=e(" then gives ")),t("mjx-container",R,[(o(),n("svg",J,s[78]||(s[78]=[a('',1)]))),s[79]||(s[79]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"h"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("mi",null,"b"),t("mo",null,"−"),t("mi",null,"a"),t("mo",{stretchy:"false"},")"),t("mfrac",null,[t("mrow",null,[t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"s")]),t("mrow",null,[t("mn",null,"1"),t("mo",null,"−"),t("msup",null,[t("mi",null,"s"),t("mi",null,"N")])])])])],-1))]),s[85]||(s[85]=e(", resulting in"))]),t("mjx-container",q,[(o(),n("svg",U,s[86]||(s[86]=[a('',1)]))),s[87]||(s[87]=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,"x"),t("mi",null,"n")]),t("mo",null,"="),t("mi",null,"a"),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("mi",null,"b"),t("mo",null,"−"),t("mi",null,"a"),t("mo",{stretchy:"false"},")"),t("mfrac",null,[t("mrow",null,[t("mn",null,"1"),t("mo",null,"−"),t("msup",null,[t("mi",null,"s"),t("mi",null,"n")])]),t("mrow",null,[t("mn",null,"1"),t("mo",null,"−"),t("msup",null,[t("mi",null,"s"),t("mi",null,"N")])])]),t("mo",null,","),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"1em"})]),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,".")])],-1))]),t("p",null,[s[90]||(s[90]=e("Note that ")),s[91]||(s[91]=t("code",null,"stretched_grid(a, b, N, s)[n]",-1)),s[92]||(s[92]=e(" corresponds to ")),t("mjx-container",X,[(o(),n("svg",K,s[88]||(s[88]=[a('',1)]))),s[89]||(s[89]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",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,"x"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"−"),t("mn",null,"1")])])])],-1))]),s[93]||(s[93]=e("."))]),s[95]||(s[95]=t("p",null,[e("See also "),t("a",{href:"/IncompressibleNavierStokes.jl/dev/manual/setup#IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}"},[t("code",null,"cosine_grid")]),e(".")],-1)),s[96]||(s[96]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/a63d20e3a410f14ba6cc612a27e89f8974019d9f/src/grid.jl#L45",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",$,[t("summary",null,[s[97]||(s[97]=t("a",{id:"IncompressibleNavierStokes.tanh_grid",href:"#IncompressibleNavierStokes.tanh_grid"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.tanh_grid")],-1)),s[98]||(s[98]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[99]||(s[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))]),s[128]||(s[128]=t("h2",{id:"setup",tabindex:"-1"},[e("Setup "),t("a",{class:"header-anchor",href:"#setup","aria-label":'Permalink to "Setup"'},"​")],-1)),t("details",W,[t("summary",null,[s[100]||(s[100]=t("a",{id:"KernelAbstractions.CPU",href:"#KernelAbstractions.CPU"},[t("span",{class:"jlbinding"},"KernelAbstractions.CPU")],-1)),s[101]||(s[101]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[102]||(s[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))]),t("details",Y,[t("summary",null,[s[103]||(s[103]=t("a",{id:"IncompressibleNavierStokes.Setup-Tuple{}",href:"#IncompressibleNavierStokes.Setup-Tuple{}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Setup")],-1)),s[104]||(s[104]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[105]||(s[105]=a(`
    julia
    Setup(
     ;
         x,
         boundary_conditions,
    @@ -16,7 +16,7 @@ import{_ as r,c as n,j as t,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))]),t("details",_,[t("summary",null,[s[106]||(s[106]=t("a",{id:"IncompressibleNavierStokes.temperature_equation-Tuple{}",href:"#IncompressibleNavierStokes.temperature_equation-Tuple{}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.temperature_equation")],-1)),s[107]||(s[107]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[108]||(s[108]=a(`
    julia
    temperature_equation(
    +)

    Create problem setup (stored in a named tuple).

    source

    `,3))]),t("details",_,[t("summary",null,[s[106]||(s[106]=t("a",{id:"IncompressibleNavierStokes.temperature_equation-Tuple{}",href:"#IncompressibleNavierStokes.temperature_equation-Tuple{}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.temperature_equation")],-1)),s[107]||(s[107]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[108]||(s[108]=a(`
    julia
    temperature_equation(
     ;
         Pr,
         Ra,
    @@ -25,7 +25,7 @@ import{_ as r,c as n,j as t,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))]),s[129]||(s[129]=t("h2",{id:"Field-initializers",tabindex:"-1"},[e("Field initializers "),t("a",{class:"header-anchor",href:"#Field-initializers","aria-label":'Permalink to "Field initializers {#Field-initializers}"'},"​")],-1)),t("details",t1,[t("summary",null,[s[109]||(s[109]=t("a",{id:"IncompressibleNavierStokes.random_field",href:"#IncompressibleNavierStokes.random_field"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.random_field")],-1)),s[110]||(s[110]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[111]||(s[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))]),t("details",s1,[t("summary",null,[s[112]||(s[112]=t("a",{id:"IncompressibleNavierStokes.scalarfield-Tuple{Any}",href:"#IncompressibleNavierStokes.scalarfield-Tuple{Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.scalarfield")],-1)),s[113]||(s[113]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[114]||(s[114]=a('
    julia
    scalarfield(setup) -> Any

    Create empty scalar field.

    source

    ',3))]),t("details",e1,[t("summary",null,[s[115]||(s[115]=t("a",{id:"IncompressibleNavierStokes.temperaturefield",href:"#IncompressibleNavierStokes.temperaturefield"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.temperaturefield")],-1)),s[116]||(s[116]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[117]||(s[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))]),t("details",a1,[t("summary",null,[s[118]||(s[118]=t("a",{id:"IncompressibleNavierStokes.vectorfield-Tuple{Any}",href:"#IncompressibleNavierStokes.vectorfield-Tuple{Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.vectorfield")],-1)),s[119]||(s[119]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[120]||(s[120]=a('
    julia
    vectorfield(setup) -> Any

    Create empty vector field.

    source

    ',3))]),t("details",i1,[t("summary",null,[s[121]||(s[121]=t("a",{id:"IncompressibleNavierStokes.velocityfield",href:"#IncompressibleNavierStokes.velocityfield"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.velocityfield")],-1)),s[122]||(s[122]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[123]||(s[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))]),s[129]||(s[129]=t("h2",{id:"Field-initializers",tabindex:"-1"},[e("Field initializers "),t("a",{class:"header-anchor",href:"#Field-initializers","aria-label":'Permalink to "Field initializers {#Field-initializers}"'},"​")],-1)),t("details",t1,[t("summary",null,[s[109]||(s[109]=t("a",{id:"IncompressibleNavierStokes.random_field",href:"#IncompressibleNavierStokes.random_field"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.random_field")],-1)),s[110]||(s[110]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[111]||(s[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))]),t("details",s1,[t("summary",null,[s[112]||(s[112]=t("a",{id:"IncompressibleNavierStokes.scalarfield-Tuple{Any}",href:"#IncompressibleNavierStokes.scalarfield-Tuple{Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.scalarfield")],-1)),s[113]||(s[113]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[114]||(s[114]=a('
    julia
    scalarfield(setup) -> Any

    Create empty scalar field.

    source

    ',3))]),t("details",e1,[t("summary",null,[s[115]||(s[115]=t("a",{id:"IncompressibleNavierStokes.temperaturefield",href:"#IncompressibleNavierStokes.temperaturefield"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.temperaturefield")],-1)),s[116]||(s[116]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[117]||(s[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))]),t("details",a1,[t("summary",null,[s[118]||(s[118]=t("a",{id:"IncompressibleNavierStokes.vectorfield-Tuple{Any}",href:"#IncompressibleNavierStokes.vectorfield-Tuple{Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.vectorfield")],-1)),s[119]||(s[119]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[120]||(s[120]=a('
    julia
    vectorfield(setup) -> Any

    Create empty vector field.

    source

    ',3))]),t("details",i1,[t("summary",null,[s[121]||(s[121]=t("a",{id:"IncompressibleNavierStokes.velocityfield",href:"#IncompressibleNavierStokes.velocityfield"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.velocityfield")],-1)),s[122]||(s[122]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[123]||(s[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/dev/assets/manual_solver.md.CSATxmgf.js b/dev/assets/manual_solver.md.CveGplQk.js similarity index 84% rename from dev/assets/manual_solver.md.CSATxmgf.js rename to dev/assets/manual_solver.md.CveGplQk.js index 884cf5a6d..faea5021b 100644 --- a/dev/assets/manual_solver.md.CSATxmgf.js +++ b/dev/assets/manual_solver.md.CveGplQk.js @@ -1,6 +1,6 @@ -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.Dr1kDDE8.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:""},L={class:"jldocstring custom-block",open:""},w={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(
    +import{_ as p,c as n,j as s,a,G as l,a5 as t,B as r,o}from"./chunks/framework.Dr1kDDE8.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:""},L={class:"jldocstring custom-block",open:""},w={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(
         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]=t()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[8]||(e[8]=a(`
    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]=a()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[8]||(e[8]=t(`
    julia
    solve_unsteady(
     ;
         setup,
         tlims,
    @@ -16,7 +16,7 @@ import{_ as p,c as n,j as s,a as t,G as l,a5 as a,B as r,o}from"./chunks/framewo
         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"},[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/dev/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/03acafa3566742b1f37d722d2207f5dc21d031c0/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]=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(
    +)

    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/dev/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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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",y,[(o(),n("svg",b,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(
         initialize
     ) -> NamedTuple{(:initialize, :finalize), <:Tuple{Any, IncompressibleNavierStokes.var"#295#296"}}
     processor(
    @@ -40,7 +40,7 @@ import{_ as p,c as n,j as s,a as t,G as l,a5 as a,B as r,o}from"./chunks/framewo
     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]=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",L,[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",w,[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(
    +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",L,[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",w,[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(
     ;
         showiter,
         showt,
    @@ -48,4 +48,4 @@ import{_ as p,c as n,j as s,a as t,G as l,a5 as a,B as r,o}from"./chunks/framewo
         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]=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}; +) -> @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}; diff --git a/dev/assets/manual_solver.md.CSATxmgf.lean.js b/dev/assets/manual_solver.md.CveGplQk.lean.js similarity index 84% rename from dev/assets/manual_solver.md.CSATxmgf.lean.js rename to dev/assets/manual_solver.md.CveGplQk.lean.js index 884cf5a6d..faea5021b 100644 --- a/dev/assets/manual_solver.md.CSATxmgf.lean.js +++ b/dev/assets/manual_solver.md.CveGplQk.lean.js @@ -1,6 +1,6 @@ -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.Dr1kDDE8.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:""},L={class:"jldocstring custom-block",open:""},w={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(
    +import{_ as p,c as n,j as s,a,G as l,a5 as t,B as r,o}from"./chunks/framework.Dr1kDDE8.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:""},L={class:"jldocstring custom-block",open:""},w={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(
         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]=t()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[8]||(e[8]=a(`
    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]=a()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[8]||(e[8]=t(`
    julia
    solve_unsteady(
     ;
         setup,
         tlims,
    @@ -16,7 +16,7 @@ import{_ as p,c as n,j as s,a as t,G as l,a5 as a,B as r,o}from"./chunks/framewo
         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"},[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/dev/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/03acafa3566742b1f37d722d2207f5dc21d031c0/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]=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(
    +)

    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/dev/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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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",y,[(o(),n("svg",b,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(
         initialize
     ) -> NamedTuple{(:initialize, :finalize), <:Tuple{Any, IncompressibleNavierStokes.var"#295#296"}}
     processor(
    @@ -40,7 +40,7 @@ import{_ as p,c as n,j as s,a as t,G as l,a5 as a,B as r,o}from"./chunks/framewo
     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]=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",L,[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",w,[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(
    +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",L,[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",w,[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(
     ;
         showiter,
         showt,
    @@ -48,4 +48,4 @@ import{_ as p,c as n,j as s,a as t,G as l,a5 as a,B as r,o}from"./chunks/framewo
         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]=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}; +) -> @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}; diff --git a/dev/assets/manual_temperature.md.CvylYS1B.js b/dev/assets/manual_temperature.md.DGNhfuFk.js similarity index 93% rename from dev/assets/manual_temperature.md.CvylYS1B.js rename to dev/assets/manual_temperature.md.DGNhfuFk.js index ee2cfd6ac..ab5aadaac 100644 --- a/dev/assets/manual_temperature.md.CvylYS1B.js +++ b/dev/assets/manual_temperature.md.DGNhfuFk.js @@ -1,7 +1,7 @@ -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.Dr1kDDE8.js";const b=JSON.parse('{"title":"Temperature equation","description":"","frontmatter":{},"headers":[],"relativePath":"manual/temperature.md","filePath":"manual/temperature.md","lastUpdated":null}'),d={name:"manual/temperature.md"},h={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.Dr1kDDE8.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",h,[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(
    +)

    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(
     ;
         Pr,
         Ra,
    @@ -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(d,[["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/dev/assets/manual_temperature.md.CvylYS1B.lean.js b/dev/assets/manual_temperature.md.DGNhfuFk.lean.js similarity index 93% rename from dev/assets/manual_temperature.md.CvylYS1B.lean.js rename to dev/assets/manual_temperature.md.DGNhfuFk.lean.js index ee2cfd6ac..ab5aadaac 100644 --- a/dev/assets/manual_temperature.md.CvylYS1B.lean.js +++ b/dev/assets/manual_temperature.md.DGNhfuFk.lean.js @@ -1,7 +1,7 @@ -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.Dr1kDDE8.js";const b=JSON.parse('{"title":"Temperature equation","description":"","frontmatter":{},"headers":[],"relativePath":"manual/temperature.md","filePath":"manual/temperature.md","lastUpdated":null}'),d={name:"manual/temperature.md"},h={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.Dr1kDDE8.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",h,[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(
    +)

    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(
     ;
         Pr,
         Ra,
    @@ -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(d,[["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/dev/assets/manual_time.md.3eTgRN26.js b/dev/assets/manual_time.md.BJBCC_BN.js similarity index 99% rename from dev/assets/manual_time.md.3eTgRN26.js rename to dev/assets/manual_time.md.BJBCC_BN.js index d664e51e2..85c06a11c 100644 --- a/dev/assets/manual_time.md.3eTgRN26.js +++ b/dev/assets/manual_time.md.BJBCC_BN.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.Dr1kDDE8.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"}},y={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"},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.593ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -677 704 677","aria-hidden":"true"},f={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.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"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R={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"},y1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w1={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"}},f1={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"},b1={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"}},F1={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"},R1={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"}},y2={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"},w2={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"},f2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},b2={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"},F2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R2={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"}},y3={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"},w3={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"},f3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b3={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"},F3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R3={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:""},y4={class:"jldocstring custom-block",open:""},w4={class:"jldocstring custom-block",open:""},x4={class:"jldocstring custom-block",open:""},f4={class:"jldocstring custom-block",open:""},b4={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:""},F4={class:"jldocstring custom-block",open:""},R4={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",y,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",w,[(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",f,[(l(),Q("svg",b,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",F,[(l(),Q("svg",R,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.Dr1kDDE8.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"}},y={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"},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.593ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -677 704 677","aria-hidden":"true"},f={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.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"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R={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"},y1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w1={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"}},f1={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"},b1={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"}},F1={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"},R1={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"}},y2={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"},w2={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"},f2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},b2={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"},F2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R2={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"}},y3={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"},w3={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"},f3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b3={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"},F3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R3={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:""},y4={class:"jldocstring custom-block",open:""},w4={class:"jldocstring custom-block",open:""},x4={class:"jldocstring custom-block",open:""},f4={class:"jldocstring custom-block",open:""},b4={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:""},F4={class:"jldocstring custom-block",open:""},R4={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",y,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",w,[(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",f,[(l(),Q("svg",b,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",F,[(l(),Q("svg",R,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",y1,[(l(),Q("svg",w1,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",f1,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",b1,[(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",F1,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",R1,[(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",y2,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",w2,[(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",f2,[(l(),Q("svg",b2,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/03acafa3566742b1f37d722d2207f5dc21d031c0/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",F2,[(l(),Q("svg",R2,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",y3,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",w3,[(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",f3,[(l(),Q("svg",b3,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",F3,[(l(),Q("svg",R3,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",y1,[(l(),Q("svg",w1,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",f1,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",b1,[(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",F1,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",R1,[(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",y2,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",w2,[(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",f2,[(l(),Q("svg",b2,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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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",F2,[(l(),Q("svg",R2,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",y3,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",w3,[(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",f3,[(l(),Q("svg",b3,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",F3,[(l(),Q("svg",R3,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",y4,[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",y4,[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",w4,[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",w4,[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",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(
    +) -> 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",f4,[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",f4,[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",b4,[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",b4,[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",F4,[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",F4,[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",R4,[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",R4,[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/dev/assets/manual_time.md.3eTgRN26.lean.js b/dev/assets/manual_time.md.BJBCC_BN.lean.js similarity index 99% rename from dev/assets/manual_time.md.3eTgRN26.lean.js rename to dev/assets/manual_time.md.BJBCC_BN.lean.js index d664e51e2..85c06a11c 100644 --- a/dev/assets/manual_time.md.3eTgRN26.lean.js +++ b/dev/assets/manual_time.md.BJBCC_BN.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.Dr1kDDE8.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"}},y={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"},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.593ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -677 704 677","aria-hidden":"true"},f={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.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"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R={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"},y1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w1={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"}},f1={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"},b1={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"}},F1={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"},R1={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"}},y2={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"},w2={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"},f2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},b2={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"},F2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R2={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"}},y3={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"},w3={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"},f3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b3={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"},F3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R3={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:""},y4={class:"jldocstring custom-block",open:""},w4={class:"jldocstring custom-block",open:""},x4={class:"jldocstring custom-block",open:""},f4={class:"jldocstring custom-block",open:""},b4={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:""},F4={class:"jldocstring custom-block",open:""},R4={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",y,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",w,[(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",f,[(l(),Q("svg",b,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",F,[(l(),Q("svg",R,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.Dr1kDDE8.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"}},y={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"},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.593ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -677 704 677","aria-hidden":"true"},f={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.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"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R={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"},y1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w1={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"}},f1={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"},b1={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"}},F1={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"},R1={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"}},y2={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"},w2={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"},f2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},b2={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"},F2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R2={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"}},y3={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"},w3={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"},f3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b3={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"},F3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R3={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:""},y4={class:"jldocstring custom-block",open:""},w4={class:"jldocstring custom-block",open:""},x4={class:"jldocstring custom-block",open:""},f4={class:"jldocstring custom-block",open:""},b4={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:""},F4={class:"jldocstring custom-block",open:""},R4={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",y,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",w,[(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",f,[(l(),Q("svg",b,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",F,[(l(),Q("svg",R,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",y1,[(l(),Q("svg",w1,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",f1,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",b1,[(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",F1,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",R1,[(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",y2,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",w2,[(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",f2,[(l(),Q("svg",b2,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/03acafa3566742b1f37d722d2207f5dc21d031c0/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",F2,[(l(),Q("svg",R2,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",y3,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",w3,[(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",f3,[(l(),Q("svg",b3,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",F3,[(l(),Q("svg",R3,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",y1,[(l(),Q("svg",w1,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",f1,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",b1,[(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",F1,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",R1,[(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",y2,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",w2,[(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",f2,[(l(),Q("svg",b2,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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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",F2,[(l(),Q("svg",R2,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",y3,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",w3,[(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",f3,[(l(),Q("svg",b3,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",F3,[(l(),Q("svg",R3,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",y4,[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",y4,[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",w4,[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",w4,[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",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(
    +) -> 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",f4,[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",f4,[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",b4,[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",b4,[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",F4,[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",F4,[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",R4,[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",R4,[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/dev/assets/manual_utils.md.CBLFMcXv.js b/dev/assets/manual_utils.md.BH_DwoJc.js similarity index 94% rename from dev/assets/manual_utils.md.CBLFMcXv.js rename to dev/assets/manual_utils.md.BH_DwoJc.js index efe57f223..cc950eac7 100644 --- a/dev/assets/manual_utils.md.CBLFMcXv.js +++ b/dev/assets/manual_utils.md.BH_DwoJc.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.Dr1kDDE8.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:""},c={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},b={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/03acafa3566742b1f37d722d2207f5dc21d031c0/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(
    +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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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(
         setup;
         npoint,
         a
    -) -> NamedTuple{(, :masks, :K), <:Tuple{Any, Any, Any}}

    Get energy spectrum of velocity field.

    source

    `,3))]),i("details",c,[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",m,[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",E,[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(
    +) -> NamedTuple{(, :masks, :K), <:Tuple{Any, Any, Any}}

    Get energy spectrum of velocity field.

    source

    `,3))]),i("details",c,[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",m,[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",E,[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",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",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",f]]);export{F as __pageData,A as default}; diff --git a/dev/assets/manual_utils.md.CBLFMcXv.lean.js b/dev/assets/manual_utils.md.BH_DwoJc.lean.js similarity index 94% rename from dev/assets/manual_utils.md.CBLFMcXv.lean.js rename to dev/assets/manual_utils.md.BH_DwoJc.lean.js index efe57f223..cc950eac7 100644 --- a/dev/assets/manual_utils.md.CBLFMcXv.lean.js +++ b/dev/assets/manual_utils.md.BH_DwoJc.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.Dr1kDDE8.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:""},c={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},b={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/03acafa3566742b1f37d722d2207f5dc21d031c0/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(
    +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/a63d20e3a410f14ba6cc612a27e89f8974019d9f/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(
         setup;
         npoint,
         a
    -) -> NamedTuple{(, :masks, :K), <:Tuple{Any, Any, Any}}

    Get energy spectrum of velocity field.

    source

    `,3))]),i("details",c,[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",m,[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",E,[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(
    +) -> NamedTuple{(, :masks, :K), <:Tuple{Any, Any, Any}}

    Get energy spectrum of velocity field.

    source

    `,3))]),i("details",c,[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",m,[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",E,[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",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",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",f]]);export{F as __pageData,A as default}; diff --git a/dev/assets/aeuusgj.C2NI-x6W.png b/dev/assets/pmidlev.C2NI-x6W.png similarity index 100% rename from dev/assets/aeuusgj.C2NI-x6W.png rename to dev/assets/pmidlev.C2NI-x6W.png diff --git a/dev/assets/pqbunkl.lOgoLSNC.png b/dev/assets/pqbunkl.lOgoLSNC.png deleted file mode 100644 index ff42c1f202a5f0332d500d704a3791a7490a12fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161840 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%0DPU$q(dIH4-&bZnFFC{=eOGU8 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 z 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

    This page was generated using Literate.jl.

    - + \ No newline at end of file diff --git a/dev/examples/generated/BackwardFacingStep2D.html b/dev/examples/generated/BackwardFacingStep2D.html index db24054e1..869b067fe 100644 --- a/dev/examples/generated/BackwardFacingStep2D.html +++ b/dev/examples/generated/BackwardFacingStep2D.html @@ -9,9 +9,9 @@ - + - + @@ -119,7 +119,7 @@ fieldplot(state; setup, size = (600, 150), fieldname = :velocitynorm) fieldplot(state; setup, size = (600, 150), fieldname = :vorticity)

    This page was generated using Literate.jl.

    - + \ No newline at end of file diff --git a/dev/examples/generated/BackwardFacingStep3D.html b/dev/examples/generated/BackwardFacingStep3D.html index 95fdbd923..a171a8db3 100644 --- a/dev/examples/generated/BackwardFacingStep3D.html +++ b/dev/examples/generated/BackwardFacingStep3D.html @@ -9,9 +9,9 @@ - + - + @@ -122,7 +122,7 @@ fieldplot(state; setup, fieldname = :velocitynorm) fieldplot(state; setup, fieldname = :vorticity)

    This page was generated using Literate.jl.

    - + \ No newline at end of file diff --git a/dev/examples/generated/DecayingTurbulence2D.html b/dev/examples/generated/DecayingTurbulence2D.html index 54c3f5356..9d169a6d3 100644 --- a/dev/examples/generated/DecayingTurbulence2D.html +++ b/dev/examples/generated/DecayingTurbulence2D.html @@ -9,11 +9,11 @@ - + - + - + @@ -47,13 +47,14 @@ ), log = timelogger(; nupdate = 100), ), -);
    [ Info: t = 0.0997245	Δt = 0.0011	umax = 3.3	itertime = 0.028
    -[ Info: t = 0.205518	Δt = 0.0012	umax = 3	itertime = 0.016
    -[ Info: t = 0.311364	Δt = 0.001	umax = 3.5	itertime = 0.016
    -[ Info: t = 0.431183	Δt = 0.0013	umax = 2.6	itertime = 0.016
    -[ Info: t = 0.579297	Δt = 0.0017	umax = 2.1	itertime = 0.016
    -[ Info: t = 0.734226	Δt = 0.0014	umax = 2.4	itertime = 0.016
    -[ Info: t = 0.873193	Δt = 0.0014	umax = 2.5	itertime = 0.016

    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.105436	Δt = 0.0011	umax = 3.2	itertime = 0.026
    +[ Info: t = 0.216847	Δt = 0.00098	umax = 3.6	itertime = 0.015
    +[ Info: t = 0.339039	Δt = 0.0013	umax = 2.6	itertime = 0.015
    +[ Info: t = 0.462407	Δt = 0.0012	umax = 3	itertime = 0.015
    +[ Info: t = 0.583124	Δt = 0.0012	umax = 2.9	itertime = 0.015
    +[ Info: t = 0.720378	Δt = 0.0014	umax = 2.6	itertime = 0.015
    +[ Info: t = 0.846368	Δt = 0.0012	umax = 2.9	itertime = 0.015
    +[ Info: t = 0.976317	Δt = 0.0014	umax = 2.5	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
    @@ -88,7 +89,7 @@
     outputs.espec
     
     fieldplot(state; setup)

    This page was generated using Literate.jl.

    - + \ No newline at end of file diff --git a/dev/examples/generated/DecayingTurbulence3D.html b/dev/examples/generated/DecayingTurbulence3D.html index c42445a26..974437709 100644 --- a/dev/examples/generated/DecayingTurbulence3D.html +++ b/dev/examples/generated/DecayingTurbulence3D.html @@ -9,9 +9,9 @@ - + - + @@ -80,7 +80,7 @@ # outputs.ehist outputs.espec

    This page was generated using Literate.jl.

    - + \ No newline at end of file diff --git a/dev/examples/generated/Kolmogorov2D.html b/dev/examples/generated/Kolmogorov2D.html index e5ffbf410..888f6b963 100644 --- a/dev/examples/generated/Kolmogorov2D.html +++ b/dev/examples/generated/Kolmogorov2D.html @@ -9,9 +9,9 @@ - + - + @@ -98,7 +98,7 @@ outputs.ehist outputs.espec

    This page was generated using Literate.jl.

    - + \ No newline at end of file diff --git a/dev/examples/generated/LidDrivenCavity2D.html b/dev/examples/generated/LidDrivenCavity2D.html index 437a2dd66..da1c4e661 100644 --- a/dev/examples/generated/LidDrivenCavity2D.html +++ b/dev/examples/generated/LidDrivenCavity2D.html @@ -9,9 +9,9 @@ - + - + @@ -114,7 +114,7 @@ # outputs.vtk # outputs.field outputs.log

    This page was generated using Literate.jl.

    - + \ No newline at end of file diff --git a/dev/examples/generated/LidDrivenCavity3D.html b/dev/examples/generated/LidDrivenCavity3D.html index e6144b112..1beedde01 100644 --- a/dev/examples/generated/LidDrivenCavity3D.html +++ b/dev/examples/generated/LidDrivenCavity3D.html @@ -9,9 +9,9 @@ - + - + @@ -102,7 +102,7 @@ save_vtk(state; setup, filename = joinpath(outdir, "solution")) outputs.ehist

    This page was generated using Literate.jl.

    - + \ No newline at end of file diff --git a/dev/examples/generated/MultiActuator.html b/dev/examples/generated/MultiActuator.html index 4797d983e..a9c10d0a4 100644 --- a/dev/examples/generated/MultiActuator.html +++ b/dev/examples/generated/MultiActuator.html @@ -9,9 +9,9 @@ - + - + @@ -216,7 +216,7 @@ fig = fieldplot(state; setup, size = (600, 300), fieldname = :vorticity) lines!.(boxes; color = :red); fig

    This page was generated using Literate.jl.

    - + \ No newline at end of file diff --git a/dev/examples/generated/PlanarMixing2D.html b/dev/examples/generated/PlanarMixing2D.html index 11f2068cb..104a21439 100644 --- a/dev/examples/generated/PlanarMixing2D.html +++ b/dev/examples/generated/PlanarMixing2D.html @@ -9,9 +9,9 @@ - + - + @@ -129,7 +129,7 @@ outputs.rtp 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/dev/examples/generated/PlaneJets2D.html b/dev/examples/generated/PlaneJets2D.html index fccff6437..e23d71a65 100644 --- a/dev/examples/generated/PlaneJets2D.html +++ b/dev/examples/generated/PlaneJets2D.html @@ -9,9 +9,9 @@ - + - + @@ -296,7 +296,7 @@ fieldplot(state; setup, fieldname = :velocitynorm) fieldplot(state; setup, fieldname = :vorticity)

    This page was generated using Literate.jl.

    - + \ No newline at end of file diff --git a/dev/examples/generated/RayleighBenard2D.html b/dev/examples/generated/RayleighBenard2D.html index 0bb3e9f50..a619eddb8 100644 --- a/dev/examples/generated/RayleighBenard2D.html +++ b/dev/examples/generated/RayleighBenard2D.html @@ -9,11 +9,11 @@ - + - + - + @@ -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,
    @@ -118,8 +118,8 @@
         tlims = (T(0), T(20)),
         Δt = T(1e-2),
         processors,
    -);
    [ Info: t = 10.0001	Δt = 0.01	umax = 0.24	itertime = 0.016
    -[ Info: t = 20.0004	Δt = 0.01	umax = 0.55	itertime = 0.013

    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")
    @@ -245,7 +245,7 @@
     outputs.nusselt
     
     outputs.avg

    This page was generated using Literate.jl.

    - + \ No newline at end of file diff --git a/dev/examples/generated/RayleighBenard3D.html b/dev/examples/generated/RayleighBenard3D.html index 3f1ea4b41..a2d77722f 100644 --- a/dev/examples/generated/RayleighBenard3D.html +++ b/dev/examples/generated/RayleighBenard3D.html @@ -9,9 +9,9 @@ - + - + @@ -197,7 +197,7 @@ # fieldname = :eig2field, fieldname = :temperature, )

    This page was generated using Literate.jl.

    - + \ No newline at end of file diff --git a/dev/examples/generated/RayleighTaylor2D.html b/dev/examples/generated/RayleighTaylor2D.html index 04c8e0c4e..659185a2b 100644 --- a/dev/examples/generated/RayleighTaylor2D.html +++ b/dev/examples/generated/RayleighTaylor2D.html @@ -9,11 +9,11 @@ - + - + - + @@ -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,14 +60,14 @@
             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.0033
    -[ Info: t = 3	Δt = 0.005	umax = 0.78	itertime = 0.0034
    -[ Info: t = 4	Δt = 0.005	umax = 0.75	itertime = 0.0033
    -[ Info: t = 5	Δt = 0.005	umax = 0.78	itertime = 0.0033
    +[ 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 = 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.0033
    -[ Info: t = 7	Δt = 0.005	umax = 0.84	itertime = 0.0033
    -[ Info: t = 8	Δt = 0.005	umax = 0.89	itertime = 0.0033
    -[ Info: t = 9	Δt = 0.005	umax = 1.2	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.0032
    +[ Info: t = 9	Δt = 0.005	umax = 1.2	itertime = 0.0032
     [ Info: t = 10	Δt = 0.005	umax = 0.88	itertime = 0.0033

    Copy-pasteable code

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

    julia
    using GLMakie
     using IncompressibleNavierStokes
     
    @@ -119,7 +119,7 @@
             log = timelogger(; nupdate = 200),
         ),
     );

    This page was generated using Literate.jl.

    - + \ No newline at end of file diff --git a/dev/examples/generated/RayleighTaylor3D.html b/dev/examples/generated/RayleighTaylor3D.html index 025a526cc..16a5d06c6 100644 --- a/dev/examples/generated/RayleighTaylor3D.html +++ b/dev/examples/generated/RayleighTaylor3D.html @@ -9,9 +9,9 @@ - + - + @@ -184,7 +184,7 @@ hist(vec(Array(log.(max.(eps(T), .-field))))) fieldplot(state; setup, fieldname = :temperature)

    This page was generated using Literate.jl.

    - + \ No newline at end of file diff --git a/dev/examples/generated/ShearLayer2D.html b/dev/examples/generated/ShearLayer2D.html index 1a0723ca4..e519f6077 100644 --- a/dev/examples/generated/ShearLayer2D.html +++ b/dev/examples/generated/ShearLayer2D.html @@ -9,9 +9,9 @@ - + - + @@ -107,7 +107,7 @@ fieldplot(state; setup, fieldname = :velocitynorm) fieldplot(state; setup, fieldname = :vorticity)

    This page was generated using Literate.jl.

    - + \ No newline at end of file diff --git a/dev/examples/generated/TaylorGreenVortex2D.html b/dev/examples/generated/TaylorGreenVortex2D.html index 9ee7e1fdd..bceff0c9c 100644 --- a/dev/examples/generated/TaylorGreenVortex2D.html +++ b/dev/examples/generated/TaylorGreenVortex2D.html @@ -9,11 +9,11 @@ - + - + - + @@ -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
     
    @@ -158,7 +158,7 @@
     fig
     
     save(joinpath(outdir, "convergence.png"), fig)

    This page was generated using Literate.jl.

    - + \ No newline at end of file diff --git a/dev/examples/generated/TaylorGreenVortex3D.html b/dev/examples/generated/TaylorGreenVortex3D.html index 33e6d2dbf..48567f89e 100644 --- a/dev/examples/generated/TaylorGreenVortex3D.html +++ b/dev/examples/generated/TaylorGreenVortex3D.html @@ -9,9 +9,9 @@ - + - + @@ -105,7 +105,7 @@ outputs.ehist outputs.espec

    This page was generated using Literate.jl.

    - + \ No newline at end of file diff --git a/dev/examples/index.html b/dev/examples/index.html index 95add314c..037494d34 100644 --- a/dev/examples/index.html +++ b/dev/examples/index.html @@ -9,9 +9,9 @@ - + - + @@ -24,7 +24,7 @@
    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/dev/getting_started.html b/dev/getting_started.html index f8f6c1838..98a2ff6c8 100644 --- a/dev/getting_started.html +++ b/dev/getting_started.html @@ -9,9 +9,9 @@ - + - + @@ -24,7 +24,7 @@
    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/dev/hashmap.json b/dev/hashmap.json index bb3bd2cd4..fed04badb 100644 --- a/dev/hashmap.json +++ b/dev/hashmap.json @@ -1 +1 @@ -{"about_citing.md":"_SqI95YY","about_contributing.md":"DhMuxJGd","about_development.md":"y-9cwpPK","about_index.md":"BYzFEErW","about_license.md":"BMTPbAIg","about_versions.md":"ByqO0kAn","examples_generated_actuator2d.md":"CicJvifW","examples_generated_actuator3d.md":"m7eZ843V","examples_generated_backwardfacingstep2d.md":"FwRjGPk6","examples_generated_backwardfacingstep3d.md":"Bt6sInAp","examples_generated_decayingturbulence2d.md":"BUaxapZ_","examples_generated_decayingturbulence3d.md":"6T1PfoFX","examples_generated_kolmogorov2d.md":"B1tvst8N","examples_generated_liddrivencavity2d.md":"DUDWAH6I","examples_generated_liddrivencavity3d.md":"3_GDZ_fM","examples_generated_multiactuator.md":"DMsLnVhM","examples_generated_planarmixing2d.md":"DZ7I9yl7","examples_generated_planejets2d.md":"Db3tovgb","examples_generated_rayleighbenard2d.md":"Cmmj9k1P","examples_generated_rayleighbenard3d.md":"DctDp5W_","examples_generated_rayleightaylor2d.md":"C4WmLQbK","examples_generated_rayleightaylor3d.md":"Egg4joXV","examples_generated_shearlayer2d.md":"05unvAuP","examples_generated_taylorgreenvortex2d.md":"XLjKfMqJ","examples_generated_taylorgreenvortex3d.md":"m01ixPJ8","examples_index.md":"CqFB2DAD","getting_started.md":"BC8qOMfm","index.md":"D9tgK7Nd","manual_closure.md":"Bl_bxqy7","manual_differentiability.md":"DHl4CtMi","manual_gpu.md":"sbkSDAqo","manual_les.md":"O3bTXciX","manual_matrices.md":"CgitaAGh","manual_ns.md":"iA_pjZRQ","manual_operators.md":"d5WWXEo-","manual_precision.md":"b0OoKca_","manual_pressure.md":"CRdAlBfk","manual_sciml.md":"CER13ld6","manual_setup.md":"w6x6ynsm","manual_solver.md":"CSATxmgf","manual_spatial.md":"BY8cpZ4v","manual_temperature.md":"CvylYS1B","manual_time.md":"3eTgRN26","manual_utils.md":"CBLFMcXv","references.md":"DpSG3aTl"} +{"about_citing.md":"_SqI95YY","about_contributing.md":"DhMuxJGd","about_development.md":"y-9cwpPK","about_index.md":"DDeqRwIY","about_license.md":"B43Z_-HQ","about_versions.md":"Bk-sITSg","examples_generated_actuator2d.md":"DxDFVKMk","examples_generated_actuator3d.md":"m7eZ843V","examples_generated_backwardfacingstep2d.md":"FwRjGPk6","examples_generated_backwardfacingstep3d.md":"Bt6sInAp","examples_generated_decayingturbulence2d.md":"Di45Ivji","examples_generated_decayingturbulence3d.md":"6T1PfoFX","examples_generated_kolmogorov2d.md":"B1tvst8N","examples_generated_liddrivencavity2d.md":"DUDWAH6I","examples_generated_liddrivencavity3d.md":"3_GDZ_fM","examples_generated_multiactuator.md":"DMsLnVhM","examples_generated_planarmixing2d.md":"DZ7I9yl7","examples_generated_planejets2d.md":"Db3tovgb","examples_generated_rayleighbenard2d.md":"DK8wXqn9","examples_generated_rayleighbenard3d.md":"DctDp5W_","examples_generated_rayleightaylor2d.md":"QTiLYjii","examples_generated_rayleightaylor3d.md":"Egg4joXV","examples_generated_shearlayer2d.md":"05unvAuP","examples_generated_taylorgreenvortex2d.md":"BBlb1Y2_","examples_generated_taylorgreenvortex3d.md":"m01ixPJ8","examples_index.md":"CqFB2DAD","getting_started.md":"BC8qOMfm","index.md":"D9tgK7Nd","manual_closure.md":"Bp4YxggZ","manual_differentiability.md":"D_UkzJTY","manual_gpu.md":"sbkSDAqo","manual_les.md":"O3bTXciX","manual_matrices.md":"WgRK4vkk","manual_ns.md":"iA_pjZRQ","manual_operators.md":"DDNX2oaK","manual_precision.md":"b0OoKca_","manual_pressure.md":"CGOE2Wqh","manual_sciml.md":"CcNBgquF","manual_setup.md":"B7b6UkIH","manual_solver.md":"CveGplQk","manual_spatial.md":"BY8cpZ4v","manual_temperature.md":"DGNhfuFk","manual_time.md":"BJBCC_BN","manual_utils.md":"BH_DwoJc","references.md":"DpSG3aTl"} diff --git a/dev/index.html b/dev/index.html index 6d8efa466..a5a522a99 100644 --- a/dev/index.html +++ b/dev/index.html @@ -9,9 +9,9 @@ - + - + @@ -24,7 +24,7 @@ - + \ No newline at end of file diff --git a/dev/manual/closure.html b/dev/manual/closure.html index e8b37e025..a80e6cf58 100644 --- a/dev/manual/closure.html +++ b/dev/manual/closure.html @@ -9,11 +9,11 @@ - + - + - + @@ -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.create_tensorclosure Method
    julia
    create_tensorclosure(layers...; setup, rng)

    Create tensor basis closure.

    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.create_tensorclosure Method
    julia
    create_tensorclosure(layers...; setup, rng)

    Create tensor basis closure.

    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#44"{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#44"{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,
         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#57"{_A, NeuralClosure.var"#55#56"} where _A
     create_loss_prior(
         f,
         normalize
    -) -> NeuralClosure.var"#loss_prior#57"

    Return mean squared error loss for the predictor f.

    source

    NeuralClosure.create_relerr_post Method
    julia
    create_relerr_post(
    +) -> NeuralClosure.var"#loss_prior#57"

    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"#58#59"

    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"#58#59"

    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/dev/manual/differentiability.html b/dev/manual/differentiability.html index 3ddad1bc4..b691ec5ee 100644 --- a/dev/manual/differentiability.html +++ b/dev/manual/differentiability.html @@ -9,11 +9,11 @@ - + - + - + @@ -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")))), [6.945445343448e-310 6.9454449186883e-310 … 5.0e-324 5.0e-324; 6.9454449184535e-310 6.94544491869066e-310 … 6.94544489383323e-310 6.9454448939123e-310; … ; 6.94544491868354e-310 6.9454449003201e-310 … 5.0e-324 5.0e-324; 6.9454449186859e-310 6.9454449003225e-310 … 6.9454448939107e-310 6.94544489398975e-310], ComplexF64[6.94557386934597e-310 + 6.94557386934597e-310im 0.0 + 0.0im … 0.0 + 0.0im 0.0 + 0.0im; 6.94557386934597e-310 + 6.94557386934597e-310im 0.0 + 0.0im … 0.0 + 0.0im 0.0 + 0.0im; … ; 0.0 + 0.0im 0.0 + 0.0im … 0.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 0.0 + 0.0im … 0.0 + 0.0im 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)
    +      (dft-directbuf/14-10-x10 "n1fv_10_avx2")))), [3.86215878e-315 0.0 … 6.548379943e-315 3.89362187e-316; 6.547993426e-315 0.0 … 6.548380615e-315 3.89362187e-316; … ; 4.245092511e-314 3.22322206e-315 … 6.34907335e-315 0.0; 0.0 6.91711403163036e-310 … 2.9e-322 6.34907303e-315], ComplexF64[1.89668687e-315 + 2.20435554e-315im 5.0e-324 + 6.91697151413794e-310im … 1.191723655e-315 + 4.9e-322im 3.0355e-320 + 6.37e-322im; 1.89668687e-315 + 2.20435554e-315im 5.0e-324 + 6.91697151413952e-310im … 3.9e-322 + 5.0e-324im 5.3e-322 + 3.05534496e-315im; … ; 5.0e-324 + 6.9169715141348e-310im 5.0e-324 + 6.9169715142154e-310im … 5.24e-322 + 2.3716543e-316im 6.4e-322 + 3.955624e-316im; 5.0e-324 + 6.91697151413636e-310im 5.0e-324 + 6.916971514217e-310im … 6.4e-322 + 5.3e-322im 7.9e-322 + 6.47e-322im], 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
    - + \ No newline at end of file diff --git a/dev/manual/gpu.html b/dev/manual/gpu.html index 247ae326c..04782f281 100644 --- a/dev/manual/gpu.html +++ b/dev/manual/gpu.html @@ -9,9 +9,9 @@ - + - + @@ -25,7 +25,7 @@
    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.

    - + \ No newline at end of file diff --git a/dev/manual/les.html b/dev/manual/les.html index 7dd621c6c..9ebeee47f 100644 --- a/dev/manual/les.html +++ b/dev/manual/les.html @@ -9,9 +9,9 @@ - + - + @@ -24,7 +24,7 @@
    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/dev/manual/matrices.html b/dev/manual/matrices.html index 99b7a9715..08d1f0766 100644 --- a/dev/manual/matrices.html +++ b/dev/manual/matrices.html @@ -9,11 +9,11 @@ - + - + - + @@ -101,7 +101,7 @@ D = diffusion_mat(setup) d_kernel = diffusion(apply_bc_u(u, 0.0, setup), setup; use_viscosity = false) d_matrix = reshape(D * B * u[:], size(u)) -maximum(abs, d_matrix - d_kernel)
    9.094947017729282e-13

    Matrices only work on flattened fields u[:], while the kernels work on (D+1)-array-shaped fields for a dimension D{2,3}.

    Boundary conditions and matrices

    Matrices can only be used to represent boundary conditions that depend linearly on the input, such as periodic or Neumann boundary conditions. Non-zero Dirichlet boundary conditions need to be accounted for separately. Consider the following inflow-setup:

    julia
    setup = Setup(;
    +maximum(abs, d_matrix - d_kernel)
    4.547473508864641e-13

    Matrices only work on flattened fields u[:], while the kernels work on (D+1)-array-shaped fields for a dimension D{2,3}.

    Boundary conditions and matrices

    Matrices can only be used to represent boundary conditions that depend linearly on the input, such as periodic or Neumann boundary conditions. Non-zero Dirichlet boundary conditions need to be accounted for separately. Consider the following inflow-setup:

    julia
    setup = Setup(;
         x = (ax, ax),
         boundary_conditions = (
             (DirichletBC((10.0, 0.0)), PressureBC()),
    @@ -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/dev/manual/ns.html b/dev/manual/ns.html index d1bfd63bf..01dc5003d 100644 --- a/dev/manual/ns.html +++ b/dev/manual/ns.html @@ -9,9 +9,9 @@ - + - + @@ -24,7 +24,7 @@
    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/dev/manual/operators.html b/dev/manual/operators.html index 453f3a1df..44cf6dcdb 100644 --- a/dev/manual/operators.html +++ b/dev/manual/operators.html @@ -9,11 +9,11 @@ - + - + - + @@ -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, ), <: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(
         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#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

    + \ No newline at end of file diff --git a/dev/manual/precision.html b/dev/manual/precision.html index 81f6b04ee..968e4ae0d 100644 --- a/dev/manual/precision.html +++ b/dev/manual/precision.html @@ -9,9 +9,9 @@ - + - + @@ -24,7 +24,7 @@
    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/dev/manual/pressure.html b/dev/manual/pressure.html index c2117e71f..9b60c49ed 100644 --- a/dev/manual/pressure.html +++ b/dev/manual/pressure.html @@ -9,11 +9,11 @@ - + - + - + @@ -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!#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(
         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!#124"

    Create spectral Poisson solver from setup.

    source

    + \ No newline at end of file diff --git a/dev/manual/sciml.html b/dev/manual/sciml.html index 355d43018..4293d3f68 100644 --- a/dev/manual/sciml.html +++ b/dev/manual/sciml.html @@ -9,11 +9,11 @@ - + - + - + @@ -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: 231-element Vector{Float64}:
    +t: 204-element Vector{Float64}:
      0.0
    - 0.0016659277128752055
    - 0.002432989100957199
    - 0.0036642837413415376
    - 0.004709119986944817
    - 0.005918078594056992
    - 0.007106129763889296
    - 0.00836604328705504
    - 0.00964424423128464
    - 0.010963315612198047
    + 0.0017630725463301349
    + 0.002578765391583634
    + 0.0038900689003174543
    + 0.0050004385667972275
    + 0.006282968599569631
    + 0.00753879858193828
    + 0.008865534083334846
    + 0.01020691087682567
    + 0.011586923053397053
     
    - 0.901224250082742
    - 0.9130080474847379
    - 0.9249889455158832
    - 0.9371708873148851
    - 0.9495567173255886
    - 0.9621483766861515
    - 0.9749461242781639
    - 0.9879491389935008
    + 0.8931676655837408
    + 0.9061469742584687
    + 0.919340601659627
    + 0.9327544152402584
    + 0.9463937370590901
    + 0.9602625548035638
    + 0.9743640183560942
    + 0.9887005249941152
      1.0
    -u: 231-element Vector{Array{Float64, 3}}:
    - [0.2748500876654998 -0.04071943324047422 … 0.2748500876654998 -0.04071943324047422; 0.26478892718363534 -0.16765558072050224 … 0.26478892718363534 -0.16765558072050224; … ; 0.2748500876654998 -0.04071943324047422 … 0.2748500876654998 -0.04071943324047422; 0.26478892718363534 -0.16765558072050224 … 0.26478892718363534 -0.16765558072050224;;; -1.5829655020559292 -1.4557841819910529 … -1.5829655020559292 -1.4557841819910529; -1.4246354105995818 -1.297699263119553 … -1.4246354105995818 -1.297699263119553; … ; -1.5829655020559292 -1.4557841819910529 … -1.5829655020559292 -1.4557841819910529; -1.4246354105995818 -1.297699263119553 … -1.4246354105995818 -1.297699263119553]
    - [0.22058510657086466 -0.15003064641999547 … 0.22058510657086466 -0.15003064641999547; 0.1982588113475794 -0.1902480109949739 … 0.2576249104056681 -0.27143384224791994; … ; 0.22058510657086466 -0.07064790536525153 … 0.26641087398409063 -0.15003064641999547; 0.1982588113475794 -0.27143384224791994 … 0.1982588113475794 -0.27143384224791994;;; -1.5540711551942565 -1.392277169520958 … -1.5540711551942565 -1.392277169520958; -1.398196176974059 -1.2609742895493716 … -1.3805743951790925 -1.2265543344592271; … ; -1.5540711551942565 -1.4413378175847538 … -1.570006347040808 -1.392277169520958; -1.398196176974059 -1.2265543344592271 … -1.398196176974059 -1.2265543344592271]
    - [0.19399664043280868 -0.20071552063741827 … 0.19399664043280868 -0.20071552063741827; 0.16744408786115583 -0.20044870227871497 … 0.2539479438729073 -0.3181719180513525; … ; 0.19399664043280868 -0.08449421949182555 … 0.2618841428071021 -0.20071552063741827; 0.16744408786115583 -0.3181719180513525 … 0.16744408786115583 -0.3181719180513525;;; -1.5408896224744166 -1.362910971332051 … -1.5408896224744166 -1.362910971332051; -1.386514337448187 -1.2444333030428174 … -1.3603877858297053 -1.1941482529440282; … ; -1.5408896224744166 -1.4339439282537916 … -1.5630968696272343 -1.362910971332051; -1.386514337448187 -1.1941482529440282 … -1.386514337448187 -1.1941482529440282]
    - [0.14940934717906382 -0.2823513003411383 … 0.14940934717906382 -0.2823513003411383; 0.11789472462168231 -0.2165332725882426 … 0.24759663011960842 -0.39172103069959563; … ; 0.14940934717906382 -0.10675480619510444 … 0.25384740679321116 -0.2823513003411383; 0.11789472462168231 -0.39172103069959563 … 0.11789472462168231 -0.39172103069959563;;; -1.5198755947284115 -1.3156703421666662 … -1.5198755947284115 -1.3156703421666662; -1.3683796071986178 -1.2184662498967187 … -1.328244716289856 -1.1426348881246589; … ; -1.5198755947284115 -1.4212503200258166 … -1.5508991383515363 -1.3156703421666662; -1.3683796071986178 -1.1426348881246589 … -1.3683796071986178 -1.1426348881246589]
    - [0.10989002204298659 -0.35174924827336546 … 0.10989002204298659 -0.35174924827336546; 0.07587720474553815 -0.22988601908419418 … 0.2418115695622559 -0.4526439021987227; … ; 0.10989002204298659 -0.1256376837392505 … 0.2463409906236072 -0.35174924827336546; 0.07587720474553815 -0.4526439021987227 … 0.07587720474553815 -0.4526439021987227;;; -1.5021723583509827 -1.2755375395367514 … -1.5021723583509827 -1.2755375395367514; -1.3535592264250835 -1.197063579431731 … -1.3013119147766734 -1.0994394874030844; … ; -1.5021723583509827 -1.4098001513934582 … -1.5395856426560672 -1.2755375395367514; -1.3535592264250835 -1.0994394874030844 … -1.3535592264250835 -1.0994394874030844]
    - [0.06243496138227762 -0.43201651748195663 … 0.06243496138227762 -0.43201651748195663; 0.02742315032289014 -0.24497890654035046 … 0.2347131913588917 -0.521365358678493; … ; 0.06243496138227762 -0.1474290970797436 … 0.23694196283383762 -0.43201651748195663; 0.02742315032289014 -0.521365358678493 … 0.02742315032289014 -0.521365358678493;;; -1.4818224716447106 -1.2291179186626557 … -1.4818224716447106 -1.2291179186626557; -1.3370223269085002 -1.173097581384703 … -1.2706473908453082 -1.050084445556004; … ; -1.4818224716447106 -1.3959226077864737 … -1.525527954532172 -1.2291179186626557; -1.3370223269085002 -1.050084445556004 … -1.3370223269085002 -1.050084445556004]
    - [0.014192943737148224 -0.5106962082836307 … 0.014192943737148224 -0.5106962082836307; -0.019902445757816967 -0.25942194008273045 … 0.22736271126184718 -0.5869964933941038; … ; 0.014192943737148224 -0.16873461937080209 … 0.2270321872946439 -0.5106962082836307; -0.019902445757816967 -0.5869964933941038 … -0.019902445757816967 -0.5869964933941038;;; -1.461953758496949 -1.1835916359291985 … -1.461953758496949 -1.1835916359291985; -1.3213680514666326 -1.150443012586993 … -1.2411303332989192 -1.002265195818241; … ; -1.461953758496949 -1.3817735608576356 … -1.5108383856845689 -1.1835916359291985; -1.3213680514666326 -1.002265195818241 … -1.3213680514666326 -1.002265195818241]
    - [-0.038491252983957634 -0.5937429121457573 … -0.038491252983957634 -0.5937429121457573; -0.06965546592090349 -0.27430324498284664 … 0.2192143197882487 -0.6544973553185032; … ; -0.038491252983957634 -0.19115740144457755 … 0.21587331386783326 -0.5937429121457573; -0.06965546592090349 -0.6544973553185032 … -0.06965546592090349 -0.6544973553185032;;; -1.4410136860931138 -1.135492610467593 … -1.4410136860931138 -1.135492610467593; -1.3053634757715198 -1.1274457448656976 … -1.210591588403964 -0.9523190847272895; … ; -1.4410136860931138 -1.3663723301818125 … -1.4944627425749468 -1.135492610467593; -1.3053634757715198 -0.9523190847272895 … -1.3053634757715198 -0.9523190847272895]
    - [-0.09332391529212641 -0.6774105000129884 … -0.09332391529212641 -0.6774105000129884; -0.11956158434217912 -0.2889311032174006 … 0.21062948058998315 -0.720743997824583; … ; -0.09332391529212641 -0.2136712153718837 … 0.2039499251814571 -0.6774105000129884; -0.11956158434217912 -0.720743997824583 … -0.11956158434217912 -0.720743997824583;;; -1.4199001649488927 -1.0869729837454651 … -1.4199001649488927 -1.0869729837454651; -1.2897012151421563 -1.1052396934185267 … -1.1804995812640409 -0.9024753354508308; … ; -1.4199001649488927 -1.3504876501454939 … -1.4771639752382986 -1.0869729837454651; -1.2897012151421563 -0.9024753354508308 … -1.2897012151421563 -0.9024753354508308]
    - [-0.15114605561573108 -0.7629660533384574 … -0.15114605561573108 -0.7629660533384574; -0.17035942282706104 -0.3035223637128313 … 0.201489026168355 -0.7867408714068179; … ; -0.15114605561573108 -0.23660175169771755 … 0.1910924097524803 -0.7629660533384574; -0.17035942282706104 -0.7867408714068179 … -0.17035942282706104 -0.7867408714068179;;; -1.3982457674622089 -1.037287070103049 … -1.3982457674622089 -1.037287070103049; -1.2740884031555848 -1.0835433984703027 … -1.150464010485413 -0.8519285538097519; … ; -1.3982457674622089 -1.3339782227758397 … -1.4587472110645654 -1.037287070103049; -1.2740884031555848 -0.8519285538097519 … -1.2740884031555848 -0.8519285538097519]
    +u: 204-element Vector{Array{Float64, 3}}:
    + [0.0657005977508805 -0.46178960323405305 … 0.0657005977508805 -0.46178960323405305; -0.29671655541944714 -0.6751625511510397 … -0.29671655541944714 -0.6751625511510397; … ; 0.0657005977508805 -0.46178960323405305 … 0.0657005977508805 -0.46178960323405305; -0.29671655541944714 -0.6751625511510397 … -0.29671655541944714 -0.6751625511510397;;; 0.44178650328015645 0.6858371719768287 … 0.44178650328015645 0.6858371719768287; 0.6885635783211306 0.9019365262381107 … 0.6885635783211306 0.9019365262381107; … ; 0.44178650328015645 0.6858371719768287 … 0.44178650328015645 0.6858371719768287; 0.6885635783211306 0.9019365262381107 … 0.6885635783211306 0.9019365262381107]
    + [0.10508365809857242 -0.4151166658241937 … 0.10508365809857242 -0.4151166658241937; -0.26542635844527523 -0.6480256803931433 … -0.2762367848002056 -0.6350966627306861; … ; 0.10508365809857242 -0.42630326330333673 … 0.0958992233884258 -0.4151166658241937; -0.26542635844527523 -0.6350966627306861 … -0.26542635844527523 -0.6350966627306861;;; 0.4253979590103611 0.685483682807895 … 0.4253979590103611 0.685483682807895; 0.6755414259048258 0.9287639575248837 … 0.7070415404350842 0.9212619492755708; … ; 0.4253979590103611 0.7002697039880594 … 0.45890023630961585 0.685483682807895; 0.6755414259048258 0.9212619492755708 … 0.6755414259048258 0.9212619492755708]
    + [0.1241478218087033 -0.3929881372489748 … 0.1241478218087033 -0.3929881372489748; -0.25073137475113755 -0.6364067141130287 … -0.2670980496661108 -0.6167849656697022; … ; 0.1241478218087033 -0.4105067325565303 … 0.10949734690268909 -0.3929881372489748; -0.25073137475113755 -0.6167849656697022 … -0.25073137475113755 -0.6167849656697022;;; 0.41724563080337473 0.6853699779780761 … 0.41724563080337473 0.6853699779780761; 0.6683134884111677 0.9413941876448982 … 0.7154942060884073 0.9292960050685825; … ; 0.41724563080337473 0.7077642554434797 … 0.46729446888215564 0.6853699779780761; 0.6683134884111677 0.9292960050685825 … 0.6683134884111677 0.9292960050685825]
    + [0.15592766308666817 -0.35670101381030794 … 0.15592766308666817 -0.35670101381030794; -0.22677084776148035 -0.6189002847950568 … -0.25276676778988794 -0.5876193256254362; … ; 0.15592766308666817 -0.3859606097593504 … 0.1308558585256516 -0.35670101381030794; -0.22677084776148035 -0.5876193256254362 … -0.22677084776148035 -0.5876193256254362;;; 0.4033514875156646 0.6851038391419311 … 0.4033514875156646 0.6851038391419311; 0.6550621306180234 0.9617752484760846 … 0.7288355734403862 0.940824698067689; … ; 0.4033514875156646 0.7207432202119071 … 0.48131272172605316 0.6851038391419311; 0.6550621306180234 0.940824698067689 … 0.6550621306180234 0.940824698067689]
    + [0.18393668004949645 -0.3252824793032744 … 0.18393668004949645 -0.3252824793032744; -0.2061158077915117 -0.605135979844783 … -0.24090644121751478 -0.5631534762823838; … ; 0.18393668004949645 -0.36599946997720806 … 0.14845993136139088 -0.3252824793032744; -0.2061158077915117 -0.5631534762823838 … -0.2061158077915117 -0.5631534762823838;;; 0.39080896304182966 0.6846847916503316 … 0.39080896304182966 0.6846847916503316; 0.6422537978024514 0.9789438261026857 … 0.7398073162351184 0.9491191475659925; … ; 0.39080896304182966 0.7325054853131627 … 0.4936027234603247 0.6846847916503316; 0.6422537978024514 0.9491191475659925 … 0.6422537978024514 0.9491191475659925]
    + [0.21754709879846393 -0.288196796069032 … 0.21754709879846393 -0.288196796069032; -0.18178407055780385 -0.5903389547459356 … -0.22742471892408855 -0.5351040570757701; … ; 0.21754709879846393 -0.3438758719644673 … 0.1682545026029798 -0.288196796069032; -0.18178407055780385 -0.5351040570757701 … -0.18178407055780385 -0.5351040570757701;;; 0.37542239460147797 0.6838407372342077 … 0.37542239460147797 0.6838407372342077; 0.625646198125405 0.9984703617618144 … 0.7520072789803539 0.956875322629214; … ; 0.37542239460147797 0.7468085939437812 … 0.508169955156378 0.6838407372342077; 0.625646198125405 0.956875322629214 … 0.625646198125405 0.956875322629214]
    + [0.2517644315667876 -0.2510489798819866 … 0.2517644315667876 -0.2510489798819866; -0.15740701404420815 -0.5768681528721296 … -0.2143509894610831 -0.50778915727536; … ; 0.2517644315667876 -0.3231573470541952 … 0.187096033329786 -0.2510489798819866; -0.15740701404420815 -0.50778915727536 … -0.15740701404420815 -0.50778915727536;;; 0.359421105360309 0.6825094453029721 … 0.359421105360309 0.6825094453029721; 0.6075180742834505 1.0170838011072034 … 0.7633729952892768 0.9624474399026997; … ; 0.359421105360309 0.7613928194996743 … 0.5227159953013423 0.6825094453029721; 0.6075180742834505 0.9624474399026997 … 0.6075180742834505 0.9624474399026997]
    + [0.28931131157749934 -0.21089704909833185 … 0.28931131157749934 -0.21089704909833185; -0.130992744235903 -0.5635735249103916 … -0.2005661189336766 -0.479004319370875; … ; 0.28931131157749934 -0.3022399050697672 … 0.206449029719436 -0.21089704909833185; -0.130992744235903 -0.479004319370875 … -0.130992744235903 -0.479004319370875;;; 0.34152297827772793 0.680425708364815 … 0.34152297827772793 0.680425708364815; 0.5864006138472054 1.036007412650382 … 0.7746737928097651 0.9660441565022179; … ; 0.34152297827772793 0.7772387811463938 … 0.5382767313536597 0.680425708364815; 0.5864006138472054 0.9660441565022179 … 0.5864006138472054 0.9660441565022179]
    + [0.32871871888720483 -0.16934281263560214 … 0.32871871888720483 -0.16934281263560214; -0.10352669378970476 -0.5509315902550779 … -0.18654629098805736 -0.4498702836520243; … ; 0.32871871888720483 -0.2820420403849458 … 0.2254762160519092 -0.16934281263560214; -0.10352669378970476 -0.4498702836520243 … -0.10352669378970476 -0.4498702836520243;;; 0.3224154042727793 0.6774858504104891 … 0.3224154042727793 0.6774858504104891; 0.5630606239332288 1.0541841942728225 … 0.7852946444026969 0.9671985740264187; … ; 0.3224154042727793 0.7935311171092936 … 0.5541061496562956 0.6774858504104891; 0.5630606239332288 0.9671985740264187 … 0.5630606239332288 0.9671985740264187]
    + [0.37075720835548737 -0.12557069044081098 … 0.37075720835548737 -0.12557069044081098; -0.07440002612503235 -0.5385623982276309 … -0.1719243514619671 -0.41973786120245304; … ; 0.37075720835548737 -0.26217513977719487 … 0.24453144804547416 -0.12557069044081098; -0.07440002612503235 -0.41973786120245304 … -0.07440002612503235 -0.41973786120245304;;; 0.30173707668705024 0.6734710804676622 … 0.30173707668705024 0.6734710804676622; 0.5370511513252602 1.0717162458898755 … 0.795328987439447 0.9657206624363858; … ; 0.30173707668705024 0.8103888188649462 … 0.5703936018276079 0.6734710804676622; 0.5370511513252602 0.9657206624363858 … 0.5370511513252602 0.9657206624363858]
     
    - [-2.6008269440350635 -2.6707555983699267 … -2.6008269440350635 -2.6707555983699267; -1.7530707144997295 0.09689754026634612 … 0.08931652432247436 -1.5878474701844734; … ; -2.6008269440350635 0.10720478554028837 … 0.10270212910901891 -2.6707555983699267; -1.7530707144997295 -1.5878474701844734 … -1.7530707144997295 -1.5878474701844734;;; -0.33445088457939787 0.7427051143709156 … -0.33445088457939787 0.7427051143709156; -0.3997760803661724 0.49976125856316267 … 0.48945401328925586 1.0678539731154677; … ; -0.33445088457939787 0.49375215219778495 … 0.48034789830989794 0.7427051143709156; -0.3997760803661724 1.0678539731154677 … -0.3997760803661724 1.0678539731154677]
    - [-2.601725136184899 -2.670873685384534 … -2.601725136184899 -2.670873685384534; -1.7563563398627091 0.10432541979422275 … 0.09676710645672201 -1.5905130283970155; … ; -2.601725136184899 0.11653309235413584 … 0.11187293004895257 -2.670873685384534; -1.7563563398627091 -1.5905130283970155 … -1.7563563398627091 -1.5905130283970155;;; -0.3522441846097827 0.7271704846904127 … -0.3522441846097827 0.7271704846904127; -0.41329173959034654 0.49289307311066627 … 0.48068540055078907 1.056633316058722; … ; -0.3522441846097827 0.48307344888160403 … 0.46792424402653476 0.7271704846904127; -0.41329173959034654 1.056633316058722 … -0.41329173959034654 1.056633316058722]
    - [-2.6025523523428413 -2.67071744709628 … -2.6025523523428413 -2.67071744709628; -1.7595072686400752 0.11170467403179123 … 0.10398180790626674 -1.592875884389524; … ; -2.6025523523428413 0.12573523533040898 … 0.12069919884062454 -2.67071744709628; -1.7595072686400752 -1.592875884389524 … -1.7595072686400752 -1.592875884389524;;; -0.3716771235605255 0.7097434315940944 … -0.3716771235605255 0.7097434315940944; -0.42842794202681916 0.4845376104979045 … 0.470507049199323 1.04360335395341; … ; -0.3716771235605255 0.4708320861058763 … 0.4540567364223937 0.7097434315940944; -0.42842794202681916 1.04360335395341 … -0.42842794202681916 1.04360335395341]
    - [-2.6033919710125044 -2.6703849125869374 … -2.6033919710125044 -2.6703849125869374; -1.7625884932762157 0.11894958866689538 … 0.1108737142172876 -1.595010124997473; … ; -2.6033919710125044 0.1346989359254884 … 0.12906953547026517 -2.6703849125869374; -1.7625884932762157 -1.595010124997473 … -1.7625884932762157 -1.595010124997473;;; -0.3926613103435367 0.6904669028807235 … -0.3926613103435367 0.6904669028807235; -0.44514969973593976 0.4746627267546408 … 0.45891337949608374 1.0287556320125302; … ; -0.3926613103435367 0.4570355653834647 … 0.43877942685883076 0.6904669028807235; -0.44514969973593976 1.0287556320125302 … -0.44514969973593976 1.0287556320125302]
    - [-2.6043280594687412 -2.6699787184933967 … -2.6043280594687412 -2.6699787184933967; -1.7656684357322596 0.12596507497113008 … 0.11734810375345404 -1.5969962068782388; … ; -2.6043280594687412 0.14330182663680066 … 0.13686518330313233 -2.6699787184933967; -1.7656684357322596 -1.5969962068782388 … -1.7656684357322596 -1.5969962068782388;;; -0.4150660872718007 0.6694280502383273 … -0.4150660872718007 0.6694280502383273; -0.4633875966731134 0.4632574290511748 … 0.44592067738554064 1.0121162640308192; … ; -0.4150660872718007 0.44171996769365324 … 0.4221548844285295 0.6694280502383273; -0.4633875966731134 1.0121162640308192 … -0.4633875966731134 1.0121162640308192]
    - [-2.60544291809869 -2.669603929032186 … -2.60544291809869 -2.669603929032186; -1.7688174940989976 0.1326468336290909 … 0.12330344096559884 -1.5989199688668567; … ; -2.60544291809869 0.15141245391774916 … 0.14396194354418868 -2.669603929032186; -1.7688174940989976 -1.5989199688668567 … -1.7688174940989976 -1.5989199688668567;;; -0.4387165340878582 0.6467626475342549 … -0.4387165340878582 0.6467626475342549; -0.48303489816549916 0.4503361141495976 … 0.4315704938609758 0.9937508037134614; … ; -0.4387165340878582 0.42495415887972643 … 0.4042773366315602 0.6467626475342549; -0.48303489816549916 0.9937508037134614 … -0.48303489816549916 0.9937508037134614]
    - [-2.6068139332770977 -2.6693650234422095 … -2.6068139332770977 -2.6693650234422095; -1.77210571029155 0.13888179342208257 … 0.12863269582615977 -1.6008706855176826; … ; -2.6068139332770977 0.15889167346612212 … 0.15023250924374582 -2.6693650234422095; -1.77210571029155 -1.6008706855176826 … -1.77210571029155 -1.6008706855176826;;; -0.463391491674076 0.6226597041634463 … -0.463391491674076 0.6226597041634463; -0.5039442703140851 0.4359437228387498 … 0.4159338427947474 0.973769704494905; … ; -0.463391491674076 0.40684472968608854 … 0.385276367047268 0.6226597041634463; -0.5039442703140851 0.973769704494905 … -0.5039442703140851 0.973769704494905]
    - [-2.608510095624186 -2.6693620397707933 … -2.608510095624186 -2.6693620397707933; -1.7756002089136793 0.14455026801749912 … 0.13322622135795462 -1.6029384976802836; … ; -2.608510095624186 0.1655961649508638 … 0.15555064935246116 -2.6693620397707933; -1.7756002089136793 -1.6029384976802836 … -1.7756002089136793 -1.6029384976802836;;; -0.4888266014764763 0.5973613484526877 … -0.4888266014764763 0.5973613484526877; -0.5259282049009588 0.4201590976985429 … 0.3991132007652158 0.952330459812817; … ; -0.4888266014764763 0.3875380448857541 … 0.365317344444688 0.5973613484526877; -0.5259282049009588 0.952330459812817 … -0.5259282049009588 0.952330459812817]
    - [-2.610391429817098 -2.669642952553338 … -2.610391429817098 -2.669642952553338; -1.7790232145791847 0.14912668082348163 … 0.1366855419132724 -1.605003300278285; … ; -2.610391429817098 0.17091984605417793 … 0.15947240646934602 -2.669642952553338; -1.7790232145791847 -1.605003300278285 … -1.7790232145791847 -1.605003300278285;;; -0.512459536652462 0.5734647082450985 … -0.512459536652462 0.5734647082450985; -0.5467494943080825 0.4046273175965032 … 0.3828341523658447 0.9316537922498789; … ; -0.512459536652462 0.3690211337021703 … 0.3464251477003929 0.5734647082450985; -0.5467494943080825 0.9316537922498789 … -0.5467494943080825 0.9316537922498789]

    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)
    + [3.63658584761423 3.87080429663847 … 3.63658584761423 3.87080429663847; 2.6792423852120266 -0.1225160105596109 … -0.10545067559959928 2.802014516816849; … ; 3.63658584761423 -0.12912223894278943 … -0.11638439519314522 3.87080429663847; 2.6792423852120266 2.802014516816849 … 2.6792423852120266 2.802014516816849;;; -3.7994309843333527 -4.208021775307386 … -3.7994309843333527 -4.208021775307386; -3.5271355479570685 0.0368409287211739 … 0.04344715710435443 -4.001965753158543; … ; -3.7994309843333527 0.014947618503139795 … 0.018108013501957024 -4.208021775307386; -3.5271355479570685 -4.001965753158543 … -3.5271355479570685 -4.001965753158543]
    + [3.6422895086948026 3.8754147141679445 … 3.6422895086948026 3.8754147141679445; 2.6861592819208227 -0.1102895726892691 … -0.09162669561786173 2.807686775420112; … ; 3.6422895086948026 -0.1177386254998089 … -0.10346473297439138 3.8754147141679445; 2.6861592819208227 2.807686775420112 … 2.6861592819208227 2.807686775420112;;; -3.7931619925313242 -4.202317958546451 … -3.7931619925313242 -4.202317958546451; -3.520066837125464 0.03622302471012847 … 0.04367207752067032 -3.995334854799291; … ; -3.7931619925313242 0.013948554503623277 … 0.01797602011337264 -4.202317958546451; -3.520066837125464 -3.995334854799291 … -3.520066837125464 -3.995334854799291]
    + [3.6479937698880462 3.880149347154071 … 3.6479937698880462 3.880149347154071; 2.6930364840785233 -0.09783809929702272 … -0.07776985332212666 2.813469779247899; … ; 3.6479937698880462 -0.10613939385057908 … -0.09048860694780399 3.880149347154071; 2.6930364840785233 2.813469779247899 … 2.6930364840785233 2.813469779247899;;; -3.787054128421903 -4.19668244159331 … -3.787054128421903 -4.19668244159331; -3.5132283960223627 0.03581805063493754 … 0.04411934518849587 -3.988821699344505; … ; -3.787054128421903 0.013198507566411128 … 0.01809997695775903 -4.19668244159331; -3.5132283960223627 -3.988821699344505 … -3.5132283960223627 -3.988821699344505]
    + [3.653648807156927 3.884965007263431 … 3.653648807156927 3.884965007263431; 2.699812752232953 -0.0852337491691666 … -0.0639660324794772 2.819309423233572; … ; 3.653648807156927 -0.09438466632096755 … -0.07752884716293337 3.884965007263431; 2.699812752232953 2.819309423233572 … 2.699812752232953 2.819309423233572;;; -3.781138941703361 -4.191145491275563 … -3.781138941703361 -4.191145491275563; -3.506658733142349 0.03562880939265571 … 0.044779726544458685 -3.9824637292406186; … ; -3.781138941703361 0.012699036170763192 … 0.01847153724798791 -4.191145491275563; -3.506658733142349 -3.9824637292406186 … -3.506658733142349 -3.9824637292406186]
    + [3.659205979536996 3.889816751078532 … 3.659205979536996 3.889816751078532; 2.7064289741897443 -0.07255414846164322 … -0.05030101815559454 2.825149688747564; … ; 3.659205979536996 -0.08253980267461902 … -0.06465938047302927 3.889816751078532; 2.7064289741897443 2.825149688747564 … 2.7064289741897443 2.825149688747564;;; -3.775446647182436 -4.185737271493904 … -3.775446647182436 -4.185737271493904; -3.5003941254461775 0.03565465237106255 … 0.04564030658404039 -3.976298023468234; … ; -3.775446647182436 0.012448758810299665 … 0.019078978590910903 -4.185737271493904; -3.5003941254461775 -3.976298023468234 … -3.5003941254461775 -3.976298023468234]
    + [3.664618686922103 3.8946587976801346 … 3.664618686922103 3.8946587976801346; 2.7128292402547007 -0.05988085958027444 … -0.0368592383448486 2.8309339928553903; … ; 3.664618686922103 -0.07067439363603704 … -0.05195426801286364 3.8946587976801346; 2.7128292402547007 2.8309339928553903 … 2.7128292402547007 2.8309339928553903;;; -3.7700058000739514 -4.180487610093032 … -3.7700058000739514 -4.180487610093032; -3.4944680861051314 0.0358913760423405 … 0.046684910098105145 -3.97036081328936; … ; -3.7700058000739514 0.012443154773298683 … 0.019907432510493542 -4.180487610093032; -3.4944680861051314 -3.97036081328936 … -3.4944680861051314 -3.97036081328936]
    + [3.669843653298168 3.8994459366486214 … 3.669843653298168 3.8994459366486214; 2.7189623589035268 -0.04729660729185216 … -0.023721384830430667 2.836607060649013; … ; 3.669843653298168 -0.05886002218388251 … -0.03948559259932328 3.8994459366486214; 2.7189623589035268 2.836607060649013 … 2.7189623589035268 2.836607060649013;;; -3.7648424333013457 -4.175425182695787 … -3.7648424333013457 -4.175425182695787; -3.4889102867335025 0.03633131410140703 … 0.04789472899343934 -3.964686349775314; … ; -3.7648424333013457 0.012674494032257701 … 0.020939295360611808 -4.175425182695787; -3.4889102867335025 -3.964686349775314 … -3.4889102867335025 -3.964686349775314]
    + [3.674841850453165 3.904134731547883 … 3.674841850453165 3.904134731547883; 2.724782882886711 -0.03488300018573105 … -0.010962759787617392 2.8421164708795263; … ; 3.674841850453165 -0.04716839537064069 … -0.027321933899741135 3.904134731547883; 2.724782882886711 2.8421164708795263 … 2.724782882886711 2.8421164708795263;;; -3.759979480483631 -4.170576881038018 … -3.759979480483631 -4.170576881038018; -3.4837458594845088 0.036963640271927826 … 0.049249035456839486 -3.959306024454923; … ; -3.759979480483631 0.01313197193049889 … 0.022154757023338023 -4.170576881038018; -3.4837458594845088 -3.959306024454923 … -3.4837458594845088 -3.959306024454923]
    + [3.6785458556973847 3.9076829270352 … 3.6785458556973847 3.9076829270352; 2.7290632367754313 -0.02540851001379519 … -0.0013580255384598883 2.8462520790618577; … ; 3.6785458556973847 -0.0382162612055059 … -0.01812500342619521 3.9076829270352; 2.7290632367754313 2.8462520790618577 … 2.7290632367754313 2.8462520790618577;;; -3.7564219120903566 -4.1669743965658705 … -3.7564219120903566 -4.1669743965658705; -3.4800187689780997 0.037579010665183425 … 0.05038676185689626 -3.9553476091080677; … ; -3.7564219120903566 0.013634784336917961 … 0.023211947861768473 -4.1669743965658705; -3.4800187689780997 -3.9553476091080677 … -3.4800187689780997 -3.9553476091080677]

    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

    • 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

    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

    • 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

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

    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

    • 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

    + \ No newline at end of file diff --git a/dev/manual/setup.html b/dev/manual/setup.html index 7fe3fb556..7af6d504a 100644 --- a/dev/manual/setup.html +++ b/dev/manual/setup.html @@ -9,11 +9,11 @@ - + - + - + @@ -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/dev/manual/solver.html b/dev/manual/solver.html index 4c9b7558d..cad44a4b7 100644 --- a/dev/manual/solver.html +++ b/dev/manual/solver.html @@ -9,11 +9,11 @@ - + - + - + @@ -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,7 +41,7 @@
         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"}}
     processor(
    @@ -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"#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

    + \ No newline at end of file diff --git a/dev/manual/spatial.html b/dev/manual/spatial.html index 5c38e2e88..3969032e9 100644 --- a/dev/manual/spatial.html +++ b/dev/manual/spatial.html @@ -9,9 +9,9 @@ - + - + @@ -24,7 +24,7 @@
    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/dev/manual/temperature.html b/dev/manual/temperature.html index 962ce6175..0b7810706 100644 --- a/dev/manual/temperature.html +++ b/dev/manual/temperature.html @@ -9,11 +9,11 @@ - + - + - + @@ -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/dev/manual/time.html b/dev/manual/time.html index 25ce43936..fccc586f2 100644 --- a/dev/manual/time.html +++ b/dev/manual/time.html @@ -9,11 +9,11 @@ - + - + - + @@ -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/dev/manual/utils.html b/dev/manual/utils.html index 119942981..d6c2e8b2a 100644 --- a/dev/manual/utils.html +++ b/dev/manual/utils.html @@ -9,11 +9,11 @@ - + - + - + @@ -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/dev/references.html b/dev/references.html index 30023bbb0..ac861cfcf 100644 --- a/dev/references.html +++ b/dev/references.html @@ -9,9 +9,9 @@ - + - + @@ -24,7 +24,7 @@
    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