Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork70
Linear operators for discretizations of differential equations and scientific machine learning (SciML)
License
SciML/DiffEqOperators.jl
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
- For automated finite difference discretization of symbolically-defined PDEs, seeMethodOfLines.jl.
- For MatrixFreeOperators, and other non-derivative operators, seeSciMLOperators.jl.
- For VecJacOperators and JacVecOperators, seeSparseDiffTools.jl.
DiffEqOperators.jl is a package for finite difference discretization of partialdifferential equations. It allows building lazy operators for high order non-uniform finite differences in an arbitrary number of dimensions, including vector calculus operators.
For automatic Method of Lines discretization of PDEs, better suited to nonlinear systems of equations and more complex boundary conditions, please seeMethodOfLines.jl
For the operators, both centered andupwind 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 aconvolution routine fromNNlib.jl. Care is taken to give efficiency by avoidingunnecessary allocations, using purpose-built stencil compilers, allowing GPUsand parallelism, etc. Any operator can be concretized as anArray, aBandedMatrix or a sparse matrix.
For information on using the package,see the stable documentation. Use thein-development documentation for the version ofthe documentation which contains the unreleased features.
using DiffEqOperators, OrdinaryDiffEq# # Heat Equation# This example demonstrates how to combine `OrdinaryDiffEq` with `DiffEqOperators` to solve a time-dependent PDE.# We consider the heat equation on the unit interval, with Dirichlet boundary conditions:# ∂ₜu = Δu# u(x=0,t) = a# u(x=1,t) = b# u(x, t=0) = u₀(x)## For `a = b = 0` and `u₀(x) = sin(2πx)` a solution is given by:u_analytic(x, t)=sin(2*π*x)*exp(-t*(2*π)^2)nknots=100h=1.0/(nknots+1)knots=range(h, step=h, length=nknots)ord_deriv=2ord_approx=2const Δ=CenteredDifference(ord_deriv, ord_approx, h, nknots)const bc=Dirichlet0BC(Float64)t0=0.0t1=0.03u0=u_analytic.(knots, t0)step(u,p,t)= Δ*bc*uprob=ODEProblem(step, u0, (t0, t1))alg=KenCarp4()sol=solve(prob, alg)
About
Linear operators for discretizations of differential equations and scientific machine learning (SciML)
Topics
Resources
License
Code of conduct
Contributing
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Packages0
Uh oh!
There was an error while loading.Please reload this page.