DiffEqOperators.jl

Warn

This package is in the process of being deprecated. See below for alternatives

Note

For automated finite difference discretization of symbolically-defined PDEs, see MethodOfLines.jl.

Note

For MatrixFreeOperators, and other non-derivative operators, see SciMLOperators.jl.

Note

For VecJacOperators and JacVecOperators, see SparseDiffTools.jl.

DiffEqOperators.jl is a package for finite difference discretization of partial differential equations. It is for building fast lazy operators for high order non-uniform finite differences.

Warn

This library is not complete, especially for higher dimensional operators. Use with caution.

For the operators, both centered and upwind operators are provided, for domains of any dimension, arbitrarily spaced grids, and for any order of accuracy. The cases of 1, 2, and 3 dimensions with an evenly spaced grid are optimized with a convolution routine from NNlib.jl. Care is taken to give efficiency by avoiding unnecessary allocations, using purpose-built stencil compilers, allowing GPUs and parallelism, etc. Any operator can be concretized as an Array, a BandedMatrix or a sparse matrix.

Reproducibility

The documentation of this SciML package was built using these direct dependencies,
Status `~/work/DiffEqOperators.jl/DiffEqOperators.jl/docs/Project.toml`
  [9fdde737] DiffEqOperators v4.45.0 `~/work/DiffEqOperators.jl/DiffEqOperators.jl`
  [e30172f5] Documenter v0.27.24
