Torus
MultiFractalFields.Torus
— TypeTorus(n, η)
1D torus regularized at scale η
with n
grid points.
Examples
julia> torus = Torus(100, 0.1)
Torus{Float64, Float64}(n=100,η=0.1)
Covariances
Abstract types
MultiFractalFields.AbstractCovariance
— TypeAbstractCovariance{T}
Supertype for all covariance functions (singular or not).
Examples
julia> Covariance{Float64}<:AbstractCovariance{Float64}
true
julia> SingularCovariance{Int64}<:AbstractCovariance{Int64}
true
MultiFractalFields.Covariance
— TypeCovariance{T}
Supertype for 'true' (non-singular) covariance functions.
Non-singular means that the variance $\sigma^2 < \infty$.
Examples
julia> Exponential{Float32}<:Covariance{Float32}
true
julia> Linear{Int16}<:Covariance{Int16}
true
MultiFractalFields.SingularCovariance
— TypeSingularCovariance{T}
Supertype for singular covariance functions.
Singular means that the variance $\sigma^2 = \infty$.
Examples
julia> Log{Float64}<:SingularCovariance{Float64}
true
Concrete types
MultiFractalFields.Linear
— TypeLinear(ξ, [λ = 1], [σ² = 1])
Linear covariance function with scaling exponent ξ
, correlation length λ
and variance σ²
.
It is defined as $C(r) = \begin{cases} \sigma^2 \left(1 - \displaystyle \left(\frac{r}{\lambda}\right)^{\xi}\right) & \text{if }r ≤ \lambda\\ 0 & \text{if }r>\lambda\end{cases}$.
Examples
julia> lincov = Linear(0.5, 1.5, 3)
Linear{Float64}(ξ=0.5, λ=1.5, σ²=3.0)
julia> lincov(0)
3.0
julia> lincov(1.5)
0.0
MultiFractalFields.Exponential
— TypeExponential(ξ, [λ = 1], [σ² = 1])
Exponential covariance function with scaling exponent ξ
, correlation length λ
and variance σ²
.
It is defined as $C(r)= \sigma^2 e^{-\left(\frac{r}{\lambda}\right)^{\xi}}$.
Examples
julia> expcov = Exponential(0.5, 1.5, 3)
Exponential{Float64}(ξ=0.5, λ=1.5, σ²=3.0)
julia> expcov(0)
3.0
julia> expcov(1.5) == 3/ℯ
true
MultiFractalFields.Log
— TypeLog([λ = 1])
Logarithm covariance function with correlation length λ
and variance σ² = ∞
.
Used for generating the Gaussian Multiplicative Chaos.
It is defined as $C(r) = \log\left(\frac{\lambda}{r}\right)$.
Examples
julia> logcov = Log(1.5)
Log{Float64}(λ=1.5)
julia> logcov(0)
Inf
julia> logcov(1.5)
0.0
Fields
MultiFractalFields.Field
— TypeField
Supertype for GaussianField
and MultifractalField
.
Examples
julia> GaussianField<:Field
true
julia> MultiFractalField<:Field
true
MultiFractalFields.GaussianField
— TypeGaussianField(cov, torus)
Gaussian random field with covariance cov
on the torus
.
Examples
julia> torus = Torus(100, 0.1)
Torus{Float64, Float64}(n=100,η=0.1)
julia> lincov = Linear(0.5)
Linear{Float64}(ξ=0.5, λ=1.0, σ²=1.0)
julia> GaussianField(lincov ,torus)
GaussianField(cov=Linear{Float64}(ξ=0.5, λ=1.0, σ²=1.0),torus=Torus{Float64, Float64}(n=100,η=0.1))
MultiFractalFields.MultiFractalField
— TypeMultiFractalField(cov, torus, scov, γ)
Multifractal random field with intermittency parameter γ
.
scov<:SingularCovariance
is necessary to generate the Gaussian Multiplicative Chaos.
Examples
julia> torus = Torus(100, 0.1)
Torus{Float64, Float64}(n=100,η=0.1)
julia> lincov = Linear(0.5)
Linear{Float64}(ξ=0.5, λ=1.0, σ²=1.0)
julia> MultiFractalField(lincov, torus, Log(), 0.4)
MultiFractalField(γ=0.4,cov=Linear{Float64}(ξ=0.5, λ=1.0, σ²=1.0),torus=Torus{Float64, Float64}(n=100,η=0.1))
Sample
MultiFractalFields.sample
— Functionsample(f<:Field)
Sample from a given field f
.
Samples are generated by stochastic convolution in Fourier space.