diff --git a/dev/404.html b/dev/404.html index 2c4cad8..b9f920c 100644 --- a/dev/404.html +++ b/dev/404.html @@ -8,14 +8,14 @@ - +
- + \ No newline at end of file diff --git a/dev/api.html b/dev/api.html index 859d2b4..760a97f 100644 --- a/dev/api.html +++ b/dev/api.html @@ -8,17 +8,17 @@ - + - + - + -
Skip to content

ScateringOptics.jl API

Index

Docstrings

ScatteringOptics.Params_Johnson2018 Constant

Best-fit parameters of the dipole scattering model derived in Johnson et al. 2018

source

ScatteringOptics.AbstractKzetaFinder Type
julia
AbstractKzetaFinder

This is an abstract data type to set up equations and provide a solver for the concentration parameter k_ζ for an anistropic interstellar scattering model. See Psaltis et al. 2018, arxiv::1805.01242v1 for details.

Mandatory methods

  • kzetafinder_equation(kzeta, finder::AbstractKzetaFinder): should privide a equation where k will be derived.

Methods provided

  • findkzeta_exact(finder::AbstractKzetaFinder): solves the equation for k_ζ,2 given the set of parameters in the finder.

source

ScatteringOptics.AbstractScatteringKernel Type
julia
abstract type AbstractScatteringKernel{T} <: ComradeBase.AbstractModel

An abstract Comrade Sky Model for the diffractive scattering kernel. These are usually primitive models, and are usually analytic in Fourier but not analytic in the image domain. As a result a user only needs to implement the following methods.

  • visibility_point

  • radialextent

source

ScatteringOptics.AbstractScatteringModel Type
julia
abstract type AbstractScatteringModel

An abstract anistropic scattering model based on a thin-screen approximation. In this package, we provide a reference implementation of the dipole (DipoleScatteringModel), von Mises (vonMisesScatteringModel) and periodic Box Car models (PeriodicBoxCarScatteringModel) all introduced in Psaltis et al. 2018.

Mandatory fields The scattering model will be fundamentally governed by the following parameters. Ideally, a subtype of this abstract model should have a constructor only with these arguments.

  • α::Number: The power-law index of the phase fluctuations (Kolmogorov is 5/3).

  • rin::Number: The inner scale of the scattering screen in cm.

  • θmaj::Number: FWHM in mas of the major axis angular broadening at the specified reference wavelength.

  • θmin::Number: FWHM in mas of the minor axis angular broadening at the specified reference wavelength.

  • ϕ::Number: The position angle of the major axis of the scattering in degree.

  • λ0::Number: The reference wavelength for the scattering model in cm.

  • D::Number: The distance from the observer to the scattering screen in cm.

  • R::Number: The distance from the source to the scattering screen in cm.

Furthermore the following parameters need to be precomputed.

  • M::Number: Magnification parameter, defined as D/R

  • Qbar::Number: The amplitudes of fluctuations. Given by calc_Qbar(α, rin_cm, λ0_cm, M, θmaj_rad, θmin_rad)

  • C::Number: The scaling factor of the power spectrum. Given by calc_C(α, rin_cm, λ0_cm, Qbar)

  • D1maj::Number: given by calc_D1(α, Amaj, Bmaj)

  • D2maj::Number: given by calc_D2(α, Amaj, Bmaj)

  • D1min::Number: given by calc_D1(α, Amin, Bmin)

  • D2min::Number: given by calc_D2(α, Amin, Bmin)

Optional Fields Followings are currently not used by methods but may be useful to have.

  • A::Number: Asymmetry parameter θmaj_mas/θmin_mas

  • ζ0::Number: Another asymmetry parameter. Given by calc_ζ0(A)

  • ϕ0:: position angle (measured from Dec axis in CCW) converted to a more traditional angle in radians measured from RA axis in CW

  • Amaj::Number: related to the asymmetric scaling of the kernel. given by calc_Amaj(rin_cm, λ0_cm, M, θmaj_rad)

  • Amin::Number: related to the asymmetric scaling of the kernel. given by calc_Amin(rin_cm, λ0_cm, M, θmin_rad)

  • Bmaj::Number: calc_Bmaj(α, ϕ0, Pϕfunc, B_prefac)

  • Bmin::Number: calc_Bmin(α, ϕ0, Pϕfunc, B_prefac)

Mandatory Method

  • Pϕ(sm::ScatteringModel, ϕ): Probability Distribution for the wondering of the direction of the magnetic field centered at orientation ϕ0.

source

ScatteringOptics.ApproximatedScatteringKernel Type
julia
struct ApproximatedScatteringKernel{T, S, N} <: AbstractScatteringKernel{T}

A Comrade VLBI Sky Model for the scattering kernel based on a Scattering Model sm <: AbstractScatteringModel using the fast approximation formula in Psaltis et al. (2018).

If T isn't given, T defaults to Float64

source

ScatteringOptics.DipoleScatteringModel Type
julia
struct DipoleScatteringModel{T<:Number} <: AbstractScatteringModel

An anistropic scattering model based on a thin-screen approximation. This scattering model adopts the dipole field wonder described in Psaltis et al. 2018.

** Keywords for the constructor ** The default numbers are based on the best-fit parameters presented in Johnson et al. 2018.

  • α::Number: The power-law index of the phase fluctuations (Kolmogorov is 5/3).

  • rin_cm::Number: The inner scale of the scattering screen in cm.

  • θmaj_mas::Number: FWHM in mas of the major axis angular broadening at the specified reference wavelength.

  • θmin_nas::Number: FWHM in mas of the minor axis angular broadening at the specified reference wavelength.

  • ϕ_deg::Number: The position angle of the major axis of the scattering in degree.

  • λ0_cm::Number: The reference wavelength for the scattering model in cm.

  • D_kpc::Number: The distance from the observer to the scattering screen in kpc.

  • R_kpc::Number: The distance from the source to the scattering screen in kpc.

source

ScatteringOptics.Dipole_KzetaFinder Type
julia
struct Dipole_KzetaFinder{T<:Number} <: ScatteringOptics.AbstractKzetaFinder

The finder of the concentration parameter k_ζ,2 for dipole anistropic scattering models. See Psaltis et al. 2018, arxiv::1805.01242v1 for details. The equation for k_ζ,2 is given by the equation 43 of Psaltis et al. 2018.

Mandatory fields

  • α::Number: The power-law index of the phase fluctuations (Kolmogorov is 5/3).

  • A::Number: The anisotropy parameter of the angular broaderning defined by θmaj/θmin.

source

ScatteringOptics.ExactScatteringKernel Type
julia
struct ExactScatteringKernel{T, S, N} <: AbstractScatteringKernel{T}

A Comrade VLBI Sky Model for the scattering kernel based on a Scattering Model sm <: AbstractScatteringModel using the exact formula in Psaltis et al. (2018).

By default if T isn't given, T defaults to Float64

source

ScatteringOptics.PeriodicBoxCarScatteringModel Type
julia
struct PeriodicBoxCarScatteringModel{T<:Number} <: AbstractScatteringModel

An anistropic scattering model based on a thin-screen approximation. This scattering adopts the periodic boxcar field wonder described in Psaltis et al. 2018.

** Keywords for the constructor ** The default numbers are based on the best-fit parameters presented in Johnson et al. 2018.

  • α::Number: The power-law index of the phase fluctuations (Kolmogorov is 5/3).

  • rin_cm::Number: The inner scale of the scattering screen in cm.

  • θmaj_mas::Number: FWHM in mas of the major axis angular broadening at the specified reference wavelength.

  • θmin_nas::Number: FWHM in mas of the minor axis angular broadening at the specified reference wavelength.

  • ϕ_deg::Number: The position angle of the major axis of the scattering in degree.

  • λ0_cm::Number: The reference wavelength for the scattering model in cm.

  • D_kpc::Number: The distance from the observer to the scattering screen in pc.

  • R_kpc::Number: The distance from the source to the scattering screen in pc.

source

ScatteringOptics.PeriodicBoxCar_KzetaFinder Type
julia
struct PeriodicBoxCar_KzetaFinder{T<:Number} <: ScatteringOptics.AbstractKzetaFinder

The finder of the concentration parameter k_ζ,3 for the Periodic Box Car anistropic scattering model. See Psaltis et al. 2018, arxiv::1805.01242v1 for details. The equation for k_ζ,3 is given by the equation 47 of Psaltis et al. 2018.

Mandatory fields

  • A::Number: The anisotropy parameter of the angular broaderning defined by θmaj/θmin.

source

ScatteringOptics.PhaseScreenPowerLaw Type
julia
$(TYPEDEF)

Power spectrum model of ISM fluctuations, for use in generating a RefractivePhaseScreen object. Requires an AbstractScatteringModel for scattering parameters as well as image x and y pixel sizes. Optional input of velocity in x and y direction for moving phase screen.

Fields

FIELDS

source

ScatteringOptics.RefractivePhaseScreen Type
julia
RefractivePhaseScreen(sm, Nx, Ny, dx, dy, Vx_km_per_s=0.0, Vy_km_per_s=0.0)

An abstract type for generating a refractive phase screen model corresponding to an image and computing the scattered average image.

  • sm <: AbstractScatteringModel

  • Nx: image size in x axis

  • Ny: image size in y axis

  • dx: pixel size in x direction (in radians)

  • dy: pixel size in y direction (in radians)

Vx_km_per_s and Vy_km_per_s are optional for moving phase screen.

source

ScatteringOptics.vonMisesScatteringModel Type
julia
struct vonMisesScatteringModel{T<:Number} <: AbstractScatteringModel

An anistropic scattering model based on a thin-screen approximation. This scattering adopts the von Mises field wonder described in Psaltis et al. 2018.

** Keywords for the constructor ** The default numbers are based on the best-fit parameters presented in Johnson et al. 2018.

  • α::Number: The power-law index of the phase fluctuations (Kolmogorov is 5/3).

  • rin_cm::Number: The inner scale of the scattering screen in cm.

  • θmaj_mas::Number: FWHM in mas of the major axis angular broadening at the specified reference wavelength.

  • θmin_nas::Number: FWHM in mas of the minor axis angular broadening at the specified reference wavelength.

  • ϕ_deg::Number: The position angle of the major axis of the scattering in degree.

  • λ0_cm::Number: The reference wavelength for the scattering model in cm.

  • D_kpc::Number: The distance from the observer to the scattering screen in pc.

  • R_kpc::Number: The distance from the source to the scattering screen in pc.

source

ScatteringOptics.vonMises_KzetaFinder Type
julia
struct vonMises_KzetaFinder{T<:Number} <: ScatteringOptics.AbstractKzetaFinder

The finder of the concentration parameter k_ζ,1 for the von Mises anistropic scattering model. See Psaltis et al. 2018, arxiv::1805.01242v1 for details. The equation for k_ζ,1 is originally given by the equation 37 of Psaltis et al. 2018, but this is different in the implementation of Johnson et al. 2018 in eht-imaging library. We follow eht-imaging's implementation.

Mandatory fields

  • A::Number: The anisotropy parameter of the angular broaderning defined by θmaj/θmin.

source

ScatteringOptics.Dϕ_approx Method
julia
Dϕ_approx(sm::AbstractScatteringModel, λ::Number, x::Number, y::Number)

Masm approximate phase structure function Dϕ(r, ϕ) at observing wavelength λ, first converting x and y into polar coordinates. Based on Equation 35 of Psaltis et al. 2018.

source

ScatteringOptics.Dϕ_exact Method
julia
Dϕ_exact(sm::AbstractScatteringModel, λ::Number, x::Number, y::Number)

Masm exact phase structure function Dϕ(r, ϕ) at observing wavelength λ, first converting x and y into the polar coordinates

source

ScatteringOptics.calc_Dmaj Method
julia
Dmaj(r, sm::AbstractScatteringModel)

Masm D_maj(r) for given r. Based on Equation 33 of Psaltis et al. 2018

source

ScatteringOptics.calc_Dmin Method
julia
calc_Dmin(r, sm::AbstractScatteringModel)

Masm D_min(r) for given r. Based on Equation 34 of Psaltis et al. 2018

source

ScatteringOptics.dDϕ_dz Method
julia
dDϕ_dz(sm::AbstractScatteringModel, λ::Number, r::Number, ϕ::Number, ϕq)

Differential contribution to the phase structure function.

source

ScatteringOptics.ensembleaverage Function
julia
ensembleaverage(sm::AbstractScatteringModel, skymodel::AbstractModel, νmodel)

source

ScatteringOptics.ensembleaverage Method
julia
ensembleaverage(sm::AbstractScatteringModel, imap::IntensityMap; νref=c_cgs)

source

ScatteringOptics.findkzeta_exact Method
julia
findkzeta_exact(finder::AbstractKzetaFinder; kwargs...)

Solves the equation for the concentration parameter k_ζ,2 given the set of parameters in the finder. It uses NonlinearSolve.jl.

source

ScatteringOptics.get_rF Method
julia
get_rF(psm::AbstractPhaseScreen, λ_cm)

Returns Fresnel scale corresponding to the given AvstractPhaseScreen object and observing wavelength, λ_cm

source

ScatteringOptics.kernelmodel Method
julia
kernelmodel(sm::AbstractScatteringModel; νref::Number=c_cgs, use_approx::Bool == true)

Return a Comrade Sky Model for the diffractive scattering kernel of the input scattering model.

** Keyword Argurments **

  • νref::Number: the reference frequency in Hz to give a radial extent of the kernel, which is ideally the lowest frequency of your data sets as the kenerl size is roughly scale with λ^2. νref defaults to the light speed in cgs unit, providing the wavelength of 1 cm.

  • use_approx::Bool==true: if true, returns a model using the approximated fourmula to compute visibiltiies (ScatteringKernel). Otherwise, return a model instead using the exact formula (ExactScatteringKernel).

source

ScatteringOptics.kzetafinder_equation Method
julia
kzetafinder_equation(kzeta, finder::AbstractKzetaFinder)

This equation privide a root-finding function f(kzeta, finder) to find kzeta from the equation f(kzeta, finder)=0.

source

ScatteringOptics.phase_screen Method
julia
phase_screen(psm::AbstractPhaseScreen, λ_cm, noise_screen=nothing)

Generates a refractive phase screen, ϕ, using StationaryRandomFields.jl the power law noise procedure. The fourier space 2D noise_screen (defaults to gaussian noise screen if not given) is scaled by the power law, Q, defined in input AbstractPhaseScreen psm. The observing wavelength, λ_cm, must be given.

source

ScatteringOptics.refractivephasescreen Method
julia
refractivephasescreen(sm, im, Vx_km_per_s=0.0, Vy_km_per_s=0.0)

An abstract type for generating a refractive phase screen model corresponding to an image and computing the scattered average image.

  • sm <: AbstractScatteringModel

  • im <: IntensityMap

  • Vx_km_per_s and Vy_km_per_s are optional for moving phase screen.

source

ScatteringOptics.scatter_image Method
julia
scatter_image(psm::RefractivePhaseScreen, imap::IntensityMap; νref::Number = c_cgs, noise_screen=nothing)

Implements full ISM scattering on an unscattered Comrade skymodel intensity map (imap). Diffrective blurring and refractive phase screen generation are specific to the scattering parameters defined in the AbstractPhaseScreen model psm.

source

ScatteringOptics.scatter_image Method
julia
scatter_image(sm::AbstractScatteringModel, imap::IntensityMap, λ_cm::Number; νref::Number = c_cgs, rng = Random.default_rng())

source

ScatteringOptics.visibility_point_approx Method
julia
visibility_point_approx(sm::AbstractScatteringModel, λ::Number, u::Number, v::Number)

Compute the diffractive kernel for a given observing wavelength λ and fourier space coordinates u, v using the approximated formula of the phase structure function.

source

ScatteringOptics.visibility_point_exact Method
julia
visibility_point_exact(sm::AbstractScatteringModel, λ::Number, u::Number, v::Number)

Compute the diffractive kernel for a given observing wavelength λ and fourier space coordinates u, v using the exact formula of the phase structure function.

source

ScatteringOptics.wrapped_grad Method
julia
wrapped_grad(ϕ, dx, dy)

Returns the wrapped gradient of a given 2D phase screen. The x and y pixel sizes (dx and dy) must be given.

source

- +
Skip to content

ScateringOptics.jl API

Index

Docstrings

ScatteringOptics.Params_Johnson2018 Constant

Best-fit parameters of the dipole scattering model derived in Johnson et al. 2018

source

ScatteringOptics.AbstractKzetaFinder Type
julia
AbstractKzetaFinder

This is an abstract data type to set up equations and provide a solver for the concentration parameter k_ζ for an anistropic interstellar scattering model. See Psaltis et al. 2018, arxiv::1805.01242v1 for details.

Mandatory methods

  • kzetafinder_equation(kzeta, finder::AbstractKzetaFinder): should privide a equation where k will be derived.

Methods provided

  • findkzeta_exact(finder::AbstractKzetaFinder): solves the equation for k_ζ,2 given the set of parameters in the finder.

source

ScatteringOptics.AbstractScatteringKernel Type
julia
abstract type AbstractScatteringKernel{T} <: ComradeBase.AbstractModel

An abstract Comrade Sky Model for the diffractive scattering kernel. These are usually primitive models, and are usually analytic in Fourier but not analytic in the image domain. As a result a user only needs to implement the following methods.

  • visibility_point

  • radialextent

source

ScatteringOptics.AbstractScatteringModel Type
julia
abstract type AbstractScatteringModel

An abstract anistropic scattering model based on a thin-screen approximation. In this package, we provide a reference implementation of the dipole (DipoleScatteringModel), von Mises (vonMisesScatteringModel) and periodic Box Car models (PeriodicBoxCarScatteringModel) all introduced in Psaltis et al. 2018.

Mandatory fields The scattering model will be fundamentally governed by the following parameters. Ideally, a subtype of this abstract model should have a constructor only with these arguments.

  • α::Number: The power-law index of the phase fluctuations (Kolmogorov is 5/3).

  • rin::Number: The inner scale of the scattering screen in cm.

  • θmaj::Number: FWHM in mas of the major axis angular broadening at the specified reference wavelength.

  • θmin::Number: FWHM in mas of the minor axis angular broadening at the specified reference wavelength.

  • ϕ::Number: The position angle of the major axis of the scattering in degree.

  • λ0::Number: The reference wavelength for the scattering model in cm.

  • D::Number: The distance from the observer to the scattering screen in cm.

  • R::Number: The distance from the source to the scattering screen in cm.

Furthermore the following parameters need to be precomputed.

  • M::Number: Magnification parameter, defined as D/R

  • Qbar::Number: The amplitudes of fluctuations. Given by calc_Qbar(α, rin_cm, λ0_cm, M, θmaj_rad, θmin_rad)

  • C::Number: The scaling factor of the power spectrum. Given by calc_C(α, rin_cm, λ0_cm, Qbar)

  • D1maj::Number: given by calc_D1(α, Amaj, Bmaj)

  • D2maj::Number: given by calc_D2(α, Amaj, Bmaj)

  • D1min::Number: given by calc_D1(α, Amin, Bmin)

  • D2min::Number: given by calc_D2(α, Amin, Bmin)

Optional Fields Followings are currently not used by methods but may be useful to have.

  • A::Number: Asymmetry parameter θmaj_mas/θmin_mas

  • ζ0::Number: Another asymmetry parameter. Given by calc_ζ0(A)

  • ϕ0:: position angle (measured from Dec axis in CCW) converted to a more traditional angle in radians measured from RA axis in CW

  • Amaj::Number: related to the asymmetric scaling of the kernel. given by calc_Amaj(rin_cm, λ0_cm, M, θmaj_rad)

  • Amin::Number: related to the asymmetric scaling of the kernel. given by calc_Amin(rin_cm, λ0_cm, M, θmin_rad)

  • Bmaj::Number: calc_Bmaj(α, ϕ0, Pϕfunc, B_prefac)

  • Bmin::Number: calc_Bmin(α, ϕ0, Pϕfunc, B_prefac)

Mandatory Method

  • Pϕ(sm::ScatteringModel, ϕ): Probability Distribution for the wondering of the direction of the magnetic field centered at orientation ϕ0.

source

ScatteringOptics.ApproximatedScatteringKernel Type
julia
struct ApproximatedScatteringKernel{T, S, N} <: AbstractScatteringKernel{T}

A Comrade VLBI Sky Model for the scattering kernel based on a Scattering Model sm <: AbstractScatteringModel using the fast approximation formula in Psaltis et al. (2018).

If T isn't given, T defaults to Float64

source

ScatteringOptics.DipoleScatteringModel Type
julia
struct DipoleScatteringModel{T<:Number} <: AbstractScatteringModel

An anistropic scattering model based on a thin-screen approximation. This scattering model adopts the dipole field wonder described in Psaltis et al. 2018.

** Keywords for the constructor ** The default numbers are based on the best-fit parameters presented in Johnson et al. 2018.

  • α::Number: The power-law index of the phase fluctuations (Kolmogorov is 5/3).

  • rin_cm::Number: The inner scale of the scattering screen in cm.

  • θmaj_mas::Number: FWHM in mas of the major axis angular broadening at the specified reference wavelength.

  • θmin_nas::Number: FWHM in mas of the minor axis angular broadening at the specified reference wavelength.

  • ϕ_deg::Number: The position angle of the major axis of the scattering in degree.

  • λ0_cm::Number: The reference wavelength for the scattering model in cm.

  • D_kpc::Number: The distance from the observer to the scattering screen in kpc.

  • R_kpc::Number: The distance from the source to the scattering screen in kpc.

source

ScatteringOptics.Dipole_KzetaFinder Type
julia
struct Dipole_KzetaFinder{T<:Number} <: ScatteringOptics.AbstractKzetaFinder

The finder of the concentration parameter k_ζ,2 for dipole anistropic scattering models. See Psaltis et al. 2018, arxiv::1805.01242v1 for details. The equation for k_ζ,2 is given by the equation 43 of Psaltis et al. 2018.

Mandatory fields

  • α::Number: The power-law index of the phase fluctuations (Kolmogorov is 5/3).

  • A::Number: The anisotropy parameter of the angular broaderning defined by θmaj/θmin.

source

ScatteringOptics.ExactScatteringKernel Type
julia
struct ExactScatteringKernel{T, S, N} <: AbstractScatteringKernel{T}

A Comrade VLBI Sky Model for the scattering kernel based on a Scattering Model sm <: AbstractScatteringModel using the exact formula in Psaltis et al. (2018).

By default if T isn't given, T defaults to Float64

source

ScatteringOptics.PeriodicBoxCarScatteringModel Type
julia
struct PeriodicBoxCarScatteringModel{T<:Number} <: AbstractScatteringModel

An anistropic scattering model based on a thin-screen approximation. This scattering adopts the periodic boxcar field wonder described in Psaltis et al. 2018.

** Keywords for the constructor ** The default numbers are based on the best-fit parameters presented in Johnson et al. 2018.

  • α::Number: The power-law index of the phase fluctuations (Kolmogorov is 5/3).

  • rin_cm::Number: The inner scale of the scattering screen in cm.

  • θmaj_mas::Number: FWHM in mas of the major axis angular broadening at the specified reference wavelength.

  • θmin_nas::Number: FWHM in mas of the minor axis angular broadening at the specified reference wavelength.

  • ϕ_deg::Number: The position angle of the major axis of the scattering in degree.

  • λ0_cm::Number: The reference wavelength for the scattering model in cm.

  • D_kpc::Number: The distance from the observer to the scattering screen in pc.

  • R_kpc::Number: The distance from the source to the scattering screen in pc.

source

ScatteringOptics.PeriodicBoxCar_KzetaFinder Type
julia
struct PeriodicBoxCar_KzetaFinder{T<:Number} <: ScatteringOptics.AbstractKzetaFinder

The finder of the concentration parameter k_ζ,3 for the Periodic Box Car anistropic scattering model. See Psaltis et al. 2018, arxiv::1805.01242v1 for details. The equation for k_ζ,3 is given by the equation 47 of Psaltis et al. 2018.

Mandatory fields

  • A::Number: The anisotropy parameter of the angular broaderning defined by θmaj/θmin.

source

ScatteringOptics.PhaseScreenPowerLaw Type
julia
$(TYPEDEF)

Power spectrum model of ISM fluctuations, for use in generating a RefractivePhaseScreen object. Requires an AbstractScatteringModel for scattering parameters as well as image x and y pixel sizes. Optional input of velocity in x and y direction for moving phase screen.

Fields

FIELDS

source

ScatteringOptics.RefractivePhaseScreen Type
julia
RefractivePhaseScreen(sm, Nx, Ny, dx, dy, Vx_km_per_s=0.0, Vy_km_per_s=0.0)

An abstract type for generating a refractive phase screen model corresponding to an image and computing the scattered average image.

  • sm <: AbstractScatteringModel

  • Nx: image size in x axis

  • Ny: image size in y axis

  • dx: pixel size in x direction (in radians)

  • dy: pixel size in y direction (in radians)

Vx_km_per_s and Vy_km_per_s are optional for moving phase screen.

source

ScatteringOptics.vonMisesScatteringModel Type
julia
struct vonMisesScatteringModel{T<:Number} <: AbstractScatteringModel

An anistropic scattering model based on a thin-screen approximation. This scattering adopts the von Mises field wonder described in Psaltis et al. 2018.

** Keywords for the constructor ** The default numbers are based on the best-fit parameters presented in Johnson et al. 2018.

  • α::Number: The power-law index of the phase fluctuations (Kolmogorov is 5/3).

  • rin_cm::Number: The inner scale of the scattering screen in cm.

  • θmaj_mas::Number: FWHM in mas of the major axis angular broadening at the specified reference wavelength.

  • θmin_nas::Number: FWHM in mas of the minor axis angular broadening at the specified reference wavelength.

  • ϕ_deg::Number: The position angle of the major axis of the scattering in degree.

  • λ0_cm::Number: The reference wavelength for the scattering model in cm.

  • D_kpc::Number: The distance from the observer to the scattering screen in pc.

  • R_kpc::Number: The distance from the source to the scattering screen in pc.

source

ScatteringOptics.vonMises_KzetaFinder Type
julia
struct vonMises_KzetaFinder{T<:Number} <: ScatteringOptics.AbstractKzetaFinder

The finder of the concentration parameter k_ζ,1 for the von Mises anistropic scattering model. See Psaltis et al. 2018, arxiv::1805.01242v1 for details. The equation for k_ζ,1 is originally given by the equation 37 of Psaltis et al. 2018, but this is different in the implementation of Johnson et al. 2018 in eht-imaging library. We follow eht-imaging's implementation.

Mandatory fields

  • A::Number: The anisotropy parameter of the angular broaderning defined by θmaj/θmin.

source

ScatteringOptics.Dϕ_approx Method
julia
Dϕ_approx(sm::AbstractScatteringModel, λ::Number, x::Number, y::Number)

Masm approximate phase structure function Dϕ(r, ϕ) at observing wavelength λ, first converting x and y into polar coordinates. Based on Equation 35 of Psaltis et al. 2018.

source

ScatteringOptics.Dϕ_exact Method
julia
Dϕ_exact(sm::AbstractScatteringModel, λ::Number, x::Number, y::Number)

Masm exact phase structure function Dϕ(r, ϕ) at observing wavelength λ, first converting x and y into the polar coordinates

source

ScatteringOptics.calc_Dmaj Method
julia
Dmaj(r, sm::AbstractScatteringModel)

Masm D_maj(r) for given r. Based on Equation 33 of Psaltis et al. 2018

source

ScatteringOptics.calc_Dmin Method
julia
calc_Dmin(r, sm::AbstractScatteringModel)

Masm D_min(r) for given r. Based on Equation 34 of Psaltis et al. 2018

source

ScatteringOptics.dDϕ_dz Method
julia
dDϕ_dz(sm::AbstractScatteringModel, λ::Number, r::Number, ϕ::Number, ϕq)

Differential contribution to the phase structure function.

source

ScatteringOptics.ensembleaverage Function
julia
ensembleaverage(sm::AbstractScatteringModel, skymodel::AbstractModel, νmodel)

source

ScatteringOptics.ensembleaverage Method
julia
ensembleaverage(sm::AbstractScatteringModel, imap::IntensityMap; νref=c_cgs)

source

ScatteringOptics.findkzeta_exact Method
julia
findkzeta_exact(finder::AbstractKzetaFinder; kwargs...)

Solves the equation for the concentration parameter k_ζ,2 given the set of parameters in the finder. It uses NonlinearSolve.jl.

source

ScatteringOptics.get_rF Method
julia
get_rF(psm::AbstractPhaseScreen, λ_cm)

Returns Fresnel scale corresponding to the given AvstractPhaseScreen object and observing wavelength, λ_cm

source

ScatteringOptics.kernelmodel Method
julia
kernelmodel(sm::AbstractScatteringModel; νref::Number=c_cgs, use_approx::Bool == true)

Return a Comrade Sky Model for the diffractive scattering kernel of the input scattering model.

** Keyword Argurments **

  • νref::Number: the reference frequency in Hz to give a radial extent of the kernel, which is ideally the lowest frequency of your data sets as the kenerl size is roughly scale with λ^2. νref defaults to the light speed in cgs unit, providing the wavelength of 1 cm.

  • use_approx::Bool==true: if true, returns a model using the approximated fourmula to compute visibiltiies (ScatteringKernel). Otherwise, return a model instead using the exact formula (ExactScatteringKernel).

source

ScatteringOptics.kzetafinder_equation Method
julia
kzetafinder_equation(kzeta, finder::AbstractKzetaFinder)

This equation privide a root-finding function f(kzeta, finder) to find kzeta from the equation f(kzeta, finder)=0.

source

ScatteringOptics.phase_screen Method
julia
phase_screen(psm::AbstractPhaseScreen, λ_cm, noise_screen=nothing)

Generates a refractive phase screen, ϕ, using StationaryRandomFields.jl the power law noise procedure. The fourier space 2D noise_screen (defaults to gaussian noise screen if not given) is scaled by the power law, Q, defined in input AbstractPhaseScreen psm. The observing wavelength, λ_cm, must be given.

source

ScatteringOptics.refractivephasescreen Method
julia
refractivephasescreen(sm, im, Vx_km_per_s=0.0, Vy_km_per_s=0.0)

An abstract type for generating a refractive phase screen model corresponding to an image and computing the scattered average image.

  • sm <: AbstractScatteringModel

  • im <: IntensityMap

  • Vx_km_per_s and Vy_km_per_s are optional for moving phase screen.

source

ScatteringOptics.scatter_image Method
julia
scatter_image(psm::RefractivePhaseScreen, imap::IntensityMap; νref::Number = c_cgs, noise_screen=nothing)

Implements full ISM scattering on an unscattered Comrade skymodel intensity map (imap). Diffrective blurring and refractive phase screen generation are specific to the scattering parameters defined in the AbstractPhaseScreen model psm.

source

ScatteringOptics.scatter_image Method
julia
scatter_image(sm::AbstractScatteringModel, imap::IntensityMap, λ_cm::Number; νref::Number = c_cgs, rng = Random.default_rng())

source

ScatteringOptics.visibility_point_approx Method
julia
visibility_point_approx(sm::AbstractScatteringModel, λ::Number, u::Number, v::Number)

Compute the diffractive kernel for a given observing wavelength λ and fourier space coordinates u, v using the approximated formula of the phase structure function.

source

ScatteringOptics.visibility_point_exact Method
julia
visibility_point_exact(sm::AbstractScatteringModel, λ::Number, u::Number, v::Number)

Compute the diffractive kernel for a given observing wavelength λ and fourier space coordinates u, v using the exact formula of the phase structure function.

source

ScatteringOptics.wrapped_grad Method
julia
wrapped_grad(ϕ, dx, dy)

Returns the wrapped gradient of a given 2D phase screen. The x and y pixel sizes (dx and dy) must be given.

source

+ \ No newline at end of file diff --git a/dev/assets/api.md.BZ9O_dq1.js b/dev/assets/api.md.BNWtEMfY.js similarity index 77% rename from dev/assets/api.md.BZ9O_dq1.js rename to dev/assets/api.md.BNWtEMfY.js index 008d189..b05e757 100644 --- a/dev/assets/api.md.BZ9O_dq1.js +++ b/dev/assets/api.md.BNWtEMfY.js @@ -1 +1 @@ -import{_ as l,c as r,a5 as t,j as i,a,G as n,B as p,o as c}from"./chunks/framework.DWm5V20y.js";const U=JSON.parse('{"title":"ScateringOptics.jl API","description":"","frontmatter":{},"headers":[],"relativePath":"api.md","filePath":"api.md","lastUpdated":null}'),o={name:"api.md"},d={class:"jldocstring custom-block",open:""},h={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},K={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},H={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""};function q(R,e,V,W,G,$){const s=p("Badge");return c(),r("div",null,[e[97]||(e[97]=t('

ScateringOptics.jl API

Index

Docstrings

',4)),i("details",d,[i("summary",null,[e[0]||(e[0]=i("a",{id:"ScatteringOptics.Params_Johnson2018",href:"#ScatteringOptics.Params_Johnson2018"},[i("span",{class:"jlbinding"},"ScatteringOptics.Params_Johnson2018")],-1)),e[1]||(e[1]=a()),n(s,{type:"info",class:"jlObjectType jlConstant",text:"Constant"})]),e[2]||(e[2]=i("p",null,"Best-fit parameters of the dipole scattering model derived in Johnson et al. 2018",-1)),e[3]||(e[3]=i("p",null,[i("a",{href:"./github.com/EHTJulia/ScatteringOptics.jl/blob/463c8011e95c7ccd9e9341b1b89d121cff54188e/src/scatteringmodels/commonfunctions.jl#L6-L8"},"source")],-1))]),i("details",h,[i("summary",null,[e[4]||(e[4]=i("a",{id:"ScatteringOptics.AbstractKzetaFinder",href:"#ScatteringOptics.AbstractKzetaFinder"},[i("span",{class:"jlbinding"},"ScatteringOptics.AbstractKzetaFinder")],-1)),e[5]||(e[5]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[6]||(e[6]=t('
julia
AbstractKzetaFinder

This is an abstract data type to set up equations and provide a solver for the concentration parameter k_ζ for an anistropic interstellar scattering model. See Psaltis et al. 2018, arxiv::1805.01242v1 for details.

Mandatory methods

Methods provided

source

',7))]),i("details",g,[i("summary",null,[e[7]||(e[7]=i("a",{id:"ScatteringOptics.AbstractScatteringKernel",href:"#ScatteringOptics.AbstractScatteringKernel"},[i("span",{class:"jlbinding"},"ScatteringOptics.AbstractScatteringKernel")],-1)),e[8]||(e[8]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[9]||(e[9]=t('
julia
abstract type AbstractScatteringKernel{T} <: ComradeBase.AbstractModel

An abstract Comrade Sky Model for the diffractive scattering kernel. These are usually primitive models, and are usually analytic in Fourier but not analytic in the image domain. As a result a user only needs to implement the following methods.

source

',4))]),i("details",k,[i("summary",null,[e[10]||(e[10]=i("a",{id:"ScatteringOptics.AbstractScatteringModel",href:"#ScatteringOptics.AbstractScatteringModel"},[i("span",{class:"jlbinding"},"ScatteringOptics.AbstractScatteringModel")],-1)),e[11]||(e[11]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[12]||(e[12]=t('
julia
abstract type AbstractScatteringModel

An abstract anistropic scattering model based on a thin-screen approximation. In this package, we provide a reference implementation of the dipole (DipoleScatteringModel), von Mises (vonMisesScatteringModel) and periodic Box Car models (PeriodicBoxCarScatteringModel) all introduced in Psaltis et al. 2018.

Mandatory fields The scattering model will be fundamentally governed by the following parameters. Ideally, a subtype of this abstract model should have a constructor only with these arguments.

Furthermore the following parameters need to be precomputed.

Optional Fields Followings are currently not used by methods but may be useful to have.

Mandatory Method

source

',11))]),i("details",u,[i("summary",null,[e[13]||(e[13]=i("a",{id:"ScatteringOptics.ApproximatedScatteringKernel",href:"#ScatteringOptics.ApproximatedScatteringKernel"},[i("span",{class:"jlbinding"},"ScatteringOptics.ApproximatedScatteringKernel")],-1)),e[14]||(e[14]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[15]||(e[15]=t('
julia
struct ApproximatedScatteringKernel{T, S, N} <: AbstractScatteringKernel{T}

A Comrade VLBI Sky Model for the scattering kernel based on a Scattering Model sm <: AbstractScatteringModel using the fast approximation formula in Psaltis et al. (2018).

If T isn't given, T defaults to Float64

source

',4))]),i("details",b,[i("summary",null,[e[16]||(e[16]=i("a",{id:"ScatteringOptics.DipoleScatteringModel",href:"#ScatteringOptics.DipoleScatteringModel"},[i("span",{class:"jlbinding"},"ScatteringOptics.DipoleScatteringModel")],-1)),e[17]||(e[17]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[18]||(e[18]=t('
julia
struct DipoleScatteringModel{T<:Number} <: AbstractScatteringModel

An anistropic scattering model based on a thin-screen approximation. This scattering model adopts the dipole field wonder described in Psaltis et al. 2018.

** Keywords for the constructor ** The default numbers are based on the best-fit parameters presented in Johnson et al. 2018.

source

',5))]),i("details",m,[i("summary",null,[e[19]||(e[19]=i("a",{id:"ScatteringOptics.Dipole_KzetaFinder",href:"#ScatteringOptics.Dipole_KzetaFinder"},[i("span",{class:"jlbinding"},"ScatteringOptics.Dipole_KzetaFinder")],-1)),e[20]||(e[20]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[21]||(e[21]=t('
julia
struct Dipole_KzetaFinder{T<:Number} <: ScatteringOptics.AbstractKzetaFinder

The finder of the concentration parameter k_ζ,2 for dipole anistropic scattering models. See Psaltis et al. 2018, arxiv::1805.01242v1 for details. The equation for k_ζ,2 is given by the equation 43 of Psaltis et al. 2018.

Mandatory fields

source

',5))]),i("details",y,[i("summary",null,[e[22]||(e[22]=i("a",{id:"ScatteringOptics.ExactScatteringKernel",href:"#ScatteringOptics.ExactScatteringKernel"},[i("span",{class:"jlbinding"},"ScatteringOptics.ExactScatteringKernel")],-1)),e[23]||(e[23]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[24]||(e[24]=t('
julia
struct ExactScatteringKernel{T, S, N} <: AbstractScatteringKernel{T}

A Comrade VLBI Sky Model for the scattering kernel based on a Scattering Model sm <: AbstractScatteringModel using the exact formula in Psaltis et al. (2018).

By default if T isn't given, T defaults to Float64

source

',4))]),i("details",f,[i("summary",null,[e[25]||(e[25]=i("a",{id:"ScatteringOptics.PeriodicBoxCarScatteringModel",href:"#ScatteringOptics.PeriodicBoxCarScatteringModel"},[i("span",{class:"jlbinding"},"ScatteringOptics.PeriodicBoxCarScatteringModel")],-1)),e[26]||(e[26]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[27]||(e[27]=t('
julia
struct PeriodicBoxCarScatteringModel{T<:Number} <: AbstractScatteringModel

An anistropic scattering model based on a thin-screen approximation. This scattering adopts the periodic boxcar field wonder described in Psaltis et al. 2018.

** Keywords for the constructor ** The default numbers are based on the best-fit parameters presented in Johnson et al. 2018.

source

',5))]),i("details",E,[i("summary",null,[e[28]||(e[28]=i("a",{id:"ScatteringOptics.PeriodicBoxCar_KzetaFinder",href:"#ScatteringOptics.PeriodicBoxCar_KzetaFinder"},[i("span",{class:"jlbinding"},"ScatteringOptics.PeriodicBoxCar_KzetaFinder")],-1)),e[29]||(e[29]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[30]||(e[30]=t('
julia
struct PeriodicBoxCar_KzetaFinder{T<:Number} <: ScatteringOptics.AbstractKzetaFinder

The finder of the concentration parameter k_ζ,3 for the Periodic Box Car anistropic scattering model. See Psaltis et al. 2018, arxiv::1805.01242v1 for details. The equation for k_ζ,3 is given by the equation 47 of Psaltis et al. 2018.

Mandatory fields

source

',5))]),i("details",S,[i("summary",null,[e[31]||(e[31]=i("a",{id:"ScatteringOptics.PhaseScreenPowerLaw",href:"#ScatteringOptics.PhaseScreenPowerLaw"},[i("span",{class:"jlbinding"},"ScatteringOptics.PhaseScreenPowerLaw")],-1)),e[32]||(e[32]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[33]||(e[33]=t('
julia
$(TYPEDEF)

Power spectrum model of ISM fluctuations, for use in generating a RefractivePhaseScreen object. Requires an AbstractScatteringModel for scattering parameters as well as image x and y pixel sizes. Optional input of velocity in x and y direction for moving phase screen.

Fields

FIELDS

source

',5))]),i("details",j,[i("summary",null,[e[34]||(e[34]=i("a",{id:"ScatteringOptics.RefractivePhaseScreen",href:"#ScatteringOptics.RefractivePhaseScreen"},[i("span",{class:"jlbinding"},"ScatteringOptics.RefractivePhaseScreen")],-1)),e[35]||(e[35]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[36]||(e[36]=t('
julia
RefractivePhaseScreen(sm, Nx, Ny, dx, dy, Vx_km_per_s=0.0, Vy_km_per_s=0.0)

An abstract type for generating a refractive phase screen model corresponding to an image and computing the scattered average image.

Vx_km_per_s and Vy_km_per_s are optional for moving phase screen.

source

',5))]),i("details",v,[i("summary",null,[e[37]||(e[37]=i("a",{id:"ScatteringOptics.vonMisesScatteringModel",href:"#ScatteringOptics.vonMisesScatteringModel"},[i("span",{class:"jlbinding"},"ScatteringOptics.vonMisesScatteringModel")],-1)),e[38]||(e[38]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[39]||(e[39]=t('
julia
struct vonMisesScatteringModel{T<:Number} <: AbstractScatteringModel

An anistropic scattering model based on a thin-screen approximation. This scattering adopts the von Mises field wonder described in Psaltis et al. 2018.

** Keywords for the constructor ** The default numbers are based on the best-fit parameters presented in Johnson et al. 2018.

source

',5))]),i("details",F,[i("summary",null,[e[40]||(e[40]=i("a",{id:"ScatteringOptics.vonMises_KzetaFinder",href:"#ScatteringOptics.vonMises_KzetaFinder"},[i("span",{class:"jlbinding"},"ScatteringOptics.vonMises_KzetaFinder")],-1)),e[41]||(e[41]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[42]||(e[42]=t('
julia
struct vonMises_KzetaFinder{T<:Number} <: ScatteringOptics.AbstractKzetaFinder

The finder of the concentration parameter k_ζ,1 for the von Mises anistropic scattering model. See Psaltis et al. 2018, arxiv::1805.01242v1 for details. The equation for k_ζ,1 is originally given by the equation 37 of Psaltis et al. 2018, but this is different in the implementation of Johnson et al. 2018 in eht-imaging library. We follow eht-imaging's implementation.

Mandatory fields

source

',5))]),i("details",C,[i("summary",null,[e[43]||(e[43]=i("a",{id:"ScatteringOptics.Dϕ_approx-Tuple{AbstractScatteringModel, Number, Number, Number}",href:"#ScatteringOptics.Dϕ_approx-Tuple{AbstractScatteringModel, Number, Number, Number}"},[i("span",{class:"jlbinding"},"ScatteringOptics.Dϕ_approx")],-1)),e[44]||(e[44]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[45]||(e[45]=t('
julia
Dϕ_approx(sm::AbstractScatteringModel, λ::Number, x::Number, y::Number)

Masm approximate phase structure function Dϕ(r, ϕ) at observing wavelength λ, first converting x and y into polar coordinates. Based on Equation 35 of Psaltis et al. 2018.

source

',3))]),i("details",O,[i("summary",null,[e[46]||(e[46]=i("a",{id:"ScatteringOptics.Dϕ_exact-Tuple{AbstractScatteringModel, Number, Number, Number}",href:"#ScatteringOptics.Dϕ_exact-Tuple{AbstractScatteringModel, Number, Number, Number}"},[i("span",{class:"jlbinding"},"ScatteringOptics.Dϕ_exact")],-1)),e[47]||(e[47]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[48]||(e[48]=t('
julia
Dϕ_exact(sm::AbstractScatteringModel, λ::Number, x::Number, y::Number)

Masm exact phase structure function Dϕ(r, ϕ) at observing wavelength λ, first converting x and y into the polar coordinates

source

',3))]),i("details",T,[i("summary",null,[e[49]||(e[49]=i("a",{id:"ScatteringOptics.calc_Dmaj-Tuple{AbstractScatteringModel, Number, Number}",href:"#ScatteringOptics.calc_Dmaj-Tuple{AbstractScatteringModel, Number, Number}"},[i("span",{class:"jlbinding"},"ScatteringOptics.calc_Dmaj")],-1)),e[50]||(e[50]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[51]||(e[51]=t('
julia
Dmaj(r, sm::AbstractScatteringModel)

Masm D_maj(r) for given r. Based on Equation 33 of Psaltis et al. 2018

source

',3))]),i("details",A,[i("summary",null,[e[52]||(e[52]=i("a",{id:"ScatteringOptics.calc_Dmin-Tuple{AbstractScatteringModel, Number, Number}",href:"#ScatteringOptics.calc_Dmin-Tuple{AbstractScatteringModel, Number, Number}"},[i("span",{class:"jlbinding"},"ScatteringOptics.calc_Dmin")],-1)),e[53]||(e[53]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[54]||(e[54]=t('
julia
calc_Dmin(r, sm::AbstractScatteringModel)

Masm D_min(r) for given r. Based on Equation 34 of Psaltis et al. 2018

source

',3))]),i("details",x,[i("summary",null,[e[55]||(e[55]=i("a",{id:"ScatteringOptics.dDϕ_dz-Tuple{AbstractScatteringModel, Number, Number, Number, Any}",href:"#ScatteringOptics.dDϕ_dz-Tuple{AbstractScatteringModel, Number, Number, Number, Any}"},[i("span",{class:"jlbinding"},"ScatteringOptics.dDϕ_dz")],-1)),e[56]||(e[56]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[57]||(e[57]=t('
julia
dDϕ_dz(sm::AbstractScatteringModel, λ::Number, r::Number, ϕ::Number, ϕq)

Differential contribution to the phase structure function.

source

',3))]),i("details",M,[i("summary",null,[e[58]||(e[58]=i("a",{id:"ScatteringOptics.ensembleaverage",href:"#ScatteringOptics.ensembleaverage"},[i("span",{class:"jlbinding"},"ScatteringOptics.ensembleaverage")],-1)),e[59]||(e[59]=a()),n(s,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[60]||(e[60]=t('
julia
ensembleaverage(sm::AbstractScatteringModel, skymodel::AbstractModel, νmodel)

source

',2))]),i("details",D,[i("summary",null,[e[61]||(e[61]=i("a",{id:"ScatteringOptics.ensembleaverage-Tuple{AbstractScatteringModel, ComradeBase.IntensityMap}",href:"#ScatteringOptics.ensembleaverage-Tuple{AbstractScatteringModel, ComradeBase.IntensityMap}"},[i("span",{class:"jlbinding"},"ScatteringOptics.ensembleaverage")],-1)),e[62]||(e[62]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[63]||(e[63]=t('
julia
ensembleaverage(sm::AbstractScatteringModel, imap::IntensityMap; νref=c_cgs)

source

',2))]),i("details",N,[i("summary",null,[e[64]||(e[64]=i("a",{id:"ScatteringOptics.findkzeta_exact-Tuple{ScatteringOptics.AbstractKzetaFinder}",href:"#ScatteringOptics.findkzeta_exact-Tuple{ScatteringOptics.AbstractKzetaFinder}"},[i("span",{class:"jlbinding"},"ScatteringOptics.findkzeta_exact")],-1)),e[65]||(e[65]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[66]||(e[66]=t('
julia
findkzeta_exact(finder::AbstractKzetaFinder; kwargs...)

Solves the equation for the concentration parameter k_ζ,2 given the set of parameters in the finder. It uses NonlinearSolve.jl.

source

',3))]),i("details",B,[i("summary",null,[e[67]||(e[67]=i("a",{id:"ScatteringOptics.get_rF-Tuple{AbstractPhaseScreen, Number}",href:"#ScatteringOptics.get_rF-Tuple{AbstractPhaseScreen, Number}"},[i("span",{class:"jlbinding"},"ScatteringOptics.get_rF")],-1)),e[68]||(e[68]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[69]||(e[69]=t('
julia
get_rF(psm::AbstractPhaseScreen, λ_cm)

Returns Fresnel scale corresponding to the given AvstractPhaseScreen object and observing wavelength, λ_cm

source

',3))]),i("details",_,[i("summary",null,[e[70]||(e[70]=i("a",{id:"ScatteringOptics.kernelmodel-Tuple{AbstractScatteringModel}",href:"#ScatteringOptics.kernelmodel-Tuple{AbstractScatteringModel}"},[i("span",{class:"jlbinding"},"ScatteringOptics.kernelmodel")],-1)),e[71]||(e[71]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[72]||(e[72]=t('
julia
kernelmodel(sm::AbstractScatteringModel; νref::Number=c_cgs, use_approx::Bool == true)

Return a Comrade Sky Model for the diffractive scattering kernel of the input scattering model.

** Keyword Argurments **

source

',5))]),i("details",P,[i("summary",null,[e[73]||(e[73]=i("a",{id:"ScatteringOptics.kzetafinder_equation-Tuple{Any, ScatteringOptics.AbstractKzetaFinder}",href:"#ScatteringOptics.kzetafinder_equation-Tuple{Any, ScatteringOptics.AbstractKzetaFinder}"},[i("span",{class:"jlbinding"},"ScatteringOptics.kzetafinder_equation")],-1)),e[74]||(e[74]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[75]||(e[75]=t('
julia
kzetafinder_equation(kzeta, finder::AbstractKzetaFinder)

This equation privide a root-finding function f(kzeta, finder) to find kzeta from the equation f(kzeta, finder)=0.

source

',3))]),i("details",w,[i("summary",null,[e[76]||(e[76]=i("a",{id:"ScatteringOptics.phase_screen-Tuple{AbstractPhaseScreen, Number}",href:"#ScatteringOptics.phase_screen-Tuple{AbstractPhaseScreen, Number}"},[i("span",{class:"jlbinding"},"ScatteringOptics.phase_screen")],-1)),e[77]||(e[77]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[78]||(e[78]=t('
julia
phase_screen(psm::AbstractPhaseScreen, λ_cm, noise_screen=nothing)

Generates a refractive phase screen, ϕ, using StationaryRandomFields.jl the power law noise procedure. The fourier space 2D noise_screen (defaults to gaussian noise screen if not given) is scaled by the power law, Q, defined in input AbstractPhaseScreen psm. The observing wavelength, λ_cm, must be given.

source

',3))]),i("details",z,[i("summary",null,[e[79]||(e[79]=i("a",{id:"ScatteringOptics.refractivephasescreen-Union{Tuple{T}, Tuple{S}, Tuple{S, ComradeBase.IntensityMap}, Tuple{S, ComradeBase.IntensityMap, T}, Tuple{S, ComradeBase.IntensityMap, T, T}} where {S, T}",href:"#ScatteringOptics.refractivephasescreen-Union{Tuple{T}, Tuple{S}, Tuple{S, ComradeBase.IntensityMap}, Tuple{S, ComradeBase.IntensityMap, T}, Tuple{S, ComradeBase.IntensityMap, T, T}} where {S, T}"},[i("span",{class:"jlbinding"},"ScatteringOptics.refractivephasescreen")],-1)),e[80]||(e[80]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[81]||(e[81]=t('
julia
refractivephasescreen(sm, im, Vx_km_per_s=0.0, Vy_km_per_s=0.0)

An abstract type for generating a refractive phase screen model corresponding to an image and computing the scattered average image.

source

',4))]),i("details",L,[i("summary",null,[e[82]||(e[82]=i("a",{id:"ScatteringOptics.scatter_image-Tuple{AbstractPhaseScreen, ComradeBase.IntensityMap}",href:"#ScatteringOptics.scatter_image-Tuple{AbstractPhaseScreen, ComradeBase.IntensityMap}"},[i("span",{class:"jlbinding"},"ScatteringOptics.scatter_image")],-1)),e[83]||(e[83]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[84]||(e[84]=t('
julia
scatter_image(psm::RefractivePhaseScreen, imap::IntensityMap; νref::Number = c_cgs, noise_screen=nothing)

Implements full ISM scattering on an unscattered Comrade skymodel intensity map (imap). Diffrective blurring and refractive phase screen generation are specific to the scattering parameters defined in the AbstractPhaseScreen model psm.

source

',3))]),i("details",K,[i("summary",null,[e[85]||(e[85]=i("a",{id:"ScatteringOptics.scatter_image-Tuple{AbstractScatteringModel, ComradeBase.IntensityMap}",href:"#ScatteringOptics.scatter_image-Tuple{AbstractScatteringModel, ComradeBase.IntensityMap}"},[i("span",{class:"jlbinding"},"ScatteringOptics.scatter_image")],-1)),e[86]||(e[86]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[87]||(e[87]=t('
julia
scatter_image(sm::AbstractScatteringModel, imap::IntensityMap, λ_cm::Number; νref::Number = c_cgs, rng = Random.default_rng())

source

',2))]),i("details",J,[i("summary",null,[e[88]||(e[88]=i("a",{id:"ScatteringOptics.visibility_point_approx-Tuple{AbstractScatteringModel, Number, Number, Number}",href:"#ScatteringOptics.visibility_point_approx-Tuple{AbstractScatteringModel, Number, Number, Number}"},[i("span",{class:"jlbinding"},"ScatteringOptics.visibility_point_approx")],-1)),e[89]||(e[89]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[90]||(e[90]=t('
julia
visibility_point_approx(sm::AbstractScatteringModel, λ::Number, u::Number, v::Number)

Compute the diffractive kernel for a given observing wavelength λ and fourier space coordinates u, v using the approximated formula of the phase structure function.

source

',3))]),i("details",H,[i("summary",null,[e[91]||(e[91]=i("a",{id:"ScatteringOptics.visibility_point_exact-Tuple{AbstractScatteringModel, Number, Number, Number}",href:"#ScatteringOptics.visibility_point_exact-Tuple{AbstractScatteringModel, Number, Number, Number}"},[i("span",{class:"jlbinding"},"ScatteringOptics.visibility_point_exact")],-1)),e[92]||(e[92]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[93]||(e[93]=t('
julia
visibility_point_exact(sm::AbstractScatteringModel, λ::Number, u::Number, v::Number)

Compute the diffractive kernel for a given observing wavelength λ and fourier space coordinates u, v using the exact formula of the phase structure function.

source

',3))]),i("details",I,[i("summary",null,[e[94]||(e[94]=i("a",{id:"ScatteringOptics.wrapped_grad-Tuple{Any, Any, Any}",href:"#ScatteringOptics.wrapped_grad-Tuple{Any, Any, Any}"},[i("span",{class:"jlbinding"},"ScatteringOptics.wrapped_grad")],-1)),e[95]||(e[95]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[96]||(e[96]=t('
julia
wrapped_grad(ϕ, dx, dy)

Returns the wrapped gradient of a given 2D phase screen. The x and y pixel sizes (dx and dy) must be given.

source

',3))])])}const Y=l(o,[["render",q]]);export{U as __pageData,Y as default}; +import{_ as l,c as r,a5 as t,j as e,a,G as n,B as p,o as c}from"./chunks/framework.DWm5V20y.js";const U=JSON.parse('{"title":"ScateringOptics.jl API","description":"","frontmatter":{},"headers":[],"relativePath":"api.md","filePath":"api.md","lastUpdated":null}'),o={name:"api.md"},d={class:"jldocstring custom-block",open:""},h={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},K={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},H={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""};function q(R,i,V,W,G,$){const s=p("Badge");return c(),r("div",null,[i[97]||(i[97]=t('

ScateringOptics.jl API

Index

Docstrings

',4)),e("details",d,[e("summary",null,[i[0]||(i[0]=e("a",{id:"ScatteringOptics.Params_Johnson2018",href:"#ScatteringOptics.Params_Johnson2018"},[e("span",{class:"jlbinding"},"ScatteringOptics.Params_Johnson2018")],-1)),i[1]||(i[1]=a()),n(s,{type:"info",class:"jlObjectType jlConstant",text:"Constant"})]),i[2]||(i[2]=e("p",null,"Best-fit parameters of the dipole scattering model derived in Johnson et al. 2018",-1)),i[3]||(i[3]=e("p",null,[e("a",{href:"./github.com/EHTJulia/ScatteringOptics.jl/blob/6c971c9abadc985b340a65e93d9cc5f665835f2d/src/scatteringmodels/commonfunctions.jl#L6-L8"},"source")],-1))]),e("details",h,[e("summary",null,[i[4]||(i[4]=e("a",{id:"ScatteringOptics.AbstractKzetaFinder",href:"#ScatteringOptics.AbstractKzetaFinder"},[e("span",{class:"jlbinding"},"ScatteringOptics.AbstractKzetaFinder")],-1)),i[5]||(i[5]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[6]||(i[6]=t('
julia
AbstractKzetaFinder

This is an abstract data type to set up equations and provide a solver for the concentration parameter k_ζ for an anistropic interstellar scattering model. See Psaltis et al. 2018, arxiv::1805.01242v1 for details.

Mandatory methods

Methods provided

source

',7))]),e("details",g,[e("summary",null,[i[7]||(i[7]=e("a",{id:"ScatteringOptics.AbstractScatteringKernel",href:"#ScatteringOptics.AbstractScatteringKernel"},[e("span",{class:"jlbinding"},"ScatteringOptics.AbstractScatteringKernel")],-1)),i[8]||(i[8]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[9]||(i[9]=t('
julia
abstract type AbstractScatteringKernel{T} <: ComradeBase.AbstractModel

An abstract Comrade Sky Model for the diffractive scattering kernel. These are usually primitive models, and are usually analytic in Fourier but not analytic in the image domain. As a result a user only needs to implement the following methods.

source

',4))]),e("details",k,[e("summary",null,[i[10]||(i[10]=e("a",{id:"ScatteringOptics.AbstractScatteringModel",href:"#ScatteringOptics.AbstractScatteringModel"},[e("span",{class:"jlbinding"},"ScatteringOptics.AbstractScatteringModel")],-1)),i[11]||(i[11]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[12]||(i[12]=t('
julia
abstract type AbstractScatteringModel

An abstract anistropic scattering model based on a thin-screen approximation. In this package, we provide a reference implementation of the dipole (DipoleScatteringModel), von Mises (vonMisesScatteringModel) and periodic Box Car models (PeriodicBoxCarScatteringModel) all introduced in Psaltis et al. 2018.

Mandatory fields The scattering model will be fundamentally governed by the following parameters. Ideally, a subtype of this abstract model should have a constructor only with these arguments.

Furthermore the following parameters need to be precomputed.

Optional Fields Followings are currently not used by methods but may be useful to have.

Mandatory Method

source

',11))]),e("details",u,[e("summary",null,[i[13]||(i[13]=e("a",{id:"ScatteringOptics.ApproximatedScatteringKernel",href:"#ScatteringOptics.ApproximatedScatteringKernel"},[e("span",{class:"jlbinding"},"ScatteringOptics.ApproximatedScatteringKernel")],-1)),i[14]||(i[14]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[15]||(i[15]=t('
julia
struct ApproximatedScatteringKernel{T, S, N} <: AbstractScatteringKernel{T}

A Comrade VLBI Sky Model for the scattering kernel based on a Scattering Model sm <: AbstractScatteringModel using the fast approximation formula in Psaltis et al. (2018).

If T isn't given, T defaults to Float64

source

',4))]),e("details",b,[e("summary",null,[i[16]||(i[16]=e("a",{id:"ScatteringOptics.DipoleScatteringModel",href:"#ScatteringOptics.DipoleScatteringModel"},[e("span",{class:"jlbinding"},"ScatteringOptics.DipoleScatteringModel")],-1)),i[17]||(i[17]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[18]||(i[18]=t('
julia
struct DipoleScatteringModel{T<:Number} <: AbstractScatteringModel

An anistropic scattering model based on a thin-screen approximation. This scattering model adopts the dipole field wonder described in Psaltis et al. 2018.

** Keywords for the constructor ** The default numbers are based on the best-fit parameters presented in Johnson et al. 2018.

source

',5))]),e("details",m,[e("summary",null,[i[19]||(i[19]=e("a",{id:"ScatteringOptics.Dipole_KzetaFinder",href:"#ScatteringOptics.Dipole_KzetaFinder"},[e("span",{class:"jlbinding"},"ScatteringOptics.Dipole_KzetaFinder")],-1)),i[20]||(i[20]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[21]||(i[21]=t('
julia
struct Dipole_KzetaFinder{T<:Number} <: ScatteringOptics.AbstractKzetaFinder

The finder of the concentration parameter k_ζ,2 for dipole anistropic scattering models. See Psaltis et al. 2018, arxiv::1805.01242v1 for details. The equation for k_ζ,2 is given by the equation 43 of Psaltis et al. 2018.

Mandatory fields

source

',5))]),e("details",y,[e("summary",null,[i[22]||(i[22]=e("a",{id:"ScatteringOptics.ExactScatteringKernel",href:"#ScatteringOptics.ExactScatteringKernel"},[e("span",{class:"jlbinding"},"ScatteringOptics.ExactScatteringKernel")],-1)),i[23]||(i[23]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[24]||(i[24]=t('
julia
struct ExactScatteringKernel{T, S, N} <: AbstractScatteringKernel{T}

A Comrade VLBI Sky Model for the scattering kernel based on a Scattering Model sm <: AbstractScatteringModel using the exact formula in Psaltis et al. (2018).

By default if T isn't given, T defaults to Float64

source

',4))]),e("details",f,[e("summary",null,[i[25]||(i[25]=e("a",{id:"ScatteringOptics.PeriodicBoxCarScatteringModel",href:"#ScatteringOptics.PeriodicBoxCarScatteringModel"},[e("span",{class:"jlbinding"},"ScatteringOptics.PeriodicBoxCarScatteringModel")],-1)),i[26]||(i[26]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[27]||(i[27]=t('
julia
struct PeriodicBoxCarScatteringModel{T<:Number} <: AbstractScatteringModel

An anistropic scattering model based on a thin-screen approximation. This scattering adopts the periodic boxcar field wonder described in Psaltis et al. 2018.

** Keywords for the constructor ** The default numbers are based on the best-fit parameters presented in Johnson et al. 2018.

source

',5))]),e("details",E,[e("summary",null,[i[28]||(i[28]=e("a",{id:"ScatteringOptics.PeriodicBoxCar_KzetaFinder",href:"#ScatteringOptics.PeriodicBoxCar_KzetaFinder"},[e("span",{class:"jlbinding"},"ScatteringOptics.PeriodicBoxCar_KzetaFinder")],-1)),i[29]||(i[29]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[30]||(i[30]=t('
julia
struct PeriodicBoxCar_KzetaFinder{T<:Number} <: ScatteringOptics.AbstractKzetaFinder

The finder of the concentration parameter k_ζ,3 for the Periodic Box Car anistropic scattering model. See Psaltis et al. 2018, arxiv::1805.01242v1 for details. The equation for k_ζ,3 is given by the equation 47 of Psaltis et al. 2018.

Mandatory fields

source

',5))]),e("details",S,[e("summary",null,[i[31]||(i[31]=e("a",{id:"ScatteringOptics.PhaseScreenPowerLaw",href:"#ScatteringOptics.PhaseScreenPowerLaw"},[e("span",{class:"jlbinding"},"ScatteringOptics.PhaseScreenPowerLaw")],-1)),i[32]||(i[32]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[33]||(i[33]=t('
julia
$(TYPEDEF)

Power spectrum model of ISM fluctuations, for use in generating a RefractivePhaseScreen object. Requires an AbstractScatteringModel for scattering parameters as well as image x and y pixel sizes. Optional input of velocity in x and y direction for moving phase screen.

Fields

FIELDS

source

',5))]),e("details",j,[e("summary",null,[i[34]||(i[34]=e("a",{id:"ScatteringOptics.RefractivePhaseScreen",href:"#ScatteringOptics.RefractivePhaseScreen"},[e("span",{class:"jlbinding"},"ScatteringOptics.RefractivePhaseScreen")],-1)),i[35]||(i[35]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[36]||(i[36]=t('
julia
RefractivePhaseScreen(sm, Nx, Ny, dx, dy, Vx_km_per_s=0.0, Vy_km_per_s=0.0)

An abstract type for generating a refractive phase screen model corresponding to an image and computing the scattered average image.

Vx_km_per_s and Vy_km_per_s are optional for moving phase screen.

source

',5))]),e("details",v,[e("summary",null,[i[37]||(i[37]=e("a",{id:"ScatteringOptics.vonMisesScatteringModel",href:"#ScatteringOptics.vonMisesScatteringModel"},[e("span",{class:"jlbinding"},"ScatteringOptics.vonMisesScatteringModel")],-1)),i[38]||(i[38]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[39]||(i[39]=t('
julia
struct vonMisesScatteringModel{T<:Number} <: AbstractScatteringModel

An anistropic scattering model based on a thin-screen approximation. This scattering adopts the von Mises field wonder described in Psaltis et al. 2018.

** Keywords for the constructor ** The default numbers are based on the best-fit parameters presented in Johnson et al. 2018.

source

',5))]),e("details",F,[e("summary",null,[i[40]||(i[40]=e("a",{id:"ScatteringOptics.vonMises_KzetaFinder",href:"#ScatteringOptics.vonMises_KzetaFinder"},[e("span",{class:"jlbinding"},"ScatteringOptics.vonMises_KzetaFinder")],-1)),i[41]||(i[41]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[42]||(i[42]=t('
julia
struct vonMises_KzetaFinder{T<:Number} <: ScatteringOptics.AbstractKzetaFinder

The finder of the concentration parameter k_ζ,1 for the von Mises anistropic scattering model. See Psaltis et al. 2018, arxiv::1805.01242v1 for details. The equation for k_ζ,1 is originally given by the equation 37 of Psaltis et al. 2018, but this is different in the implementation of Johnson et al. 2018 in eht-imaging library. We follow eht-imaging's implementation.

Mandatory fields

source

',5))]),e("details",C,[e("summary",null,[i[43]||(i[43]=e("a",{id:"ScatteringOptics.Dϕ_approx-Tuple{AbstractScatteringModel, Number, Number, Number}",href:"#ScatteringOptics.Dϕ_approx-Tuple{AbstractScatteringModel, Number, Number, Number}"},[e("span",{class:"jlbinding"},"ScatteringOptics.Dϕ_approx")],-1)),i[44]||(i[44]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[45]||(i[45]=t('
julia
Dϕ_approx(sm::AbstractScatteringModel, λ::Number, x::Number, y::Number)

Masm approximate phase structure function Dϕ(r, ϕ) at observing wavelength λ, first converting x and y into polar coordinates. Based on Equation 35 of Psaltis et al. 2018.

source

',3))]),e("details",O,[e("summary",null,[i[46]||(i[46]=e("a",{id:"ScatteringOptics.Dϕ_exact-Tuple{AbstractScatteringModel, Number, Number, Number}",href:"#ScatteringOptics.Dϕ_exact-Tuple{AbstractScatteringModel, Number, Number, Number}"},[e("span",{class:"jlbinding"},"ScatteringOptics.Dϕ_exact")],-1)),i[47]||(i[47]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[48]||(i[48]=t('
julia
Dϕ_exact(sm::AbstractScatteringModel, λ::Number, x::Number, y::Number)

Masm exact phase structure function Dϕ(r, ϕ) at observing wavelength λ, first converting x and y into the polar coordinates

source

',3))]),e("details",T,[e("summary",null,[i[49]||(i[49]=e("a",{id:"ScatteringOptics.calc_Dmaj-Tuple{AbstractScatteringModel, Number, Number}",href:"#ScatteringOptics.calc_Dmaj-Tuple{AbstractScatteringModel, Number, Number}"},[e("span",{class:"jlbinding"},"ScatteringOptics.calc_Dmaj")],-1)),i[50]||(i[50]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[51]||(i[51]=t('
julia
Dmaj(r, sm::AbstractScatteringModel)

Masm D_maj(r) for given r. Based on Equation 33 of Psaltis et al. 2018

source

',3))]),e("details",A,[e("summary",null,[i[52]||(i[52]=e("a",{id:"ScatteringOptics.calc_Dmin-Tuple{AbstractScatteringModel, Number, Number}",href:"#ScatteringOptics.calc_Dmin-Tuple{AbstractScatteringModel, Number, Number}"},[e("span",{class:"jlbinding"},"ScatteringOptics.calc_Dmin")],-1)),i[53]||(i[53]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[54]||(i[54]=t('
julia
calc_Dmin(r, sm::AbstractScatteringModel)

Masm D_min(r) for given r. Based on Equation 34 of Psaltis et al. 2018

source

',3))]),e("details",x,[e("summary",null,[i[55]||(i[55]=e("a",{id:"ScatteringOptics.dDϕ_dz-Tuple{AbstractScatteringModel, Number, Number, Number, Any}",href:"#ScatteringOptics.dDϕ_dz-Tuple{AbstractScatteringModel, Number, Number, Number, Any}"},[e("span",{class:"jlbinding"},"ScatteringOptics.dDϕ_dz")],-1)),i[56]||(i[56]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[57]||(i[57]=t('
julia
dDϕ_dz(sm::AbstractScatteringModel, λ::Number, r::Number, ϕ::Number, ϕq)

Differential contribution to the phase structure function.

source

',3))]),e("details",M,[e("summary",null,[i[58]||(i[58]=e("a",{id:"ScatteringOptics.ensembleaverage",href:"#ScatteringOptics.ensembleaverage"},[e("span",{class:"jlbinding"},"ScatteringOptics.ensembleaverage")],-1)),i[59]||(i[59]=a()),n(s,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[60]||(i[60]=t('
julia
ensembleaverage(sm::AbstractScatteringModel, skymodel::AbstractModel, νmodel)

source

',2))]),e("details",D,[e("summary",null,[i[61]||(i[61]=e("a",{id:"ScatteringOptics.ensembleaverage-Tuple{AbstractScatteringModel, ComradeBase.IntensityMap}",href:"#ScatteringOptics.ensembleaverage-Tuple{AbstractScatteringModel, ComradeBase.IntensityMap}"},[e("span",{class:"jlbinding"},"ScatteringOptics.ensembleaverage")],-1)),i[62]||(i[62]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[63]||(i[63]=t('
julia
ensembleaverage(sm::AbstractScatteringModel, imap::IntensityMap; νref=c_cgs)

source

',2))]),e("details",N,[e("summary",null,[i[64]||(i[64]=e("a",{id:"ScatteringOptics.findkzeta_exact-Tuple{ScatteringOptics.AbstractKzetaFinder}",href:"#ScatteringOptics.findkzeta_exact-Tuple{ScatteringOptics.AbstractKzetaFinder}"},[e("span",{class:"jlbinding"},"ScatteringOptics.findkzeta_exact")],-1)),i[65]||(i[65]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[66]||(i[66]=t('
julia
findkzeta_exact(finder::AbstractKzetaFinder; kwargs...)

Solves the equation for the concentration parameter k_ζ,2 given the set of parameters in the finder. It uses NonlinearSolve.jl.

source

',3))]),e("details",B,[e("summary",null,[i[67]||(i[67]=e("a",{id:"ScatteringOptics.get_rF-Tuple{AbstractPhaseScreen, Number}",href:"#ScatteringOptics.get_rF-Tuple{AbstractPhaseScreen, Number}"},[e("span",{class:"jlbinding"},"ScatteringOptics.get_rF")],-1)),i[68]||(i[68]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[69]||(i[69]=t('
julia
get_rF(psm::AbstractPhaseScreen, λ_cm)

Returns Fresnel scale corresponding to the given AvstractPhaseScreen object and observing wavelength, λ_cm

source

',3))]),e("details",_,[e("summary",null,[i[70]||(i[70]=e("a",{id:"ScatteringOptics.kernelmodel-Tuple{AbstractScatteringModel}",href:"#ScatteringOptics.kernelmodel-Tuple{AbstractScatteringModel}"},[e("span",{class:"jlbinding"},"ScatteringOptics.kernelmodel")],-1)),i[71]||(i[71]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[72]||(i[72]=t('
julia
kernelmodel(sm::AbstractScatteringModel; νref::Number=c_cgs, use_approx::Bool == true)

Return a Comrade Sky Model for the diffractive scattering kernel of the input scattering model.

** Keyword Argurments **

source

',5))]),e("details",P,[e("summary",null,[i[73]||(i[73]=e("a",{id:"ScatteringOptics.kzetafinder_equation-Tuple{Any, ScatteringOptics.AbstractKzetaFinder}",href:"#ScatteringOptics.kzetafinder_equation-Tuple{Any, ScatteringOptics.AbstractKzetaFinder}"},[e("span",{class:"jlbinding"},"ScatteringOptics.kzetafinder_equation")],-1)),i[74]||(i[74]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[75]||(i[75]=t('
julia
kzetafinder_equation(kzeta, finder::AbstractKzetaFinder)

This equation privide a root-finding function f(kzeta, finder) to find kzeta from the equation f(kzeta, finder)=0.

source

',3))]),e("details",w,[e("summary",null,[i[76]||(i[76]=e("a",{id:"ScatteringOptics.phase_screen-Tuple{AbstractPhaseScreen, Number}",href:"#ScatteringOptics.phase_screen-Tuple{AbstractPhaseScreen, Number}"},[e("span",{class:"jlbinding"},"ScatteringOptics.phase_screen")],-1)),i[77]||(i[77]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[78]||(i[78]=t('
julia
phase_screen(psm::AbstractPhaseScreen, λ_cm, noise_screen=nothing)

Generates a refractive phase screen, ϕ, using StationaryRandomFields.jl the power law noise procedure. The fourier space 2D noise_screen (defaults to gaussian noise screen if not given) is scaled by the power law, Q, defined in input AbstractPhaseScreen psm. The observing wavelength, λ_cm, must be given.

source

',3))]),e("details",z,[e("summary",null,[i[79]||(i[79]=e("a",{id:"ScatteringOptics.refractivephasescreen-Union{Tuple{T}, Tuple{S}, Tuple{S, ComradeBase.IntensityMap}, Tuple{S, ComradeBase.IntensityMap, T}, Tuple{S, ComradeBase.IntensityMap, T, T}} where {S, T}",href:"#ScatteringOptics.refractivephasescreen-Union{Tuple{T}, Tuple{S}, Tuple{S, ComradeBase.IntensityMap}, Tuple{S, ComradeBase.IntensityMap, T}, Tuple{S, ComradeBase.IntensityMap, T, T}} where {S, T}"},[e("span",{class:"jlbinding"},"ScatteringOptics.refractivephasescreen")],-1)),i[80]||(i[80]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[81]||(i[81]=t('
julia
refractivephasescreen(sm, im, Vx_km_per_s=0.0, Vy_km_per_s=0.0)

An abstract type for generating a refractive phase screen model corresponding to an image and computing the scattered average image.

source

',4))]),e("details",L,[e("summary",null,[i[82]||(i[82]=e("a",{id:"ScatteringOptics.scatter_image-Tuple{AbstractPhaseScreen, ComradeBase.IntensityMap}",href:"#ScatteringOptics.scatter_image-Tuple{AbstractPhaseScreen, ComradeBase.IntensityMap}"},[e("span",{class:"jlbinding"},"ScatteringOptics.scatter_image")],-1)),i[83]||(i[83]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[84]||(i[84]=t('
julia
scatter_image(psm::RefractivePhaseScreen, imap::IntensityMap; νref::Number = c_cgs, noise_screen=nothing)

Implements full ISM scattering on an unscattered Comrade skymodel intensity map (imap). Diffrective blurring and refractive phase screen generation are specific to the scattering parameters defined in the AbstractPhaseScreen model psm.

source

',3))]),e("details",K,[e("summary",null,[i[85]||(i[85]=e("a",{id:"ScatteringOptics.scatter_image-Tuple{AbstractScatteringModel, ComradeBase.IntensityMap}",href:"#ScatteringOptics.scatter_image-Tuple{AbstractScatteringModel, ComradeBase.IntensityMap}"},[e("span",{class:"jlbinding"},"ScatteringOptics.scatter_image")],-1)),i[86]||(i[86]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[87]||(i[87]=t('
julia
scatter_image(sm::AbstractScatteringModel, imap::IntensityMap, λ_cm::Number; νref::Number = c_cgs, rng = Random.default_rng())

source

',2))]),e("details",J,[e("summary",null,[i[88]||(i[88]=e("a",{id:"ScatteringOptics.visibility_point_approx-Tuple{AbstractScatteringModel, Number, Number, Number}",href:"#ScatteringOptics.visibility_point_approx-Tuple{AbstractScatteringModel, Number, Number, Number}"},[e("span",{class:"jlbinding"},"ScatteringOptics.visibility_point_approx")],-1)),i[89]||(i[89]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[90]||(i[90]=t('
julia
visibility_point_approx(sm::AbstractScatteringModel, λ::Number, u::Number, v::Number)

Compute the diffractive kernel for a given observing wavelength λ and fourier space coordinates u, v using the approximated formula of the phase structure function.

source

',3))]),e("details",H,[e("summary",null,[i[91]||(i[91]=e("a",{id:"ScatteringOptics.visibility_point_exact-Tuple{AbstractScatteringModel, Number, Number, Number}",href:"#ScatteringOptics.visibility_point_exact-Tuple{AbstractScatteringModel, Number, Number, Number}"},[e("span",{class:"jlbinding"},"ScatteringOptics.visibility_point_exact")],-1)),i[92]||(i[92]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[93]||(i[93]=t('
julia
visibility_point_exact(sm::AbstractScatteringModel, λ::Number, u::Number, v::Number)

Compute the diffractive kernel for a given observing wavelength λ and fourier space coordinates u, v using the exact formula of the phase structure function.

source

',3))]),e("details",I,[e("summary",null,[i[94]||(i[94]=e("a",{id:"ScatteringOptics.wrapped_grad-Tuple{Any, Any, Any}",href:"#ScatteringOptics.wrapped_grad-Tuple{Any, Any, Any}"},[e("span",{class:"jlbinding"},"ScatteringOptics.wrapped_grad")],-1)),i[95]||(i[95]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[96]||(i[96]=t('
julia
wrapped_grad(ϕ, dx, dy)

Returns the wrapped gradient of a given 2D phase screen. The x and y pixel sizes (dx and dy) must be given.

source

',3))])])}const Y=l(o,[["render",q]]);export{U as __pageData,Y as default}; diff --git a/dev/assets/api.md.BZ9O_dq1.lean.js b/dev/assets/api.md.BNWtEMfY.lean.js similarity index 77% rename from dev/assets/api.md.BZ9O_dq1.lean.js rename to dev/assets/api.md.BNWtEMfY.lean.js index 008d189..b05e757 100644 --- a/dev/assets/api.md.BZ9O_dq1.lean.js +++ b/dev/assets/api.md.BNWtEMfY.lean.js @@ -1 +1 @@ -import{_ as l,c as r,a5 as t,j as i,a,G as n,B as p,o as c}from"./chunks/framework.DWm5V20y.js";const U=JSON.parse('{"title":"ScateringOptics.jl API","description":"","frontmatter":{},"headers":[],"relativePath":"api.md","filePath":"api.md","lastUpdated":null}'),o={name:"api.md"},d={class:"jldocstring custom-block",open:""},h={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},K={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},H={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""};function q(R,e,V,W,G,$){const s=p("Badge");return c(),r("div",null,[e[97]||(e[97]=t('

ScateringOptics.jl API

Index

Docstrings

',4)),i("details",d,[i("summary",null,[e[0]||(e[0]=i("a",{id:"ScatteringOptics.Params_Johnson2018",href:"#ScatteringOptics.Params_Johnson2018"},[i("span",{class:"jlbinding"},"ScatteringOptics.Params_Johnson2018")],-1)),e[1]||(e[1]=a()),n(s,{type:"info",class:"jlObjectType jlConstant",text:"Constant"})]),e[2]||(e[2]=i("p",null,"Best-fit parameters of the dipole scattering model derived in Johnson et al. 2018",-1)),e[3]||(e[3]=i("p",null,[i("a",{href:"./github.com/EHTJulia/ScatteringOptics.jl/blob/463c8011e95c7ccd9e9341b1b89d121cff54188e/src/scatteringmodels/commonfunctions.jl#L6-L8"},"source")],-1))]),i("details",h,[i("summary",null,[e[4]||(e[4]=i("a",{id:"ScatteringOptics.AbstractKzetaFinder",href:"#ScatteringOptics.AbstractKzetaFinder"},[i("span",{class:"jlbinding"},"ScatteringOptics.AbstractKzetaFinder")],-1)),e[5]||(e[5]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[6]||(e[6]=t('
julia
AbstractKzetaFinder

This is an abstract data type to set up equations and provide a solver for the concentration parameter k_ζ for an anistropic interstellar scattering model. See Psaltis et al. 2018, arxiv::1805.01242v1 for details.

Mandatory methods

Methods provided

source

',7))]),i("details",g,[i("summary",null,[e[7]||(e[7]=i("a",{id:"ScatteringOptics.AbstractScatteringKernel",href:"#ScatteringOptics.AbstractScatteringKernel"},[i("span",{class:"jlbinding"},"ScatteringOptics.AbstractScatteringKernel")],-1)),e[8]||(e[8]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[9]||(e[9]=t('
julia
abstract type AbstractScatteringKernel{T} <: ComradeBase.AbstractModel

An abstract Comrade Sky Model for the diffractive scattering kernel. These are usually primitive models, and are usually analytic in Fourier but not analytic in the image domain. As a result a user only needs to implement the following methods.

source

',4))]),i("details",k,[i("summary",null,[e[10]||(e[10]=i("a",{id:"ScatteringOptics.AbstractScatteringModel",href:"#ScatteringOptics.AbstractScatteringModel"},[i("span",{class:"jlbinding"},"ScatteringOptics.AbstractScatteringModel")],-1)),e[11]||(e[11]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[12]||(e[12]=t('
julia
abstract type AbstractScatteringModel

An abstract anistropic scattering model based on a thin-screen approximation. In this package, we provide a reference implementation of the dipole (DipoleScatteringModel), von Mises (vonMisesScatteringModel) and periodic Box Car models (PeriodicBoxCarScatteringModel) all introduced in Psaltis et al. 2018.

Mandatory fields The scattering model will be fundamentally governed by the following parameters. Ideally, a subtype of this abstract model should have a constructor only with these arguments.

Furthermore the following parameters need to be precomputed.

Optional Fields Followings are currently not used by methods but may be useful to have.

Mandatory Method

source

',11))]),i("details",u,[i("summary",null,[e[13]||(e[13]=i("a",{id:"ScatteringOptics.ApproximatedScatteringKernel",href:"#ScatteringOptics.ApproximatedScatteringKernel"},[i("span",{class:"jlbinding"},"ScatteringOptics.ApproximatedScatteringKernel")],-1)),e[14]||(e[14]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[15]||(e[15]=t('
julia
struct ApproximatedScatteringKernel{T, S, N} <: AbstractScatteringKernel{T}

A Comrade VLBI Sky Model for the scattering kernel based on a Scattering Model sm <: AbstractScatteringModel using the fast approximation formula in Psaltis et al. (2018).

If T isn't given, T defaults to Float64

source

',4))]),i("details",b,[i("summary",null,[e[16]||(e[16]=i("a",{id:"ScatteringOptics.DipoleScatteringModel",href:"#ScatteringOptics.DipoleScatteringModel"},[i("span",{class:"jlbinding"},"ScatteringOptics.DipoleScatteringModel")],-1)),e[17]||(e[17]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[18]||(e[18]=t('
julia
struct DipoleScatteringModel{T<:Number} <: AbstractScatteringModel

An anistropic scattering model based on a thin-screen approximation. This scattering model adopts the dipole field wonder described in Psaltis et al. 2018.

** Keywords for the constructor ** The default numbers are based on the best-fit parameters presented in Johnson et al. 2018.

source

',5))]),i("details",m,[i("summary",null,[e[19]||(e[19]=i("a",{id:"ScatteringOptics.Dipole_KzetaFinder",href:"#ScatteringOptics.Dipole_KzetaFinder"},[i("span",{class:"jlbinding"},"ScatteringOptics.Dipole_KzetaFinder")],-1)),e[20]||(e[20]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[21]||(e[21]=t('
julia
struct Dipole_KzetaFinder{T<:Number} <: ScatteringOptics.AbstractKzetaFinder

The finder of the concentration parameter k_ζ,2 for dipole anistropic scattering models. See Psaltis et al. 2018, arxiv::1805.01242v1 for details. The equation for k_ζ,2 is given by the equation 43 of Psaltis et al. 2018.

Mandatory fields

source

',5))]),i("details",y,[i("summary",null,[e[22]||(e[22]=i("a",{id:"ScatteringOptics.ExactScatteringKernel",href:"#ScatteringOptics.ExactScatteringKernel"},[i("span",{class:"jlbinding"},"ScatteringOptics.ExactScatteringKernel")],-1)),e[23]||(e[23]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[24]||(e[24]=t('
julia
struct ExactScatteringKernel{T, S, N} <: AbstractScatteringKernel{T}

A Comrade VLBI Sky Model for the scattering kernel based on a Scattering Model sm <: AbstractScatteringModel using the exact formula in Psaltis et al. (2018).

By default if T isn't given, T defaults to Float64

source

',4))]),i("details",f,[i("summary",null,[e[25]||(e[25]=i("a",{id:"ScatteringOptics.PeriodicBoxCarScatteringModel",href:"#ScatteringOptics.PeriodicBoxCarScatteringModel"},[i("span",{class:"jlbinding"},"ScatteringOptics.PeriodicBoxCarScatteringModel")],-1)),e[26]||(e[26]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[27]||(e[27]=t('
julia
struct PeriodicBoxCarScatteringModel{T<:Number} <: AbstractScatteringModel

An anistropic scattering model based on a thin-screen approximation. This scattering adopts the periodic boxcar field wonder described in Psaltis et al. 2018.

** Keywords for the constructor ** The default numbers are based on the best-fit parameters presented in Johnson et al. 2018.

source

',5))]),i("details",E,[i("summary",null,[e[28]||(e[28]=i("a",{id:"ScatteringOptics.PeriodicBoxCar_KzetaFinder",href:"#ScatteringOptics.PeriodicBoxCar_KzetaFinder"},[i("span",{class:"jlbinding"},"ScatteringOptics.PeriodicBoxCar_KzetaFinder")],-1)),e[29]||(e[29]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[30]||(e[30]=t('
julia
struct PeriodicBoxCar_KzetaFinder{T<:Number} <: ScatteringOptics.AbstractKzetaFinder

The finder of the concentration parameter k_ζ,3 for the Periodic Box Car anistropic scattering model. See Psaltis et al. 2018, arxiv::1805.01242v1 for details. The equation for k_ζ,3 is given by the equation 47 of Psaltis et al. 2018.

Mandatory fields

source

',5))]),i("details",S,[i("summary",null,[e[31]||(e[31]=i("a",{id:"ScatteringOptics.PhaseScreenPowerLaw",href:"#ScatteringOptics.PhaseScreenPowerLaw"},[i("span",{class:"jlbinding"},"ScatteringOptics.PhaseScreenPowerLaw")],-1)),e[32]||(e[32]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[33]||(e[33]=t('
julia
$(TYPEDEF)

Power spectrum model of ISM fluctuations, for use in generating a RefractivePhaseScreen object. Requires an AbstractScatteringModel for scattering parameters as well as image x and y pixel sizes. Optional input of velocity in x and y direction for moving phase screen.

Fields

FIELDS

source

',5))]),i("details",j,[i("summary",null,[e[34]||(e[34]=i("a",{id:"ScatteringOptics.RefractivePhaseScreen",href:"#ScatteringOptics.RefractivePhaseScreen"},[i("span",{class:"jlbinding"},"ScatteringOptics.RefractivePhaseScreen")],-1)),e[35]||(e[35]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[36]||(e[36]=t('
julia
RefractivePhaseScreen(sm, Nx, Ny, dx, dy, Vx_km_per_s=0.0, Vy_km_per_s=0.0)

An abstract type for generating a refractive phase screen model corresponding to an image and computing the scattered average image.

Vx_km_per_s and Vy_km_per_s are optional for moving phase screen.

source

',5))]),i("details",v,[i("summary",null,[e[37]||(e[37]=i("a",{id:"ScatteringOptics.vonMisesScatteringModel",href:"#ScatteringOptics.vonMisesScatteringModel"},[i("span",{class:"jlbinding"},"ScatteringOptics.vonMisesScatteringModel")],-1)),e[38]||(e[38]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[39]||(e[39]=t('
julia
struct vonMisesScatteringModel{T<:Number} <: AbstractScatteringModel

An anistropic scattering model based on a thin-screen approximation. This scattering adopts the von Mises field wonder described in Psaltis et al. 2018.

** Keywords for the constructor ** The default numbers are based on the best-fit parameters presented in Johnson et al. 2018.

source

',5))]),i("details",F,[i("summary",null,[e[40]||(e[40]=i("a",{id:"ScatteringOptics.vonMises_KzetaFinder",href:"#ScatteringOptics.vonMises_KzetaFinder"},[i("span",{class:"jlbinding"},"ScatteringOptics.vonMises_KzetaFinder")],-1)),e[41]||(e[41]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[42]||(e[42]=t('
julia
struct vonMises_KzetaFinder{T<:Number} <: ScatteringOptics.AbstractKzetaFinder

The finder of the concentration parameter k_ζ,1 for the von Mises anistropic scattering model. See Psaltis et al. 2018, arxiv::1805.01242v1 for details. The equation for k_ζ,1 is originally given by the equation 37 of Psaltis et al. 2018, but this is different in the implementation of Johnson et al. 2018 in eht-imaging library. We follow eht-imaging's implementation.

Mandatory fields

source

',5))]),i("details",C,[i("summary",null,[e[43]||(e[43]=i("a",{id:"ScatteringOptics.Dϕ_approx-Tuple{AbstractScatteringModel, Number, Number, Number}",href:"#ScatteringOptics.Dϕ_approx-Tuple{AbstractScatteringModel, Number, Number, Number}"},[i("span",{class:"jlbinding"},"ScatteringOptics.Dϕ_approx")],-1)),e[44]||(e[44]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[45]||(e[45]=t('
julia
Dϕ_approx(sm::AbstractScatteringModel, λ::Number, x::Number, y::Number)

Masm approximate phase structure function Dϕ(r, ϕ) at observing wavelength λ, first converting x and y into polar coordinates. Based on Equation 35 of Psaltis et al. 2018.

source

',3))]),i("details",O,[i("summary",null,[e[46]||(e[46]=i("a",{id:"ScatteringOptics.Dϕ_exact-Tuple{AbstractScatteringModel, Number, Number, Number}",href:"#ScatteringOptics.Dϕ_exact-Tuple{AbstractScatteringModel, Number, Number, Number}"},[i("span",{class:"jlbinding"},"ScatteringOptics.Dϕ_exact")],-1)),e[47]||(e[47]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[48]||(e[48]=t('
julia
Dϕ_exact(sm::AbstractScatteringModel, λ::Number, x::Number, y::Number)

Masm exact phase structure function Dϕ(r, ϕ) at observing wavelength λ, first converting x and y into the polar coordinates

source

',3))]),i("details",T,[i("summary",null,[e[49]||(e[49]=i("a",{id:"ScatteringOptics.calc_Dmaj-Tuple{AbstractScatteringModel, Number, Number}",href:"#ScatteringOptics.calc_Dmaj-Tuple{AbstractScatteringModel, Number, Number}"},[i("span",{class:"jlbinding"},"ScatteringOptics.calc_Dmaj")],-1)),e[50]||(e[50]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[51]||(e[51]=t('
julia
Dmaj(r, sm::AbstractScatteringModel)

Masm D_maj(r) for given r. Based on Equation 33 of Psaltis et al. 2018

source

',3))]),i("details",A,[i("summary",null,[e[52]||(e[52]=i("a",{id:"ScatteringOptics.calc_Dmin-Tuple{AbstractScatteringModel, Number, Number}",href:"#ScatteringOptics.calc_Dmin-Tuple{AbstractScatteringModel, Number, Number}"},[i("span",{class:"jlbinding"},"ScatteringOptics.calc_Dmin")],-1)),e[53]||(e[53]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[54]||(e[54]=t('
julia
calc_Dmin(r, sm::AbstractScatteringModel)

Masm D_min(r) for given r. Based on Equation 34 of Psaltis et al. 2018

source

',3))]),i("details",x,[i("summary",null,[e[55]||(e[55]=i("a",{id:"ScatteringOptics.dDϕ_dz-Tuple{AbstractScatteringModel, Number, Number, Number, Any}",href:"#ScatteringOptics.dDϕ_dz-Tuple{AbstractScatteringModel, Number, Number, Number, Any}"},[i("span",{class:"jlbinding"},"ScatteringOptics.dDϕ_dz")],-1)),e[56]||(e[56]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[57]||(e[57]=t('
julia
dDϕ_dz(sm::AbstractScatteringModel, λ::Number, r::Number, ϕ::Number, ϕq)

Differential contribution to the phase structure function.

source

',3))]),i("details",M,[i("summary",null,[e[58]||(e[58]=i("a",{id:"ScatteringOptics.ensembleaverage",href:"#ScatteringOptics.ensembleaverage"},[i("span",{class:"jlbinding"},"ScatteringOptics.ensembleaverage")],-1)),e[59]||(e[59]=a()),n(s,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[60]||(e[60]=t('
julia
ensembleaverage(sm::AbstractScatteringModel, skymodel::AbstractModel, νmodel)

source

',2))]),i("details",D,[i("summary",null,[e[61]||(e[61]=i("a",{id:"ScatteringOptics.ensembleaverage-Tuple{AbstractScatteringModel, ComradeBase.IntensityMap}",href:"#ScatteringOptics.ensembleaverage-Tuple{AbstractScatteringModel, ComradeBase.IntensityMap}"},[i("span",{class:"jlbinding"},"ScatteringOptics.ensembleaverage")],-1)),e[62]||(e[62]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[63]||(e[63]=t('
julia
ensembleaverage(sm::AbstractScatteringModel, imap::IntensityMap; νref=c_cgs)

source

',2))]),i("details",N,[i("summary",null,[e[64]||(e[64]=i("a",{id:"ScatteringOptics.findkzeta_exact-Tuple{ScatteringOptics.AbstractKzetaFinder}",href:"#ScatteringOptics.findkzeta_exact-Tuple{ScatteringOptics.AbstractKzetaFinder}"},[i("span",{class:"jlbinding"},"ScatteringOptics.findkzeta_exact")],-1)),e[65]||(e[65]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[66]||(e[66]=t('
julia
findkzeta_exact(finder::AbstractKzetaFinder; kwargs...)

Solves the equation for the concentration parameter k_ζ,2 given the set of parameters in the finder. It uses NonlinearSolve.jl.

source

',3))]),i("details",B,[i("summary",null,[e[67]||(e[67]=i("a",{id:"ScatteringOptics.get_rF-Tuple{AbstractPhaseScreen, Number}",href:"#ScatteringOptics.get_rF-Tuple{AbstractPhaseScreen, Number}"},[i("span",{class:"jlbinding"},"ScatteringOptics.get_rF")],-1)),e[68]||(e[68]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[69]||(e[69]=t('
julia
get_rF(psm::AbstractPhaseScreen, λ_cm)

Returns Fresnel scale corresponding to the given AvstractPhaseScreen object and observing wavelength, λ_cm

source

',3))]),i("details",_,[i("summary",null,[e[70]||(e[70]=i("a",{id:"ScatteringOptics.kernelmodel-Tuple{AbstractScatteringModel}",href:"#ScatteringOptics.kernelmodel-Tuple{AbstractScatteringModel}"},[i("span",{class:"jlbinding"},"ScatteringOptics.kernelmodel")],-1)),e[71]||(e[71]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[72]||(e[72]=t('
julia
kernelmodel(sm::AbstractScatteringModel; νref::Number=c_cgs, use_approx::Bool == true)

Return a Comrade Sky Model for the diffractive scattering kernel of the input scattering model.

** Keyword Argurments **

source

',5))]),i("details",P,[i("summary",null,[e[73]||(e[73]=i("a",{id:"ScatteringOptics.kzetafinder_equation-Tuple{Any, ScatteringOptics.AbstractKzetaFinder}",href:"#ScatteringOptics.kzetafinder_equation-Tuple{Any, ScatteringOptics.AbstractKzetaFinder}"},[i("span",{class:"jlbinding"},"ScatteringOptics.kzetafinder_equation")],-1)),e[74]||(e[74]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[75]||(e[75]=t('
julia
kzetafinder_equation(kzeta, finder::AbstractKzetaFinder)

This equation privide a root-finding function f(kzeta, finder) to find kzeta from the equation f(kzeta, finder)=0.

source

',3))]),i("details",w,[i("summary",null,[e[76]||(e[76]=i("a",{id:"ScatteringOptics.phase_screen-Tuple{AbstractPhaseScreen, Number}",href:"#ScatteringOptics.phase_screen-Tuple{AbstractPhaseScreen, Number}"},[i("span",{class:"jlbinding"},"ScatteringOptics.phase_screen")],-1)),e[77]||(e[77]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[78]||(e[78]=t('
julia
phase_screen(psm::AbstractPhaseScreen, λ_cm, noise_screen=nothing)

Generates a refractive phase screen, ϕ, using StationaryRandomFields.jl the power law noise procedure. The fourier space 2D noise_screen (defaults to gaussian noise screen if not given) is scaled by the power law, Q, defined in input AbstractPhaseScreen psm. The observing wavelength, λ_cm, must be given.

source

',3))]),i("details",z,[i("summary",null,[e[79]||(e[79]=i("a",{id:"ScatteringOptics.refractivephasescreen-Union{Tuple{T}, Tuple{S}, Tuple{S, ComradeBase.IntensityMap}, Tuple{S, ComradeBase.IntensityMap, T}, Tuple{S, ComradeBase.IntensityMap, T, T}} where {S, T}",href:"#ScatteringOptics.refractivephasescreen-Union{Tuple{T}, Tuple{S}, Tuple{S, ComradeBase.IntensityMap}, Tuple{S, ComradeBase.IntensityMap, T}, Tuple{S, ComradeBase.IntensityMap, T, T}} where {S, T}"},[i("span",{class:"jlbinding"},"ScatteringOptics.refractivephasescreen")],-1)),e[80]||(e[80]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[81]||(e[81]=t('
julia
refractivephasescreen(sm, im, Vx_km_per_s=0.0, Vy_km_per_s=0.0)

An abstract type for generating a refractive phase screen model corresponding to an image and computing the scattered average image.

source

',4))]),i("details",L,[i("summary",null,[e[82]||(e[82]=i("a",{id:"ScatteringOptics.scatter_image-Tuple{AbstractPhaseScreen, ComradeBase.IntensityMap}",href:"#ScatteringOptics.scatter_image-Tuple{AbstractPhaseScreen, ComradeBase.IntensityMap}"},[i("span",{class:"jlbinding"},"ScatteringOptics.scatter_image")],-1)),e[83]||(e[83]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[84]||(e[84]=t('
julia
scatter_image(psm::RefractivePhaseScreen, imap::IntensityMap; νref::Number = c_cgs, noise_screen=nothing)

Implements full ISM scattering on an unscattered Comrade skymodel intensity map (imap). Diffrective blurring and refractive phase screen generation are specific to the scattering parameters defined in the AbstractPhaseScreen model psm.

source

',3))]),i("details",K,[i("summary",null,[e[85]||(e[85]=i("a",{id:"ScatteringOptics.scatter_image-Tuple{AbstractScatteringModel, ComradeBase.IntensityMap}",href:"#ScatteringOptics.scatter_image-Tuple{AbstractScatteringModel, ComradeBase.IntensityMap}"},[i("span",{class:"jlbinding"},"ScatteringOptics.scatter_image")],-1)),e[86]||(e[86]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[87]||(e[87]=t('
julia
scatter_image(sm::AbstractScatteringModel, imap::IntensityMap, λ_cm::Number; νref::Number = c_cgs, rng = Random.default_rng())

source

',2))]),i("details",J,[i("summary",null,[e[88]||(e[88]=i("a",{id:"ScatteringOptics.visibility_point_approx-Tuple{AbstractScatteringModel, Number, Number, Number}",href:"#ScatteringOptics.visibility_point_approx-Tuple{AbstractScatteringModel, Number, Number, Number}"},[i("span",{class:"jlbinding"},"ScatteringOptics.visibility_point_approx")],-1)),e[89]||(e[89]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[90]||(e[90]=t('
julia
visibility_point_approx(sm::AbstractScatteringModel, λ::Number, u::Number, v::Number)

Compute the diffractive kernel for a given observing wavelength λ and fourier space coordinates u, v using the approximated formula of the phase structure function.

source

',3))]),i("details",H,[i("summary",null,[e[91]||(e[91]=i("a",{id:"ScatteringOptics.visibility_point_exact-Tuple{AbstractScatteringModel, Number, Number, Number}",href:"#ScatteringOptics.visibility_point_exact-Tuple{AbstractScatteringModel, Number, Number, Number}"},[i("span",{class:"jlbinding"},"ScatteringOptics.visibility_point_exact")],-1)),e[92]||(e[92]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[93]||(e[93]=t('
julia
visibility_point_exact(sm::AbstractScatteringModel, λ::Number, u::Number, v::Number)

Compute the diffractive kernel for a given observing wavelength λ and fourier space coordinates u, v using the exact formula of the phase structure function.

source

',3))]),i("details",I,[i("summary",null,[e[94]||(e[94]=i("a",{id:"ScatteringOptics.wrapped_grad-Tuple{Any, Any, Any}",href:"#ScatteringOptics.wrapped_grad-Tuple{Any, Any, Any}"},[i("span",{class:"jlbinding"},"ScatteringOptics.wrapped_grad")],-1)),e[95]||(e[95]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[96]||(e[96]=t('
julia
wrapped_grad(ϕ, dx, dy)

Returns the wrapped gradient of a given 2D phase screen. The x and y pixel sizes (dx and dy) must be given.

source

',3))])])}const Y=l(o,[["render",q]]);export{U as __pageData,Y as default}; +import{_ as l,c as r,a5 as t,j as e,a,G as n,B as p,o as c}from"./chunks/framework.DWm5V20y.js";const U=JSON.parse('{"title":"ScateringOptics.jl API","description":"","frontmatter":{},"headers":[],"relativePath":"api.md","filePath":"api.md","lastUpdated":null}'),o={name:"api.md"},d={class:"jldocstring custom-block",open:""},h={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},K={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},H={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""};function q(R,i,V,W,G,$){const s=p("Badge");return c(),r("div",null,[i[97]||(i[97]=t('

ScateringOptics.jl API

Index

Docstrings

',4)),e("details",d,[e("summary",null,[i[0]||(i[0]=e("a",{id:"ScatteringOptics.Params_Johnson2018",href:"#ScatteringOptics.Params_Johnson2018"},[e("span",{class:"jlbinding"},"ScatteringOptics.Params_Johnson2018")],-1)),i[1]||(i[1]=a()),n(s,{type:"info",class:"jlObjectType jlConstant",text:"Constant"})]),i[2]||(i[2]=e("p",null,"Best-fit parameters of the dipole scattering model derived in Johnson et al. 2018",-1)),i[3]||(i[3]=e("p",null,[e("a",{href:"./github.com/EHTJulia/ScatteringOptics.jl/blob/6c971c9abadc985b340a65e93d9cc5f665835f2d/src/scatteringmodels/commonfunctions.jl#L6-L8"},"source")],-1))]),e("details",h,[e("summary",null,[i[4]||(i[4]=e("a",{id:"ScatteringOptics.AbstractKzetaFinder",href:"#ScatteringOptics.AbstractKzetaFinder"},[e("span",{class:"jlbinding"},"ScatteringOptics.AbstractKzetaFinder")],-1)),i[5]||(i[5]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[6]||(i[6]=t('
julia
AbstractKzetaFinder

This is an abstract data type to set up equations and provide a solver for the concentration parameter k_ζ for an anistropic interstellar scattering model. See Psaltis et al. 2018, arxiv::1805.01242v1 for details.

Mandatory methods

Methods provided

source

',7))]),e("details",g,[e("summary",null,[i[7]||(i[7]=e("a",{id:"ScatteringOptics.AbstractScatteringKernel",href:"#ScatteringOptics.AbstractScatteringKernel"},[e("span",{class:"jlbinding"},"ScatteringOptics.AbstractScatteringKernel")],-1)),i[8]||(i[8]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[9]||(i[9]=t('
julia
abstract type AbstractScatteringKernel{T} <: ComradeBase.AbstractModel

An abstract Comrade Sky Model for the diffractive scattering kernel. These are usually primitive models, and are usually analytic in Fourier but not analytic in the image domain. As a result a user only needs to implement the following methods.

source

',4))]),e("details",k,[e("summary",null,[i[10]||(i[10]=e("a",{id:"ScatteringOptics.AbstractScatteringModel",href:"#ScatteringOptics.AbstractScatteringModel"},[e("span",{class:"jlbinding"},"ScatteringOptics.AbstractScatteringModel")],-1)),i[11]||(i[11]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[12]||(i[12]=t('
julia
abstract type AbstractScatteringModel

An abstract anistropic scattering model based on a thin-screen approximation. In this package, we provide a reference implementation of the dipole (DipoleScatteringModel), von Mises (vonMisesScatteringModel) and periodic Box Car models (PeriodicBoxCarScatteringModel) all introduced in Psaltis et al. 2018.

Mandatory fields The scattering model will be fundamentally governed by the following parameters. Ideally, a subtype of this abstract model should have a constructor only with these arguments.

Furthermore the following parameters need to be precomputed.

Optional Fields Followings are currently not used by methods but may be useful to have.

Mandatory Method

source

',11))]),e("details",u,[e("summary",null,[i[13]||(i[13]=e("a",{id:"ScatteringOptics.ApproximatedScatteringKernel",href:"#ScatteringOptics.ApproximatedScatteringKernel"},[e("span",{class:"jlbinding"},"ScatteringOptics.ApproximatedScatteringKernel")],-1)),i[14]||(i[14]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[15]||(i[15]=t('
julia
struct ApproximatedScatteringKernel{T, S, N} <: AbstractScatteringKernel{T}

A Comrade VLBI Sky Model for the scattering kernel based on a Scattering Model sm <: AbstractScatteringModel using the fast approximation formula in Psaltis et al. (2018).

If T isn't given, T defaults to Float64

source

',4))]),e("details",b,[e("summary",null,[i[16]||(i[16]=e("a",{id:"ScatteringOptics.DipoleScatteringModel",href:"#ScatteringOptics.DipoleScatteringModel"},[e("span",{class:"jlbinding"},"ScatteringOptics.DipoleScatteringModel")],-1)),i[17]||(i[17]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[18]||(i[18]=t('
julia
struct DipoleScatteringModel{T<:Number} <: AbstractScatteringModel

An anistropic scattering model based on a thin-screen approximation. This scattering model adopts the dipole field wonder described in Psaltis et al. 2018.

** Keywords for the constructor ** The default numbers are based on the best-fit parameters presented in Johnson et al. 2018.

source

',5))]),e("details",m,[e("summary",null,[i[19]||(i[19]=e("a",{id:"ScatteringOptics.Dipole_KzetaFinder",href:"#ScatteringOptics.Dipole_KzetaFinder"},[e("span",{class:"jlbinding"},"ScatteringOptics.Dipole_KzetaFinder")],-1)),i[20]||(i[20]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[21]||(i[21]=t('
julia
struct Dipole_KzetaFinder{T<:Number} <: ScatteringOptics.AbstractKzetaFinder

The finder of the concentration parameter k_ζ,2 for dipole anistropic scattering models. See Psaltis et al. 2018, arxiv::1805.01242v1 for details. The equation for k_ζ,2 is given by the equation 43 of Psaltis et al. 2018.

Mandatory fields

source

',5))]),e("details",y,[e("summary",null,[i[22]||(i[22]=e("a",{id:"ScatteringOptics.ExactScatteringKernel",href:"#ScatteringOptics.ExactScatteringKernel"},[e("span",{class:"jlbinding"},"ScatteringOptics.ExactScatteringKernel")],-1)),i[23]||(i[23]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[24]||(i[24]=t('
julia
struct ExactScatteringKernel{T, S, N} <: AbstractScatteringKernel{T}

A Comrade VLBI Sky Model for the scattering kernel based on a Scattering Model sm <: AbstractScatteringModel using the exact formula in Psaltis et al. (2018).

By default if T isn't given, T defaults to Float64

source

',4))]),e("details",f,[e("summary",null,[i[25]||(i[25]=e("a",{id:"ScatteringOptics.PeriodicBoxCarScatteringModel",href:"#ScatteringOptics.PeriodicBoxCarScatteringModel"},[e("span",{class:"jlbinding"},"ScatteringOptics.PeriodicBoxCarScatteringModel")],-1)),i[26]||(i[26]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[27]||(i[27]=t('
julia
struct PeriodicBoxCarScatteringModel{T<:Number} <: AbstractScatteringModel

An anistropic scattering model based on a thin-screen approximation. This scattering adopts the periodic boxcar field wonder described in Psaltis et al. 2018.

** Keywords for the constructor ** The default numbers are based on the best-fit parameters presented in Johnson et al. 2018.

source

',5))]),e("details",E,[e("summary",null,[i[28]||(i[28]=e("a",{id:"ScatteringOptics.PeriodicBoxCar_KzetaFinder",href:"#ScatteringOptics.PeriodicBoxCar_KzetaFinder"},[e("span",{class:"jlbinding"},"ScatteringOptics.PeriodicBoxCar_KzetaFinder")],-1)),i[29]||(i[29]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[30]||(i[30]=t('
julia
struct PeriodicBoxCar_KzetaFinder{T<:Number} <: ScatteringOptics.AbstractKzetaFinder

The finder of the concentration parameter k_ζ,3 for the Periodic Box Car anistropic scattering model. See Psaltis et al. 2018, arxiv::1805.01242v1 for details. The equation for k_ζ,3 is given by the equation 47 of Psaltis et al. 2018.

Mandatory fields

source

',5))]),e("details",S,[e("summary",null,[i[31]||(i[31]=e("a",{id:"ScatteringOptics.PhaseScreenPowerLaw",href:"#ScatteringOptics.PhaseScreenPowerLaw"},[e("span",{class:"jlbinding"},"ScatteringOptics.PhaseScreenPowerLaw")],-1)),i[32]||(i[32]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[33]||(i[33]=t('
julia
$(TYPEDEF)

Power spectrum model of ISM fluctuations, for use in generating a RefractivePhaseScreen object. Requires an AbstractScatteringModel for scattering parameters as well as image x and y pixel sizes. Optional input of velocity in x and y direction for moving phase screen.

Fields

FIELDS

source

',5))]),e("details",j,[e("summary",null,[i[34]||(i[34]=e("a",{id:"ScatteringOptics.RefractivePhaseScreen",href:"#ScatteringOptics.RefractivePhaseScreen"},[e("span",{class:"jlbinding"},"ScatteringOptics.RefractivePhaseScreen")],-1)),i[35]||(i[35]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[36]||(i[36]=t('
julia
RefractivePhaseScreen(sm, Nx, Ny, dx, dy, Vx_km_per_s=0.0, Vy_km_per_s=0.0)

An abstract type for generating a refractive phase screen model corresponding to an image and computing the scattered average image.

Vx_km_per_s and Vy_km_per_s are optional for moving phase screen.

source

',5))]),e("details",v,[e("summary",null,[i[37]||(i[37]=e("a",{id:"ScatteringOptics.vonMisesScatteringModel",href:"#ScatteringOptics.vonMisesScatteringModel"},[e("span",{class:"jlbinding"},"ScatteringOptics.vonMisesScatteringModel")],-1)),i[38]||(i[38]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[39]||(i[39]=t('
julia
struct vonMisesScatteringModel{T<:Number} <: AbstractScatteringModel

An anistropic scattering model based on a thin-screen approximation. This scattering adopts the von Mises field wonder described in Psaltis et al. 2018.

** Keywords for the constructor ** The default numbers are based on the best-fit parameters presented in Johnson et al. 2018.

source

',5))]),e("details",F,[e("summary",null,[i[40]||(i[40]=e("a",{id:"ScatteringOptics.vonMises_KzetaFinder",href:"#ScatteringOptics.vonMises_KzetaFinder"},[e("span",{class:"jlbinding"},"ScatteringOptics.vonMises_KzetaFinder")],-1)),i[41]||(i[41]=a()),n(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[42]||(i[42]=t('
julia
struct vonMises_KzetaFinder{T<:Number} <: ScatteringOptics.AbstractKzetaFinder

The finder of the concentration parameter k_ζ,1 for the von Mises anistropic scattering model. See Psaltis et al. 2018, arxiv::1805.01242v1 for details. The equation for k_ζ,1 is originally given by the equation 37 of Psaltis et al. 2018, but this is different in the implementation of Johnson et al. 2018 in eht-imaging library. We follow eht-imaging's implementation.

Mandatory fields

source

',5))]),e("details",C,[e("summary",null,[i[43]||(i[43]=e("a",{id:"ScatteringOptics.Dϕ_approx-Tuple{AbstractScatteringModel, Number, Number, Number}",href:"#ScatteringOptics.Dϕ_approx-Tuple{AbstractScatteringModel, Number, Number, Number}"},[e("span",{class:"jlbinding"},"ScatteringOptics.Dϕ_approx")],-1)),i[44]||(i[44]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[45]||(i[45]=t('
julia
Dϕ_approx(sm::AbstractScatteringModel, λ::Number, x::Number, y::Number)

Masm approximate phase structure function Dϕ(r, ϕ) at observing wavelength λ, first converting x and y into polar coordinates. Based on Equation 35 of Psaltis et al. 2018.

source

',3))]),e("details",O,[e("summary",null,[i[46]||(i[46]=e("a",{id:"ScatteringOptics.Dϕ_exact-Tuple{AbstractScatteringModel, Number, Number, Number}",href:"#ScatteringOptics.Dϕ_exact-Tuple{AbstractScatteringModel, Number, Number, Number}"},[e("span",{class:"jlbinding"},"ScatteringOptics.Dϕ_exact")],-1)),i[47]||(i[47]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[48]||(i[48]=t('
julia
Dϕ_exact(sm::AbstractScatteringModel, λ::Number, x::Number, y::Number)

Masm exact phase structure function Dϕ(r, ϕ) at observing wavelength λ, first converting x and y into the polar coordinates

source

',3))]),e("details",T,[e("summary",null,[i[49]||(i[49]=e("a",{id:"ScatteringOptics.calc_Dmaj-Tuple{AbstractScatteringModel, Number, Number}",href:"#ScatteringOptics.calc_Dmaj-Tuple{AbstractScatteringModel, Number, Number}"},[e("span",{class:"jlbinding"},"ScatteringOptics.calc_Dmaj")],-1)),i[50]||(i[50]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[51]||(i[51]=t('
julia
Dmaj(r, sm::AbstractScatteringModel)

Masm D_maj(r) for given r. Based on Equation 33 of Psaltis et al. 2018

source

',3))]),e("details",A,[e("summary",null,[i[52]||(i[52]=e("a",{id:"ScatteringOptics.calc_Dmin-Tuple{AbstractScatteringModel, Number, Number}",href:"#ScatteringOptics.calc_Dmin-Tuple{AbstractScatteringModel, Number, Number}"},[e("span",{class:"jlbinding"},"ScatteringOptics.calc_Dmin")],-1)),i[53]||(i[53]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[54]||(i[54]=t('
julia
calc_Dmin(r, sm::AbstractScatteringModel)

Masm D_min(r) for given r. Based on Equation 34 of Psaltis et al. 2018

source

',3))]),e("details",x,[e("summary",null,[i[55]||(i[55]=e("a",{id:"ScatteringOptics.dDϕ_dz-Tuple{AbstractScatteringModel, Number, Number, Number, Any}",href:"#ScatteringOptics.dDϕ_dz-Tuple{AbstractScatteringModel, Number, Number, Number, Any}"},[e("span",{class:"jlbinding"},"ScatteringOptics.dDϕ_dz")],-1)),i[56]||(i[56]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[57]||(i[57]=t('
julia
dDϕ_dz(sm::AbstractScatteringModel, λ::Number, r::Number, ϕ::Number, ϕq)

Differential contribution to the phase structure function.

source

',3))]),e("details",M,[e("summary",null,[i[58]||(i[58]=e("a",{id:"ScatteringOptics.ensembleaverage",href:"#ScatteringOptics.ensembleaverage"},[e("span",{class:"jlbinding"},"ScatteringOptics.ensembleaverage")],-1)),i[59]||(i[59]=a()),n(s,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[60]||(i[60]=t('
julia
ensembleaverage(sm::AbstractScatteringModel, skymodel::AbstractModel, νmodel)

source

',2))]),e("details",D,[e("summary",null,[i[61]||(i[61]=e("a",{id:"ScatteringOptics.ensembleaverage-Tuple{AbstractScatteringModel, ComradeBase.IntensityMap}",href:"#ScatteringOptics.ensembleaverage-Tuple{AbstractScatteringModel, ComradeBase.IntensityMap}"},[e("span",{class:"jlbinding"},"ScatteringOptics.ensembleaverage")],-1)),i[62]||(i[62]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[63]||(i[63]=t('
julia
ensembleaverage(sm::AbstractScatteringModel, imap::IntensityMap; νref=c_cgs)

source

',2))]),e("details",N,[e("summary",null,[i[64]||(i[64]=e("a",{id:"ScatteringOptics.findkzeta_exact-Tuple{ScatteringOptics.AbstractKzetaFinder}",href:"#ScatteringOptics.findkzeta_exact-Tuple{ScatteringOptics.AbstractKzetaFinder}"},[e("span",{class:"jlbinding"},"ScatteringOptics.findkzeta_exact")],-1)),i[65]||(i[65]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[66]||(i[66]=t('
julia
findkzeta_exact(finder::AbstractKzetaFinder; kwargs...)

Solves the equation for the concentration parameter k_ζ,2 given the set of parameters in the finder. It uses NonlinearSolve.jl.

source

',3))]),e("details",B,[e("summary",null,[i[67]||(i[67]=e("a",{id:"ScatteringOptics.get_rF-Tuple{AbstractPhaseScreen, Number}",href:"#ScatteringOptics.get_rF-Tuple{AbstractPhaseScreen, Number}"},[e("span",{class:"jlbinding"},"ScatteringOptics.get_rF")],-1)),i[68]||(i[68]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[69]||(i[69]=t('
julia
get_rF(psm::AbstractPhaseScreen, λ_cm)

Returns Fresnel scale corresponding to the given AvstractPhaseScreen object and observing wavelength, λ_cm

source

',3))]),e("details",_,[e("summary",null,[i[70]||(i[70]=e("a",{id:"ScatteringOptics.kernelmodel-Tuple{AbstractScatteringModel}",href:"#ScatteringOptics.kernelmodel-Tuple{AbstractScatteringModel}"},[e("span",{class:"jlbinding"},"ScatteringOptics.kernelmodel")],-1)),i[71]||(i[71]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[72]||(i[72]=t('
julia
kernelmodel(sm::AbstractScatteringModel; νref::Number=c_cgs, use_approx::Bool == true)

Return a Comrade Sky Model for the diffractive scattering kernel of the input scattering model.

** Keyword Argurments **

source

',5))]),e("details",P,[e("summary",null,[i[73]||(i[73]=e("a",{id:"ScatteringOptics.kzetafinder_equation-Tuple{Any, ScatteringOptics.AbstractKzetaFinder}",href:"#ScatteringOptics.kzetafinder_equation-Tuple{Any, ScatteringOptics.AbstractKzetaFinder}"},[e("span",{class:"jlbinding"},"ScatteringOptics.kzetafinder_equation")],-1)),i[74]||(i[74]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[75]||(i[75]=t('
julia
kzetafinder_equation(kzeta, finder::AbstractKzetaFinder)

This equation privide a root-finding function f(kzeta, finder) to find kzeta from the equation f(kzeta, finder)=0.

source

',3))]),e("details",w,[e("summary",null,[i[76]||(i[76]=e("a",{id:"ScatteringOptics.phase_screen-Tuple{AbstractPhaseScreen, Number}",href:"#ScatteringOptics.phase_screen-Tuple{AbstractPhaseScreen, Number}"},[e("span",{class:"jlbinding"},"ScatteringOptics.phase_screen")],-1)),i[77]||(i[77]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[78]||(i[78]=t('
julia
phase_screen(psm::AbstractPhaseScreen, λ_cm, noise_screen=nothing)

Generates a refractive phase screen, ϕ, using StationaryRandomFields.jl the power law noise procedure. The fourier space 2D noise_screen (defaults to gaussian noise screen if not given) is scaled by the power law, Q, defined in input AbstractPhaseScreen psm. The observing wavelength, λ_cm, must be given.

source

',3))]),e("details",z,[e("summary",null,[i[79]||(i[79]=e("a",{id:"ScatteringOptics.refractivephasescreen-Union{Tuple{T}, Tuple{S}, Tuple{S, ComradeBase.IntensityMap}, Tuple{S, ComradeBase.IntensityMap, T}, Tuple{S, ComradeBase.IntensityMap, T, T}} where {S, T}",href:"#ScatteringOptics.refractivephasescreen-Union{Tuple{T}, Tuple{S}, Tuple{S, ComradeBase.IntensityMap}, Tuple{S, ComradeBase.IntensityMap, T}, Tuple{S, ComradeBase.IntensityMap, T, T}} where {S, T}"},[e("span",{class:"jlbinding"},"ScatteringOptics.refractivephasescreen")],-1)),i[80]||(i[80]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[81]||(i[81]=t('
julia
refractivephasescreen(sm, im, Vx_km_per_s=0.0, Vy_km_per_s=0.0)

An abstract type for generating a refractive phase screen model corresponding to an image and computing the scattered average image.

source

',4))]),e("details",L,[e("summary",null,[i[82]||(i[82]=e("a",{id:"ScatteringOptics.scatter_image-Tuple{AbstractPhaseScreen, ComradeBase.IntensityMap}",href:"#ScatteringOptics.scatter_image-Tuple{AbstractPhaseScreen, ComradeBase.IntensityMap}"},[e("span",{class:"jlbinding"},"ScatteringOptics.scatter_image")],-1)),i[83]||(i[83]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[84]||(i[84]=t('
julia
scatter_image(psm::RefractivePhaseScreen, imap::IntensityMap; νref::Number = c_cgs, noise_screen=nothing)

Implements full ISM scattering on an unscattered Comrade skymodel intensity map (imap). Diffrective blurring and refractive phase screen generation are specific to the scattering parameters defined in the AbstractPhaseScreen model psm.

source

',3))]),e("details",K,[e("summary",null,[i[85]||(i[85]=e("a",{id:"ScatteringOptics.scatter_image-Tuple{AbstractScatteringModel, ComradeBase.IntensityMap}",href:"#ScatteringOptics.scatter_image-Tuple{AbstractScatteringModel, ComradeBase.IntensityMap}"},[e("span",{class:"jlbinding"},"ScatteringOptics.scatter_image")],-1)),i[86]||(i[86]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[87]||(i[87]=t('
julia
scatter_image(sm::AbstractScatteringModel, imap::IntensityMap, λ_cm::Number; νref::Number = c_cgs, rng = Random.default_rng())

source

',2))]),e("details",J,[e("summary",null,[i[88]||(i[88]=e("a",{id:"ScatteringOptics.visibility_point_approx-Tuple{AbstractScatteringModel, Number, Number, Number}",href:"#ScatteringOptics.visibility_point_approx-Tuple{AbstractScatteringModel, Number, Number, Number}"},[e("span",{class:"jlbinding"},"ScatteringOptics.visibility_point_approx")],-1)),i[89]||(i[89]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[90]||(i[90]=t('
julia
visibility_point_approx(sm::AbstractScatteringModel, λ::Number, u::Number, v::Number)

Compute the diffractive kernel for a given observing wavelength λ and fourier space coordinates u, v using the approximated formula of the phase structure function.

source

',3))]),e("details",H,[e("summary",null,[i[91]||(i[91]=e("a",{id:"ScatteringOptics.visibility_point_exact-Tuple{AbstractScatteringModel, Number, Number, Number}",href:"#ScatteringOptics.visibility_point_exact-Tuple{AbstractScatteringModel, Number, Number, Number}"},[e("span",{class:"jlbinding"},"ScatteringOptics.visibility_point_exact")],-1)),i[92]||(i[92]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[93]||(i[93]=t('
julia
visibility_point_exact(sm::AbstractScatteringModel, λ::Number, u::Number, v::Number)

Compute the diffractive kernel for a given observing wavelength λ and fourier space coordinates u, v using the exact formula of the phase structure function.

source

',3))]),e("details",I,[e("summary",null,[i[94]||(i[94]=e("a",{id:"ScatteringOptics.wrapped_grad-Tuple{Any, Any, Any}",href:"#ScatteringOptics.wrapped_grad-Tuple{Any, Any, Any}"},[e("span",{class:"jlbinding"},"ScatteringOptics.wrapped_grad")],-1)),i[95]||(i[95]=a()),n(s,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[96]||(i[96]=t('
julia
wrapped_grad(ϕ, dx, dy)

Returns the wrapped gradient of a given 2D phase screen. The x and y pixel sizes (dx and dy) must be given.

source

',3))])])}const Y=l(o,[["render",q]]);export{U as __pageData,Y as default}; diff --git a/dev/assets/app.DMhXwlAN.js b/dev/assets/app.CxoQ9FrM.js similarity index 95% rename from dev/assets/app.DMhXwlAN.js rename to dev/assets/app.CxoQ9FrM.js index 10d563b..bfff097 100644 --- a/dev/assets/app.DMhXwlAN.js +++ b/dev/assets/app.CxoQ9FrM.js @@ -1 +1 @@ -import{R as p}from"./chunks/theme.DnYWROZw.js";import{R as o,a6 as u,a7 as c,a8 as l,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,af as v,d as P,u as R,v as w,s as y,ag as C,ah as b,ai as E,a4 as S}from"./chunks/framework.DWm5V20y.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=R();return w(()=>{y(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),b(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=j(),a=_();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function _(){return g(T)}function j(){let e=o,a;return A(t=>{let n=v(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{D as createApp}; +import{R as p}from"./chunks/theme.CE8Aa-yX.js";import{R as o,a6 as u,a7 as c,a8 as l,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,af as v,d as P,u as R,v as w,s as y,ag as C,ah as b,ai as E,a4 as S}from"./chunks/framework.DWm5V20y.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=R();return w(()=>{y(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),b(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=j(),a=_();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function _(){return g(T)}function j(){let e=o,a;return A(t=>{let n=v(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{D as createApp}; diff --git a/dev/assets/byymtnw.2kdQq-u9.png b/dev/assets/byymtnw.2kdQq-u9.png new file mode 100644 index 0000000..8ad21a7 Binary files /dev/null and b/dev/assets/byymtnw.2kdQq-u9.png differ diff --git a/dev/assets/chunks/@localSearchIndexroot.80nD1rQ6.js b/dev/assets/chunks/@localSearchIndexroot.80nD1rQ6.js new file mode 100644 index 0000000..55fc9ff --- /dev/null +++ b/dev/assets/chunks/@localSearchIndexroot.80nD1rQ6.js @@ -0,0 +1 @@ +const e='{"documentCount":26,"nextId":26,"documentIds":{"0":"/ScatteringOptics.jl/dev/api#ScateringOptics.jl-API","1":"/ScatteringOptics.jl/dev/api#index","2":"/ScatteringOptics.jl/dev/api#docstrings","3":"/ScatteringOptics.jl/dev/benchmarks#benchmarks","4":"/ScatteringOptics.jl/dev/benchmarks#speed","5":"/ScatteringOptics.jl/dev/benchmarks#consistency","6":"/ScatteringOptics.jl/dev/custommodels#Define-Your-Own-Scattering-Model","7":"/ScatteringOptics.jl/dev/custommodels#references","8":"/ScatteringOptics.jl/dev/diffractive#Simulate-Diffractive-Scattering","9":"/ScatteringOptics.jl/dev/diffractive#Loading-your-image","10":"/ScatteringOptics.jl/dev/diffractive#Simulate-diffractive-scattering","11":"/ScatteringOptics.jl/dev/diffractive#A-quick-shortcut","12":"/ScatteringOptics.jl/dev/diffractive#Save-the-tutorial-data","13":"/ScatteringOptics.jl/dev/introduction#introduction","14":"/ScatteringOptics.jl/dev/introduction#What-are-interstellar-scattering-and-scintillation?-Why-are-they-important?","15":"/ScatteringOptics.jl/dev/introduction#installation","16":"/ScatteringOptics.jl/dev/math#Brief-Introduction-to-Interstellar-Scattering","17":"/ScatteringOptics.jl/dev/math#Scattering-Regimes-in-Scope","18":"/ScatteringOptics.jl/dev/math#Scattering-Model","19":"/ScatteringOptics.jl/dev/math#references","20":"/ScatteringOptics.jl/dev/nondefaultmodels#Use-Non-default-Models","21":"/ScatteringOptics.jl/dev/nondefaultmodels#references","22":"/ScatteringOptics.jl/dev/refractive#Simulate-Refractive-Scattering","23":"/ScatteringOptics.jl/dev/refractive#Loading-your-image","24":"/ScatteringOptics.jl/dev/refractive#Simulating-Refractive-Scattering","25":"/ScatteringOptics.jl/dev/refractive#Save-the-tutorial-data"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[3,1,1],"1":[1,3,42],"2":[1,3,459],"3":[1,1,71],"4":[1,1,82],"5":[1,1,74],"6":[5,1,254],"7":[1,5,39],"8":[3,1,30],"9":[3,3,144],"10":[3,3,177],"11":[3,3,68],"12":[4,3,101],"13":[1,1,100],"14":[10,1,128],"15":[1,1,21],"16":[5,1,34],"17":[4,5,168],"18":[2,5,255],"19":[1,5,84],"20":[4,1,95],"21":[1,4,36],"22":[3,1,18],"23":[3,3,87],"24":[3,3,362],"25":[4,3,46]},"averageFieldLength":[2.769230769230769,2.4230769230769234,114.46153846153847],"storedFields":{"0":{"title":"ScateringOptics.jl API","titles":[]},"1":{"title":"Index","titles":["ScateringOptics.jl API"]},"2":{"title":"Docstrings","titles":["ScateringOptics.jl API"]},"3":{"title":"Benchmarks","titles":[]},"4":{"title":"Speed","titles":["Benchmarks"]},"5":{"title":"Consistency","titles":["Benchmarks"]},"6":{"title":"Define Your Own Scattering Model","titles":[]},"7":{"title":"References","titles":["Define Your Own Scattering Model"]},"8":{"title":"Simulate Diffractive Scattering","titles":[]},"9":{"title":"Loading your image","titles":["Simulate Diffractive Scattering"]},"10":{"title":"Simulate diffractive scattering","titles":["Simulate Diffractive Scattering"]},"11":{"title":"A quick shortcut","titles":["Simulate Diffractive Scattering"]},"12":{"title":"Save the tutorial data","titles":["Simulate Diffractive Scattering"]},"13":{"title":"Introduction","titles":[]},"14":{"title":"What are interstellar scattering and scintillation? Why are they important?","titles":["Introduction"]},"15":{"title":"Installation","titles":["Introduction"]},"16":{"title":"Brief Introduction to Interstellar Scattering","titles":[]},"17":{"title":"Scattering Regimes in Scope","titles":["Brief Introduction to Interstellar Scattering"]},"18":{"title":"Scattering Model","titles":["Brief Introduction to Interstellar Scattering"]},"19":{"title":"References","titles":["Brief Introduction to Interstellar Scattering"]},"20":{"title":"Use Non-default Models","titles":[]},"21":{"title":"References","titles":["Use Non-default Models"]},"22":{"title":"Simulate Refractive Scattering","titles":[]},"23":{"title":"Loading your image","titles":["Simulate Refractive Scattering"]},"24":{"title":"Simulating Refractive Scattering","titles":["Simulate Refractive Scattering"]},"25":{"title":"Save the tutorial data","titles":["Simulate Refractive Scattering"]}},"dirtCount":0,"index":[["⋱",{"2":{"24":1}}],["zero",{"2":{"18":1}}],["≈iea",{"2":{"18":1}}],["∇ϕ",{"2":{"18":1}}],["−12dϕ",{"2":{"18":1}}],["−ϕ",{"2":{"18":1}}],["∗g",{"2":{"18":2}}],["⋮",{"2":{"12":1,"24":2}}],["+",{"2":{"12":19}}],["μas2rad",{"2":{"10":8,"24":4}}],["668117im",{"2":{"24":1}}],["660122+0",{"2":{"24":1}}],["625574",{"2":{"24":1}}],["676809im",{"2":{"24":1}}],["677391",{"2":{"24":1}}],["645413",{"2":{"24":1}}],["683662+0",{"2":{"24":1}}],["683912+0",{"2":{"24":1}}],["691469",{"2":{"24":1}}],["615531im",{"2":{"24":1}}],["615051im",{"2":{"24":1}}],["614426",{"2":{"24":1}}],["659719+0",{"2":{"24":1}}],["650020392426908",{"2":{"9":1,"10":1,"24":3}}],["6",{"2":{"17":1,"18":1,"19":1}}],["600",{"2":{"9":1,"10":4,"11":1,"23":1,"24":4}}],["637x",{"2":{"7":1,"19":1,"21":1}}],["771524+1",{"2":{"24":1}}],["77461im",{"2":{"24":1}}],["784044+0",{"2":{"24":1}}],["790146im",{"2":{"24":1}}],["793291im",{"2":{"24":1}}],["713483+0",{"2":{"24":1}}],["717905",{"2":{"24":1}}],["719656im",{"2":{"24":1}}],["723873im",{"2":{"24":1}}],["768268",{"2":{"24":1}}],["7",{"2":{"17":1,"19":1}}],["7063921e22",{"2":{"9":1,"10":1,"24":3}}],["701673999999999e21",{"2":{"9":1,"10":1,"24":3}}],["703",{"2":{"6":1,"9":1,"10":1,"24":3}}],["74",{"2":{"7":2,"19":2}}],["862441im",{"2":{"24":1}}],["864448im",{"2":{"24":1}}],["865",{"2":{"7":1,"19":1,"21":1}}],["888559",{"2":{"24":1}}],["8567426819253905",{"2":{"9":1,"10":1,"24":3}}],["8933699749663195",{"2":{"9":1,"10":1,"24":3}}],["81",{"2":{"9":1,"10":1,"24":3}}],["8",{"2":{"9":2,"10":2,"17":1,"19":1,"24":6}}],["833",{"2":{"7":2,"19":2}}],["826",{"2":{"7":2,"19":2,"21":2}}],["82",{"2":{"6":1}}],["θrad",{"2":{"6":2}}],["θmin",{"2":{"2":10,"6":8}}],["θmaj",{"2":{"2":10,"6":8}}],["971754im",{"2":{"24":1}}],["995",{"2":{"19":2}}],["9996281775360422",{"2":{"12":1}}],["9997061810965293",{"2":{"12":1}}],["9997750224296191",{"2":{"12":1}}],["9998346960428404",{"2":{"12":1}}],["9998851971721843",{"2":{"12":1}}],["9999265217837584",{"2":{"12":1}}],["9999586665751884",{"2":{"12":1}}],["9999816289767681",{"2":{"12":1}}],["9999954071523528",{"2":{"12":1}}],["964627",{"2":{"24":1}}],["963",{"2":{"19":2}}],["9630156472261735",{"2":{"9":1,"10":1,"24":3}}],["969627943900058",{"2":{"9":1,"10":1,"24":3}}],["9",{"2":{"6":1,"9":1,"10":1,"24":3}}],["quot",{"2":{"18":2}}],["quenched",{"2":{"17":3}}],["quick",{"0":{"11":1},"2":{"6":1,"11":1,"24":1}}],["q",{"2":{"2":1}}],["qbar",{"2":{"2":3,"6":5}}],["=vsrc",{"2":{"18":1}}],["=∫∫isky",{"2":{"18":1}}],["=isrc",{"2":{"18":1}}],["=pϕ",{"2":{"6":1}}],["=",{"2":{"2":3,"6":22,"9":2,"10":12,"11":1,"12":2,"18":1,"20":2,"23":2,"24":10}}],["=0",{"2":{"2":1}}],["==",{"2":{"2":1,"20":1}}],["horizon",{"2":{"13":1,"14":1}}],["hole",{"2":{"13":1,"14":2}}],["how",{"2":{"8":1}}],["h5",{"2":{"12":1}}],["h5open",{"2":{"12":1}}],["hdf5",{"2":{"12":1}}],["handled",{"2":{"17":1}}],["handy",{"2":{"11":1}}],["has",{"2":{"14":1,"17":2,"24":1}}],["have",{"2":{"2":2,"6":1,"11":1,"18":1,"24":2}}],["highly",{"2":{"11":1}}],["high",{"2":{"6":1,"13":1,"14":2}}],["here",{"2":{"3":1,"6":2,"9":2,"12":3,"23":1,"24":1,"25":2}}],["hz",{"2":{"2":1}}],["νref=νref",{"2":{"10":1,"24":1}}],["νref=c",{"2":{"2":1}}],["νref",{"2":{"2":5,"10":2,"23":2}}],["νmodel",{"2":{"2":1}}],["λ2",{"2":{"18":1}}],["λ^2",{"2":{"2":1}}],["λ",{"2":{"2":14,"18":2}}],["λ0",{"2":{"2":8,"6":7}}],["13",{"2":{"24":1}}],["136273im",{"2":{"24":1}}],["17356im",{"2":{"24":1}}],["170",{"2":{"7":2,"19":2,"21":2}}],["18389+0",{"2":{"24":1}}],["185724+0",{"2":{"24":1}}],["185399im",{"2":{"24":1}}],["1805",{"2":{"2":4,"7":2,"19":2,"21":2}}],["142354",{"2":{"24":1}}],["145882im",{"2":{"24":1}}],["14927im",{"2":{"24":1}}],["14404",{"2":{"24":1}}],["14137166941154058",{"2":{"9":1,"10":1,"24":3}}],["12437im",{"2":{"24":1}}],["129×256",{"2":{"24":1}}],["123",{"2":{"24":1}}],["15738im",{"2":{"24":1}}],["15087im",{"2":{"24":1}}],["158674im",{"2":{"24":1}}],["15835",{"2":{"24":1}}],["151",{"2":{"19":1}}],["1538",{"2":{"7":2,"19":2,"21":1}}],["194956im",{"2":{"24":1}}],["1989",{"2":{"19":2}}],["1980s",{"2":{"17":1}}],["1992",{"2":{"19":2}}],["1990",{"2":{"19":1}}],["11265234631500975",{"2":{"12":1}}],["11301652366950847",{"2":{"12":1}}],["11338173115469348",{"2":{"12":1}}],["11374797104590981",{"2":{"12":1}}],["1146",{"2":{"19":1}}],["11411524562062209",{"2":{"12":1}}],["11448355715840004",{"2":{"12":1}}],["11485290794090472",{"2":{"12":1}}],["11522330025187441",{"2":{"12":1}}],["11559473637711046",{"2":{"12":1}}],["1e9",{"2":{"10":2,"23":1}}],["16",{"2":{"9":1,"10":1,"24":3}}],["1093",{"2":{"19":2}}],["1098",{"2":{"19":1}}],["10e9",{"2":{"10":1}}],["10641979388314901",{"2":{"9":1,"10":1,"24":3}}],["104",{"2":{"7":1,"19":1,"21":1}}],["10",{"2":{"7":4,"9":1,"10":2,"19":8,"21":3,"24":3}}],["10−7",{"2":{"5":1}}],["10−6",{"2":{"5":1}}],["1000",{"2":{"10":1,"12":1}}],["100",{"2":{"4":2}}],["1",{"2":{"2":3,"6":3,"7":2,"9":6,"10":8,"12":1,"16":1,"18":3,"19":2,"20":1,"21":1,"24":33}}],["03477im",{"2":{"24":1}}],["0350022",{"2":{"24":1}}],["0302826+0",{"2":{"24":1}}],["0777+0",{"2":{"24":1}}],["0528775",{"2":{"24":1}}],["0947333+1",{"2":{"24":1}}],["094109+0",{"2":{"24":1}}],["0913364",{"2":{"24":1}}],["090190",{"2":{"19":1}}],["0671579",{"2":{"24":1}}],["0615803im",{"2":{"24":1}}],["0641im",{"2":{"24":1}}],["0666618",{"2":{"24":1}}],["060101+0",{"2":{"24":1}}],["0873872im",{"2":{"24":1}}],["0+0",{"2":{"24":1}}],["00476794im",{"2":{"24":1}}],["000997682im",{"2":{"24":1}}],["0004",{"2":{"7":1,"19":1,"21":1}}],["0029722+0",{"2":{"24":1}}],["00740253im",{"2":{"24":1}}],["0090",{"2":{"19":1}}],["003021",{"2":{"19":1}}],["0im",{"2":{"12":19,"24":2}}],["04238102210397e19",{"2":{"9":1,"10":1,"24":3}}],["0e7",{"2":{"9":1,"10":1,"24":3}}],["01242",{"2":{"7":2,"19":2,"21":2}}],["01242v1",{"2":{"2":4}}],["0",{"2":{"2":4,"6":1,"9":8,"10":18,"12":38,"24":102}}],["yet",{"2":{"16":1}}],["ylabel=",{"2":{"10":1}}],["you",{"2":{"6":7,"9":5,"10":6,"12":4,"18":1,"20":2,"23":2,"24":8,"25":1}}],["yourscatteringmodel",{"2":{"6":7}}],["your",{"0":{"6":1,"9":1,"23":1},"1":{"7":1},"2":{"2":1,"6":9,"9":1,"20":1,"24":1}}],["y",{"2":{"2":9}}],["xlabel=",{"2":{"10":1}}],["xxxx",{"2":{"6":1}}],["x",{"2":{"2":9}}],["x3c",{"2":{"2":15,"6":3}}],["443054im",{"2":{"24":1}}],["440891",{"2":{"24":1}}],["46063im",{"2":{"24":1}}],["46535im",{"2":{"24":1}}],["451472+0",{"2":{"24":1}}],["49935im",{"2":{"24":1}}],["487128",{"2":{"24":1}}],["48550",{"2":{"7":1,"19":1,"21":1}}],["418463im",{"2":{"24":1}}],["42237+0",{"2":{"24":1}}],["404",{"2":{"9":1,"12":2,"23":1,"25":1}}],["4",{"2":{"6":2,"7":1,"9":2,"10":2,"16":1,"18":1,"19":1,"24":10}}],["470806+0",{"2":{"24":1}}],["472817",{"2":{"24":1}}],["47423",{"2":{"24":1}}],["476492+0",{"2":{"24":1}}],["476370590888147",{"2":{"9":1,"10":1,"24":3}}],["471559+1",{"2":{"24":1}}],["47",{"2":{"2":1}}],["436795im",{"2":{"24":1}}],["43371800974761",{"2":{"9":1,"10":1,"24":3}}],["4357",{"2":{"7":2,"19":2,"21":1}}],["43",{"2":{"2":1}}],["late",{"2":{"17":1}}],["larger",{"2":{"17":2,"24":1}}],["language",{"2":{"13":1}}],["law",{"2":{"2":7}}],["less",{"2":{"24":1}}],["let",{"2":{"24":1}}],["leads",{"2":{"18":1}}],["leaving",{"2":{"17":1}}],["length",{"2":{"10":1}}],["level",{"2":{"6":1,"11":1}}],["leveledging",{"2":{"6":1}}],["london",{"2":{"19":1}}],["longer",{"2":{"17":1}}],["long",{"2":{"6":1,"13":1,"14":1}}],["location",{"2":{"17":1}}],["low",{"2":{"11":1}}],["lowest",{"2":{"2":1}}],["load",{"2":{"9":2,"23":2}}],["loading",{"0":{"9":1,"23":1}}],["loads",{"2":{"4":1}}],["look",{"2":{"6":1}}],["limit",{"2":{"17":2}}],["limits",{"2":{"5":1}}],["like",{"2":{"14":1}}],["linrange",{"2":{"10":1}}],["lines",{"2":{"5":1,"6":1}}],["literature",{"2":{"6":2}}],["light",{"2":{"2":1,"14":2}}],["library",{"2":{"2":1,"6":1}}],["lt",{"2":{"2":5}}],["ϕpa",{"2":{"6":4}}],["ϕq",{"2":{"2":1}}],["ϕ0",{"2":{"2":4,"6":9}}],["ϕ",{"2":{"2":10,"6":5,"18":6}}],["3282im",{"2":{"24":1}}],["36531im",{"2":{"24":1}}],["317471im",{"2":{"24":1}}],["313947",{"2":{"24":1}}],["315275im",{"2":{"24":1}}],["38856im",{"2":{"24":1}}],["3847",{"2":{"7":3,"19":3,"21":2}}],["380",{"2":{"6":1}}],["38",{"2":{"6":1,"9":2,"10":2,"24":6}}],["34574",{"2":{"24":1}}],["34245im",{"2":{"24":1}}],["341",{"2":{"19":1}}],["34",{"2":{"2":1}}],["33842+0",{"2":{"24":1}}],["33336im",{"2":{"24":1}}],["33",{"2":{"2":1}}],["35287im",{"2":{"24":1}}],["35",{"2":{"2":1}}],["37",{"2":{"2":1}}],["39",{"2":{"2":3,"3":1,"4":1,"10":2,"13":2,"14":1,"24":3}}],["3",{"2":{"2":7,"5":1,"7":1,"9":2,"10":2,"18":1,"19":3,"20":1,"21":1,"24":6}}],["59245im",{"2":{"24":1}}],["513594+0",{"2":{"24":1}}],["5127694683107693",{"2":{"9":1,"10":1,"24":3}}],["583945im",{"2":{"24":1}}],["5879203321591805",{"2":{"9":1,"10":1,"24":3}}],["549581+0",{"2":{"24":1}}],["5478im",{"2":{"24":1}}],["54038",{"2":{"24":1}}],["561",{"2":{"19":1}}],["505174im",{"2":{"24":1}}],["505398",{"2":{"24":1}}],["50275",{"2":{"24":1}}],["502366im",{"2":{"24":1}}],["5025254191248507",{"2":{"9":1,"10":1,"24":3}}],["50",{"2":{"10":2}}],["5099457504520795",{"2":{"9":1,"10":1,"24":3}}],["500",{"2":{"9":1,"10":4,"11":1,"23":1,"24":4}}],["53031",{"2":{"24":1}}],["53",{"2":{"6":1}}],["5",{"2":{"2":5,"9":1,"10":3,"17":1,"18":1,"19":1,"24":5}}],["α=1",{"2":{"6":1}}],["α",{"2":{"2":13,"6":15}}],["nuclei",{"2":{"13":1,"14":1,"17":1}}],["numerically",{"2":{"6":1}}],["number=c",{"2":{"2":1}}],["numbers",{"2":{"2":3}}],["number",{"2":{"2":74,"6":1}}],["named",{"2":{"18":1}}],["narayan",{"2":{"7":1,"16":1,"17":1,"18":1,"19":4,"20":1,"21":1}}],["nas",{"2":{"2":3}}],["nevertheless",{"2":{"20":1}}],["new",{"2":{"6":1,"9":1,"12":2,"23":1,"25":1}}],["need",{"2":{"2":1,"6":3,"20":1,"24":2}}],["needs",{"2":{"2":1}}],["non",{"0":{"20":1},"1":{"21":1},"2":{"4":1}}],["nonlinearsolve",{"2":{"2":1}}],["noisesignal",{"2":{"24":2}}],["noise",{"2":{"2":5,"24":7}}],["noted",{"2":{"20":1}}],["notices",{"2":{"19":2}}],["notable",{"2":{"14":1}}],["nothing",{"2":{"9":1}}],["not",{"2":{"2":3,"17":1,"24":1}}],["ny",{"2":{"2":2,"24":1}}],["nx",{"2":{"2":2,"24":1}}],["n",{"2":{"2":2}}],["other",{"2":{"20":2}}],["otherwise",{"2":{"2":1,"9":1,"12":2,"23":1,"25":1}}],["occur",{"2":{"17":1}}],["occurs",{"2":{"17":4}}],["open",{"2":{"9":1,"12":2,"23":1,"25":1}}],["optimize",{"2":{"3":1}}],["optional",{"2":{"2":4,"6":1}}],["own",{"0":{"6":1},"1":{"7":1},"2":{"6":2,"20":1}}],["overhead",{"2":{"11":1,"24":1}}],["overlap",{"2":{"5":1}}],["over",{"2":{"4":2,"5":1,"17":2}}],["overall",{"2":{"3":1}}],["our",{"2":{"3":1,"5":1}}],["output",{"2":{"3":1,"12":1,"25":1}}],["or",{"2":{"10":1,"15":1,"17":1,"18":3,"20":1}}],["order",{"2":{"3":1,"5":1,"18":1}}],["originally",{"2":{"2":1,"9":1,"18":1,"23":1}}],["orientation",{"2":{"2":1}}],["obtained",{"2":{"18":1}}],["observations",{"2":{"17":2}}],["observed",{"2":{"13":1,"14":1,"17":3,"20":1}}],["observer",{"2":{"2":4}}],["observing",{"2":{"2":6,"4":1,"5":2,"17":1,"18":5,"24":3}}],["objects",{"2":{"14":1,"17":3}}],["object",{"2":{"2":2}}],["once",{"2":{"6":1}}],["one",{"2":{"5":1}}],["on",{"2":{"2":13,"5":1,"6":5,"16":1,"17":4,"18":7}}],["only",{"2":{"2":2,"6":2,"17":2,"24":1}}],["offers",{"2":{"6":1}}],["often",{"2":{"6":2,"17":1}}],["of",{"2":{"2":58,"3":6,"4":3,"5":2,"6":10,"8":1,"9":2,"10":7,"11":1,"12":1,"13":6,"14":11,"17":8,"18":18,"19":5,"22":1,"23":4,"24":4,"25":2}}],["b→1+m",{"2":{"18":1}}],["b→",{"2":{"18":7}}],["bursts",{"2":{"17":1}}],["but",{"2":{"2":3,"17":1}}],["black",{"2":{"13":1,"14":2}}],["blurring",{"2":{"2":1,"17":1,"18":1}}],["bayesian",{"2":{"13":1}}],["baseline",{"2":{"10":1,"13":1,"14":1,"18":1}}],["base",{"2":{"9":1,"23":1}}],["based",{"2":{"2":12,"6":1,"16":1,"18":2}}],["brightness",{"2":{"13":1,"14":2}}],["brief",{"0":{"16":1},"1":{"17":1,"18":1,"19":1},"2":{"6":1,"10":1,"14":1,"17":1,"20":1}}],["broadened",{"2":{"17":1,"18":1}}],["broadening",{"2":{"2":8,"17":2,"18":2}}],["broaderning",{"2":{"2":3,"10":1}}],["both",{"2":{"5":1,"14":2,"17":2}}],["bool==true",{"2":{"2":1}}],["bool",{"2":{"2":1}}],["boxcar",{"2":{"2":1,"4":1,"18":1,"20":2}}],["box",{"2":{"2":2}}],["b",{"2":{"2":2,"6":5,"19":1}}],["bmin",{"2":{"2":4,"6":6}}],["bmaj",{"2":{"2":4,"6":6}}],["bypassing",{"2":{"11":1,"24":1}}],["by",{"2":{"2":19,"5":2,"6":1,"10":3,"11":1,"14":3,"15":1,"16":1,"17":3,"18":9,"20":2,"24":1}}],["because",{"2":{"24":1}}],["become",{"2":{"14":1,"17":1}}],["below",{"2":{"4":1,"5":1,"17":1}}],["between",{"2":{"3":1,"5":1,"18":2}}],["benchmarks",{"0":{"3":1},"1":{"4":1,"5":1},"2":{"3":1}}],["be",{"2":{"2":6,"4":1,"6":1,"9":1,"10":1,"12":1,"18":4,"23":1,"24":5,"25":1}}],["best",{"2":{"2":4,"9":1}}],["u=u",{"2":{"10":2}}],["u",{"2":{"2":4,"10":2,"12":2}}],["unless",{"2":{"20":1}}],["uncertainty",{"2":{"5":1}}],["under",{"2":{"5":1}}],["unscattered",{"2":{"2":1,"17":1}}],["unit",{"2":{"2":1}}],["using",{"2":{"2":7,"6":2,"9":2,"10":2,"13":1,"14":2,"18":1,"20":1,"23":2,"24":2}}],["uses",{"2":{"2":1,"18":1}}],["use",{"0":{"20":1},"1":{"21":1},"2":{"2":3,"4":1,"6":2,"9":2,"10":1,"18":1,"20":2,"23":1,"24":1}}],["useful",{"2":{"2":1}}],["used",{"2":{"2":1}}],["users",{"2":{"6":1,"20":2}}],["user",{"2":{"2":1}}],["usually",{"2":{"2":2}}],["upon",{"2":{"4":1}}],["up",{"2":{"2":1,"4":2}}],["257644im",{"2":{"24":1}}],["256",{"2":{"10":6,"24":4}}],["245928im",{"2":{"24":1}}],["24094564298608265",{"2":{"9":1,"10":1,"24":3}}],["26309+0",{"2":{"24":1}}],["229056+0",{"2":{"24":1}}],["23739im",{"2":{"24":1}}],["238",{"2":{"19":4}}],["21324",{"2":{"24":1}}],["21983+0",{"2":{"24":1}}],["219822im",{"2":{"24":1}}],["211806im",{"2":{"24":1}}],["218690603755095e10",{"2":{"24":4}}],["289585im",{"2":{"24":1}}],["283655+0",{"2":{"24":1}}],["288871+0",{"2":{"24":1}}],["28",{"2":{"19":2}}],["2πr→⋅b→dλ",{"2":{"18":1}}],["29345e11",{"2":{"10":1}}],["27",{"2":{"9":1,"10":1,"24":3}}],["206076im",{"2":{"24":1}}],["2067222894984828",{"2":{"9":1,"10":1,"24":3}}],["200",{"2":{"10":4,"24":2}}],["2014",{"2":{"9":1,"23":1}}],["2016",{"2":{"7":2,"16":1,"19":2,"20":1,"21":1}}],["2018",{"2":{"2":21,"6":1,"7":2,"9":1,"19":2,"21":2}}],["2024",{"2":{"6":1}}],["2d",{"2":{"2":2}}],["2",{"2":{"2":4,"6":1,"7":2,"10":1,"11":2,"16":1,"18":2,"19":2,"20":1,"21":2,"24":2}}],["w",{"2":{"12":1}}],["written",{"2":{"11":1}}],["wrapped",{"2":{"1":1,"2":2}}],["work",{"2":{"13":1,"24":1}}],["works",{"2":{"9":1,"16":1,"23":1,"24":1}}],["wonder",{"2":{"2":3}}],["wondering",{"2":{"2":1}}],["was",{"2":{"18":1}}],["waves",{"2":{"13":1,"14":1,"18":1}}],["wavelengths",{"2":{"4":1,"5":1,"13":1,"14":1,"17":1}}],["wavelength",{"2":{"2":19,"5":1,"18":4,"24":1}}],["want",{"2":{"9":1,"24":1}}],["wander",{"2":{"6":6,"20":1,"24":1}}],["ways",{"2":{"15":1}}],["way",{"2":{"4":1,"14":1}}],["when",{"2":{"17":3}}],["where",{"2":{"2":1,"17":1,"18":3}}],["why",{"0":{"14":1}}],["what",{"0":{"14":1}}],["while",{"2":{"6":1,"18":1}}],["which",{"2":{"2":1,"3":1,"5":1,"6":1,"10":1,"11":1,"13":1,"18":6,"24":1}}],["window",{"2":{"9":1,"12":2,"23":1,"25":1}}],["with",{"2":{"2":2,"4":2,"5":1,"6":4,"9":1,"10":1,"13":2,"14":1,"17":2,"18":3,"20":1,"24":5}}],["will",{"2":{"2":2,"9":2,"10":1,"12":2,"18":2,"23":1,"24":5,"25":1}}],["well",{"2":{"2":1,"5":2,"14":2,"17":2,"20":1}}],["we",{"2":{"2":2,"3":1,"5":1,"9":1,"12":2,"20":1,"23":1,"24":2,"25":1}}],["mnras",{"2":{"19":2}}],["m=d",{"2":{"18":1}}],["multi",{"2":{"18":1}}],["much",{"2":{"17":1}}],["must",{"2":{"2":2}}],["monthly",{"2":{"19":2}}],["months",{"2":{"17":2}}],["modulations",{"2":{"14":1}}],["modeling",{"2":{"4":1,"13":3}}],["models",{"0":{"20":1},"1":{"21":1},"2":{"2":3,"4":2,"5":1,"6":5,"10":1,"13":2,"14":1,"18":2,"20":3,"24":3}}],["model",{"0":{"6":1,"18":1},"1":{"7":1},"2":{"2":28,"6":12,"8":2,"9":5,"10":4,"11":1,"12":1,"16":1,"17":1,"18":5,"20":4,"23":2,"24":16,"25":1}}],["most",{"2":{"6":1,"17":2}}],["moving",{"2":{"2":3}}],["more",{"2":{"2":1,"4":1,"6":1,"11":1,"14":1}}],["means",{"2":{"18":1}}],["meaning",{"2":{"18":1}}],["measurements",{"2":{"17":3,"18":2}}],["measurement",{"2":{"17":3,"18":1}}],["measured",{"2":{"2":2,"6":2}}],["medium",{"2":{"13":1,"24":1}}],["metadata",{"2":{"10":1,"23":1}}],["method",{"2":{"2":1,"10":2,"11":2,"24":5}}],["methods",{"2":{"2":4,"10":1}}],["m",{"2":{"2":4,"6":7,"7":3,"19":3,"21":2}}],["milky",{"2":{"14":1}}],["milliarcseconds",{"2":{"6":2,"17":1}}],["microarcseconds",{"2":{"17":1}}],["micro",{"2":{"14":1,"17":1}}],["minutes",{"2":{"17":1}}],["min",{"2":{"2":1}}],["minor",{"2":{"2":4,"5":1}}],["mises",{"2":{"2":3,"4":1,"18":1,"20":2}}],["matrix",{"2":{"24":1}}],["mathematically",{"2":{"18":1}}],["many",{"2":{"17":1,"18":1}}],["manifests",{"2":{"17":1}}],["mandatory",{"2":{"2":6,"6":2}}],["mad",{"2":{"9":1,"23":1}}],["make",{"2":{"6":1,"10":1,"24":2}}],["map",{"2":{"2":1}}],["maj",{"2":{"2":1}}],["majority",{"2":{"17":1}}],["major",{"2":{"2":8,"5":1}}],["magnetohydrodynamic",{"2":{"9":1,"23":1}}],["magnetic",{"2":{"2":1,"9":1,"23":1,"24":1}}],["magnification",{"2":{"2":1,"6":1,"18":1}}],["may",{"2":{"2":1,"4":1,"6":1,"11":2,"12":1,"24":1,"25":1}}],["mas=0",{"2":{"6":1}}],["mas=1",{"2":{"6":1}}],["masm",{"2":{"2":4}}],["mas",{"2":{"2":13,"6":6}}],["ζ0",{"2":{"2":2,"6":4}}],["ζ",{"2":{"2":9}}],["chromatic",{"2":{"18":1}}],["characteristics",{"2":{"18":1}}],["changing",{"2":{"18":1}}],["changes",{"2":{"18":1}}],["change",{"2":{"6":1,"9":1}}],["center",{"2":{"13":1,"14":1,"20":1}}],["centered",{"2":{"2":1}}],["create",{"2":{"10":1,"24":2}}],["crucial",{"2":{"3":1}}],["custom",{"2":{"6":3,"20":1}}],["cuts",{"2":{"3":1}}],["currently",{"2":{"2":1,"6":1}}],["cgs",{"2":{"2":5}}],["cw",{"2":{"2":1,"6":1}}],["ccw",{"2":{"2":1,"6":1}}],["c",{"2":{"2":4,"6":6}}],["cm=1",{"2":{"6":1}}],["cm=800e5",{"2":{"6":1}}],["cm",{"2":{"2":30,"6":17,"24":1}}],["case",{"2":{"24":1}}],["cases",{"2":{"18":1}}],["captured",{"2":{"18":1}}],["capabilities",{"2":{"3":1,"13":1}}],["cause",{"2":{"10":1,"14":1}}],["cairomakie",{"2":{"9":1,"23":1}}],["called",{"2":{"4":1,"18":1,"24":1}}],["calculated",{"2":{"12":1}}],["calc",{"2":{"1":2,"2":13,"6":18}}],["cannot",{"2":{"24":1}}],["can",{"2":{"3":2,"6":2,"8":1,"9":4,"10":7,"12":2,"18":3,"20":3,"23":2,"24":4}}],["car",{"2":{"2":2}}],["coefficient",{"2":{"18":1}}],["corresponds",{"2":{"18":1}}],["corresponding",{"2":{"2":3,"17":1,"18":1}}],["coordinate",{"2":{"18":1}}],["coordinates",{"2":{"2":4}}],["coherence",{"2":{"17":4}}],["collect",{"2":{"12":1}}],["colormap=",{"2":{"9":1,"10":4,"11":1,"23":1,"24":4}}],["codes",{"2":{"6":1}}],["covers",{"2":{"6":1}}],["commonfunctions",{"2":{"6":1}}],["component",{"2":{"18":1}}],["composability",{"2":{"13":1}}],["complexf64",{"2":{"12":1,"24":1}}],["complete",{"2":{"5":1,"17":1}}],["completely",{"2":{"5":1,"24":1}}],["compact",{"2":{"14":2,"17":2,"18":2,"20":1,"24":1}}],["compatible",{"2":{"6":1}}],["compared",{"2":{"4":1}}],["computation",{"2":{"4":1}}],["computations",{"2":{"4":1}}],["computes",{"2":{"18":1}}],["computed",{"2":{"5":1,"12":1}}],["compute",{"2":{"2":3,"4":1,"6":1,"10":2}}],["computing",{"2":{"2":2,"10":1}}],["comrade",{"2":{"2":5,"8":2,"9":3,"10":2,"13":1,"23":3}}],["comradebase",{"2":{"2":1,"10":2,"11":1}}],["confirm",{"2":{"20":1}}],["convolving",{"2":{"18":2}}],["convolved",{"2":{"10":1}}],["convolve",{"2":{"10":3}}],["convolution",{"2":{"10":1,"17":1,"18":1}}],["convert",{"2":{"6":1}}],["converting",{"2":{"2":2}}],["converted",{"2":{"2":1}}],["connecting",{"2":{"6":1}}],["consequently",{"2":{"17":1}}],["constants",{"2":{"6":2}}],["constructor",{"2":{"2":4,"6":2}}],["consistency",{"0":{"5":1},"2":{"5":1}}],["consistent",{"2":{"3":1,"4":1,"5":1,"18":1,"20":1,"24":1}}],["consist",{"2":{"3":1}}],["contribution",{"2":{"2":1}}],["concentration",{"2":{"2":5,"6":2}}],["feature",{"2":{"22":1}}],["few",{"2":{"6":1}}],["f",{"2":{"2":2,"10":3,"18":1}}],["frbs",{"2":{"17":2}}],["fr=νref",{"2":{"10":1}}],["fractional",{"2":{"5":1}}],["framework",{"2":{"3":2,"6":1,"16":1}}],["frequency",{"2":{"2":2,"10":3,"17":1,"18":3,"23":3,"24":4}}],["fresnel",{"2":{"2":1,"18":1}}],["from",{"2":{"2":11,"6":3,"8":1,"9":3,"10":6,"12":2,"13":2,"17":3,"18":2,"23":3,"24":6}}],["flexibility",{"2":{"24":1}}],["float64",{"2":{"2":2,"9":1,"10":4,"24":9}}],["fluctuations",{"2":{"2":7,"14":1,"17":3}}],["faster",{"2":{"3":1,"4":1}}],["fast",{"2":{"2":1,"3":1,"16":1,"17":1}}],["factor",{"2":{"2":1}}],["further",{"2":{"16":1,"18":1}}],["furthermore",{"2":{"2":1}}],["fully",{"2":{"18":1,"24":1}}],["full",{"2":{"2":1}}],["fundamental",{"2":{"6":1}}],["fundamentally",{"2":{"2":1}}],["functionalities",{"2":{"13":1}}],["functions",{"2":{"6":2}}],["function",{"2":{"2":6,"6":4,"18":3}}],["fwhm",{"2":{"2":8}}],["fourmula",{"2":{"2":1}}],["fourier",{"2":{"2":4,"4":1,"5":1,"18":5,"24":2}}],["follow",{"2":{"2":1}}],["followings",{"2":{"2":1}}],["following",{"2":{"2":3,"6":1,"18":2}}],["forget",{"2":{"24":2}}],["formula",{"2":{"2":5}}],["for",{"2":{"2":37,"4":3,"5":1,"6":6,"9":3,"10":5,"13":3,"14":1,"17":5,"18":2,"20":1,"23":1,"24":6}}],["figure",{"2":{"10":1}}],["files",{"2":{"12":2,"25":2}}],["file",{"2":{"9":1,"12":5,"23":1,"25":1}}],["final",{"2":{"3":1}}],["find",{"2":{"2":1,"6":1,"12":1}}],["finding",{"2":{"2":1}}],["finder",{"2":{"2":11}}],["findkzeta",{"2":{"1":1,"2":2}}],["first",{"2":{"2":2,"24":2}}],["field",{"2":{"2":4,"6":7,"18":1,"20":1,"24":1}}],["fields",{"2":{"2":7,"6":1}}],["fits",{"2":{"9":3,"12":14,"23":3,"25":8}}],["fit",{"2":{"2":4,"9":1}}],["time",{"2":{"17":4}}],["timescale",{"2":{"17":6}}],["times",{"2":{"4":2,"18":1}}],["typically",{"2":{"17":5,"18":1}}],["typeof",{"2":{"6":1}}],["types",{"2":{"6":1,"8":1,"13":1}}],["typedef",{"2":{"2":1}}],["type",{"2":{"2":5,"6":5}}],["twinkling",{"2":{"14":1}}],["twinkle",{"2":{"14":1}}],["two",{"2":{"3":1,"5":1,"17":1,"18":2,"20":1}}],["taking",{"2":{"13":1}}],["takes",{"2":{"3":1}}],["term",{"2":{"18":1}}],["temperature",{"2":{"13":1,"14":1}}],["temporal",{"2":{"13":1,"14":1}}],["telescope",{"2":{"13":1,"14":1}}],["tens",{"2":{"3":1}}],["tuple",{"2":{"24":1}}],["turbulence",{"2":{"13":1}}],["tutorial",{"0":{"12":1,"25":1},"2":{"11":1,"12":2,"22":1,"24":1,"25":1}}],["tutorials",{"2":{"6":1}}],["tp",{"2":{"6":2}}],["try",{"2":{"20":1}}],["transactions",{"2":{"19":1}}],["transformed",{"2":{"24":1}}],["transform",{"2":{"18":1}}],["transverse",{"2":{"18":1}}],["tranditional",{"2":{"6":1}}],["traditional",{"2":{"2":1}}],["true",{"2":{"2":2,"20":1}}],["t",{"2":{"2":17,"6":24,"24":4}}],["toolkit",{"2":{"13":1}}],["to",{"0":{"16":1},"1":{"17":1,"18":1,"19":1},"2":{"2":27,"3":2,"4":2,"6":12,"8":1,"9":1,"10":2,"11":2,"12":1,"13":2,"14":4,"17":5,"18":8,"20":2,"22":1,"24":8,"25":1}}],["through",{"2":{"15":1,"17":1,"18":1}}],["three",{"2":{"4":1,"6":3,"17":1,"18":1}}],["those",{"2":{"5":1}}],["thousands",{"2":{"3":2}}],["thanks",{"2":{"24":1}}],["than",{"2":{"3":1,"4":1,"17":5}}],["that",{"2":{"3":1,"5":1,"6":1,"18":1}}],["thin",{"2":{"2":4,"16":1,"18":1}}],["this",{"2":{"2":8,"4":1,"5":1,"6":8,"8":1,"9":2,"11":1,"13":1,"14":1,"17":5,"18":1,"20":1,"22":1,"23":2,"24":3}}],["their",{"2":{"14":2,"17":1}}],["they",{"0":{"14":1},"2":{"18":1}}],["there",{"2":{"11":1,"24":1}}],["then",{"2":{"3":1,"18":1,"20":1,"24":3}}],["these",{"2":{"2":2,"4":2,"14":1,"17":1,"18":1,"24":1}}],["the",{"0":{"12":1,"25":1},"2":{"2":171,"3":7,"4":8,"5":7,"6":24,"7":3,"8":3,"9":8,"10":13,"11":4,"12":7,"13":12,"14":14,"15":3,"17":30,"18":63,"19":6,"20":5,"21":2,"23":6,"24":26,"25":4}}],["square",{"2":{"18":1}}],["snapshot",{"2":{"17":1}}],["sagittarius",{"2":{"13":1,"14":1}}],["saved",{"2":{"12":1,"25":2}}],["save",{"0":{"12":1,"25":1},"2":{"12":7,"25":3}}],["samples",{"2":{"18":1}}],["sample",{"2":{"4":2,"24":1}}],["such",{"2":{"17":2}}],["substrucures",{"2":{"24":1}}],["substructures",{"2":{"17":1,"18":3,"24":1}}],["substractures",{"2":{"18":1}}],["subsequent",{"2":{"16":1}}],["subtype",{"2":{"2":1,"10":1}}],["supermassive",{"2":{"13":1,"14":1}}],["supports",{"2":{"11":1}}],["slow",{"2":{"11":1}}],["show",{"2":{"24":1}}],["shorter",{"2":{"17":2}}],["shortcut",{"0":{"11":1},"2":{"11":1,"24":1}}],["should",{"2":{"2":2,"6":1}}],["skip",{"2":{"24":1}}],["skm",{"2":{"10":8,"11":1,"12":3}}],["skymodels",{"2":{"11":1}}],["skymodel",{"2":{"2":2,"9":1,"10":2,"23":1}}],["sky",{"2":{"2":4,"8":1,"10":1,"13":1,"14":1,"17":2,"18":1,"24":2}}],["src",{"2":{"6":3}}],["sgr",{"2":{"6":1,"9":1,"14":1,"18":1,"20":1}}],["since",{"2":{"18":1}}],["single",{"2":{"16":1,"18":1}}],["simulating",{"0":{"24":1},"2":{"13":1,"22":1}}],["simulation",{"2":{"3":2}}],["simulated",{"2":{"24":1}}],["simulates",{"2":{"17":1}}],["simulate",{"0":{"8":1,"10":1,"22":1},"1":{"9":1,"10":1,"11":1,"12":1,"23":1,"24":1,"25":1},"2":{"8":1,"9":1,"22":1}}],["simple",{"2":{"24":1}}],["simply",{"2":{"6":1}}],["simplified",{"2":{"6":1}}],["significant",{"2":{"3":1,"4":1}}],["size=",{"2":{"9":1,"10":4,"11":1,"23":1,"24":4}}],["size",{"2":{"2":5,"18":1}}],["sizes",{"2":{"2":2,"17":1}}],["spatial",{"2":{"13":1,"18":2}}],["space",{"2":{"2":3,"4":1,"5":1,"13":1,"14":1,"18":2}}],["speed",{"0":{"4":1},"2":{"2":1,"3":1,"4":3,"13":1}}],["specify",{"2":{"24":1}}],["specific",{"2":{"2":1}}],["specified",{"2":{"2":8,"9":1}}],["spectral",{"2":{"13":1,"14":1}}],["spectrum",{"2":{"2":2,"18":1}}],["step",{"2":{"24":1}}],["studies",{"2":{"14":2}}],["strongly",{"2":{"20":1}}],["strong",{"2":{"13":1,"17":2}}],["stretched",{"2":{"10":1,"24":1}}],["struct",{"2":{"6":1}}],["structure",{"2":{"2":5,"6":1,"18":3}}],["stablerngs",{"2":{"24":1}}],["stablerng",{"2":{"24":2}}],["stationary",{"2":{"18":1}}],["stationaryrandomfields",{"2":{"2":1,"24":2}}],["stations",{"2":{"18":1}}],["statistical",{"2":{"18":1}}],["stars",{"2":{"14":1}}],["standardized",{"2":{"6":2}}],["standard",{"2":{"5":1,"15":2}}],["s=0",{"2":{"2":4}}],["s",{"2":{"2":7,"3":1,"4":1,"10":2,"13":2,"14":1,"24":2}}],["smaller",{"2":{"17":1}}],["small",{"2":{"3":1,"17":1}}],["sm",{"2":{"2":18,"6":4,"9":1,"10":1,"11":1,"24":5}}],["series",{"2":{"19":1}}],["segments",{"2":{"18":1}}],["separated",{"2":{"18":1}}],["second",{"2":{"18":2}}],["seconds",{"2":{"17":1}}],["semi",{"2":{"16":1,"18":1}}],["semianalytic",{"2":{"6":1}}],["self",{"2":{"4":1}}],["see",{"2":{"2":4,"4":1,"6":2,"9":1,"14":1,"18":1,"20":1}}],["sets",{"2":{"2":1}}],["set",{"2":{"2":3,"6":2,"9":1,"18":1}}],["so",{"2":{"24":1}}],["society",{"2":{"19":3}}],["software",{"2":{"13":1}}],["solve",{"2":{"6":1}}],["solves",{"2":{"2":2}}],["solver",{"2":{"2":1}}],["sources",{"2":{"14":2,"17":2,"20":1}}],["source",{"2":{"2":36,"6":1,"9":1,"10":6,"11":1,"17":1,"18":4,"23":1,"24":4}}],["scheme",{"2":{"24":1}}],["scope",{"0":{"17":1}}],["scenarios",{"2":{"14":1}}],["scintillation",{"0":{"14":1},"2":{"13":2,"14":4,"17":7}}],["scaling",{"2":{"2":3}}],["scales",{"2":{"14":1,"17":4}}],["scaled",{"2":{"2":1,"24":1}}],["scale",{"2":{"2":6,"6":1,"17":2,"18":1}}],["scattered",{"2":{"2":2,"10":2,"12":1,"17":2,"18":6,"24":6,"25":1}}],["scatteringscreen",{"2":{"24":1}}],["scatteringkernel",{"2":{"2":1}}],["scatteringmodels",{"2":{"6":2}}],["scatteringmodel",{"2":{"2":1,"9":2,"20":2,"24":1}}],["scattering",{"0":{"6":1,"8":1,"10":1,"14":1,"16":1,"17":1,"18":1,"22":1,"24":1},"1":{"7":1,"9":1,"10":1,"11":1,"12":1,"17":1,"18":1,"19":1,"23":1,"24":1,"25":1},"2":{"2":43,"3":3,"4":3,"5":2,"6":3,"8":2,"9":3,"10":7,"12":1,"13":2,"14":7,"16":1,"17":16,"18":9,"20":6,"22":2,"24":7}}],["scatteringoptics",{"2":{"1":32,"2":35,"4":2,"6":2,"8":1,"9":2,"10":1,"13":1,"15":2,"16":1,"17":1,"18":2,"20":1,"22":1,"24":2}}],["scatter",{"2":{"1":2,"2":2,"8":1,"10":1,"11":1,"24":8}}],["scateringoptics",{"0":{"0":1},"1":{"1":1,"2":1}}],["screen=noise",{"2":{"24":1}}],["screen=nothing",{"2":{"2":2}}],["screen",{"2":{"1":1,"2":28,"6":1,"9":1,"16":1,"18":10,"24":12}}],["goodman",{"2":{"17":1,"19":2}}],["governed",{"2":{"2":1}}],["ga",{"2":{"24":2,"25":3}}],["galactic",{"2":{"13":2,"14":1,"17":1,"20":1}}],["gaussian",{"2":{"2":1,"10":2,"12":1,"18":1,"24":7,"25":1}}],["gλ",{"2":{"10":1}}],["glambda",{"2":{"10":1}}],["g",{"2":{"10":6,"12":3,"18":4,"24":7}}],["ghz",{"2":{"10":1,"23":1}}],["grid",{"2":{"24":2}}],["grmhd",{"2":{"9":1,"23":1}}],["gradients",{"2":{"18":1}}],["gradient",{"2":{"2":1}}],["grad",{"2":{"1":1,"2":2}}],["gives",{"2":{"22":1}}],["give",{"2":{"2":1}}],["given",{"2":{"2":25,"4":1,"6":1,"18":2}}],["gea",{"2":{"10":2,"12":3}}],["general",{"2":{"9":1,"11":1,"18":1,"23":1}}],["generated",{"2":{"10":1,"12":3,"24":3,"25":1}}],["generate",{"2":{"10":1,"24":3}}],["generates",{"2":{"2":1}}],["generative",{"2":{"18":1}}],["generation",{"2":{"2":1,"11":1,"24":1}}],["generating",{"2":{"2":3}}],["get",{"2":{"1":1,"2":1,"9":1,"12":2,"23":1,"25":1}}],["vmsm",{"2":{"20":1}}],["vsrc",{"2":{"18":2}}],["vobs",{"2":{"18":2}}],["von",{"2":{"2":3,"4":1,"18":1,"20":2}}],["vonmises",{"2":{"1":1,"2":2}}],["vonmisesscatteringmodel",{"2":{"1":1,"2":3,"20":1}}],["v=0",{"2":{"10":1}}],["visible",{"2":{"14":1}}],["visibilities",{"2":{"4":1,"5":1,"12":1,"18":3}}],["visibility",{"2":{"1":2,"2":3,"10":3}}],["visibiltiies",{"2":{"2":1}}],["vis",{"2":{"10":2,"12":2}}],["vast",{"2":{"17":1}}],["various",{"2":{"6":1}}],["varying",{"2":{"4":1}}],["values",{"2":{"6":1}}],["vea",{"2":{"18":2}}],["very",{"2":{"13":1,"14":1}}],["version",{"2":{"6":1}}],["vector",{"2":{"12":1,"18":2}}],["velocity",{"2":{"2":1}}],["v",{"2":{"2":4}}],["vy",{"2":{"2":4}}],["vx",{"2":{"2":4}}],["vlbiskymodels",{"2":{"9":1,"10":4,"23":1,"24":3}}],["vlbi",{"2":{"2":2,"14":2}}],["ia",{"2":{"18":3}}],["iea",{"2":{"18":3}}],["identified",{"2":{"17":1}}],["ideally",{"2":{"2":2}}],["i",{"2":{"14":1,"18":2,"24":1}}],["ionized",{"2":{"13":1,"14":1}}],["its",{"2":{"12":1}}],["iterative",{"2":{"11":1,"24":1}}],["iterations",{"2":{"3":1}}],["it",{"2":{"2":1,"3":1,"10":1,"11":1,"13":1,"18":1,"24":1}}],["if",{"2":{"2":4,"9":2,"24":2}}],["important",{"0":{"14":1},"2":{"14":1}}],["import",{"2":{"9":1,"23":1}}],["improvements",{"2":{"4":2}}],["imprdovements",{"2":{"3":1}}],["implemented",{"2":{"6":1,"10":1,"14":1,"17":1,"24":1}}],["implements",{"2":{"2":1,"6":1,"10":1,"13":1,"16":1,"18":1,"20":1}}],["implementations",{"2":{"3":1,"5":2}}],["implementation",{"2":{"2":3,"3":2,"4":1}}],["implement",{"2":{"2":1}}],["im",{"2":{"2":2,"9":2,"10":10,"11":3,"12":12,"23":3,"24":14,"25":6}}],["imap",{"2":{"2":4}}],["imaging",{"2":{"2":2,"3":2,"4":1,"5":1,"6":1,"9":1,"14":1,"23":1}}],["imagepixels",{"2":{"10":3,"24":1}}],["imageviz",{"2":{"9":1,"10":4,"11":1,"23":1,"24":4}}],["images",{"2":{"4":1,"12":2,"13":2,"14":1,"17":1,"18":1,"25":2}}],["image",{"0":{"9":1,"23":1},"2":{"1":2,"2":12,"3":1,"9":4,"10":14,"11":3,"12":2,"17":4,"18":12,"23":6,"24":24,"25":2}}],["isky",{"2":{"18":1}}],["isrc",{"2":{"18":2}}],["ism",{"2":{"2":2}}],["isn",{"2":{"2":2}}],["is",{"2":{"2":13,"3":1,"5":1,"6":2,"8":1,"9":3,"10":2,"11":3,"13":3,"14":1,"15":1,"17":8,"18":14,"20":2,"22":1,"23":2,"24":3}}],["influenced",{"2":{"14":1}}],["information",{"2":{"24":2}}],["info",{"2":{"4":1}}],["include",{"2":{"14":1}}],["included",{"2":{"4":1,"6":1}}],["increasingly",{"2":{"14":1}}],["initialize",{"2":{"9":1,"11":1,"24":4}}],["installable",{"2":{"15":1}}],["installation",{"0":{"15":1}}],["instance",{"2":{"10":3}}],["instantiate",{"2":{"9":1,"24":1}}],["instead",{"2":{"2":1,"9":1,"11":1,"23":1}}],["inside",{"2":{"8":1,"24":1}}],["involves",{"2":{"6":1}}],["indeed",{"2":{"20":1}}],["index",{"0":{"1":1},"2":{"2":5}}],["indicating",{"2":{"5":1}}],["input",{"2":{"2":3,"11":1}}],["inner",{"2":{"2":4}}],["int64",{"2":{"24":2}}],["introduces",{"2":{"17":1,"18":1}}],["introduced",{"2":{"2":1}}],["introduction",{"0":{"13":1,"16":1},"1":{"14":1,"15":1,"17":1,"18":1,"19":1},"2":{"6":1,"10":1,"14":1,"17":1,"20":1}}],["interpolation",{"2":{"24":1}}],["interpreting",{"2":{"13":1}}],["intersteller",{"2":{"24":1}}],["interstellar",{"0":{"14":1,"16":1},"1":{"17":1,"18":1,"19":1},"2":{"2":1,"3":1,"6":1,"10":1,"13":3,"14":4,"16":1,"17":1,"18":1,"20":2}}],["interferometry",{"2":{"13":1,"14":1,"18":1}}],["interferometric",{"2":{"13":2,"14":1}}],["intentionally",{"2":{"11":1}}],["intensity",{"2":{"2":1}}],["intensitymap",{"2":{"2":4,"9":1,"10":3,"23":1,"24":3}}],["into",{"2":{"2":2,"17":1,"18":1,"24":1}}],["in",{"0":{"17":1},"2":{"2":60,"3":4,"4":3,"5":3,"6":13,"8":1,"9":3,"10":4,"11":2,"12":4,"13":4,"14":11,"15":1,"16":1,"17":14,"18":13,"20":3,"23":2,"24":6,"25":2}}],["known",{"2":{"14":1,"17":1,"18":1}}],["kζ",{"2":{"6":8}}],["kwargs",{"2":{"2":1}}],["km",{"2":{"2":8}}],["kpc=5",{"2":{"6":1}}],["kpc=2",{"2":{"6":1}}],["kpc",{"2":{"2":8,"6":6}}],["kenerl",{"2":{"2":1}}],["keyword",{"2":{"2":1}}],["keywords",{"2":{"2":3}}],["kernels",{"2":{"10":1}}],["kernel",{"2":{"2":9,"4":3,"5":4,"10":7,"11":1,"12":4,"17":1,"18":6}}],["kernelmodel",{"2":{"1":1,"2":1,"10":1}}],["kolmogorov",{"2":{"2":5}}],["kzeta",{"2":{"2":5}}],["kzetafinders",{"2":{"6":1}}],["kzetafinder",{"2":{"1":4,"2":8}}],["k",{"2":{"2":10}}],["rps",{"2":{"24":4}}],["rsta",{"2":{"19":1}}],["rickett",{"2":{"19":1}}],["rin",{"2":{"2":8,"6":7}}],["r→+rf2∇ϕ",{"2":{"18":1}}],["r→0",{"2":{"18":1}}],["r→0+r→",{"2":{"18":1}}],["r→",{"2":{"18":29}}],["runtimes",{"2":{"4":1}}],["runtime",{"2":{"3":1}}],["rng=rng",{"2":{"24":3}}],["rng",{"2":{"2":2,"24":1}}],["royal",{"2":{"19":3}}],["root",{"2":{"2":1}}],["roughly",{"2":{"2":1}}],["ratio",{"2":{"18":1}}],["ramesh",{"2":{"17":1}}],["ranging",{"2":{"17":1}}],["range",{"2":{"4":1,"5":2}}],["randomize",{"2":{"24":1}}],["random",{"2":{"2":1,"18":2}}],["ra",{"2":{"2":1,"6":1,"10":1}}],["radioastron",{"2":{"14":1}}],["radio",{"2":{"5":1,"13":3,"14":4,"17":3,"18":2}}],["radial",{"2":{"2":1}}],["radialextent",{"2":{"2":1}}],["radians",{"2":{"2":3,"6":2}}],["rad",{"2":{"2":4,"6":6,"24":2}}],["r",{"2":{"2":14,"6":7,"7":1,"18":3,"19":4,"21":1}}],["recommend",{"2":{"20":1}}],["reconstructed",{"2":{"4":1}}],["review",{"2":{"19":1}}],["realization",{"2":{"18":1}}],["reproducibility",{"2":{"24":1}}],["represents",{"2":{"18":2}}],["repository",{"2":{"15":1}}],["registered",{"2":{"15":1}}],["regimes",{"0":{"17":1},"2":{"17":3,"18":1}}],["regime",{"2":{"13":1,"17":9,"18":1}}],["responsible",{"2":{"18":1}}],["respectively",{"2":{"14":1}}],["resolution",{"2":{"14":1}}],["resulting",{"2":{"14":1}}],["resultant",{"2":{"10":1,"18":1}}],["results",{"2":{"3":1,"5":1}}],["result",{"2":{"2":1,"3":1,"17":1}}],["relation",{"2":{"18":1}}],["relativistic",{"2":{"9":1,"23":1}}],["related",{"2":{"2":2,"18":1}}],["return",{"2":{"2":2,"6":1}}],["returns",{"2":{"2":3}}],["requires",{"2":{"2":1}}],["reflect",{"2":{"17":1}}],["referred",{"2":{"14":1,"18":1}}],["references",{"0":{"7":1,"19":1,"21":1}}],["reference",{"2":{"2":14}}],["refractively",{"2":{"18":1}}],["refractive",{"0":{"22":1,"24":1},"1":{"23":1,"24":1,"25":1},"2":{"2":4,"14":1,"17":12,"18":3,"22":2,"24":4}}],["refractivephasescreen",{"2":{"1":2,"2":4,"24":4}}],["rf=drd+rλ2π",{"2":{"18":1}}],["rf",{"2":{"1":1,"2":2}}],["emsemble",{"2":{"24":1}}],["emissions",{"2":{"13":1,"14":1}}],["effectively",{"2":{"18":1}}],["effects",{"2":{"13":1,"14":1,"17":4,"20":1,"22":1,"24":2}}],["electron",{"2":{"14":1}}],["element",{"2":{"12":1}}],["especially",{"2":{"13":1}}],["essential",{"2":{"13":1}}],["each",{"2":{"17":1,"18":1}}],["earth",{"2":{"14":1,"18":2}}],["ea",{"2":{"10":4,"11":2,"12":3}}],["eofn",{"2":{"9":1,"23":1}}],["either",{"2":{"9":1,"23":1}}],["error",{"2":{"9":1,"12":2,"23":1,"25":1}}],["errors",{"2":{"5":1}}],["ecosystem",{"2":{"8":1,"9":1,"10":1,"23":1}}],["e",{"2":{"7":1,"14":1,"18":3,"19":1,"21":1,"24":1}}],["ensamble",{"2":{"18":1}}],["ensemble",{"2":{"10":1,"12":2,"17":3,"18":5}}],["ensembleaverage",{"2":{"1":2,"2":2,"11":3}}],["enjoy",{"2":{"6":1}}],["end",{"2":{"6":3,"12":1}}],["event",{"2":{"13":1,"14":1}}],["even",{"2":{"3":1,"24":1}}],["exponential",{"2":{"18":1}}],["exp⁡",{"2":{"18":2}}],["expressed",{"2":{"18":1}}],["explained",{"2":{"10":1}}],["exceeds",{"2":{"17":1}}],["except",{"2":{"17":1}}],["exhibit",{"2":{"17":1}}],["exhibits",{"2":{"4":1}}],["exemplified",{"2":{"14":1}}],["extended",{"2":{"16":1}}],["extent",{"2":{"2":1}}],["extremely",{"2":{"13":1,"14":1,"17":1}}],["extra",{"2":{"11":1}}],["examples",{"2":{"6":2,"14":1}}],["example",{"2":{"6":1,"9":1,"17":1,"23":1,"24":1}}],["exact",{"2":{"1":3,"2":11}}],["exactscatteringkernel",{"2":{"1":1,"2":3}}],["existing",{"2":{"3":1}}],["eht",{"2":{"2":2,"3":2,"4":1,"5":1,"6":1,"9":1,"12":1,"23":1,"25":1}}],["et",{"2":{"2":21,"6":4,"7":2,"9":2,"18":2,"19":2,"20":1,"21":2,"23":1}}],["equations",{"2":{"2":1,"6":2}}],["equation",{"2":{"1":1,"2":17,"18":2}}],["dr→",{"2":{"18":1}}],["days",{"2":{"17":2}}],["data",{"0":{"12":1,"25":1},"2":{"2":2,"6":1,"9":2,"12":6,"13":1,"14":1,"23":2,"25":2}}],["during",{"2":{"17":1}}],["due",{"2":{"14":1}}],["dy",{"2":{"2":4,"24":1}}],["dx",{"2":{"2":4,"24":1}}],["d2min",{"2":{"2":1,"6":3}}],["d2maj",{"2":{"2":1,"6":3}}],["d2",{"2":{"2":2,"6":2}}],["d1min",{"2":{"2":1,"6":3}}],["d1maj",{"2":{"2":1,"6":3}}],["d1",{"2":{"2":2,"6":2}}],["d",{"2":{"2":7,"6":8,"7":4,"18":2,"19":4,"21":3}}],["doesn",{"2":{"24":2}}],["don",{"2":{"24":2}}],["dominated",{"2":{"17":1}}],["domain",{"2":{"2":1,"10":1,"18":2,"24":2}}],["download",{"2":{"12":1}}],["downloaded",{"2":{"9":1,"23":1}}],["down",{"2":{"11":1}}],["do",{"2":{"11":1,"12":1}}],["doi",{"2":{"7":4,"19":8,"21":3}}],["docstrings",{"0":{"2":1}}],["dimensional",{"2":{"18":1}}],["directly",{"2":{"10":1}}],["direction",{"2":{"2":4}}],["disk",{"2":{"9":1,"23":1}}],["distort",{"2":{"24":1}}],["distortion",{"2":{"14":1}}],["distinct",{"2":{"17":2}}],["distribution",{"2":{"2":1}}],["distance",{"2":{"2":8,"18":4}}],["diffrective",{"2":{"2":1}}],["diffractively",{"2":{"10":1,"18":4,"24":1}}],["diffractive",{"0":{"8":1,"10":1},"1":{"9":1,"10":1,"11":1,"12":1},"2":{"2":4,"8":1,"10":1,"14":1,"17":10,"18":1}}],["differentiation",{"2":{"3":1}}],["differential",{"2":{"2":1}}],["different",{"2":{"2":1,"9":1,"18":1,"20":1}}],["dipole",{"2":{"1":1,"2":6,"4":1,"5":1,"18":3,"20":1}}],["dipolescatteringmodel",{"2":{"1":1,"2":3,"9":2,"10":2,"20":1,"24":6}}],["deterministic",{"2":{"17":1}}],["detailed",{"2":{"14":1}}],["details",{"2":{"2":4}}],["dependent",{"2":{"18":1}}],["depending",{"2":{"17":1}}],["depends",{"2":{"6":4,"18":1}}],["developed",{"2":{"13":1,"16":1}}],["dexter",{"2":{"9":1,"23":1}}],["design",{"2":{"24":1}}],["designed",{"2":{"8":1,"13":1}}],["descriptions",{"2":{"18":1}}],["description",{"2":{"14":1}}],["describes",{"2":{"8":1,"18":1}}],["described",{"2":{"2":3,"10":1,"17":1,"18":3,"24":1}}],["denoted",{"2":{"6":2,"18":1}}],["density",{"2":{"6":1,"14":1}}],["demonstrate",{"2":{"5":1}}],["deg=81",{"2":{"6":1}}],["deg",{"2":{"2":3,"6":2}}],["degree",{"2":{"2":4}}],["definition",{"2":{"6":1}}],["define",{"0":{"6":1},"1":{"7":1},"2":{"6":5,"20":2}}],["defined",{"2":{"2":6,"6":1,"10":1,"18":1}}],["default",{"0":{"20":1},"1":{"21":1},"2":{"2":5,"4":1,"6":1,"18":1,"20":2}}],["defaults",{"2":{"2":4}}],["dec",{"2":{"2":1,"6":1}}],["derived",{"2":{"2":2}}],["dz",{"2":{"1":1,"2":2}}],["ddϕ",{"2":{"1":1,"2":1}}],["dmin",{"2":{"1":1,"2":2}}],["dmaj",{"2":{"1":1,"2":1}}],["dϕ",{"2":{"1":2,"2":4,"18":6}}],["pbsm",{"2":{"20":1}}],["pulsars",{"2":{"17":2}}],["published",{"2":{"6":1}}],["pkg",{"2":{"15":2}}],["philosophical",{"2":{"19":1}}],["phenomena",{"2":{"14":1}}],["phenomenon",{"2":{"14":1}}],["physical",{"2":{"13":1}}],["phase",{"2":{"1":1,"2":19,"6":2,"17":1,"18":8,"24":6}}],["phasescreenpowerlaw",{"2":{"1":1,"2":1,"24":2}}],["plasma",{"2":{"14":1}}],["please",{"2":{"6":1,"9":1,"12":2,"20":1,"23":1,"25":1}}],["plot",{"2":{"5":1,"9":1,"10":7,"11":1,"23":1,"24":4}}],["plotting",{"2":{"5":1}}],["plots",{"2":{"4":1}}],["python",{"2":{"3":1,"5":1}}],["psm",{"2":{"2":5}}],["psaltis",{"2":{"2":16,"6":3,"7":1,"18":1,"19":1,"20":1,"21":1}}],["performs",{"2":{"3":1,"18":1}}],["per",{"2":{"2":8,"5":1}}],["periodic",{"2":{"2":3,"18":1,"20":2}}],["periodicboxcar",{"2":{"1":1,"2":2}}],["periodicboxcarscatteringmodel",{"2":{"1":1,"2":3,"20":1}}],["pixel",{"2":{"2":4}}],["pc",{"2":{"2":4}}],["pϕ",{"2":{"2":1,"6":4}}],["pϕfunc",{"2":{"2":2,"6":3}}],["polar",{"2":{"2":2}}],["position",{"2":{"2":5,"6":1}}],["powerful",{"2":{"24":1}}],["powerspectrum",{"2":{"6":1,"24":1}}],["power",{"2":{"2":9,"18":1}}],["points",{"2":{"4":1}}],["point",{"2":{"1":2,"2":5,"10":2}}],["particular",{"2":{"24":1}}],["parameter",{"2":{"2":11,"6":3,"9":1}}],["parameters",{"2":{"2":10,"3":1,"4":1,"6":12,"9":1}}],["params",{"2":{"1":1,"2":1}}],["pair",{"2":{"18":1}}],["pass",{"2":{"18":1}}],["page",{"2":{"8":1,"22":1}}],["pathway",{"2":{"4":1}}],["paves",{"2":{"4":1}}],["package",{"2":{"2":1,"6":4,"8":2,"9":1,"13":4,"14":1,"15":1,"17":1,"18":2,"20":1,"23":1}}],["produce",{"2":{"18":1,"24":3}}],["produces",{"2":{"3":1,"5":1,"14":1}}],["proposed",{"2":{"18":1,"20":1}}],["proportional",{"2":{"18":1}}],["properties",{"2":{"18":1}}],["projects",{"2":{"14":1}}],["programming",{"2":{"13":1}}],["probabilistic",{"2":{"6":2,"18":3,"24":1}}],["probability",{"2":{"2":1,"6":1}}],["processes",{"2":{"11":1,"24":1}}],["process",{"2":{"3":1,"24":1}}],["procedure",{"2":{"2":1}}],["providing",{"2":{"2":1,"18":1}}],["provides",{"2":{"13":1}}],["provided",{"2":{"2":1,"12":1,"25":1}}],["provide",{"2":{"2":2,"13":1}}],["previous",{"2":{"18":1}}],["present",{"2":{"3":1,"17":1}}],["presented",{"2":{"2":3}}],["prefac",{"2":{"2":2,"6":4}}],["precomputed",{"2":{"2":1,"6":3}}],["primarily",{"2":{"13":1}}],["primitive",{"2":{"2":1}}],["print",{"2":{"10":1,"23":1}}],["prints",{"2":{"7":1,"19":1,"21":1}}],["privide",{"2":{"2":2}}],["a2",{"2":{"24":2}}],["again",{"2":{"23":1,"24":1}}],["agns",{"2":{"14":1,"17":1}}],["aa",{"2":{"19":1}}],["aadcff",{"2":{"7":1,"19":1,"21":1}}],["aiming",{"2":{"13":1}}],["ax",{"2":{"10":2}}],["axis",{"2":{"2":16,"5":1,"6":2,"10":1}}],["afmhot",{"2":{"9":1,"10":4,"11":1,"23":1,"24":4}}],["above",{"2":{"11":1,"12":1,"25":1}}],["abs",{"2":{"10":1}}],["abstraction",{"2":{"6":1}}],["abstractphasescreen",{"2":{"2":4}}],["abstractmodel",{"2":{"2":2,"10":2,"11":1}}],["abstract",{"2":{"2":6,"6":2}}],["abstractscatteringmodel",{"2":{"1":1,"2":21,"6":3}}],["abstractscatteringkernel",{"2":{"1":1,"2":4}}],["abstractkzetafinder",{"2":{"1":1,"2":8,"6":1}}],["able",{"2":{"6":1}}],["accurate",{"2":{"16":1}}],["accelerate",{"2":{"3":1}}],["active",{"2":{"13":1,"14":1,"17":1}}],["actual",{"2":{"6":2,"20":1,"24":1}}],["across",{"2":{"5":1}}],["automatically",{"2":{"24":1}}],["auto",{"2":{"3":1}}],["add",{"2":{"15":2,"24":3}}],["advanced",{"2":{"13":1}}],["advantage",{"2":{"3":1,"13":1}}],["ads",{"2":{"7":4,"19":8,"21":3}}],["ad",{"2":{"3":1}}],["adopts",{"2":{"2":3}}],["available",{"2":{"24":1,"25":1}}],["averaging",{"2":{"17":2}}],["averaged",{"2":{"17":2}}],["average",{"2":{"2":2,"10":1,"12":2,"17":5,"18":8,"24":1,"25":2}}],["avstractphasescreen",{"2":{"2":1}}],["amp",{"2":{"16":1,"18":1,"20":1}}],["amplitudes",{"2":{"2":1,"10":1}}],["amin",{"2":{"2":4,"6":6}}],["amaj",{"2":{"2":4,"6":6}}],["atmosphere",{"2":{"14":1}}],["at",{"2":{"2":11,"6":1,"13":1,"14":2,"18":1}}],["astrophysics",{"2":{"19":1}}],["astrophysical",{"2":{"7":3,"19":3,"21":2}}],["astronomical",{"2":{"17":2,"19":2}}],["astronomy",{"2":{"5":1,"13":1,"14":1,"19":1}}],["asymmetric",{"2":{"2":2}}],["asymmetry",{"2":{"2":2,"6":1}}],["as",{"2":{"2":5,"3":1,"5":2,"6":4,"8":1,"10":1,"11":1,"14":3,"17":4,"18":5,"20":1,"24":2}}],["arbitral",{"2":{"24":1}}],["arcsecond",{"2":{"14":1}}],["arises",{"2":{"17":2}}],["arise",{"2":{"13":1,"18":1}}],["arrestic",{"2":{"9":1,"23":1}}],["argument",{"2":{"24":1}}],["arguments",{"2":{"2":1,"9":1}}],["argurments",{"2":{"2":1}}],["are",{"0":{"14":2},"2":{"2":9,"4":1,"5":1,"6":4,"14":2,"17":4,"18":2,"25":1}}],["arxiv",{"2":{"2":4,"7":3,"19":3,"21":3}}],["a",{"0":{"11":1},"2":{"2":33,"3":1,"4":2,"6":13,"8":1,"9":5,"10":4,"11":2,"12":2,"13":1,"14":4,"16":2,"17":6,"18":10,"19":1,"20":2,"22":1,"23":3,"24":16,"25":4}}],["annurev",{"2":{"19":1}}],["annual",{"2":{"19":1}}],["antennas",{"2":{"18":1}}],["analyzing",{"2":{"13":1}}],["analytically",{"2":{"18":1,"24":1}}],["analytic",{"2":{"2":2,"16":1,"18":2}}],["any",{"2":{"8":1,"10":1}}],["anisotropic",{"2":{"13":1}}],["anisotropy",{"2":{"2":3}}],["anistropic",{"2":{"2":8}}],["another",{"2":{"2":1,"22":1}}],["angle",{"2":{"2":6,"6":2}}],["angular",{"2":{"2":11,"10":1,"14":1,"17":4,"18":3}}],["and",{"0":{"14":1},"2":{"2":17,"3":2,"4":3,"5":3,"6":2,"10":3,"12":1,"13":6,"14":4,"15":1,"16":1,"17":13,"18":4,"19":1,"20":2,"24":7}}],["an",{"2":{"2":13,"6":1,"9":2,"10":1,"11":2,"13":1,"23":2,"24":4}}],["although",{"2":{"11":1}}],["alternatively",{"2":{"9":1,"23":1,"24":1}}],["along",{"2":{"6":1,"10":1}}],["also",{"2":{"4":1,"10":2,"11":1,"12":1,"13":1,"20":1}}],["all",{"2":{"2":1,"5":2,"6":3}}],["al",{"2":{"2":21,"6":4,"7":2,"9":2,"18":2,"19":2,"20":1,"21":2,"23":1}}],["appear",{"2":{"14":1}}],["approximated",{"2":{"2":2}}],["approximatedscatteringkernel",{"2":{"1":1,"2":2,"10":1}}],["approximate",{"2":{"2":1,"6":1}}],["approximation",{"2":{"2":5}}],["approx",{"2":{"1":2,"2":6}}],["api",{"0":{"0":1},"1":{"1":1,"2":1}}],["just",{"2":{"24":1}}],["juliag",{"2":{"10":1}}],["juliaget",{"2":{"2":1}}],["juliausing",{"2":{"6":1,"9":2,"12":1,"15":1,"20":1,"23":1,"24":1}}],["julia",{"2":{"3":2,"4":2,"5":1,"10":5,"11":1,"12":1,"13":2,"15":2,"24":6,"25":1}}],["juliawrapped",{"2":{"2":1}}],["juliavisibility",{"2":{"2":2}}],["juliasm",{"2":{"6":1}}],["juliascatter",{"2":{"2":2}}],["juliastruct",{"2":{"2":8}}],["juliaphase",{"2":{"2":1}}],["juliakzetafinder",{"2":{"2":1}}],["juliakernelmodel",{"2":{"2":1}}],["juliafindkzeta",{"2":{"2":1}}],["juliaensembleaverage",{"2":{"2":2}}],["juliacalc",{"2":{"2":1}}],["juliaddϕ",{"2":{"2":1}}],["juliadmaj",{"2":{"2":1}}],["juliadϕ",{"2":{"2":2}}],["juliarefractivephasescreen",{"2":{"2":2}}],["julia$",{"2":{"2":1}}],["juliaabstract",{"2":{"2":2}}],["juliaabstractkzetafinder",{"2":{"2":1}}],["j",{"2":{"17":1,"19":3}}],["jeremy",{"2":{"17":1}}],["jason",{"2":{"9":1,"23":1}}],["journal",{"2":{"7":3,"19":3,"21":2}}],["joint",{"2":{"4":1}}],["johnson",{"2":{"2":5,"6":1,"7":3,"9":1,"16":1,"18":1,"19":3,"20":1,"21":2}}],["johnson2018",{"2":{"1":1,"2":1}}],["jl",{"0":{"0":1},"1":{"1":1,"2":1},"2":{"2":2,"4":2,"6":1,"8":3,"9":2,"10":7,"13":2,"16":1,"17":1,"18":2,"22":1,"23":2,"24":3}}]],"serializationVersion":2}';export{e as default}; diff --git a/dev/assets/chunks/@localSearchIndexroot.mzX19PWK.js b/dev/assets/chunks/@localSearchIndexroot.mzX19PWK.js deleted file mode 100644 index 612954a..0000000 --- a/dev/assets/chunks/@localSearchIndexroot.mzX19PWK.js +++ /dev/null @@ -1 +0,0 @@ -const e='{"documentCount":26,"nextId":26,"documentIds":{"0":"/ScatteringOptics.jl/dev/api#ScateringOptics.jl-API","1":"/ScatteringOptics.jl/dev/api#index","2":"/ScatteringOptics.jl/dev/api#docstrings","3":"/ScatteringOptics.jl/dev/benchmarks#benchmarks","4":"/ScatteringOptics.jl/dev/benchmarks#speed","5":"/ScatteringOptics.jl/dev/benchmarks#consistency","6":"/ScatteringOptics.jl/dev/custommodels#Define-Your-Own-Scattering-Model","7":"/ScatteringOptics.jl/dev/custommodels#references","8":"/ScatteringOptics.jl/dev/diffractive#Simulate-Diffractive-Scattering","9":"/ScatteringOptics.jl/dev/diffractive#Loading-your-image","10":"/ScatteringOptics.jl/dev/diffractive#Simulate-diffractive-scattering","11":"/ScatteringOptics.jl/dev/diffractive#A-quick-shortcut","12":"/ScatteringOptics.jl/dev/diffractive#Save-the-tutorial-data","13":"/ScatteringOptics.jl/dev/introduction#introduction","14":"/ScatteringOptics.jl/dev/introduction#What-are-interstellar-scattering-and-scintillation?-Why-are-they-important?","15":"/ScatteringOptics.jl/dev/introduction#installation","16":"/ScatteringOptics.jl/dev/math#Brief-Introduction-to-Interstellar-Scattering","17":"/ScatteringOptics.jl/dev/math#Scattering-Regimes-in-Scope","18":"/ScatteringOptics.jl/dev/math#Scattering-Model","19":"/ScatteringOptics.jl/dev/math#references","20":"/ScatteringOptics.jl/dev/nondefaultmodels#Use-Non-default-Models","21":"/ScatteringOptics.jl/dev/nondefaultmodels#references","22":"/ScatteringOptics.jl/dev/refractive#Simulate-Refractive-Scattering","23":"/ScatteringOptics.jl/dev/refractive#Loading-your-image","24":"/ScatteringOptics.jl/dev/refractive#Simulating-Refractive-Scattering","25":"/ScatteringOptics.jl/dev/refractive#Save-the-tutorial-data"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[3,1,1],"1":[1,3,42],"2":[1,3,459],"3":[1,1,71],"4":[1,1,82],"5":[1,1,74],"6":[5,1,254],"7":[1,5,39],"8":[3,1,30],"9":[3,3,144],"10":[3,3,177],"11":[3,3,68],"12":[4,3,101],"13":[1,1,100],"14":[10,1,128],"15":[1,1,21],"16":[5,1,34],"17":[4,5,168],"18":[2,5,255],"19":[1,5,84],"20":[4,1,95],"21":[1,4,36],"22":[3,1,18],"23":[3,3,87],"24":[3,3,362],"25":[4,3,46]},"averageFieldLength":[2.769230769230769,2.4230769230769234,114.46153846153847],"storedFields":{"0":{"title":"ScateringOptics.jl API","titles":[]},"1":{"title":"Index","titles":["ScateringOptics.jl API"]},"2":{"title":"Docstrings","titles":["ScateringOptics.jl API"]},"3":{"title":"Benchmarks","titles":[]},"4":{"title":"Speed","titles":["Benchmarks"]},"5":{"title":"Consistency","titles":["Benchmarks"]},"6":{"title":"Define Your Own Scattering Model","titles":[]},"7":{"title":"References","titles":["Define Your Own Scattering Model"]},"8":{"title":"Simulate Diffractive Scattering","titles":[]},"9":{"title":"Loading your image","titles":["Simulate Diffractive Scattering"]},"10":{"title":"Simulate diffractive scattering","titles":["Simulate Diffractive Scattering"]},"11":{"title":"A quick shortcut","titles":["Simulate Diffractive Scattering"]},"12":{"title":"Save the tutorial data","titles":["Simulate Diffractive Scattering"]},"13":{"title":"Introduction","titles":[]},"14":{"title":"What are interstellar scattering and scintillation? Why are they important?","titles":["Introduction"]},"15":{"title":"Installation","titles":["Introduction"]},"16":{"title":"Brief Introduction to Interstellar Scattering","titles":[]},"17":{"title":"Scattering Regimes in Scope","titles":["Brief Introduction to Interstellar Scattering"]},"18":{"title":"Scattering Model","titles":["Brief Introduction to Interstellar Scattering"]},"19":{"title":"References","titles":["Brief Introduction to Interstellar Scattering"]},"20":{"title":"Use Non-default Models","titles":[]},"21":{"title":"References","titles":["Use Non-default Models"]},"22":{"title":"Simulate Refractive Scattering","titles":[]},"23":{"title":"Loading your image","titles":["Simulate Refractive Scattering"]},"24":{"title":"Simulating Refractive Scattering","titles":["Simulate Refractive Scattering"]},"25":{"title":"Save the tutorial data","titles":["Simulate Refractive Scattering"]}},"dirtCount":0,"index":[["⋱",{"2":{"24":1}}],["zero",{"2":{"18":1}}],["≈iea",{"2":{"18":1}}],["∇ϕ",{"2":{"18":1}}],["−12dϕ",{"2":{"18":1}}],["−ϕ",{"2":{"18":1}}],["∗g",{"2":{"18":2}}],["⋮",{"2":{"12":1,"24":2}}],["+",{"2":{"12":19}}],["μas2rad",{"2":{"10":8,"24":4}}],["668117im",{"2":{"24":1}}],["660122+0",{"2":{"24":1}}],["625574",{"2":{"24":1}}],["676809im",{"2":{"24":1}}],["677391",{"2":{"24":1}}],["645413",{"2":{"24":1}}],["683662+0",{"2":{"24":1}}],["683912+0",{"2":{"24":1}}],["691469",{"2":{"24":1}}],["615531im",{"2":{"24":1}}],["615051im",{"2":{"24":1}}],["614426",{"2":{"24":1}}],["659719+0",{"2":{"24":1}}],["650020392426908",{"2":{"9":1,"10":1,"24":3}}],["6",{"2":{"17":1,"18":1,"19":1}}],["600",{"2":{"9":1,"10":4,"11":1,"23":1,"24":4}}],["637x",{"2":{"7":1,"19":1,"21":1}}],["771524+1",{"2":{"24":1}}],["77461im",{"2":{"24":1}}],["784044+0",{"2":{"24":1}}],["790146im",{"2":{"24":1}}],["793291im",{"2":{"24":1}}],["713483+0",{"2":{"24":1}}],["717905",{"2":{"24":1}}],["719656im",{"2":{"24":1}}],["723873im",{"2":{"24":1}}],["768268",{"2":{"24":1}}],["7",{"2":{"17":1,"19":1}}],["7063921e22",{"2":{"9":1,"10":1,"24":3}}],["701673999999999e21",{"2":{"9":1,"10":1,"24":3}}],["703",{"2":{"6":1,"9":1,"10":1,"24":3}}],["74",{"2":{"7":2,"19":2}}],["862441im",{"2":{"24":1}}],["864448im",{"2":{"24":1}}],["865",{"2":{"7":1,"19":1,"21":1}}],["888559",{"2":{"24":1}}],["8567426819253905",{"2":{"9":1,"10":1,"24":3}}],["8933699749663195",{"2":{"9":1,"10":1,"24":3}}],["81",{"2":{"9":1,"10":1,"24":3}}],["8",{"2":{"9":2,"10":2,"17":1,"19":1,"24":6}}],["833",{"2":{"7":2,"19":2}}],["826",{"2":{"7":2,"19":2,"21":2}}],["82",{"2":{"6":1}}],["θrad",{"2":{"6":2}}],["θmin",{"2":{"2":10,"6":8}}],["θmaj",{"2":{"2":10,"6":8}}],["971754im",{"2":{"24":1}}],["995",{"2":{"19":2}}],["9996281775360422",{"2":{"12":1}}],["9997061810965293",{"2":{"12":1}}],["9997750224296191",{"2":{"12":1}}],["9998346960428404",{"2":{"12":1}}],["9998851971721843",{"2":{"12":1}}],["9999265217837584",{"2":{"12":1}}],["9999586665751884",{"2":{"12":1}}],["9999816289767681",{"2":{"12":1}}],["9999954071523528",{"2":{"12":1}}],["964627",{"2":{"24":1}}],["963",{"2":{"19":2}}],["9630156472261735",{"2":{"9":1,"10":1,"24":3}}],["969627943900058",{"2":{"9":1,"10":1,"24":3}}],["9",{"2":{"6":1,"9":1,"10":1,"24":3}}],["quot",{"2":{"18":2}}],["quenched",{"2":{"17":3}}],["quick",{"0":{"11":1},"2":{"6":1,"11":1,"24":1}}],["q",{"2":{"2":1}}],["qbar",{"2":{"2":3,"6":5}}],["=vsrc",{"2":{"18":1}}],["=∫∫isky",{"2":{"18":1}}],["=isrc",{"2":{"18":1}}],["=pϕ",{"2":{"6":1}}],["=",{"2":{"2":3,"6":22,"9":2,"10":12,"11":1,"12":2,"18":1,"20":2,"23":2,"24":10}}],["=0",{"2":{"2":1}}],["==",{"2":{"2":1,"20":1}}],["horizon",{"2":{"13":1,"14":1}}],["hole",{"2":{"13":1,"14":2}}],["how",{"2":{"8":1}}],["h5",{"2":{"12":1}}],["h5open",{"2":{"12":1}}],["hdf5",{"2":{"12":1}}],["handled",{"2":{"17":1}}],["handy",{"2":{"11":1}}],["has",{"2":{"14":1,"17":2,"24":1}}],["have",{"2":{"2":2,"6":1,"11":1,"18":1,"24":2}}],["highly",{"2":{"11":1}}],["high",{"2":{"6":1,"13":1,"14":2}}],["here",{"2":{"3":1,"6":2,"9":2,"12":3,"23":1,"24":1,"25":2}}],["hz",{"2":{"2":1}}],["νref=νref",{"2":{"10":1,"24":1}}],["νref=c",{"2":{"2":1}}],["νref",{"2":{"2":5,"10":2,"23":2}}],["νmodel",{"2":{"2":1}}],["λ2",{"2":{"18":1}}],["λ^2",{"2":{"2":1}}],["λ",{"2":{"2":14,"18":2}}],["λ0",{"2":{"2":8,"6":7}}],["13",{"2":{"24":1}}],["136273im",{"2":{"24":1}}],["17356im",{"2":{"24":1}}],["170",{"2":{"7":2,"19":2,"21":2}}],["18389+0",{"2":{"24":1}}],["185724+0",{"2":{"24":1}}],["185399im",{"2":{"24":1}}],["1805",{"2":{"2":4,"7":2,"19":2,"21":2}}],["142354",{"2":{"24":1}}],["145882im",{"2":{"24":1}}],["14927im",{"2":{"24":1}}],["14404",{"2":{"24":1}}],["14137166941154058",{"2":{"9":1,"10":1,"24":3}}],["12437im",{"2":{"24":1}}],["129×256",{"2":{"24":1}}],["123",{"2":{"24":1}}],["15738im",{"2":{"24":1}}],["15087im",{"2":{"24":1}}],["158674im",{"2":{"24":1}}],["15835",{"2":{"24":1}}],["151",{"2":{"19":1}}],["1538",{"2":{"7":2,"19":2,"21":1}}],["194956im",{"2":{"24":1}}],["1989",{"2":{"19":2}}],["1980s",{"2":{"17":1}}],["1992",{"2":{"19":2}}],["1990",{"2":{"19":1}}],["11265234631500975",{"2":{"12":1}}],["11301652366950847",{"2":{"12":1}}],["11338173115469348",{"2":{"12":1}}],["11374797104590981",{"2":{"12":1}}],["1146",{"2":{"19":1}}],["11411524562062209",{"2":{"12":1}}],["11448355715840004",{"2":{"12":1}}],["11485290794090472",{"2":{"12":1}}],["11522330025187441",{"2":{"12":1}}],["11559473637711046",{"2":{"12":1}}],["1e9",{"2":{"10":2,"23":1}}],["16",{"2":{"9":1,"10":1,"24":3}}],["1093",{"2":{"19":2}}],["1098",{"2":{"19":1}}],["10e9",{"2":{"10":1}}],["10641979388314901",{"2":{"9":1,"10":1,"24":3}}],["104",{"2":{"7":1,"19":1,"21":1}}],["10",{"2":{"7":4,"9":1,"10":2,"19":8,"21":3,"24":3}}],["10−7",{"2":{"5":1}}],["10−6",{"2":{"5":1}}],["1000",{"2":{"10":1,"12":1}}],["100",{"2":{"4":2}}],["1",{"2":{"2":3,"6":3,"7":2,"9":6,"10":8,"12":1,"16":1,"18":3,"19":2,"20":1,"21":1,"24":33}}],["03477im",{"2":{"24":1}}],["0350022",{"2":{"24":1}}],["0302826+0",{"2":{"24":1}}],["0777+0",{"2":{"24":1}}],["0528775",{"2":{"24":1}}],["0947333+1",{"2":{"24":1}}],["094109+0",{"2":{"24":1}}],["0913364",{"2":{"24":1}}],["090190",{"2":{"19":1}}],["0671579",{"2":{"24":1}}],["0615803im",{"2":{"24":1}}],["0641im",{"2":{"24":1}}],["0666618",{"2":{"24":1}}],["060101+0",{"2":{"24":1}}],["0873872im",{"2":{"24":1}}],["0+0",{"2":{"24":1}}],["00476794im",{"2":{"24":1}}],["000997682im",{"2":{"24":1}}],["0004",{"2":{"7":1,"19":1,"21":1}}],["0029722+0",{"2":{"24":1}}],["00740253im",{"2":{"24":1}}],["0090",{"2":{"19":1}}],["003021",{"2":{"19":1}}],["0im",{"2":{"12":19,"24":2}}],["04238102210397e19",{"2":{"9":1,"10":1,"24":3}}],["0e7",{"2":{"9":1,"10":1,"24":3}}],["01242",{"2":{"7":2,"19":2,"21":2}}],["01242v1",{"2":{"2":4}}],["0",{"2":{"2":4,"6":1,"9":8,"10":18,"12":38,"24":102}}],["yet",{"2":{"16":1}}],["ylabel=",{"2":{"10":1}}],["you",{"2":{"6":7,"9":5,"10":6,"12":4,"18":1,"20":2,"23":2,"24":8,"25":1}}],["yourscatteringmodel",{"2":{"6":7}}],["your",{"0":{"6":1,"9":1,"23":1},"1":{"7":1},"2":{"2":1,"6":9,"9":1,"20":1,"24":1}}],["y",{"2":{"2":9}}],["xlabel=",{"2":{"10":1}}],["xxxx",{"2":{"6":1}}],["x",{"2":{"2":9}}],["x3c",{"2":{"2":15,"6":3}}],["443054im",{"2":{"24":1}}],["440891",{"2":{"24":1}}],["46063im",{"2":{"24":1}}],["46535im",{"2":{"24":1}}],["451472+0",{"2":{"24":1}}],["49935im",{"2":{"24":1}}],["487128",{"2":{"24":1}}],["48550",{"2":{"7":1,"19":1,"21":1}}],["418463im",{"2":{"24":1}}],["42237+0",{"2":{"24":1}}],["404",{"2":{"9":1,"12":2,"23":1,"25":1}}],["4",{"2":{"6":2,"7":1,"9":2,"10":2,"16":1,"18":1,"19":1,"24":10}}],["470806+0",{"2":{"24":1}}],["472817",{"2":{"24":1}}],["47423",{"2":{"24":1}}],["476492+0",{"2":{"24":1}}],["476370590888147",{"2":{"9":1,"10":1,"24":3}}],["471559+1",{"2":{"24":1}}],["47",{"2":{"2":1}}],["436795im",{"2":{"24":1}}],["43371800974761",{"2":{"9":1,"10":1,"24":3}}],["4357",{"2":{"7":2,"19":2,"21":1}}],["43",{"2":{"2":1}}],["late",{"2":{"17":1}}],["larger",{"2":{"17":2,"24":1}}],["language",{"2":{"13":1}}],["law",{"2":{"2":7}}],["less",{"2":{"24":1}}],["let",{"2":{"24":1}}],["leads",{"2":{"18":1}}],["leaving",{"2":{"17":1}}],["length",{"2":{"10":1}}],["level",{"2":{"6":1,"11":1}}],["leveledging",{"2":{"6":1}}],["london",{"2":{"19":1}}],["longer",{"2":{"17":1}}],["long",{"2":{"6":1,"13":1,"14":1}}],["location",{"2":{"17":1}}],["low",{"2":{"11":1}}],["lowest",{"2":{"2":1}}],["load",{"2":{"9":2,"23":2}}],["loading",{"0":{"9":1,"23":1}}],["loads",{"2":{"4":1}}],["look",{"2":{"6":1}}],["limit",{"2":{"17":2}}],["limits",{"2":{"5":1}}],["like",{"2":{"14":1}}],["linrange",{"2":{"10":1}}],["lines",{"2":{"5":1,"6":1}}],["literature",{"2":{"6":2}}],["light",{"2":{"2":1,"14":2}}],["library",{"2":{"2":1,"6":1}}],["lt",{"2":{"2":5}}],["ϕpa",{"2":{"6":4}}],["ϕq",{"2":{"2":1}}],["ϕ0",{"2":{"2":4,"6":9}}],["ϕ",{"2":{"2":10,"6":5,"18":6}}],["3282im",{"2":{"24":1}}],["36531im",{"2":{"24":1}}],["317471im",{"2":{"24":1}}],["313947",{"2":{"24":1}}],["315275im",{"2":{"24":1}}],["38856im",{"2":{"24":1}}],["3847",{"2":{"7":3,"19":3,"21":2}}],["380",{"2":{"6":1}}],["38",{"2":{"6":1,"9":2,"10":2,"24":6}}],["34574",{"2":{"24":1}}],["34245im",{"2":{"24":1}}],["341",{"2":{"19":1}}],["34",{"2":{"2":1}}],["33842+0",{"2":{"24":1}}],["33336im",{"2":{"24":1}}],["33",{"2":{"2":1}}],["35287im",{"2":{"24":1}}],["35",{"2":{"2":1}}],["37",{"2":{"2":1}}],["39",{"2":{"2":3,"3":1,"4":1,"10":2,"13":2,"14":1,"24":3}}],["3",{"2":{"2":7,"5":1,"7":1,"9":2,"10":2,"18":1,"19":3,"20":1,"21":1,"24":6}}],["59245im",{"2":{"24":1}}],["513594+0",{"2":{"24":1}}],["5127694683107693",{"2":{"9":1,"10":1,"24":3}}],["583945im",{"2":{"24":1}}],["5879203321591805",{"2":{"9":1,"10":1,"24":3}}],["549581+0",{"2":{"24":1}}],["5478im",{"2":{"24":1}}],["54038",{"2":{"24":1}}],["561",{"2":{"19":1}}],["505174im",{"2":{"24":1}}],["505398",{"2":{"24":1}}],["50275",{"2":{"24":1}}],["502366im",{"2":{"24":1}}],["5025254191248507",{"2":{"9":1,"10":1,"24":3}}],["50",{"2":{"10":2}}],["5099457504520795",{"2":{"9":1,"10":1,"24":3}}],["500",{"2":{"9":1,"10":4,"11":1,"23":1,"24":4}}],["53031",{"2":{"24":1}}],["53",{"2":{"6":1}}],["5",{"2":{"2":5,"9":1,"10":3,"17":1,"18":1,"19":1,"24":5}}],["α=1",{"2":{"6":1}}],["α",{"2":{"2":13,"6":15}}],["nuclei",{"2":{"13":1,"14":1,"17":1}}],["numerically",{"2":{"6":1}}],["number=c",{"2":{"2":1}}],["numbers",{"2":{"2":3}}],["number",{"2":{"2":74,"6":1}}],["named",{"2":{"18":1}}],["narayan",{"2":{"7":1,"16":1,"17":1,"18":1,"19":4,"20":1,"21":1}}],["nas",{"2":{"2":3}}],["nevertheless",{"2":{"20":1}}],["new",{"2":{"6":1,"9":1,"12":2,"23":1,"25":1}}],["need",{"2":{"2":1,"6":3,"20":1,"24":2}}],["needs",{"2":{"2":1}}],["non",{"0":{"20":1},"1":{"21":1},"2":{"4":1}}],["nonlinearsolve",{"2":{"2":1}}],["noisesignal",{"2":{"24":2}}],["noise",{"2":{"2":5,"24":7}}],["noted",{"2":{"20":1}}],["notices",{"2":{"19":2}}],["notable",{"2":{"14":1}}],["nothing",{"2":{"9":1}}],["not",{"2":{"2":3,"17":1,"24":1}}],["ny",{"2":{"2":2,"24":1}}],["nx",{"2":{"2":2,"24":1}}],["n",{"2":{"2":2}}],["other",{"2":{"20":2}}],["otherwise",{"2":{"2":1,"9":1,"12":2,"23":1,"25":1}}],["occur",{"2":{"17":1}}],["occurs",{"2":{"17":4}}],["open",{"2":{"9":1,"12":2,"23":1,"25":1}}],["optimize",{"2":{"3":1}}],["optional",{"2":{"2":4,"6":1}}],["own",{"0":{"6":1},"1":{"7":1},"2":{"6":2,"20":1}}],["overhead",{"2":{"11":1,"24":1}}],["overlap",{"2":{"5":1}}],["over",{"2":{"4":2,"5":1,"17":2}}],["overall",{"2":{"3":1}}],["our",{"2":{"3":1,"5":1}}],["output",{"2":{"3":1,"12":1,"25":1}}],["or",{"2":{"10":1,"15":1,"17":1,"18":3,"20":1}}],["order",{"2":{"3":1,"5":1,"18":1}}],["originally",{"2":{"2":1,"9":1,"18":1,"23":1}}],["orientation",{"2":{"2":1}}],["obtained",{"2":{"18":1}}],["observations",{"2":{"17":2}}],["observed",{"2":{"13":1,"14":1,"17":3,"20":1}}],["observer",{"2":{"2":4}}],["observing",{"2":{"2":6,"4":1,"5":2,"17":1,"18":5,"24":3}}],["objects",{"2":{"14":1,"17":3}}],["object",{"2":{"2":2}}],["once",{"2":{"6":1}}],["one",{"2":{"5":1}}],["on",{"2":{"2":13,"5":1,"6":5,"16":1,"17":4,"18":7}}],["only",{"2":{"2":2,"6":2,"17":2,"24":1}}],["offers",{"2":{"6":1}}],["often",{"2":{"6":2,"17":1}}],["of",{"2":{"2":58,"3":6,"4":3,"5":2,"6":10,"8":1,"9":2,"10":7,"11":1,"12":1,"13":6,"14":11,"17":8,"18":18,"19":5,"22":1,"23":4,"24":4,"25":2}}],["b→1+m",{"2":{"18":1}}],["b→",{"2":{"18":7}}],["bursts",{"2":{"17":1}}],["but",{"2":{"2":3,"17":1}}],["black",{"2":{"13":1,"14":2}}],["blurring",{"2":{"2":1,"17":1,"18":1}}],["bayesian",{"2":{"13":1}}],["baseline",{"2":{"10":1,"13":1,"14":1,"18":1}}],["base",{"2":{"9":1,"23":1}}],["based",{"2":{"2":12,"6":1,"16":1,"18":2}}],["brightness",{"2":{"13":1,"14":2}}],["brief",{"0":{"16":1},"1":{"17":1,"18":1,"19":1},"2":{"6":1,"10":1,"14":1,"17":1,"20":1}}],["broadened",{"2":{"17":1,"18":1}}],["broadening",{"2":{"2":8,"17":2,"18":2}}],["broaderning",{"2":{"2":3,"10":1}}],["both",{"2":{"5":1,"14":2,"17":2}}],["bool==true",{"2":{"2":1}}],["bool",{"2":{"2":1}}],["boxcar",{"2":{"2":1,"4":1,"18":1,"20":2}}],["box",{"2":{"2":2}}],["b",{"2":{"2":2,"6":5,"19":1}}],["bmin",{"2":{"2":4,"6":6}}],["bmaj",{"2":{"2":4,"6":6}}],["bypassing",{"2":{"11":1,"24":1}}],["by",{"2":{"2":19,"5":2,"6":1,"10":3,"11":1,"14":3,"15":1,"16":1,"17":3,"18":9,"20":2,"24":1}}],["because",{"2":{"24":1}}],["become",{"2":{"14":1,"17":1}}],["below",{"2":{"4":1,"5":1,"17":1}}],["between",{"2":{"3":1,"5":1,"18":2}}],["benchmarks",{"0":{"3":1},"1":{"4":1,"5":1},"2":{"3":1}}],["be",{"2":{"2":6,"4":1,"6":1,"9":1,"10":1,"12":1,"18":4,"23":1,"24":5,"25":1}}],["best",{"2":{"2":4,"9":1}}],["u=u",{"2":{"10":2}}],["u",{"2":{"2":4,"10":2,"12":2}}],["unless",{"2":{"20":1}}],["uncertainty",{"2":{"5":1}}],["under",{"2":{"5":1}}],["unscattered",{"2":{"2":1,"17":1}}],["unit",{"2":{"2":1}}],["using",{"2":{"2":7,"6":2,"9":2,"10":2,"13":1,"14":2,"18":1,"20":1,"23":2,"24":2}}],["uses",{"2":{"2":1,"18":1}}],["use",{"0":{"20":1},"1":{"21":1},"2":{"2":3,"4":1,"6":2,"9":2,"10":1,"18":1,"20":2,"23":1,"24":1}}],["useful",{"2":{"2":1}}],["used",{"2":{"2":1}}],["users",{"2":{"6":1,"20":2}}],["user",{"2":{"2":1}}],["usually",{"2":{"2":2}}],["upon",{"2":{"4":1}}],["up",{"2":{"2":1,"4":2}}],["257644im",{"2":{"24":1}}],["256",{"2":{"10":6,"24":4}}],["245928im",{"2":{"24":1}}],["24094564298608265",{"2":{"9":1,"10":1,"24":3}}],["26309+0",{"2":{"24":1}}],["229056+0",{"2":{"24":1}}],["23739im",{"2":{"24":1}}],["238",{"2":{"19":4}}],["21324",{"2":{"24":1}}],["21983+0",{"2":{"24":1}}],["219822im",{"2":{"24":1}}],["211806im",{"2":{"24":1}}],["218690603755095e10",{"2":{"24":4}}],["289585im",{"2":{"24":1}}],["283655+0",{"2":{"24":1}}],["288871+0",{"2":{"24":1}}],["28",{"2":{"19":2}}],["2πr→⋅b→dλ",{"2":{"18":1}}],["29345e11",{"2":{"10":1}}],["27",{"2":{"9":1,"10":1,"24":3}}],["206076im",{"2":{"24":1}}],["2067222894984828",{"2":{"9":1,"10":1,"24":3}}],["2020",{"2":{"23":1}}],["2024",{"2":{"6":1}}],["200",{"2":{"10":4,"24":2}}],["2014",{"2":{"9":1}}],["2016",{"2":{"7":2,"16":1,"19":2,"20":1,"21":1}}],["2018",{"2":{"2":21,"6":1,"7":2,"9":1,"19":2,"21":2}}],["2d",{"2":{"2":2}}],["2",{"2":{"2":4,"6":1,"7":2,"10":1,"11":2,"16":1,"18":2,"19":2,"20":1,"21":2,"24":2}}],["w",{"2":{"12":1}}],["written",{"2":{"11":1}}],["wrapped",{"2":{"1":1,"2":2}}],["work",{"2":{"13":1,"24":1}}],["works",{"2":{"9":1,"16":1,"23":1,"24":1}}],["wonder",{"2":{"2":3}}],["wondering",{"2":{"2":1}}],["was",{"2":{"18":1}}],["waves",{"2":{"13":1,"14":1,"18":1}}],["wavelengths",{"2":{"4":1,"5":1,"13":1,"14":1,"17":1}}],["wavelength",{"2":{"2":19,"5":1,"18":4,"24":1}}],["want",{"2":{"9":1,"24":1}}],["wander",{"2":{"6":6,"20":1,"24":1}}],["ways",{"2":{"15":1}}],["way",{"2":{"4":1,"14":1}}],["when",{"2":{"17":3}}],["where",{"2":{"2":1,"17":1,"18":3}}],["why",{"0":{"14":1}}],["what",{"0":{"14":1}}],["while",{"2":{"6":1,"18":1}}],["which",{"2":{"2":1,"3":1,"5":1,"6":1,"10":1,"11":1,"13":1,"18":6,"24":1}}],["window",{"2":{"9":1,"12":2,"23":1,"25":1}}],["with",{"2":{"2":2,"4":2,"5":1,"6":4,"9":1,"10":1,"13":2,"14":1,"17":2,"18":3,"20":1,"24":5}}],["will",{"2":{"2":2,"9":2,"10":1,"12":2,"18":2,"23":1,"24":5,"25":1}}],["well",{"2":{"2":1,"5":2,"14":2,"17":2,"20":1}}],["we",{"2":{"2":2,"3":1,"5":1,"9":1,"12":2,"20":1,"23":1,"24":2,"25":1}}],["mnras",{"2":{"19":2}}],["m=d",{"2":{"18":1}}],["multi",{"2":{"18":1}}],["much",{"2":{"17":1}}],["must",{"2":{"2":2}}],["monthly",{"2":{"19":2}}],["months",{"2":{"17":2}}],["modulations",{"2":{"14":1}}],["modeling",{"2":{"4":1,"13":3}}],["models",{"0":{"20":1},"1":{"21":1},"2":{"2":3,"4":2,"5":1,"6":5,"10":1,"13":2,"14":1,"18":2,"20":3,"24":3}}],["model",{"0":{"6":1,"18":1},"1":{"7":1},"2":{"2":28,"6":12,"8":2,"9":5,"10":4,"11":1,"12":1,"16":1,"17":1,"18":5,"20":4,"23":2,"24":16,"25":1}}],["most",{"2":{"6":1,"17":2}}],["moving",{"2":{"2":3}}],["more",{"2":{"2":1,"4":1,"6":1,"11":1,"14":1}}],["means",{"2":{"18":1}}],["meaning",{"2":{"18":1}}],["measurements",{"2":{"17":3,"18":2}}],["measurement",{"2":{"17":3,"18":1}}],["measured",{"2":{"2":2,"6":2}}],["medium",{"2":{"13":1,"24":1}}],["metadata",{"2":{"10":1,"23":1}}],["method",{"2":{"2":1,"10":2,"11":2,"24":5}}],["methods",{"2":{"2":4,"10":1}}],["m",{"2":{"2":4,"6":7,"7":3,"19":3,"21":2}}],["milky",{"2":{"14":1}}],["milliarcseconds",{"2":{"6":2,"17":1}}],["microarcseconds",{"2":{"17":1}}],["micro",{"2":{"14":1,"17":1}}],["minutes",{"2":{"17":1}}],["min",{"2":{"2":1}}],["minor",{"2":{"2":4,"5":1}}],["mises",{"2":{"2":3,"4":1,"18":1,"20":2}}],["matrix",{"2":{"24":1}}],["mathematically",{"2":{"18":1}}],["many",{"2":{"17":1,"18":1}}],["manifests",{"2":{"17":1}}],["mandatory",{"2":{"2":6,"6":2}}],["mad",{"2":{"9":1,"23":1}}],["make",{"2":{"6":1,"10":1,"24":2}}],["map",{"2":{"2":1}}],["maj",{"2":{"2":1}}],["majority",{"2":{"17":1}}],["major",{"2":{"2":8,"5":1}}],["magnetohydrodynamic",{"2":{"9":1,"23":1}}],["magnetic",{"2":{"2":1,"9":1,"23":1,"24":1}}],["magnification",{"2":{"2":1,"6":1,"18":1}}],["may",{"2":{"2":1,"4":1,"6":1,"11":2,"12":1,"24":1,"25":1}}],["mas=0",{"2":{"6":1}}],["mas=1",{"2":{"6":1}}],["masm",{"2":{"2":4}}],["mas",{"2":{"2":13,"6":6}}],["ζ0",{"2":{"2":2,"6":4}}],["ζ",{"2":{"2":9}}],["chromatic",{"2":{"18":1}}],["characteristics",{"2":{"18":1}}],["changing",{"2":{"18":1}}],["changes",{"2":{"18":1}}],["change",{"2":{"6":1,"9":1}}],["center",{"2":{"13":1,"14":1,"20":1}}],["centered",{"2":{"2":1}}],["create",{"2":{"10":1,"24":2}}],["crucial",{"2":{"3":1}}],["custom",{"2":{"6":3,"20":1}}],["cuts",{"2":{"3":1}}],["currently",{"2":{"2":1,"6":1}}],["cgs",{"2":{"2":5}}],["cw",{"2":{"2":1,"6":1}}],["ccw",{"2":{"2":1,"6":1}}],["c",{"2":{"2":4,"6":6}}],["cm=1",{"2":{"6":1}}],["cm=800e5",{"2":{"6":1}}],["cm",{"2":{"2":30,"6":17,"24":1}}],["case",{"2":{"24":1}}],["cases",{"2":{"18":1}}],["captured",{"2":{"18":1}}],["capabilities",{"2":{"3":1,"13":1}}],["cause",{"2":{"10":1,"14":1}}],["cairomakie",{"2":{"9":1,"23":1}}],["called",{"2":{"4":1,"18":1,"24":1}}],["calculated",{"2":{"12":1}}],["calc",{"2":{"1":2,"2":13,"6":18}}],["cannot",{"2":{"24":1}}],["can",{"2":{"3":2,"6":2,"8":1,"9":4,"10":7,"12":2,"18":3,"20":3,"23":2,"24":4}}],["car",{"2":{"2":2}}],["coefficient",{"2":{"18":1}}],["corresponds",{"2":{"18":1}}],["corresponding",{"2":{"2":3,"17":1,"18":1}}],["coordinate",{"2":{"18":1}}],["coordinates",{"2":{"2":4}}],["coherence",{"2":{"17":4}}],["collect",{"2":{"12":1}}],["colormap=",{"2":{"9":1,"10":4,"11":1,"23":1,"24":4}}],["codes",{"2":{"6":1}}],["covers",{"2":{"6":1}}],["commonfunctions",{"2":{"6":1}}],["component",{"2":{"18":1}}],["composability",{"2":{"13":1}}],["complexf64",{"2":{"12":1,"24":1}}],["complete",{"2":{"5":1,"17":1}}],["completely",{"2":{"5":1,"24":1}}],["compact",{"2":{"14":2,"17":2,"18":2,"20":1,"24":1}}],["compatible",{"2":{"6":1}}],["compared",{"2":{"4":1}}],["computation",{"2":{"4":1}}],["computations",{"2":{"4":1}}],["computes",{"2":{"18":1}}],["computed",{"2":{"5":1,"12":1}}],["compute",{"2":{"2":3,"4":1,"6":1,"10":2}}],["computing",{"2":{"2":2,"10":1}}],["comrade",{"2":{"2":5,"8":2,"9":3,"10":2,"13":1,"23":3}}],["comradebase",{"2":{"2":1,"10":2,"11":1}}],["confirm",{"2":{"20":1}}],["convolving",{"2":{"18":2}}],["convolved",{"2":{"10":1}}],["convolve",{"2":{"10":3}}],["convolution",{"2":{"10":1,"17":1,"18":1}}],["convert",{"2":{"6":1}}],["converting",{"2":{"2":2}}],["converted",{"2":{"2":1}}],["connecting",{"2":{"6":1}}],["consequently",{"2":{"17":1}}],["constants",{"2":{"6":2}}],["constructor",{"2":{"2":4,"6":2}}],["consistency",{"0":{"5":1},"2":{"5":1}}],["consistent",{"2":{"3":1,"4":1,"5":1,"18":1,"20":1,"24":1}}],["consist",{"2":{"3":1}}],["contribution",{"2":{"2":1}}],["concentration",{"2":{"2":5,"6":2}}],["feature",{"2":{"22":1}}],["few",{"2":{"6":1}}],["f",{"2":{"2":2,"10":3,"18":1}}],["frbs",{"2":{"17":2}}],["fr=νref",{"2":{"10":1}}],["fractional",{"2":{"5":1}}],["framework",{"2":{"3":2,"6":1,"16":1}}],["frequency",{"2":{"2":2,"10":3,"17":1,"18":3,"23":3,"24":4}}],["fresnel",{"2":{"2":1,"18":1}}],["from",{"2":{"2":11,"6":3,"8":1,"9":3,"10":6,"12":2,"13":2,"17":3,"18":2,"23":3,"24":6}}],["flexibility",{"2":{"24":1}}],["float64",{"2":{"2":2,"9":1,"10":4,"24":9}}],["fluctuations",{"2":{"2":7,"14":1,"17":3}}],["faster",{"2":{"3":1,"4":1}}],["fast",{"2":{"2":1,"3":1,"16":1,"17":1}}],["factor",{"2":{"2":1}}],["further",{"2":{"16":1,"18":1}}],["furthermore",{"2":{"2":1}}],["fully",{"2":{"18":1,"24":1}}],["full",{"2":{"2":1}}],["fundamental",{"2":{"6":1}}],["fundamentally",{"2":{"2":1}}],["functionalities",{"2":{"13":1}}],["functions",{"2":{"6":2}}],["function",{"2":{"2":6,"6":4,"18":3}}],["fwhm",{"2":{"2":8}}],["fourmula",{"2":{"2":1}}],["fourier",{"2":{"2":4,"4":1,"5":1,"18":5,"24":2}}],["follow",{"2":{"2":1}}],["followings",{"2":{"2":1}}],["following",{"2":{"2":3,"6":1,"18":2}}],["forget",{"2":{"24":2}}],["formula",{"2":{"2":5}}],["for",{"2":{"2":37,"4":3,"5":1,"6":6,"9":3,"10":5,"13":3,"14":1,"17":5,"18":2,"20":1,"23":1,"24":6}}],["figure",{"2":{"10":1}}],["files",{"2":{"12":2,"25":2}}],["file",{"2":{"9":1,"12":5,"23":1,"25":1}}],["final",{"2":{"3":1}}],["find",{"2":{"2":1,"6":1,"12":1}}],["finding",{"2":{"2":1}}],["finder",{"2":{"2":11}}],["findkzeta",{"2":{"1":1,"2":2}}],["first",{"2":{"2":2,"24":2}}],["field",{"2":{"2":4,"6":7,"18":1,"20":1,"24":1}}],["fields",{"2":{"2":7,"6":1}}],["fits",{"2":{"9":3,"12":14,"23":3,"25":8}}],["fit",{"2":{"2":4,"9":1}}],["time",{"2":{"17":4}}],["timescale",{"2":{"17":6}}],["times",{"2":{"4":2,"18":1}}],["typically",{"2":{"17":5,"18":1}}],["typeof",{"2":{"6":1}}],["types",{"2":{"6":1,"8":1,"13":1}}],["typedef",{"2":{"2":1}}],["type",{"2":{"2":5,"6":5}}],["twinkling",{"2":{"14":1}}],["twinkle",{"2":{"14":1}}],["two",{"2":{"3":1,"5":1,"17":1,"18":2,"20":1}}],["taking",{"2":{"13":1}}],["takes",{"2":{"3":1}}],["term",{"2":{"18":1}}],["temperature",{"2":{"13":1,"14":1}}],["temporal",{"2":{"13":1,"14":1}}],["telescope",{"2":{"13":1,"14":1}}],["tens",{"2":{"3":1}}],["tuple",{"2":{"24":1}}],["turbulence",{"2":{"13":1}}],["tutorial",{"0":{"12":1,"25":1},"2":{"11":1,"12":2,"22":1,"24":1,"25":1}}],["tutorials",{"2":{"6":1}}],["tp",{"2":{"6":2}}],["try",{"2":{"20":1}}],["transactions",{"2":{"19":1}}],["transformed",{"2":{"24":1}}],["transform",{"2":{"18":1}}],["transverse",{"2":{"18":1}}],["tranditional",{"2":{"6":1}}],["traditional",{"2":{"2":1}}],["true",{"2":{"2":2,"20":1}}],["t",{"2":{"2":17,"6":24,"24":4}}],["toolkit",{"2":{"13":1}}],["to",{"0":{"16":1},"1":{"17":1,"18":1,"19":1},"2":{"2":27,"3":2,"4":2,"6":12,"8":1,"9":1,"10":2,"11":2,"12":1,"13":2,"14":4,"17":5,"18":8,"20":2,"22":1,"24":8,"25":1}}],["through",{"2":{"15":1,"17":1,"18":1}}],["three",{"2":{"4":1,"6":3,"17":1,"18":1}}],["those",{"2":{"5":1}}],["thousands",{"2":{"3":2}}],["thanks",{"2":{"24":1}}],["than",{"2":{"3":1,"4":1,"17":5}}],["that",{"2":{"3":1,"5":1,"6":1,"18":1}}],["thin",{"2":{"2":4,"16":1,"18":1}}],["this",{"2":{"2":8,"4":1,"5":1,"6":8,"8":1,"9":2,"11":1,"13":1,"14":1,"17":5,"18":1,"20":1,"22":1,"23":2,"24":3}}],["their",{"2":{"14":2,"17":1}}],["they",{"0":{"14":1},"2":{"18":1}}],["there",{"2":{"11":1,"24":1}}],["then",{"2":{"3":1,"18":1,"20":1,"24":3}}],["these",{"2":{"2":2,"4":2,"14":1,"17":1,"18":1,"24":1}}],["the",{"0":{"12":1,"25":1},"2":{"2":171,"3":7,"4":8,"5":7,"6":24,"7":3,"8":3,"9":8,"10":13,"11":4,"12":7,"13":12,"14":14,"15":3,"17":30,"18":63,"19":6,"20":5,"21":2,"23":6,"24":26,"25":4}}],["square",{"2":{"18":1}}],["snapshot",{"2":{"17":1}}],["sagittarius",{"2":{"13":1,"14":1}}],["saved",{"2":{"12":1,"25":2}}],["save",{"0":{"12":1,"25":1},"2":{"12":7,"25":3}}],["samples",{"2":{"18":1}}],["sample",{"2":{"4":2,"24":1}}],["such",{"2":{"17":2}}],["substrucures",{"2":{"24":1}}],["substructures",{"2":{"17":1,"18":3,"24":1}}],["substractures",{"2":{"18":1}}],["subsequent",{"2":{"16":1}}],["subtype",{"2":{"2":1,"10":1}}],["supermassive",{"2":{"13":1,"14":1}}],["supports",{"2":{"11":1}}],["slow",{"2":{"11":1}}],["show",{"2":{"24":1}}],["shorter",{"2":{"17":2}}],["shortcut",{"0":{"11":1},"2":{"11":1,"24":1}}],["should",{"2":{"2":2,"6":1}}],["skip",{"2":{"24":1}}],["skm",{"2":{"10":8,"11":1,"12":3}}],["skymodels",{"2":{"11":1}}],["skymodel",{"2":{"2":2,"9":1,"10":2,"23":1}}],["sky",{"2":{"2":4,"8":1,"10":1,"13":1,"14":1,"17":2,"18":1,"24":2}}],["src",{"2":{"6":3}}],["sgr",{"2":{"6":1,"9":1,"14":1,"18":1,"20":1}}],["since",{"2":{"18":1}}],["single",{"2":{"16":1,"18":1}}],["simulating",{"0":{"24":1},"2":{"13":1,"22":1}}],["simulation",{"2":{"3":2}}],["simulated",{"2":{"24":1}}],["simulates",{"2":{"17":1}}],["simulate",{"0":{"8":1,"10":1,"22":1},"1":{"9":1,"10":1,"11":1,"12":1,"23":1,"24":1,"25":1},"2":{"8":1,"9":1,"22":1}}],["simple",{"2":{"24":1}}],["simply",{"2":{"6":1}}],["simplified",{"2":{"6":1}}],["significant",{"2":{"3":1,"4":1}}],["size=",{"2":{"9":1,"10":4,"11":1,"23":1,"24":4}}],["size",{"2":{"2":5,"18":1}}],["sizes",{"2":{"2":2,"17":1}}],["spatial",{"2":{"13":1,"18":2}}],["space",{"2":{"2":3,"4":1,"5":1,"13":1,"14":1,"18":2}}],["speed",{"0":{"4":1},"2":{"2":1,"3":1,"4":3,"13":1}}],["specify",{"2":{"24":1}}],["specific",{"2":{"2":1}}],["specified",{"2":{"2":8,"9":1}}],["spectral",{"2":{"13":1,"14":1}}],["spectrum",{"2":{"2":2,"18":1}}],["step",{"2":{"24":1}}],["studies",{"2":{"14":2}}],["strongly",{"2":{"20":1}}],["strong",{"2":{"13":1,"17":2}}],["stretched",{"2":{"10":1,"24":1}}],["struct",{"2":{"6":1}}],["structure",{"2":{"2":5,"6":1,"18":3}}],["stablerngs",{"2":{"24":1}}],["stablerng",{"2":{"24":2}}],["stationary",{"2":{"18":1}}],["stationaryrandomfields",{"2":{"2":1,"24":2}}],["stations",{"2":{"18":1}}],["statistical",{"2":{"18":1}}],["stars",{"2":{"14":1}}],["standardized",{"2":{"6":2}}],["standard",{"2":{"5":1,"15":2}}],["s=0",{"2":{"2":4}}],["s",{"2":{"2":7,"3":1,"4":1,"10":2,"13":2,"14":1,"24":2}}],["smaller",{"2":{"17":1}}],["small",{"2":{"3":1,"17":1}}],["sm",{"2":{"2":18,"6":4,"9":1,"10":1,"11":1,"24":5}}],["series",{"2":{"19":1}}],["segments",{"2":{"18":1}}],["separated",{"2":{"18":1}}],["second",{"2":{"18":2}}],["seconds",{"2":{"17":1}}],["semi",{"2":{"16":1,"18":1}}],["semianalytic",{"2":{"6":1}}],["self",{"2":{"4":1}}],["see",{"2":{"2":4,"4":1,"6":2,"9":1,"14":1,"18":1,"20":1}}],["sets",{"2":{"2":1}}],["set",{"2":{"2":3,"6":2,"9":1,"18":1}}],["so",{"2":{"24":1}}],["society",{"2":{"19":3}}],["software",{"2":{"13":1}}],["solve",{"2":{"6":1}}],["solves",{"2":{"2":2}}],["solver",{"2":{"2":1}}],["sources",{"2":{"14":2,"17":2,"20":1}}],["source",{"2":{"2":36,"6":1,"9":1,"10":6,"11":1,"17":1,"18":4,"23":1,"24":4}}],["scheme",{"2":{"24":1}}],["scope",{"0":{"17":1}}],["scenarios",{"2":{"14":1}}],["scintillation",{"0":{"14":1},"2":{"13":2,"14":4,"17":7}}],["scaling",{"2":{"2":3}}],["scales",{"2":{"14":1,"17":4}}],["scaled",{"2":{"2":1,"24":1}}],["scale",{"2":{"2":6,"6":1,"17":2,"18":1}}],["scattered",{"2":{"2":2,"10":2,"12":1,"17":2,"18":6,"24":6,"25":1}}],["scatteringscreen",{"2":{"24":1}}],["scatteringkernel",{"2":{"2":1}}],["scatteringmodels",{"2":{"6":2}}],["scatteringmodel",{"2":{"2":1,"9":2,"20":2,"24":1}}],["scattering",{"0":{"6":1,"8":1,"10":1,"14":1,"16":1,"17":1,"18":1,"22":1,"24":1},"1":{"7":1,"9":1,"10":1,"11":1,"12":1,"17":1,"18":1,"19":1,"23":1,"24":1,"25":1},"2":{"2":43,"3":3,"4":3,"5":2,"6":3,"8":2,"9":3,"10":7,"12":1,"13":2,"14":7,"16":1,"17":16,"18":9,"20":6,"22":2,"24":7}}],["scatteringoptics",{"2":{"1":32,"2":35,"4":2,"6":2,"8":1,"9":2,"10":1,"13":1,"15":2,"16":1,"17":1,"18":2,"20":1,"22":1,"24":2}}],["scatter",{"2":{"1":2,"2":2,"8":1,"10":1,"11":1,"24":8}}],["scateringoptics",{"0":{"0":1},"1":{"1":1,"2":1}}],["screen=noise",{"2":{"24":1}}],["screen=nothing",{"2":{"2":2}}],["screen",{"2":{"1":1,"2":28,"6":1,"9":1,"16":1,"18":10,"24":12}}],["goodman",{"2":{"17":1,"19":2}}],["governed",{"2":{"2":1}}],["ga",{"2":{"24":2,"25":3}}],["galactic",{"2":{"13":2,"14":1,"17":1,"20":1}}],["gaussian",{"2":{"2":1,"10":2,"12":1,"18":1,"24":7,"25":1}}],["gλ",{"2":{"10":1}}],["glambda",{"2":{"10":1}}],["g",{"2":{"10":6,"12":3,"18":4,"24":7}}],["ghz",{"2":{"10":1,"23":1}}],["grid",{"2":{"24":2}}],["grmhd",{"2":{"9":1,"23":1}}],["gradients",{"2":{"18":1}}],["gradient",{"2":{"2":1}}],["grad",{"2":{"1":1,"2":2}}],["gives",{"2":{"22":1}}],["give",{"2":{"2":1}}],["given",{"2":{"2":25,"4":1,"6":1,"18":2}}],["gea",{"2":{"10":2,"12":3}}],["general",{"2":{"9":1,"11":1,"18":1,"23":1}}],["generated",{"2":{"10":1,"12":3,"24":3,"25":1}}],["generate",{"2":{"10":1,"24":3}}],["generates",{"2":{"2":1}}],["generative",{"2":{"18":1}}],["generation",{"2":{"2":1,"11":1,"24":1}}],["generating",{"2":{"2":3}}],["get",{"2":{"1":1,"2":1,"9":1,"12":2,"23":1,"25":1}}],["vmsm",{"2":{"20":1}}],["vsrc",{"2":{"18":2}}],["vobs",{"2":{"18":2}}],["von",{"2":{"2":3,"4":1,"18":1,"20":2}}],["vonmises",{"2":{"1":1,"2":2}}],["vonmisesscatteringmodel",{"2":{"1":1,"2":3,"20":1}}],["v=0",{"2":{"10":1}}],["visible",{"2":{"14":1}}],["visibilities",{"2":{"4":1,"5":1,"12":1,"18":3}}],["visibility",{"2":{"1":2,"2":3,"10":3}}],["visibiltiies",{"2":{"2":1}}],["vis",{"2":{"10":2,"12":2}}],["vast",{"2":{"17":1}}],["various",{"2":{"6":1}}],["varying",{"2":{"4":1}}],["values",{"2":{"6":1}}],["vea",{"2":{"18":2}}],["very",{"2":{"13":1,"14":1}}],["version",{"2":{"6":1}}],["vector",{"2":{"12":1,"18":2}}],["velocity",{"2":{"2":1}}],["v",{"2":{"2":4}}],["vy",{"2":{"2":4}}],["vx",{"2":{"2":4}}],["vlbiskymodels",{"2":{"9":1,"10":4,"23":1,"24":3}}],["vlbi",{"2":{"2":2,"14":2}}],["ia",{"2":{"18":3}}],["iea",{"2":{"18":3}}],["identified",{"2":{"17":1}}],["ideally",{"2":{"2":2}}],["i",{"2":{"14":1,"18":2,"24":1}}],["ionized",{"2":{"13":1,"14":1}}],["its",{"2":{"12":1}}],["iterative",{"2":{"11":1,"24":1}}],["iterations",{"2":{"3":1}}],["it",{"2":{"2":1,"3":1,"10":1,"11":1,"13":1,"18":1,"24":1}}],["if",{"2":{"2":4,"9":2,"24":2}}],["important",{"0":{"14":1},"2":{"14":1}}],["import",{"2":{"9":1,"23":1}}],["improvements",{"2":{"4":2}}],["imprdovements",{"2":{"3":1}}],["implemented",{"2":{"6":1,"10":1,"14":1,"17":1,"24":1}}],["implements",{"2":{"2":1,"6":1,"10":1,"13":1,"16":1,"18":1,"20":1}}],["implementations",{"2":{"3":1,"5":2}}],["implementation",{"2":{"2":3,"3":2,"4":1}}],["implement",{"2":{"2":1}}],["im",{"2":{"2":2,"9":2,"10":10,"11":3,"12":12,"23":3,"24":14,"25":6}}],["imap",{"2":{"2":4}}],["imaging",{"2":{"2":2,"3":2,"4":1,"5":1,"6":1,"9":1,"14":1,"23":1}}],["imagepixels",{"2":{"10":3,"24":1}}],["imageviz",{"2":{"9":1,"10":4,"11":1,"23":1,"24":4}}],["images",{"2":{"4":1,"12":2,"13":2,"14":1,"17":1,"18":1,"25":2}}],["image",{"0":{"9":1,"23":1},"2":{"1":2,"2":12,"3":1,"9":4,"10":14,"11":3,"12":2,"17":4,"18":12,"23":6,"24":24,"25":2}}],["isky",{"2":{"18":1}}],["isrc",{"2":{"18":2}}],["ism",{"2":{"2":2}}],["isn",{"2":{"2":2}}],["is",{"2":{"2":13,"3":1,"5":1,"6":2,"8":1,"9":3,"10":2,"11":3,"13":3,"14":1,"15":1,"17":8,"18":14,"20":2,"22":1,"23":2,"24":3}}],["influenced",{"2":{"14":1}}],["information",{"2":{"24":2}}],["info",{"2":{"4":1}}],["include",{"2":{"14":1}}],["included",{"2":{"4":1,"6":1}}],["increasingly",{"2":{"14":1}}],["initialize",{"2":{"9":1,"11":1,"24":4}}],["installable",{"2":{"15":1}}],["installation",{"0":{"15":1}}],["instance",{"2":{"10":3}}],["instantiate",{"2":{"9":1,"24":1}}],["instead",{"2":{"2":1,"9":1,"11":1,"23":1}}],["inside",{"2":{"8":1,"24":1}}],["involves",{"2":{"6":1}}],["indeed",{"2":{"20":1}}],["index",{"0":{"1":1},"2":{"2":5}}],["indicating",{"2":{"5":1}}],["input",{"2":{"2":3,"11":1}}],["inner",{"2":{"2":4}}],["int64",{"2":{"24":2}}],["introduces",{"2":{"17":1,"18":1}}],["introduced",{"2":{"2":1}}],["introduction",{"0":{"13":1,"16":1},"1":{"14":1,"15":1,"17":1,"18":1,"19":1},"2":{"6":1,"10":1,"14":1,"17":1,"20":1}}],["interpolation",{"2":{"24":1}}],["interpreting",{"2":{"13":1}}],["intersteller",{"2":{"24":1}}],["interstellar",{"0":{"14":1,"16":1},"1":{"17":1,"18":1,"19":1},"2":{"2":1,"3":1,"6":1,"10":1,"13":3,"14":4,"16":1,"17":1,"18":1,"20":2}}],["interferometry",{"2":{"13":1,"14":1,"18":1}}],["interferometric",{"2":{"13":2,"14":1}}],["intentionally",{"2":{"11":1}}],["intensity",{"2":{"2":1}}],["intensitymap",{"2":{"2":4,"9":1,"10":3,"23":1,"24":3}}],["into",{"2":{"2":2,"17":1,"18":1,"24":1}}],["in",{"0":{"17":1},"2":{"2":60,"3":4,"4":3,"5":3,"6":13,"8":1,"9":3,"10":4,"11":2,"12":4,"13":4,"14":11,"15":1,"16":1,"17":14,"18":13,"20":3,"23":2,"24":6,"25":2}}],["known",{"2":{"14":1,"17":1,"18":1}}],["kζ",{"2":{"6":8}}],["kwargs",{"2":{"2":1}}],["km",{"2":{"2":8}}],["kpc=5",{"2":{"6":1}}],["kpc=2",{"2":{"6":1}}],["kpc",{"2":{"2":8,"6":6}}],["kenerl",{"2":{"2":1}}],["keyword",{"2":{"2":1}}],["keywords",{"2":{"2":3}}],["kernels",{"2":{"10":1}}],["kernel",{"2":{"2":9,"4":3,"5":4,"10":7,"11":1,"12":4,"17":1,"18":6}}],["kernelmodel",{"2":{"1":1,"2":1,"10":1}}],["kolmogorov",{"2":{"2":5}}],["kzeta",{"2":{"2":5}}],["kzetafinders",{"2":{"6":1}}],["kzetafinder",{"2":{"1":4,"2":8}}],["k",{"2":{"2":10}}],["rps",{"2":{"24":4}}],["rsta",{"2":{"19":1}}],["rickett",{"2":{"19":1}}],["rin",{"2":{"2":8,"6":7}}],["r→+rf2∇ϕ",{"2":{"18":1}}],["r→0",{"2":{"18":1}}],["r→0+r→",{"2":{"18":1}}],["r→",{"2":{"18":29}}],["runtimes",{"2":{"4":1}}],["runtime",{"2":{"3":1}}],["rng=rng",{"2":{"24":3}}],["rng",{"2":{"2":2,"24":1}}],["royal",{"2":{"19":3}}],["root",{"2":{"2":1}}],["roughly",{"2":{"2":1}}],["ratio",{"2":{"18":1}}],["ramesh",{"2":{"17":1}}],["ranging",{"2":{"17":1}}],["range",{"2":{"4":1,"5":2}}],["randomize",{"2":{"24":1}}],["random",{"2":{"2":1,"18":2}}],["ra",{"2":{"2":1,"6":1,"10":1}}],["radioastron",{"2":{"14":1}}],["radio",{"2":{"5":1,"13":3,"14":4,"17":3,"18":2}}],["radial",{"2":{"2":1}}],["radialextent",{"2":{"2":1}}],["radians",{"2":{"2":3,"6":2}}],["rad",{"2":{"2":4,"6":6,"24":2}}],["r",{"2":{"2":14,"6":7,"7":1,"18":3,"19":4,"21":1}}],["recommend",{"2":{"20":1}}],["reconstructed",{"2":{"4":1}}],["review",{"2":{"19":1}}],["realization",{"2":{"18":1}}],["reproducibility",{"2":{"24":1}}],["represents",{"2":{"18":2}}],["repository",{"2":{"15":1}}],["registered",{"2":{"15":1}}],["regimes",{"0":{"17":1},"2":{"17":3,"18":1}}],["regime",{"2":{"13":1,"17":9,"18":1}}],["responsible",{"2":{"18":1}}],["respectively",{"2":{"14":1}}],["resolution",{"2":{"14":1}}],["resulting",{"2":{"14":1}}],["resultant",{"2":{"10":1,"18":1}}],["results",{"2":{"3":1,"5":1}}],["result",{"2":{"2":1,"3":1,"17":1}}],["relation",{"2":{"18":1}}],["relativistic",{"2":{"9":1,"23":1}}],["related",{"2":{"2":2,"18":1}}],["return",{"2":{"2":2,"6":1}}],["returns",{"2":{"2":3}}],["requires",{"2":{"2":1}}],["reflect",{"2":{"17":1}}],["referred",{"2":{"14":1,"18":1}}],["references",{"0":{"7":1,"19":1,"21":1}}],["reference",{"2":{"2":14}}],["refractively",{"2":{"18":1}}],["refractive",{"0":{"22":1,"24":1},"1":{"23":1,"24":1,"25":1},"2":{"2":4,"14":1,"17":12,"18":3,"22":2,"24":4}}],["refractivephasescreen",{"2":{"1":2,"2":4,"24":4}}],["rf=drd+rλ2π",{"2":{"18":1}}],["rf",{"2":{"1":1,"2":2}}],["emsemble",{"2":{"24":1}}],["emissions",{"2":{"13":1,"14":1}}],["effectively",{"2":{"18":1}}],["effects",{"2":{"13":1,"14":1,"17":4,"20":1,"22":1,"24":2}}],["electron",{"2":{"14":1}}],["element",{"2":{"12":1}}],["especially",{"2":{"13":1}}],["essential",{"2":{"13":1}}],["each",{"2":{"17":1,"18":1}}],["earth",{"2":{"14":1,"18":2}}],["ea",{"2":{"10":4,"11":2,"12":3}}],["eofn",{"2":{"9":1,"23":1}}],["either",{"2":{"9":1,"23":1}}],["error",{"2":{"9":1,"12":2,"23":1,"25":1}}],["errors",{"2":{"5":1}}],["ecosystem",{"2":{"8":1,"9":1,"10":1,"23":1}}],["e",{"2":{"7":1,"14":1,"18":3,"19":1,"21":1,"24":1}}],["ensamble",{"2":{"18":1}}],["ensemble",{"2":{"10":1,"12":2,"17":3,"18":5}}],["ensembleaverage",{"2":{"1":2,"2":2,"11":3}}],["enjoy",{"2":{"6":1}}],["end",{"2":{"6":3,"12":1}}],["event",{"2":{"13":1,"14":1}}],["even",{"2":{"3":1,"24":1}}],["exponential",{"2":{"18":1}}],["exp⁡",{"2":{"18":2}}],["expressed",{"2":{"18":1}}],["explained",{"2":{"10":1}}],["exceeds",{"2":{"17":1}}],["except",{"2":{"17":1}}],["exhibit",{"2":{"17":1}}],["exhibits",{"2":{"4":1}}],["exemplified",{"2":{"14":1}}],["extended",{"2":{"16":1}}],["extent",{"2":{"2":1}}],["extremely",{"2":{"13":1,"14":1,"17":1}}],["extra",{"2":{"11":1}}],["examples",{"2":{"6":2,"14":1}}],["example",{"2":{"6":1,"9":1,"17":1,"23":1,"24":1}}],["exact",{"2":{"1":3,"2":11}}],["exactscatteringkernel",{"2":{"1":1,"2":3}}],["existing",{"2":{"3":1}}],["eht",{"2":{"2":2,"3":2,"4":1,"5":1,"6":1,"9":1,"12":1,"23":1,"25":1}}],["et",{"2":{"2":21,"6":4,"7":2,"9":2,"18":2,"19":2,"20":1,"21":2,"23":1}}],["equations",{"2":{"2":1,"6":2}}],["equation",{"2":{"1":1,"2":17,"18":2}}],["dr→",{"2":{"18":1}}],["days",{"2":{"17":2}}],["data",{"0":{"12":1,"25":1},"2":{"2":2,"6":1,"9":2,"12":6,"13":1,"14":1,"23":2,"25":2}}],["during",{"2":{"17":1}}],["due",{"2":{"14":1}}],["dy",{"2":{"2":4,"24":1}}],["dx",{"2":{"2":4,"24":1}}],["d2min",{"2":{"2":1,"6":3}}],["d2maj",{"2":{"2":1,"6":3}}],["d2",{"2":{"2":2,"6":2}}],["d1min",{"2":{"2":1,"6":3}}],["d1maj",{"2":{"2":1,"6":3}}],["d1",{"2":{"2":2,"6":2}}],["d",{"2":{"2":7,"6":8,"7":4,"18":2,"19":4,"21":3}}],["doesn",{"2":{"24":2}}],["don",{"2":{"24":2}}],["dominated",{"2":{"17":1}}],["domain",{"2":{"2":1,"10":1,"18":2,"24":2}}],["download",{"2":{"12":1}}],["downloaded",{"2":{"9":1,"23":1}}],["down",{"2":{"11":1}}],["do",{"2":{"11":1,"12":1}}],["doi",{"2":{"7":4,"19":8,"21":3}}],["docstrings",{"0":{"2":1}}],["dimensional",{"2":{"18":1}}],["directly",{"2":{"10":1}}],["direction",{"2":{"2":4}}],["disk",{"2":{"9":1,"23":1}}],["distort",{"2":{"24":1}}],["distortion",{"2":{"14":1}}],["distinct",{"2":{"17":2}}],["distribution",{"2":{"2":1}}],["distance",{"2":{"2":8,"18":4}}],["diffrective",{"2":{"2":1}}],["diffractively",{"2":{"10":1,"18":4,"24":1}}],["diffractive",{"0":{"8":1,"10":1},"1":{"9":1,"10":1,"11":1,"12":1},"2":{"2":4,"8":1,"10":1,"14":1,"17":10,"18":1}}],["differentiation",{"2":{"3":1}}],["differential",{"2":{"2":1}}],["different",{"2":{"2":1,"9":1,"18":1,"20":1}}],["dipole",{"2":{"1":1,"2":6,"4":1,"5":1,"18":3,"20":1}}],["dipolescatteringmodel",{"2":{"1":1,"2":3,"9":2,"10":2,"20":1,"24":6}}],["deterministic",{"2":{"17":1}}],["detailed",{"2":{"14":1}}],["details",{"2":{"2":4}}],["dependent",{"2":{"18":1}}],["depending",{"2":{"17":1}}],["depends",{"2":{"6":4,"18":1}}],["developed",{"2":{"13":1,"16":1}}],["dexter",{"2":{"9":1,"23":1}}],["design",{"2":{"24":1}}],["designed",{"2":{"8":1,"13":1}}],["descriptions",{"2":{"18":1}}],["description",{"2":{"14":1}}],["describes",{"2":{"8":1,"18":1}}],["described",{"2":{"2":3,"10":1,"17":1,"18":3,"24":1}}],["denoted",{"2":{"6":2,"18":1}}],["density",{"2":{"6":1,"14":1}}],["demonstrate",{"2":{"5":1}}],["deg=81",{"2":{"6":1}}],["deg",{"2":{"2":3,"6":2}}],["degree",{"2":{"2":4}}],["definition",{"2":{"6":1}}],["define",{"0":{"6":1},"1":{"7":1},"2":{"6":5,"20":2}}],["defined",{"2":{"2":6,"6":1,"10":1,"18":1}}],["default",{"0":{"20":1},"1":{"21":1},"2":{"2":5,"4":1,"6":1,"18":1,"20":2}}],["defaults",{"2":{"2":4}}],["dec",{"2":{"2":1,"6":1}}],["derived",{"2":{"2":2}}],["dz",{"2":{"1":1,"2":2}}],["ddϕ",{"2":{"1":1,"2":1}}],["dmin",{"2":{"1":1,"2":2}}],["dmaj",{"2":{"1":1,"2":1}}],["dϕ",{"2":{"1":2,"2":4,"18":6}}],["pbsm",{"2":{"20":1}}],["pulsars",{"2":{"17":2}}],["published",{"2":{"6":1}}],["pkg",{"2":{"15":2}}],["philosophical",{"2":{"19":1}}],["phenomena",{"2":{"14":1}}],["phenomenon",{"2":{"14":1}}],["physical",{"2":{"13":1}}],["phase",{"2":{"1":1,"2":19,"6":2,"17":1,"18":8,"24":6}}],["phasescreenpowerlaw",{"2":{"1":1,"2":1,"24":2}}],["plasma",{"2":{"14":1}}],["please",{"2":{"6":1,"9":1,"12":2,"20":1,"23":1,"25":1}}],["plot",{"2":{"5":1,"9":1,"10":7,"11":1,"23":1,"24":4}}],["plotting",{"2":{"5":1}}],["plots",{"2":{"4":1}}],["python",{"2":{"3":1,"5":1}}],["psm",{"2":{"2":5}}],["psaltis",{"2":{"2":16,"6":3,"7":1,"18":1,"19":1,"20":1,"21":1}}],["performs",{"2":{"3":1,"18":1}}],["per",{"2":{"2":8,"5":1}}],["periodic",{"2":{"2":3,"18":1,"20":2}}],["periodicboxcar",{"2":{"1":1,"2":2}}],["periodicboxcarscatteringmodel",{"2":{"1":1,"2":3,"20":1}}],["pixel",{"2":{"2":4}}],["pc",{"2":{"2":4}}],["pϕ",{"2":{"2":1,"6":4}}],["pϕfunc",{"2":{"2":2,"6":3}}],["polar",{"2":{"2":2}}],["position",{"2":{"2":5,"6":1}}],["powerful",{"2":{"24":1}}],["powerspectrum",{"2":{"6":1,"24":1}}],["power",{"2":{"2":9,"18":1}}],["points",{"2":{"4":1}}],["point",{"2":{"1":2,"2":5,"10":2}}],["particular",{"2":{"24":1}}],["parameter",{"2":{"2":11,"6":3,"9":1}}],["parameters",{"2":{"2":10,"3":1,"4":1,"6":12,"9":1}}],["params",{"2":{"1":1,"2":1}}],["pair",{"2":{"18":1}}],["pass",{"2":{"18":1}}],["page",{"2":{"8":1,"22":1}}],["pathway",{"2":{"4":1}}],["paves",{"2":{"4":1}}],["package",{"2":{"2":1,"6":4,"8":2,"9":1,"13":4,"14":1,"15":1,"17":1,"18":2,"20":1,"23":1}}],["produce",{"2":{"18":1,"24":3}}],["produces",{"2":{"3":1,"5":1,"14":1}}],["proposed",{"2":{"18":1,"20":1}}],["proportional",{"2":{"18":1}}],["properties",{"2":{"18":1}}],["projects",{"2":{"14":1}}],["programming",{"2":{"13":1}}],["probabilistic",{"2":{"6":2,"18":3,"24":1}}],["probability",{"2":{"2":1,"6":1}}],["processes",{"2":{"11":1,"24":1}}],["process",{"2":{"3":1,"24":1}}],["procedure",{"2":{"2":1}}],["providing",{"2":{"2":1,"18":1}}],["provides",{"2":{"13":1}}],["provided",{"2":{"2":1,"12":1,"25":1}}],["provide",{"2":{"2":2,"13":1}}],["previous",{"2":{"18":1}}],["present",{"2":{"3":1,"17":1}}],["presented",{"2":{"2":3}}],["prefac",{"2":{"2":2,"6":4}}],["precomputed",{"2":{"2":1,"6":3}}],["primarily",{"2":{"13":1}}],["primitive",{"2":{"2":1}}],["print",{"2":{"10":1,"23":1}}],["prints",{"2":{"7":1,"19":1,"21":1}}],["privide",{"2":{"2":2}}],["a2",{"2":{"24":2}}],["again",{"2":{"23":1,"24":1}}],["agns",{"2":{"14":1,"17":1}}],["aa",{"2":{"19":1}}],["aadcff",{"2":{"7":1,"19":1,"21":1}}],["aiming",{"2":{"13":1}}],["ax",{"2":{"10":2}}],["axis",{"2":{"2":16,"5":1,"6":2,"10":1}}],["afmhot",{"2":{"9":1,"10":4,"11":1,"23":1,"24":4}}],["above",{"2":{"11":1,"12":1,"25":1}}],["abs",{"2":{"10":1}}],["abstraction",{"2":{"6":1}}],["abstractphasescreen",{"2":{"2":4}}],["abstractmodel",{"2":{"2":2,"10":2,"11":1}}],["abstract",{"2":{"2":6,"6":2}}],["abstractscatteringmodel",{"2":{"1":1,"2":21,"6":3}}],["abstractscatteringkernel",{"2":{"1":1,"2":4}}],["abstractkzetafinder",{"2":{"1":1,"2":8,"6":1}}],["able",{"2":{"6":1}}],["accurate",{"2":{"16":1}}],["accelerate",{"2":{"3":1}}],["active",{"2":{"13":1,"14":1,"17":1}}],["actual",{"2":{"6":2,"20":1,"24":1}}],["across",{"2":{"5":1}}],["automatically",{"2":{"24":1}}],["auto",{"2":{"3":1}}],["add",{"2":{"15":2,"24":3}}],["advanced",{"2":{"13":1}}],["advantage",{"2":{"3":1,"13":1}}],["ads",{"2":{"7":4,"19":8,"21":3}}],["ad",{"2":{"3":1}}],["adopts",{"2":{"2":3}}],["available",{"2":{"24":1,"25":1}}],["averaging",{"2":{"17":2}}],["averaged",{"2":{"17":2}}],["average",{"2":{"2":2,"10":1,"12":2,"17":5,"18":8,"24":1,"25":2}}],["avstractphasescreen",{"2":{"2":1}}],["amp",{"2":{"16":1,"18":1,"20":1}}],["amplitudes",{"2":{"2":1,"10":1}}],["amin",{"2":{"2":4,"6":6}}],["amaj",{"2":{"2":4,"6":6}}],["atmosphere",{"2":{"14":1}}],["at",{"2":{"2":11,"6":1,"13":1,"14":2,"18":1}}],["astrophysics",{"2":{"19":1}}],["astrophysical",{"2":{"7":3,"19":3,"21":2}}],["astronomical",{"2":{"17":2,"19":2}}],["astronomy",{"2":{"5":1,"13":1,"14":1,"19":1}}],["asymmetric",{"2":{"2":2}}],["asymmetry",{"2":{"2":2,"6":1}}],["as",{"2":{"2":5,"3":1,"5":2,"6":4,"8":1,"10":1,"11":1,"14":3,"17":4,"18":5,"20":1,"24":2}}],["arbitral",{"2":{"24":1}}],["arcsecond",{"2":{"14":1}}],["arises",{"2":{"17":2}}],["arise",{"2":{"13":1,"18":1}}],["arrestic",{"2":{"9":1,"23":1}}],["argument",{"2":{"24":1}}],["arguments",{"2":{"2":1,"9":1}}],["argurments",{"2":{"2":1}}],["are",{"0":{"14":2},"2":{"2":9,"4":1,"5":1,"6":4,"14":2,"17":4,"18":2,"25":1}}],["arxiv",{"2":{"2":4,"7":3,"19":3,"21":3}}],["a",{"0":{"11":1},"2":{"2":33,"3":1,"4":2,"6":13,"8":1,"9":5,"10":4,"11":2,"12":2,"13":1,"14":4,"16":2,"17":6,"18":10,"19":1,"20":2,"22":1,"23":3,"24":16,"25":4}}],["annurev",{"2":{"19":1}}],["annual",{"2":{"19":1}}],["antennas",{"2":{"18":1}}],["analyzing",{"2":{"13":1}}],["analytically",{"2":{"18":1,"24":1}}],["analytic",{"2":{"2":2,"16":1,"18":2}}],["any",{"2":{"8":1,"10":1}}],["anisotropic",{"2":{"13":1}}],["anisotropy",{"2":{"2":3}}],["anistropic",{"2":{"2":8}}],["another",{"2":{"2":1,"22":1}}],["angle",{"2":{"2":6,"6":2}}],["angular",{"2":{"2":11,"10":1,"14":1,"17":4,"18":3}}],["and",{"0":{"14":1},"2":{"2":17,"3":2,"4":3,"5":3,"6":2,"10":3,"12":1,"13":6,"14":4,"15":1,"16":1,"17":13,"18":4,"19":1,"20":2,"24":7}}],["an",{"2":{"2":13,"6":1,"9":2,"10":1,"11":2,"13":1,"23":2,"24":4}}],["although",{"2":{"11":1}}],["alternatively",{"2":{"9":1,"23":1,"24":1}}],["along",{"2":{"6":1,"10":1}}],["also",{"2":{"4":1,"10":2,"11":1,"12":1,"13":1,"20":1}}],["all",{"2":{"2":1,"5":2,"6":3}}],["al",{"2":{"2":21,"6":4,"7":2,"9":2,"18":2,"19":2,"20":1,"21":2,"23":1}}],["appear",{"2":{"14":1}}],["approximated",{"2":{"2":2}}],["approximatedscatteringkernel",{"2":{"1":1,"2":2,"10":1}}],["approximate",{"2":{"2":1,"6":1}}],["approximation",{"2":{"2":5}}],["approx",{"2":{"1":2,"2":6}}],["api",{"0":{"0":1},"1":{"1":1,"2":1}}],["just",{"2":{"24":1}}],["juliag",{"2":{"10":1}}],["juliaget",{"2":{"2":1}}],["juliausing",{"2":{"6":1,"9":2,"12":1,"15":1,"20":1,"23":1,"24":1}}],["julia",{"2":{"3":2,"4":2,"5":1,"10":5,"11":1,"12":1,"13":2,"15":2,"24":6,"25":1}}],["juliawrapped",{"2":{"2":1}}],["juliavisibility",{"2":{"2":2}}],["juliasm",{"2":{"6":1}}],["juliascatter",{"2":{"2":2}}],["juliastruct",{"2":{"2":8}}],["juliaphase",{"2":{"2":1}}],["juliakzetafinder",{"2":{"2":1}}],["juliakernelmodel",{"2":{"2":1}}],["juliafindkzeta",{"2":{"2":1}}],["juliaensembleaverage",{"2":{"2":2}}],["juliacalc",{"2":{"2":1}}],["juliaddϕ",{"2":{"2":1}}],["juliadmaj",{"2":{"2":1}}],["juliadϕ",{"2":{"2":2}}],["juliarefractivephasescreen",{"2":{"2":2}}],["julia$",{"2":{"2":1}}],["juliaabstract",{"2":{"2":2}}],["juliaabstractkzetafinder",{"2":{"2":1}}],["j",{"2":{"17":1,"19":3}}],["jeremy",{"2":{"17":1}}],["jason",{"2":{"9":1,"23":1}}],["journal",{"2":{"7":3,"19":3,"21":2}}],["joint",{"2":{"4":1}}],["johnson",{"2":{"2":5,"6":1,"7":3,"9":1,"16":1,"18":1,"19":3,"20":1,"21":2}}],["johnson2018",{"2":{"1":1,"2":1}}],["jl",{"0":{"0":1},"1":{"1":1,"2":1},"2":{"2":2,"4":2,"6":1,"8":3,"9":2,"10":7,"13":2,"16":1,"17":1,"18":2,"22":1,"23":2,"24":3}}]],"serializationVersion":2}';export{e as default}; diff --git a/dev/assets/chunks/VPLocalSearchBox.DXhu4C5J.js b/dev/assets/chunks/VPLocalSearchBox.DLMGng9W.js similarity index 99% rename from dev/assets/chunks/VPLocalSearchBox.DXhu4C5J.js rename to dev/assets/chunks/VPLocalSearchBox.DLMGng9W.js index 34ef3a6..6879046 100644 --- a/dev/assets/chunks/VPLocalSearchBox.DXhu4C5J.js +++ b/dev/assets/chunks/VPLocalSearchBox.DLMGng9W.js @@ -1,4 +1,4 @@ -var Nt=Object.defineProperty;var Ft=(a,e,t)=>e in a?Nt(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ce=(a,e,t)=>Ft(a,typeof e!="symbol"?e+"":e,t);import{V as Ot,p as ne,h as ve,aj as Xe,ak as Rt,al as Ct,q as Ve,am as Mt,d as At,D as we,an as et,ao as Lt,ap as Dt,s as zt,aq as Pt,v as Me,P as de,O as xe,ar as jt,as as Vt,W as $t,R as Bt,$ as Wt,o as q,b as Kt,j as S,a0 as Jt,k as D,at as Ut,au as qt,av as Gt,c as Y,n as tt,e as Se,C as st,F as nt,a as he,t as fe,aw as Ht,ax as it,ay as Qt,a9 as Yt,af as Zt,az as Xt,_ as es}from"./framework.DWm5V20y.js";import{u as ts,c as ss}from"./theme.DnYWROZw.js";const ns={root:()=>Ot(()=>import("./@localSearchIndexroot.mzX19PWK.js"),[])};/*! +var Nt=Object.defineProperty;var Ft=(a,e,t)=>e in a?Nt(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ce=(a,e,t)=>Ft(a,typeof e!="symbol"?e+"":e,t);import{V as Ot,p as ne,h as ve,aj as Xe,ak as Rt,al as Ct,q as Ve,am as Mt,d as At,D as we,an as et,ao as Lt,ap as Dt,s as zt,aq as Pt,v as Me,P as de,O as xe,ar as jt,as as Vt,W as $t,R as Bt,$ as Wt,o as q,b as Kt,j as S,a0 as Jt,k as D,at as Ut,au as qt,av as Gt,c as Y,n as tt,e as Se,C as st,F as nt,a as he,t as fe,aw as Ht,ax as it,ay as Qt,a9 as Yt,af as Zt,az as Xt,_ as es}from"./framework.DWm5V20y.js";import{u as ts,c as ss}from"./theme.CE8Aa-yX.js";const ns={root:()=>Ot(()=>import("./@localSearchIndexroot.80nD1rQ6.js"),[])};/*! * tabbable 6.2.0 * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE */var vt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],ke=vt.join(","),mt=typeof Element>"u",re=mt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ne=!mt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},Fe=function a(e,t){var s;t===void 0&&(t=!0);var n=e==null||(s=e.getAttribute)===null||s===void 0?void 0:s.call(e,"inert"),r=n===""||n==="true",i=r||t&&e&&a(e.parentNode);return i},is=function(e){var t,s=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return s===""||s==="true"},gt=function(e,t,s){if(Fe(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(ke));return t&&re.call(e,ke)&&n.unshift(e),n=n.filter(s),n},bt=function a(e,t,s){for(var n=[],r=Array.from(e);r.length;){var i=r.shift();if(!Fe(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),l=o.length?o:i.children,c=a(l,!0,s);s.flatten?n.push.apply(n,c):n.push({scopeParent:i,candidates:c})}else{var h=re.call(i,ke);h&&s.filter(i)&&(t||!e.includes(i))&&n.push(i);var v=i.shadowRoot||typeof s.getShadowRoot=="function"&&s.getShadowRoot(i),p=!Fe(v,!1)&&(!s.shadowRootFilter||s.shadowRootFilter(i));if(v&&p){var b=a(v===!0?i.children:v.children,!0,s);s.flatten?n.push.apply(n,b):n.push({scopeParent:i,candidates:b})}else r.unshift.apply(r,i.children)}}return n},yt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},ie=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||is(e))&&!yt(e)?0:e.tabIndex},rs=function(e,t){var s=ie(e);return s<0&&t&&!yt(e)?0:s},as=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},wt=function(e){return e.tagName==="INPUT"},os=function(e){return wt(e)&&e.type==="hidden"},ls=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(s){return s.tagName==="SUMMARY"});return t},cs=function(e,t){for(var s=0;ssummary:first-of-type"),i=r?e.parentElement:e;if(re.call(i,"details:not([open]) *"))return!0;if(!s||s==="full"||s==="legacy-full"){if(typeof n=="function"){for(var o=e;e;){var l=e.parentElement,c=Ne(e);if(l&&!l.shadowRoot&&n(l)===!0)return rt(e);e.assignedSlot?e=e.assignedSlot:!l&&c!==e.ownerDocument?e=c.host:e=l}e=o}if(fs(e))return!e.getClientRects().length;if(s!=="legacy-full")return!0}else if(s==="non-zero-area")return rt(e);return!1},vs=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var s=0;s=0)},gs=function a(e){var t=[],s=[];return e.forEach(function(n,r){var i=!!n.scopeParent,o=i?n.scopeParent:n,l=rs(o,i),c=i?a(n.candidates):o;l===0?i?t.push.apply(t,c):t.push(o):s.push({documentOrder:r,tabIndex:l,item:n,isScope:i,content:c})}),s.sort(as).reduce(function(n,r){return r.isScope?n.push.apply(n,r.content):n.push(r.content),n},[]).concat(t)},bs=function(e,t){t=t||{};var s;return t.getShadowRoot?s=bt([e],t.includeContainer,{filter:$e.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:ms}):s=gt(e,t.includeContainer,$e.bind(null,t)),gs(s)},ys=function(e,t){t=t||{};var s;return t.getShadowRoot?s=bt([e],t.includeContainer,{filter:Oe.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):s=gt(e,t.includeContainer,Oe.bind(null,t)),s},ae=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return re.call(e,ke)===!1?!1:$e(t,e)},ws=vt.concat("iframe").join(","),Ae=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return re.call(e,ws)===!1?!1:Oe(t,e)};/*! diff --git a/dev/assets/chunks/theme.DnYWROZw.js b/dev/assets/chunks/theme.CE8Aa-yX.js similarity index 99% rename from dev/assets/chunks/theme.DnYWROZw.js rename to dev/assets/chunks/theme.CE8Aa-yX.js index 4b9a408..a6a7f24 100644 --- a/dev/assets/chunks/theme.DnYWROZw.js +++ b/dev/assets/chunks/theme.CE8Aa-yX.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.DXhu4C5J.js","assets/chunks/framework.DWm5V20y.js"])))=>i.map(i=>d[i]); -import{d as m,o as a,c as u,r as c,n as I,a as z,t as w,b as g,w as f,e as h,T as de,_ as $,u as Ge,i as je,f as ze,g as ve,h as y,j as p,k as r,l as K,m as re,p as T,q as F,s as Z,v as j,x as pe,y as fe,z as Ke,A as Re,B as R,F as M,C as B,D as Le,E as x,G as k,H as E,I as Ve,J as ee,K as G,L as W,M as qe,N as Te,O as ie,P as Ne,Q as we,R as te,S as We,U as Je,V as Ye,W as Ie,X as he,Y as Xe,Z as Qe,$ as Ze,a0 as xe,a1 as Me,a2 as et,a3 as tt,a4 as nt}from"./framework.DWm5V20y.js";const st=m({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(a(),u("span",{class:I(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[z(w(e.text),1)])],2))}}),ot={key:0,class:"VPBackdrop"},at=m({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(a(),g(de,{name:"fade"},{default:f(()=>[e.show?(a(),u("div",ot)):h("",!0)]),_:1}))}}),rt=$(at,[["__scopeId","data-v-b06cdb19"]]),V=Ge;function it(o,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(o,e):(o(),(s=!0)&&setTimeout(()=>s=!1,e))}}function le(o){return/^\//.test(o)?o:`/${o}`}function me(o){const{pathname:e,search:t,hash:s,protocol:n}=new URL(o,"http://a.com");if(je(o)||o.startsWith("#")||!n.startsWith("http")||!ze(e))return o;const{site:i}=V(),l=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${s}`);return ve(l)}function Y({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:s,theme:n,hash:i}=V(),l=y(()=>{var v,b;return{label:(v=e.value.locales[t.value])==null?void 0:v.label,link:((b=e.value.locales[t.value])==null?void 0:b.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([v,b])=>l.value.label===b.label?[]:{text:b.label,link:lt(b.link||(v==="root"?"/":`/${v}/`),n.value.i18nRouting!==!1&&o,s.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:l}}function lt(o,e,t,s){return e?o.replace(/\/$/,"")+le(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):o}const ct={class:"NotFound"},ut={class:"code"},dt={class:"title"},vt={class:"quote"},pt={class:"action"},ft=["href","aria-label"],ht=m({__name:"NotFound",setup(o){const{theme:e}=V(),{currentLang:t}=Y();return(s,n)=>{var i,l,d,v,b;return a(),u("div",ct,[p("p",ut,w(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),p("h1",dt,w(((l=r(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),n[0]||(n[0]=p("div",{class:"divider"},null,-1)),p("blockquote",vt,w(((d=r(e).notFound)==null?void 0:d.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),p("div",pt,[p("a",{class:"link",href:r(ve)(r(t).link),"aria-label":((v=r(e).notFound)==null?void 0:v.linkLabel)??"go to home"},w(((b=r(e).notFound)==null?void 0:b.linkText)??"Take me home"),9,ft)])])}}}),mt=$(ht,[["__scopeId","data-v-951cab6c"]]);function Ae(o,e){if(Array.isArray(o))return X(o);if(o==null)return[];e=le(e);const t=Object.keys(o).sort((n,i)=>i.split("/").length-n.split("/").length).find(n=>e.startsWith(le(n))),s=t?o[t]:[];return Array.isArray(s)?X(s):X(s.items,s.base)}function _t(o){const e=[];let t=0;for(const s in o){const n=o[s];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function bt(o){const e=[];function t(s){for(const n of s)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(o),e}function ce(o,e){return Array.isArray(e)?e.some(t=>ce(o,t)):K(o,e.link)?!0:e.items?ce(o,e.items):!1}function X(o,e){return[...o].map(t=>{const s={...t},n=s.base||e;return n&&s.link&&(s.link=n+s.link),s.items&&(s.items=X(s.items,n)),s})}function O(){const{frontmatter:o,page:e,theme:t}=V(),s=re("(min-width: 960px)"),n=T(!1),i=y(()=>{const C=t.value.sidebar,N=e.value.relativePath;return C?Ae(C,N):[]}),l=T(i.value);F(i,(C,N)=>{JSON.stringify(C)!==JSON.stringify(N)&&(l.value=i.value)});const d=y(()=>o.value.sidebar!==!1&&l.value.length>0&&o.value.layout!=="home"),v=y(()=>b?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),b=y(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),L=y(()=>d.value&&s.value),_=y(()=>d.value?_t(l.value):[]);function P(){n.value=!0}function S(){n.value=!1}function A(){n.value?S():P()}return{isOpen:n,sidebar:l,sidebarGroups:_,hasSidebar:d,hasAside:b,leftAside:v,isSidebarEnabled:L,open:P,close:S,toggle:A}}function kt(o,e){let t;Z(()=>{t=o.value?document.activeElement:void 0}),j(()=>{window.addEventListener("keyup",s)}),pe(()=>{window.removeEventListener("keyup",s)});function s(n){n.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function gt(o){const{page:e,hash:t}=V(),s=T(!1),n=y(()=>o.value.collapsed!=null),i=y(()=>!!o.value.link),l=T(!1),d=()=>{l.value=K(e.value.relativePath,o.value.link)};F([e,o,t],d),j(d);const v=y(()=>l.value?!0:o.value.items?ce(e.value.relativePath,o.value.items):!1),b=y(()=>!!(o.value.items&&o.value.items.length));Z(()=>{s.value=!!(n.value&&o.value.collapsed)}),fe(()=>{(l.value||v.value)&&(s.value=!1)});function L(){n.value&&(s.value=!s.value)}return{collapsed:s,collapsible:n,isLink:i,isActiveLink:l,hasActiveLink:v,hasChildren:b,toggle:L}}function $t(){const{hasSidebar:o}=O(),e=re("(min-width: 960px)"),t=re("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const ue=[];function Ce(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function _e(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:yt(t),link:"#"+t.id,level:s}});return Pt(e,o)}function yt(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Pt(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return Vt(o,s,n)}function St(o,e){const{isAsideEnabled:t}=$t(),s=it(i,100);let n=null;j(()=>{requestAnimationFrame(i),window.addEventListener("scroll",s)}),Ke(()=>{l(location.hash)}),pe(()=>{window.removeEventListener("scroll",s)});function i(){if(!t.value)return;const d=window.scrollY,v=window.innerHeight,b=document.body.offsetHeight,L=Math.abs(d+v-b)<1,_=ue.map(({element:S,link:A})=>({link:A,top:Lt(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,A)=>S.top-A.top);if(!_.length){l(null);return}if(d<1){l(null);return}if(L){l(_[_.length-1].link);return}let P=null;for(const{link:S,top:A}of _){if(A>d+Re()+4)break;P=S}l(P)}function l(d){n&&n.classList.remove("active"),d==null?n=null:n=o.value.querySelector(`a[href="${decodeURIComponent(d)}"]`);const v=n;v?(v.classList.add("active"),e.value.style.top=v.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Lt(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}function Vt(o,e,t){ue.length=0;const s=[],n=[];return o.forEach(i=>{const l={...i,children:[]};let d=n[n.length-1];for(;d&&d.level>=l.level;)n.pop(),d=n[n.length-1];if(l.element.classList.contains("ignore-header")||d&&"shouldIgnore"in d){n.push({level:l.level,shouldIgnore:!0});return}l.level>t||l.level{const n=R("VPDocOutlineItem",!0);return a(),u("ul",{class:I(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),u(M,null,B(t.headers,({children:i,link:l,title:d})=>(a(),u("li",null,[p("a",{class:"outline-link",href:l,onClick:e,title:d},w(d),9,Tt),i!=null&&i.length?(a(),g(n,{key:0,headers:i},null,8,["headers"])):h("",!0)]))),256))],2)}}}),Be=$(Nt,[["__scopeId","data-v-3f927ebe"]]),wt={class:"content"},It={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Mt=m({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=V(),s=Le([]);x(()=>{s.value=_e(e.value.outline??t.value.outline)});const n=T(),i=T();return St(n,i),(l,d)=>(a(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:I(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:n},[p("div",wt,[p("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),p("div",It,w(r(Ce)(r(t))),1),k(Be,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),At=$(Mt,[["__scopeId","data-v-b38bf2ff"]]),Ct={class:"VPDocAsideCarbonAds"},Bt=m({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,s)=>(a(),u("div",Ct,[k(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ht={class:"VPDocAside"},Et=m({__name:"VPDocAside",setup(o){const{theme:e}=V();return(t,s)=>(a(),u("div",Ht,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),k(At),c(t.$slots,"aside-outline-after",{},void 0,!0),s[0]||(s[0]=p("div",{class:"spacer"},null,-1)),c(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),g(Bt,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):h("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Dt=$(Et,[["__scopeId","data-v-6d7b3c46"]]);function Ft(){const{theme:o,page:e}=V();return y(()=>{const{text:t="Edit this page",pattern:s=""}=o.value.editLink||{};let n;return typeof s=="function"?n=s(e.value):n=s.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Ot(){const{page:o,theme:e,frontmatter:t}=V();return y(()=>{var b,L,_,P,S,A,C,N;const s=Ae(e.value.sidebar,o.value.relativePath),n=bt(s),i=Ut(n,H=>H.link.replace(/[?#].*$/,"")),l=i.findIndex(H=>K(o.value.relativePath,H.link)),d=((b=e.value.docFooter)==null?void 0:b.prev)===!1&&!t.value.prev||t.value.prev===!1,v=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((_=i[l-1])==null?void 0:_.docFooterText)??((P=i[l-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((S=i[l-1])==null?void 0:S.link)},next:v?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=i[l+1])==null?void 0:A.docFooterText)??((C=i[l+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((N=i[l+1])==null?void 0:N.link)}}})}function Ut(o,e){const t=new Set;return o.filter(s=>{const n=e(s);return t.has(n)?!1:t.add(n)})}const D=m({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.tag??(e.href?"a":"span")),s=y(()=>e.href&&Ve.test(e.href)||e.target==="_blank");return(n,i)=>(a(),g(E(t.value),{class:I(["VPLink",{link:n.href,"vp-external-link-icon":s.value,"no-icon":n.noIcon}]),href:n.href?r(me)(n.href):void 0,target:n.target??(s.value?"_blank":void 0),rel:n.rel??(s.value?"noreferrer":void 0)},{default:f(()=>[c(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Gt={class:"VPLastUpdated"},jt=["datetime"],zt=m({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,lang:s}=V(),n=y(()=>new Date(t.value.lastUpdated)),i=y(()=>n.value.toISOString()),l=T("");return j(()=>{Z(()=>{var d,v,b;l.value=new Intl.DateTimeFormat((v=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&v.forceLocale?s.value:void 0,((b=e.value.lastUpdated)==null?void 0:b.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(d,v)=>{var b;return a(),u("p",Gt,[z(w(((b=r(e).lastUpdated)==null?void 0:b.text)||r(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:i.value},w(l.value),9,jt)])}}}),Kt=$(zt,[["__scopeId","data-v-475f71b8"]]),Rt={key:0,class:"VPDocFooter"},qt={key:0,class:"edit-info"},Wt={key:0,class:"edit-link"},Jt={key:1,class:"last-updated"},Yt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Xt={class:"pager"},Qt=["innerHTML"],Zt=["innerHTML"],xt={class:"pager"},en=["innerHTML"],tn=["innerHTML"],nn=m({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:s}=V(),n=Ft(),i=Ot(),l=y(()=>e.value.editLink&&s.value.editLink!==!1),d=y(()=>t.value.lastUpdated),v=y(()=>l.value||d.value||i.value.prev||i.value.next);return(b,L)=>{var _,P,S,A;return v.value?(a(),u("footer",Rt,[c(b.$slots,"doc-footer-before",{},void 0,!0),l.value||d.value?(a(),u("div",qt,[l.value?(a(),u("div",Wt,[k(D,{class:"edit-link-button",href:r(n).url,"no-icon":!0},{default:f(()=>[L[0]||(L[0]=p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),z(" "+w(r(n).text),1)]),_:1},8,["href"])])):h("",!0),d.value?(a(),u("div",Jt,[k(Kt)])):h("",!0)])):h("",!0),(_=r(i).prev)!=null&&_.link||(P=r(i).next)!=null&&P.link?(a(),u("nav",Yt,[L[1]||(L[1]=p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),p("div",Xt,[(S=r(i).prev)!=null&&S.link?(a(),g(D,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:f(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,Qt),p("span",{class:"title",innerHTML:r(i).prev.text},null,8,Zt)]}),_:1},8,["href"])):h("",!0)]),p("div",xt,[(A=r(i).next)!=null&&A.link?(a(),g(D,{key:0,class:"pager-link next",href:r(i).next.link},{default:f(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,en),p("span",{class:"title",innerHTML:r(i).next.text},null,8,tn)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),sn=$(nn,[["__scopeId","data-v-4f9813fa"]]),on={class:"container"},an={class:"aside-container"},rn={class:"aside-content"},ln={class:"content"},cn={class:"content-container"},un={class:"main"},dn=m({__name:"VPDoc",setup(o){const{theme:e}=V(),t=ee(),{hasSidebar:s,hasAside:n,leftAside:i}=O(),l=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(d,v)=>{const b=R("Content");return a(),u("div",{class:I(["VPDoc",{"has-sidebar":r(s),"has-aside":r(n)}])},[c(d.$slots,"doc-top",{},void 0,!0),p("div",on,[r(n)?(a(),u("div",{key:0,class:I(["aside",{"left-aside":r(i)}])},[v[0]||(v[0]=p("div",{class:"aside-curtain"},null,-1)),p("div",an,[p("div",rn,[k(Dt,null,{"aside-top":f(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),p("div",ln,[p("div",cn,[c(d.$slots,"doc-before",{},void 0,!0),p("main",un,[k(b,{class:I(["vp-doc",[l.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(sn,null,{"doc-footer-before":f(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(d.$slots,"doc-after",{},void 0,!0)])])]),c(d.$slots,"doc-bottom",{},void 0,!0)],2)}}}),vn=$(dn,[["__scopeId","data-v-83890dd9"]]),pn=m({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.href&&Ve.test(e.href)),s=y(()=>e.tag||(e.href?"a":"button"));return(n,i)=>(a(),g(E(s.value),{class:I(["VPButton",[n.size,n.theme]]),href:n.href?r(me)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:f(()=>[z(w(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),fn=$(pn,[["__scopeId","data-v-906d7fb4"]]),hn=["src","alt"],mn=m({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const s=R("VPImage",!0);return e.image?(a(),u(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),u("img",G({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(ve)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,hn)):(a(),u(M,{key:1},[k(s,G({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),k(s,G({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),Q=$(mn,[["__scopeId","data-v-35a7d0b8"]]),_n={class:"container"},bn={class:"main"},kn={key:0,class:"name"},gn=["innerHTML"],$n=["innerHTML"],yn=["innerHTML"],Pn={key:0,class:"actions"},Sn={key:0,class:"image"},Ln={class:"image-container"},Vn=m({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=W("hero-image-slot-exists");return(t,s)=>(a(),u("div",{class:I(["VPHero",{"has-image":t.image||r(e)}])},[p("div",_n,[p("div",bn,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),u("h1",kn,[p("span",{innerHTML:t.name,class:"clip"},null,8,gn)])):h("",!0),t.text?(a(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,$n)):h("",!0),t.tagline?(a(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,yn)):h("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),u("div",Pn,[(a(!0),u(M,null,B(t.actions,n=>(a(),u("div",{key:n.link,class:"action"},[k(fn,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),u("div",Sn,[p("div",Ln,[s[0]||(s[0]=p("div",{class:"image-bg"},null,-1)),c(t.$slots,"home-hero-image",{},()=>[t.image?(a(),g(Q,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),Tn=$(Vn,[["__scopeId","data-v-955009fc"]]),Nn=m({__name:"VPHomeHero",setup(o){const{frontmatter:e}=V();return(t,s)=>r(e).hero?(a(),g(Tn,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),wn={class:"box"},In={key:0,class:"icon"},Mn=["innerHTML"],An=["innerHTML"],Cn=["innerHTML"],Bn={key:4,class:"link-text"},Hn={class:"link-text-value"},En=m({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(a(),g(D,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:f(()=>[p("article",wn,[typeof e.icon=="object"&&e.icon.wrap?(a(),u("div",In,[k(Q,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),g(Q,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Mn)):h("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,An),e.details?(a(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Cn)):h("",!0),e.linkText?(a(),u("div",Bn,[p("p",Hn,[z(w(e.linkText)+" ",1),t[0]||(t[0]=p("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Dn=$(En,[["__scopeId","data-v-f5e9645b"]]),Fn={key:0,class:"VPFeatures"},On={class:"container"},Un={class:"items"},Gn=m({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=y(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,n)=>s.features?(a(),u("div",Fn,[p("div",On,[p("div",Un,[(a(!0),u(M,null,B(s.features,i=>(a(),u("div",{key:i.title,class:I(["item",[t.value]])},[k(Dn,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),jn=$(Gn,[["__scopeId","data-v-d0a190d7"]]),zn=m({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=V();return(t,s)=>r(e).features?(a(),g(jn,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):h("",!0)}}),Kn=m({__name:"VPHomeContent",setup(o){const{width:e}=qe({initialWidth:0,includeScrollbar:!1});return(t,s)=>(a(),u("div",{class:"vp-doc container",style:Te(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),Rn=$(Kn,[["__scopeId","data-v-7a48a447"]]),qn={class:"VPHome"},Wn=m({__name:"VPHome",setup(o){const{frontmatter:e}=V();return(t,s)=>{const n=R("Content");return a(),u("div",qn,[c(t.$slots,"home-hero-before",{},void 0,!0),k(Nn,null,{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(t.$slots,"home-hero-after",{},void 0,!0),c(t.$slots,"home-features-before",{},void 0,!0),k(zn),c(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),g(Rn,{key:0},{default:f(()=>[k(n)]),_:1})):(a(),g(n,{key:1}))])}}}),Jn=$(Wn,[["__scopeId","data-v-cbb6ec48"]]),Yn={},Xn={class:"VPPage"};function Qn(o,e){const t=R("Content");return a(),u("div",Xn,[c(o.$slots,"page-top"),k(t),c(o.$slots,"page-bottom")])}const Zn=$(Yn,[["render",Qn]]),xn=m({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=V(),{hasSidebar:s}=O();return(n,i)=>(a(),u("div",{class:I(["VPContent",{"has-sidebar":r(s),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?c(n.$slots,"not-found",{key:0},()=>[k(mt)],!0):r(t).layout==="page"?(a(),g(Zn,{key:1},{"page-top":f(()=>[c(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),g(Jn,{key:2},{"home-hero-before":f(()=>[c(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),g(E(r(t).layout),{key:3})):(a(),g(vn,{key:4},{"doc-top":f(()=>[c(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":f(()=>[c(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":f(()=>[c(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":f(()=>[c(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":f(()=>[c(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),es=$(xn,[["__scopeId","data-v-91765379"]]),ts={class:"container"},ns=["innerHTML"],ss=["innerHTML"],os=m({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=O();return(n,i)=>r(e).footer&&r(t).footer!==!1?(a(),u("footer",{key:0,class:I(["VPFooter",{"has-sidebar":r(s)}])},[p("div",ts,[r(e).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,ns)):h("",!0),r(e).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,ss)):h("",!0)])],2)):h("",!0)}}),as=$(os,[["__scopeId","data-v-c970a860"]]);function rs(){const{theme:o,frontmatter:e}=V(),t=Le([]),s=y(()=>t.value.length>0);return x(()=>{t.value=_e(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:s}}const is={class:"menu-text"},ls={class:"header"},cs={class:"outline"},us=m({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=V(),s=T(!1),n=T(0),i=T(),l=T();function d(_){var P;(P=i.value)!=null&&P.contains(_.target)||(s.value=!1)}F(s,_=>{if(_){document.addEventListener("click",d);return}document.removeEventListener("click",d)}),ie("Escape",()=>{s.value=!1}),x(()=>{s.value=!1});function v(){s.value=!s.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function b(_){_.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Ne(()=>{s.value=!1}))}function L(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(_,P)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:Te({"--vp-vh":n.value+"px"}),ref_key:"main",ref:i},[_.headers.length>0?(a(),u("button",{key:0,onClick:v,class:I({open:s.value})},[p("span",is,w(r(Ce)(r(t))),1),P[0]||(P[0]=p("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(a(),u("button",{key:1,onClick:L},w(r(t).returnToTopLabel||"Return to top"),1)),k(de,{name:"flyout"},{default:f(()=>[s.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:b},[p("div",ls,[p("a",{class:"top-link",href:"#",onClick:L},w(r(t).returnToTopLabel||"Return to top"),1)]),p("div",cs,[k(Be,{headers:_.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),ds=$(us,[["__scopeId","data-v-bc9dc845"]]),vs={class:"container"},ps=["aria-expanded"],fs={class:"menu-text"},hs=m({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=O(),{headers:n}=rs(),{y:i}=we(),l=T(0);j(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{n.value=_e(t.value.outline??e.value.outline)});const d=y(()=>n.value.length===0),v=y(()=>d.value&&!s.value),b=y(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:d.value,fixed:v.value}));return(L,_)=>r(t).layout!=="home"&&(!v.value||r(i)>=l.value)?(a(),u("div",{key:0,class:I(b.value)},[p("div",vs,[r(s)?(a(),u("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:_[0]||(_[0]=P=>L.$emit("open-menu"))},[_[1]||(_[1]=p("span",{class:"vpi-align-left menu-icon"},null,-1)),p("span",fs,w(r(e).sidebarMenuLabel||"Menu"),1)],8,ps)):h("",!0),k(ds,{headers:r(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),ms=$(hs,[["__scopeId","data-v-070ab83d"]]);function _s(){const o=T(!1);function e(){o.value=!0,window.addEventListener("resize",n)}function t(){o.value=!1,window.removeEventListener("resize",n)}function s(){o.value?t():e()}function n(){window.outerWidth>=768&&t()}const i=ee();return F(()=>i.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:s}}const bs={},ks={class:"VPSwitch",type:"button",role:"switch"},gs={class:"check"},$s={key:0,class:"icon"};function ys(o,e){return a(),u("button",ks,[p("span",gs,[o.$slots.default?(a(),u("span",$s,[c(o.$slots,"default",{},void 0,!0)])):h("",!0)])])}const Ps=$(bs,[["render",ys],["__scopeId","data-v-4a1c76db"]]),Ss=m({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=V(),s=W("toggle-appearance",()=>{e.value=!e.value}),n=T("");return fe(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,l)=>(a(),g(Ps,{title:n.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(s)},{default:f(()=>l[0]||(l[0]=[p("span",{class:"vpi-sun sun"},null,-1),p("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),be=$(Ss,[["__scopeId","data-v-e40a8bb6"]]),Ls={key:0,class:"VPNavBarAppearance"},Vs=m({__name:"VPNavBarAppearance",setup(o){const{site:e}=V();return(t,s)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",Ls,[k(be)])):h("",!0)}}),Ts=$(Vs,[["__scopeId","data-v-af096f4a"]]),ke=T();let He=!1,ae=0;function Ns(o){const e=T(!1);if(te){!He&&ws(),ae++;const t=F(ke,s=>{var n,i,l;s===o.el.value||(n=o.el.value)!=null&&n.contains(s)?(e.value=!0,(i=o.onFocus)==null||i.call(o)):(e.value=!1,(l=o.onBlur)==null||l.call(o))});pe(()=>{t(),ae--,ae||Is()})}return We(e)}function ws(){document.addEventListener("focusin",Ee),He=!0,ke.value=document.activeElement}function Is(){document.removeEventListener("focusin",Ee)}function Ee(){ke.value=document.activeElement}const Ms={class:"VPMenuLink"},As=["innerHTML"],Cs=m({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=V();return(t,s)=>(a(),u("div",Ms,[k(D,{class:I({active:r(K)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,As)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),ne=$(Cs,[["__scopeId","data-v-acbfed09"]]),Bs={class:"VPMenuGroup"},Hs={key:0,class:"title"},Es=m({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),u("div",Bs,[e.text?(a(),u("p",Hs,w(e.text),1)):h("",!0),(a(!0),u(M,null,B(e.items,s=>(a(),u(M,null,["link"in s?(a(),g(ne,{key:0,item:s},null,8,["item"])):h("",!0)],64))),256))]))}}),Ds=$(Es,[["__scopeId","data-v-48c802d0"]]),Fs={class:"VPMenu"},Os={key:0,class:"items"},Us=m({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(a(),u("div",Fs,[e.items?(a(),u("div",Os,[(a(!0),u(M,null,B(e.items,s=>(a(),u(M,{key:JSON.stringify(s)},["link"in s?(a(),g(ne,{key:0,item:s},null,8,["item"])):"component"in s?(a(),g(E(s.component),G({key:1,ref_for:!0},s.props),null,16)):(a(),g(Ds,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):h("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),Gs=$(Us,[["__scopeId","data-v-7dd3104a"]]),js=["aria-expanded","aria-label"],zs={key:0,class:"text"},Ks=["innerHTML"],Rs={key:1,class:"vpi-more-horizontal icon"},qs={class:"menu"},Ws=m({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=T(!1),t=T();Ns({el:t,onBlur:s});function s(){e.value=!1}return(n,i)=>(a(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=l=>e.value=!0),onMouseleave:i[2]||(i[2]=l=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:i[0]||(i[0]=l=>e.value=!e.value)},[n.button||n.icon?(a(),u("span",zs,[n.icon?(a(),u("span",{key:0,class:I([n.icon,"option-icon"])},null,2)):h("",!0),n.button?(a(),u("span",{key:1,innerHTML:n.button},null,8,Ks)):h("",!0),i[3]||(i[3]=p("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(a(),u("span",Rs))],8,js),p("div",qs,[k(Gs,{items:n.items},{default:f(()=>[c(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ge=$(Ws,[["__scopeId","data-v-04f5c5e9"]]),Js=["href","aria-label","innerHTML"],Ys=m({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(s,n)=>(a(),u("a",{class:"VPSocialLink no-icon",href:s.link,"aria-label":s.ariaLabel??(typeof s.icon=="string"?s.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,Js))}}),Xs=$(Ys,[["__scopeId","data-v-717b8b75"]]),Qs={class:"VPSocialLinks"},Zs=m({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(a(),u("div",Qs,[(a(!0),u(M,null,B(e.links,({link:s,icon:n,ariaLabel:i})=>(a(),g(Xs,{key:s,icon:n,link:s,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),$e=$(Zs,[["__scopeId","data-v-ee7a9424"]]),xs={key:0,class:"group translations"},eo={class:"trans-title"},to={key:1,class:"group"},no={class:"item appearance"},so={class:"label"},oo={class:"appearance-action"},ao={key:2,class:"group"},ro={class:"item social-links"},io=m({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=V(),{localeLinks:s,currentLang:n}=Y({correspondingLink:!0}),i=y(()=>s.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(l,d)=>i.value?(a(),g(ge,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:f(()=>[r(s).length&&r(n).label?(a(),u("div",xs,[p("p",eo,w(r(n).label),1),(a(!0),u(M,null,B(r(s),v=>(a(),g(ne,{key:v.link,item:v},null,8,["item"]))),128))])):h("",!0),r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",to,[p("div",no,[p("p",so,w(r(t).darkModeSwitchLabel||"Appearance"),1),p("div",oo,[k(be)])])])):h("",!0),r(t).socialLinks?(a(),u("div",ao,[p("div",ro,[k($e,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),lo=$(io,[["__scopeId","data-v-925effce"]]),co=["aria-expanded"],uo=m({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(a(),u("button",{type:"button",class:I(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},t[1]||(t[1]=[p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)]),10,co))}}),vo=$(uo,[["__scopeId","data-v-5dea55bf"]]),po=["innerHTML"],fo=m({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=V();return(t,s)=>(a(),g(D,{class:I({VPNavBarMenuLink:!0,active:r(K)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,po)]),_:1},8,["class","href","target","rel","no-icon"]))}}),ho=$(fo,[["__scopeId","data-v-956ec74c"]]),mo=m({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=V(),s=i=>"component"in i?!1:"link"in i?K(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(s),n=y(()=>s(e.item));return(i,l)=>(a(),g(ge,{class:I({VPNavBarMenuGroup:!0,active:r(K)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||n.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),_o={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},bo=m({__name:"VPNavBarMenu",setup(o){const{theme:e}=V();return(t,s)=>r(e).nav?(a(),u("nav",_o,[s[0]||(s[0]=p("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(a(!0),u(M,null,B(r(e).nav,n=>(a(),u(M,{key:JSON.stringify(n)},["link"in n?(a(),g(ho,{key:0,item:n},null,8,["item"])):"component"in n?(a(),g(E(n.component),G({key:1,ref_for:!0},n.props),null,16)):(a(),g(mo,{key:2,item:n},null,8,["item"]))],64))),128))])):h("",!0)}}),ko=$(bo,[["__scopeId","data-v-e6d46098"]]);function go(o){const{localeIndex:e,theme:t}=V();function s(n){var A,C,N;const i=n.split("."),l=(A=t.value.search)==null?void 0:A.options,d=l&&typeof l=="object",v=d&&((N=(C=l.locales)==null?void 0:C[e.value])==null?void 0:N.translations)||null,b=d&&l.translations||null;let L=v,_=b,P=o;const S=i.pop();for(const H of i){let U=null;const q=P==null?void 0:P[H];q&&(U=P=q);const se=_==null?void 0:_[H];se&&(U=_=se);const oe=L==null?void 0:L[H];oe&&(U=L=oe),q||(P=U),se||(_=U),oe||(L=U)}return(L==null?void 0:L[S])??(_==null?void 0:_[S])??(P==null?void 0:P[S])??""}return s}const $o=["aria-label"],yo={class:"DocSearch-Button-Container"},Po={class:"DocSearch-Button-Placeholder"},ye=m({__name:"VPNavBarSearchButton",setup(o){const t=go({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,n)=>(a(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[p("span",yo,[n[0]||(n[0]=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),p("span",Po,w(r(t)("button.buttonText")),1)]),n[1]||(n[1]=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,$o))}}),So={class:"VPNavBarSearch"},Lo={id:"local-search"},Vo={key:1,id:"docsearch"},To=m({__name:"VPNavBarSearch",setup(o){const e=Je(()=>Ye(()=>import("./VPLocalSearchBox.DXhu4C5J.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:s}=V(),n=T(!1),i=T(!1);j(()=>{});function l(){n.value||(n.value=!0,setTimeout(d,16))}function d(){const _=new Event("keydown");_.key="k",_.metaKey=!0,window.dispatchEvent(_),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||d()},16)}function v(_){const P=_.target,S=P.tagName;return P.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const b=T(!1);ie("k",_=>{(_.ctrlKey||_.metaKey)&&(_.preventDefault(),b.value=!0)}),ie("/",_=>{v(_)||(_.preventDefault(),b.value=!0)});const L="local";return(_,P)=>{var S;return a(),u("div",So,[r(L)==="local"?(a(),u(M,{key:0},[b.value?(a(),g(r(e),{key:0,onClose:P[0]||(P[0]=A=>b.value=!1)})):h("",!0),p("div",Lo,[k(ye,{onClick:P[1]||(P[1]=A=>b.value=!0)})])],64)):r(L)==="algolia"?(a(),u(M,{key:1},[n.value?(a(),g(r(t),{key:0,algolia:((S=r(s).search)==null?void 0:S.options)??r(s).algolia,onVnodeBeforeMount:P[2]||(P[2]=A=>i.value=!0)},null,8,["algolia"])):h("",!0),i.value?h("",!0):(a(),u("div",Vo,[k(ye,{onClick:l})]))],64)):h("",!0)])}}}),No=m({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=V();return(t,s)=>r(e).socialLinks?(a(),g($e,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),wo=$(No,[["__scopeId","data-v-164c457f"]]),Io=["href","rel","target"],Mo={key:1},Ao={key:2},Co=m({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=V(),{hasSidebar:s}=O(),{currentLang:n}=Y(),i=y(()=>{var v;return typeof t.value.logoLink=="string"?t.value.logoLink:(v=t.value.logoLink)==null?void 0:v.link}),l=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.rel}),d=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.target});return(v,b)=>(a(),u("div",{class:I(["VPNavBarTitle",{"has-sidebar":r(s)}])},[p("a",{class:"title",href:i.value??r(me)(r(n).link),rel:l.value,target:d.value},[c(v.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),g(Q,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):h("",!0),r(t).siteTitle?(a(),u("span",Mo,w(r(t).siteTitle),1)):r(t).siteTitle===void 0?(a(),u("span",Ao,w(r(e).title),1)):h("",!0),c(v.$slots,"nav-bar-title-after",{},void 0,!0)],8,Io)],2))}}),Bo=$(Co,[["__scopeId","data-v-28a961f9"]]),Ho={class:"items"},Eo={class:"title"},Do=m({__name:"VPNavBarTranslations",setup(o){const{theme:e}=V(),{localeLinks:t,currentLang:s}=Y({correspondingLink:!0});return(n,i)=>r(t).length&&r(s).label?(a(),g(ge,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:f(()=>[p("div",Ho,[p("p",Eo,w(r(s).label),1),(a(!0),u(M,null,B(r(t),l=>(a(),g(ne,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),Fo=$(Do,[["__scopeId","data-v-c80d9ad0"]]),Oo={class:"wrapper"},Uo={class:"container"},Go={class:"title"},jo={class:"content"},zo={class:"content-body"},Ko=m({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const e=o,{y:t}=we(),{hasSidebar:s}=O(),{frontmatter:n}=V(),i=T({});return fe(()=>{i.value={"has-sidebar":s.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,d)=>(a(),u("div",{class:I(["VPNavBar",i.value])},[p("div",Oo,[p("div",Uo,[p("div",Go,[k(Bo,null,{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",jo,[p("div",zo,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),k(To,{class:"search"}),k(ko,{class:"menu"}),k(Fo,{class:"translations"}),k(Ts,{class:"appearance"}),k(wo,{class:"social-links"}),k(lo,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),k(vo,{class:"hamburger",active:l.isScreenOpen,onClick:d[0]||(d[0]=v=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),d[1]||(d[1]=p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1))],2))}}),Ro=$(Ko,[["__scopeId","data-v-822684d1"]]),qo={key:0,class:"VPNavScreenAppearance"},Wo={class:"text"},Jo=m({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=V();return(s,n)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",qo,[p("p",Wo,w(r(t).darkModeSwitchLabel||"Appearance"),1),k(be)])):h("",!0)}}),Yo=$(Jo,[["__scopeId","data-v-ffb44008"]]),Xo=["innerHTML"],Qo=m({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=W("close-screen");return(t,s)=>(a(),g(D,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:r(e)},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Xo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Zo=$(Qo,[["__scopeId","data-v-735512b8"]]),xo=["innerHTML"],ea=m({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=W("close-screen");return(t,s)=>(a(),g(D,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:r(e)},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,xo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),De=$(ea,[["__scopeId","data-v-372ae7c0"]]),ta={class:"VPNavScreenMenuGroupSection"},na={key:0,class:"title"},sa=m({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),u("div",ta,[e.text?(a(),u("p",na,w(e.text),1)):h("",!0),(a(!0),u(M,null,B(e.items,s=>(a(),g(De,{key:s.text,item:s},null,8,["item"]))),128))]))}}),oa=$(sa,[["__scopeId","data-v-4b8941ac"]]),aa=["aria-controls","aria-expanded"],ra=["innerHTML"],ia=["id"],la={key:0,class:"item"},ca={key:1,class:"item"},ua={key:2,class:"group"},da=m({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=T(!1),s=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(i,l)=>(a(),u("div",{class:I(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:n},[p("span",{class:"button-text",innerHTML:i.text},null,8,ra),l[0]||(l[0]=p("span",{class:"vpi-plus button-icon"},null,-1))],8,aa),p("div",{id:s.value,class:"items"},[(a(!0),u(M,null,B(i.items,d=>(a(),u(M,{key:JSON.stringify(d)},["link"in d?(a(),u("div",la,[k(De,{item:d},null,8,["item"])])):"component"in d?(a(),u("div",ca,[(a(),g(E(d.component),G({ref_for:!0},d.props,{"screen-menu":""}),null,16))])):(a(),u("div",ua,[k(oa,{text:d.text,items:d.items},null,8,["text","items"])]))],64))),128))],8,ia)],2))}}),va=$(da,[["__scopeId","data-v-875057a5"]]),pa={key:0,class:"VPNavScreenMenu"},fa=m({__name:"VPNavScreenMenu",setup(o){const{theme:e}=V();return(t,s)=>r(e).nav?(a(),u("nav",pa,[(a(!0),u(M,null,B(r(e).nav,n=>(a(),u(M,{key:JSON.stringify(n)},["link"in n?(a(),g(Zo,{key:0,item:n},null,8,["item"])):"component"in n?(a(),g(E(n.component),G({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(a(),g(va,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),ha=m({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=V();return(t,s)=>r(e).socialLinks?(a(),g($e,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),ma={class:"list"},_a=m({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=Y({correspondingLink:!0}),s=T(!1);function n(){s.value=!s.value}return(i,l)=>r(e).length&&r(t).label?(a(),u("div",{key:0,class:I(["VPNavScreenTranslations",{open:s.value}])},[p("button",{class:"title",onClick:n},[l[0]||(l[0]=p("span",{class:"vpi-languages icon lang"},null,-1)),z(" "+w(r(t).label)+" ",1),l[1]||(l[1]=p("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),p("ul",ma,[(a(!0),u(M,null,B(r(e),d=>(a(),u("li",{key:d.link,class:"item"},[k(D,{class:"link",href:d.link},{default:f(()=>[z(w(d.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),ba=$(_a,[["__scopeId","data-v-362991c2"]]),ka={class:"container"},ga=m({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=T(null),t=Ie(te?document.body:null);return(s,n)=>(a(),g(de,{name:"fade",onEnter:n[0]||(n[0]=i=>t.value=!0),onAfterLeave:n[1]||(n[1]=i=>t.value=!1)},{default:f(()=>[s.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",ka,[c(s.$slots,"nav-screen-content-before",{},void 0,!0),k(fa,{class:"menu"}),k(ba,{class:"translations"}),k(Yo,{class:"appearance"}),k(ha,{class:"social-links"}),c(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),$a=$(ga,[["__scopeId","data-v-833aabba"]]),ya={key:0,class:"VPNav"},Pa=m({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=_s(),{frontmatter:n}=V(),i=y(()=>n.value.navbar!==!1);return he("close-screen",t),Z(()=>{te&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(l,d)=>i.value?(a(),u("header",ya,[k(Ro,{"is-screen-open":r(e),onToggleScreen:r(s)},{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k($a,{open:r(e)},{"nav-screen-content-before":f(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),Sa=$(Pa,[["__scopeId","data-v-f1e365da"]]),La=["role","tabindex"],Va={key:1,class:"items"},Ta=m({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:s,isLink:n,isActiveLink:i,hasActiveLink:l,hasChildren:d,toggle:v}=gt(y(()=>e.item)),b=y(()=>d.value?"section":"div"),L=y(()=>n.value?"a":"div"),_=y(()=>d.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=y(()=>n.value?void 0:"button"),S=y(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":n.value},{"is-active":i.value},{"has-active":l.value}]);function A(N){"key"in N&&N.key!=="Enter"||!e.item.link&&v()}function C(){e.item.link&&v()}return(N,H)=>{const U=R("VPSidebarItem",!0);return a(),g(E(b.value),{class:I(["VPSidebarItem",S.value])},{default:f(()=>[N.item.text?(a(),u("div",G({key:0,class:"item",role:P.value},Qe(N.item.items?{click:A,keydown:A}:{},!0),{tabindex:N.item.items&&0}),[H[1]||(H[1]=p("div",{class:"indicator"},null,-1)),N.item.link?(a(),g(D,{key:0,tag:L.value,class:"link",href:N.item.link,rel:N.item.rel,target:N.item.target},{default:f(()=>[(a(),g(E(_.value),{class:"text",innerHTML:N.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),g(E(_.value),{key:1,class:"text",innerHTML:N.item.text},null,8,["innerHTML"])),N.item.collapsed!=null&&N.item.items&&N.item.items.length?(a(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:Xe(C,["enter"]),tabindex:"0"},H[0]||(H[0]=[p("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):h("",!0)],16,La)):h("",!0),N.item.items&&N.item.items.length?(a(),u("div",Va,[N.depth<5?(a(!0),u(M,{key:0},B(N.item.items,q=>(a(),g(U,{key:q.text,item:q,depth:N.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),Na=$(Ta,[["__scopeId","data-v-196b2e5f"]]),wa=m({__name:"VPSidebarGroup",props:{items:{}},setup(o){const e=T(!0);let t=null;return j(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),Ze(()=>{t!=null&&(clearTimeout(t),t=null)}),(s,n)=>(a(!0),u(M,null,B(s.items,i=>(a(),u("div",{key:i.text,class:I(["group",{"no-transition":e.value}])},[k(Na,{item:i,depth:0},null,8,["item"])],2))),128))}}),Ia=$(wa,[["__scopeId","data-v-9e426adc"]]),Ma={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Aa=m({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=O(),s=o,n=T(null),i=Ie(te?document.body:null);F([s,n],()=>{var d;s.open?(i.value=!0,(d=n.value)==null||d.focus()):i.value=!1},{immediate:!0,flush:"post"});const l=T(0);return F(e,()=>{l.value+=1},{deep:!0}),(d,v)=>r(t)?(a(),u("aside",{key:0,class:I(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:n,onClick:v[0]||(v[0]=xe(()=>{},["stop"]))},[v[2]||(v[2]=p("div",{class:"curtain"},null,-1)),p("nav",Ma,[v[1]||(v[1]=p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),c(d.$slots,"sidebar-nav-before",{},void 0,!0),(a(),g(Ia,{items:r(e),key:l.value},null,8,["items"])),c(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),Ca=$(Aa,[["__scopeId","data-v-18756405"]]),Ba=m({__name:"VPSkipLink",setup(o){const e=ee(),t=T();F(()=>e.path,()=>t.value.focus());function s({target:n}){const i=document.getElementById(decodeURIComponent(n.hash).slice(1));if(i){const l=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",l)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",l),i.focus(),window.scrollTo(0,0)}}return(n,i)=>(a(),u(M,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}}),Ha=$(Ba,[["__scopeId","data-v-c3508ec8"]]),Ea=m({__name:"Layout",setup(o){const{isOpen:e,open:t,close:s}=O(),n=ee();F(()=>n.path,s),kt(e,s);const{frontmatter:i}=V(),l=Me(),d=y(()=>!!l["home-hero-image"]);return he("hero-image-slot-exists",d),(v,b)=>{const L=R("Content");return r(i).layout!==!1?(a(),u("div",{key:0,class:I(["Layout",r(i).pageClass])},[c(v.$slots,"layout-top",{},void 0,!0),k(Ha),k(rt,{class:"backdrop",show:r(e),onClick:r(s)},null,8,["show","onClick"]),k(Sa,null,{"nav-bar-title-before":f(()=>[c(v.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(v.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(v.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(v.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":f(()=>[c(v.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(v.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(ms,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),k(Ca,{open:r(e)},{"sidebar-nav-before":f(()=>[c(v.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":f(()=>[c(v.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(es,null,{"page-top":f(()=>[c(v.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(v.$slots,"page-bottom",{},void 0,!0)]),"not-found":f(()=>[c(v.$slots,"not-found",{},void 0,!0)]),"home-hero-before":f(()=>[c(v.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(v.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(v.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(v.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(v.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(v.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(v.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(v.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(v.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":f(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(v.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(v.$slots,"doc-after",{},void 0,!0)]),"doc-top":f(()=>[c(v.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(v.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":f(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(as),c(v.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),g(L,{key:1}))}}}),Da=$(Ea,[["__scopeId","data-v-a9a9e638"]]),Pe={Layout:Da,enhanceApp:({app:o})=>{o.component("Badge",st)}},Fa=o=>{if(typeof document>"u")return{stabilizeScrollPosition:n=>async(...i)=>n(...i)};const e=document.documentElement;return{stabilizeScrollPosition:s=>async(...n)=>{const i=s(...n),l=o.value;if(!l)return i;const d=l.offsetTop-e.scrollTop;return await Ne(),e.scrollTop=l.offsetTop-d,i}}},Fe="vitepress:tabSharedState",J=typeof localStorage<"u"?localStorage:null,Oe="vitepress:tabsSharedState",Oa=()=>{const o=J==null?void 0:J.getItem(Oe);if(o)try{return JSON.parse(o)}catch{}return{}},Ua=o=>{J&&J.setItem(Oe,JSON.stringify(o))},Ga=o=>{const e=et({});F(()=>e.content,(t,s)=>{t&&s&&Ua(t)},{deep:!0}),o.provide(Fe,e)},ja=(o,e)=>{const t=W(Fe);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");j(()=>{t.content||(t.content=Oa())});const s=T(),n=y({get(){var v;const l=e.value,d=o.value;if(l){const b=(v=t.content)==null?void 0:v[l];if(b&&d.includes(b))return b}else{const b=s.value;if(b)return b}return d[0]},set(l){const d=e.value;d?t.content&&(t.content[d]=l):s.value=l}});return{selected:n,select:l=>{n.value=l}}};let Se=0;const za=()=>(Se++,""+Se);function Ka(){const o=Me();return y(()=>{var s;const t=(s=o.default)==null?void 0:s.call(o);return t?t.filter(n=>typeof n.type=="object"&&"__name"in n.type&&n.type.__name==="PluginTabsTab"&&n.props).map(n=>{var i;return(i=n.props)==null?void 0:i.label}):[]})}const Ue="vitepress:tabSingleState",Ra=o=>{he(Ue,o)},qa=()=>{const o=W(Ue);if(!o)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return o},Wa={class:"plugin-tabs"},Ja=["id","aria-selected","aria-controls","tabindex","onClick"],Ya=m({__name:"PluginTabs",props:{sharedStateKey:{}},setup(o){const e=o,t=Ka(),{selected:s,select:n}=ja(t,tt(e,"sharedStateKey")),i=T(),{stabilizeScrollPosition:l}=Fa(i),d=l(n),v=T([]),b=_=>{var A;const P=t.value.indexOf(s.value);let S;_.key==="ArrowLeft"?S=P>=1?P-1:t.value.length-1:_.key==="ArrowRight"&&(S=P(a(),u("div",Wa,[p("div",{ref_key:"tablist",ref:i,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:b},[(a(!0),u(M,null,B(r(t),S=>(a(),u("button",{id:`tab-${S}-${r(L)}`,ref_for:!0,ref_key:"buttonRefs",ref:v,key:S,role:"tab",class:"plugin-tabs--tab","aria-selected":S===r(s),"aria-controls":`panel-${S}-${r(L)}`,tabindex:S===r(s)?0:-1,onClick:()=>r(d)(S)},w(S),9,Ja))),128))],544),c(_.$slots,"default")]))}}),Xa=["id","aria-labelledby"],Qa=m({__name:"PluginTabsTab",props:{label:{}},setup(o){const{uid:e,selected:t}=qa();return(s,n)=>r(t)===s.label?(a(),u("div",{key:0,id:`panel-${s.label}-${r(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${s.label}-${r(e)}`},[c(s.$slots,"default",{},void 0,!0)],8,Xa)):h("",!0)}}),Za=$(Qa,[["__scopeId","data-v-9b0d03d2"]]),xa=o=>{Ga(o),o.component("PluginTabs",Ya),o.component("PluginTabsTab",Za)},tr={extends:Pe,Layout(){return nt(Pe.Layout,null,{})},enhanceApp({app:o,router:e,siteData:t}){xa(o)}};export{tr as R,go as c,V as u}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.DLMGng9W.js","assets/chunks/framework.DWm5V20y.js"])))=>i.map(i=>d[i]); +import{d as m,o as a,c as u,r as c,n as I,a as z,t as w,b as g,w as f,e as h,T as de,_ as $,u as Ge,i as je,f as ze,g as ve,h as y,j as p,k as r,l as K,m as re,p as T,q as F,s as Z,v as j,x as pe,y as fe,z as Ke,A as Re,B as R,F as M,C as B,D as Le,E as x,G as k,H as E,I as Ve,J as ee,K as G,L as W,M as qe,N as Te,O as ie,P as Ne,Q as we,R as te,S as We,U as Je,V as Ye,W as Ie,X as he,Y as Xe,Z as Qe,$ as Ze,a0 as xe,a1 as Me,a2 as et,a3 as tt,a4 as nt}from"./framework.DWm5V20y.js";const st=m({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(a(),u("span",{class:I(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[z(w(e.text),1)])],2))}}),ot={key:0,class:"VPBackdrop"},at=m({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(a(),g(de,{name:"fade"},{default:f(()=>[e.show?(a(),u("div",ot)):h("",!0)]),_:1}))}}),rt=$(at,[["__scopeId","data-v-b06cdb19"]]),V=Ge;function it(o,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(o,e):(o(),(s=!0)&&setTimeout(()=>s=!1,e))}}function le(o){return/^\//.test(o)?o:`/${o}`}function me(o){const{pathname:e,search:t,hash:s,protocol:n}=new URL(o,"http://a.com");if(je(o)||o.startsWith("#")||!n.startsWith("http")||!ze(e))return o;const{site:i}=V(),l=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${s}`);return ve(l)}function Y({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:s,theme:n,hash:i}=V(),l=y(()=>{var v,b;return{label:(v=e.value.locales[t.value])==null?void 0:v.label,link:((b=e.value.locales[t.value])==null?void 0:b.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([v,b])=>l.value.label===b.label?[]:{text:b.label,link:lt(b.link||(v==="root"?"/":`/${v}/`),n.value.i18nRouting!==!1&&o,s.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:l}}function lt(o,e,t,s){return e?o.replace(/\/$/,"")+le(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):o}const ct={class:"NotFound"},ut={class:"code"},dt={class:"title"},vt={class:"quote"},pt={class:"action"},ft=["href","aria-label"],ht=m({__name:"NotFound",setup(o){const{theme:e}=V(),{currentLang:t}=Y();return(s,n)=>{var i,l,d,v,b;return a(),u("div",ct,[p("p",ut,w(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),p("h1",dt,w(((l=r(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),n[0]||(n[0]=p("div",{class:"divider"},null,-1)),p("blockquote",vt,w(((d=r(e).notFound)==null?void 0:d.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),p("div",pt,[p("a",{class:"link",href:r(ve)(r(t).link),"aria-label":((v=r(e).notFound)==null?void 0:v.linkLabel)??"go to home"},w(((b=r(e).notFound)==null?void 0:b.linkText)??"Take me home"),9,ft)])])}}}),mt=$(ht,[["__scopeId","data-v-951cab6c"]]);function Ae(o,e){if(Array.isArray(o))return X(o);if(o==null)return[];e=le(e);const t=Object.keys(o).sort((n,i)=>i.split("/").length-n.split("/").length).find(n=>e.startsWith(le(n))),s=t?o[t]:[];return Array.isArray(s)?X(s):X(s.items,s.base)}function _t(o){const e=[];let t=0;for(const s in o){const n=o[s];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function bt(o){const e=[];function t(s){for(const n of s)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(o),e}function ce(o,e){return Array.isArray(e)?e.some(t=>ce(o,t)):K(o,e.link)?!0:e.items?ce(o,e.items):!1}function X(o,e){return[...o].map(t=>{const s={...t},n=s.base||e;return n&&s.link&&(s.link=n+s.link),s.items&&(s.items=X(s.items,n)),s})}function O(){const{frontmatter:o,page:e,theme:t}=V(),s=re("(min-width: 960px)"),n=T(!1),i=y(()=>{const C=t.value.sidebar,N=e.value.relativePath;return C?Ae(C,N):[]}),l=T(i.value);F(i,(C,N)=>{JSON.stringify(C)!==JSON.stringify(N)&&(l.value=i.value)});const d=y(()=>o.value.sidebar!==!1&&l.value.length>0&&o.value.layout!=="home"),v=y(()=>b?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),b=y(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),L=y(()=>d.value&&s.value),_=y(()=>d.value?_t(l.value):[]);function P(){n.value=!0}function S(){n.value=!1}function A(){n.value?S():P()}return{isOpen:n,sidebar:l,sidebarGroups:_,hasSidebar:d,hasAside:b,leftAside:v,isSidebarEnabled:L,open:P,close:S,toggle:A}}function kt(o,e){let t;Z(()=>{t=o.value?document.activeElement:void 0}),j(()=>{window.addEventListener("keyup",s)}),pe(()=>{window.removeEventListener("keyup",s)});function s(n){n.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function gt(o){const{page:e,hash:t}=V(),s=T(!1),n=y(()=>o.value.collapsed!=null),i=y(()=>!!o.value.link),l=T(!1),d=()=>{l.value=K(e.value.relativePath,o.value.link)};F([e,o,t],d),j(d);const v=y(()=>l.value?!0:o.value.items?ce(e.value.relativePath,o.value.items):!1),b=y(()=>!!(o.value.items&&o.value.items.length));Z(()=>{s.value=!!(n.value&&o.value.collapsed)}),fe(()=>{(l.value||v.value)&&(s.value=!1)});function L(){n.value&&(s.value=!s.value)}return{collapsed:s,collapsible:n,isLink:i,isActiveLink:l,hasActiveLink:v,hasChildren:b,toggle:L}}function $t(){const{hasSidebar:o}=O(),e=re("(min-width: 960px)"),t=re("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const ue=[];function Ce(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function _e(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:yt(t),link:"#"+t.id,level:s}});return Pt(e,o)}function yt(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Pt(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return Vt(o,s,n)}function St(o,e){const{isAsideEnabled:t}=$t(),s=it(i,100);let n=null;j(()=>{requestAnimationFrame(i),window.addEventListener("scroll",s)}),Ke(()=>{l(location.hash)}),pe(()=>{window.removeEventListener("scroll",s)});function i(){if(!t.value)return;const d=window.scrollY,v=window.innerHeight,b=document.body.offsetHeight,L=Math.abs(d+v-b)<1,_=ue.map(({element:S,link:A})=>({link:A,top:Lt(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,A)=>S.top-A.top);if(!_.length){l(null);return}if(d<1){l(null);return}if(L){l(_[_.length-1].link);return}let P=null;for(const{link:S,top:A}of _){if(A>d+Re()+4)break;P=S}l(P)}function l(d){n&&n.classList.remove("active"),d==null?n=null:n=o.value.querySelector(`a[href="${decodeURIComponent(d)}"]`);const v=n;v?(v.classList.add("active"),e.value.style.top=v.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Lt(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}function Vt(o,e,t){ue.length=0;const s=[],n=[];return o.forEach(i=>{const l={...i,children:[]};let d=n[n.length-1];for(;d&&d.level>=l.level;)n.pop(),d=n[n.length-1];if(l.element.classList.contains("ignore-header")||d&&"shouldIgnore"in d){n.push({level:l.level,shouldIgnore:!0});return}l.level>t||l.level{const n=R("VPDocOutlineItem",!0);return a(),u("ul",{class:I(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),u(M,null,B(t.headers,({children:i,link:l,title:d})=>(a(),u("li",null,[p("a",{class:"outline-link",href:l,onClick:e,title:d},w(d),9,Tt),i!=null&&i.length?(a(),g(n,{key:0,headers:i},null,8,["headers"])):h("",!0)]))),256))],2)}}}),Be=$(Nt,[["__scopeId","data-v-3f927ebe"]]),wt={class:"content"},It={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Mt=m({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=V(),s=Le([]);x(()=>{s.value=_e(e.value.outline??t.value.outline)});const n=T(),i=T();return St(n,i),(l,d)=>(a(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:I(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:n},[p("div",wt,[p("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),p("div",It,w(r(Ce)(r(t))),1),k(Be,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),At=$(Mt,[["__scopeId","data-v-b38bf2ff"]]),Ct={class:"VPDocAsideCarbonAds"},Bt=m({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,s)=>(a(),u("div",Ct,[k(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ht={class:"VPDocAside"},Et=m({__name:"VPDocAside",setup(o){const{theme:e}=V();return(t,s)=>(a(),u("div",Ht,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),k(At),c(t.$slots,"aside-outline-after",{},void 0,!0),s[0]||(s[0]=p("div",{class:"spacer"},null,-1)),c(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),g(Bt,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):h("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Dt=$(Et,[["__scopeId","data-v-6d7b3c46"]]);function Ft(){const{theme:o,page:e}=V();return y(()=>{const{text:t="Edit this page",pattern:s=""}=o.value.editLink||{};let n;return typeof s=="function"?n=s(e.value):n=s.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Ot(){const{page:o,theme:e,frontmatter:t}=V();return y(()=>{var b,L,_,P,S,A,C,N;const s=Ae(e.value.sidebar,o.value.relativePath),n=bt(s),i=Ut(n,H=>H.link.replace(/[?#].*$/,"")),l=i.findIndex(H=>K(o.value.relativePath,H.link)),d=((b=e.value.docFooter)==null?void 0:b.prev)===!1&&!t.value.prev||t.value.prev===!1,v=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((_=i[l-1])==null?void 0:_.docFooterText)??((P=i[l-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((S=i[l-1])==null?void 0:S.link)},next:v?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=i[l+1])==null?void 0:A.docFooterText)??((C=i[l+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((N=i[l+1])==null?void 0:N.link)}}})}function Ut(o,e){const t=new Set;return o.filter(s=>{const n=e(s);return t.has(n)?!1:t.add(n)})}const D=m({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.tag??(e.href?"a":"span")),s=y(()=>e.href&&Ve.test(e.href)||e.target==="_blank");return(n,i)=>(a(),g(E(t.value),{class:I(["VPLink",{link:n.href,"vp-external-link-icon":s.value,"no-icon":n.noIcon}]),href:n.href?r(me)(n.href):void 0,target:n.target??(s.value?"_blank":void 0),rel:n.rel??(s.value?"noreferrer":void 0)},{default:f(()=>[c(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Gt={class:"VPLastUpdated"},jt=["datetime"],zt=m({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,lang:s}=V(),n=y(()=>new Date(t.value.lastUpdated)),i=y(()=>n.value.toISOString()),l=T("");return j(()=>{Z(()=>{var d,v,b;l.value=new Intl.DateTimeFormat((v=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&v.forceLocale?s.value:void 0,((b=e.value.lastUpdated)==null?void 0:b.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(d,v)=>{var b;return a(),u("p",Gt,[z(w(((b=r(e).lastUpdated)==null?void 0:b.text)||r(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:i.value},w(l.value),9,jt)])}}}),Kt=$(zt,[["__scopeId","data-v-475f71b8"]]),Rt={key:0,class:"VPDocFooter"},qt={key:0,class:"edit-info"},Wt={key:0,class:"edit-link"},Jt={key:1,class:"last-updated"},Yt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Xt={class:"pager"},Qt=["innerHTML"],Zt=["innerHTML"],xt={class:"pager"},en=["innerHTML"],tn=["innerHTML"],nn=m({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:s}=V(),n=Ft(),i=Ot(),l=y(()=>e.value.editLink&&s.value.editLink!==!1),d=y(()=>t.value.lastUpdated),v=y(()=>l.value||d.value||i.value.prev||i.value.next);return(b,L)=>{var _,P,S,A;return v.value?(a(),u("footer",Rt,[c(b.$slots,"doc-footer-before",{},void 0,!0),l.value||d.value?(a(),u("div",qt,[l.value?(a(),u("div",Wt,[k(D,{class:"edit-link-button",href:r(n).url,"no-icon":!0},{default:f(()=>[L[0]||(L[0]=p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),z(" "+w(r(n).text),1)]),_:1},8,["href"])])):h("",!0),d.value?(a(),u("div",Jt,[k(Kt)])):h("",!0)])):h("",!0),(_=r(i).prev)!=null&&_.link||(P=r(i).next)!=null&&P.link?(a(),u("nav",Yt,[L[1]||(L[1]=p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),p("div",Xt,[(S=r(i).prev)!=null&&S.link?(a(),g(D,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:f(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,Qt),p("span",{class:"title",innerHTML:r(i).prev.text},null,8,Zt)]}),_:1},8,["href"])):h("",!0)]),p("div",xt,[(A=r(i).next)!=null&&A.link?(a(),g(D,{key:0,class:"pager-link next",href:r(i).next.link},{default:f(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,en),p("span",{class:"title",innerHTML:r(i).next.text},null,8,tn)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),sn=$(nn,[["__scopeId","data-v-4f9813fa"]]),on={class:"container"},an={class:"aside-container"},rn={class:"aside-content"},ln={class:"content"},cn={class:"content-container"},un={class:"main"},dn=m({__name:"VPDoc",setup(o){const{theme:e}=V(),t=ee(),{hasSidebar:s,hasAside:n,leftAside:i}=O(),l=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(d,v)=>{const b=R("Content");return a(),u("div",{class:I(["VPDoc",{"has-sidebar":r(s),"has-aside":r(n)}])},[c(d.$slots,"doc-top",{},void 0,!0),p("div",on,[r(n)?(a(),u("div",{key:0,class:I(["aside",{"left-aside":r(i)}])},[v[0]||(v[0]=p("div",{class:"aside-curtain"},null,-1)),p("div",an,[p("div",rn,[k(Dt,null,{"aside-top":f(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),p("div",ln,[p("div",cn,[c(d.$slots,"doc-before",{},void 0,!0),p("main",un,[k(b,{class:I(["vp-doc",[l.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(sn,null,{"doc-footer-before":f(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(d.$slots,"doc-after",{},void 0,!0)])])]),c(d.$slots,"doc-bottom",{},void 0,!0)],2)}}}),vn=$(dn,[["__scopeId","data-v-83890dd9"]]),pn=m({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.href&&Ve.test(e.href)),s=y(()=>e.tag||(e.href?"a":"button"));return(n,i)=>(a(),g(E(s.value),{class:I(["VPButton",[n.size,n.theme]]),href:n.href?r(me)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:f(()=>[z(w(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),fn=$(pn,[["__scopeId","data-v-906d7fb4"]]),hn=["src","alt"],mn=m({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const s=R("VPImage",!0);return e.image?(a(),u(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),u("img",G({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(ve)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,hn)):(a(),u(M,{key:1},[k(s,G({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),k(s,G({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),Q=$(mn,[["__scopeId","data-v-35a7d0b8"]]),_n={class:"container"},bn={class:"main"},kn={key:0,class:"name"},gn=["innerHTML"],$n=["innerHTML"],yn=["innerHTML"],Pn={key:0,class:"actions"},Sn={key:0,class:"image"},Ln={class:"image-container"},Vn=m({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=W("hero-image-slot-exists");return(t,s)=>(a(),u("div",{class:I(["VPHero",{"has-image":t.image||r(e)}])},[p("div",_n,[p("div",bn,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),u("h1",kn,[p("span",{innerHTML:t.name,class:"clip"},null,8,gn)])):h("",!0),t.text?(a(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,$n)):h("",!0),t.tagline?(a(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,yn)):h("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),u("div",Pn,[(a(!0),u(M,null,B(t.actions,n=>(a(),u("div",{key:n.link,class:"action"},[k(fn,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),u("div",Sn,[p("div",Ln,[s[0]||(s[0]=p("div",{class:"image-bg"},null,-1)),c(t.$slots,"home-hero-image",{},()=>[t.image?(a(),g(Q,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),Tn=$(Vn,[["__scopeId","data-v-955009fc"]]),Nn=m({__name:"VPHomeHero",setup(o){const{frontmatter:e}=V();return(t,s)=>r(e).hero?(a(),g(Tn,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),wn={class:"box"},In={key:0,class:"icon"},Mn=["innerHTML"],An=["innerHTML"],Cn=["innerHTML"],Bn={key:4,class:"link-text"},Hn={class:"link-text-value"},En=m({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(a(),g(D,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:f(()=>[p("article",wn,[typeof e.icon=="object"&&e.icon.wrap?(a(),u("div",In,[k(Q,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),g(Q,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Mn)):h("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,An),e.details?(a(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Cn)):h("",!0),e.linkText?(a(),u("div",Bn,[p("p",Hn,[z(w(e.linkText)+" ",1),t[0]||(t[0]=p("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Dn=$(En,[["__scopeId","data-v-f5e9645b"]]),Fn={key:0,class:"VPFeatures"},On={class:"container"},Un={class:"items"},Gn=m({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=y(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,n)=>s.features?(a(),u("div",Fn,[p("div",On,[p("div",Un,[(a(!0),u(M,null,B(s.features,i=>(a(),u("div",{key:i.title,class:I(["item",[t.value]])},[k(Dn,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),jn=$(Gn,[["__scopeId","data-v-d0a190d7"]]),zn=m({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=V();return(t,s)=>r(e).features?(a(),g(jn,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):h("",!0)}}),Kn=m({__name:"VPHomeContent",setup(o){const{width:e}=qe({initialWidth:0,includeScrollbar:!1});return(t,s)=>(a(),u("div",{class:"vp-doc container",style:Te(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),Rn=$(Kn,[["__scopeId","data-v-7a48a447"]]),qn={class:"VPHome"},Wn=m({__name:"VPHome",setup(o){const{frontmatter:e}=V();return(t,s)=>{const n=R("Content");return a(),u("div",qn,[c(t.$slots,"home-hero-before",{},void 0,!0),k(Nn,null,{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(t.$slots,"home-hero-after",{},void 0,!0),c(t.$slots,"home-features-before",{},void 0,!0),k(zn),c(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),g(Rn,{key:0},{default:f(()=>[k(n)]),_:1})):(a(),g(n,{key:1}))])}}}),Jn=$(Wn,[["__scopeId","data-v-cbb6ec48"]]),Yn={},Xn={class:"VPPage"};function Qn(o,e){const t=R("Content");return a(),u("div",Xn,[c(o.$slots,"page-top"),k(t),c(o.$slots,"page-bottom")])}const Zn=$(Yn,[["render",Qn]]),xn=m({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=V(),{hasSidebar:s}=O();return(n,i)=>(a(),u("div",{class:I(["VPContent",{"has-sidebar":r(s),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?c(n.$slots,"not-found",{key:0},()=>[k(mt)],!0):r(t).layout==="page"?(a(),g(Zn,{key:1},{"page-top":f(()=>[c(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),g(Jn,{key:2},{"home-hero-before":f(()=>[c(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),g(E(r(t).layout),{key:3})):(a(),g(vn,{key:4},{"doc-top":f(()=>[c(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":f(()=>[c(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":f(()=>[c(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":f(()=>[c(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":f(()=>[c(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),es=$(xn,[["__scopeId","data-v-91765379"]]),ts={class:"container"},ns=["innerHTML"],ss=["innerHTML"],os=m({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=O();return(n,i)=>r(e).footer&&r(t).footer!==!1?(a(),u("footer",{key:0,class:I(["VPFooter",{"has-sidebar":r(s)}])},[p("div",ts,[r(e).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,ns)):h("",!0),r(e).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,ss)):h("",!0)])],2)):h("",!0)}}),as=$(os,[["__scopeId","data-v-c970a860"]]);function rs(){const{theme:o,frontmatter:e}=V(),t=Le([]),s=y(()=>t.value.length>0);return x(()=>{t.value=_e(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:s}}const is={class:"menu-text"},ls={class:"header"},cs={class:"outline"},us=m({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=V(),s=T(!1),n=T(0),i=T(),l=T();function d(_){var P;(P=i.value)!=null&&P.contains(_.target)||(s.value=!1)}F(s,_=>{if(_){document.addEventListener("click",d);return}document.removeEventListener("click",d)}),ie("Escape",()=>{s.value=!1}),x(()=>{s.value=!1});function v(){s.value=!s.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function b(_){_.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Ne(()=>{s.value=!1}))}function L(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(_,P)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:Te({"--vp-vh":n.value+"px"}),ref_key:"main",ref:i},[_.headers.length>0?(a(),u("button",{key:0,onClick:v,class:I({open:s.value})},[p("span",is,w(r(Ce)(r(t))),1),P[0]||(P[0]=p("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(a(),u("button",{key:1,onClick:L},w(r(t).returnToTopLabel||"Return to top"),1)),k(de,{name:"flyout"},{default:f(()=>[s.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:b},[p("div",ls,[p("a",{class:"top-link",href:"#",onClick:L},w(r(t).returnToTopLabel||"Return to top"),1)]),p("div",cs,[k(Be,{headers:_.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),ds=$(us,[["__scopeId","data-v-bc9dc845"]]),vs={class:"container"},ps=["aria-expanded"],fs={class:"menu-text"},hs=m({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=O(),{headers:n}=rs(),{y:i}=we(),l=T(0);j(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{n.value=_e(t.value.outline??e.value.outline)});const d=y(()=>n.value.length===0),v=y(()=>d.value&&!s.value),b=y(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:d.value,fixed:v.value}));return(L,_)=>r(t).layout!=="home"&&(!v.value||r(i)>=l.value)?(a(),u("div",{key:0,class:I(b.value)},[p("div",vs,[r(s)?(a(),u("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:_[0]||(_[0]=P=>L.$emit("open-menu"))},[_[1]||(_[1]=p("span",{class:"vpi-align-left menu-icon"},null,-1)),p("span",fs,w(r(e).sidebarMenuLabel||"Menu"),1)],8,ps)):h("",!0),k(ds,{headers:r(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),ms=$(hs,[["__scopeId","data-v-070ab83d"]]);function _s(){const o=T(!1);function e(){o.value=!0,window.addEventListener("resize",n)}function t(){o.value=!1,window.removeEventListener("resize",n)}function s(){o.value?t():e()}function n(){window.outerWidth>=768&&t()}const i=ee();return F(()=>i.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:s}}const bs={},ks={class:"VPSwitch",type:"button",role:"switch"},gs={class:"check"},$s={key:0,class:"icon"};function ys(o,e){return a(),u("button",ks,[p("span",gs,[o.$slots.default?(a(),u("span",$s,[c(o.$slots,"default",{},void 0,!0)])):h("",!0)])])}const Ps=$(bs,[["render",ys],["__scopeId","data-v-4a1c76db"]]),Ss=m({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=V(),s=W("toggle-appearance",()=>{e.value=!e.value}),n=T("");return fe(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,l)=>(a(),g(Ps,{title:n.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(s)},{default:f(()=>l[0]||(l[0]=[p("span",{class:"vpi-sun sun"},null,-1),p("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),be=$(Ss,[["__scopeId","data-v-e40a8bb6"]]),Ls={key:0,class:"VPNavBarAppearance"},Vs=m({__name:"VPNavBarAppearance",setup(o){const{site:e}=V();return(t,s)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",Ls,[k(be)])):h("",!0)}}),Ts=$(Vs,[["__scopeId","data-v-af096f4a"]]),ke=T();let He=!1,ae=0;function Ns(o){const e=T(!1);if(te){!He&&ws(),ae++;const t=F(ke,s=>{var n,i,l;s===o.el.value||(n=o.el.value)!=null&&n.contains(s)?(e.value=!0,(i=o.onFocus)==null||i.call(o)):(e.value=!1,(l=o.onBlur)==null||l.call(o))});pe(()=>{t(),ae--,ae||Is()})}return We(e)}function ws(){document.addEventListener("focusin",Ee),He=!0,ke.value=document.activeElement}function Is(){document.removeEventListener("focusin",Ee)}function Ee(){ke.value=document.activeElement}const Ms={class:"VPMenuLink"},As=["innerHTML"],Cs=m({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=V();return(t,s)=>(a(),u("div",Ms,[k(D,{class:I({active:r(K)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,As)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),ne=$(Cs,[["__scopeId","data-v-acbfed09"]]),Bs={class:"VPMenuGroup"},Hs={key:0,class:"title"},Es=m({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),u("div",Bs,[e.text?(a(),u("p",Hs,w(e.text),1)):h("",!0),(a(!0),u(M,null,B(e.items,s=>(a(),u(M,null,["link"in s?(a(),g(ne,{key:0,item:s},null,8,["item"])):h("",!0)],64))),256))]))}}),Ds=$(Es,[["__scopeId","data-v-48c802d0"]]),Fs={class:"VPMenu"},Os={key:0,class:"items"},Us=m({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(a(),u("div",Fs,[e.items?(a(),u("div",Os,[(a(!0),u(M,null,B(e.items,s=>(a(),u(M,{key:JSON.stringify(s)},["link"in s?(a(),g(ne,{key:0,item:s},null,8,["item"])):"component"in s?(a(),g(E(s.component),G({key:1,ref_for:!0},s.props),null,16)):(a(),g(Ds,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):h("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),Gs=$(Us,[["__scopeId","data-v-7dd3104a"]]),js=["aria-expanded","aria-label"],zs={key:0,class:"text"},Ks=["innerHTML"],Rs={key:1,class:"vpi-more-horizontal icon"},qs={class:"menu"},Ws=m({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=T(!1),t=T();Ns({el:t,onBlur:s});function s(){e.value=!1}return(n,i)=>(a(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=l=>e.value=!0),onMouseleave:i[2]||(i[2]=l=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:i[0]||(i[0]=l=>e.value=!e.value)},[n.button||n.icon?(a(),u("span",zs,[n.icon?(a(),u("span",{key:0,class:I([n.icon,"option-icon"])},null,2)):h("",!0),n.button?(a(),u("span",{key:1,innerHTML:n.button},null,8,Ks)):h("",!0),i[3]||(i[3]=p("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(a(),u("span",Rs))],8,js),p("div",qs,[k(Gs,{items:n.items},{default:f(()=>[c(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ge=$(Ws,[["__scopeId","data-v-04f5c5e9"]]),Js=["href","aria-label","innerHTML"],Ys=m({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(s,n)=>(a(),u("a",{class:"VPSocialLink no-icon",href:s.link,"aria-label":s.ariaLabel??(typeof s.icon=="string"?s.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,Js))}}),Xs=$(Ys,[["__scopeId","data-v-717b8b75"]]),Qs={class:"VPSocialLinks"},Zs=m({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(a(),u("div",Qs,[(a(!0),u(M,null,B(e.links,({link:s,icon:n,ariaLabel:i})=>(a(),g(Xs,{key:s,icon:n,link:s,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),$e=$(Zs,[["__scopeId","data-v-ee7a9424"]]),xs={key:0,class:"group translations"},eo={class:"trans-title"},to={key:1,class:"group"},no={class:"item appearance"},so={class:"label"},oo={class:"appearance-action"},ao={key:2,class:"group"},ro={class:"item social-links"},io=m({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=V(),{localeLinks:s,currentLang:n}=Y({correspondingLink:!0}),i=y(()=>s.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(l,d)=>i.value?(a(),g(ge,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:f(()=>[r(s).length&&r(n).label?(a(),u("div",xs,[p("p",eo,w(r(n).label),1),(a(!0),u(M,null,B(r(s),v=>(a(),g(ne,{key:v.link,item:v},null,8,["item"]))),128))])):h("",!0),r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",to,[p("div",no,[p("p",so,w(r(t).darkModeSwitchLabel||"Appearance"),1),p("div",oo,[k(be)])])])):h("",!0),r(t).socialLinks?(a(),u("div",ao,[p("div",ro,[k($e,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),lo=$(io,[["__scopeId","data-v-925effce"]]),co=["aria-expanded"],uo=m({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(a(),u("button",{type:"button",class:I(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},t[1]||(t[1]=[p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)]),10,co))}}),vo=$(uo,[["__scopeId","data-v-5dea55bf"]]),po=["innerHTML"],fo=m({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=V();return(t,s)=>(a(),g(D,{class:I({VPNavBarMenuLink:!0,active:r(K)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,po)]),_:1},8,["class","href","target","rel","no-icon"]))}}),ho=$(fo,[["__scopeId","data-v-956ec74c"]]),mo=m({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=V(),s=i=>"component"in i?!1:"link"in i?K(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(s),n=y(()=>s(e.item));return(i,l)=>(a(),g(ge,{class:I({VPNavBarMenuGroup:!0,active:r(K)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||n.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),_o={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},bo=m({__name:"VPNavBarMenu",setup(o){const{theme:e}=V();return(t,s)=>r(e).nav?(a(),u("nav",_o,[s[0]||(s[0]=p("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(a(!0),u(M,null,B(r(e).nav,n=>(a(),u(M,{key:JSON.stringify(n)},["link"in n?(a(),g(ho,{key:0,item:n},null,8,["item"])):"component"in n?(a(),g(E(n.component),G({key:1,ref_for:!0},n.props),null,16)):(a(),g(mo,{key:2,item:n},null,8,["item"]))],64))),128))])):h("",!0)}}),ko=$(bo,[["__scopeId","data-v-e6d46098"]]);function go(o){const{localeIndex:e,theme:t}=V();function s(n){var A,C,N;const i=n.split("."),l=(A=t.value.search)==null?void 0:A.options,d=l&&typeof l=="object",v=d&&((N=(C=l.locales)==null?void 0:C[e.value])==null?void 0:N.translations)||null,b=d&&l.translations||null;let L=v,_=b,P=o;const S=i.pop();for(const H of i){let U=null;const q=P==null?void 0:P[H];q&&(U=P=q);const se=_==null?void 0:_[H];se&&(U=_=se);const oe=L==null?void 0:L[H];oe&&(U=L=oe),q||(P=U),se||(_=U),oe||(L=U)}return(L==null?void 0:L[S])??(_==null?void 0:_[S])??(P==null?void 0:P[S])??""}return s}const $o=["aria-label"],yo={class:"DocSearch-Button-Container"},Po={class:"DocSearch-Button-Placeholder"},ye=m({__name:"VPNavBarSearchButton",setup(o){const t=go({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,n)=>(a(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[p("span",yo,[n[0]||(n[0]=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),p("span",Po,w(r(t)("button.buttonText")),1)]),n[1]||(n[1]=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,$o))}}),So={class:"VPNavBarSearch"},Lo={id:"local-search"},Vo={key:1,id:"docsearch"},To=m({__name:"VPNavBarSearch",setup(o){const e=Je(()=>Ye(()=>import("./VPLocalSearchBox.DLMGng9W.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:s}=V(),n=T(!1),i=T(!1);j(()=>{});function l(){n.value||(n.value=!0,setTimeout(d,16))}function d(){const _=new Event("keydown");_.key="k",_.metaKey=!0,window.dispatchEvent(_),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||d()},16)}function v(_){const P=_.target,S=P.tagName;return P.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const b=T(!1);ie("k",_=>{(_.ctrlKey||_.metaKey)&&(_.preventDefault(),b.value=!0)}),ie("/",_=>{v(_)||(_.preventDefault(),b.value=!0)});const L="local";return(_,P)=>{var S;return a(),u("div",So,[r(L)==="local"?(a(),u(M,{key:0},[b.value?(a(),g(r(e),{key:0,onClose:P[0]||(P[0]=A=>b.value=!1)})):h("",!0),p("div",Lo,[k(ye,{onClick:P[1]||(P[1]=A=>b.value=!0)})])],64)):r(L)==="algolia"?(a(),u(M,{key:1},[n.value?(a(),g(r(t),{key:0,algolia:((S=r(s).search)==null?void 0:S.options)??r(s).algolia,onVnodeBeforeMount:P[2]||(P[2]=A=>i.value=!0)},null,8,["algolia"])):h("",!0),i.value?h("",!0):(a(),u("div",Vo,[k(ye,{onClick:l})]))],64)):h("",!0)])}}}),No=m({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=V();return(t,s)=>r(e).socialLinks?(a(),g($e,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),wo=$(No,[["__scopeId","data-v-164c457f"]]),Io=["href","rel","target"],Mo={key:1},Ao={key:2},Co=m({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=V(),{hasSidebar:s}=O(),{currentLang:n}=Y(),i=y(()=>{var v;return typeof t.value.logoLink=="string"?t.value.logoLink:(v=t.value.logoLink)==null?void 0:v.link}),l=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.rel}),d=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.target});return(v,b)=>(a(),u("div",{class:I(["VPNavBarTitle",{"has-sidebar":r(s)}])},[p("a",{class:"title",href:i.value??r(me)(r(n).link),rel:l.value,target:d.value},[c(v.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),g(Q,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):h("",!0),r(t).siteTitle?(a(),u("span",Mo,w(r(t).siteTitle),1)):r(t).siteTitle===void 0?(a(),u("span",Ao,w(r(e).title),1)):h("",!0),c(v.$slots,"nav-bar-title-after",{},void 0,!0)],8,Io)],2))}}),Bo=$(Co,[["__scopeId","data-v-28a961f9"]]),Ho={class:"items"},Eo={class:"title"},Do=m({__name:"VPNavBarTranslations",setup(o){const{theme:e}=V(),{localeLinks:t,currentLang:s}=Y({correspondingLink:!0});return(n,i)=>r(t).length&&r(s).label?(a(),g(ge,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:f(()=>[p("div",Ho,[p("p",Eo,w(r(s).label),1),(a(!0),u(M,null,B(r(t),l=>(a(),g(ne,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),Fo=$(Do,[["__scopeId","data-v-c80d9ad0"]]),Oo={class:"wrapper"},Uo={class:"container"},Go={class:"title"},jo={class:"content"},zo={class:"content-body"},Ko=m({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const e=o,{y:t}=we(),{hasSidebar:s}=O(),{frontmatter:n}=V(),i=T({});return fe(()=>{i.value={"has-sidebar":s.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,d)=>(a(),u("div",{class:I(["VPNavBar",i.value])},[p("div",Oo,[p("div",Uo,[p("div",Go,[k(Bo,null,{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",jo,[p("div",zo,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),k(To,{class:"search"}),k(ko,{class:"menu"}),k(Fo,{class:"translations"}),k(Ts,{class:"appearance"}),k(wo,{class:"social-links"}),k(lo,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),k(vo,{class:"hamburger",active:l.isScreenOpen,onClick:d[0]||(d[0]=v=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),d[1]||(d[1]=p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1))],2))}}),Ro=$(Ko,[["__scopeId","data-v-822684d1"]]),qo={key:0,class:"VPNavScreenAppearance"},Wo={class:"text"},Jo=m({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=V();return(s,n)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",qo,[p("p",Wo,w(r(t).darkModeSwitchLabel||"Appearance"),1),k(be)])):h("",!0)}}),Yo=$(Jo,[["__scopeId","data-v-ffb44008"]]),Xo=["innerHTML"],Qo=m({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=W("close-screen");return(t,s)=>(a(),g(D,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:r(e)},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Xo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Zo=$(Qo,[["__scopeId","data-v-735512b8"]]),xo=["innerHTML"],ea=m({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=W("close-screen");return(t,s)=>(a(),g(D,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:r(e)},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,xo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),De=$(ea,[["__scopeId","data-v-372ae7c0"]]),ta={class:"VPNavScreenMenuGroupSection"},na={key:0,class:"title"},sa=m({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),u("div",ta,[e.text?(a(),u("p",na,w(e.text),1)):h("",!0),(a(!0),u(M,null,B(e.items,s=>(a(),g(De,{key:s.text,item:s},null,8,["item"]))),128))]))}}),oa=$(sa,[["__scopeId","data-v-4b8941ac"]]),aa=["aria-controls","aria-expanded"],ra=["innerHTML"],ia=["id"],la={key:0,class:"item"},ca={key:1,class:"item"},ua={key:2,class:"group"},da=m({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=T(!1),s=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(i,l)=>(a(),u("div",{class:I(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:n},[p("span",{class:"button-text",innerHTML:i.text},null,8,ra),l[0]||(l[0]=p("span",{class:"vpi-plus button-icon"},null,-1))],8,aa),p("div",{id:s.value,class:"items"},[(a(!0),u(M,null,B(i.items,d=>(a(),u(M,{key:JSON.stringify(d)},["link"in d?(a(),u("div",la,[k(De,{item:d},null,8,["item"])])):"component"in d?(a(),u("div",ca,[(a(),g(E(d.component),G({ref_for:!0},d.props,{"screen-menu":""}),null,16))])):(a(),u("div",ua,[k(oa,{text:d.text,items:d.items},null,8,["text","items"])]))],64))),128))],8,ia)],2))}}),va=$(da,[["__scopeId","data-v-875057a5"]]),pa={key:0,class:"VPNavScreenMenu"},fa=m({__name:"VPNavScreenMenu",setup(o){const{theme:e}=V();return(t,s)=>r(e).nav?(a(),u("nav",pa,[(a(!0),u(M,null,B(r(e).nav,n=>(a(),u(M,{key:JSON.stringify(n)},["link"in n?(a(),g(Zo,{key:0,item:n},null,8,["item"])):"component"in n?(a(),g(E(n.component),G({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(a(),g(va,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),ha=m({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=V();return(t,s)=>r(e).socialLinks?(a(),g($e,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),ma={class:"list"},_a=m({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=Y({correspondingLink:!0}),s=T(!1);function n(){s.value=!s.value}return(i,l)=>r(e).length&&r(t).label?(a(),u("div",{key:0,class:I(["VPNavScreenTranslations",{open:s.value}])},[p("button",{class:"title",onClick:n},[l[0]||(l[0]=p("span",{class:"vpi-languages icon lang"},null,-1)),z(" "+w(r(t).label)+" ",1),l[1]||(l[1]=p("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),p("ul",ma,[(a(!0),u(M,null,B(r(e),d=>(a(),u("li",{key:d.link,class:"item"},[k(D,{class:"link",href:d.link},{default:f(()=>[z(w(d.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),ba=$(_a,[["__scopeId","data-v-362991c2"]]),ka={class:"container"},ga=m({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=T(null),t=Ie(te?document.body:null);return(s,n)=>(a(),g(de,{name:"fade",onEnter:n[0]||(n[0]=i=>t.value=!0),onAfterLeave:n[1]||(n[1]=i=>t.value=!1)},{default:f(()=>[s.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",ka,[c(s.$slots,"nav-screen-content-before",{},void 0,!0),k(fa,{class:"menu"}),k(ba,{class:"translations"}),k(Yo,{class:"appearance"}),k(ha,{class:"social-links"}),c(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),$a=$(ga,[["__scopeId","data-v-833aabba"]]),ya={key:0,class:"VPNav"},Pa=m({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=_s(),{frontmatter:n}=V(),i=y(()=>n.value.navbar!==!1);return he("close-screen",t),Z(()=>{te&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(l,d)=>i.value?(a(),u("header",ya,[k(Ro,{"is-screen-open":r(e),onToggleScreen:r(s)},{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k($a,{open:r(e)},{"nav-screen-content-before":f(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),Sa=$(Pa,[["__scopeId","data-v-f1e365da"]]),La=["role","tabindex"],Va={key:1,class:"items"},Ta=m({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:s,isLink:n,isActiveLink:i,hasActiveLink:l,hasChildren:d,toggle:v}=gt(y(()=>e.item)),b=y(()=>d.value?"section":"div"),L=y(()=>n.value?"a":"div"),_=y(()=>d.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=y(()=>n.value?void 0:"button"),S=y(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":n.value},{"is-active":i.value},{"has-active":l.value}]);function A(N){"key"in N&&N.key!=="Enter"||!e.item.link&&v()}function C(){e.item.link&&v()}return(N,H)=>{const U=R("VPSidebarItem",!0);return a(),g(E(b.value),{class:I(["VPSidebarItem",S.value])},{default:f(()=>[N.item.text?(a(),u("div",G({key:0,class:"item",role:P.value},Qe(N.item.items?{click:A,keydown:A}:{},!0),{tabindex:N.item.items&&0}),[H[1]||(H[1]=p("div",{class:"indicator"},null,-1)),N.item.link?(a(),g(D,{key:0,tag:L.value,class:"link",href:N.item.link,rel:N.item.rel,target:N.item.target},{default:f(()=>[(a(),g(E(_.value),{class:"text",innerHTML:N.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),g(E(_.value),{key:1,class:"text",innerHTML:N.item.text},null,8,["innerHTML"])),N.item.collapsed!=null&&N.item.items&&N.item.items.length?(a(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:Xe(C,["enter"]),tabindex:"0"},H[0]||(H[0]=[p("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):h("",!0)],16,La)):h("",!0),N.item.items&&N.item.items.length?(a(),u("div",Va,[N.depth<5?(a(!0),u(M,{key:0},B(N.item.items,q=>(a(),g(U,{key:q.text,item:q,depth:N.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),Na=$(Ta,[["__scopeId","data-v-196b2e5f"]]),wa=m({__name:"VPSidebarGroup",props:{items:{}},setup(o){const e=T(!0);let t=null;return j(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),Ze(()=>{t!=null&&(clearTimeout(t),t=null)}),(s,n)=>(a(!0),u(M,null,B(s.items,i=>(a(),u("div",{key:i.text,class:I(["group",{"no-transition":e.value}])},[k(Na,{item:i,depth:0},null,8,["item"])],2))),128))}}),Ia=$(wa,[["__scopeId","data-v-9e426adc"]]),Ma={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Aa=m({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=O(),s=o,n=T(null),i=Ie(te?document.body:null);F([s,n],()=>{var d;s.open?(i.value=!0,(d=n.value)==null||d.focus()):i.value=!1},{immediate:!0,flush:"post"});const l=T(0);return F(e,()=>{l.value+=1},{deep:!0}),(d,v)=>r(t)?(a(),u("aside",{key:0,class:I(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:n,onClick:v[0]||(v[0]=xe(()=>{},["stop"]))},[v[2]||(v[2]=p("div",{class:"curtain"},null,-1)),p("nav",Ma,[v[1]||(v[1]=p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),c(d.$slots,"sidebar-nav-before",{},void 0,!0),(a(),g(Ia,{items:r(e),key:l.value},null,8,["items"])),c(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),Ca=$(Aa,[["__scopeId","data-v-18756405"]]),Ba=m({__name:"VPSkipLink",setup(o){const e=ee(),t=T();F(()=>e.path,()=>t.value.focus());function s({target:n}){const i=document.getElementById(decodeURIComponent(n.hash).slice(1));if(i){const l=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",l)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",l),i.focus(),window.scrollTo(0,0)}}return(n,i)=>(a(),u(M,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}}),Ha=$(Ba,[["__scopeId","data-v-c3508ec8"]]),Ea=m({__name:"Layout",setup(o){const{isOpen:e,open:t,close:s}=O(),n=ee();F(()=>n.path,s),kt(e,s);const{frontmatter:i}=V(),l=Me(),d=y(()=>!!l["home-hero-image"]);return he("hero-image-slot-exists",d),(v,b)=>{const L=R("Content");return r(i).layout!==!1?(a(),u("div",{key:0,class:I(["Layout",r(i).pageClass])},[c(v.$slots,"layout-top",{},void 0,!0),k(Ha),k(rt,{class:"backdrop",show:r(e),onClick:r(s)},null,8,["show","onClick"]),k(Sa,null,{"nav-bar-title-before":f(()=>[c(v.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(v.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(v.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(v.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":f(()=>[c(v.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(v.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(ms,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),k(Ca,{open:r(e)},{"sidebar-nav-before":f(()=>[c(v.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":f(()=>[c(v.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(es,null,{"page-top":f(()=>[c(v.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(v.$slots,"page-bottom",{},void 0,!0)]),"not-found":f(()=>[c(v.$slots,"not-found",{},void 0,!0)]),"home-hero-before":f(()=>[c(v.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(v.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(v.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(v.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(v.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(v.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(v.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(v.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(v.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":f(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(v.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(v.$slots,"doc-after",{},void 0,!0)]),"doc-top":f(()=>[c(v.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(v.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":f(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(as),c(v.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),g(L,{key:1}))}}}),Da=$(Ea,[["__scopeId","data-v-a9a9e638"]]),Pe={Layout:Da,enhanceApp:({app:o})=>{o.component("Badge",st)}},Fa=o=>{if(typeof document>"u")return{stabilizeScrollPosition:n=>async(...i)=>n(...i)};const e=document.documentElement;return{stabilizeScrollPosition:s=>async(...n)=>{const i=s(...n),l=o.value;if(!l)return i;const d=l.offsetTop-e.scrollTop;return await Ne(),e.scrollTop=l.offsetTop-d,i}}},Fe="vitepress:tabSharedState",J=typeof localStorage<"u"?localStorage:null,Oe="vitepress:tabsSharedState",Oa=()=>{const o=J==null?void 0:J.getItem(Oe);if(o)try{return JSON.parse(o)}catch{}return{}},Ua=o=>{J&&J.setItem(Oe,JSON.stringify(o))},Ga=o=>{const e=et({});F(()=>e.content,(t,s)=>{t&&s&&Ua(t)},{deep:!0}),o.provide(Fe,e)},ja=(o,e)=>{const t=W(Fe);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");j(()=>{t.content||(t.content=Oa())});const s=T(),n=y({get(){var v;const l=e.value,d=o.value;if(l){const b=(v=t.content)==null?void 0:v[l];if(b&&d.includes(b))return b}else{const b=s.value;if(b)return b}return d[0]},set(l){const d=e.value;d?t.content&&(t.content[d]=l):s.value=l}});return{selected:n,select:l=>{n.value=l}}};let Se=0;const za=()=>(Se++,""+Se);function Ka(){const o=Me();return y(()=>{var s;const t=(s=o.default)==null?void 0:s.call(o);return t?t.filter(n=>typeof n.type=="object"&&"__name"in n.type&&n.type.__name==="PluginTabsTab"&&n.props).map(n=>{var i;return(i=n.props)==null?void 0:i.label}):[]})}const Ue="vitepress:tabSingleState",Ra=o=>{he(Ue,o)},qa=()=>{const o=W(Ue);if(!o)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return o},Wa={class:"plugin-tabs"},Ja=["id","aria-selected","aria-controls","tabindex","onClick"],Ya=m({__name:"PluginTabs",props:{sharedStateKey:{}},setup(o){const e=o,t=Ka(),{selected:s,select:n}=ja(t,tt(e,"sharedStateKey")),i=T(),{stabilizeScrollPosition:l}=Fa(i),d=l(n),v=T([]),b=_=>{var A;const P=t.value.indexOf(s.value);let S;_.key==="ArrowLeft"?S=P>=1?P-1:t.value.length-1:_.key==="ArrowRight"&&(S=P(a(),u("div",Wa,[p("div",{ref_key:"tablist",ref:i,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:b},[(a(!0),u(M,null,B(r(t),S=>(a(),u("button",{id:`tab-${S}-${r(L)}`,ref_for:!0,ref_key:"buttonRefs",ref:v,key:S,role:"tab",class:"plugin-tabs--tab","aria-selected":S===r(s),"aria-controls":`panel-${S}-${r(L)}`,tabindex:S===r(s)?0:-1,onClick:()=>r(d)(S)},w(S),9,Ja))),128))],544),c(_.$slots,"default")]))}}),Xa=["id","aria-labelledby"],Qa=m({__name:"PluginTabsTab",props:{label:{}},setup(o){const{uid:e,selected:t}=qa();return(s,n)=>r(t)===s.label?(a(),u("div",{key:0,id:`panel-${s.label}-${r(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${s.label}-${r(e)}`},[c(s.$slots,"default",{},void 0,!0)],8,Xa)):h("",!0)}}),Za=$(Qa,[["__scopeId","data-v-9b0d03d2"]]),xa=o=>{Ga(o),o.component("PluginTabs",Ya),o.component("PluginTabsTab",Za)},tr={extends:Pe,Layout(){return nt(Pe.Layout,null,{})},enhanceApp({app:o,router:e,siteData:t}){xa(o)}};export{tr as R,go as c,V as u}; diff --git a/dev/assets/diffractive.md.BCaBllA_.js b/dev/assets/diffractive.md.BDTFcpew.js similarity index 98% rename from dev/assets/diffractive.md.BCaBllA_.js rename to dev/assets/diffractive.md.BDTFcpew.js index eb22ac0..f384b08 100644 --- a/dev/assets/diffractive.md.BCaBllA_.js +++ b/dev/assets/diffractive.md.BDTFcpew.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a5 as n,o as t}from"./chunks/framework.DWm5V20y.js";const e="/ScatteringOptics.jl/dev/assets/qtrpceo.CBf3Exb6.png",l="/ScatteringOptics.jl/dev/assets/hbctzgw.nmzMopq_.png",h="/ScatteringOptics.jl/dev/assets/nkfxbiw.D1qHV6Xh.png",p="/ScatteringOptics.jl/dev/assets/qeigxlo.BgHzAqnC.png",k="/ScatteringOptics.jl/dev/assets/tkftghg.BIZLNxDz.png",r="/ScatteringOptics.jl/dev/assets/rpxsmle.DnNIoQj5.png",d="/ScatteringOptics.jl/dev/assets/hbctzgw.nmzMopq_.png",C=JSON.parse('{"title":"Simulate Diffractive Scattering","description":"","frontmatter":{},"headers":[],"relativePath":"diffractive.md","filePath":"diffractive.md","lastUpdated":null}'),g={name:"diffractive.md"};function E(o,s,c,y,m,F){return t(),a("div",null,s[0]||(s[0]=[n(`

Simulate Diffractive Scattering

ScatteringOptics.jl is designed as a package inside the ecosystem of Comrade.jl. The scattering model in the package can scatter any sky model types from Comrade.jl. This page describes how to simulate diffractive scattering.

Loading your image

Here, we use an example image in eht-imaging. Data can be downloaded from here (please open in a new window. otherwise you will get 404 error). This is a general relativistic magnetohydrodynamic (GRMHD) model of the magnetic arrestic disk originally from Dexter et al. 2014.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as t}from"./chunks/framework.DWm5V20y.js";const e="/ScatteringOptics.jl/dev/assets/jljsybn.CBf3Exb6.png",l="/ScatteringOptics.jl/dev/assets/ixsvlby.nmzMopq_.png",h="/ScatteringOptics.jl/dev/assets/nbazwhx.D1qHV6Xh.png",p="/ScatteringOptics.jl/dev/assets/wgnfqvj.BgHzAqnC.png",k="/ScatteringOptics.jl/dev/assets/faflkgk.BIZLNxDz.png",r="/ScatteringOptics.jl/dev/assets/rohozwu.DnNIoQj5.png",d="/ScatteringOptics.jl/dev/assets/ixsvlby.nmzMopq_.png",C=JSON.parse('{"title":"Simulate Diffractive Scattering","description":"","frontmatter":{},"headers":[],"relativePath":"diffractive.md","filePath":"diffractive.md","lastUpdated":null}'),g={name:"diffractive.md"};function E(o,s,c,y,m,F){return t(),a("div",null,s[0]||(s[0]=[n(`

Simulate Diffractive Scattering

ScatteringOptics.jl is designed as a package inside the ecosystem of Comrade.jl. The scattering model in the package can scatter any sky model types from Comrade.jl. This page describes how to simulate diffractive scattering.

Loading your image

Here, we use an example image in eht-imaging. Data can be downloaded from here (please open in a new window. otherwise you will get 404 error). This is a general relativistic magnetohydrodynamic (GRMHD) model of the magnetic arrestic disk originally from Dexter et al. 2014.

julia
using CairoMakie
 # This is the base package for the Skymodel of the Comrade.jl ecosystem
 using VLBISkyModels
 # Alternatively, you can import Comrade.jl instead. Either works.
diff --git a/dev/assets/diffractive.md.BCaBllA_.lean.js b/dev/assets/diffractive.md.BDTFcpew.lean.js
similarity index 98%
rename from dev/assets/diffractive.md.BCaBllA_.lean.js
rename to dev/assets/diffractive.md.BDTFcpew.lean.js
index eb22ac0..f384b08 100644
--- a/dev/assets/diffractive.md.BCaBllA_.lean.js
+++ b/dev/assets/diffractive.md.BDTFcpew.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as t}from"./chunks/framework.DWm5V20y.js";const e="/ScatteringOptics.jl/dev/assets/qtrpceo.CBf3Exb6.png",l="/ScatteringOptics.jl/dev/assets/hbctzgw.nmzMopq_.png",h="/ScatteringOptics.jl/dev/assets/nkfxbiw.D1qHV6Xh.png",p="/ScatteringOptics.jl/dev/assets/qeigxlo.BgHzAqnC.png",k="/ScatteringOptics.jl/dev/assets/tkftghg.BIZLNxDz.png",r="/ScatteringOptics.jl/dev/assets/rpxsmle.DnNIoQj5.png",d="/ScatteringOptics.jl/dev/assets/hbctzgw.nmzMopq_.png",C=JSON.parse('{"title":"Simulate Diffractive Scattering","description":"","frontmatter":{},"headers":[],"relativePath":"diffractive.md","filePath":"diffractive.md","lastUpdated":null}'),g={name:"diffractive.md"};function E(o,s,c,y,m,F){return t(),a("div",null,s[0]||(s[0]=[n(`

Simulate Diffractive Scattering

ScatteringOptics.jl is designed as a package inside the ecosystem of Comrade.jl. The scattering model in the package can scatter any sky model types from Comrade.jl. This page describes how to simulate diffractive scattering.

Loading your image

Here, we use an example image in eht-imaging. Data can be downloaded from here (please open in a new window. otherwise you will get 404 error). This is a general relativistic magnetohydrodynamic (GRMHD) model of the magnetic arrestic disk originally from Dexter et al. 2014.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as t}from"./chunks/framework.DWm5V20y.js";const e="/ScatteringOptics.jl/dev/assets/jljsybn.CBf3Exb6.png",l="/ScatteringOptics.jl/dev/assets/ixsvlby.nmzMopq_.png",h="/ScatteringOptics.jl/dev/assets/nbazwhx.D1qHV6Xh.png",p="/ScatteringOptics.jl/dev/assets/wgnfqvj.BgHzAqnC.png",k="/ScatteringOptics.jl/dev/assets/faflkgk.BIZLNxDz.png",r="/ScatteringOptics.jl/dev/assets/rohozwu.DnNIoQj5.png",d="/ScatteringOptics.jl/dev/assets/ixsvlby.nmzMopq_.png",C=JSON.parse('{"title":"Simulate Diffractive Scattering","description":"","frontmatter":{},"headers":[],"relativePath":"diffractive.md","filePath":"diffractive.md","lastUpdated":null}'),g={name:"diffractive.md"};function E(o,s,c,y,m,F){return t(),a("div",null,s[0]||(s[0]=[n(`

Simulate Diffractive Scattering

ScatteringOptics.jl is designed as a package inside the ecosystem of Comrade.jl. The scattering model in the package can scatter any sky model types from Comrade.jl. This page describes how to simulate diffractive scattering.

Loading your image

Here, we use an example image in eht-imaging. Data can be downloaded from here (please open in a new window. otherwise you will get 404 error). This is a general relativistic magnetohydrodynamic (GRMHD) model of the magnetic arrestic disk originally from Dexter et al. 2014.

julia
using CairoMakie
 # This is the base package for the Skymodel of the Comrade.jl ecosystem
 using VLBISkyModels
 # Alternatively, you can import Comrade.jl instead. Either works.
diff --git a/dev/assets/tkftghg.BIZLNxDz.png b/dev/assets/faflkgk.BIZLNxDz.png
similarity index 100%
rename from dev/assets/tkftghg.BIZLNxDz.png
rename to dev/assets/faflkgk.BIZLNxDz.png
diff --git a/dev/assets/guhsokj.Dv3vV_tZ.png b/dev/assets/guhsokj.Dv3vV_tZ.png
new file mode 100644
index 0000000..c91d0ce
Binary files /dev/null and b/dev/assets/guhsokj.Dv3vV_tZ.png differ
diff --git a/dev/assets/hbctzgw.nmzMopq_.png b/dev/assets/ixsvlby.nmzMopq_.png
similarity index 100%
rename from dev/assets/hbctzgw.nmzMopq_.png
rename to dev/assets/ixsvlby.nmzMopq_.png
diff --git a/dev/assets/qtrpceo.CBf3Exb6.png b/dev/assets/jljsybn.CBf3Exb6.png
similarity index 100%
rename from dev/assets/qtrpceo.CBf3Exb6.png
rename to dev/assets/jljsybn.CBf3Exb6.png
diff --git a/dev/assets/nkfxbiw.D1qHV6Xh.png b/dev/assets/nbazwhx.D1qHV6Xh.png
similarity index 100%
rename from dev/assets/nkfxbiw.D1qHV6Xh.png
rename to dev/assets/nbazwhx.D1qHV6Xh.png
diff --git a/dev/assets/refractive.md.CU5pYmoX.js b/dev/assets/refractive.md.B9zJgs9U.js
similarity index 97%
rename from dev/assets/refractive.md.CU5pYmoX.js
rename to dev/assets/refractive.md.B9zJgs9U.js
index ea78f16..8098b0b 100644
--- a/dev/assets/refractive.md.CU5pYmoX.js
+++ b/dev/assets/refractive.md.B9zJgs9U.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as e,o as n}from"./chunks/framework.DWm5V20y.js";const t="/ScatteringOptics.jl/dev/assets/qtrpceo.CBf3Exb6.png",l="/ScatteringOptics.jl/dev/assets/vfyzhlw.aRz6IJZC.png",p="/ScatteringOptics.jl/dev/assets/uahwciw.DSo8rPNw.png",h="/ScatteringOptics.jl/dev/assets/nkfxbiw.D1qHV6Xh.png",k="/ScatteringOptics.jl/dev/assets/yqornxm.BkV5HaG4.png",u=JSON.parse('{"title":"Simulate Refractive Scattering","description":"","frontmatter":{},"headers":[],"relativePath":"refractive.md","filePath":"refractive.md","lastUpdated":null}'),r={name:"refractive.md"};function d(g,s,c,o,E,m){return n(),a("div",null,s[0]||(s[0]=[e(`

Simulate Refractive Scattering

Another feature of ScatteringOptics.jl is simulating refractive scattering. This page gives a tutorial to simulate refractive scattering effects.

Loading your image

Again, we use an example image in eht-imaging. Data can be downloaded from here (please open in a new window. otherwise you will get 404 error). This is a general relativistic magnetohydrodynamic (GRMHD) model of the magnetic arrestic disk originally from Dexter et al. 2020.

julia
using CairoMakie
+import{_ as i,c as a,a5 as e,o as n}from"./chunks/framework.DWm5V20y.js";const t="/ScatteringOptics.jl/dev/assets/jljsybn.CBf3Exb6.png",l="/ScatteringOptics.jl/dev/assets/xxdpzgk.B63nhlJr.png",p="/ScatteringOptics.jl/dev/assets/byymtnw.2kdQq-u9.png",h="/ScatteringOptics.jl/dev/assets/nbazwhx.D1qHV6Xh.png",k="/ScatteringOptics.jl/dev/assets/guhsokj.Dv3vV_tZ.png",u=JSON.parse('{"title":"Simulate Refractive Scattering","description":"","frontmatter":{},"headers":[],"relativePath":"refractive.md","filePath":"refractive.md","lastUpdated":null}'),r={name:"refractive.md"};function d(g,s,c,o,E,m){return n(),a("div",null,s[0]||(s[0]=[e(`

Simulate Refractive Scattering

Another feature of ScatteringOptics.jl is simulating refractive scattering. This page gives a tutorial to simulate refractive scattering effects.

Loading your image

Again, we use an example image in eht-imaging. Data can be downloaded from here (please open in a new window. otherwise you will get 404 error). This is a general relativistic magnetohydrodynamic (GRMHD) model of the magnetic arrestic disk originally from Dexter et al. 2014.

julia
using CairoMakie
 # This is the base package for the Skymodel of the Comrade.jl ecosystem
 using VLBISkyModels
 # Alternatively, you can import Comrade.jl instead. Either works.
diff --git a/dev/assets/refractive.md.CU5pYmoX.lean.js b/dev/assets/refractive.md.B9zJgs9U.lean.js
similarity index 97%
rename from dev/assets/refractive.md.CU5pYmoX.lean.js
rename to dev/assets/refractive.md.B9zJgs9U.lean.js
index ea78f16..8098b0b 100644
--- a/dev/assets/refractive.md.CU5pYmoX.lean.js
+++ b/dev/assets/refractive.md.B9zJgs9U.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as e,o as n}from"./chunks/framework.DWm5V20y.js";const t="/ScatteringOptics.jl/dev/assets/qtrpceo.CBf3Exb6.png",l="/ScatteringOptics.jl/dev/assets/vfyzhlw.aRz6IJZC.png",p="/ScatteringOptics.jl/dev/assets/uahwciw.DSo8rPNw.png",h="/ScatteringOptics.jl/dev/assets/nkfxbiw.D1qHV6Xh.png",k="/ScatteringOptics.jl/dev/assets/yqornxm.BkV5HaG4.png",u=JSON.parse('{"title":"Simulate Refractive Scattering","description":"","frontmatter":{},"headers":[],"relativePath":"refractive.md","filePath":"refractive.md","lastUpdated":null}'),r={name:"refractive.md"};function d(g,s,c,o,E,m){return n(),a("div",null,s[0]||(s[0]=[e(`

Simulate Refractive Scattering

Another feature of ScatteringOptics.jl is simulating refractive scattering. This page gives a tutorial to simulate refractive scattering effects.

Loading your image

Again, we use an example image in eht-imaging. Data can be downloaded from here (please open in a new window. otherwise you will get 404 error). This is a general relativistic magnetohydrodynamic (GRMHD) model of the magnetic arrestic disk originally from Dexter et al. 2020.

julia
using CairoMakie
+import{_ as i,c as a,a5 as e,o as n}from"./chunks/framework.DWm5V20y.js";const t="/ScatteringOptics.jl/dev/assets/jljsybn.CBf3Exb6.png",l="/ScatteringOptics.jl/dev/assets/xxdpzgk.B63nhlJr.png",p="/ScatteringOptics.jl/dev/assets/byymtnw.2kdQq-u9.png",h="/ScatteringOptics.jl/dev/assets/nbazwhx.D1qHV6Xh.png",k="/ScatteringOptics.jl/dev/assets/guhsokj.Dv3vV_tZ.png",u=JSON.parse('{"title":"Simulate Refractive Scattering","description":"","frontmatter":{},"headers":[],"relativePath":"refractive.md","filePath":"refractive.md","lastUpdated":null}'),r={name:"refractive.md"};function d(g,s,c,o,E,m){return n(),a("div",null,s[0]||(s[0]=[e(`

Simulate Refractive Scattering

Another feature of ScatteringOptics.jl is simulating refractive scattering. This page gives a tutorial to simulate refractive scattering effects.

Loading your image

Again, we use an example image in eht-imaging. Data can be downloaded from here (please open in a new window. otherwise you will get 404 error). This is a general relativistic magnetohydrodynamic (GRMHD) model of the magnetic arrestic disk originally from Dexter et al. 2014.

julia
using CairoMakie
 # This is the base package for the Skymodel of the Comrade.jl ecosystem
 using VLBISkyModels
 # Alternatively, you can import Comrade.jl instead. Either works.
diff --git a/dev/assets/rpxsmle.DnNIoQj5.png b/dev/assets/rohozwu.DnNIoQj5.png
similarity index 100%
rename from dev/assets/rpxsmle.DnNIoQj5.png
rename to dev/assets/rohozwu.DnNIoQj5.png
diff --git a/dev/assets/uahwciw.DSo8rPNw.png b/dev/assets/uahwciw.DSo8rPNw.png
deleted file mode 100644
index a7d694f..0000000
Binary files a/dev/assets/uahwciw.DSo8rPNw.png and /dev/null differ
diff --git a/dev/assets/vfyzhlw.aRz6IJZC.png b/dev/assets/vfyzhlw.aRz6IJZC.png
deleted file mode 100644
index f23c130..0000000
Binary files a/dev/assets/vfyzhlw.aRz6IJZC.png and /dev/null differ
diff --git a/dev/assets/qeigxlo.BgHzAqnC.png b/dev/assets/wgnfqvj.BgHzAqnC.png
similarity index 100%
rename from dev/assets/qeigxlo.BgHzAqnC.png
rename to dev/assets/wgnfqvj.BgHzAqnC.png
diff --git a/dev/assets/xxdpzgk.B63nhlJr.png b/dev/assets/xxdpzgk.B63nhlJr.png
new file mode 100644
index 0000000..32b7e9b
Binary files /dev/null and b/dev/assets/xxdpzgk.B63nhlJr.png differ
diff --git a/dev/assets/yqornxm.BkV5HaG4.png b/dev/assets/yqornxm.BkV5HaG4.png
deleted file mode 100644
index 5410cca..0000000
Binary files a/dev/assets/yqornxm.BkV5HaG4.png and /dev/null differ
diff --git a/dev/benchmarks.html b/dev/benchmarks.html
index 1bb9552..5294fbe 100644
--- a/dev/benchmarks.html
+++ b/dev/benchmarks.html
@@ -8,9 +8,9 @@
     
     
     
-    
+    
     
-    
+    
     
     
     
@@ -18,7 +18,7 @@
   
   
     
Skip to content

Benchmarks

The Julia implementation of the EHT scattering framework takes advantage of Julia's fast Auto-Differentiation (AD) capabilities, which accelerate the simulation of interstellar scattering. As the overall imaging process can consist of thousands to tens of thousands of iterations in order to optimize scattering parameters and the final output image, even a small imprdovements in simulation speed can result in significant cuts in runtime. It is then crucial that our implementation performs faster than the existing python framework, eht-imaging, and produces consistent results. Here, we present benchmarks between the two implementations.

Speed

With Julia's speed improvements, the ScatteringOptics.jl scattering kernel loads 100 times faster than the eht-imaging kernel. The scattering kernel may be called upon to compute visibilities for a given sample of Fourier space points. In these computations, ScatteringOptics.jl also exhibits speed improvements up to 100 times over the three included models (Dipole, Boxcar, and Von Mises; see Use Non-default Models for more info) and varying observing wavelengths. These computation runtimes are compared over a range of sample in the plots below.

With this significant speed up, the Julia implementation paves the pathway for the joint modeling of scattering parameters and reconstructed images in self-consistent way.

Consistency

Our scattering kernel produces visibilities that are consistent with those computed by eht-imaging across all 3 kernel models as well as the range of standard observing wavelengths in radio astronomy. Below, we demonstrate this by plotting the Dipole kernel over the Fourier space major and minor axis for both the Julia and Python implementations in one plot per observing wavelength. The lines completely overlap, indicating complete consistency in results. All fractional errors between the two implementations range on the order of 106 and 107, which is well under scattering kernel uncertainty limits.

- + \ No newline at end of file diff --git a/dev/custommodels.html b/dev/custommodels.html index 2fe4296..a2c5276 100644 --- a/dev/custommodels.html +++ b/dev/custommodels.html @@ -8,9 +8,9 @@ - + - + @@ -111,7 +111,7 @@ # Simplified version using precomputed values. # THIS DEPENDS ON YOUR FIELD WANDER MODEL (sm::YourScatteringModel, ϕ)=(YourScatteringModel, ϕ, sm.α, sm.ϕ0, sm.kζ, ...)

For the actual examples, please have a look at the source codes of the three models, which are currently in src/scatteringmodels/models. calc_xxxx functions are all defined in src/scatteringmodels/commonfunctions.jl. Most of the parameters are denoted following Psaltis et al. [1]. This package implements equations connecting the standardized parameters to various precomputed parameters using equations in the eht-imaging library based on [2-4].

Once you define your scattering model, you can simply use your model by

julia
sm = YourScatteringModel()

The field wander model often involves a concentration parameter (denoted as kζ in Psaltis et al. [1]). This package offers an abstract type AbstractKzetaFinder to numerically solve kζ from the given scattering parameters. You can see actual examples for three models in src/kzetafinders along with the definition of the abstract type.

You should be able to use all of functions in tutorials with your own model. Enjoy!

References

[1] Psaltis, D., et al., 2018, arXiv e-prints, arXiv:1805.01242, DOI: 10.48550/arXiv.1805.01242 (ADS)

[2] Johnson, M. D., Narayan, R., 2016, The Astrophysical Journal, 826, 170, DOI: 10.3847/0004-637X/826/2/170 (ADS)

[3] Johnson, M. D., 2016, The Astrophysical Journal, 833, 74, DOI: 10.3847/1538-4357/833/1/74 (ADS)

[4] Johnson, M. D., et al., 2018, The Astrophysical Journal, 865, 104, DOI: 10.3847/1538-4357/aadcff (ADS)

- + \ No newline at end of file diff --git a/dev/data/im_a.fits b/dev/data/im_a.fits index cff6051..acb6de5 100644 Binary files a/dev/data/im_a.fits and b/dev/data/im_a.fits differ diff --git a/dev/data/im_ga.fits b/dev/data/im_ga.fits index 0a1791c..96f6cb7 100644 Binary files a/dev/data/im_ga.fits and b/dev/data/im_ga.fits differ diff --git a/dev/data/kernel.h5 b/dev/data/kernel.h5 index e609b5a..248db45 100644 Binary files a/dev/data/kernel.h5 and b/dev/data/kernel.h5 differ diff --git a/dev/diffractive.html b/dev/diffractive.html index fc04442..d8f0b87 100644 --- a/dev/diffractive.html +++ b/dev/diffractive.html @@ -8,11 +8,11 @@ - + - + - + @@ -27,7 +27,7 @@ im = load_fits("data/jason_mad_eofn.fits", IntensityMap) # Plot source image -imageviz(im, size=(600, 500), colormap=:afmhot)

You can instantiate your scattering model with ScatteringModel(). If nothing is specified, the model will use the best-fit parameter set for Sgr A* in Johnson et al. 2018.

julia
using ScatteringOptics
+imageviz(im, size=(600, 500), colormap=:afmhot)

You can instantiate your scattering model with ScatteringModel(). If nothing is specified, the model will use the best-fit parameter set for Sgr A* in Johnson et al. 2018.

julia
using ScatteringOptics
 
 # initialize the scattering model
 sm = ScatteringModel()
DipoleScatteringModel{Float64}(1.38, 8.0e7, 1.38, 0.703, 81.9, 1.0, 8.701673999999999e21, 1.7063921e22, 0.5099457504520795, 0.5879203321591805, 1.9630156472261735, 3.8933699749663195, 10.476370590888147, 3.5025254191248507, 4.04238102210397e19, 5.8567426819253905, 4.650020392426908, 1.2067222894984828, 0.14137166941154058, 27.969627943900058, 0.24094564298608265, 16.43371800974761, 0.10641979388314901, 0.5127694683107693)

You can change the parameters if you want to simulate a different scattering screen. See ScatteringOptics.DipoleScatteringModel for arguments.

Simulate diffractive scattering

As explained in Brief Introduction to Interstellar Scattering, diffractive scattering will cause angular broaderning of the resultant image, which is described by the convolution of the source image with a scattering kernel. ScatteringOptics.jl implements a Comrade.jl's skymodel of the scattering kernel. You can generate it by

julia
# Frequency of the image
@@ -39,20 +39,20 @@
 im_ea = convolve(im, skm)
 
 # Plot source image
-imageviz(im_ea, size=(600, 500), colormap=:afmhot)

You can also directly convolve a skymodel from ComradeBase.AbstractModel and implemented in VLBISkyModels.jl.

julia
# Gaussian model from VLBISkyModels.jl
+imageviz(im_ea, size=(600, 500), colormap=:afmhot)

You can also directly convolve a skymodel from ComradeBase.AbstractModel and implemented in VLBISkyModels.jl.

julia
# Gaussian model from VLBISkyModels.jl
 g = stretched(Gaussian(), μas2rad(5.0), μas2rad(5.0))
 im_g = intensitymap(g, imagepixels(μas2rad(200.0), μas2rad(200.0), 256, 256))
 
 # Plot source image
-imageviz(im_g, size=(600, 500), colormap=:afmhot)

Scattered model and image can be generated by,

julia
g_ea = convolved(g, skm)
+imageviz(im_g, size=(600, 500), colormap=:afmhot)

Scattered model and image can be generated by,

julia
g_ea = convolved(g, skm)
 im_gea = intensitymap(g_ea, imagepixels(μas2rad(200.0), μas2rad(200.0), 256, 256))
 
 # Plot source image
-imageviz(im_gea, size=(600, 500), colormap=:afmhot)

You can also plot the scattering kernel. For instance in the image domain,

julia
# make an image model of the scattering kernel
+imageviz(im_gea, size=(600, 500), colormap=:afmhot)

You can also plot the scattering kernel. For instance in the image domain,

julia
# make an image model of the scattering kernel
 im_skm = intensitymap(skm, imagepixels(μas2rad(50.0), μas2rad(50.0), 256, 256))
 
 # Plot source image
-imageviz(im_skm, size=(600, 500), colormap=:afmhot)

You can compute the kernel visibility using visibility_point method from VLBISkyModels.jl. For instance,

julia
# computing kernels from 0 to 10 Glambda along RA
+imageviz(im_skm, size=(600, 500), colormap=:afmhot)

You can compute the kernel visibility using visibility_point method from VLBISkyModels.jl. For instance,

julia
# computing kernels from 0 to 10 Glambda along RA
 u = LinRange(0,10e9,1000)
 vis = [visibility_point(skm, (U=u, V=0, Fr=νref)) for u=u]
 
@@ -63,11 +63,11 @@
     ylabel="Kernel Amplitudes",
 )
 plot!(ax, u/1e9, abs.(vis))
-f

A quick shortcut

The above tutorial is intentionally written in a low level. There is ensembleaverage method to do a quick shortcut by bypassing the kernel generation.

julia
# scatter the image
+f

A quick shortcut

The above tutorial is intentionally written in a low level. There is ensembleaverage method to do a quick shortcut by bypassing the kernel generation.

julia
# scatter the image
 im_ea_2 = ensembleaverage(sm, im)
 
 # Plot source image
-imageviz(im_ea_2, size=(600, 500), colormap=:afmhot)

Although this is handy, it may have an extra overhead to initialize skm which may slow down highly iterative processes. ensembleaverage method also supports more general skymodels in ComradeBase.AbstractModel as an input instead of the image model.

Save the tutorial data

The output images may be saved to fits files. Here, we save the images generated in the tutorial above.

julia
# Ensemble average image of provided EHT fits file
+imageviz(im_ea_2, size=(600, 500), colormap=:afmhot)

Although this is handy, it may have an extra overhead to initialize skm which may slow down highly iterative processes. ensembleaverage method also supports more general skymodels in ComradeBase.AbstractModel as an input instead of the image model.

Save the tutorial data

The output images may be saved to fits files. Here, we save the images generated in the tutorial above.

julia
# Ensemble average image of provided EHT fits file
 save_fits("data/im_ea.fits", im_ea)
 # Gaussian model and its scattered ensemble average image
 save_fits("data/im_g.fits", im_g)
@@ -100,7 +100,7 @@
  0.11338173115469348 + 0.0im
  0.11301652366950847 + 0.0im
  0.11265234631500975 + 0.0im

You can find the generated file from here (please open in a new window. otherwise you will get 404 error).

- + \ No newline at end of file diff --git a/dev/hashmap.json b/dev/hashmap.json index 09c8e8f..de292a3 100644 --- a/dev/hashmap.json +++ b/dev/hashmap.json @@ -1 +1 @@ -{"api.md":"BZ9O_dq1","benchmarks.md":"xHWXQ9Xw","custommodels.md":"DkTQ6jhW","diffractive.md":"BCaBllA_","index.md":"gZY7nmo-","introduction.md":"CVK2JXBz","math.md":"CVbAuA48","nondefaultmodels.md":"DW0yXo4K","refractive.md":"CU5pYmoX"} +{"api.md":"BNWtEMfY","benchmarks.md":"xHWXQ9Xw","custommodels.md":"DkTQ6jhW","diffractive.md":"BDTFcpew","index.md":"gZY7nmo-","introduction.md":"CVK2JXBz","math.md":"CVbAuA48","nondefaultmodels.md":"DW0yXo4K","refractive.md":"B9zJgs9U"} diff --git a/dev/index.html b/dev/index.html index dc42b11..4ca6e0e 100644 --- a/dev/index.html +++ b/dev/index.html @@ -8,9 +8,9 @@ - + - + @@ -18,7 +18,7 @@ - + \ No newline at end of file diff --git a/dev/introduction.html b/dev/introduction.html index 66f2ba5..9f1bbb8 100644 --- a/dev/introduction.html +++ b/dev/introduction.html @@ -8,9 +8,9 @@ - + - + @@ -19,7 +19,7 @@
Skip to content

Introduction

ScatteringOptics.jl is an astronomy software package developed in the Julia programming language for interstellar scintillation observed at radio wavelengths. It implements physical models for the anisotropic scattering of radio waves, which arise from turbulence in the ionized interstellar medium.

This toolkit is aiming to provide capabilities of simulating and modeling the temporal, spatial, and spectral effects of interstellar scintillation primarily in the strong scattering regime, taking advantage of Julia's speed and composability. The package is designed to work with sky models and interferometric data types from the advanced Bayesian radio interferometric modeling package Comrade.jl.

The package provides essential functionalities for modeling, analyzing, and interpreting the images of the Galactic Center's supermassive black hole, Sagittarius A*, especially with the Event Horizon Telescope, and also the images of extremely high brightness temperature emissions in active galactic nuclei using space very long baseline interferometry.

What are interstellar scattering and scintillation? Why are they important?

Scintillation is a well-known phenomenon in astronomy. Stars appear to twinkle in visible light due to the scattering of their light by the Earth's atmosphere. In radio wavelengths, fluctuations in the electron density of the ionized interstellar plasma cause scattering of radio waves, resulting in the scintillation of compact radio sources in the sky. These phenomena are referred to as interstellar scattering and scintillation, respectively. Interstellar scintillation produces temporal and spectral modulations (i.e., twinkling) in the brightness of objects, as well as distortion of their images.

Scattering has become increasingly important in high-angular-resolution studies of compact radio sources at micro-arcsecond scales using very long baseline interferometry (VLBI). Notable examples include the black hole imaging of the supermassive black hole, Sagittarius A* (Sgr A*), at the center of the Milky Way with the Event Horizon Telescope, and studies of extremely high brightness temperature emissions in active galactic nuclei (AGNs) using space VLBI, exemplified by projects like RadioAstron. In both scenarios, the observed interferometric data are influenced by both diffractive and refractive scattering effects.

For a more detailed description of the scattering models implemented in this package, see Brief Introduction to Interstellar Scattering.

Installation

The package is registered in the Julia standard repository, and installable through the standard ways by

julia
using Pkg
 Pkg.add("ScatteringOptics")

or

julia
]add ScatteringOptics
- + \ No newline at end of file diff --git a/dev/math.html b/dev/math.html index bb389d3..c49b38f 100644 --- a/dev/math.html +++ b/dev/math.html @@ -8,9 +8,9 @@ - + - + @@ -18,7 +18,7 @@
Skip to content

Brief Introduction to Interstellar Scattering

ScatteringOptics.jl implements a single thin-screen interstellar scattering model based on a fast yet accurate semi-analytic framework developed by Johnson & Narayan (2016) [1], and further extended in subsequent works [2-4].

Scattering Regimes in Scope

The model implemented in ScatteringOptics.jl simulates both diffractive and refractive scattering in the average and ensemble-average regimes. Below is a brief introduction to each scattering regime and their corresponding averaging regimes.

Interstellar scattering observed in radio wavelengths occurs in the strong scattering limit, where scattering effects are dominated by phase fluctuations on two distinct scales: diffractive and refractive [5, 6].

  • Diffractive scattering arises from small-scale fluctuations, typically on scales smaller than microarcseconds. Diffractive effects are quenched for the vast majority of known sources in the sky and are typically only observed in extremely compact objects, such as pulsars and fast radio bursts (FRBs). Diffractive scintillation has a coherence timescale of seconds to minutes, and is often time-averaged during most astronomical observations (except for pulsars and FRBs). As a result, diffractive scattering typically manifests as angular broadening of the source image.

  • Refractive scattering arises from larger-scale fluctuations, typically on scales of micro to milliarcseconds, depending on the sky location and observing frequency. Refractive scintillation has a coherence timescale ranging from days to months. Refractive effects are quenched for sources with angular sizes larger than these scales. Consequently, refractive scattering is present in many compact objects, such as active galactic nuclei (AGNs). Refractive scattering introduces refractive substructures into the observed angular-broadened image.

In the late 1980s, Ramesh Narayan and Jeremy J. Goodman [7, 8] identified three distinct averaging regimes for images in the strong-scattering limit:

  • The snapshot regime occurs when the measurement timescale is shorter than the coherence time of the diffractive scattering. In this regime, measurements exhibit both diffractive and refractive scintillation. This regime is not handled by the package.

  • The average regime occurs when the measurement timescale is much longer than the coherence time of the diffractive scattering but shorter than the refractive scintillation (typically days to months). In this regime, diffractive scintillation is well-averaged over time and quenched, leaving only refractive scintillation in the measurements. Most radio astronomical observations of scattered objects occur in this regime.

  • The ensemble-average regime occurs when the measurement timescale exceeds the refractive scintillation timescale. In this regime, the measurements reflect a complete average over the scattering ensemble, and the scattering effects become deterministic. For example, the scattered image is well described by blurring (or angular broadening) through the convolution of the unscattered image with a scattering kernel.

Scattering Model

In many cases, the properties of interstellar scattering can be effectively described by a single, thin phase-changing screen, denoted as ϕ(r), where r represents the two-dimensional coordinate vector on the phase screen [5, 6]. The statistical characteristics of the scattering are captured by the spatial structure function Dϕ(r), which describes the second-order changes in phase, ϕ(r), between two radio waves separated by a transverse distance r as they pass through the screen [e.g., 1].

Dϕ(r)=[ϕ(r0+r)ϕ(r0)]2

In the average or ensemble-average regimes, diffractive scattering leads to the angular broadening of the source image, referred to as the "ensemble-average" image. The diffractively scattered (i.e., ensemble-average) image, Iea(r), is mathematically expressed as the convolution of the source image Isrc(r) with a blurring scattering kernel, G(r).

Iea(r)=Isrc(r)G(r).

While the previous equation is defined in image space, ScatteringOptics.jl performs scattering in Fourier space, where the kernel can be described analytically. In radio interferometry, each set of measurements—called visibilities (Vobs(b)) obtained by a pair of antennas at different times and frequency segments, samples a Fourier component of the sky image Isky(r):

Vobs(b)=Isky(r)exp(2πrbDλ)dr,

where D is the Earth-screen distance and λ is the observing wavelength.

Using this measurement equation, the source visibilities, Vsrc(b), are related to the diffractively scattered (i.e., ensemble-average) visibilities, Vea(b), by the following relation:

Vea(b)=Vsrc(b)exp[12Dϕ(b1+M)],

in which b represents the baseline vector between observing stations. The magnification, M=D/R, is the ratio of the Earth-screen distance, D, to the screen-source distance, R. Since the Fourier transform of Isrc(r)G(r) is given by Vsrc(r)F[G(r)], you can see that the second exponential term corresponds to the Fourier coefficient of the convolving scattering kernel G(r).

The convolving kernel responsible for the angular broadening is described by the spatial structure function of the phase screen, Dϕ(r), which is based on a probabilistic model of the phase screen, ϕ(r). In general, Dϕ(r) is chromatic, meaning it depends on the observing frequency (or wavelength)—the kernel size in the image domain is typically proportional to the square of the observing wavelength, λ2.

In the average regime, refractive scattering introduces compact substructures into the diffractively scattered images. These compact substructures arise from phase gradients on the scattering screen, ϕ(r). The refractively scattered image, Ia(r), is then given by:

Ia(r)Iea(r+rF2ϕ(r)),

in which the Fresnel scale, rF=DRD+Rλ2π is dependent on the observing wavelength λ [1, 2]. The refractive substructures on the image have zero means –- the ensamble average of Ia will be the angular-broadened (or diffractively-scattered) image Iea.

ScatteringOptics.jl implements three analytic probabilistic models for the phase screen ϕ(r), named Dipole, Periodic Boxcar, and Von Mises models in Psaltis et al. [3], providing the corresponding semi-analytic descriptions of the phase structure function Dϕ(r). From Dϕ(r), the package computes the scattering kernel and resultant ensemble-average image. The fully scattered image with refractive substractures will further use a generative model to produce a random realization of ϕ(r), which is based on a stationary Gaussian random field following the power spectrum of the probabilistic model in Fourier domain.

The package uses the Dipole model as default, which was originally proposed by Johnson & Narayan et al. [1]. The Dipole model is known to be consistent with multi-frequency measurements of Sgr A* [4].

References

[1] Johnson, M. D., Narayan, R., 2016, The Astrophysical Journal, 826, 170, DOI: 10.3847/0004-637X/826/2/170 (ADS)

[2] Johnson, M. D., 2016, The Astrophysical Journal, 833, 74, DOI: 10.3847/1538-4357/833/1/74 (ADS)

[3] Psaltis, D., et al., 2018, arXiv e-prints, arXiv:1805.01242, DOI: 10.48550/arXiv.1805.01242 (ADS)

[4] Johnson, M. D., et al., 2018, The Astrophysical Journal, 865, 104, DOI: 10.3847/1538-4357/aadcff (ADS)

[5] Rickett, B. J., 1990, Annual Review of Astronomy and Astrophysics, 28, 561, DOI: 10.1146/annurev.aa.28.090190.003021 (ADS))

[6] Narayan, R., 1992, Philosophical Transactions of the Royal Society of London Series A, 341, 151, DOI: 10.1098/rsta.1992.0090 (ADS)

[7] Narayan, R., Goodman, J., 1989, Monthly Notices of the Royal Astronomical Society, 238, 963, DOI: 10.1093/mnras/238.3.963 (ADS)

[8] Goodman, J., Narayan, R., 1989, Monthly Notices of the Royal Astronomical Society, 238, 995, DOI: 10.1093/mnras/238.3.995 (ADS)

- + \ No newline at end of file diff --git a/dev/nondefaultmodels.html b/dev/nondefaultmodels.html index 56c03a3..2aa17c8 100644 --- a/dev/nondefaultmodels.html +++ b/dev/nondefaultmodels.html @@ -8,9 +8,9 @@ - + - + @@ -24,7 +24,7 @@ # Periodic Boxcar pbsm = PeriodicBoxCarScatteringModel()

Users also can define a custom scattering model. Please see Define Your Own Scattering Model.

References

[1] Johnson, M. D., Narayan, R., 2016, The Astrophysical Journal, 826, 170, DOI: 10.3847/0004-637X/826/2/170 (ADS)

[2] Johnson, M. D., et al., 2018, The Astrophysical Journal, 865, 104, DOI: 10.3847/1538-4357/aadcff (ADS)

[3] Psaltis, D., et al., 2018, arXiv e-prints, arXiv:1805.01242, DOI: 10.48550/arXiv.1805.01242 (ADS)

- + \ No newline at end of file diff --git a/dev/refractive.html b/dev/refractive.html index c5f0d0b..5ac7e32 100644 --- a/dev/refractive.html +++ b/dev/refractive.html @@ -8,16 +8,16 @@ - + - + - + -
Skip to content

Simulate Refractive Scattering

Another feature of ScatteringOptics.jl is simulating refractive scattering. This page gives a tutorial to simulate refractive scattering effects.

Loading your image

Again, we use an example image in eht-imaging. Data can be downloaded from here (please open in a new window. otherwise you will get 404 error). This is a general relativistic magnetohydrodynamic (GRMHD) model of the magnetic arrestic disk originally from Dexter et al. 2020.

julia
using CairoMakie
+    
Skip to content

Simulate Refractive Scattering

Another feature of ScatteringOptics.jl is simulating refractive scattering. This page gives a tutorial to simulate refractive scattering effects.

Loading your image

Again, we use an example image in eht-imaging. Data can be downloaded from here (please open in a new window. otherwise you will get 404 error). This is a general relativistic magnetohydrodynamic (GRMHD) model of the magnetic arrestic disk originally from Dexter et al. 2014.

julia
using CairoMakie
 # This is the base package for the Skymodel of the Comrade.jl ecosystem
 using VLBISkyModels
 # Alternatively, you can import Comrade.jl instead. Either works.
@@ -31,7 +31,7 @@
 print("Frequency of the image: ", νref/1e9," GHz")
 
 # Plot source image
-imageviz(im, size=(600, 500), colormap=:afmhot)

Simulating Refractive Scattering

And, then again initialize a scattering model.

julia
using ScatteringOptics
+imageviz(im, size=(600, 500), colormap=:afmhot)

Simulating Refractive Scattering

And, then again initialize a scattering model.

julia
using ScatteringOptics
 
 # initialize the scattering model
 sm = ScatteringModel()
DipoleScatteringModel{Float64}(1.38, 8.0e7, 1.38, 0.703, 81.9, 1.0, 8.701673999999999e21, 1.7063921e22, 0.5099457504520795, 0.5879203321591805, 1.9630156472261735, 3.8933699749663195, 10.476370590888147, 3.5025254191248507, 4.04238102210397e19, 5.8567426819253905, 4.650020392426908, 1.2067222894984828, 0.14137166941154058, 27.969627943900058, 0.24094564298608265, 16.43371800974761, 0.10641979388314901, 0.5127694683107693)

Refractive scattering will distort the diffractively-scattered (i.e. emsemble-average) image and add compact substrucures so-called refractive substructures. These effects will be simulated with a phase screen generated from the probabilistic magnetic field wander model of the intersteller medium implemented in the scattering model.

First, let's initialize a phase screen model (RefractivePhaseScreen) from the scattering model and the model image.

julia
# Initialize a refractive phase screen model from scattering and image models
@@ -67,26 +67,26 @@
 im_a = scatter_image(rps, im; noise_screen=noise_screen)
 
 # Plot source image
-imageviz(im_a, size=(600, 500), colormap=:afmhot)

If you completely randomize the process, you can skip the step to generate noise_screen and specify it in the argument of scatter_image method. In this case, the screen will be automatically generated inside scatter_image method.

There is a quick shortcut bypassing the noise screen generation, which has a less flexibility and a larger overhead for iterative processes.

julia
# Produce scattered image with observing wavelength .13 cm
+imageviz(im_a, size=(600, 500), colormap=:afmhot)

If you completely randomize the process, you can skip the step to generate noise_screen and specify it in the argument of scatter_image method. In this case, the screen will be automatically generated inside scatter_image method.

There is a quick shortcut bypassing the noise screen generation, which has a less flexibility and a larger overhead for iterative processes.

julia
# Produce scattered image with observing wavelength .13 cm
 im_a2 = scatter_image(sm, im; rng=rng)
 
 # Plot source image
-imageviz(im_a2, size=(600, 500), colormap=:afmhot)

Just because the refractive scattering effects cannot be described analytically in Fourier domain, scatter_image method only works for the image models (::IntensityMap). For sky models in VLBISkyModels.jl, you need to first instantiate an image model of your sky model.

Here we show an example using a simple Gaussian model. You need to create an image model with intensitymap method from VLBISkyModels.jl.

julia
# Gaussian model from VLBISkyModels.jl
+imageviz(im_a2, size=(600, 500), colormap=:afmhot)

Just because the refractive scattering effects cannot be described analytically in Fourier domain, scatter_image method only works for the image models (::IntensityMap). For sky models in VLBISkyModels.jl, you need to first instantiate an image model of your sky model.

Here we show an example using a simple Gaussian model. You need to create an image model with intensitymap method from VLBISkyModels.jl.

julia
# Gaussian model from VLBISkyModels.jl
 g = stretched(Gaussian(), μas2rad(5.0), μas2rad(5.0))
 
 # Create an image model from the Gaussian model
 im_g = intensitymap(g, imagepixels(μas2rad(200.0), μas2rad(200.0), 256, 256))
 
 # Plot source image
-imageviz(im_g, size=(600, 500), colormap=:afmhot)

Then you can make a scattered image. Don't forget to add the observing frequency as im_g doesn't have a frequency information.

julia
# Produce scattered image. Don't forget to add the observing frequency as im_g doesn't have a frequency information.
+imageviz(im_g, size=(600, 500), colormap=:afmhot)

Then you can make a scattered image. Don't forget to add the observing frequency as im_g doesn't have a frequency information.

julia
# Produce scattered image. Don't forget to add the observing frequency as im_g doesn't have a frequency information.
 im_ga = scatter_image(sm, im_g; rng=rng, νref=νref)
 
 # Plot source image
-imageviz(im_ga, size=(600, 500), colormap=:afmhot)

Save the tutorial data

The output images may be saved to fits files. Here, we save the images generated in the tutorial above.

julia
# Average image of provided EHT fits file
+imageviz(im_ga, size=(600, 500), colormap=:afmhot)

Save the tutorial data

The output images may be saved to fits files. Here, we save the images generated in the tutorial above.

julia
# Average image of provided EHT fits file
 save_fits("data/im_a.fits", im_a)
 # Scattered average image of Gaussian model
 save_fits("data/im_ga.fits", im_ga)

The saved files are available here (im_a.fits, im_ga.fits; please open in a new window. otherwise you will get 404 error).

- + \ No newline at end of file