and using this machine and Julia version.
Julia Version 1.9.1
Commit 147bdf428cd (2023-06-07 08:27 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 2 × Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-14.0.6 (ORCJIT, broadwell)
  Threads: 1 on 2 virtual cores
A more complete overview of all dependencies and their versions is also provided.
Status `~/work/DiffEqOperators.jl/DiffEqOperators.jl/docs/Manifest.toml`
  [47edcb42] ADTypes v0.1.3
  [a4c015fc] ANSIColoredPrinters v0.0.1
  [79e6a3ab] Adapt v3.6.2
  [ec485272] ArnoldiMethod v0.2.0
  [4fba245c] ArrayInterface v7.4.8
  [30b0a656] ArrayInterfaceCore v0.1.29
⌅ [4c555306] ArrayLayouts v0.8.18
  [a9b6321e] Atomix v0.1.0
⌃ [aae01518] BandedMatrices v0.17.18
  [62783981] BitTwiddlingConvenienceFunctions v0.1.5
⌃ [8e7c35d0] BlockArrays v0.16.25
⌅ [ffab5731] BlockBandedMatrices v0.11.10
  [fa961155] CEnum v0.4.2
  [2a0fbf3d] CPUSummary v0.2.3
  [d360d2e6] ChainRulesCore v1.16.0
  [fb6a15b2] CloseOpenIntervals v0.1.12
  [38540f10] CommonSolve v0.2.4
  [bbf7d656] CommonSubexpressions v0.3.0
  [34da2185] Compat v4.6.1
  [b152e2b5] CompositeTypes v0.1.3
  [187b0558] ConstructionBase v1.5.2
  [adafc99b] CpuId v0.3.1
  [9a962f9c] DataAPI v1.15.0
  [864edb3b] DataStructures v0.18.13
  [e2d170a0] DataValueInterfaces v1.0.0
  [2b5f629d] DiffEqBase v6.125.1
  [9fdde737] DiffEqOperators v4.45.0 `~/work/DiffEqOperators.jl/DiffEqOperators.jl`
  [163ba53b] DiffResults v1.1.0
  [b552c78f] DiffRules v1.15.1
  [ffbed154] DocStringExtensions v0.9.3
  [e30172f5] Documenter v0.27.24
  [5b8099bc] DomainSets v0.6.6
  [4e289a0a] EnumX v1.0.4
  [e2ba6199] ExprTools v0.1.9
  [7034ab61] FastBroadcast v0.2.5
⌅ [1a297f60] FillArrays v0.13.11
  [6a86dc24] FiniteDiff v2.21.1
  [f6369f11] ForwardDiff v0.10.35
  [069b7b12] FunctionWrappers v1.1.3
  [77dc65aa] FunctionWrappersWrappers v0.1.3
  [46192b85] GPUArraysCore v0.1.5
  [86223c79] Graphs v1.8.0
  [3e5b6fbb] HostCPUFeatures v0.1.15
  [b5f81e59] IOCapture v0.2.3
  [615f187c] IfElse v0.1.1
  [d25df0c9] Inflate v0.1.3
  [8197267c] IntervalSets v0.7.4
  [92d709cd] IrrationalConstants v0.2.2
  [82899510] IteratorInterfaceExtensions v1.0.0
  [692b3bcd] JLLWrappers v1.4.1
  [682c06a0] JSON v0.21.4
  [63c18a36] KernelAbstractions v0.9.4
  [929cbde3] LLVM v5.2.0
  [10f19ff3] LayoutPointers v0.1.14
  [50d2b5c4] Lazy v0.15.1
⌅ [5078a376] LazyArrays v0.22.18
⌅ [d7e5e226] LazyBandedMatrices v0.7.17
  [2ab3a3ac] LogExpFunctions v0.3.24
  [bdcacae8] LoopVectorization v0.12.159
  [1914dd2f] MacroTools v0.5.10
  [d125e4d3] ManualMemory v0.1.8
⌅ [a3b82374] MatrixFactorizations v0.9.6
  [46d2c3a1] MuladdMacro v0.2.4
  [872c559c] NNlib v0.9.0
  [77ba4419] NaNMath v1.0.2
  [6fe1bfb0] OffsetArrays v1.12.9
  [bac558e1] OrderedCollections v1.6.0
  [d96e819e] Parameters v0.12.3
  [69de0a69] Parsers v2.7.0
  [f517fe37] Polyester v0.7.3
  [1d0040c9] PolyesterWeave v0.2.1
  [d236fae5] PreallocationTools v0.4.12
  [aea7be01] PrecompileTools v1.1.2
  [21216c6a] Preferences v1.4.0
  [3cdcf5f2] RecipesBase v1.3.4
  [731186ca] RecursiveArrayTools v2.38.5
  [189a3867] Reexport v1.2.2
  [ae029012] Requires v1.3.0
  [7e49a35a] RuntimeGeneratedFunctions v0.5.11
  [94e857df] SIMDTypes v0.1.0
  [476501e8] SLEEFPirates v0.6.39
  [0bca4576] SciMLBase v1.92.5
  [c0aeaf25] SciMLOperators v0.2.12
  [efcf1570] Setfield v1.1.1
  [699a6c99] SimpleTraits v0.9.4
  [66db9d55] SnoopPrecompile v1.0.3
  [47a9eef4] SparseDiffTools v2.4.0
  [276daf66] SpecialFunctions v2.2.0
  [aedffcd0] Static v0.8.7
  [0d7ed370] StaticArrayInterface v1.4.0
  [90137ffa] StaticArrays v1.5.26
  [1e83bf80] StaticArraysCore v1.4.0
  [7792a7ef] StrideArraysCore v0.4.15
  [2efcf032] SymbolicIndexingInterface v0.2.2
  [3783bdb8] TableTraits v1.0.1
  [bd369af6] Tables v1.10.1
  [8290d209] ThreadingUtilities v0.5.1
  [410a4b4d] Tricks v0.1.7
  [781d530d] TruncatedStacktraces v1.3.0
  [3a884ed6] UnPack v1.0.2
  [013be700] UnsafeAtomics v0.2.1
  [d80eeb9a] UnsafeAtomicsLLVM v0.1.2
  [3d5dd08c] VectorizationBase v0.21.64
  [19fa3120] VertexSafeGraphs v0.2.0
  [700de1a5] ZygoteRules v0.2.3
  [dad2f222] LLVMExtra_jll v0.0.22+0
  [efe28fd5] OpenSpecFun_jll v0.5.5+0
  [0dad84c5] ArgTools v1.1.1
  [56f22d72] Artifacts
  [2a0f44e3] Base64
  [ade2ca70] Dates
  [8ba89e20] Distributed
  [f43a241f] Downloads v1.6.0
  [7b1f6079] FileWatching
  [9fa8497b] Future
  [b77e0a4c] InteractiveUtils
  [4af54fe1] LazyArtifacts
  [b27032c2] LibCURL v0.6.3
  [76f85450] LibGit2
  [8f399da3] Libdl
  [37e2e46d] LinearAlgebra
  [56ddb016] Logging
  [d6f4376e] Markdown
  [a63ad114] Mmap
  [ca575930] NetworkOptions v1.2.0
  [44cfe95a] Pkg v1.9.0
  [de0858da] Printf
  [3fa0cd96] REPL
  [9a3f8284] Random
  [ea8e919c] SHA v0.7.0
  [9e88b42a] Serialization
  [1a1011a3] SharedArrays
  [6462fe0b] Sockets
  [2f01184e] SparseArrays
  [10745b16] Statistics v1.9.0
  [4607b0f0] SuiteSparse
  [fa267f1f] TOML v1.0.3
  [a4e569a6] Tar v1.10.0
  [8dfed614] Test
  [cf7118a7] UUIDs
  [4ec0a83e] Unicode
  [e66e0078] CompilerSupportLibraries_jll v1.0.2+0
  [deac9b47] LibCURL_jll v7.84.0+0
  [29816b5a] LibSSH2_jll v1.10.2+0
  [c8ffd9c3] MbedTLS_jll v2.28.2+0
  [14a3606d] MozillaCACerts_jll v2022.10.11
  [4536629a] OpenBLAS_jll v0.3.21+4
  [05823500] OpenLibm_jll v0.8.1+0
  [bea87d4a] SuiteSparse_jll v5.10.1+6
  [83775a58] Zlib_jll v1.2.13+0
  [8e850b90] libblastrampoline_jll v5.8.0+0
  [8e850ede] nghttp2_jll v1.48.0+0
  [3f19e933] p7zip_jll v17.4.0+0
Info Packages marked with ⌃ and ⌅ have new versions available, but those with ⌅ are restricted by compatibility constraints from upgrading. To see why use `status --outdated -m`
You can also download the manifest file and the project file.