Skip to content

A library of useful callbacks for hybrid scientific machine learning (SciML) with augmented differential equation solvers

License

Notifications You must be signed in to change notification settings

SciML/DiffEqCallbacks.jl

Repository files navigation

DiffEqCallbacks.jl: Prebuilt Callbacks for extending the solvers of DifferentialEquations.jl

Join the chat at https://julialang.zulipchat.com #sciml-bridged Global Docs

codecov Build Status

ColPrac: Contributor's Guide on Collaborative Practices for Community Packages SciML Code Style

DifferentialEquations.jl has an expressive callback system which allows for customizable transformations of the solver behavior. DiffEqCallbacks.jl is a library of pre-built callbacks which makes it easy to transform the solver into a domain-specific simulation tool.

Tutorials and Documentation

For information on using the package, see the stable documentation. Use the in-development documentation for the version of the documentation, which contains the unreleased features.

Manifold Projection Example

Here we solve the harmonic oscillator:

using OrdinaryDiffEq

u0 = ones(2)
function f(du, u, p, t)
    du[1] = u[2]
    du[2] = -u[1]
end
prob = ODEProblem(f, u0, (0.0, 100.0))

However, this problem is supposed to conserve energy, and thus we define our manifold to conserve the sum of squares:

function g(resid, u, p, t)
    resid[1] = u[2]^2 + u[1]^2 - 2
end

To build the callback, we call

using DiffEqCallbacks, ADTypes
cb = ManifoldProjection(g, autodiff = AutoForwardDiff(), resid_prototype = zeros(1))

Using this callback, the Runge-Kutta method Vern7 conserves energy. Note that the standard saving occurs after the step and before the callback, and thus we set save_everystep=false to turn off all standard saving and let the callback save after the projection is applied.

using Test
sol = solve(prob, Vern7(), save_everystep = false, callback = cb)
@test sol[end][1]^2 + sol[end][2]^2  2

manifold_projection

About

A library of useful callbacks for hybrid scientific machine learning (SciML) with augmented differential equation solvers

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Contributors 47

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy