pub struct JumpKernel<const N: usize> {
pub dims: [Vec<JumpTransition>; N],
}Expand description
Per-dimension jump kernel for arbitrary-amplitude jump processes.
Each dimension carries an ordered list of JumpTransition pairs. For a
DiscreteJump dimension the kernel is exactly the unit up/down pair
[(+1, plus), (-1, minus)]; a Jump dimension may carry any finite set of
amplitudes and rates. The finite-difference operator and the BSDE forward
step both sum or sample over this kernel.
Fields§
§dims: [Vec<JumpTransition>; N]Jump transitions for each dimension.
Implementations§
Source§impl<const N: usize> JumpKernel<N>
impl<const N: usize> JumpKernel<N>
Sourcepub fn empty() -> Self
pub fn empty() -> Self
Builds an empty jump kernel (no jumps in any dimension).
§Examples
use solver::numeric::finite_difference::discretization::JumpKernel;
let kernel = JumpKernel::<2>::empty();
assert!(kernel.is_empty(0));
assert!(kernel.is_empty(1));Sourcepub fn from_transport(transport: &Transport<N>) -> Self
pub fn from_transport(transport: &Transport<N>) -> Self
Builds a jump kernel from a transport bundle, folding each dimension’s
plus/minus rates into the unit +1/-1 transitions used by the
DiscreteJump convention.
§Examples
use solver::numeric::finite_difference::discretization::{JumpKernel, Transport};
let t = Transport::<2>::new([1.5, 0.0], [0.0, 2.0], 0.0);
let kernel = JumpKernel::from_transport(&t);
assert_eq!(kernel.dims[0][0].amplitude, 1);
assert_eq!(kernel.dims[1][0].amplitude, -1);Sourcepub fn len(&self, dim: usize) -> usize
pub fn len(&self, dim: usize) -> usize
Number of jump transitions in dim.
§Examples
use solver::numeric::finite_difference::discretization::{JumpKernel, Transport};
let t = Transport::<2>::new([1.5, 0.0], [0.0, 2.0], 0.0);
let kernel = JumpKernel::from_transport(&t);
assert_eq!(kernel.len(0), 1);
assert_eq!(kernel.len(1), 1);Sourcepub fn is_empty(&self, dim: usize) -> bool
pub fn is_empty(&self, dim: usize) -> bool
Whether a dimension has no jump transitions.
§Examples
use solver::numeric::finite_difference::discretization::{JumpKernel, Transport};
let t = Transport::<2>::new([0.0, 0.0], [2.0, 0.0], 0.0);
let kernel = JumpKernel::from_transport(&t);
assert!(!kernel.is_empty(0));
assert!(kernel.is_empty(1));Sourcepub fn total_rate(&self, dim: usize) -> f64
pub fn total_rate(&self, dim: usize) -> f64
Total intensity of all transitions in dim.
§Examples
use solver::numeric::finite_difference::discretization::{JumpKernel, Transport};
let t = Transport::<2>::new([1.5, 0.0], [0.0, 2.0], 0.0);
let kernel = JumpKernel::from_transport(&t);
assert_eq!(kernel.total_rate(0), 1.5);
assert_eq!(kernel.total_rate(1), 2.0);Trait Implementations§
Source§impl<const N: usize> Clone for JumpKernel<N>
impl<const N: usize> Clone for JumpKernel<N>
Source§fn clone(&self) -> JumpKernel<N>
fn clone(&self) -> JumpKernel<N>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<const N: usize> Debug for JumpKernel<N>
impl<const N: usize> Debug for JumpKernel<N>
Auto Trait Implementations§
impl<const N: usize> Freeze for JumpKernel<N>
impl<const N: usize> RefUnwindSafe for JumpKernel<N>
impl<const N: usize> Send for JumpKernel<N>
impl<const N: usize> Sync for JumpKernel<N>
impl<const N: usize> Unpin for JumpKernel<N>
impl<const N: usize> UnsafeUnpin for JumpKernel<N>
impl<const N: usize> UnwindSafe for JumpKernel<N>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more