Buffers
Buffers are simply structs gathering containers that are used for in-place computations. They inherit from
DiffusionDefinition.AbstractBuffer — TypeAbstractBuffer{T} <: AbstractArray{T,1}Types inheriting from AbstractBuffer define buffers used for various in-place computations.
and don't require any special methods, except for functions b! and σ! (or for linear diffusions B! and β! in place of b!) having to specify explicitly how the drift and volatility are supposed to be saved inside the buffers. We provide implementation of standard buffers that should be sufficient for many problems:
DiffusionDefinition.StandardEulerBuffer — Typestruct StandardEulerBuffer{Tb,Tσ,Tdw} <: AbstractBuffer
b::Tb
y::Tb
σ::Tσ
dW::Tdw
endStandard buffer for the Euler-Maruyama simulations. The intermediary data is stored in b, σ, y and dW.
DiffusionDefinition.LinearDiffBuffer — Typestruct LinearDiffBuffer{Tb,Tσ,Tdw,TB} <: AbstractBuffer
b::Tb
y::Tb
σ::Tσ
dW::Tdw
B::TB
endA buffer for Euler-Maruyama simulations of linear diffusions. Almost the same as StandardEulerBuffer, but contains additional space for an intermediate construction of a matrix B.
If you call in-place methods multiple times, then make sure to pre-define a buffer and then pass it explicitly to solve!.