diff --git a/stable b/stable index 866c31a9..48080b4c 120000 --- a/stable +++ b/stable @@ -1 +1 @@ -v0.4 \ No newline at end of file +v0.5.0 \ No newline at end of file diff --git a/v0.5 b/v0.5 new file mode 120000 index 00000000..48080b4c --- /dev/null +++ b/v0.5 @@ -0,0 +1 @@ +v0.5.0 \ No newline at end of file diff --git a/v0.5.0/.documenter-siteinfo.json b/v0.5.0/.documenter-siteinfo.json new file mode 100644 index 00000000..53b1a6ed --- /dev/null +++ b/v0.5.0/.documenter-siteinfo.json @@ -0,0 +1 @@ +{"documenter":{"julia_version":"1.10.5","generation_timestamp":"2024-09-21T17:38:47","documenter_version":"1.7.0"}} \ No newline at end of file diff --git a/v0.5.0/C4Blade/airfoil_types/CCBlade/index.html b/v0.5.0/C4Blade/airfoil_types/CCBlade/index.html new file mode 100644 index 00000000..18911cd7 --- /dev/null +++ b/v0.5.0/C4Blade/airfoil_types/CCBlade/index.html @@ -0,0 +1,14 @@ + +CCBlade Airfoil Types · DuctAPE.jl

CCBlade Airfoil Types

DuctAPE includes all the airfoil types and methods available in CCBlade. We repeat them here for convenience, but refer the user to the CCBlade documentation for more context if advanced usage is desired.

DuctAPE.C4Blade.AlphaAFType
AlphaAF(alpha, cl, cd, info, Re, Mach)
+AlphaAF(alpha, cl, cd, info, Re=0.0, Mach=0.0)
+AlphaAF(alpha, cl, cd, info="CCBlade generated airfoil", Re=0.0, Mach=0.0)
+AlphaAF(filename::String; radians=true)

Airfoil data that varies with angle of attack. Data is fit with an Akima spline.

Arguments:

  • alpha::Vector{Float64}: angles of attack
  • cl::Vector{Float64}: corresponding lift coefficients
  • cd::Vector{Float64}: corresponding drag coefficients
  • info::String: a description of this airfoil data (just informational)
  • Re::Float64: Reynolds number data was taken at (just informational)
  • Mach::Float64: Mach number data was taken at (just informational)

or

a file

Arguments:

  • filename::String: name/path of file to read in
  • radians::Bool: true if angle of attack in file is given in radians
source
DuctAPE.C4Blade.AlphaMachAFType
AlphaMachAF(alpha, Mach, cl, cd, info, Re)
+AlphaMachAF(alpha, Mach, cl, cd, info)
+AlphaMachAF(alpha, Mach, cl, cd)
+AlphaMachAF(filenames::Vector{String}; radians=true)

Airfoil data that varies with angle of attack and Mach number. Data is fit with a recursive Akima spline.

Arguments:

  • alpha::Vector{Float64}: angles of attack
  • Mach::Vector{Float64}: Mach numbers
  • cl::Matrix{Float64}: lift coefficients where cl[i, j] corresponds to alpha[i], Mach[j]
  • cd::Matrix{Float64}: drag coefficients where cd[i, j] corresponds to alpha[i], Mach[j]
  • info::String: a description of this airfoil data (just informational)
  • Re::Float64: Reynolds number data was taken at (just informational)

or

filenames with one file per Mach number.

Arguments:

  • filenames::Vector{String}: name/path of files to read in, each at a different Mach number in ascending order
  • radians::Bool: true if angle of attack in file is given in radians
source
DuctAPE.C4Blade.AlphaReAFType
AlphaReAF(alpha, Re, cl, cd, info, Mach)
+AlphaReAF(alpha, Re, cl, cd, info)
+AlphaReAF(alpha, Re, cl, cd)
+read_AlphaReAF(filenames::Vector{String}; radians=true)

Airfoil data that varies with angle of attack and Reynolds number. Data is fit with a recursive Akima spline.

Arguments:

  • alpha::Vector{Float64}: angles of attack
  • Re::Vector{Float64}: Reynolds numbers
  • cl::Matrix{Float64}: lift coefficients where cl[i, j] corresponds to alpha[i], Re[j]
  • cd::Matrix{Float64}: drag coefficients where cd[i, j] corresponds to alpha[i], Re[j]
  • info::String: a description of this airfoil data (just informational)
  • Mach::Float64: Mach number data was taken at (just informational)

or

filenames with one file per Reynolds number.

Arguments:

  • filenames::Vector{String}: name/path of files to read in, each at a different Reynolds number in ascending order
  • radians::Bool: true if angle of attack in file is given in radians
source
DuctAPE.C4Blade.AlphaReMachAFType
AlphaReMachAF(alpha, Re, Mach, cl, cd, info)
+AlphaReMachAF(alpha, Re, Mach, cl, cd)
+AlphaReMachAF(filenames::Matrix{String}; radians=true)

Airfoil data that varies with angle of attack, Reynolds number, and Mach number. Data is fit with a recursive Akima spline.

Arguments:

  • alpha::Vector{Float64}: angles of attack
  • Re::Vector{Float64}: Reynolds numbers
  • Mach::Vector{Float64}: Mach numbers
  • cl::Array{Float64}: lift coefficients where cl[i, j, k] corresponds to alpha[i], Re[j], Mach[k]
  • cd::Array{Float64}: drag coefficients where cd[i, j, k] corresponds to alpha[i], Re[j], Mach[k]
  • info::String: a description of this airfoil data (just informational)

or files with one per Re/Mach combination

Arguments:

  • filenames::Matrix{String}: name/path of files to read in. filenames[i, j] corresponds to Re[i] Mach[j] with Reynolds number and Mach number in ascending order.
  • radians::Bool: true if angle of attack in file is given in radians
source
DuctAPE.C4Blade.DuSeligEggersType
DuSeligEggers(a, b, d, m, alpha0)
+DuSeligEggers(a=1.0, b=1.0, d=1.0, m=2*pi, alpha0=0.0)  # uses defaults

DuSelig correction for lift an Eggers correction for drag.

Arguments:

  • a, b, d::Float64: parameters in Du-Selig paper. Normally just 1.0 for each.
  • m::Float64: lift curve slope. Defaults to 2 pi for zero argument version.
  • alpha0::Float64: zero-lift angle of attack. Defaults to 0 for zero argument version.
source
DuctAPE.C4Blade.SimpleAFType
SimpleAF(m, alpha0, clmax, clmin, cd0, cd2)

A simple parameterized lift and drag curve.

  • cl = m (alpha - alpha0) (capped by clmax/clmin)
  • cd = cd0 + cd2 * cl^2

Arguments:

  • m::Float64: lift curve slope
  • alpha0::Float64: zero-lift angle of attack
  • clmax::Float64: maximum lift coefficient
  • clmin::Float64: minimum lift coefficient
  • cd0::Float64: zero lift drag
  • cd2::Float64: quadratic drag term
source
DuctAPE.C4Blade.SkinFrictionType
SkinFriction(Re0, p)

Skin friction model for a flat plate. cd *= (Re0 / Re)^p

Arguments:

  • Re0::Float64: reference Reynolds number (i.e., no corrections at this number)
  • p::Float64: exponent in flat plate model. 0.5 for laminar (Blasius solution), ~0.2 for fully turbulent (Schlichting empirical fit)
source
DuctAPE.C4Blade.afevalMethod
afeval(af::AFType, alpha, Re, Mach)

Evaluate airfoil aerodynamic performance

Arguments:

  • af::AFType or Function: dispatch on AFType or if function call: cl, cd = af(alpha, Re, Mach)
  • alpha::Float64: angle of attack in radians
  • Re::Float64: Reynolds number
  • Mach::Float64: Mach number

Returns:

  • cl::Float64: lift coefficient
  • cd::Float64: drag coefficient
source
DuctAPE.C4Blade.mach_correctionMethod
mach_correction(::MachCorrection, cl, cd, Mach)

Mach number correction for lift/drag coefficient

Arguments:

  • mc::MachCorrection: used for dispatch
  • cl::Float64: lift coefficient before correction
  • cd::Float64: drag coefficient before correction
  • Mach::Float64: Mach number

Returns:

  • cl::Float64: lift coefficient after correction
  • cd::Float64: drag coefficient after correction
source
DuctAPE.C4Blade.parsefileMethod

A basic airfoil file format. nheader is the number of header lines, which will be skipped. For one Reynolds/Mach number. Additional data like cm is optional but will be ignored.

format:

informational header

Re

Mach

alpha1 cl1 cd1 ...

alpha2 cl2 cd2

alpha3 cl3 cd3

...

source
DuctAPE.C4Blade.re_correctionMethod
re_correction(re::ReCorrection, cl, cd, Re)

Reynolds number correction for lift/drag coefficient

Arguments:

  • re::ReCorrection: used for dispatch
  • cl::Float64: lift coefficient before correction
  • cd::Float64: drag coefficient before correction
  • Re::Float64: Reynolds number

Returns:

  • cl::Float64: lift coefficient after correction
  • cd::Float64: drag coefficient after correction
source
DuctAPE.C4Blade.re_correctionMethod
re_correction(sf::SkinFriction, cl, cd, Re)

Skin friction coefficient correction based on flat plat drag increases with Reynolds number.

source
DuctAPE.C4Blade.rotation_correctionFunction
rotation_correction(rc::RotationCorrection, cl, cd, cr, rR, tsr, alpha, phi=alpha, alpha_max_corr=30*pi/180)

Rotation correction (3D stall delay).

Arguments:

  • rc::RotationCorrection: used for dispatch
  • cl::Float64: lift coefficient before correction
  • cd::Float64: drag coefficient before correction
  • cr::Float64: local chord / local radius
  • rR::Float64: local radius / tip radius
  • tsr::Float64: local tip speed ratio (Omega r / Vinf)
  • alpha::Float64: local angle of attack
  • phi::Float64: local inflow angles (defaults to angle of attack is precomputing since it is only known for on-the-fly computations)
  • alpha_max_corr::Float64: angle of attack for maximum correction (tapers off to zero by 90 degrees)

Returns:

  • cl::Float64: lift coefficient after correction
  • cd::Float64: drag coefficient after correction
source
DuctAPE.C4Blade.tip_correctionMethod
tip_correction(::TipCorrection, r, Rhub, Rtip, phi, B)

Tip corrections for 3D flow.

Arguments:

  • tc::TipCorrection: used for dispatch
  • r::Float64: local radius
  • Rhub::Float64: hub radius
  • Rtip::Float64: tip radius
  • phi::Float64: inflow angle
  • B::Integer: number of blades

Returns:

  • F::Float64: tip loss factor to multiple against loads.
source
DuctAPE.C4Blade.viternaFunction
viterna(alpha, cl, cd, cr75, nalpha=50)

Viterna extrapolation. Follows Viterna paper and somewhat follows NREL version of AirfoilPrep, but with some modifications for better robustness and smoothness.

Arguments:

  • alpha::Vector{Float64}: angles of attack
  • cl::Vector{Float64}: correspnding lift coefficients
  • cd::Vector{Float64}: correspnding drag coefficients
  • cr75::Float64: chord/Rtip at 75% Rtip
  • nalpha::Int64: number of discrete points (angles of attack) to include in extrapolation

Returns:

  • alpha::Vector{Float64}: angle of attack from -pi to pi
  • cl::Vector{Float64}: correspnding extrapolated lift coefficients
  • cd::Vector{Float64}: correspnding extrapolated drag coefficients
source
DuctAPE.C4Blade.write_afMethod
write_af(filename(s), af::AFType; radians=true)

Write airfoil data to file

Arguments:

  • filename(s)::String or Vector{String} or Matrix{String}: name/path of file to write to
  • af::AFType: writing is dispatched based on type (AlphaAF, AlphaReAF, etc.)
  • radians::Bool: true if you want angle of attack to be written in radians
source
diff --git a/v0.5.0/C4Blade/airfoil_types/DFDC/index.html b/v0.5.0/C4Blade/airfoil_types/DFDC/index.html new file mode 100644 index 00000000..e50c5f77 --- /dev/null +++ b/v0.5.0/C4Blade/airfoil_types/DFDC/index.html @@ -0,0 +1,2 @@ + +DFDC Airfoil Type · DuctAPE.jl

DFDC Airfoil Type

The DFDC Airfoil type is very similar to the XROTOR airfoil type, but includes additions for cascade corrections based on stagger and solidity. The cascade corrections aren't particularly accurate, but they do apply ballpark effects resulting from high solidity blade sections. The main benefit to this airfoil type is its simplicity and that the post-stall behavior is already in a format allowing more robust convergence of the DuctAPE solvers.

DuctAPE.C4Blade.DFDCairfoilType

Fields:

  • alpha0::Float : zero lift angle of attack
  • clmax::Float : maximum cl
  • clmin::Float : minimum cl
  • dclda::Float : lift curve slope (1/radians)
  • dclda_stall::Float : lift curve slope post-stall (1/radians)
  • dcl_stall::Float : cl increment from initial to total stall.
  • cdmin::Float : minimum cd
  • cldmin::Float : cl at cdmin
  • dcddcl2::Float : quadratic curve factor for cl vs cd curve $\left(\frac{d(c_d)}{d(c_l^2)}\right)$
  • cmcon::Float : pitching moment constant (unused right now)
  • Re_ref::Float : reference Reynolds number at which cd values apply
  • Re_exp::Float : Reynolds number exponent scaling $\left( c_d = c_d(Re/Re_{ref})^{Re_{exp}}\right)$ should be 0.2 for fully laminar and 0.5 for fully turbulent
  • mcrit::Float : critical Mach number
  • correct_for_mach::Bool : flag to add Prandtl-Glauert correction
  • correct_for_cascade::Bool : flag to add cascade corrections
  • correct_for_reynolds::Bool : flag to add reynolds drag correction
  • correct_for_transonic::Bool : flag to add drag correction above critical mach number
source
diff --git a/v0.5.0/C4Blade/airfoil_types/actuator_disk/index.html b/v0.5.0/C4Blade/airfoil_types/actuator_disk/index.html new file mode 100644 index 00000000..ca4ea11b --- /dev/null +++ b/v0.5.0/C4Blade/airfoil_types/actuator_disk/index.html @@ -0,0 +1,2 @@ + +Actuator Disk Type · DuctAPE.jl

Actuator Disk Type

Warning

Actuator disk types are currently in development and not ready for general use.

DuctAPE currently implements an actuator disk type that can be used to directly define the rotor blade circulation.

DuctAPE.C4Blade.ADMType

Fields:

  • prescribed_circulation::Float=0.0 : Prescribed circulation strength
  • prescribed_source_strength::Float=0.0 : Prescribed source panel strength
source
diff --git a/v0.5.0/C4Blade/airfoil_types/cascade/index.html b/v0.5.0/C4Blade/airfoil_types/cascade/index.html new file mode 100644 index 00000000..fd61f539 --- /dev/null +++ b/v0.5.0/C4Blade/airfoil_types/cascade/index.html @@ -0,0 +1,4 @@ + +Cascade Types · DuctAPE.jl

Cascade Types

Warning

Cascade types are currently in development and not ready for general use.

Cascade types are defined analogous to CCBlade airfoil types. Instead of angle of attack, however, cascade types take in both inflow and stagger angles. In addition, cascade types are dependent on local solidity.

DuctAPE.C4Blade.InReStSoMaCASType
InReStSoMaCAS(inflow, Re, stagger, solidity, Mach, cl, cd, info)
+InReStSoMaCAS(inflow, Re, stagger, solidity, Mach, cl, cd)
+InReStSoMaCAS(filenames::Matrix{String}; radians=true)

Data is fit recursively with Akima splines.

Arguments:

  • inflow::Vector{Float64}: inflow angles
  • Re::Vector{Float64}: Reynolds numbers
  • stagger::Vector{Float64}: stagger angles
  • solidity::Vector{Float64}: local solidity
  • Mach::Vector{Float64}: Mach numbers
  • cl::Array{Float64}: lift coefficients where cl[i, j, k, ell] corresponds to stagger[i], Re[j], Mach[k], solidity[ell]
  • cd::Array{Float64}: drag coefficients where cd[i, j, k, ell] corresponds to stagger[i], Re[j], Mach[k], solidity[ell]
  • info::String: a description of this airfoil data (just informational)

or files with one per Re/Stagger/Solidty/Mach combination

Arguments:

  • filenames::Matrix{String}: name/path of files to read in. filenames[i, j, k, ell] corresponds to Re[i] Stagger[j] Stagger[k] and Solidity[k] with each in ascending order.
  • radians::Bool: true if angle of attack in file is given in radians
source
DuctAPE.C4Blade.interp5dMethod
 interp5d(interp1d, x1data, x2data, x3data, x4data, fdata, x1pt, x2pt, x3pt, x4pt)

Same as FLOWMath.interp4d, ex1cept in five dimensions.

source
DuctAPE.C4Blade.parsecascadefileMethod
parsefile(filename, radians, solidity)

Cascade version of parsefile function from CCBlade. Assumes stagger is given before reynolds and Mach number, and solidity is given after

source
DuctAPE.C4Blade.writecascadefileMethod
writecascadefile(filename, info, Re, Mach, stagger, inflow, cl, cd, radians)

Cascade version of writecascadefile function from CCBlade. Writes solidity after Mach number

source
diff --git a/v0.5.0/C4Blade/api/index.html b/v0.5.0/C4Blade/api/index.html new file mode 100644 index 00000000..6965cad4 --- /dev/null +++ b/v0.5.0/C4Blade/api/index.html @@ -0,0 +1,2 @@ + +API Reference · DuctAPE.jl

Index

    diff --git a/v0.5.0/C4Blade/corrections/index.html b/v0.5.0/C4Blade/corrections/index.html new file mode 100644 index 00000000..a36c2d82 --- /dev/null +++ b/v0.5.0/C4Blade/corrections/index.html @@ -0,0 +1,76 @@ + +Polar Modification · DuctAPE.jl

    Airfoil Polar Corrections

    In some cases various airfoil polar corrections may be required. Of specific note are modifications to airfoil polars for post-stall behavior. Thus far, DuctAPE is much more robust if the post-stall behavior in the lift polars does not exhibit a decrease in lift at angles of attack beyond that of the maximum lift coefficient. Therefore a function is provided to help modify polars as needed:

    DuctAPE.C4Blade.stall_limitersFunction
    stall_limiters(
    +    aoa,
    +    cl,
    +    cd;
    +    clminid=nothing,
    +    clmaxid=nothing,
    +    cl_cutoff_slope=0.1,
    +    cd_cutoff_slope=0.9,
    +    N=20,
    +    blend_hardness=50
    +)

    Cuts off coefficient vs alpha curve at min and max coefficient and places rest of curve from -pi to min coeff and max coeff to pi according to user defined clcutoffslope (default 0.1)

    Arguments:

    • aoa::AbstractVector{Float} : input angles of attack, in radians
    • cl::AbstractVector{Float} : input lift coefficients
    • cd::AbstractVector{Float} : input drag coefficients

    Keyword Arguments:

    • clminid::Float=nothing : manually set index for minimum cl
    • clmaxid::Float=nothing : manually set index for maximum cl
    • cl_cutoff_slope::Float=0.1 : "post-stall" slope for cl
    • cd_cutoff_slope::Float=0.1 : "post-stall" slope for cd
    • blend_hardness::Float=50 : hardenss of blend between nominal polar and post-stall modifications.

    Returns:

    • aoa_ext::AbstractVector{Float} : angles of attack for modified polar, in radians
    • cl_ext::AbstractVector{Float} : modified lift coefficients
    • cd_ext::AbstractVector{Float} : modified drag coefficients
    source

    Various other correction methods are available, including the cascade corrections inherent in the DuctAPE.C4Blade.DFDCairfoil type. The following methods are in addition to the various corrections available alongside the CCBlade Airfoil Types.

    DuctAPE.C4Blade.corrected_clcdMethod
    corrected_clcd(af::AlphaReAF, alpha, Re, Mach, solidity, stagger; kwargs...)

    Evaluates and applies on-the-fly corrections for airfoil lift and drag. On-the-fly airfoil polar corrections include solidity/stagger corrections, Prandtl-Glauert compressibility corrections, and transonic lift limits and drag additions.

    corrected_clcd!(cl, cd, af::AlphaReAF, Re, alpha, Mach, solidity, stagger; kwargs...)

    Evaluates and applies on-the-fly corrections for airfoil lift and drag in place.

    corrected_clcd!(cl, cd, Mach, solidity, stagger; kwargs...)

    Applies on-the-fly corrections for airfoil lift and drag in place.

    corrected_clcd!(cl, cd, af::AlphaAF, alpha, Re, Mach, solidity, stagger; kwargs...)

    Evaluates and applies on-the-fly corrections, including Reynolds corrections, for airfoil lift and drag in place

    corrected_clcd(cas::InReStSoMaCAS, inflow, Re, Mach, solidity, stagger)

    Evaluates cascade lift and drag.

    Arguments:

    Coefficients

    • cl::Float : local lift coefficient
    • cd::Float : local drag coefficient

    Airfoil Object

    • af::AlphaReAF : airfoil object of CCBlade type dependent on angle of attack and Reynolds number

    or

    • af::AlphaAF : airfoil object of CCBlade type dependent on angle of attack only

    or

    • cas::InReStSoMaCAS : cascade object depentent on inflow angle, Reynolds number, stagger, solidity, and Mach number.

    Flow Angle

    • alpha::Float : angle of attack, radians. Used with airfoil types

    or

    • inflow::Float : inflow angle, radians. Used with cascade types

    Flow Conditions

    • Re::Float : Reynolds number
    • Mach::Float : Mach number

    Geometry

    • solidity::Float : Local solidity
    • stagger::Float : Stagger angle, radians

    Keyword Arguments:

    • mcrit::Float=0.7 : Critical Mach number

    rotorzloc airfoil type parameters for post-stall behavior

    • dcl_stall::Float=0.1 : change in cl from incipient to total stall, used in transonic lift limiter correction
    • dclda_stall::Float=0.1 : Post-stall lift curve slope

    Correction factors that were hard coded in rotorzloc and DFDC

    • cdmfactor::Float=10.0 :
    • clmfactor::Float=0.25 :
    • mexp::Float=3.0 :
    • cdmstall::Float=0.1 :
    • cdmdd::Float=0.0020 :

    Smoothing Paramters

    • ssblend_hardness::Float=100.0 : sigmoid blending hardness for solidity/stagger corrections
    • transblendhardness::Float=75.0 : sigmoid blending hardness for transonic corrections
    • absdx::Float=0.0625 : smooth absolute value Δα (radians) for transonic drag addition

    Miscellaneous

    • verbose::Bool=false : Boolean of whether to print warnings, etc.
    source
    DuctAPE.C4Blade.prandtl_glauertMethod
    prandtl_glauert(cl, ma)

    Applies Prandtl-Glauert correction

    Arguments:

    • cl::Float : local lift coefficient

    Returns

    • cl_corr::AbstractVector{Float} : corrected lift coefficients
    source
    DuctAPE.C4Blade.prandtl_glauert_factorMethod
    prandtl_glauert_factor(mach; verbose=false, blend_range=0.02)

    Smoothed Prandtl-Glauert Mach correction factor

    Arguments:

    • mach::Float : Mach number

    Keyword Arguments:

    • blend_range::Float=0.02 : range for blending factor and max cutoff (allowing Mach >= 1.0 for continuity)
    source
    DuctAPE.C4Blade.re_dragMethod
    re_drag(cd, re, re_ref; re_exp=0.5)

    Arguments:

    • cd::AbstractVector{Float} : input drag coefficients
    • re::Float : Current Reynolds number
    • re_ref::Float : Reference Reynolds number (at which the cd's were generated)

    Keyword Arguments:

    • re_exp::Float=0.5 : should be 0.2 for laminar and 0.5 for turbulent flow

    Returns:

    • cd_corr::AbstractVector{Float} : Reynolds corrected drag coefficients
    source
    DuctAPE.C4Blade.solidity_and_staggerMethod
    solidity_and_stagger(cl, solidity, stagger; blend_hardness=100)

    Apply smoothed Wallis' cascade correction (see solidity_and_stagger_factor_smooth) to local lift.

    Arguments:

    • cl::AbstractVector{Float} : input lift coefficients
    • solidity::Float : local solidity
    • stagger::Float : local stagger (in radians)

    Keyword Arguments:

    • blend_hardness::Float=100 : hardness of smoothing blends

    Returns:

    • cl_corr::AbstractVector{Float} : corrected lift coefficients.
    source
    DuctAPE.C4Blade.solidity_and_stagger_factorMethod
    solidity_and_stagger_factor(solidity, stagger; blend_hardness=100)

    Correction for airfoil data used in a high-solidity cascade application. Correction is used in DFDC airfoils nominally and come from quadratic fits to curves in fig 6-29 "Axial Flow Fans and Ducts" by Wallis (1983). Note that the corrections are really only meant for Wallis' custom airfoil design and specific conditions mentioned in the book.

    Arguments:

    • solidity::Float : local solidity
    • stagger::Float : local stagger (in radians)

    Keyword Arguments:

    • blend_hardness::Float=100 : hardness for smoothing blends
    source
    DuctAPE.C4Blade.solidity_and_stagger_factor_smoothMethod
    solidity_and_stagger_factor_smooth(solidity, stagger; blend_hardness=100)

    A smoothed version of solidity_and_stagger_factor.

    Arguments:

    • solidity::Float : local solidity
    • stagger::Float : local stagger (in radians)

    Keyword Arguments:

    • blend_hardness::Float=100 : hardness for smoothing blends
    source
    DuctAPE.C4Blade.stall_limitersMethod
    stall_limiters(
    +    aoa,
    +    cl,
    +    cd;
    +    clminid=nothing,
    +    clmaxid=nothing,
    +    cl_cutoff_slope=0.1,
    +    cd_cutoff_slope=0.9,
    +    N=20,
    +    blend_hardness=50
    +)

    Cuts off coefficient vs alpha curve at min and max coefficient and places rest of curve from -pi to min coeff and max coeff to pi according to user defined clcutoffslope (default 0.1)

    Arguments:

    • aoa::AbstractVector{Float} : input angles of attack, in radians
    • cl::AbstractVector{Float} : input lift coefficients
    • cd::AbstractVector{Float} : input drag coefficients

    Keyword Arguments:

    • clminid::Float=nothing : manually set index for minimum cl
    • clmaxid::Float=nothing : manually set index for maximum cl
    • cl_cutoff_slope::Float=0.1 : "post-stall" slope for cl
    • cd_cutoff_slope::Float=0.1 : "post-stall" slope for cd
    • blend_hardness::Float=50 : hardenss of blend between nominal polar and post-stall modifications.

    Returns:

    • aoa_ext::AbstractVector{Float} : angles of attack for modified polar, in radians
    • cl_ext::AbstractVector{Float} : modified lift coefficients
    • cd_ext::AbstractVector{Float} : modified drag coefficients
    source
    DuctAPE.C4Blade.transonic_drag_addition!Method
    transonic_drag_addition!(
    +    cd,
    +    cl,
    +    clcdmin,
    +    mach;
    +    mcrit=0.7,
    +    cdmfactor=10.0,
    +    clmfactor=0.25,
    +    mexp=3.0,
    +    cdmdd=0.0020,
    +    cdmstall=0.1000,
    +    absdx=0.0625,
    +    blend_hardness=50,
    +)

    Smoothed, vecotrized, in-place version of transonic_drag_addition.

    Different Arguments:

    • cd::AbstractVector{Float} : vector of drag coefficients
    • cl::AbstractVector{Float} : vector of lift coefficients

    Additional Keyword Argument:

    • blend_hardness::Float=50 : hardenss of smoothing blends
    source
    DuctAPE.C4Blade.transonic_drag_additionMethod
    transonic_drag_addition(
    +    cd,
    +    cl,
    +    clcdmin,
    +    mach;
    +    mcrit=0.7,
    +    cdmfactor=10.0,
    +    clmfactor=0.25,
    +    mexp=3.0,
    +    cdmdd=0.0020,
    +    cdmstall=0.1000,
    +    absdx=0.0625,
    +)

    Drag augmentation due to transonic effects as found in XROTOR and DFDC. Note this is nominally applied to DFDC airfoil evaluation.

    Arguments:

    • cd::Float : input drag coefficient
    • cl::Float : input lift coefficient
    • clcdmin::Float : lift coefficient at minimum drag coefficient.
    • mach::Float : Mach number

    Keyword Arguments

    • mcrit::Float=0.7 : critical Mach number
    • cdmfactor::Float=10.0 : factor hard coded in XROTOR and DFDC
    • clmfactor::Float=0.25 : factor hard coded in XROTOR and DFDC
    • mexp::Float=3.0 : factor hard coded in XROTOR and DFDC
    • cdmstall::Float=0.1000 : factor hard coded in XROTOR and DFDC
    • absdx::Float=0.0625 : smoothing factor for smooth absolute value function

    Returns:

    • cl_corr:Float : corrected lift coefficient
    source
    DuctAPE.C4Blade.transonic_lift_limiterMethod
    transonic_lift_limiter(
    +    cl,
    +    mach,
    +    clcdmin,
    +    clmax,
    +    clmin,
    +    dclda;
    +    mcrit=0.7,
    +    dcl_stall=0.1,
    +    dclda_stall=0.1,
    +    cdmfactor=10.0,
    +    clmfactor=0.25,
    +    mexp=3.0,
    +    cdmstall=0.1000,
    +)

    Airfoil polar corrections due to transonic effects as found in XROTOR and DFDC. Note that this correction is done nominally in the DFDC airfoil evaluation.

    Arguments:

    • cl::Float : input lift coefficient
    • mach::Float : Mach number
    • clcdmin::Float : lift coefficient at minimum drag coefficient.
    • clmax::Float : maximum lift coefficient
    • clmin::Float : minimum lift coefficient
    • dclda::Float : lift-curve slope
    • mcrit::Float=0.7 : critical Mach number
    • dcl_stall::Float=0.1 : cl increment from initial to total stall
    • dclda_stall::Float=0.1 : lift curve slope post-stall (1/radians)
    • cdmfactor::Float=10.0 : factor hard coded in XROTOR and DFDC
    • clmfactor::Float=0.25 : factor hard coded in XROTOR and DFDC
    • mexp::Float=3.0 : factor hard coded in XROTOR and DFDC
    • cdmstall::Float=0.1000 : factor hard coded in XROTOR and DFDC

    Returns:

    • cl_corr:Float : corrected lift coefficient
    source
    DuctAPE.C4Blade.transonic_lift_limiter_smooth!Method
    transonic_lift_limiter_smooth!(
    +    cl,
    +    mach,
    +    clcdmin,
    +    clmax,
    +    clmin,
    +    dclda;
    +    mcrit=0.7,
    +    dcl_stall=0.1,
    +    dclda_stall=0.1,
    +    cdmfactor=10.0,
    +    clmfactor=0.25,
    +    mexp=3.0,
    +    cdmstall=0.1000,
    +    blend_hardness=50,
    +)

    Smoothed, vectorized, in-place version of transonic_lift_limiter.

    Different Arguments:

    • cl::AbstractVector{Float} : vector of lift coefficients

    Additional Keyword Argument:

    • blend_hardness::Float=50 : hardenss of smoothing blends
    source
    diff --git a/v0.5.0/C4Blade/intro/index.html b/v0.5.0/C4Blade/intro/index.html new file mode 100644 index 00000000..a4142310 --- /dev/null +++ b/v0.5.0/C4Blade/intro/index.html @@ -0,0 +1,2 @@ + +Intro · DuctAPE.jl
    diff --git a/v0.5.0/DuctAPE/advanced_usage/manual_repaneling/index.html b/v0.5.0/DuctAPE/advanced_usage/manual_repaneling/index.html new file mode 100644 index 00000000..62bc5af0 --- /dev/null +++ b/v0.5.0/DuctAPE/advanced_usage/manual_repaneling/index.html @@ -0,0 +1,2 @@ + +- · DuctAPE.jl

    Circumventing the Automated Geometry Re-paneling

    It is not advised to circument the automated geometry re-paneling, but if it must be done, the user needs to provide duct, centerbody, and wake nodes conforming to compatible geometry formatting. The best use case for this is to use previously generated geometry or perhaps geometry exported from DFDC.

    The process is not simple, but is possible. You would have to manually run the dispatches of precompute_parameters that take in the the repaneled body nodes and wake grid. These dispatches exist for this purpose, but there is, by design, no convenience functions at this time to aid the user in easily bypassing the automated repaneling.

    diff --git a/v0.5.0/DuctAPE/advanced_usage/option/index.html b/v0.5.0/DuctAPE/advanced_usage/option/index.html new file mode 100644 index 00000000..ff4d58e2 --- /dev/null +++ b/v0.5.0/DuctAPE/advanced_usage/option/index.html @@ -0,0 +1,73 @@ + +Options · DuctAPE.jl

    Advanced Option Selection

    DuctAPE has been written in an attempt to make as many of the available options exposed to the user as possible. This means that there are quite a few options to select from if not using the option convenience functions. To help the user, the majority of overarching option types are defined using the @kwdef macro and have default values that should be reasonable in most cases. We will introduce some of the available options here that may be of common interest.

    General Option Selection

    In general, options are all accessed through the options argument of the analysis function being called. Said options are passed via an Options struct.

    DuctAPE.OptionsType
    struct Options

    Type containing (nearly) all the available user options.

    Fields

    General Options

    • verbose::Bool = false : flag to print verbose statements
    • silence_warnings::Bool = true : flag to silence warnings
    • multipoint_index::Int = [1] : holds current index of multi-point solver (no need for user to change this usually)

    Pre-processing Options

    Geometry interpolation and generation options :

    • finterp::Interplation Method = FLOWMath.akima : interpolation method used for re-paneling bodies
    • autoshiftduct::Bool = true : flag as to whether duct geometry should be shifted based on rotor tip location
    • lu_decomp_flag::Bool = false : flag indicating if panel method LHS matrix factorization was successful

    paneling options

    • itcpshift::Float = 0.05 : factor for internal trailing edge psuedo-panel placement (default is DFDC hard-coded value)
    • axistol::Float = 1e-15 : tolerance for how close the the axis of rotation should be considered on the axis
    • tegaptol::Float = 1e1 * eps() : tolerance for how large of a trailing edge gap should be considered a gap

    Integration Options

    • integration_options::IntegrationOptions type = IntegrationOptions() : integration options

    Post-processing Options

    • write_outputs::AbstractArray{Bool} = [false] : Bool for whether to write the outputs of the analysis to an external file (slow)
    • outfile::AbstractArray{String} = ["outputs.jl"] : External output file name (including path information) for files to write
    • checkoutfileexists::Bool = false : Flag for whether to check if file exists before overwriting
    • output_tuple_name::AbstractArray{String} = ["outs"] : variable name for named tuple written to out file

    Solving Options

    • grid_solver_options::GridSolverOptionsType = GridSolverOptions() : elliptic grid solver options
    • solver_options::SolverOptionsType = ChainSolverOptions() : solver options
    source

    Options are selected through the set_options function

    DuctAPE.set_optionsFunction
    set_options(; kwargs...)
    +set_options(multipoint; kwargs...)

    Set the options for DuctAPE to use.

    Note that the vast majority of the available options are defined through keyword arguments. See the documentation for the various option types for more information.

    Arguments

    • multipoint::AbstractArray{OperatingPoint} : a vector of operating points to use if running a multi-point analysis.
    source

    There are three main sub-option objects for quadrature, wake geometry solver, and aerodyanmic solver; these are explained in more detail below. In addition, there are various options for pre- and post-processing as well as miscellaneous options for things such as supressing warnings and printing verbose statements throughout the analysis, which can be seen in the docstring above.

    Quadrature

    There are several implementations for different quadrature approaches depending on user desires; they include:

    The default method is Gauss-Legendre quadrature using 8 sample points for both the nominal and singular integrals. To modify the quadrature methods and settings, an IntegrationOptions struct needs to be passed to the set_options method.

    DuctAPE.IntegrationOptionsType
    struct IntegrationOptions

    A struct used to hold the integration options for both the nominal and singular cases.

    Fields

    • nominal::IntegrationMethod=GaussLegendre(8) : the integration options to use for the nominal case.
    • singular::IntegrationMethod=GaussLegendre(8) : the integration options to use for the self-induced case.
    source

    The IntegraionOptions type takes in two objects of type IntegrationMethod, one for the nominal integrals, and one for the singular integrals. These methods can be mixed and matched between quadrature methods as well as settings.

    For example, if one wanted to use a 10-point Gauss-Legendre method for the nominal integrals, and a order 7 Gauss-Kronrod method with an absolute tolerance of 2e-16 the following would need to be included in the set_options call:

    # set nominal options using a GaussLegendre object (which is an InterationMethod type)
    +# note that a convenience method is used here that takes in the number of points and
    +#calculates the appropriate sample locations and weights.
    +nominal_integration_method = DuctAPE.GaussLegendre(10)
    +
    +# set singular options using a GaussKronrod object (which is an InterationMethod type)
    +# note that like most option structs, these are defined using @kwdef allowing the fields
    +#to be treated as keyword arguments.
    +# also note that we haven't changed the evaluation limit (default 10^7)
    +singular_integration_method = DuctAPE.GaussKronrod(; order=7, atol=2e-16)
    +
    +# put the quadrature options together
    +integration_options = DuctAPE.IntegrationOptions(;
    +    nominal=nominal_integration_method, singular=singular_integration_method
    +)
    +
    +# example of calling the set_options function
    +options = DuctAPE.set_options(; integration_options=integration_options)

    Elliptic Grid Solvers

    As part of the pre-process, an elliptic grid defining the wake geometry is solved with a system of Poisson equations. For this solve there currently two options:

    The SLOR (successive line over relaxation) is the method employed by DFDC, and can be used by itself, or as a preconditioner to a Newton solve (using NLsolve.jl).

    Selection of solver and solver settings follows the same pattern as with the quadrature settings, in that the user must pass the appropriate GridSolverOptionsType into the set_options call.

    For the SLOR method alone, the type is

    DuctAPE.SLORGridSolverOptionsType
    struct SLORGridSolverOptions <: GridSolverOptionsType

    Options for SLOR (successive line over relaxation) elliptic grid solver.

    Fields

    • iteration_limit::Int = 100 : maximum number of iterations
    • atol::Float = 1e-9 : absolute convergence tolerance
    • converged::AbstractArray{Bool} = [false]
    source

    And for the SLOR+Newton method, the type is

    DuctAPE.GridSolverOptionsType
    struct GridSolverOptions <: GridSolverOptionsType

    Options for SLOR + Newton elliptic grid solver.

    Fields

    • iteration_limit::Int = 10 : maximum number of iterations
    • atol::Float = 1e-14 : absolute convergence tolerance
    • algorithm::Symbol = :newton : algorithm to use in NLsolve.jl
    • autodiff::Symbol = :forward : differentiation method to use in NLsolve.jl
    • converged::AbstractArray{Bool} = [false]
    source

    As an example, this is the input that would be required to use the SLOR+Newton method with an absolute convergence tolerance of 1e-12, and also including the quadrature settings from above:

    # define wake grid solver settings
    +wake_solve_options = DuctAPE.GridSolverOptions(; atol=1e-12)
    +
    +# set all options
    +options = DuctAPE.set_options(;
    +    integration_options=integration_options, grid_solver_options=wake_solve_options
    +)
    Convergence Flags

    The convergence flags default to false, and in general should be left alone as they are modified in-place in the various solves by the analysis.

    Aerodynamics Solvers

    There are two general types of solvers available in DuctAPE, the first is very similar to the solver in DFDC and converges a residual very similar to DFDC's. The other type is for external solvers that converge an alternate residual that is default in DuctAPE. The various solver options include:

    Note that the CSOR, FixedPoint.jl, and SpeedMapping.jl are all different fixed-point iteration solvers, MINPACK.jl and SIAMFANLEquations.jl are primarily quasi-newton solvers, and NLsolve.jl and SimpleNonlinearSolve.jl have various solver options.

    DuctAPE also has some poly-algorithm solvers that employ more than one solver. The Chain Solver option is the default which starts with a fixed-point iteration, and if it doesn't converge, moves on to a quasi-, then full Newton solver until either convergence is reached, or no convergence is found. The other poly-algorithm that is available, but is less robust is the Composite Solver which partially converges with one solver, and finishes with another.

    Each of the solve methods have a variety of different settings associated with them, detailed in their respective docstrings. The following example should contain all the principles required to be able to adapt to the most complex use cases.

    # Define settings for NLsolve's newton method
    +aero_solver_options = DuctAPE.NLsolveOptions(;
    +    algorithm=:newton,
    +    atol=1e-10,
    +    iteration_limite=30,
    +    linesearch_method=LineSearches.BackTracking, #don't include parentheses on method handle
    +    linesearch_kwargs=(; order=3, maxstep=1e6),
    +    additional_kwargs=(; autoscale=false),
    +)
    +
    +# set all the options
    +DuctAPE.set_options(;
    +    integration_options=integration_options,
    +    grid_solver_options=wake_solve_options,
    +    solver_options=aero_solver_options,
    +)
    Iteration Counters

    The iterations field (not to be confused with the iterations_limit field) in the solver options should generally not be changed. They automatically save (in-place) the number of iterations the solver performs and can be accessed after the analysis is run.

    Advanced Options for Multi-point analyses

    For using advanced options in multi-point analyses, there are various changes that need to be made to avoid run-time errors. Here is an example for setting options with the CSOR solver.

    # number of operating points to analyze
    +nop = 3
    +
    +options = DuctAPE.set_options(;
    +    solver_options=DuctAPE.CSORSolverOptions(;
    +        converged=fill(false, (1, nop)), # need a convergence flag for each operating point
    +        iterations=zeros(Int, (1, nop)), # need a iteration count for each operating point
    +        Vconv=ones(nop), # in this case, we need a reference velocity for each operating point
    +    ),
    +    write_outputs=fill(false, nop), # we need to know which of the operating point outputs to write
    +    outfile=fill("", nop), # we need to include names, even if they won't be used.
    +    output_tuple_name=fill("outs", nop), # we need to include names, even if they won't be used.
    +)

    If using a poly-algorithm with a multi-point solve, then each of the solvers needs to have the multiple converged and iterations fields for each operating point, and the overall solve type needs to have a converged and iterations field for each solver and each operating point.

    options = DuctAPE.set_options(;
    +    solver_options=DuctAPE.ChainSolverOptions(;
    +        solvers=[ # vector of solvers to use in poly-algorithm
    +            DuctAPE.NLsolveOptions(;
    +                algorithm=:anderson,
    +                atol=1e-12,
    +                iteration_limit=200,
    +                converged=fill(false, (1, nop)), # flags for each operating point
    +                iterations=zeros(Int, (1, nop)), # counters for each operating point
    +            ),
    +            DuctAPE.MinpackOptions(;
    +                atol=1e-12,
    +                iteration_limit=100,
    +                converged=fill(false, (1, nop)),
    +                iterations=zeros(Int, (1, nop)),
    +            ),
    +        ],
    +        converged=fill(false, (2, nop)), # flags for each solver and each operating point
    +        iterations=zeros(Int, (2, nop)), # counts for each solver and each operating point
    +    ),
    +)
    diff --git a/v0.5.0/DuctAPE/advanced_usage/outputs/index.html b/v0.5.0/DuctAPE/advanced_usage/outputs/index.html new file mode 100644 index 00000000..a499315f --- /dev/null +++ b/v0.5.0/DuctAPE/advanced_usage/outputs/index.html @@ -0,0 +1,21 @@ + +Outputs · DuctAPE.jl

    Available Outputs

    The output tuple contains many items. The post_process function docstring lists them. The purpose of showing this function here is not for you to manually run the fuction or apply any advanced usage, but simply rather for you to see what the available outputs are, as several of them may apply to advanced usage cases.

    DuctAPE.post_processFunction
    post_process(
    +    solver_options,
    +    converged_states,
    +    prepost_containers,
    +    solve_container_caching,
    +    solve_parameter_cache_vector,
    +    solve_parameter_cache_dims,
    +    operating_point,
    +    reference_parameters,
    +    A_bb_LU,
    +    airfoils,
    +    idmaps,
    +    problem_dimensions,
    +    multipoint_index;
    +    write_outputs=options.write_outputs,
    +    outfile=options.outfile,
    +    checkoutfileexists=options.checkoutfileexists,
    +    output_tuple_name=options.output_tuple_name,
    +    verbose=options.verbose,
    +)

    Post-process a converged nonlinear solve solution.

    Arguments

    • solver_options::SolverOptionsType : A SolverOptionsType object (also used for dispatch)
    • converged_states::Vector{Float} : the converged state variables
    • prepost_containers::NamedTuple : the named tuple containing pre-allocated containers for the pre- and post-processing intermediate calculations
    • solve_container_cache::NamedTuple : the cache and dimensions for intermediate values in the residual calculation
    • solve_parameter_cache_vector::Vector{Float} : the applicably typed cache vector for the solve parameters
    • solve_parameter_cache_dims::NamedTuple : the dimensions of the solver parameters
    • operating_point::OperatingPoint : the operating point being analyzed
    • reference_parameters::ReferenceParameters : a ReferenceParameters object
    • A_bb_LU::LinearAlgebra.LU : LinearAlgebra LU factorization of the LHS matrix
    • airfoils::Vector{AFType} : A matrix of airfoil types associated with each of the blade elements
    • idmaps::NamedTuple : A named tuple containing index mapping used in bookkeeping throughout solve and post-process
    • problem_dimensions::ProblemDimensions : A ProblemDimensions object

    Keyword Arguments

    • multipoint_index::Vector{Int} : a one-dimensional vector containing the index of which multipoint analysis operating point is being analyzed.
    • write_outputs=options.write_outputs::Vector{Bool} : a vector with the same length as number of multipoints indicating if the outputs should be saved.
    • outfile=options.outfile::Vector{String} : a vector of file paths/names for where outputs should be written
    • checkoutfileexists=options.checkoutfileexists::Bool : a flag for whether existing files should be checked for or if blind overwriting is okay.
    • output_tuple_name=options.output_tuple_name::Vector{String} : the variable name(s) of the named tuple of outputs to be written.
    • verbose::Bool=false : flag to print verbose statements

    Returns

    outs::NamedTuple : A named tuple containing all the output values including

    • bodies
      • panel_strengths
      • total_thrust
      • thrust_comp
      • induced_efficiency
      • cp_in
      • cp_out
      • cp_casing_in
      • cp_casing_out
      • casing_zpts
      • cp_nacelle_in
      • cp_nacelle_out
      • nacelle_zpts
      • cp_centerbody_in
      • cp_centerbody_out
      • centerbody_zpts
      • Vtot_in
      • Vtot_out
      • Vtot_prejump
      • vtot_body
      • vtot_jump
      • vtot_wake
      • vtot_rotors
      • Vtan_in
      • Vtan_out
      • vtan_casing_in
      • vtan_casing_out
      • vtan_nacelle_in
      • vtan_nacelle_out
      • vtan_centerbody_in
      • vtan_centerbody_out
    • rotors
      • circulation
      • panel_strengths
      • efficiency
      • inviscid_thrust
      • inviscid_thrust_dist
      • viscous_thrust
      • viscous_thrust_dist
      • thrust
      • CT
      • inviscid_torque
      • inviscid_torque_dist
      • viscous_torque
      • viscous_torque_dist
      • torque
      • CQ
      • inviscid_power
      • inviscid_power_dist
      • viscous_power
      • viscous_power_dist
      • power
      • CP
      • cl
      • cd
      • alpha
      • beta1
      • blade_normal_force_per_unit_span
      • blade_tangential_force_per_unit_span
    • wake
      • panel_strengths
    • totals
      • thrust
      • torque
      • power
      • CT
      • CQ
      • CP
      • total_efficiency
      • ideal_efficiency
    • intermediate_solve_values
      • vz_rotor
      • vtheta_rotor
      • Cm_wake
      • reynolds
      • mach
      • Cz_rotor
      • Ctheta_rotor
      • Cmag_rotor
      • Gamma_tilde
      • H_tilde
      • deltaGamma2
      • deltaH
      • vz_wake
      • vr_wake
      • Cm_avg
    source

    Returning the Pre-process Objects

    Sometimes, it may be desireable to return the pre-process objects, including:

    • panels which is a named tuple containing the body, rotor, and wake panel objects
    • ivb which are the unit induced velocities on the body panels
    • solve_parameter_tuple which contains all of the solver parameters
    • blade_elements which contains all of the blade element geometry and airfoil information
    • linsys which contains all the linear system objects for the panel method
    • idmaps which contains all the index mapping used throughout the solve and post-process.

    In this case, we can use the return_inputs keyword argument when calling the analyze function to return a named tuple containing those pre-process objects.

    outs, ins, success_flag = dt.analyze(ducted_rotor, operating_point, reference_parameters; return_inputs=true)
    diff --git a/v0.5.0/DuctAPE/advanced_usage/precompilation/index.html b/v0.5.0/DuctAPE/advanced_usage/precompilation/index.html new file mode 100644 index 00000000..8bfe20bc --- /dev/null +++ b/v0.5.0/DuctAPE/advanced_usage/precompilation/index.html @@ -0,0 +1,72 @@ + +Preallocation · DuctAPE.jl

    Pre-compiling the Caches

    There are several available caches that can be precompiled to help speed up multiple analyses. The first is a cache used for intermediate calculations in the pre- and post-processing phases of the analysis. It can be preallocated using allocate_prepost_container_cache

    DuctAPE.allocate_prepost_container_cacheFunction
    allocate_prepost_container_cache(paneling_constants::PanelingConstants)
    +allocate_prepost_container_cache(problem_dimensions::ProblemDimensions)

    Allocate the pre- and post-processing cache (used for intermediate calculations) based on paneling constants or problem dimensions.

    Arguments

    • paneling_constants::PanelingConstants : a PanelingConstants object

    OR

    • problem_dimensions::ProblemDimensions : a ProblemDimensions object

    Keyword Arguments

    • fd_chunk_size::Int=12 : chunk size to use for PreallocationTools caches. Note that the automated chunk size for DuctAPE will always be the ForwardDiff threshold of 12 due to the size of the system, so it will be best to leave this at the default unless further development allows for chunk size selection for individual solvers.
    • levels::Int=1 : levels for nested duals. Note that since ImplicitAD is being used for all solves, there should be no need for more than 1 level.

    Returns

    • prepost_container_caching::NamedTuple : a Named Tuple containing:
      • prepost_container_cache::PreallocationTools.DiffCache : the cache
      • prepost_container_cache_dims::NamedTuple : a named tuple containing the dimensions used for reshaping the cache when needed.
    source

    The second is a cache containing parameters used in the solver, in other words, the results of the pre-processing phase. It can be preallocated using allocate_solve_parameter_cache.

    DuctAPE.allocate_solve_parameter_cacheFunction
    allocate_solve_parameter_cache(
    +    solve_type::SolverOptionsType,
    +    paneling_constants::PanelingConstants;
    +    fd_chunk_size=12,
    +    levels=1,
    +)
    +allocate_solve_parameter_cache(
    +    solve_type::SolverOptionsType,
    +    problem_dimensions::ProblemDimensions;
    +    fd_chunk_size=12,
    +    levels=1
    +)

    Allocate the solve parameter cache for parameters passed into the solver(s).

    Arguments

    • solve_type::SolverOptionsType : Solver options type used for dispatch
    • paneling_constants::PanelingConstants : a PanlingConstants object used for sizing

    OR

    • problem_dimensions::ProblemDimensions : a ProblemDimensions object used for sizing

    Keyword Arguments

    • fd_chunk_size::Int=12 : chunk size to use for PreallocationTools caches. Note that the automated chunk size for DuctAPE will always be the ForwardDiff threshold of 12 due to the size of the system, so it will be best to leave this at the default unless further development allows for chunk size selection for individual solvers.
    • levels::Int=1 : levels for nested duals. Note that since ImplicitAD is being used for all solves, there should be no need for more than 1 level.

    Returns

    • solve_parameter_caching::NamedTuple : a Named Tuple containing:
      • solve_parameter_cache::PreallocationTools.DiffCache : the cache
      • solve_parameter_cache_dims::NamedTuple : a named tuple containing the dimensions used for reshaping the cache when needed.
    source

    The final precompileable cache is for intermediate calculations within the solve and can be preallocated using allocate_solve_container_cache

    DuctAPE.allocate_solve_container_cacheFunction
    allocate_solve_container_cache(
    +    solve_type::SolverOptionsType,
    +    paneling_constants::PanelingConstants;
    +    fd_chunk_size=12,
    +    levels=1,
    +)
    +allocate_solve_container_cache(
    +    solve_type::SolverOptionsType,
    +    problem_dimensions::ProblemDimensions;
    +    fd_chunk_size=12,
    +    levels=1,
    +)

    Allocate the solve cache (used for intermediate calculations) based on paneling constants or problem dimensions.

    Arguments

    • paneling_constants::PanelingConstants : a PanelingConstants object

    OR

    • problem_dimensions::ProblemDimensions : a ProblemDimensions object

    Keyword Arguments

    • fd_chunk_size::Int=12 : chunk size to use for PreallocationTools caches. Note that the automated chunk size for DuctAPE will always be the ForwardDiff threshold of 12 due to the size of the system, so it will be best to leave this at the default unless further development allows for chunk size selection for individual solvers.
    • levels::Int=1 : levels for nested duals. Note that since ImplicitAD is being used for all solves, there should be no need for more than 1 level.

    Returns

    • solve_container_caching::NamedTuple : a Named Tuple containing:
      • solve_container_cache::PreallocationTools.DiffCache : the cache
      • solve_container_cache_dims::NamedTuple : a named tuple containing the dimensions used for reshaping the cache when needed.
    source

    You may run all these simultaneously using the initialize_all_caches function.

    DuctAPE.initialize_all_cachesFunction
    initialize_all_caches(solver_options, paneling_constants)

    Convenience function to initialize all caches before calling analysis.

    Arguments

    • solver_options::SolverOptionsType : solver options used for cache allocation dispatch
    • paneling_constants::PanelingConstants : PanelingConstants object upon which all cache sizing depends

    Keyword Arguments

    • fd_chunk_size::Int=12 : chunk size to use for PreallocationTools caches. Note that the automated chunk size for DuctAPE will always be the ForwardDiff threshold of 12 due to the size of the system, so it will be best to leave this at the default unless further development allows for chunk size selection for individual solvers.
    • levels::Int=1 : levels for nested duals. Note that since ImplicitAD is being used for all solves, there should be no need for more than 1 level.

    Returns

    • prepost_container_caching::NamedTuple : A named tuple containing the PreallocationTools DiffCache and a named tuple with relevant dimensions for accessing the cache.
    • solve_parameter_caching::NamedTuple : A named tuple containing the PreallocationTools DiffCache and a named tuple with relevant dimensions for accessing the cache.
    • solve_container_caching::NamedTuple : A named tuple containing the PreallocationTools DiffCache and a named tuple with relevant dimensions for accessing the cache.
    source

    As an example of how to run this function, we'll grab solver options and oaneling constants from previous examples

    # - grab an object of SolverOptionsType defined in a previous example - #
    +aero_solver_options = DuctAPE.NLsolveOptions(;
    +    algorithm=:newton,
    +    atol=1e-10,
    +    iteration_limite=30,
    +    linesearch_method=LineSearches.BackTracking, #don't include parentheses on method handle
    +    linesearch_kwargs=(; order=3, maxstep=1e6),
    +    additional_kwargs=(; autoscale=false),
    +)
    +
    +# - grab an object of PanelingConstants type from the Getting Started tutorial - #
    +# number of panels for the duct inlet
    +nduct_inlet = 30
    +
    +# number of panels for the center body inlet
    +ncenterbody_inlet = 30
    +
    +# number of panels from:
    +#  - rotor to duct trailing edge
    +#  - duct trailing edge to center body trailing edge
    +#  - center body trailing edge to end of wake
    +npanels = [30, 1, 30]
    +
    +# the duct trailing edge is ahead of the centerbody trailing edge.
    +dte_minus_cbte = -1.0
    +
    +# number of wake sheets (one more than blade elements to use)
    +nwake_sheets = 11
    +
    +# non-dimensional wake length aft of rear-most trailing edge
    +wake_length = 0.8
    +
    +# assemble paneling constants
    +paneling_constants = DuctAPE.PanelingConstants(
    +    nduct_inlet, ncenterbody_inlet, npanels, dte_minus_cbte, nwake_sheets, wake_length
    +)
    +
    +# - Initialize Caches - #
    +prepost_container_caching, solve_parameter_caching, solve_container_caching = DuctAPE.initialize_all_caches(aero_solver_options, paneling_constants)

    How to pass the caches into an analysis

    The precompiled caches can be passed in via keyword arguments to the analysis functions. If they are not, they are generated as the first step in the analysis.

    DuctAPE.analyzeFunction
    analyze(
    +    ducted_rotor::DuctedRotor,
    +    operating_point::OperatingPoint,
    +    reference_parameters::ReferenceParameters,
    +    options::Options=set_options();
    +    prepost_container_caching=nothing,
    +    solve_parameter_caching=nothing,
    +    solve_container_caching=nothing,
    +    return_inputs=false,
    +)

    Analyze ducted_rotor, including preprocessing.

    Arguments

    • ducted_rotor::DuctedRotor : DuctedRotor input object (see docstring for DuctedRotor type)
    • operating_point::OperatingPoint : OperatingPoint input object (see docstring for OperatingPoint type)
    • reference_parameters::ReferenceParameters : ReferenceParameters input object (see docstring for ReferenceParameters type)
    • options::Options=set_options() : Options object (see set_options and related functions)

    Keyword Arguments

    • prepost_container_caching=nothing : Output of allocate_prepost_container_cache
    • solve_parameter_caching=nothing : Output of allocate_solve_parameter_container_cache
    • solve_container_caching=nothing : Output of allocate_solve_container_cache
    • return_inputs=false : flag as to whether or not to return the pre-processed inputs

    Returns

    • outs::NamedTuple : Named Tuple of various analysis outputs (see docstring for postprocess for details), note, if linear system decomposition fails, no solve is performed and an empty vector is returned.
    • ins::NamedTuple : Named Tuple of various pre-processed inputs (e.g. panels and body linear system), will only be returned if return_inputs=true
    • convergence_flag : Flag for successful solve convergence
    source
    diff --git a/v0.5.0/DuctAPE/api/api_index/index.html b/v0.5.0/DuctAPE/api/api_index/index.html new file mode 100644 index 00000000..8449ecdc --- /dev/null +++ b/v0.5.0/DuctAPE/api/api_index/index.html @@ -0,0 +1,2 @@ + +API Index · DuctAPE.jl

    Index

    diff --git a/v0.5.0/DuctAPE/api/private_api/index.html b/v0.5.0/DuctAPE/api/private_api/index.html new file mode 100644 index 00000000..bcf6175a --- /dev/null +++ b/v0.5.0/DuctAPE/api/private_api/index.html @@ -0,0 +1,2 @@ + +Private API · DuctAPE.jl
    diff --git a/v0.5.0/DuctAPE/api/private_postprocess/index.html b/v0.5.0/DuctAPE/api/private_postprocess/index.html new file mode 100644 index 00000000..8f8399a8 --- /dev/null +++ b/v0.5.0/DuctAPE/api/private_postprocess/index.html @@ -0,0 +1,100 @@ + +Postprocess · DuctAPE.jl
    DuctAPE.post_processFunction
    post_process(
    +    solver_options,
    +    converged_states,
    +    prepost_containers,
    +    solve_container_caching,
    +    solve_parameter_cache_vector,
    +    solve_parameter_cache_dims,
    +    operating_point,
    +    reference_parameters,
    +    A_bb_LU,
    +    airfoils,
    +    idmaps,
    +    problem_dimensions,
    +    multipoint_index;
    +    write_outputs=options.write_outputs,
    +    outfile=options.outfile,
    +    checkoutfileexists=options.checkoutfileexists,
    +    output_tuple_name=options.output_tuple_name,
    +    verbose=options.verbose,
    +)

    Post-process a converged nonlinear solve solution.

    Arguments

    • solver_options::SolverOptionsType : A SolverOptionsType object (also used for dispatch)
    • converged_states::Vector{Float} : the converged state variables
    • prepost_containers::NamedTuple : the named tuple containing pre-allocated containers for the pre- and post-processing intermediate calculations
    • solve_container_cache::NamedTuple : the cache and dimensions for intermediate values in the residual calculation
    • solve_parameter_cache_vector::Vector{Float} : the applicably typed cache vector for the solve parameters
    • solve_parameter_cache_dims::NamedTuple : the dimensions of the solver parameters
    • operating_point::OperatingPoint : the operating point being analyzed
    • reference_parameters::ReferenceParameters : a ReferenceParameters object
    • A_bb_LU::LinearAlgebra.LU : LinearAlgebra LU factorization of the LHS matrix
    • airfoils::Vector{AFType} : A matrix of airfoil types associated with each of the blade elements
    • idmaps::NamedTuple : A named tuple containing index mapping used in bookkeeping throughout solve and post-process
    • problem_dimensions::ProblemDimensions : A ProblemDimensions object

    Keyword Arguments

    • multipoint_index::Vector{Int} : a one-dimensional vector containing the index of which multipoint analysis operating point is being analyzed.
    • write_outputs=options.write_outputs::Vector{Bool} : a vector with the same length as number of multipoints indicating if the outputs should be saved.
    • outfile=options.outfile::Vector{String} : a vector of file paths/names for where outputs should be written
    • checkoutfileexists=options.checkoutfileexists::Bool : a flag for whether existing files should be checked for or if blind overwriting is okay.
    • output_tuple_name=options.output_tuple_name::Vector{String} : the variable name(s) of the named tuple of outputs to be written.
    • verbose::Bool=false : flag to print verbose statements

    Returns

    outs::NamedTuple : A named tuple containing all the output values including

    • bodies
      • panel_strengths
      • total_thrust
      • thrust_comp
      • induced_efficiency
      • cp_in
      • cp_out
      • cp_casing_in
      • cp_casing_out
      • casing_zpts
      • cp_nacelle_in
      • cp_nacelle_out
      • nacelle_zpts
      • cp_centerbody_in
      • cp_centerbody_out
      • centerbody_zpts
      • Vtot_in
      • Vtot_out
      • Vtot_prejump
      • vtot_body
      • vtot_jump
      • vtot_wake
      • vtot_rotors
      • Vtan_in
      • Vtan_out
      • vtan_casing_in
      • vtan_casing_out
      • vtan_nacelle_in
      • vtan_nacelle_out
      • vtan_centerbody_in
      • vtan_centerbody_out
    • rotors
      • circulation
      • panel_strengths
      • efficiency
      • inviscid_thrust
      • inviscid_thrust_dist
      • viscous_thrust
      • viscous_thrust_dist
      • thrust
      • CT
      • inviscid_torque
      • inviscid_torque_dist
      • viscous_torque
      • viscous_torque_dist
      • torque
      • CQ
      • inviscid_power
      • inviscid_power_dist
      • viscous_power
      • viscous_power_dist
      • power
      • CP
      • cl
      • cd
      • alpha
      • beta1
      • blade_normal_force_per_unit_span
      • blade_tangential_force_per_unit_span
    • wake
      • panel_strengths
    • totals
      • thrust
      • torque
      • power
      • CT
      • CQ
      • CP
      • total_efficiency
      • ideal_efficiency
    • intermediate_solve_values
      • vz_rotor
      • vtheta_rotor
      • Cm_wake
      • reynolds
      • mach
      • Cz_rotor
      • Ctheta_rotor
      • Cmag_rotor
      • Gamma_tilde
      • H_tilde
      • deltaGamma2
      • deltaH
      • vz_wake
      • vr_wake
      • Cm_avg
    source

    Velocities

    DuctAPE.get_body_tangential_velocitiesFunction
    get_body_tangential_velocities(
    +    gamb,
    +    gamw,
    +    sigr,
    +    ivb,
    +    Vinf,
    +    totnode,
    +    totpanel,
    +    nnode,
    +    npanel,
    +    tangent,
    +    controlpoints,
    +    endpanelidxs,
    +    wake_panel_ids_along_centerbody_wake_interface,
    +    wake_panel_ids_along_casing_wake_interface,
    +    centerbody_panel_ids_along_centerbody_wake_interface,
    +    duct_panel_ids_along_casing_wake_interface,
    +    num_casing_panels,
    +)

    Get the tangential velocities along the body surfaces.

    Arguments

    • gamb::Vector{Float} : the body panel strengths
    • gamw::Vector{Float} : the wake panel strengths
    • sigr::Vector{Float} : the rotor panel strengths
    • ivb::NamedTuple : the unit induced velocities on the bodies
    • Vinf::Vector{Float} : one element vector containing the freestream magnitude
    • totnode::Int : total number of nodes between all bodies
    • totpanel::Int : total number of panels between all bodies
    • nnode::Vector{Int} : number of nodes in each body
    • npanel::Vector{Int} : number of panels in each body.
    • tangent::Matrix{Float} : unit tangent vectors for each panel
    • controlpoints::Matrix{Float} : control point locations for each panel
    • endpanelidxs::Matrix{Int} : the indices of the first and last panels for each body
    • wake_panel_ids_along_centerbody_wake_interface::Vector{Int} : the indices of the wake panels coincident with the centerbody panels
    • wake_panel_ids_along_casing_wake_interface::Vector{Int} : the indices of the wake panels coincident with the duct casing (inner surface) panels
    • centerbody_panel_ids_along_centerbody_wake_interface::Vector{Int} : the indices of the centerbody panels coincident with the wake panels
    • duct_panel_ids_along_casing_wake_interface::Vector{Int} : the indices of the duct panels coincident with the wake panels
    • num_casing_panels::Int : the number of panels between the leading and trailing edge of the duct on the duct inner side (casing)

    Returns

    • vtan_tuple::NamedTuple : a named tuple containing the body tangential surface velocities and various useful breakdowns thereof.
    source
    DuctAPE.get_body_tangential_velocities!Function

    function getbodytangentialvelocities!( vtantuple, gamb, gamw, sigr, ivb, Vinf, totnode, totpanel, nnode, npanel, tangent, controlpoints, endpanelidxs, wakepanelidsalongcenterbodywakeinterface, wakepanelidsalongcasingwakeinterface, centerbodypanelidsalongcenterbodywakeinterface, ductpanelidsalongcasingwakeinterface, zpts, )

    In-place version of get_body_tangential_velocities.

    Additional Arguments

    • zpts::NamedTuple : a named tuple containing the z-coordinates of the control points of the duct casing, duct nacelle, and centerbody.
    source
    DuctAPE.calculate_vthetaFunction
    calculate_vtheta(Gamma_tilde, r)

    Calculate tangential velocity for a given net circulation and radial location

    Arguments

    • Gamma_tilde::Matrix{Float} : Sum of upstream circulation values
    • r::Matrix{Float} : blade element radial positions
    source
    DuctAPE.calculate_induced_velocities_on_bodywakeFunction
    calculate_induced_velocities_on_bodywake(
    +    vz_w, vr_w, gamw, vz_r, vr_r, sigr, vz_b, vr_b, gamb, Vinf
    +)

    Calculate the induced velocities on one of the body wakes (unit velocity inputs determine which one)

    Arguments

    • vz_w::Matrix{Float} : unit axial induced velocity of the wake onto the body wake
    • vr_w::Matrix{Float} : unit radial induced velocity of the wake onto the body wake
    • gamw::Vector{Float} : wake panel strengths
    • vz_r::Matrix{Float} : unit axial induced velocity of the rotor onto the body wake
    • vr_r::Matrix{Float} : unit radial induced velocity of the rotor onto the body wake
    • sigr::Vector{Float} : rotor panel strengths
    • vz_b::Matrix{Float} : unit axial induced velocity of the bodies onto the body wake
    • vr_b::Matrix{Float} : unit radial induced velocity of the bodies onto the body wake
    • gamb::Vector{Float} : body panel strengths
    • Vinf::Vector{Float} : one element vector containing the velocity magnitude
    source

    Pressures

    DuctAPE.steady_cpFunction
    steady_cp(Vs, Vinf, Vref)

    Calculate steady pressure coefficients for a given surface velocity.

    Arguments

    • Vs::Vector{Float} : the surface velocities
    • Vinf::Vector{Float} : one element vector with freestream mangnitude
    • Vref::Vector{Float} : one element vector with reference velocity used for non-dimensionalization

    Returns

    • cp::Vector{Float} : the steady pressure coefficients
    source
    DuctAPE.calculate_entropy_jumpsFunction
    calculate_entropy_jumps(sigr, Cz_rotor)

    Calculate jumps in entropy across the disks.

    Arguments

    • sigr::Matrix{Float} : rotor source panel strengths
    • Cz_rotor::Vector{Float} : absolute axial velocity on rotor blade elements

    Returns

    • deltaS::Vector{Float} : entropy jump across rotor disks
    source
    DuctAPE.calculate_rotor_jumpsFunction
    calculate_rotor_jumps(Gamr, Omega, B, sigr, Cz_rotor)

    Calculate net circulation and enthalpy and entropy disk jumps

    Arguments

    • Gamr::Matrix{Float} : Blade element circulation strengths
    • Omega::Vector{Float} : rotor rotation rates
    • B::Vector{Float} : blade count for each rotor (usually integers but could be a float)
    • sigr::Matrix{Float} : rotor source panel strengths
    • Cz_rotor::Vector{Float} : absolute axial velocity on rotor blade elements

    Returns

    • Gamma_tilde::Matrix{Float} : net upstream circulation
    • Htilde::Matrix{Float} : net upstream enthalpy jumps
    • Stilde::Matrix{Float} : net upstream entropy jumps
    source
    DuctAPE.delta_cpFunction
    delta_cp(deltaH, deltaS, Ctheta, Vref)

    Calculate change in pressure coefficient aft of rotor, due to rotor

    Arguments

    • deltaH::Vector{Float} : Enthalpy jumps across disks
    • deltaS::Vector{Float} : Entropy jumps across disks`
    • Ctheta::Vector{Float} : tangenetial velocity
    • Vref::Vector{Float} : reference velocity for non-dimensionalization

    Returns

    • delta_cp::Vector{Float} : pressure rises due to rotor disks
    source
    DuctAPE.calculate_body_delta_cp!Function
    calculate_body_delta_cp!(cp, Gamr, sigr, Cz_rotor, Vref, Omega, B, cpr, casing_panel_ids_aft_of_rotors, centerbody_panel_ids_aft_of_rotors)

    Augment surface pressure by change in pressure coefficient due to rotors specifically on the body panels aft of the rotors.

    Arguments

    • cp::Vector{Float} : steady pressure coeffients, modified in-place to include rotor effects.
    • Gamr::Matrix{Float} : Blade element circulation strengths
    • sigr::Matrix{Float} : rotor source panel strengths
    • Cz_rotor::Vector{Float} : absolute axial velocity on rotor blade elements
    • Vref::Vector{Float} : one element vector with reference velocity used for non-dimensionalization
    • Omega::Vector{Float} : rotor rotation rates
    • B::Vector{Float} : blade count for each rotor (usually integers but could be a float)
    • cpr::Vector{Float} : control point radial positions of body panels
    • casing_panel_ids_aft_of_rotors::Vector{Int} : duct indices of control point radial positions aft of rotors
    • centerbody_panel_ids_aft_of_rotors::Vector{Int} : centerbody indices of control point radial positions aft of rotors
    source
    DuctAPE.calculate_bodywake_delta_cpFunction
    calculate_bodywake_delta_cp(Gamr, sigr, Cz_rotor, Vref, Omega, B, cpr; body="duct")

    Calculate change in pressure coefficient due to rotors specifically on the body wakes

    Arguments

    • Gamr::Matrix{Float} : Blade element circulation strengths
    • sigr::Matrix{Float} : rotor source panel strengths
    • Cz_rotor::Vector{Float} : absolute axial velocity on rotor blade elements
    • Vref::Vector{Float} : one element vector with reference velocity used for non-dimensionalization
    • Omega::Vector{Float} : rotor rotation rates
    • B::Vector{Float} : blade count for each rotor (usually integers but could be a float)
    • cpr::Vector{Float} : control point radial positions of body wake "panels"

    Keyword Arguments

    • body::String="duct" : flag as to whether the body in question is a duct or centerbody.
    source
    DuctAPE.get_body_cpsFunction

    getbodycps( Vtanin, Vtanout, Gamr, sigr, Czrotor, Vinf, Vref, B, Omega, casingpanelidsaftofrotors, centerbodypanelidsaftof_rotors, controlpoints, endpanelidxs, zpts, )

    Description

    Arguments

    • Vtan_in::Vector{Float} : Tangential velocity on the inside of the body panels
    • Vtan_out::Vector{Float} : Tangential velocity on the outside of the body panels
    • Gamr::Matrix{Float} : Blade element circulation strengths
    • sigr::Matrix{Float} : rotor source panel strengths
    • Cz_rotor::Vector{Float} : absolute axial velocity on rotor blade elements
    • Vinf::Vector{Float} : one element vector with freestream mangnitude
    • Vref::Vector{Float} : one element vector with reference velocity used for non-dimensionalization
    • B::Vector{Float} : blade count for each rotor (usually integers but could be a float)
    • Omega::Vector{Float} : rotor rotation rates
    • casing_panel_ids_aft_of_rotors::Vector{Int} : duct indices of control point radial positions aft of rotors
    • centerbody_panel_ids_aft_of_rotors::Vector{Int} : centerbody indices of control point radial positions aft of rotors
    • controlpoints::Matrix{Float} : control point locations for each panel
    • endpanelidxs::Matrix{Int} : the indices of the first and last panels for each body
    • zpts::NamedTuple : a named tuple containing the z-coordinates of the control points of the duct casing, duct nacelle, and centerbody.

    Returns

    • cp_tuple::NamedTuple : body surface velocities and various useful breakdowns thereof.
    source
    DuctAPE.get_body_cps!Function
    get_body_cps!(
    +    cp_tuple,
    +    Vtan_in,
    +    Vtan_out,
    +    Gamr,
    +    sigr,
    +    Cz_rotor,
    +    Vinf,
    +    Vref,
    +    B,
    +    Omega,
    +    duct_panel_ids_aft_of_rotors,
    +    centerbody_panel_ids_aft_of_rotors,
    +    controlpoints,
    +    endpanelidxs,
    +    zpts,
    +)

    In-place version of get_body_cps.

    source
    DuctAPE.get_bodywake_cpsFunction
    get_bodywake_cps(
    +    Gamr,
    +    vz_w,
    +    vr_w,
    +    gamw,
    +    vz_r,
    +    vr_r,
    +    sigr,
    +    vz_b,
    +    vr_b,
    +    gamb,
    +    panels,
    +    Cz_rotor,
    +    Omega,
    +    B,
    +    Vinf,
    +    Vref;
    +    body="duct",
    +)

    Calculate the pressure coefficient distributions on one of the body wakes

    Arguments

    • Gamr::Matrix{Float} : Blade element circulation strengths
    • vz_w::Matrix{Float} : unit axial induced velocity of the wake onto the body wake
    • vr_w::Matrix{Float} : unit radial induced velocity of the wake onto the body wake
    • gamw::Vector{Float} : wake panel strengths
    • vz_r::Matrix{Float} : unit axial induced velocity of the rotor onto the body wake
    • vr_r::Matrix{Float} : unit radial induced velocity of the rotor onto the body wake
    • sigr::Vector{Float} : rotor panel strengths
    • vz_b::Matrix{Float} : unit axial induced velocity of the bodies onto the body wake
    • vr_b::Matrix{Float} : unit radial induced velocity of the bodies onto the body wake
    • gamb::Vector{Float} : body panel strengths
    • panels::NamedTuple : A named tuple containing bodywake "panel" geometries
    • Cz_rotor::Vector{Float} : absolute axial velocity on rotor blade elements
    • Omega::Vector{Float} : rotor rotation rates
    • B::Vector{Float} : blade count for each rotor (usually integers but could be a float)
    • Vinf::Vector{Float} : one element vector containing the velocity magnitude
    • Vref::Vector{Float} : one element vector with reference velocity used for non-dimensionalization

    Keyword Arguments

    • body::String="duct" : flag as to whether the body in question is a duct or centerbody.
    source
    DuctAPE.forces_from_pressureFunction
    forces_from_pressure(cp_in, cp_out, panels; rhoinf=1.225, Vref=1.0)

    Calculate dimensional and non-dimensional axial force on a single body

    Arguments

    • cp_in::Vector{Float} : pressure coefficient on inside of body surfaces
    • cp_out::Vector{Float} : pressure coefficients on outside of body surfaces
    • panels::NamedTuple : A named tuple containing panel geometry information

    Keyword Arguments

    • rhoinf::Float=1.225 : reference density for non-dimensionalization
    • Vref::Float=1.0 : reference velocity for non-dimensionalization

    Returns

    • thrust::Vector{Float} : dimensional axial force
    • force_coeff::Vector{Float} : non-dimensional axial force
    source
    DuctAPE.forces_from_TEpanels!Function
    forces_from_TEpanels!(
    +    thrust, force_coeff, cp_in, cp_out, panels; rhoinf=1.225, Vref=1.0
    +)

    Add force induced by trailing edge gap panels to total forces.

    Arguments

    • thrust::Vector{Float} : dimensional axial force
    • force_coeff::Vector{Float} : non-dimensional axial force
    • cp_in::Vector{Float} : pressure coefficient on inside of body surfaces
    • cp_out::Vector{Float} : pressure coefficients on outside of body surfaces
    • panels::NamedTuple : A named tuple containing panel geometry information

    Keyword Arguments

    • rhoinf::Float=1.225 : reference density for non-dimensionalization
    • Vref::Float=1.0 : reference velocity for non-dimensionalization
    source

    Rotor Performance

    DuctAPE.inviscid_rotor_thrustFunction
    inviscid_rotor_thrust(Ctheta_rotor, Gamma_tilde, rotor_panel_length, rhoinf)

    Calculate inviscid rotor thrust.

    Arguments

    • Ctheta_rotor::Vector{Float} : Absolute tangential velocity on rotor blade elements
    • Gamma_tilde::Matrix{Float} : net upstream rotor circulation
    • rotor_panel_length::Vector{Float} : dimensional lengths on which blade element values apply
    • rhoinf::Float : freestream density

    Returns

    • Tinv::Vector{Float} : inviscid dimensional thrust
    • dTi::Vector{Float} : inviscid dimensional thrust distribution
    source
    DuctAPE.inviscid_rotor_thrust!Function
    inviscid_rotor_thrust!(
    +    Tinv, dTi, Ctheta_rotor, Gamma_tilde, rotor_panel_length, rhoinf
    +)

    In-place version of inviscid_rotor_thrust.

    source
    DuctAPE.viscous_rotor_thrustFunction
    viscous_rotor_thrust(
    +    Cz_rotor, Cmag_rotor, B, chord, rotor_panel_length, cd, rhoinf
    +)

    Calculate visous rotor "thrust."

    Arguments

    • Cz_rotor::Vector{Float} : Absolute axial velocity on rotor blade elements
    • Cmag_rotor::Vector{Float} : Absolute inflow velocity magnitude on rotor blade elements
    • B::Vector{Float} : blade count for each rotor (usually integers but could be a float)
    • chord::Vector{Float} : blade element chord lengths
    • rotor_panel_length::Vector{Float} : dimensional lengths on which blade element values apply
    • cd::Vector{Float} : drag coefficient for each blade element
    • rhoinf::Float : freestream density

    Returns

    • Tvisc::Vector{Float} : viscous dimensional thrust
    • dTv::Vector{Float} : viscous dimensional thrust distribution
    source
    DuctAPE.viscous_rotor_thrust!Function
    viscous_rotor_thrust!(
    +    Tvisc, dTv, Cz_rotor, Cmag_rotor, B, chord, rotor_panel_length, cd, rhoinf
    +)

    In-place version of viscous_rotor_thrust.

    source
    DuctAPE.inviscid_rotor_torqueFunction
    inviscid_rotor_torque(
    +    Cz_rotor, rotor_panel_center, rotor_panel_length, Gamma_tilde, rhoinf
    +)

    Calculate inviscid rotor torque.

    Arguments

    • Cz_rotor::Vector{Float} : Absolute axial velocity on rotor blade elements
    • rotor_panel_center::Vector{Float} : radial location of rotor blade elements
    • rotor_panel_length::Vector{Float} : dimensional lengths on which blade element values apply
    • Gamma_tilde::Matrix{Float} : net upstream rotor circulation
    • rhoinf::Float : freestream density

    Returns

    • Qinv::Vector{Float} : inviscid dimensional thrust
    • dQi::Vector{Float} : inviscid dimensional thrust distribution
    source
    DuctAPE.inviscid_rotor_torque!Function
    inviscid_rotor_torque!(
    +    Qinv, dQi, Cz_rotor, rotor_panel_center, rotor_panel_length, Gamma_tilde, rhoinf
    +)

    In-place version of inviscid_rotor_torque.

    source
    DuctAPE.viscous_rotor_torqueFunction
    viscous_rotor_torque(
    +    Ctheta_rotor, Cmag_rotor, B, chord, rotor_panel_center, rotor_panel_length, cd, rhoinf
    +)

    Calculate viscous rotor torque.

    Arguments

    • Ctheta_rotor::Vector{Float} : Absolute tangential velocity on rotor blade elements
    • Cmag_rotor::Vector{Float} : Absolute inflow velocity magnitude on rotor blade elements
    • B::Vector{Float} : blade count for each rotor (usually integers but could be a float)
    • chord::Vector{Float} : blade element chord lengths
    • rotor_panel_center::Vector{Float} : radial location of rotor blade elements
    • rotor_panel_length::Vector{Float} : dimensional lengths on which blade element values apply
    • cd::Vector{Float} : drag coefficient for each blade element
    • rhoinf::Float : freestream density

    Returns

    • Qvisc::Vector{Float} : viscous dimensional thrust
    • dQv::Vector{Float} : viscous dimensional thrust distribution
    source
    DuctAPE.viscous_rotor_torque!Function
    viscous_rotor_torque!(
    +    Qvisc,
    +    dQv,
    +    Ctheta_rotor,
    +    Cmag_rotor,
    +    B,
    +    chord,
    +    rotor_panel_center,
    +    rotor_panel_length,
    +    cd,
    +    rhoinf
    +)

    In-place version of viscous_rotor_torque.

    source
    DuctAPE.rotor_powerFunction
    rotor_power(Q, dQ, Omega)

    Calculate power from torque and rotation rate.

    Arguments

    • Q::Vector{Float} : dimensional thrust
    • dQ::Vector{Float} : dimensional thrust distribution
    • Omega::Vector{Float} : rotor rotation rates

    Returns

    • P::Vector{Float} : dimensional power
    • dP::Vector{Float} : dimensional thrust distribution
    source
    DuctAPE.get_total_efficiencyFunction
    get_total_efficiency(total_thrust, total_power, Vinf)

    Get total efficiency.

    Arguments

    • total_thrust::Vector{Float} : total thrust
    • total_power::Vector{Float} : total power
    • Vinf::Vector{Float} : one element vector freestream velocity magnitude

    Returns

    • `total_efficiency::Vector{Float} : total efficiency
    source
    DuctAPE.get_induced_efficiencyFunction
    get_induced_efficiency(Tinv, Tduct, Pinv, Vinf)

    Get rotor efficiency induced by presence of the duct.

    Arguments

    • Tinv::Vector{Float} : inviscid dimensional thrust
    • Tduct::Vector{Float} : duct thrust
    • Pinv::Vector{Float} : inviscid dimensional power
    • Vinf::Vector{Float} : one element vector freestream velocity magnitude

    Returns

    • induced_efficiency::Vector{Float} : rotor efficiency induced by duct
    source
    DuctAPE.get_ideal_efficiencyFunction
    get_ideal_efficiency(total_thrust, rhoinf, Vinf, Rref)

    Compute ducted fan ideal efficiency

    Arguments

    • total_thrust::Vector{Float} : total thrust from rotors and duct
    • rhoinf::Float : freestream density
    • Vinf::Vector{Float} : one element vector freestream velocity magnitude
    • Rref::Vector{Float} : one element vector reference rotor tip radius

    Returns

    • ideal_efficiency::Vector{Float} : ideal ducted fan efficiency
    source
    DuctAPE.tqpcoeffFunction
    tqpcoeff(thrust, torque, power, rhoinf, Omega, Rref)

    Calculate non-dimensional thrust, torque, and power coefficients

    Arguments

    • thrust::Vector{Float} : dimensional thrust
    • torque::Vector{Float} : dimensional torque
    • power::Vector{Float} : dimensional power
    • rhoinf::Float : freestream density
    • Omega::Vector{Float} : rotor rotation rates
    • Rref::Vector{Float} : one element vector reference rotor tip radius

    Returns

    • CT::Vector{Float} : thrust coefficient
    • CQ::Vector{Float} : torque coefficient
    • CP::Vector{Float} : power coefficient
    source
    DuctAPE.tqpcoeff!Function
    tqpcoeff!(CT, CQ, CP, thrust, torque, power, rhoinf, Omega, Rref)

    In-place version of tqpcoeff.

    source
    DuctAPE.get_blade_loadsFunction
    get_blade_loads(Cmag_rotor, beta1, cl, cd, chords, rhoinf)

    Get loading along blades.

    Arguments

    • Cmag_rotor::Vector{Float} : blade element inflow magnitudes
    • beta1::Vector{Float} : blade element inflow angles
    • cl::Vector{Float} : blade element lift coefficients
    • cd::Vector{Float} : blade element drag coefficients
    • chords::Vector{Float} : blade element chord lengths
    • rhoinf::Vector{Float} : one element freestream density

    Returns

    • Np::Vector{Float} : blade loading per unit length in the normal direction: N'
    • Tp::Vector{Float} : blade loading per unit length in the tangential direction: T'
    source
    DuctAPE.get_blade_loads!Function
    get_blade_loads!(Np, Tp, Cmag_rotor, beta1, cl, cd, chords, rhoinf, cache)

    In-place version of get_blade_loads.

    source
    diff --git a/v0.5.0/DuctAPE/api/private_prelims/index.html b/v0.5.0/DuctAPE/api/private_prelims/index.html new file mode 100644 index 00000000..d75e436b --- /dev/null +++ b/v0.5.0/DuctAPE/api/private_prelims/index.html @@ -0,0 +1,16 @@ + +Prelims · DuctAPE.jl

    Option Types

    DuctAPE.DFDC_optionsFunction
    function DFDC_options(;
    +    grid_solver_options=SLORGridSolverOptions(),
    +    solver_options=CSORSolverOptions(),
    +    kwargs...,
    +)

    Convenience function to select options used in DFDC.

    source
    function DFDC_options(
    +    multipoint;
    +    grid_solver_options=SLORGridSolverOptions(),
    +    solver_options=CSORSolverOptions(),
    +    kwargs...,
    +)

    Convenience function to select options used in DFDC and run multipoint analysis.

    Arguments

    • multipoint::Vector : doesn't need to be anything but a vector of the length of multipoints.
    source
    DuctAPE.ConvergenceTypeType
    abstract type ConvergenceType

    Used in dispatching the CSOR (controlled successive over relaxation) residual as relative or absolute.

    source
    DuctAPE.RelativeType
    struct Relative <: ConvergenceType

    Used to dispatch the relative residual for CSOR (controlled successive over relaxation) method

    source
    DuctAPE.AbsoluteType
    struct Absolute <: ConvergenceType

    Used to dispatch the absolute residual for CSOR (controlled successive over relaxation) method

    source

    Bookkeeping

    DuctAPE.get_problem_dimensionsFunction
    get_problem_dimensions(paneling_constants::PanelingConstants)
    +get_problem_dimensions(body_vortex_panels, rotor_source_panels, wake_vortex_panels)

    Determine all relevant dimensions to the problem based either on the paneling_constants or the panels themselves.

    Arguments

    • paneling_constants::PanelingConstants : Rotor (and possibly stator) geometric paramters.

    Returns

    • problem_dimensions::ProblemDimensions : ProblemDimensions object.
    source
    source

    Caching

    Allocation

    The following are various helper functions used in preallocating the various caches.

    DuctAPE.initialize_all_cachesFunction
    initialize_all_caches(solver_options, paneling_constants)

    Convenience function to initialize all caches before calling analysis.

    Arguments

    • solver_options::SolverOptionsType : solver options used for cache allocation dispatch
    • paneling_constants::PanelingConstants : PanelingConstants object upon which all cache sizing depends

    Keyword Arguments

    • fd_chunk_size::Int=12 : chunk size to use for PreallocationTools caches. Note that the automated chunk size for DuctAPE will always be the ForwardDiff threshold of 12 due to the size of the system, so it will be best to leave this at the default unless further development allows for chunk size selection for individual solvers.
    • levels::Int=1 : levels for nested duals. Note that since ImplicitAD is being used for all solves, there should be no need for more than 1 level.

    Returns

    • prepost_container_caching::NamedTuple : A named tuple containing the PreallocationTools DiffCache and a named tuple with relevant dimensions for accessing the cache.
    • solve_parameter_caching::NamedTuple : A named tuple containing the PreallocationTools DiffCache and a named tuple with relevant dimensions for accessing the cache.
    • solve_container_caching::NamedTuple : A named tuple containing the PreallocationTools DiffCache and a named tuple with relevant dimensions for accessing the cache.
    source
    DuctAPE.allocate_wake_panel_container!Function
    allocate_wake_panel_containers!(total_length, problem_dimensions::ProblemDimensions)

    A helper function is assembling the prepostcontainercache.

    Arguments

    • total_length::Vector{Int} : a one-element vector used to store the total length in order to know how large of a cache to allocate. Is updated in place.
    • problem_dimensions::ProblemDimensions : a ProblemDimensions object

    Returns

    • wake_vortex_panels::NamedTuple : A named containing the dimensions needed to reshape the cache with regards to the wake vortex panel object
    source
    DuctAPE.allocate_panel_containers!Function
    allocate_panel_containers!(total_length, problem_dimensions::ProblemDimensions)

    A helper function is assembling the prepostcontainercache.

    Arguments

    • total_length::Vector{Int} : a one-element vector used to store the total length in order to know how large of a cache to allocate. Is updated in place.
    • problem_dimensions::ProblemDimensions : a ProblemDimensions object

    Returns

    • panels::NamedTuple : A named tuple of named tuples containing the dimensions needed to reshape the cache with regards to the panel objects
    source
    DuctAPE.allocate_panel_container!Function
    allocate_panel_container!(total_length, nn, np, tn, tp, nb)

    A helper function is assembling the prepostcontainercache.

    Arguments

    • total_length::Vector{Int} : a one-element vector used to store the total length in order to know how large of a cache to allocate. Is updated in place.
    • nn::Int : number of nodes in each body, rotor, or wake sheet
    • np::Int : number of panels in each body, rotor, or wake sheet
    • tn::Int : number of total nodes among the bodies, rotors, or wake sheets
    • tp::Int : number of total panels among the bodies, rotors, or wake sheets
    • nb::Int : number of bodies, rotors, or wake sheets

    Returns

    • panel::NamedTuple : A named containing the dimensions needed to reshape the cache with regards to an arbitrary panel set
    source
    DuctAPE.allocate_body_panel_container!Function
    allocate_body_panel_containers!(total_length, problem_dimensions::ProblemDimensions)

    A helper function is assembling the prepostcontainercache.

    Arguments

    • total_length::Vector{Int} : a one-element vector used to store the total length in order to know how large of a cache to allocate. Is updated in place.
    • problem_dimensions::ProblemDimensions : a ProblemDimensions object

    Returns

    • body_vortex_panels::NamedTuple : A named tuple containing the dimensions needed to reshape the cache with regards to the body vortex panel object
    source
    DuctAPE.allocate_rotor_panel_container!Function
    allocate_rotor_panel_containers!(total_length, problem_dimensions::ProblemDimensions)

    A helper function is assembling the prepostcontainercache.

    Arguments

    • total_length::Vector{Int} : a one-element vector used to store the total length in order to know how large of a cache to allocate. Is updated in place.
    • problem_dimensions::ProblemDimensions : a ProblemDimensions object

    Returns

    • rotor_source_panels::NamedTuple : A named containing the dimensions needed to reshape the cache with regards to the rotor source panel object
    source
    DuctAPE.allocate_solve_parameter_extras!Function
    allocate_solve_parameter_extras!(
    +    solver_options::SolverOptionsType, input_length, total_length
    +)

    Includes additional caching for various solvers. Currently only does anything for SIAMFANLEOptions types.

    Arguments

    • input_length::Int : the number of state variables in the solver
    • total_length::Vector{Int} : a one-element vector used to store the total length in order to know how large of a cache to allocate. Is updated in place.

    Returns

    • solve_parameter_extras::NamedTuple : A named tuple containing dimensions related to extra caching parameters used in various solvers.
    source
    DuctAPE.allocate_grid_parameter_cacheFunction
    allocate_grid_parameter_cache(pg, x, n)

    Allocate a cache used inside the elliptic grid solve.

    Arguments

    • pg::AbstractArray{Float,3} : the proposed grid array
    • x::AbstractVector{Float} : the array of ξ values used in the solve
    • n::AbstractVector{Float} : the array of η values used in the solve

    Returns

    • grid_parameter_cache::NamedTuple : A named tuple containing the PreallocationTools DiffCache and dimensions for accessing it.
    source
    DuctAPE.allocate_integration_containersFunction
    allocate_integration_containers(
    +    integration_options::IntegrationMethod, dispatch_type; cache_size=20
    +)

    Description

    Arguments

    • integration_options::IntegrationMethod : options for integration used for dispatch and to size cache
    • dispatch_type:: : an object with eltype(dispatch_type) with which to define the type for cache initialization.

    Keyword Arguments

    • cache_size::Int=20 : size needed for intermediate calculations for integration.

    Returns

    • integration_containers::NamedTuple : A named tuple containing the cache(s) needed for integration.
    source

    Reshaping

    The following are used internally to reshape the cache vectors into more usable formats.

    DuctAPE.withdraw_prepost_container_cacheFunction
    withdraw_prepost_container_cache(vec, dims)

    Reshape the prepost cache vector using the saved dimensions tuple.

    Arguments

    • vec::Vector{Float} : vector cache of pre- and post-processing intermediate containers.
    • dims::NamedTuple : Named tuple containing the indices and shape of the various items stored in the cache vector.

    Returns

    • prepost_container_caching::NamedTuple : Named tuple containing reshaped views of sections of the cache vector.
    source
    DuctAPE.withdraw_solve_parameter_cacheFunction
    withdraw_solve_parameter_cache(solver_options::SolverOptionsType, vec, dims)

    Reshape the solve parameter cache vector using the saved dimensions tuple.

    Arguments

    • solver_options::SolverOptionsType : Solver options type for dispatch.
    • vec::Vector{Float} : vector cache of pre- and post-processing intermediate containers.
    • dims::NamedTuple : Named tuple containing the indices and shape of the various items stored in the cache vector.

    Returns

    • solve_parameter_caching::NamedTuple : Named tuple containing reshaped views of sections of the cache vector.
    source
    DuctAPE.withdraw_solve_container_cacheFunction
    withdraw_solve_container_cache(solver_options::SolverOptionsType, vec, dims)

    Reshape the intermediate solve container cache vector using the saved dimensions tuple.

    Arguments

    • solver_options::SolverOptionsType : Solver options type for dispatch.
    • vec::Vector{Float} : vector cache of pre- and post-processing intermediate containers.
    • dims::NamedTuple : Named tuple containing the indices and shape of the various items stored in the cache vector.

    Returns

    • solve_container_caching::NamedTuple : Named tuple containing reshaped views of sections of the cache vector.
    source
    DuctAPE.withdraw_grid_parameter_cacheFunction
    withdraw_grid_parameter_cache(vec, dims)

    Reshape the cache used inside the elliptic grid solve.

    Arguments

    • vec::Vector{Float} : the cache vector
    • dims::NamedTuple : the named tuple of dimensions used to reshape the cache vector

    Returns

    • proposed_grid::AbstractArray{Float,3} : the proposed grid array
    • xi::AbstractVector{Float} : the array of ξ values used in the solve
    • eta::AbstractVector{Float} : the array of η values used in the solve
    source
    diff --git a/v0.5.0/DuctAPE/api/private_preprocess/index.html b/v0.5.0/DuctAPE/api/private_preprocess/index.html new file mode 100644 index 00000000..b923a73b --- /dev/null +++ b/v0.5.0/DuctAPE/api/private_preprocess/index.html @@ -0,0 +1,447 @@ + +Preprocess · DuctAPE.jl

    General

    DuctAPE.set_index_mapsFunction
    set_index_maps(
    +    npanels,
    +    ncenterbody_inlet,
    +    nwake_sheets,
    +    dte_minus_cbte,
    +    wnm,
    +    wenids,
    +    nwp,
    +    nwsp,
    +    nbn,
    +    ndp,
    +    riiw,
    +    nrotor,
    +)

    Set values for index map to be used throughout solve and post-process.

    Arguments

    • npanels : paneling_constants.npanels
    • ncenterbody_inlet : paneling_constants.ncenterbody_inlet
    • nwake_sheets : paneling_constants.nwake_sheets
    • dte_minus_cbte : paneling_constants.dte_minus_cbte
    • wnm : wake_vortex_panels.nodemap
    • wenids : wake_vortex_panels.endnodeidxs
    • nwp : problem_dimensions.nwp
    • nwsp : problem_dimensions.nwsp
    • nbn : problem_dimensions.nbn
    • ndp : body_vortex_panels.npanel[1]
    • riiw : rotor_indices_in_wake
    • nrotor : problem_dimensions.nrotor

    Returns

    • idmaps::NamedTuple : A named tuple containing index mapping used in bookkeeping throughout solve and post-process
    source
    DuctAPE.precompute_parametersFunction
    precompute_parameters(
    +    ducted_rotor,
    +    operating_point;
    +    grid_solver_options=GridSolverOptions(),
    +    integration_options=IntegrationOptions(),
    +    autoshiftduct=true,
    +    itcpshift=0.05,
    +    axistol=1e-15,
    +    tegaptol=1e1 * eps(),
    +    finterp=(x,y,xp)->FLOWMath.akima(x,y,xp,2.0*eps(),eps()),
    +    silence_warnings=true,
    +    verbose=false,
    +)

    Out of place main pre-processing function that computes all the required parameters for the solve.

    Arguments

    • ducted_rotor::DuctedRotor : A DuctedRotor object
    • operating_point::OperatingPoint : A OperatingPoint object

    Keyword Arguments

    • grid_solver_options::GridSolverOptionsType=GridSolverOptions() : A GridSolverOptionsType object
    • integration_options::IntegrationMethod=IntegrationOptions() : An IntegrationMethod object
    • autoshiftduct::Bool=true : flag to shift duct geometry based on rotor tip radius
    • itcpshift::Float=0.05 : value used in positioning the internal pseudo control point in the solid bodies. Default is DFDC hard-coded value.
    • axistol::Float=1e-15 : tolerance for how close to the axis of rotation to be considered on the axis.
    • tegaptol::Float=1e1 * eps() : tolerance for how large of a trailing edge gap is considered a gap.
    • finterp::Function=FLOWMath.akima : interpolation method for re-interpolating body coordinates
    • silence_warnings::Bool=true : flag to silence warnings
    • verbose::Bool=false : flag to print verbose statements

    Returns

    • ivr::NamedTuple : A named tuple containing arrays of induced velocities on the rotors
    • ivw::NamedTuple : A named tuple containing arrays of induced velocities on the wake
    • ivb::NamedTuple : A named tuple containing arrays of induced velocities on the bodies
    • linsys::NamedTuple : A named tuple containing cacheable data for the linear system, including:
      • A_bb::Array{Float} : AIC (LHS) matrix for the panel method system
      • b_bf::Array{Float} : Initial system RHS vector based on freestrem magnitude
      • A_br::Array{Float} : Unit normal velocity from rotors onto body panels
      • A_pr::Array{Float} : Unit normal velocity from rotors onto body internal psuedo control points
      • A_bw::Array{Float} : Unit normal velocity from wake onto body panels
      • A_pw::Array{Float} : Unit normal velocity from wake onto body internal psuedo control points
    • A_bb_LU::LinearAlgebra.LU : LinearAlgebra LU factorization of the LHS matrix
    • lu_decomp_flag::Vector{Bool} : flag for whether factorization was successful
    • blade_elements::NamedTuple : A named tuple containing cacheable blade element information (see docs for interpolate_blade_elements)
    • airfoils::Vector{AFType} : A matrix of airfoil types associated with each of the blade elements
    • wakeK::Matrix{Float} : A matrix of precomputed geometric constants used in the calculation of the wake vortex strengths
    • idmaps::NamedTuple : A named tuple containing index mapping used in bookkeeping throughout solve and post-process
    • panels::NamedTuple : A named tuple of panel objects including:
      • body_vortex_panels::NamedTuple : the named tuple containing the body vortex panel information
      • rotor_source_panels::NamedTuple : the named tuple containing the rotor source panel information
      • wake_vortex_panels::NamedTuple : the named tuple containing the wake vortex panel information
    • problem_dimensions::ProblemDimensions : A ProblemDimensions object
    source
    precompute_parameters(
    +    rp_duct_coordinates,
    +    rp_centerbody_coordinates,
    +    wake_grid,
    +    rotor_indices_in_wake,
    +    Rtips,
    +    Rhubs,
    +    rotor,
    +    paneling_constants,
    +    operating_point,
    +    integration_options,
    +    problem_dimensions=nothing;
    +    itcpshift=0.05,
    +    axistol=1e-15,
    +    tegaptol=1e1 * eps(),
    +    silence_warnings=true,
    +    verbose=false,
    +)

    An alternate version of precompute_parameters allowing for user defined geometry that does not go through a re-panling step (use with caution).

    The first inputs are the outputs of the reinterpolate_geometry and get_blade_ends_from_body_geometry functions.

    source
    DuctAPE.precompute_parameters!Function
    precompute_parameters!(
    +    ivr,
    +    ivw,
    +    blade_element_cache,
    +    linsys,
    +    wakeK,
    +    ducted_rotor,
    +    operating_point,
    +    prepost_containers,
    +    problem_dimensions;
    +    grid_solver_options=GridSolverOptions(),
    +    integration_options=IntegrationOptions(),
    +    autoshiftduct=true,
    +    itcpshift=0.05,
    +    axistol=1e-15,
    +    tegaptol=1e1 * eps(),
    +    finterp=(x,y,xp)->FLOWMath.akima(x,y,xp,2.0*eps(),eps()),
    +    silence_warnings=true,
    +    verbose=false,
    +)

    In-place version of precompute_parameters.

    source
    precompute_parameters!(
    +    ivr,
    +    ivw,
    +    blade_element_cache,
    +    linsys,
    +    wakeK,
    +    wake_grid,
    +    rp_duct_coordinates,
    +    rp_centerbody_coordinates,
    +    rotor_indices_in_wake,
    +    rotor,
    +    paneling_constants,
    +    operating_point,
    +    prepost_containers,
    +    problem_dimensions=nothing;
    +    integration_options=IntegrationOptions(),
    +    itcpshift=0.05,
    +    axistol=1e-15,
    +    tegaptol=1e1 * eps(),
    +    finterp=(x,y,xp)->FLOWMath.akima(x,y,xp,2.0*eps(),eps()),
    +    silence_warnings=true,
    +    verbose=false,
    +)

    In-place version of the precompute_parameters function by-passing the geometry reinterpolateion. (Use with caution)

    source

    Geometry

    DuctAPE.reinterpolate_geometryFunction
    reinterpolate_geometry(
    +    problem_dimensions,
    +    duct_coordinates,
    +    centerbody_coordinates,
    +    rotor,
    +    paneling_constants;
    +    autoshiftduct=true,
    +    grid_solver_options=GridSolverOptions(),
    +    finterp=(x,y,xp)->FLOWMath.akima(x,y,xp,2.0*eps(),eps()),
    +    verbose=false,
    +    silence_warnings=true,
    +)

    Re-interpolate the body geometry and return compatible body and way geometry.

    Arguments

    • problem_dimensions::ProblemDimensions : A ProblemDimensions object
    • duct_coordinates::Matrix{Float} : [z,r] coordinates of duct geometry
    • centerbody_coordinates::Matrix{Float} : [z,r] coordinates of centerbody geometry
    • rotor::Rotor : A Rotor object
    • paneling_constants::PanelingConstants : A PanelingConstants object

    Keyword Arguments

    • autoshiftduct::Bool=true : flag to shift duct geometry based on rotor tip radius
    • grid_solver_options::SolverOptionsType=GridSolverOptions() : options for the wake grid position solver
    • finterp::Function=FLOWMath.akima : interpolation method for re-interpolating body coordinates
    • verbose::Bool=false : flag to print verbose statements
    • silence_warnings::Bool=true : flag to silence warnings

    Returns

    • wake_grid::Array{Float} : array containig the z and r elliptic grid points defning the wake geometry.
    • rp_duct_coordinates::Matrix{Float} : matrix containing the re-paneled duct coordinates
    • rp_centerbody_coordinates::Matrix{Float} : matrix containing the re-paneled centerbody coordinates
    • rotor_indices_in_wake::Vector{Int} : vector containing the indices of where in the wake the rotors reside (used later to define the rotor panel edges).
    source
    DuctAPE.reinterpolate_geometry!Function
    reinterpolate_geometry!(
    +    wake_grid,
    +    rp_duct_coordinates,
    +    rp_centerbody_coordinates,
    +    rotor_indices_in_wake,
    +    duct_coordinates,
    +    centerbody_coordinates,
    +    rotor,
    +    blade_element_cache,
    +    paneling_constants;
    +    autoshiftduct=true,
    +    grid_solver_options=GridSolverOptions(),
    +    finterp=(x,y,xp)->FLOWMath.akima(x,y,xp,2.0*eps(),eps()),
    +    verbose=false,
    +    silence_warnings=true,
    +)

    In-place version of reinterpolate_geometry.

    source
    DuctAPE.generate_all_panelsFunction
    generate_all_panels(
    +    rp_duct_coordinates,
    +    rp_centerbody_coordinates,
    +    nwake_sheets,
    +    rotor_indices_in_wake,
    +    rotorzloc,
    +    wake_grid;
    +    itcpshift=0.05,
    +    axistol=1e-15,
    +    tegaptol=1e1 * eps(),
    +    silence_warnings=true,
    +)

    Function that calls all of the various panel generation functions are returns a named tuple containing all the panels

    Arguments

    • rp_duct_coordinates::Matrix{Float} : matrix containing the re-paneled duct coordinates
    • rp_centerbody_coordinates::Matrix{Float} : matrix containing the re-paneled centerbody coordinates
    • nwake_sheets::Int : number of wake sheets
    • rotor_indices_in_wake::Vector{Int} : vector containing the indices of where in the wake the rotors reside (used later to define the rotor panel edges).
    • rotorzloc:Vector{Float} : axial locations of rotor lifting lines (contained in Rotor)
    • wake_grid::Array{Float} : array containig the z and r elliptic grid points defning the wake geometry.

    Keyword Arguments

    • itcpshift::Float=0.05 : value used in positioning the internal pseudo control point in the solid bodies. Default is DFDC hard-coded value.
    • axistol::Float=1e-15 : tolerance for how close to the axis of rotation to be considered on the axis.
    • tegaptol::Float=1e1 * eps() : tolerance for how large of a trailing edge gap is considered a gap.
    • silence_warnings::Bool=true : flag to silence warnings

    Returns

    • panels::NamedTuple : A named tuple of named tuples containing paneling information, including:
      • body_vortex_panels::NamedTuple
      • rotor_source_panels::NamedTuple
      • wake_vortex_panels::NamedTuple
    source
    DuctAPE.generate_all_panels!Function
    generate_all_panels!(
    +    panels,
    +    wake_grid,
    +    rp_duct_coordinates,
    +    rp_centerbody_coordinates,
    +    rotor_indices_in_wake,
    +    rotorzloc,
    +    nwake_sheets;
    +    itcpshift=0.05,
    +    axistol=1e-15,
    +    tegaptol=1e1 * eps(),
    +    silence_warnings=true,
    +)

    In-place version of generate_all_panels.

    source

    Wake

    DuctAPE.discretize_wakeFunction
    discretize_wake(
    +    duct_coordinates,
    +    centerbody_coordinates,
    +    rotorzloc, # rotor axial locations
    +    wake_length,
    +    npanels,
    +    dte_minus_cbte;
    +)

    Calculate wake sheet panel node z-coordinates.

    Arguments

    • duct_coordinates::Matrix{Float} : Array of input duct coordinates
    • centerbody_coordinates::Matrix{Float} : Array of input centerbody_coordinates coordinates
    • rotorzloc ::Vector{Float} : rotor axial locations
    • wake_length::Float : non-dimensional length of wake to extend beyond aft-most body trailing edge.
    • npanels::Vector{Int} : A vector of the number of panels between each discrete point. For example: [number of panels between the rotors; number of panels between the stator and the first trailing edge; number of panels between the trailing edges; number of panels between the last trailing edge and the end of the wake]
    • dte_minus_cbte::Float : indicator as to whether the duct trailing edge minus the centerbody trailing edge is positive, zero, or negative.
    source
    DuctAPE.generate_wake_gridFunction
    generate_wake_grid(
    +    problem_dimensions,
    +    rp_duct_coordinates,
    +    rp_centerbody_coordinates,
    +    Rhub1,
    +    Rtip1,
    +    tip_gap1,
    +    zwake;
    +    grid_solver_options=GridSolverOptions(),
    +    verbose=false,
    +    silence_warnings=true,
    +)

    Initialize and solve for elliptic grid on which wake sheets are defined.

    Arguments

    • problem_dimensions:: : A ProblemDimensions object
    • rp_duct_coordinates:: : repaneled duct coordinates
    • rp_centerbody_coordinates:: : repaneled centerbody coordinates
    • Rhub1:: : Hub radius of first rotor
    • Rtip1:: : Tip radius of first rotor
    • tip_gap1:: : Tip gap of first rotor (MUST BE ZERO for now)
    • zwake:: : axial positions of wake sheet panel nodes

    Keyword Arguments

    • grid_solver_options::GridSolverOptionsType=GridSolverOptions() : options for solving the elliptic grid.
    • verbose::Bool=false : flag to print verbose statements
    • silence_warnings::Bool=true : flag to supress warnings

    Returns

    • wake_grid::Array{Float,3} : 3D Array of axial and radial wake_grid points after solution of elliptic system.
    source
    DuctAPE.generate_wake_grid!Function
    generate_wake_grid!(
    +    wake_grid,
    +    rp_duct_coordinates,
    +    rp_centerbody_coordinates,
    +    Rhub1,
    +    Rtip1,
    +    tip_gap1,
    +    zwake;
    +    grid_solver_options=grid_solver_options,
    +    verbose=false,
    +    silence_warnings=true,
    +)

    In-place version of generate_wake_grid.

    source
    DuctAPE.initialize_wake_gridFunction
    initialize_wake_grid(rp_duct_coordinates, rp_centerbody_coordinates, zwake, rwake)

    Initialize the wake grid.

    Arguments:

    • rp_duct_coordinates::Matrix{Float} : The re-paneled duct coordinates
    • rp_centerbody_coordinates::Matrix{Float} : The re-paneled centerbody coordinates
    • zwake::Vector{Float} : The axial positions of the wake sheet panel nodes
    • rwake::Vector{Float} : The radial positions of the blade elements for the foremost rotor

    Returns:

    • wake_grid::Array{Float,3} : 3D Array of axial and radial wake_grid points
    source
    DuctAPE.initialize_wake_grid!Function
    initialize_wake_grid!(
    +    wake_grid, rp_duct_coordinates, rp_centerbody_coordinates, zwake, rwake
    +)

    In-place version of initialize_wake_grid.

    source
    DuctAPE.relax_grid!Function
    relax_grid!(
    +    grid_solver_options::GridSolverOptionsType,
    +    wake_grid;
    +    verbose=false,
    +    silence_warnings=true,
    +    tabchar="    ",
    +    ntab=1,
    +)

    Relax/Solve initial wake grid according to elliptic system of equations.

    Arguments

    • `gridsolveroptions::GridSolverOptionsType' : options for elliptic grid solver
    • wake_grid::Array{Float,3} : Initialized wake grid

    Keyword Arguments

    • `verbose=false::' : flag for printing verbose statements
    • `silence_warnings=true::' : flag for supressing warnings
    • `tabchar::String=" "::' : string to use for tabbing over verbose statements.
    • `ntab::Int=1' : number of tabs for printing verbose statements
    source
    relax_grid!(xg, rg, nxi, neta; iteration_limit, atol)

    Relax wakegrid using elliptic wakegrid solver.

    Arguments:

    Keyword Arguments:

    • iteration_limit::Int : maximum number of iterations to run, default=100
    • atol::Float : convergence tolerance, default = 1e-9

    Returns:

    source
    DuctAPE.generate_wake_panelsFunction
    generate_wake_panels(wake_grid)

    Generate paneling for each wake sheet emanating from the rotor blade elements.

    Arguments:

    • wake_grid::Array{Float,3} : axial and radial locations of each wake_grid point (after relaxation/solution)

    Returns:

    • wake_vortex_panels::NamedTuple : A named tuple of panel values describing the wake vortex panels
    source
    DuctAPE.get_wake_kFunction
    get_wake_k(r, nwn)

    Calculate geometric constant for use in later calculation of wake panel node strengths.

    Arguments

    • r::Vector{Float} : Vector of wake panel node radial positions

    Returns

    • K::Vector{Float} : Vector of geometric constants used in calculation of panel node strengths.
    source

    Bodies

    DuctAPE.reinterpolate_bodies!Function
    reinterpolate_bodies!(
    +    rp_duct_coordinates,
    +    rp_centerbody_coordinates,
    +    duct_coordinates,
    +    centerbody_coordinates,
    +    zwake,
    +    ncenterbody_inlet,
    +    nduct_inlet;
    +    finterp=FLOWMath.akima,
    +)

    Reinterpolate duct and centerbody coordinates in order to make them compatible with the calculated wake sheet panel axial positions.

    Arguments

    • rp_duct_coordinates::Matrix{Float} : the re-paneled duct coordinates
    • rp_centerbody_coordinates::Matrix{Float} : the re-paneled centerbody coordinates
    • duct_coordinates::Matrix{Float} : the input duct coordinates
    • centerbody_coordinates::Matrix{Float} : the input centerbody coordinates
    • zwake::Matrix{Float} : the wake sheet panel node axial positions
    • ncenterbody_inlet::Matrix{Float} : the number of panels to use for the centerbody inlet
    • nduct_inlet::Matrix{Float} : the number of panels to use for the duct inlet

    Keyword Arguments

    • finterp::Function=FLOWMath.akima : interpolation method
    source
    DuctAPE.place_duct!Function
    place_duct!(rp_duct_coordinates, Rtip, rotorzloc, tip_gap)

    Transform the duct radial coordinates such that the leading rotor radius touches the duct wall.

    Note that this function is called AFTER the repanling function is called, such that the rotorzloc locations should line up directly with the duct and centerbody coordinates.

    Arguments

    • rp_duct_coordinates::Matrix{Float} : the re-paneled duct coordinates
    • Rtip::Vector{Float} : Tip radii for the rotor(s)
    • rotorzloc::Vector{Float} : axial position(s) of the rotor(s)
    • tip_gap::Vector{Float} : tip gap for the fore-most rotor (MUST BE ZERO for now)
    source

    Rotors

    DuctAPE.interpolate_blade_elementsFunction
    interpolate_blade_elements(
    +    rsp, Rtips, Rhubs, rotor_panel_centers, nbe; finterp=FLOWMath.linear
    +)

    Interpolate blade elements based on Rotor inputs and number of desired blade elements (from number of wake sheet in PanelingConstants input)

    Arguments

    • rsp::Rotor : A Rotor object
    • `Rtips::Vector{Float}' : Vector of rotor tip radii
    • `Rhubs::Vector{Float}' : Vector of rotor hub radii
    • `rotorpanelcenters::Vector{Float}' : Vector of rotor panel centers
    • nbe::Int : number of blade elements per rotor

    Keyword Arguments

    • finterp::Function=FLOWMath.linear : interpolation method (note, using Akima splines as is done for the body geometry can lead to negative chord in some cases)

    Returns

    • blade_element_cache::NamedTuple : A named tuple containing the cacheable blade element information excluding the airfoil data.
    • airfoils::NamedTuple : A named tuple containing vectors of inner and outer airfoil polar data for each blade element, used in interpolating the input data at blade element locations.
    source
    DuctAPE.interpolate_blade_elements!Function
    interpolate_blade_elements!(
    +    blade_element_cache, rsp, rotor_panel_centers, nbe; finterp=FLOWMath.linear
    +)

    In-place version of interpolate_blade_elements.

    Returns

    • airfoils::NamedTuple : A named tuple containing vectors of inner and outer airfoil polar data for each blade element, used in interpolating the input data at blade element locations.
    source
    DuctAPE.get_blade_ends_from_body_geometryFunction
    get_blade_ends_from_body_geometry(
    +    rp_duct_coordinates, rp_centerbody_coordinates, tip_gaps, rotorzloc
    +)

    Obtain rotor hub and tip radii based on duct and centerbody geometry.

    Arguments

    • var::type :
    • rp_duct_coordinates::Matrix{Float} : re-paneled duct coordinates
    • rp_centerbody_coordinates::Matrix{Float} : re-paneled centerbody coordinates
    • tip_gaps::Vector{Float} : gaps between blade tips and duct surface (MUST BE ZEROS for now)
    • rotorzloc::Vector{Float} : rotor lifting line axial positions.

    Returns

    • Rtips::Vector{Float} : rotor tip radii
    • Rhubs::Vector{Float} : rotor hub radii
    source
    DuctAPE.get_blade_ends_from_body_geometry!Function
    get_blade_ends_from_body_geometry!(
    +    Rtip,
    +    Rhub,
    +    rp_duct_coordinates,
    +    rp_centerbody_coordinates,
    +    tip_gaps,
    +    rotorzloc;
    +    silence_warnings=true,
    +)

    In-place version of get_blade_ends_from_body_geometry.

    source
    DuctAPE.get_local_solidityFunction
    get_local_solidity(B, chord, r)

    Calculate local solidity from local chord, radial position, and number of blades.

    Arguments

    • B::Float : number of blades on rotor (usually an integer, but not necessarily).
    • chord::Vector{Float} : chord lengths at each radial station.
    • r::Vector{Float} : dimensional radial positions.

    Returns

    • solidity::Vector{Float} : local solidity at each radial station
    source
    DuctAPE.generate_rotor_panelsFunction
    generate_rotor_panels(rotorzloc, wake_grid, rotor_indices_in_wake, nwake_sheets)

    Generate rotor panel objects.

    Arguments

    • rotorzloc::Vector{Float} : rotor lifting line axial position
    • wake_grid::Array{Float,3} : wake elliptic grid axial and radial locations
    • rotor_indices_in_wake::Vector{Int} : indices of where along wake the rotors are placed
    • nwake_sheets::Int : number of wake sheets

    Returns

    • rotor_source_panels::NamedTuple : A named tuple containing the rotor source panel variables.
    source
    DuctAPE.generate_rotor_panels!Function
    generate_rotor_panels!(
    +    rotor_source_panels, rotorzloc, wake_grid, rotor_indices_in_wake, nwake_sheets
    +)

    In-place version of generate_rotor_panels.

    source

    Induced Velocities

    DuctAPE.calculate_unit_induced_velocitiesFunction
    calculate_unit_induced_velocities(problem_dimensions, panels, integration_options)

    Calculate all the unit-induced velocties of all panels on all control points

    Arguments

    • problem_dimensions::ProblemDimensions : A ProblemDimensions object
    • panels::NamedTuple : A named tuple containing all the paneling information
    • integration_options::IntegrationOptions : Options used for integration of velocity kernals across panels

    Returns

    • ivr::NamedTuple : A named tuple containing arrays of induced velocities on the rotors
    • ivw::NamedTuple : A named tuple containing arrays of induced velocities on the wake
    • ivb::NamedTuple : A named tuple containing arrays of induced velocities on the bodies
    source
    DuctAPE.initialize_linear_systemFunction
    initialize_linear_system(
    +    ivb,
    +    body_vortex_panels,
    +    rotor_source_panels,
    +    wake_vortex_panels,
    +    Vinf,
    +    integration_options,
    +)

    Set up the linear system used in the panel method solve.

    Arguments

    • ivb::NamedTuple : the named tuple containing all the unit induced velocities on the bodies
    • body_vortex_panels::NamedTuple : the named tuple containing the body vortex panel information
    • rotor_source_panels::NamedTuple : the named tuple containing the rotor source panel information
    • wake_vortex_panels::NamedTuple : the named tuple containing the wake vortex panel information
    • Vinf::Vector{Float} : the one-element vector containing the Freestream velocity magnitude
    • integration_options::IntegrationOptions : the integration options used in integrating the panel induced velocities

    Returns

    • linsys::NamedTuple : A named tuple containing cacheable data for the linear system, including:
      • A_bb::Array{Float} : AIC (LHS) matrix for the panel method system
      • b_bf::Array{Float} : Initial system RHS vector based on freestrem magnitude
      • A_br::Array{Float} : Unit normal velocity from rotors onto body panels
      • A_pr::Array{Float} : Unit normal velocity from rotors onto body internal psuedo control points
      • A_bw::Array{Float} : Unit normal velocity from wake onto body panels
      • A_pw::Array{Float} : Unit normal velocity from wake onto body internal psuedo control points
    • A_bb_LU::LinearAlgebra.LU : LinearAlgebra LU factorization of the LHS matrix
    • lu_decomp_flag::Vector{Bool} : flag for whether factorization was successful
    source
    DuctAPE.initialize_linear_system!Function
    initialize_linear_system!(
    +    linsys,
    +    ivb,
    +    body_vortex_panels,
    +    rotor_source_panels,
    +    wake_vortex_panels,
    +    Vinf,
    +    intermediate_containers,
    +    integration_options,
    +)

    In-place version of initialize_linear_system.

    source

    Unit Induced Velocities

    DuctAPE.calculate_xrmFunction
    calculate_xrm(controlpoint, node)

    Calculate xi, rho, and m for vortex and/or source ring induced velocity calculation.

    Returns zeros if ring is on (or approximately on) the axis of rotation (zero radius).

    Arguments

    • controlpoint::Vector{Float} [z r] coordinates of point being influenced
    • node::Vector{Float} : [z r] coordinates of singularity ring

    Returns

    • xi::Float : normalized relative axial position
    • rho::Float : normalized relative radial position
    • m::Float : Elliptic integral input
    • rj::Float : radial position of the ring
    source
    DuctAPE.calculate_xrm!Function
    calculate_xrm!(cache_vec, controlpoint, node)

    In-place version of calculate_xrm.

    Cache_vec is a vector used to hold intermediate values as well as the outputs.

    source
    DuctAPE.get_ellipticsFunction
    get_elliptics(m)

    Calculate value of elliptic functions for the given geometry parameter.

    Arguments

    • m::Float : Elliptic Function parameter

    Returns

    • K::Float : K(m), value of elliptic function of the first kind at m.
    • E::Float : E(m), value of eeliptic function of the second kind at m.
    source
    DuctAPE.vortex_ring_vzFunction
    vortex_ring_vz(xi, rho, m, r_influence, influence_length)

    Axial velocity induced by axisymmetric vortex ring.

    Uses equivalent smoke ring induced velocity for self-induction, and returns zero if vortex ring is on axis of rotation (zero radius).

    Arguments

    • xi::Float : normalized z-coordinate, (z-zo)/ro
    • rho::Float : normalized r-coordinate, r/ro
    • m::Float : Elliptic Integral parameter, 4rho/sqrt(xi^2+(rho+1)^2)
    • r_influence::Float : radial location of vortex ring, ro
    • influence_length::Float : length of panel used in calculating self-induction

    Returns

    • vz::Float : axially induced velocity of vortex ring
    source
    DuctAPE.vortex_ring_vz!Function
    vortex_ring_vz!(xi, rho, m, r_influence, influence_length, cache_vec)

    Same as vortexringvz, but uses the cache_vec to store intermediate calculations.

    source
    DuctAPE.smoke_ring_vzFunction
    smoke_ring_vz(r_influence, influence_length)

    Equivalent "smoke" ring self-induced velocity.

    Arguments

    • r_influence::Float : radial position of ring (i.e. the ring raidus)
    • influence_length::Float : length of influencing panel

    Returs

    • vz::Float : axially induced velocity of vortex ring
    source
    DuctAPE.vortex_ring_vrFunction
    vortex_ring_vr(xi, rho, m, r_influence)

    Radial velocity induced by axisymmetric vortex ring.

    Returns zero if vortex ring is on axis of rotation (zero radius), the point of influence is on the axis, or if self-inducing velocity.

    Arguments

    • xi::Float : normalized z-coordinate, (z-zo)/ro
    • rho::Float : normalized r-coordinate, r/ro
    • m::Float : Elliptic Integral parameter, 4rho/sqrt(xi^2+(rho+1)^2)
    • r_influence::Float : radial location of vortex ring, ro

    Returns

    • vr::Float : radially induced velocity of vortex ring
    source
    DuctAPE.vortex_ring_vr!Function
    vortex_ring_vr!(xi, rho, m, r_influence, cache_vec)

    Same as vortexringvr, but uses the cache_vec to store intermediate calculations.

    source
    DuctAPE.source_ring_vzFunction
    source_ring_vz(xi, rho, m, r_influence)

    Axial velocity induced by axisymmetric source ring.

    Returns zero if source ring is on axis of rotation (zero radius), the point of influence is on the axis, or if self-inducing velocity.

    Arguments:

    • xi::Float : normalized z-coordinate, (z-zo)/ro
    • rho::Float : normalized r-coordinate, r/ro
    • m::Float : Elliptic Integral parameter, 4rho/sqrt(xi^2+(rho+1)^2)
    • r_influence::Float : radial location of vortex ring, ro

    Returns:

    • vz::Float : axially induced velocity of source ring
    source
    DuctAPE.source_ring_vz!Function
    source_ring_vz!(xi, rho, m, r_influence, cache_vec)

    Same as sourceringvz, but uses cache_vec to store intermediate values.

    source
    DuctAPE.source_ring_vrFunction
    source_ring_vr(xi, rho, m, r_influence)

    Radial velocity induced by axisymmetric source ring.

    Returns zero if source ring is on axis of rotation (zero radius), the point of influence is on the axis, or if self-inducing velocity.

    Arguments:

    • xi::Float : normalized z-coordinate, (z-zo)/ro
    • rho::Float : normalized r-coordinate, r/ro
    • m::Float : Elliptic Integral parameter, 4rho/sqrt(xi^2+(rho+1)^2)
    • r_influence::Float : radial location of vortex ring, ro

    Returns:

    • vr::Float : radially induced velocity of source ring
    source
    DuctAPE.source_ring_vr!Function
    source_ring_vr!(xi, rho, m, r_influence, cache_vec)

    Same as sourceringvr, but uses cache_vec to store intermediate values.

    source

    Unit Induced Velocity Matrices

    DuctAPE.induced_velocities_from_vortex_panels_on_pointsFunction
    induced_velocities_from_vortex_panels_on_points(
    +    controlpoints,
    +    nodes,
    +    nodemap,
    +    influence_lengths,
    +    integration_options;
    +    integration_caches=nothing,
    +)

    Calculate axial and radial components of induced velocity for a set of control points due to a set of axisymmetric vortex panels (bands).

    Used for getting the unit induced velocities due to the body panels on the rotor/wake as well as the unit induced velocity due to the wake on the body/rotor.

    Arguments

    • controlpoints::Matrix{Float} [z r] coordinates of points being influenced
    • nodes::Matrix{Float} : [z r] coordinates of vortex rings
    • nodemap::Matrix{Int} : mapping from panel index to associated node indices
    • influence_lengths::Vector{Float} : lengths over which vortex ring influence is applied on the surface.
    • integration_options::IntegrationOptions : integration options

    Keyword Arguments

    • integration_caches::NamedTuple=nothing : cache used in in-place quadrature functions.

    Returns

    • VEL::Array{Float} : N-controlpoint x N-node x [vz, vr] array of induced velocity components
    source
    DuctAPE.induced_velocities_from_vortex_panels_on_points!Function
    induced_velocities_from_vortex_panels_on_points!(
    +    VEL,
    +    controlpoint,
    +    node,
    +    nodemap,
    +    influence_length,
    +    integration_options;
    +    integration_caches=nothing,
    +)

    In-place version of induced_velocities_from_vortex_panels_on_points.

    source
    DuctAPE.induced_velocities_from_source_panels_on_pointsFunction
    induced_velocities_from_source_panels_on_points(
    +    controlpoints,
    +    nodes,
    +    nodemap,
    +    influence_lengths,
    +    integration_options;
    +    integration_caches=nothing,
    +)

    Calculate axial and radial components of induced velocity for a set of control points due to a set of axisymmetric source panels (bands)

    Used for getting the unit induced velocities due to the body panels on the rotor/wake as well as the unit induced velocity due to the wake on the body/rotor.

    Arguments

    • controlpoints::Matrix{Float} [z r] coordinates of points being influenced
    • nodes::Matrix{Float} : [z r] coordinates of vortex rings
    • nodemap::Matrix{Int} : mapping from panel index to associated node indices
    • influence_lengths::Vector{Float} : lengths over which vortex ring influence is applied on the surface.
    • integration_options::IntegrationOptions : integration options

    Returns:

    • VEL::Array{Float} : N-controlpoint x N-node x [vz, vr] array of induced velocity components
    source
    DuctAPE.induced_velocities_from_source_panels_on_points!Function
    induced_velocities_from_source_panels_on_points!(
    +    VEL,
    +    controlpoint,
    +    node,
    +    nodemap,
    +    influence_length,
    +    integration_options;
    +    integration_caches=nothing,
    +)

    In-place version of induced_velocities_from_source_panels_on_points.

    source
    DuctAPE.induced_velocities_from_trailing_edge_gap_panel!Function
    induced_velocities_from_trailing_edge_gap_panel!(
    +    VEL,
    +    controlpoint,
    +    tenode,
    +    teinfluence_length,
    +    tendotn,
    +    tencrossn,
    +    teadjnodeidxs,
    +    integration_options;
    +    wake=false,
    +    integration_caches=nothing,
    +)

    Calculate axial and radial components of induced velocity for a set of control points due to any trailing edge gap panels.

    Used for getting the unit induced velocities due to the body body trailing edge gap panels on the body/rotor/wake.

    Note, this function is also used to calculate the influence of the wake ends rather than modeling a semi-infinite fortex sheet.

    Arguments

    • VEL::Array{Float} : N-controlpoint x N-node x [vz, vr] array of induced velocity components (modified in place)
    • controlpoints::Matrix{Float} [z r] coordinates of points being influenced
    • nodes::Matrix{Float} : [z r] coordinates of vortex rings
    • nodemap::Matrix{Int} : mapping from panel index to associated node indices
    • influence_lengths::Vector{Float} : lengths over which vortex ring influence is applied on the surface.
    • strengths::Matrix{Float} : vortex constant circulation values
    • integration_options::IntegrationOptions : integration options

    Keyword Arguments

    • wake::Bool=false : flag to indicate if this is being used for a wake sheet.
    • integration_caches::NamedTuple=nothing : cache used in in-place quadrature functions.
    source

    Panel Method Velocity Functions

    DuctAPE.vortex_aic_boundary_on_boundaryFunction
    vortex_aic_boundary_on_boundary(
    +    controlpoint, normal, node, nodemap, influence_length, integration_options
    +)

    Calculate panel method influence coefficients (V dot nhat) for a set of control points (on panels) due to a set of axisymmetric vortex rings (also on body surface)

    Can be used for constructing the LHS influence Matrix for the panel method system.

    Arguments

    • controlpoint::Matrix{Float} [z r] coordinates of points being influenced
    • normal::Matrix{Float} : unit normal vectors of the panels on which the control points are situated.
    • node::Matrix{Float} : [z r] coordinates of panel nodes (edges)
    • nodemap::Matrix{Int} : [1 2] node indices for each panel
    • influence_length::Vector{Float} : lengths of influencing panels
    • integration_options::IntegrationOptions : integration options

    Returns

    • AICn::Matrix{Float} : N controlpoint x N+1 node array of V dot nhat values
    source
    DuctAPE.vortex_aic_boundary_on_boundary!Function
    vortex_aic_boundary_on_boundary!(
    +    AICn,
    +    controlpoint,
    +    normal,
    +    node,
    +    nodemap,
    +    influence_length,
    +    integration_options;
    +    integration_caches=nothing,
    +)

    In-place verion of vortex_aic_boundary_on_boundary.

    integration_caches is a named tuple containing caching for intermediate calculation values.

    source
    DuctAPE.vortex_aic_boundary_on_fieldFunction
    vortex_aic_boundary_on_field(
    +    controlpoint,
    +    normal,
    +    node,
    +    nodemap,
    +    influence_length,
    +    integration_options;
    +    integration_caches=nothing,
    +)

    Calculate panel method influence coefficients (V dot nhat) for a set of control points (NOT on panels) due to a set of axisymmetric vortex rings (on body surface)

    Used for constructing portions of the panel method LHS matrix related to the pseudo control points in the bodies.

    Arguments:

    • controlpoint::Matrix{Float} [z r] coordinates of points being influenced
    • normal::Matrix{Float} : unit normal vectors of the panels on which the control points are situated.
    • node::Matrix{Float} : [z r] coordinates of panel nodes (edges)
    • nodemap::Matrix{Int} : [1 2] node indices for each panel
    • influence_length::Vector{Float} : lengths of influencing panels
    • integration_options::IntegrationOptions : integration options

    Keyword Arguments

    • integration_caches::NamedTuple=nothing : caches for intermediate values in integration.

    Returns:

    • AICn::Matrix{Float} : N controlpoint x N+1 node array of V dot nhat values
    source
    DuctAPE.vortex_aic_boundary_on_field!Function
    vortex_aic_boundary_on_field!(
    +    AICn,
    +    controlpoint,
    +    normal,
    +    node,
    +    nodemap,
    +    influence_length,
    +    integration_options;
    +    integration_caches=nothing,
    +)

    In-place version of vortex_aic_boundary_on_field.

    source
    DuctAPE.add_kutta!Function
    add_kutta!(LHS, AICn, kids)

    Add Kutta condition (γ1 + γN = 0) to LHS matrix.

    • LHS::Matrix{Float} : a pre-allocated (zeros) full size left-hand side matrix
    • AICn::Matrix{Float} : influence coefficients for panels/nodes
    • kids::Vector{Int} : [1 2] indices of where to put 1's for kutta condition
    source
    DuctAPE.add_te_gap_aic!Function
    add_te_gap_aic!(
    +    AICn,
    +    controlpoint,
    +    normal,
    +    tenode,
    +    teinfluence_length,
    +    tendotn,
    +    tencrossn,
    +    teadjnodeidxs,
    +    integration_options;
    +    wake=false,
    +    integration_caches=nothing,
    +)

    Add trailing edge gap aerodynmic influence coefficient contributions to the AIC matrix.

    Arguments

    • AICn::Matrix{Float} : N controlpoint x N+1 node array of V dot nhat values
    • controlpoint::Matrix{Float} [z r] coordinates of points being influenced
    • normal::Matrix{Float} : unit normal vectors of the panels on which the control points are situated.
    • tenode::Matrix{Float} : [z r] coordinates of trailing edge panel nodes (edges)
    • teinfluence_length::Vector{Float} : lengths of influencing trailing edge panels
    • tendotn::Matrix{Float} : nhat of trailing edge panel dotted with nhat of adjacent panels
    • tencrossn::Matrix{Float} : nhat of trailing edge panel crossed with nhat of adjacent panels
    • teadjnodeidxs::Matrix{Float} : indices of nodes adjacent to trailing edge panel
    • integration_options::IntegrationOptions : integration options

    Keyword Arguments

    • wake::Bool=false : flag as to whether this function is being applied to a wake sheet.
    • integration_caches::NamedTuple=nothing : caches for intermediate values in integration.
    source
    DuctAPE.source_aicFunction
    source_aic(
    +    controlpoint,
    +    normal,
    +    node,
    +    nodemap,
    +    influence_length,
    +    integration_options;
    +    integration_caches=nothing,
    +)

    Calculate panel method influence coefficients (V dot nhat) for a set of control points (on panels) due to a set of axisymmetric source rings not on body surface.

    Can be used for constructing the RHS boundary conditions due to rotor source panels.

    Arguments

    • controlpoint::Matrix{Float} [z r] coordinates of points being influenced
    • normal::Matrix{Float} : unit normal vectors of the panels on which the control points are situated.
    • node::Matrix{Float} : [z r] coordinates of panel nodes (edges)
    • nodemap::Matrix{Int} : [1 2] node indices for each panel
    • influence_length::Vector{Float} : lengths of influencing panels
    • integration_options::IntegrationOptions : integration options

    Keyword Arguments

    • integration_caches::NamedTuple=nothing : caches for intermediate values in integration.

    Returns

    • AICn::Matrix{Float} : N controlpoint x N+1 node array of V dot nhat values
    source
    DuctAPE.source_aic!Function
    source_aic!(
    +    AICn,
    +    controlpoint,
    +    normal,
    +    node,
    +    nodemap,
    +    influence_length,
    +    integration_options;
    +    integration_caches=nothing,
    +)

    In-place version of source_aic.

    source
    DuctAPE.freestream_influence_vectorFunction
    freestream_influence_vector(normals, Vinfmat)

    Calculate RHS contributions due to freestream.

    Note that the freestream is assumed to have zero radial component in the underlying theory, but here we allow an arbitrary 2D vector for velocity for taking the dot product easier.

    Arguments

    • normals::Matrix{Float} : unit normal vectors of the panels on which the control points are situated.
    • Vinfmat::Matrix{Float} : [z r] components of freestream velocity (r's should be zero)

    Returns

    • RHS::Vector{Float} : vector of normal components of freestream velocity on input panels
    source
    DuctAPE.assemble_lhs_matrixFunction
    assemble_lhs_matrix(
    +    AICn, AICpcp, npanel, nnode, totpanel, totnode, prescribednodeidxs; dummyval=1.0
    +)

    Assemble the LHS matrix of the panel method.

    Arguments

    • AICn::Matrix{Float} : N controlpoint x N+1 node array of V dot nhat values
    • AICpcp::Matrix{Float} : Nbodies controlpoint x N+1 node array of V dot nhat values (influence on psuedo control points)
    • npanel::Vector{Int} : number of panels comprising each body
    • nnode::Vector{Int} : number of nodes comprising each body
    • totpanel::Int : total number of panels
    • totnode::Int : total number of nodes
    • prescribednodeidxs::Vector{Int} : indices of nodes with prescribed strengths (those on the axis of rotation).

    Keyword Arguments

    • dummyval::Float=1.0 : value for dummy input for prescribed and internal control points in the system. Do not change except for debugging purposes.

    Returns

    • LHS::Matrix{Float} : The full LHS matrix for the panel method.
    source
    DuctAPE.assemble_lhs_matrix!Function
    assemble_lhs_matrix!(
    +    LHS, AICn, AICpcp, npanel, nnode, totpanel, totnode, prescribednodeidxs; dummyval=1.0
    +)

    In-place version of assemble_lhs_matrix.

    source
    DuctAPE.factorize_LHS!Function
    factorize_LHS!(Apivot::AbstractMatrix, A::AbstractMatrix)

    Returns the LU decomposition of A using Apivot as storage memory to pivot leaving A unchanged.

    source
    DuctAPE.assemble_rhs_matrixFunction
    assemble_rhs_matrix(
    +    vdnb, vdnpcp, npanel, nnode, totpanel, totnode, prescribednodeidxs
    +)

    Arguments

    • vdnb::Vector{Float} : V dot nhat for body panels
    • vdnpcp::Vector{Float} : V dot nhat for pseudo control points
    • npanel::Vector{Int} : number of panels comprising each body
    • nnode::Vector{Int} : number of nodes comprising each body
    • totpanel::Int : total number of body panels
    • totnode::Int : total number of body nodes
    • prescribednodeidxs::Vector{Int} : indices of nodes with prescribed strengths (those on the axis of rotation)

    Returns

    • RHS::Vector{Float} : the RHS vector of the panel method.
    source
    DuctAPE.assemble_rhs_matrix!Function
    assemble_rhs_matrix!(
    +    RHS, vdnb, vdnpcp, npanel, nnode, totpanel, totnode, prescribednodeidxs
    +)

    In-place version of assemble_rhs_matrix.

    source
    DuctAPE.calculate_normal_velocityFunction
    calculate_normal_velocity(velocity_vector, normal)

    Calculate normal velocity_vector (V dot nhat).

    Arguments

    • velocity_vector::Matrix{Float} : velocity vector [z r] on each panel
    • normal::Matrix{Float} : the panel unit normals

    Returns

    • AIC::Matrix{Float} : V dot n on each panel
    source

    Quadrature

    Integrands

    DuctAPE.nominal_vortex_induced_velocity_sampleFunction
    nominal_vortex_induced_velocity_sample(
    +    t, node1, node2, influence_length, controlpoint, cache_vec; nondimrange=(0.0, 1.0)
    +)

    Calculate the velocity induced by a linear vortex panel on a point.

    Arguments

    • t::Float : sample point in range (0,1) selected by quadrature method.
    • node1::Vector{Float} : first panel node (edge) position.
    • node2::Vector{Float} : second panel node (edge) position.
    • influence_length::Float : dimensional length of panel.
    • controlpoint::Vector{Float} : controlpoint position
    • cache_vec::Vector{Float} : cache for intermediate calculations

    Keyword Arguments

    • nondimrange::Tuple=(0.0,1.0) : Non-dimensional range describing the panel length. Do not change excpet for debugging purposes. Note, can also be a vector.

    Returns

    • V::Matrix{Float} : 2x2 matrix of axial and radial induced velocities from each of the nodes.
    source
    DuctAPE.subtracted_singular_vortex_influenceFunction
    subtracted_singular_vortex_influence(node, controlpoint)

    Calculate the singular portions of the self-induced vortex panel influence to subtract off the integral in the separation of singularity method.

    Arguments

    • node::Vector{Float} : node position
    • controlpoint::Vector{Float} : controlpoint position

    Returns

    • axial::Float : axial direction influence
    • radial::Float : radial direction influence
    source
    DuctAPE.subtracted_singular_vortex_influence!Function
    subtracted_singular_vortex_influence!(node, controlpoint, cache_vec)

    Somewhat in-place version of subtracted_singular_vortex_influence.

    Arguments

    • node::Vector{Float} : node position
    • controlpoint::Vector{Float} : controlpoint position
    • cache_vec::Vector{Float} : used to store intermediate values.

    Returns

    • axial::Float : axial direction influence
    • radial::Float : radial direction influence
    source
    DuctAPE.analytically_integrated_vortex_influenceFunction
    analytically_integrated_vortex_influence(r, influence_length)

    Analytical approximation of the singular portions of the self-induced vortex panel velocities to be added back in as part of the separation of singularity method.

    Arguments

    • r::Float : radial position of self-induced control point
    • influence_length::Float : dimensional length of the panel

    Returns

    • V::Vector{Float} : axial and radial induced velocities
    source
    DuctAPE.self_vortex_induced_velocity_sampleFunction
    self_vortex_induced_velocity_sample(
    +    t, node1, node2, influence_length, controlpoint, cache_vec; nondimrange=(0.0, 1.0)
    +)

    Calculate the velocity induced by a linear vortex panel on a point at the midpoint between the panel edges.

    Arguments

    • t::Float : sample point in range (0,1) selected by quadrature method.
    • node1::Vector{Float} : first panel node (edge) position.
    • node2::Vector{Float} : second panel node (edge) position.
    • influence_length::Float : dimensional length of panel.
    • controlpoint::Vector{Float} : controlpoint position
    • cache_vec::Vector{Float} : cache for intermediate calculations

    Keyword Arguments

    • nondimrange::Tuple=(0.0,1.0) : Non-dimensional range describing the panel length. Do not change excpet for debugging purposes. Note, can also be a vector.

    Returns

    • V::Matrix{Float} : 2x2 matrix of axial and radial induced velocities from each of the nodes.
    source
    DuctAPE.nominal_source_induced_velocity_sampleFunction
    nominal_source_induced_velocity_sample(
    +    t, node1, node2, influence_length, controlpoint, cache_vec; nondimrange=(0.0, 1.0)
    +)

    Calculate the velocity induced by a source panel on a point.

    Arguments

    • t::Float : sample point in range (0,1) selected by quadrature method.
    • node1::Vector{Float} : first panel node (edge) position.
    • node2::Vector{Float} : second panel node (edge) position.
    • influence_length::Float : dimensional length of panel.
    • controlpoint::Vector{Float} : controlpoint position
    • cache_vec::Vector{Float} : cache for intermediate calculations

    Keyword Arguments

    • nondimrange::Tuple=(0.0,1.0) : Non-dimensional range describing the panel length. Do not change excpet for debugging purposes. Note, can also be a vector.

    Returns

    • V::Matrix{Float} : 2x2 matrix of axial and radial induced velocities from each of the nodes.
    source
    DuctAPE.subtracted_singular_source_influenceFunction
    subtracted_singular_source_influence(node, controlpoint)

    Calculate the singular portions of the self-induced source panel influence to subtract off the integral in the separation of singularity method.

    Arguments

    • node::Vector{Float} : node position
    • controlpoint::Vector{Float} : controlpoint position

    Returns

    • axial::Float : axial direction influence
    • radial::Float : radial direction influence
    source
    DuctAPE.analytically_integrated_source_influence!Function
    analytically_integrated_source_influence(r, influence_length)

    Analytical approximation of the singular portions of the self-induced source panel velocities to be added back in as part of the separation of singularity method.

    Arguments

    • r::Float : radial position of self-induced control point
    • influence_length::Float : dimensional length of the panel

    Returns

    • V::Vector{Float} : axial and radial induced velocities
    source
    DuctAPE.self_source_induced_velocity_sampleFunction
    self_source_induced_velocity_sample(
    +    t, node1, node2, influence_length, controlpoint, cache_vec; nondimrange=(0.0, 1.0)
    +)

    Calculate the velocity induced by a linear source panel on a point at the midpoint between the panel edges.

    Arguments

    • t::Float : sample point in range (0,1) selected by quadrature method.
    • node1::Vector{Float} : first panel node (edge) position.
    • node2::Vector{Float} : second panel node (edge) position.
    • influence_length::Float : dimensional length of panel.
    • controlpoint::Vector{Float} : controlpoint position
    • cache_vec::Vector{Float} : cache for intermediate calculations

    Keyword Arguments

    • nondimrange::Tuple=(0.0,1.0) : Non-dimensional range describing the panel length. Do not change excpet for debugging purposes. Note, can also be a vector.

    Returns

    • V::Matrix{Float} : 2x2 matrix of axial and radial induced velocities from each of the nodes.
    source

    Integrals

    DuctAPE.nominal_vortex_panel_integrationFunction
    nominal_vortex_panel_integration(
    +    integration_options,
    +    node1,
    +    node2,
    +    influence_length,
    +    controlpoint,
    +    containers;
    +    debug=false,
    +)

    Integration of vortex panel induced velocity on a point far away.

    Arguments

    • integration_options::IntegrationMethod : options for itegration methods
    • node1::Vector{Float} : first panel node (edge) position.
    • node2::Vector{Float} : second panel node (edge) position.
    • influence_length::Float : dimensional length of panel.
    • controlpoint::Vector{Float} : controlpoint position
    • containers::NamedTuple : cache for intermediate calculations

    Keyword Arguments

    • debug::Bool=false : if true, some methods will return the estimation error.

    Returns

    • V::Matrix{Float} : velocity components due to the jth and j+1th nodes in the format: [vz_j vr_j; vz_{j+1} vr_{j+1}]
    source
    DuctAPE.nominal_vortex_panel_integration!Function
    nominal_vortex_panel_integration!(
    +    integration_options,
    +    V,
    +    node1,
    +    node2,
    +    influence_length,
    +    controlpoint,
    +    containers;
    +    debug=false,
    +)

    In-place version of nominal_vortex_panel_integration.

    source
    DuctAPE.self_vortex_panel_integrationFunction
    self_vortex_panel_integration(
    +    integration_options,
    +    node1,
    +    node2,
    +    influence_length,
    +    controlpoint,
    +    containers;
    +    debug=false,
    +)

    Integration of linear vortex panel self-induced velocity.

    Arguments

    • integration_options::IntegrationMethod : options for itegration methods
    • node1::Vector{Float} : first panel node (edge) position.
    • node2::Vector{Float} : second panel node (edge) position.
    • influence_length::Float : dimensional length of panel.
    • controlpoint::Vector{Float} : controlpoint position
    • containers::NamedTuple : cache for intermediate calculations

    Keyword Arguments

    • debug::Bool=false : if true, some methods will return the estimation error.

    Returns

    • V::Matrix{Float} : velocity components due to the jth and j+1th nodes in the format: [vz_j vr_j; vz_{j+1} vr_{j+1}]
    source
    DuctAPE.self_vortex_panel_integration!Function
    self_vortex_panel_integration!(
    +    integration_options,
    +    V,
    +    node1,
    +    node2,
    +    influence_length,
    +    controlpoint,
    +    containers;
    +    debug=false,
    +)

    In-place version of self_vortex_panel_integration.

    source
    DuctAPE.nominal_source_panel_integrationFunction
    nominal_source_panel_integration(
    +    integration_options,
    +    node1,
    +    node2,
    +    influence_length,
    +    controlpoint,
    +    containers;
    +    debug=false,
    +)

    Integration of source panel induced velocity on a point far away.

    Arguments

    • integration_options::IntegrationMethod : options for itegration methods
    • node1::Vector{Float} : first panel node (edge) position.
    • node2::Vector{Float} : second panel node (edge) position.
    • influence_length::Float : dimensional length of panel.
    • controlpoint::Vector{Float} : controlpoint position
    • containers::NamedTuple : cache for intermediate calculations

    Keyword Arguments

    • debug::Bool=false : if true, some methods will return the estimation error.

    Returns

    • V::Matrix{Float} : velocity components due to the jth and j+1th nodes in the format: [vz_j vr_j; vz_{j+1} vr_{j+1}]
    source
    DuctAPE.nominal_source_panel_integration!Function
    nominal_source_panel_integration!(
    +    integration_options,
    +    V,
    +    node1,
    +    node2,
    +    influence_length,
    +    controlpoint,
    +    containers;
    +    debug=false,
    +)

    In-place version of nominal_source_panel_integration.

    source
    DuctAPE.self_source_panel_integrationFunction
    self_source_panel_integration(
    +    integration_options,
    +    node1,
    +    node2,
    +    influence_length,
    +    controlpoint,
    +    containers;
    +    debug=false,
    +)

    Integration of linear source panel self-induced velocity.

    Arguments

    • integration_options::IntegrationMethod : options for itegration methods
    • node1::Vector{Float} : first panel node (edge) position.
    • node2::Vector{Float} : second panel node (edge) position.
    • influence_length::Float : dimensional length of panel.
    • controlpoint::Vector{Float} : controlpoint position
    • containers::NamedTuple : cache for intermediate calculations

    Keyword Arguments

    • debug::Bool=false : if true, some methods will return the estimation error.

    Returns

    • V::Matrix{Float} : velocity components due to the jth and j+1th nodes in the format: [vz_j vr_j; vz_{j+1} vr_{j+1}]
    source
    DuctAPE.self_source_panel_integration!Function
    self_source_panel_integration!(
    +    integration_options,
    +    V,
    +    node1,
    +    node2,
    +    influence_length,
    +    controlpoint,
    +    containers;
    +    debug=false,
    +)

    In-place version of self_source_panel_integration.

    source
    DuctAPE.extrapolate!Function
    extrapolate!(V, err, fh; power=2, atol=1e-6)

    Performs Richardson extrapolation on an array fh for use in Romberg integration.

    Arguments

    • V::Matrix{Float} : velocity components due to the jth and j+1th nodes in the format: [vz_j vr_j; vz_{j+1} vr_{j+1}]
    • err::Vector{Float} : estimated errors in velocity approximation
    • fh::Tuple : (f(h), h) tuples (in order of decreasing |h|)
    source

    State Initialization

    DuctAPE.initialize_velocitiesFunction
    initialize_velocities(
    +    solver_options::SolverOptionsType,
    +    operating_point,
    +    blade_elements,
    +    linsys,
    +    ivr,
    +    ivw,
    +    body_totnodes,
    +    wake_panel_sheet_be_map,
    +)

    Initialize velocity state variables.

    Arguments

    • solver_options::SolverOptionsType : solver options type for dispatch
    • operating_point::OperatingPoint : an OperatingPoint object
    • blade_elements::NamedTuple : A named tuple containing the blade element geometry and airfoil information.
    • linsys::NamedTuple : A named tuple containing the panel method linear system information.
    • ivr::NamedTuple : A named tuple containing the unit induced velocities on the rotors
    • ivw::NamedTuple : A named tuple containing the unit induced velocities on the wake
    • body_totnodes::Int : the total number of panel nodes comprising the duct and centerbody geometry
    • wake_panel_sheet_be_map::Matrix{Int} : An index map from the wake panels to the nearest ahead rotor blade element along the wake sheets

    Returns

    • vz_rotor::Vector{Float} : a vector of the velocity state variables associated with the rotor axially induced velocity
    • vtheta_rotor::Vector{Float} : a vector of the velocity state variables associated with the rotor tangentially induced velocity
    • Cm_wake::Vector{Float} : a vector of the velocity state variables associated with the wake control point meridional velocity
    source
    DuctAPE.initialize_velocities!Function

    function initializevelocities!( solveroptions::SolverOptionsType, vzrotor, vthetarotor, Cmwake, operatingpoint, bladeelements, linsys, ivr, ivw, bodytotnodes, wakepanelsheetbemap, )

    In-place version of initialize_velocities.

    source
    DuctAPE.initialize_strengths!Function
    initialize_strengths!(
    +    solver_options::SolverOptionsType,
    +    Gamr,
    +    sigr,
    +    gamw,
    +    operating_point,
    +    blade_elements,
    +    linsys,
    +    ivr,
    +    ivw,
    +    wakeK,
    +    body_totnodes,
    +    wake_nodemap,
    +    wake_endnodeidxs,
    +    wake_panel_sheet_be_map,
    +    wake_node_sheet_be_map,
    +    wake_node_ids_along_casing_wake_interface,
    +    wake_node_ids_along_centerbody_wake_interface,
    +)

    Initialize strength state variables.

    Arguments

    • solver_options::SolverOptionsType : solver options type for dispatch
    • Gamr::Vector{Float} : Rotor circulation state variables (modified in place)
    • sigr::Vector{Float} : Rotor panel strength state variables (modified in place)
    • gamw::Vector{Float} : Wake panel strength state variables (modified in place)
    • operating_point::OperatingPoint : an OperatingPoint object
    • blade_elements::NamedTuple : A named tuple containing the blade element geometry and airfoil information.
    • linsys::NamedTuple : A named tuple containing the panel method linear system information.
    • ivr::NamedTuple : A named tuple containing the unit induced velocities on the rotors
    • ivw::NamedTuple : A named tuple containing the unit induced velocities on the wake
    • wakeK::Vector{Float} : geometric constants of wake nodes used in calculating wake strengths
    • body_totnodes::Int : the total number of panel nodes comprising the duct and centerbody geometry
    • wake_nodemap::Matrix{Int} : an index map of wake panel to the associated node indices
    • wake_endnodeidxs::Matrix{Int} : the node indices of the start and end of the wake sheets.
    • wake_panel_sheet_be_map::Matrix{Int} : An index map from the wake panels to the nearest ahead rotor blade element along the wake sheets
    • wake_node_sheet_be_map::Matrix{Int} : An index map from the wake nodes to the nearest ahead rotor blade element along the wake sheets
    • wake_node_ids_along_casing_wake_interface::type : An index map indicating which wake nodes interface with the duct wall
    • wake_node_ids_along_centerbody_wake_interface::type : An index map indicating which wake nodes interface with the centerbody wall
    source
    function initialize_strengths!(
    +    solver_options::CSORSolverOptions,
    +    Gamr,
    +    sigr,
    +    gamw,
    +    solve_containers,
    +    operating_point,
    +    blade_elements,
    +    wakeK,
    +    wake_nodemap,
    +    wake_endnodeidxs,
    +    wake_panel_sheet_be_map,
    +    wake_node_sheet_be_map,
    +    wake_node_ids_along_casing_wake_interface,
    +    wake_node_ids_along_centerbody_wake_interface;
    +    niter=10,
    +    rlx=0.5,
    +)

    Refactored from DFDC SUBROUTINE ROTINITBLD

    From the subroutine notes: Sets reasonable initial circulation using current rotor blade geometry (chord, beta). Initial circulations are set w/o induced effects An iteration is done using the self-induced velocity from momentum theory to converge an approximate induced axial velocity

    Arguments

    • solver_options::SolverOptionsType : solver options type for dispatch
    • Gamr::Vector{Float} : Rotor circulation state variables (modified in place)
    • sigr::Vector{Float} : Rotor panel strength state variables (modified in place)
    • gamw::Vector{Float} : Wake panel strength state variables (modified in place)
    • operating_point::OperatingPoint : an OperatingPoint object
    • blade_elements::NamedTuple : A named tuple containing the blade element geometry and airfoil information.
    • wakeK::Vector{Float} : geometric constants of wake nodes used in calculating wake strengths
    • wake_nodemap::Matrix{Int} : an index map of wake panel to the associated node indices
    • wake_endnodeidxs::Matrix{Int} : the node indices of the start and end of the wake sheets.
    • wake_panel_sheet_be_map::Matrix{Int} : An index map from the wake panels to the nearest ahead rotor blade element along the wake sheets
    • wake_node_sheet_be_map::Matrix{Int} : An index map from the wake nodes to the nearest ahead rotor blade element along the wake sheets
    • wake_node_ids_along_casing_wake_interface::type : An index map indicating which wake nodes interface with the duct wall
    • wake_node_ids_along_centerbody_wake_interface::type : An index map indicating which wake nodes interface with the centerbody wall

    Keyword Arguments

    • rlx::Float=0.5 : factor for under-relaxation to reduce transients in CL

    Returns

    source
    diff --git a/v0.5.0/DuctAPE/api/private_process/index.html b/v0.5.0/DuctAPE/api/private_process/index.html new file mode 100644 index 00000000..35b0c047 --- /dev/null +++ b/v0.5.0/DuctAPE/api/private_process/index.html @@ -0,0 +1,120 @@ + +Process · DuctAPE.jl

    Analysis

    DuctAPE.analyze_multipointFunction
    analyze_multipoint(
    +    ducted_rotor::DuctedRotor,
    +    operating_point::OperatingPoint,
    +    reference_parameters::ReferenceParameters
    +    prepost_containers,
    +    solve_parameter_cache_vector,
    +    solve_parameter_cache_dims,
    +    airfoils,
    +    A_bb_LU,
    +    idmaps,
    +    problem_dimensions,
    +    options::Options;
    +    solve_container_caching=nothing,
    +    return_inputs=false,
    +)

    Identical to the single analyze function assuming setup_analysis has been called; except here we are running a single operating point for a multipoint analysis, and overwriting the operating point in the ducted_rotor with the explicit operating point input.

    source

    Process

    DuctAPE.processFunction
    process(
    +    solver_options::SolverOptionsType,
    +    solve_parameter_cache_vector,
    +    solve_parameter_cache_dims,
    +    airfoils,
    +    A_bb_LU,
    +    solve_container_caching,
    +    idmaps,
    +    options,
    +)

    Process (the step between pre-process and post-process) the solution, in other words: call the solver(s).

    Arguments

    • solver_options::SolverOptionsType : the solver options contained in the options object, used for dispatch.
    • solve_parameter_cache_vector::Vector{Float} : The vector cache for parameters used in the solve.
    • solve_parameter_cache_dims::NamedTuple : A named tuple containing the dimensions of the solve parameters.
    • airfoils::NamedTuple : The airfoils to be interpolated that are associated with each blade element
    • A_bb_LU::LinearAlgebra.LU : The LU decomposition of the panel method LHS matrix
    • solve_container_caching::NamedTuple : A named tuple containing the cache and dimensions for the intermediate solve values.
    • idmaps::NamedTuple : The set of index maps used in various solve sub-functions
    • options::Options : User options

    Returns

    • converged_states::Vector{Float} : The output of a call to ImplicitAD.implicit
    source
    DuctAPE.solveFunction
    solve(sensitivity_parameters, const_cache; initial_guess=nothing)

    A compact dispatch of solve that automatically dispatches based on the solveroptions contained in constcache.

    source
    solve(
    +    solver_options::SolverOptionsType,
    +    sensitivity_parameters,
    +    const_cache;
    +    initial_guess=nothing,
    +)

    Converge the residual, solving for the state variables that do so.

    Arguments

    • solver_options::SolverOptionsType : SolverOptionsType used for dispatch
    • sensitivity_parameters::Vector{Float} : Sensitivity parameters for solve (parameters passed in through ImplicitAD)
    • const_cache::NamedTuple : A named tuple containing constants and caching helpers.

    Keyword Arguments

    • initial_guess=nothing::Vector{Float} : An optional manually provided initial guess (contained in the sensitivity parameters anyway).

    Returns

    • converged_states::Vector{Float} : the states for which the residual has converged.
    source

    Residuals

    CSOR
    DuctAPE.CSOR_residual!Function
    CSOR_residual!(resid, state_variables, sensitivity_parameters, constants)

    The in-place residual used for the CSOR solve method.

    Arguments

    • resid::Vector{Float} : In-place residual.
    • state_variables::Vector{Float} : The state variables
    • sensitivity_parameters::Vector{Float} : The parameters to which the solution is sensitive.
    • constants::NamedTuple : Various constants required in the solve

    Returns

    • state_variables::Vector{Float} : The state variables (modified in place)
    source
    DuctAPE.compute_CSOR_residual!Function
    compute_CSOR_residual!(
    +    resid,
    +    solver_options,
    +    solve_containers,
    +    Gamr,
    +    sigr,
    +    gamw,
    +    operating_point,
    +    ivr,
    +    ivw,
    +    linsys,
    +    blade_elements,
    +    wakeK,
    +    idmaps;
    +    verbose=false,
    +)

    Description

    Arguments

    • resid::Vector{Float} : the residual vector
    • solver_options::SolverOptionsType : solver options (used for convergence criteria)
    • solve_containers::NamedTuple : cache for intermediate solve values
    • Gamr::type : Blade element circulation strengths
    • sigr::type : Rotor source panel strengths
    • gamw::type : Wake vortex panel strengths
    • operating_point::NamedTuple : Named tuple containing operating_point information
    • ivr::NamedTuple : unit induced velocities on rotor(s)
    • ivw::NamedTuple : unit induced velocities on wake
    • linsys::NamedTuple : vectors and matricies comprising the panel method linear system
    • blade_elements::NamedTuple : blade element geometry and airfoil polar information
    • wakeK::Vector{Float} : geometric constants used in caculating wake strengths
    • idmaps::NamedTuple : index maps used throughout solve

    Keyword Arguments

    • verbose::Bool=false : Flag to print verbose statements
    source
    compute_CSOR_residual!(
    +    resid,
    +    solver_options,
    +    solve_containers,
    +    Gamr,
    +    sigr,
    +    gamw,
    +    operating_point,
    +    ivr,
    +    ivw,
    +    linsys,
    +    blade_elements,
    +    wakeK,
    +    idmaps;
    +    verbose=false,
    +)

    Description

    Arguments

    • resid::Vector{Float} : the residual vector
    • solver_options::SolverOptionsType : solver options (used for convergence criteria)
    • solve_containers::NamedTuple : cache for intermediate solve values
    • Gamr::type : Blade element circulation strengths
    • sigr::type : Rotor source panel strengths
    • gamw::type : Wake vortex panel strengths
    • operating_point::NamedTuple : Named tuple containing operating_point information
    • ivr::NamedTuple : unit induced velocities on rotor(s)
    • ivw::NamedTuple : unit induced velocities on wake
    • linsys::NamedTuple : vectors and matricies comprising the panel method linear system
    • blade_elements::NamedTuple : blade element geometry and airfoil polar information
    • wakeK::Vector{Float} : geometric constants used in caculating wake strengths
    • idmaps::NamedTuple : index maps used throughout solve

    Keyword Arguments

    • verbose::Bool=false : Flag to print verbose statements
    source
    DuctAPE.relax_Gamr!Function
    relax_Gamr!(
    +    Gamr,
    +    delta_prev_mat,
    +    delta_mat,
    +    maxBGamr,
    +    maxdeltaBGamr,
    +    B;
    +    nrf=0.4,
    +    bt1=0.2,
    +    bt2=0.6,
    +    pf1=0.4,
    +    pf2=0.5,
    +    test=false,
    +)

    Apply relaxed step to Gamr.

    Arguments

    • Gamr::Array{Float} : Array of rotor circulations (columns = rotors, rows = blade elements), updated in place
    • delta_prev_mat::Array{Float} : Array of previous iteration's differences in circulation values, updated in place
    • delta_mat::Array{Float} : Array of current iteration's differences in circulation values
    • B::Vector{Float} : number of blades on each rotor
    • nrf::Float=0.4 : nominal relaxation factor
    • bt1::Float=0.2 : backtrack factor 1
    • bt2::Float=0.6 : backtrack factor 2
    • pf1::Float=0.4 : press forward factor 1
    • pf2::Float=0.5 : press forward factor 2
    source
    relax_Gamr!(
    +    Gamr,
    +    delta_prev_mat,
    +    delta_mat,
    +    maxBGamr,
    +    B;
    +    nrf=0.4,
    +    bt1=0.2,
    +    bt2=0.6,
    +    pf1=0.4,
    +    pf2=0.5,
    +    test=false,
    +)

    Apply relaxed step to Gamr.

    Arguments

    • Gamr::Array{Float} : Array of rotor circulations (columns = rotors, rows = blade elements), updated in place
    • delta_prev_mat::Array{Float} : Array of previous iteration's differences in circulation values, updated in place
    • delta_mat::Array{Float} : Array of current iteration's differences in circulation values
    • B::Vector{Float} : number of blades on each rotor
    • nrf::Float=0.4 : nominal relaxation factor
    • bt1::Float=0.2 : backtrack factor 1
    • bt2::Float=0.6 : backtrack factor 2
    • pf1::Float=0.4 : press forward factor 1
    • pf2::Float=0.5 : press forward factor 2
    source
    DuctAPE.relax_gamw!Function
    relax_gamw!(
    +    gamw, delta_prev, delta, maxdeltagamw; nrf=0.4, btw=0.6, pfw=1.2, test=false
    +)

    Apply relaxed step to gamw.

    Arguments

    • gamw::Array{Float} : Array of rotor circulations (columns = rotors, rows = blade elements), updated in place
    • delta_prev_mat::Array{Float} : Array of previous iteration's differences in circulation values, updated in place
    • delta_mat::Array{Float} : Array of current iteration's differences in circulation values
    • B::Vector{Float} : number of blades on each rotor
    • nrf::Float=0.4 : nominal relaxation factor
    • bt1::Float=0.2 : backtrack factor 1
    • bt2::Float=0.6 : backtrack factor 2
    • pf1::Float=0.4 : press forward factor 1
    • pf2::Float=0.5 : press forward factor 2
    source
    relax_gamw!(
    +    gamw, delta_prev, delta; nrf=0.4, btw=0.6, pfw=1.2, test=false
    +)

    Apply relaxed step to gamw.

    Arguments

    • gamw::Array{Float} : Array of rotor circulations (columns = rotors, rows = blade elements), updated in place
    • delta_prev_mat::Array{Float} : Array of previous iteration's differences in circulation values, updated in place
    • delta_mat::Array{Float} : Array of current iteration's differences in circulation values
    • B::Vector{Float} : number of blades on each rotor
    • nrf::Float=0.4 : nominal relaxation factor
    • bt1::Float=0.2 : backtrack factor 1
    • bt2::Float=0.6 : backtrack factor 2
    • pf1::Float=0.4 : press forward factor 1
    • pf2::Float=0.5 : press forward factor 2
    source
    DuctAPE.apply_relaxation_scheduleFunction
    apply_relaxation_schedule(
    +    resid::AbstractVector, solver_options::TS
    +) where {TS<:SolverOptionsType}

    Apply custom relaxation schedule to all relaxation factor inputs based on residual values.

    Arguments

    • resid::AbstractVector{Float} : current residual values
    • solver_options::SolverOptionsType : SolverOptions containing relaxation schedule

    Returns

    • nrf::Float : nominal relaxation factor
    • bt1::Float : backtrack factor 1
    • bt2::Float : backtrack factor 2
    • pf1::Float : press forward factor 1
    • pf2::Float : press forward factor 2
    source
    apply_relaxation_schedule(resid, nominal, schedule)

    Apply custom relaxation schedule to a single relaxation factor input.

    Arguments

    • resid::Float : residual value
    • nominal::Float : nominal relaxation value
    • schedule::AbstractVector{AbstractVector{Float}} : values between which to interpolate to scale the nominal relaxation value.

    Returns

    • rf::Float : the updated relaxation factor
    source
    DuctAPE.update_CSOR_residual_values!Function
    update_CSOR_residual_values!(
    +    convergence_type::ConvergenceType, resid, maxBGamr, maxdeltaBGamr, maxdeltagamw, Vconv
    +)

    Update CSOR residual values in place.

    Arguments

    • convergence_type::ConvergenceType : used for dispatch of relative or absolute residual values.
    • resid::Vector{Float} : residual values modified in place
    • maxBGamr::Float : Maximum value of B*Gamr among all blade elements
    • maxdeltaBGamr::Float : Maximum change in B*Gamr between iterations among all blade elements
    • maxdeltagamw::Vector{Float} : Maximum change in gamw among all wake nodes (one element)
    • Vconv::Float : Reference velocity upon which the relative convergence criteria is based (one element)
    source
    DuctAPE.check_CSOR_convergence!Function
    check_CSOR_convergence!(
    +    conv, resid; f_circ=1e-3, f_dgamw=2e-4, convergence_type=Relative(), verbose=false
    +)

    Description

    Arguments

    • conv::Vector{Float} : container holding convergence flag
    • resid::Vector{Float} : residual vector

    Keyword Arguments

    • f_circ::Float=1e-3 : convergence criteria for circulation residual
    • f_dgamw::Float=2e-4 : convergence criteria for wake strength residual
    • convergence_type::ConvergenceType=Relative() : convergence type (absolute or relative) for print statements
    • verbose::Bool=false : flag for verbose print statements
    source
    External Solvers
    DuctAPE.system_residualFunction
    system_residual(state_variables, sensitivity_parameters, constants)

    The residual function for external solvers.

    Arguments

    • state_variables::Vector{Float} : the state variables
    • sensitivity_parameters::Vector{Float} : parameters to which the solution derivatives are sensitive
    • constants::NamedTuple : parameters to which the solution derivatives are constant

    Returs

    • resid::Vector{Float} : residual vector
    source
    DuctAPE.system_residual!Function
    system_residual!(resid, state_variables, sensitivity_parameters, constants)

    In-place version of system_residual.

    source
    DuctAPE.update_system_residual!Function
    update_system_residual!(
    +    solver_options::SolverOptionsType
    +    resid,
    +    vz_est,
    +    vz_rotor,
    +    vtheta_est,
    +    vtheta_rotor,
    +    Cm_est,
    +    Cm_wake,
    +    solve_parameter_cache_dims,
    +)

    Update the residual for external solvers.

    Arguments

    • `solver_options::SolverOptionsType
    • resid::Vector{Float} : residual vector
    • vz_est::Vector{Float} : axial induced rotor velocity estimate container
    • vz_rotor::Vector{Float} : axial induced rotor velocity state container
    • vtheta_est::Vector{Float} : tangential induced rotor velocity estimate container
    • vtheta_rotor::Vector{Float} : tangential induced rotor velocity state container
    • Cm_est::Vector{Float} : absolute meridional wake control point velocity estimate container
    • Cm_wake::Vector{Float} : absolute meridional wake control point velocity state container
    • solve_parameter_cache_dims::Vector{Float} : dimensions of state vectors to use in accessing the residual vector
    source
    DuctAPE.estimate_states!Function
    estimate_states!(
    +    solve_containers,
    +    vz_rotor,
    +    vtheta_rotor,
    +    Cm_wake,
    +    operating_point,
    +    ivr,
    +    ivw,
    +    linsys,
    +    blade_elements,
    +    wakeK,
    +    idmaps;
    +    verbose=false,
    +)

    Estimate velocity states.

    Arguments

    • solve_containers::NamedTuple : cache for intermediate values in solve
    • vz_rotor::Vector{Float} : axial induced rotor velocity state container
    • vtheta_rotor::Vector{Float} : tangential induced rotor velocity state container
    • Cm_wake::Vector{Float} : absolute meridional wake control point velocity state container
    • operating_point::NamedTuple : Named tuple containing operating_point information
    • ivr::NamedTuple : unit induced velocities on rotor(s)
    • ivw::NamedTuple : unit induced velocities on wake
    • linsys::NamedTuple : vectors and matricies comprising the panel method linear system
    • blade_elements::NamedTuple : blade element geometry and airfoil polar information
    • wakeK::Vector{Float} : geometric constants used in caculating wake strengths
    • idmaps::NamedTuple : index maps used throughout solve

    Keyword Arguments

    • verbose::Bool=false : flag for verbose print statements
    source

    Solve Utilities

    DuctAPE.extract_initial_guessFunction
    extract_initial_guess(
    +    solver_options::SolverOptionsType, sensitivity_parameters, state_dims
    +)

    Extract initial guess from the solve parameters cache vector.

    Arguments

    • solver_options::SolverOptionsType : used for dispatch
    • sensitivity_parameters::Vector{Float} : vector form of solve parameter cache passed into the solver.
    • state_dims::NamedTuple : dimensions and indices of state variables within the solve parameter cache vector

    Returns

    • initial_guess::Vector{Float}` : a vector of the solver initial guess
    source
    DuctAPE.extract_state_variablesFunction
    extract_state_variables(solver_options::SolverOptionsType, vars, dims)

    Reshape the state variables from a single vector, to multiple arrays.

    Arguments

    Returns if solver_options <: CSORSolverOptions

    • Gamr::type : Blade element circulation strengths
    • sigr::type : Rotor source panel strengths
    • gamw::type : Wake vortex panel strengths

    Returns if solver_options <: Union{ExternalSolverOptions, PolyAlgorithmOptions}

    • vz_rotor::Vector{Float} : axial induced rotor velocity state container
    • vtheta_rotor::Vector{Float} : tangential induced rotor velocity state container
    • Cm_wake::Vector{Float} : absolute meridional wake control point velocity state container
    source
    diff --git a/v0.5.0/DuctAPE/api/private_utilities/index.html b/v0.5.0/DuctAPE/api/private_utilities/index.html new file mode 100644 index 00000000..d6a915e4 --- /dev/null +++ b/v0.5.0/DuctAPE/api/private_utilities/index.html @@ -0,0 +1,3 @@ + +Utilities · DuctAPE.jl

    Utility Functions

    DuctAPE.promote_ducted_rotor_typeFunction
    promote_ducted_rotor_type(ducted_rotor)

    Convenience function for promoting types based on any potential elements of the ducted_rotor object dependent on optimization design variables.

    Arguments

    • ducted_rotor::DuctedRotor : the ducted_rotor input

    Returns

    • TP::Type : the promoted type
    source
    DuctAPE.isscalarFunction
    isscalar(x::T) where {T} = isscalar(T)
    +isscalar(::Type{T}) where {T} = BroadcastStyle(T) isa Broadcast.DefaultArrayStyle{0}

    Determines if the input is a scalar. Note that Base.BroadcastStyle is imported.

    source
    DuctAPE.dotFunction
    dot(A, B) = sum(a * b for (a, b) in zip(A, B))

    A faster dot product.

    source
    DuctAPE.linear_transformFunction
    linear_transform(range1, range2, values)

    Linear transfrom of values from range (source_range[1], source_range[end]) to (target_range[1], target_range[end])

    Arguments

    • source_range::Vector{Float} : range values come from (can also be a Tuple)
    • target_range::Vector{Float} : range onto which we are transforming (can also be a Tuple)
    • source_values::Array{Float} : array of source values to transform

    Returns

    • target_values::Array{Float} : array of transformed sourcevalues onto target range
    source
    DuctAPE.lfsFunction
    lfs(shape)

    Determines length from shape (output of size function).

    source
    DuctAPE.reset_containers!Function
    reset_containers!(containers; exception_keys=[])

    Resets all fields (not incluing any contained in exception keys) of containers–-which must be arrays, structs of arrays, or tuples of arrays–-to zeros.

    source
    DuctAPE.cache_dims!Function
    cache_dims!(total_length, l, s)

    A function that returns a named tuple containing an index range and shape and increases total_length by l.

    This function is used heavily in the cache allocation functions for setting up the dimension maps used to access the vectorized caches.

    Arguments

    • total_length::Vector{Int} : single element vector containing the current total length of the eventual cache vector. Modified in place.
    • l::Int : total length of the object in question
    • s::Int : size of the object in question

    Returns

    • dims::NamedTuple : A named tuple containing index and shape fields
    source
    DuctAPE.write_dataFunction
    write_data(outs, filename; checkoutfileexists=false)

    Writes NamedTuples, specifically for writing out the output of the post_procces() function.

    Arguments:

    • outs::NamedTuple : Named tuple to write to file.
    • filename::String : file name (including full desired path and file type) for file to write

    Keyword Arguments:

    • output_tuple_name::String : desired variable name of written NamedTuple
    • checkoutfileexists::Bool=false : boolean for whether to check if the outfile already exists and whether or not to overwrite it.
    source
    diff --git a/v0.5.0/DuctAPE/api/public_api/index.html b/v0.5.0/DuctAPE/api/public_api/index.html new file mode 100644 index 00000000..c649b488 --- /dev/null +++ b/v0.5.0/DuctAPE/api/public_api/index.html @@ -0,0 +1,88 @@ + +Public API Reference · DuctAPE.jl

    Public API

    Input Types

    DuctAPE.PanelingConstantsType
    PanelingConstants(
    +    nduct_inlet,
    +    ncenterbody_inlet,
    +    npanels,
    +    dte_minus_cbte,
    +    nwake_sheets,
    +    wake_length=1.0,
    +)

    Constants used in re-paneling geometry.

    Note that unlike other input structures, this one, in general, does not define fields as vectors. This is because these values should not change throughout an optimization, even if the geometry may change. Otherwise, discontinuities could be experienced.

    Arguments

    • nduct_inlet::Int : The number of panels to use for the duct inlet (this number is used for both the casing and nacelle re-paneling)
    • ncenterbody_inlet::Int : The number of panels to use for the centerbody inlet.
    • npanels::AbstractVector{Int} : A vector containing the number of panels between discrete locations inside the wake. Specifically, the number of panels between the rotors, between the last rotor and the first body trailing edge, between the body trailing edges (if different), and between the last body trailing edge and the end of the wake. The length of this vector should be N+1 (where N is the number of rotors) if the duct and centerbody trailing edges are aligned, and N+2 if not.
    • dte_minus_cbte::Float : An indicator concerning the hub and duct trailing edge relative locations. Should be set to -1 if the duct trailing edge axial position minus the centerbody trailing edge axial position is negative, +1 if positive (though any positive or negative number will suffice), and zero if the trailing edges are aligned.
    • nwake_sheets::Int : The number of wake sheets to use. Note this will also be setting the number of blade elements to use.
    • wake_length::Float=1.0 : Non-dimensional (based on the length from the foremost body leading edge and the aftmost body trailing edge) length of the wake extending behind the aftmost body trailing edge.
    source
    DuctAPE.RotorType
    Rotor(
    +    B, rotorzloc, r, Rhub, Rtip, chords, twists, tip_gap, airfoils, fliplift
    +)

    Composite type containing the rotor(s) geometric properties.

    Note that the actual struct requires the inputs to be arrays, but there is a constructor function that will take in scalars and automatically build the array-based struct.

    Arguments

    • B::AbstractVector{Float} : The number of blades for each rotor. May not be an integer, but usually is.
    • rotorzloc::AbstractVector{Float} : Dimensional, axial position of each rotor.
    • r::AbstractArray{Float} : Non-dimensional radial locations of each blade element.
    • Rhub::AbstractVector{Float} : Dimensional hub radius of rotor. (may be changed if it does not match the radial position of the centerbody geometry at the selected rotorzloc.
    • Rtip::AbstractVector{Float} : Dimensional tip radius of rotor. Is used to determine the radial position of the duct if the autoshiftduct option is selected.
    • chords::AbstractArray{Float} : Dimensional chord lengths of the blade elements.
    • twists::AbstractArray{Float} : Blade element angles, in radians.
    • tip_gap::AbstractVector{Float} : Currently unused, do not set to anything other than zeros.
    • airfoils::AbstractArray{AFType} : Airfoil types describing the airfoil polars for each blade element. Currently only fully tested with C4Blade.DFDCairfoil types.
    • fliplift::AbstractVector{Bool} : Flag to indicate if the airfoil lift values should be flipped or not.
    source
    DuctAPE.DuctedRotorType
    DuctedRotor(duct_coordinates, centerbody_coordinates, rotor, paneling_constants)

    Arguments

    • duct_coordinates::AbstractMatrix : The [z, r] coordinates of the duct geometry beginning at the inner (casing) side trailing edge and proceeding clockwise. Note that the duct geometry absolute radial position does not need to be included here if the autoshiftduct option is selected.
    • centerbody_coordinates::AbstractMatrix : The [z, r] coordinates of the centerbody beginning at the leading edge and ending at the trailing edge. Note that the leading edge is assumed to be placed at a radial distance of 0.0 from the axis of rotation.
    • paneling_constants::PanelingConstants : Constants used in re-paneling the geometry.
    • rotor::Rotor : Rotor (and possibly stator) geometric paramters.
    source
    DuctAPE.OperatingPointType
    OperatingPoint(Vinf, rhoinf, muinf, asound, Omega)

    DuctedRotor operating point information.

    Arguments

    • Vinf::AbstractVector{Float} : Freestream velocity magnitude (which is only in the axial direction).
    • rhoinf::AbstractVector{Float} : Freestream density
    • muinf::AbstractVector{Float} : Freestream viscosity
    • asound::AbstractVector{Float} : Freestream speed of sound
    • Omega::AbstractVector{Float} : Rotor rototation rate(s)
    source
    DuctAPE.ReferenceParametersType
    ReferenceParameters(Vref, Rref)

    Reference parameters for post-process non-dimensionalization.

    Note that the actual struct requires the inputs to be arrays, but there is a constructor function that will take in scalars and automatically build the array-based struct.

    Arguments

    • Vref::AbstractVector{Float} : Reference velocity.
    • Rref::AbstractVector{Float} : Reference rotor tip radius.
    source

    Preallocations

    DuctAPE.allocate_prepost_container_cacheFunction
    allocate_prepost_container_cache(paneling_constants::PanelingConstants)
    +allocate_prepost_container_cache(problem_dimensions::ProblemDimensions)

    Allocate the pre- and post-processing cache (used for intermediate calculations) based on paneling constants or problem dimensions.

    Arguments

    • paneling_constants::PanelingConstants : a PanelingConstants object

    OR

    • problem_dimensions::ProblemDimensions : a ProblemDimensions object

    Keyword Arguments

    • fd_chunk_size::Int=12 : chunk size to use for PreallocationTools caches. Note that the automated chunk size for DuctAPE will always be the ForwardDiff threshold of 12 due to the size of the system, so it will be best to leave this at the default unless further development allows for chunk size selection for individual solvers.
    • levels::Int=1 : levels for nested duals. Note that since ImplicitAD is being used for all solves, there should be no need for more than 1 level.

    Returns

    • prepost_container_caching::NamedTuple : a Named Tuple containing:
      • prepost_container_cache::PreallocationTools.DiffCache : the cache
      • prepost_container_cache_dims::NamedTuple : a named tuple containing the dimensions used for reshaping the cache when needed.
    source
    DuctAPE.allocate_solve_parameter_cacheFunction
    allocate_solve_parameter_cache(
    +    solve_type::SolverOptionsType,
    +    paneling_constants::PanelingConstants;
    +    fd_chunk_size=12,
    +    levels=1,
    +)
    +allocate_solve_parameter_cache(
    +    solve_type::SolverOptionsType,
    +    problem_dimensions::ProblemDimensions;
    +    fd_chunk_size=12,
    +    levels=1
    +)

    Allocate the solve parameter cache for parameters passed into the solver(s).

    Arguments

    • solve_type::SolverOptionsType : Solver options type used for dispatch
    • paneling_constants::PanelingConstants : a PanlingConstants object used for sizing

    OR

    • problem_dimensions::ProblemDimensions : a ProblemDimensions object used for sizing

    Keyword Arguments

    • fd_chunk_size::Int=12 : chunk size to use for PreallocationTools caches. Note that the automated chunk size for DuctAPE will always be the ForwardDiff threshold of 12 due to the size of the system, so it will be best to leave this at the default unless further development allows for chunk size selection for individual solvers.
    • levels::Int=1 : levels for nested duals. Note that since ImplicitAD is being used for all solves, there should be no need for more than 1 level.

    Returns

    • solve_parameter_caching::NamedTuple : a Named Tuple containing:
      • solve_parameter_cache::PreallocationTools.DiffCache : the cache
      • solve_parameter_cache_dims::NamedTuple : a named tuple containing the dimensions used for reshaping the cache when needed.
    source
    DuctAPE.allocate_solve_container_cacheFunction
    allocate_solve_container_cache(
    +    solve_type::SolverOptionsType,
    +    paneling_constants::PanelingConstants;
    +    fd_chunk_size=12,
    +    levels=1,
    +)
    +allocate_solve_container_cache(
    +    solve_type::SolverOptionsType,
    +    problem_dimensions::ProblemDimensions;
    +    fd_chunk_size=12,
    +    levels=1,
    +)

    Allocate the solve cache (used for intermediate calculations) based on paneling constants or problem dimensions.

    Arguments

    • paneling_constants::PanelingConstants : a PanelingConstants object

    OR

    • problem_dimensions::ProblemDimensions : a ProblemDimensions object

    Keyword Arguments

    • fd_chunk_size::Int=12 : chunk size to use for PreallocationTools caches. Note that the automated chunk size for DuctAPE will always be the ForwardDiff threshold of 12 due to the size of the system, so it will be best to leave this at the default unless further development allows for chunk size selection for individual solvers.
    • levels::Int=1 : levels for nested duals. Note that since ImplicitAD is being used for all solves, there should be no need for more than 1 level.

    Returns

    • solve_container_caching::NamedTuple : a Named Tuple containing:
      • solve_container_cache::PreallocationTools.DiffCache : the cache
      • solve_container_cache_dims::NamedTuple : a named tuple containing the dimensions used for reshaping the cache when needed.
    source

    Options

    General Options

    DuctAPE.OptionsType
    struct Options

    Type containing (nearly) all the available user options.

    Fields

    General Options

    • verbose::Bool = false : flag to print verbose statements
    • silence_warnings::Bool = true : flag to silence warnings
    • multipoint_index::Int = [1] : holds current index of multi-point solver (no need for user to change this usually)

    Pre-processing Options

    Geometry interpolation and generation options :

    • finterp::Interplation Method = FLOWMath.akima : interpolation method used for re-paneling bodies
    • autoshiftduct::Bool = true : flag as to whether duct geometry should be shifted based on rotor tip location
    • lu_decomp_flag::Bool = false : flag indicating if panel method LHS matrix factorization was successful

    paneling options

    • itcpshift::Float = 0.05 : factor for internal trailing edge psuedo-panel placement (default is DFDC hard-coded value)
    • axistol::Float = 1e-15 : tolerance for how close the the axis of rotation should be considered on the axis
    • tegaptol::Float = 1e1 * eps() : tolerance for how large of a trailing edge gap should be considered a gap

    Integration Options

    • integration_options::IntegrationOptions type = IntegrationOptions() : integration options

    Post-processing Options

    • write_outputs::AbstractArray{Bool} = [false] : Bool for whether to write the outputs of the analysis to an external file (slow)
    • outfile::AbstractArray{String} = ["outputs.jl"] : External output file name (including path information) for files to write
    • checkoutfileexists::Bool = false : Flag for whether to check if file exists before overwriting
    • output_tuple_name::AbstractArray{String} = ["outs"] : variable name for named tuple written to out file

    Solving Options

    • grid_solver_options::GridSolverOptionsType = GridSolverOptions() : elliptic grid solver options
    • solver_options::SolverOptionsType = ChainSolverOptions() : solver options
    source
    DuctAPE.set_optionsFunction
    set_options(; kwargs...)
    +set_options(multipoint; kwargs...)

    Set the options for DuctAPE to use.

    Note that the vast majority of the available options are defined through keyword arguments. See the documentation for the various option types for more information.

    Arguments

    • multipoint::AbstractArray{OperatingPoint} : a vector of operating points to use if running a multi-point analysis.
    source

    Integration Options

    DuctAPE.IntegrationOptionsType
    struct IntegrationOptions

    A struct used to hold the integration options for both the nominal and singular cases.

    Fields

    • nominal::IntegrationMethod=GaussLegendre(8) : the integration options to use for the nominal case.
    • singular::IntegrationMethod=GaussLegendre(8) : the integration options to use for the self-induced case.
    source
    DuctAPE.GaussLegendreType
    struct GaussLegendre <: IntegrationMethod

    Options for Gauss-Legendre integration method

    Fields

    • sample_points::Int : Sample Points
    • weights::Int : Gauss weights
    source
    DuctAPE.GaussKronrodType
    struct GaussKronrod <: IntegrationMethod

    Options for Gauss-Kronrod integration method

    Fields

    • order::Int = 7 : order of Legendre polynomial to use on each interval
    • maxevales::Int = 10^7 : maximum number of evaluations in the adaptive method
    • atol::Float = 0.0 : absolute error tolerance. (note, if zero, QuadGK uses sqrt(eps()) relative tolerance).
    source
    DuctAPE.RombergType
    struct Romberg <: IntegrationMethod

    Options for Romberg integration method

    Fields

    • max_subdivisions::Int = 10 : maximum number of subdivisions. Note, total number of internvals is 2^N, where N is number of subdivisions.
    • atol::Float = 1e-6 : absolute error tolerance.
    source

    Solver Options

    Elliptic Grid Solve

    DuctAPE.SLORGridSolverOptionsType
    struct SLORGridSolverOptions <: GridSolverOptionsType

    Options for SLOR (successive line over relaxation) elliptic grid solver.

    Fields

    • iteration_limit::Int = 100 : maximum number of iterations
    • atol::Float = 1e-9 : absolute convergence tolerance
    • converged::AbstractArray{Bool} = [false]
    source
    DuctAPE.GridSolverOptionsType
    struct GridSolverOptions <: GridSolverOptionsType

    Options for SLOR + Newton elliptic grid solver.

    Fields

    • iteration_limit::Int = 10 : maximum number of iterations
    • atol::Float = 1e-14 : absolute convergence tolerance
    • algorithm::Symbol = :newton : algorithm to use in NLsolve.jl
    • autodiff::Symbol = :forward : differentiation method to use in NLsolve.jl
    • converged::AbstractArray{Bool} = [false]
    source

    Aerodynamics Solve

    DuctAPE.ChainSolverOptionsType
    struct ChainSolverOptions <:PolyAlgorithmOptions

    Options for Chain Solvers (try one solver, if it doesn't converge, try another)

    Fields

    • `solvers::AbstractArray{SolverOptionsType} = [ NLsolveOptions(; algorithm=:anderson, atol=1e-12), MinpackOptions(; atol=1e-12), NonlinearSolveOptions(; algorithm=SimpleNonlinearSolve.SimpleNewtonRaphson, atol=1e-12, additional_kwargs=(; autodiff=SimpleNonlinearSolve.AutoForwardDiff()), ), ] : Vector of solver options to use.
    • converged::AbstractArray{Bool} = [false] : flag to track if convergence took place.
    source
    DuctAPE.CompositeSolverOptionsType
    struct CompositeSolverOptions <: PolyAlgorithmOptions

    Options for Composite Solvers (start with a partial solve of one solve, then finish with another starting where the first left off).

    Fields

    • `solvers::AbstractArray{SolverOptionsType} = [ NLsolveOptions(; algorithm=:newton, iteration_limit=3), NLsolveOptions(; algorithm=:anderson, atol=1e-12), ]' : Vector of solver options to use.
    • converged::AbstractArray{Bool} = [false] : flag to track if convergence took place.
    source
    DuctAPE.NLsolveOptionsType
    struct NLsolveOptions <: ExternalSolverOptions

    Options for the NLsolve pacakge solvers

    Fields

    • algorithm::Symbol = :anderson : algorithm to use
    • additional_kwargs = (;) : any additional keyword arguments for the solver
    • atol::Float = 1e-12 : absolute convergence tolerance
    • iteration_limit::Int = 25 : maximum number of iterations
    • linesearch_method::LineSearches method = LineSearches.MoreThuente : line search method to use
    • linesearch_kwargs = (;) : any additional lineseach keyword arguments
    • converged::AbstractArray{Bool} = [false] : flag to track if convergence took place.
    source
    DuctAPE.NonlinearSolveOptionsType
    struct NonlinearSolveOptions <: ExternalSolverOptions

    Options for the SimpleNonlinearSolve pacakge solvers

    Fields

    • algorithm::SimpleNonlinearSolve algorithm = SimpleNonlinearSolve.SimpleNewtonRaphson : algorithm to use
    • additional_kwargs = (;) : any additional keyword arguments for the solver
    • atol::Float = 1e-12 : absolute convergence tolerance
    • iteration_limit::Float = 25 : maximum number of iterations
    • converged::AbstractArray{Bool} = [false] : flag to track if convergence took place.
    source
    DuctAPE.MinpackOptionsType
    struct MinpackOptions <: ExternalSolverOptions

    Options for the MINPACK's HYBRJ solver

    Fields

    • algorithm::Symbol = :hybr : algorithm to use in MINPACK.jl (hybr is HYBRJ when the jacobian is provided)
    • atol::FLoat = 1e-12 : absolute convergence tolerance
    • iteration_limit::FLoat = 100 : maximum number of iterations
    • converged::AbstractArray{Bool} = [false] : flag to track if convergence took place.
    source
    DuctAPE.SIAMFANLEOptionsType
    struct SIAMFANLEOptions <: ExternalSolverOptions

    Options for the SIAMFANLEquations pacakge solvers

    Fields

    • algorithm::SIAMFANLEquations algorithm = SIAMFANLEquations.nsoli : algorithm to use
    • rtol::Float = 0.0 : relative convergence tolerance
    • atol::Float = 1e-10 : absolute convergence tolerance
    • iteration_limit::Int = 1000 : maximum number of iterations
    • linear_iteration_limit::Float = 5 : maximum number of linear solve iterations (GMRES)
    • additional_kwargs = (;) : any additional keyword arguments for the solver
    • converged::AbstractArray{Bool} = [false] : flag to track if convergence took place.
    source
    DuctAPE.SpeedMappingOptionsType
    struct SpeedMappingOptions <: ExternalSolverOptions

    Options for the SpeedMapping.jl package solver

    Fields

    • `orders::AbstractArray{Int} = [3, 2]
    • sig_min::Int = 0 : maybe set to 1?
    • stabilize::Bool = false : stabilizes before extrapolation
    • check_obj::Bool = false : checks for inf's and nan's and starts from previous finite point
    • atol::Float = 1e-10 : absolute convergence tolerance
    • iteration_limit::Float = 1000 : maximum number of iterations
    • time_limit::Float = Inf : time limit in seconds
    • lower::Float = nothing : box lower bounds
    • upper::Float = nothing : box upper bounds
    • buffer::Float = 0.01 : if using bounds, buffer brings x inside bounds by buffer amountd
    • Lp::Float = Inf : p value for p-norm for convergence criteria
    • converged::AbstractArray{Bool} = [false] : flag to track if convergence took place.
    source
    DuctAPE.FixedPointOptionsType
    struct FixedPointOptions <: ExternalSolverOptions

    Options for the FixedPoint.jl package solver

    Fields

    • iteration_limit::Int = 1000 : maximum number of iterations
    • vel::Float = 0.9 : vel keyword argument, default is package default
    • ep::Float = 0.01 : ep keyword argument, default is package default
    • atol::Float = 1e-12 : absolute convergence tolerance
    • converged::AbstractArray{Bool} = [false] : flag to track if convergence took place.
    source
    DuctAPE.CSORSolverOptionsType
    struct CSORSolverOptions <: SolverOptionsType

    Type containing all the options for the CSOR (controlled successive over relaxation) solver.

    Note that the defaults match DFDC with the exception of the relaxation schedule, which is an experimental feature.

    Fields

    • verbose::Bool = false : flag to print verbose statements
    • iteration_limit::Float = 1e2 : maximum number of iterations
    • nrf::Float = 0.4 : nominal relaxation factor
    • bt1::Float = 0.2 : backtracking factor 1
    • bt2::Float = 0.6 : backtracking factor 2
    • pf1::Float = 0.4 : press forward factor 1
    • pf2::Float = 0.5 : press forward factor 2
    • btw::Float = 0.6 : backtracking factor for wake
    • pfw::Float = 1.2 : press forward factor for wake
    • relaxation_schedule::TS = [[0.0;1e-14;1e-13;1e10]), [1.0;1.0;0.0;0.0])] : values used in spline definition for scaling the relaxation factors (second vector) after various convergence values (first vector).
    • f_circ::Float = 1e-3 : convergence tolerance for rotor circulation
    • f_dgamw::Float = 2e-4 : convergence tolerance for wake vortex strength
    • convergence_type::ConvergenceType = Relative() : dispatch for relative or absolute convergence criteria.
    • Vconv::AbstractArray{Float} = [1.0] : velocity used in relative convergence criteria (should be set to Vref).
    • converged::AbstractArray{Bool} = [false] : flag to track if convergence took place.
    source

    Preprocess

    DuctAPE.setup_analysisFunction
    setup_analysis(
    +    ducted_rotor::DuctedRotor,
    +    operating_point::OperatingPoint,
    +    options::Options=set_options();
    +    prepost_container_caching=nothing,
    +    solve_parameter_caching=nothing,
    +    solve_container_caching=nothing,
    +)

    Perform pre-processing and cache setup (as needed) for propuslor analysis.

    Arguments

    • ducted_rotor::DuctedRotor : DuctedRotor input object (see docstring for DuctedRotor type)
    • operating_point::OperatingPoint : OperatingPoint input object (see docstring for OperatingPoint type)
    • options::Options=set_options() : Options object (see set_options and related functions)

    Keyword Arguments

    • prepost_container_caching=nothing : Output of allocate_prepost_container_cache
    • solve_parameter_caching=nothing : Output of allocate_solve_parameter_container_cache
    • solve_container_caching=nothing : Output of allocate_solve_container_cache

    Returns

    • problem_dimensions::NamedTuple : Named Tuple contiaining bookkeeping information (problem dimensions)
    • prepost_containers::NamedTuple : Named Tuple containing reshaped views into the prepost cache
    • solve_parameter_cache_vector::Vector : Vector containing the relevant typed cache vector of solve parameters
    • solve_parameter_cache_dims::NamedTuple : Named Tuple containing dimensions used for reshaping the solve parameter cache
    • A_bb_LU::LinearAlgebra.LU : The LU factorization of the AIC matrix used in the panel method
    • lu_decomp_flag::Bool : flag indicating if the LU decomposition was successful
    • airfoils::Matrix{AFType} : Matrix contiaining the blade element airfoil polar objects
    • idmaps::NamedTuple : Named Tuple containing bookkeeping information (index mappings)
    source

    Analysis

    DuctAPE.analyzeFunction
    analyze(
    +    ducted_rotor::DuctedRotor,
    +    operating_point::OperatingPoint,
    +    reference_parameters::ReferenceParameters,
    +    options::Options=set_options();
    +    prepost_container_caching=nothing,
    +    solve_parameter_caching=nothing,
    +    solve_container_caching=nothing,
    +    return_inputs=false,
    +)

    Analyze ducted_rotor, including preprocessing.

    Arguments

    • ducted_rotor::DuctedRotor : DuctedRotor input object (see docstring for DuctedRotor type)
    • operating_point::OperatingPoint : OperatingPoint input object (see docstring for OperatingPoint type)
    • reference_parameters::ReferenceParameters : ReferenceParameters input object (see docstring for ReferenceParameters type)
    • options::Options=set_options() : Options object (see set_options and related functions)

    Keyword Arguments

    • prepost_container_caching=nothing : Output of allocate_prepost_container_cache
    • solve_parameter_caching=nothing : Output of allocate_solve_parameter_container_cache
    • solve_container_caching=nothing : Output of allocate_solve_container_cache
    • return_inputs=false : flag as to whether or not to return the pre-processed inputs

    Returns

    • outs::NamedTuple : Named Tuple of various analysis outputs (see docstring for postprocess for details), note, if linear system decomposition fails, no solve is performed and an empty vector is returned.
    • ins::NamedTuple : Named Tuple of various pre-processed inputs (e.g. panels and body linear system), will only be returned if return_inputs=true
    • convergence_flag : Flag for successful solve convergence
    source
    analyze(
    +    ducted_rotor::DuctedRotor,
    +    operating_point::OperatingPoint,
    +    reference_parameters::ReferenceParameters,
    +    prepost_containers,
    +    solve_parameter_cache_vector,
    +    solve_parameter_cache_dims,
    +    airfoils,
    +    A_bb_LU,
    +    idmaps,
    +    problem_dimensions,
    +    options::Options=set_options();
    +    return_inputs=false,
    +    solve_container_caching=nothing,
    +)

    Analyze ductedrotor, assuming `setupanalysis` has been called and the outputs thereof are being passed in here.

    Arguments

    • ducted_rotor::DuctedRotor : DuctedRotor input object (see docstring for DuctedRotor type)
    • operating_point::OperatingPoint : OperatingPoint input object (see docstring for OperatingPoint type)
    • reference_parameters::ReferenceParameters : ReferenceParameters input object (see docstring for ReferenceParameters type)
    • prepost_containers::NamedTuple : An output from setup_analysis containing reshaped views into the prepost cache
    • solve_parameter_cache_vector::Vector : An output from setup_analysis containing the relevant typed cache vector of solve parameters
    • solve_parameter_cache_dims::NamedTuple : An output from setup_analysis containing dimensions used for reshaping the solve parameter cache
    • airfoils::Vector{AFType} : An output from setup_analysis contiaining the blade element airfoil polar objects
    • A_bb_LU::LinearAlgebra.LU : An output from setup_analysis that is the LU decomposition of the AIC matrix used in the panel method
    • idmaps::NamedTuple : An output from setup_analysis containing bookkeeping information (index mappings)
    • problem_dimensions::NamedTuple : An output from setup_analysis contiaining bookkeeping information (problem dimensions)
    • options::Options=set_options() : Options object

    Keyword Arguments

    • solve_container_caching=nothing : Output of allocate_solve_container_cache
    • return_inputs=false : flag as to whether or not to return the pre-processed inputs

    Returns

    • outs::NamedTuple : Named Tuple of various analysis outputs (see docstring for postprocess for details), note, if linear system decomposition fails, no solve is performed and an empty vector is returned.
    • ins::NamedTuple : Named Tuple of various pre-processed inputs (e.g. panels and body linear system), will only be returned if return_inputs=true
    • convergence_flag : Flag for successful solve convergence
    source
    analyze(
    +    ducted_rotor::DuctedRotor,
    +    operating_point::AbstractVector{OperatingPoint},
    +    reference_parameters::ReferenceParameters,
    +    options::Options=set_options();
    +    prepost_container_caching=nothing,
    +    solve_parameter_caching=nothing,
    +    solve_container_caching=nothing,
    +    return_inputs=false,
    +)

    Analyze ducted_rotor, including preprocessing, for a set of operating points.

    Arguments

    • ducted_rotor::DuctedRotor : DuctedRotor input object
    • operating_point::AbstractVector{OperatingPoint} : Vector of Operating Points at which to analyze the ducted_rotor
    • reference_parameters::ReferenceParameters : ReferenceParameters input object (see docstring for ReferenceParameters type)
    • options::Options=set_options() : Options object

    Keyword Arguments

    • prepost_container_caching=nothing : Output of allocate_prepost_container_cache
    • solve_parameter_caching=nothing : Output of allocate_solve_parameter_container_cache
    • solve_container_caching=nothing : Output of allocate_solve_container_cache
    • return_inputs=false : flag as to whether or not to return the pre-processed inputs

    Returns

    • outs::Vector{NamedTuple} : Vector of named tuples of various analysis outputs (see docstring for postprocess for details), note, if linear system decomposition fails, no solve is performed and an empty vector is returned.
    • ins::NamedTuple : Named Tuple of various pre-processed inputs (e.g. panels and body linear system), will only be returned if return_inputs=true
    • convergence_flag : Flag for successful solve convergence
    source
    analyze(
    +    ducted_rotor::DuctedRotor,
    +    operating_point::Vector{OperatingPoint},
    +    reference_parameters::ReferenceParameters,
    +    prepost_containers,
    +    solve_parameter_cache_vector,
    +    solve_parameter_cache_dims,
    +    airfoils,
    +    A_bb_LU,
    +    idmaps,
    +    problem_dimensions,
    +    options::Options=set_options();
    +    return_inputs=false,
    +    solve_container_caching=nothing,
    +)

    Analyze ductedrotor, assuming `setupanalysis` has been called and the inputs are being passed in here.

    Arguments

    • ducted_rotor::DuctedRotor : DuctedRotor input object
    • operating_point::AbstractVector{OperatingPoint} : Vector of Operating Points at which to analyze the ducted_rotor
    • reference_parameters::ReferenceParameters : ReferenceParameters input object (see docstring for ReferenceParameters type)
    • prepost_containers::NamedTuple : An output from setup_analysis containing reshaped views into the prepost cache
    • solve_parameter_cache_vector::Vector : An output from setup_analysis containing the relevant typed cache vector of solve parameters
    • solve_parameter_cache_dims::NamedTuple : An output from setup_analysis containing dimensions used for reshaping the solve parameter cache
    • airfoils::Vector{AFType} : An output from setup_analysis contiaining the blade element airfoil polar objects
    • A_bb_LU::LinearAlgebra.LU : An output from setup_analysis that is the LU decomposition of the AIC matrix used in the panel method
    • idmaps::NamedTuple : An output from setup_analysis containing bookkeeping information (index mappings)
    • problem_dimensions::NamedTuple : An output from setup_analysis contiaining bookkeeping information (problem dimensions)
    • options::Options=set_options() : Options object

    Keyword Arguments

    • solve_container_caching=nothing : Output of allocate_solve_container_cache
    • return_inputs=false : flag as to whether or not to return the pre-processed inputs

    Returns

    • outs::Vector{NamedTuple} : Named Tuple of various analysis outputs (see docstring for postprocess for details), note, if linear system decomposition fails, no solve is performed and an empty vector is returned.
    • ins::NamedTuple : Named Tuple of various pre-processed inputs (e.g. panels and body linear system), will only be returned if return_inputs=true. Note that some inputs will be overwritten (e.g. the linear system RHS components related to the freestream) and only those associated with the final operating point will be returned.
    • convergence_flag : Flag for successful solve convergence
    source

    Miscellaneous

    Airfoil/Geometry Manipulation

    NACA 6-Series Cascade Geometry Generation

    diff --git a/v0.5.0/DuctAPE/theory/index.html b/v0.5.0/DuctAPE/theory/index.html new file mode 100644 index 00000000..0ad4b9e7 --- /dev/null +++ b/v0.5.0/DuctAPE/theory/index.html @@ -0,0 +1,2 @@ + +Theory · DuctAPE.jl

    Theory

    For a brief overview of the theory behind DuctAPE, see:

    • Mehr, J. and Ning, A., "DuctAPE: A steady-state, axisymmetric ducted fan analysis code designed for gradient-based optimization.," AIAA Aviation Forum, July 2024.

    For a more thorough dive into the details see this pdf document.

    diff --git a/v0.5.0/DuctAPE/theory_latex/.gitignore b/v0.5.0/DuctAPE/theory_latex/.gitignore new file mode 100644 index 00000000..98609611 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/.gitignore @@ -0,0 +1 @@ +*.aux diff --git a/v0.5.0/DuctAPE/theory_latex/axisym_self_induction.tex b/v0.5.0/DuctAPE/theory_latex/axisym_self_induction.tex new file mode 100644 index 00000000..54a47b97 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/axisym_self_induction.tex @@ -0,0 +1,307 @@ +\section{Derivation of Self-induction terms for Axisymmetric Panel Method} +\label{sec:axisym_selfinduction} + +The panels of the axisymmetric panel method, though flat, should be thought of as curved for the purposes of attributing self-induced velocities. +\Cref{fig:axisym_selfinduced_geometry} shows the two curvatures associated with the axisymmetric panels. +The first curvature that leads to a self-induced velocity is the curvature in the \((x,r)\) plane, the same plane in which a planar method would be developed. +In this case, we can reasonably use the self-induced velocity used for the planar case as described in the next sub-section. + +The other curvature that causes a self-induced velocity exists in the \((r,\theta)\) plane, and can be thought of as the effects of an equivalent vortex ring, sometimes referred to as a ``smoke'' ring due to the ease of visualization. +In \cref{ssec:ringvortexinduction} we go over the process of equating a ring vortex to an element of our vortex sheet to find this component of self-induced velocity. + +\begin{figure}[h!] + \centering + \includegraphics[width=0.65\textwidth]{./figures/axisym_selfinduced_geometry} + \caption{} + \label{fig:axisym_selfinduced_geometry} +\end{figure} + + +\subsection{Planar Component} +\label{app:planarselfinducedvelocity} + +Start with the standard planar vortex influence coefficient expressions for a vortex of unit strength with induced velocity components of + +\begin{align} + v_{x_{mn}} &= \frac{r_m - r_n}{2 \pi r^2_{mn}} d_n \\ + v_{r_{mn}} &= \frac{x_m - x_n}{2 \pi r^2_{mn}} d_n, +\end{align} + +\noindent and putting them together into the influence coefficient (coupling coefficient multiplied by panel length) + +\begin{equation} + a^\text{plane}_{mm} = \frac{d_m}{2 \pi} \lim_{m\rightarrow n} \left[\frac{(r_m - r_n)\cos \beta_m - (x_m - x_n)\sin \beta_m}{(x_m - x_n)^2+(r_m - r_n)^2}\right]. +\end{equation} + +\noindent Note that we want to find the value for the affect of the panel on itself, so we apply the limit as \(m\) approaches \(n\). + +We next note the following definitions for sine and cosine of the panel angle, \(\beta_m\): + +\begin{align} + \cos \beta_m &= \frac{\d x_m}{\d s_m} \\ + \sin \beta_m &= \frac{\d r_m}{\d s_m}; +\end{align} + +\noindent which we can substitute into our expression to yield + +\begin{equation} + a^\text{plane}_{mm} = \frac{d_m}{2 \pi} \lim_{m\rightarrow n} \left[\frac{(r_m - r_n) \frac{\d x_m}{\d s_m} - (x_m - x_n)\frac{\d r_m}{\d s_m}}{(x_m - x_n)^2+(r_m - r_n)^2}\right]. +\end{equation} + +Since this is indeterminate, we apply L'Hospital's rule, taking derivatives with respect to the differential length along the surface,\(s_m\), and treating the \(n\)th terms as constants. +We will work out the numerator first, then the denominator before putting everything back together. + +For the first term in the numerator, applying the product rule gives: + +\begin{equation} + \frac{\d}{\d s_m} \left[ (r_m-r_n)\frac{\d x_m}{\d s_m}\right] = \left(\frac{\d r_m}{\d s_m} - \frac{\d r_n}{\d s_m} \right) \frac{\d x_m}{\d s_m} + (r_m-r_n)\frac{\d^2 x_m}{\d s_m^2}, +\end{equation} + +\noindent which we can simplify slightly, remembering that we are taking \(n\)th terms as constants + +\begin{equation} + \left(\frac{\d r_m}{\d s_m} - \cancel{\frac{\d r_n}{\d s_m}} \right) \frac{\d x_m}{\d s_m} + (r_m-r_n)\frac{\d^2 x_m}{\d s_m^2} = \frac{\d r_m}{\d s_m} \frac{\d x_m}{\d s_m} + (r_m-r_n)\frac{\d^2 x_m}{\d s_m^2}. +\end{equation} + +We approach the second term of the numerator in the same manner, + +\begin{equation} + \begin{aligned} + \frac{\d}{\d s_m} \left[ (x_m-x_n)\frac{\d r_m}{\d s_m}\right] &= \left(\frac{\d x_m}{\d s_m} - \cancel{\frac{\d x_n}{\d s_m}} \right) \frac{\d r_m}{\d s_m} + (x_m-x_n)\frac{\d^2 r_m}{\d s_m^2}\\ + &= \frac{\d x_m}{\d s_m} \frac{\d r_m}{\d s_m} + (x_m-x_n)\frac{\d^2 r_m}{\d s_m^2}. + \end{aligned} +\end{equation} + +\noindent Putting the terms of the numerator together (remebering to subtract the second term from the first) we see that the \(\frac{\d x_m}{\d s_m} \frac{\d r_m}{\d s_m}\) terms cancel out, leaving us with a numerator of + +\begin{equation} +(r_m-r_n)\frac{\d^2 x_m}{\d s_m^2} - (x_m-x_n)\frac{\d^2 r_m}{\d s_m^2} +\end{equation} + +Next we look at the denominator of our limit. +Applying the chain rule to the first term in the denominator, and removing derivatives of constants yields + +\begin{equation} + \begin{aligned} + \frac{\d}{\d s_m} (x_m-x_n)^2 &= 2(x_m-x_n)\left(\frac{\d x_m}{\d s_m}-\cancel{\frac{\d x_n}{\d s_m}}\right)\\ + &= 2(x_m-x_n)\frac{\d x_m}{\d s_m}. + \end{aligned} +\end{equation} + +\noindent Similarly for the second term in the denominator: + +\begin{equation} + \begin{aligned} + \frac{\d}{\d s_m} (r_m-r_n)^2 &= 2(r_m-r_n)\left(\frac{\d r_m}{\d s_m}-\cancel{\frac{\d r_n}{\d s_m}}\right)\\ + &= 2(r_m-r_n)\frac{\d r_m}{\d s_m}. + \end{aligned} +\end{equation} + +\noindent Combining the two terms gives us the complete denominator + +\begin{equation} + 2\left[(x_m-x_n)\frac{\d x_m}{\d s_m} + (r_m-r_n)\frac{\d r_m}{\d s_m}\right] +\end{equation} + +Putting the numerator and denominator back together, and taking the 2 in the denominator out of the limit gives us + +\begin{equation} + a^\text{plane}_{mm} = \frac{d_m}{4 \pi} \lim_{m\rightarrow n} \left[\frac{(r_m-r_n)\frac{\d^2 x_m}{\d s_m^2} - (x_m-x_n)\frac{\d^2 r_m}{\d s_m^2}}{(x_m-x_n)\frac{\d x_m}{\d s_m} + (r_m-r_n)\frac{\d r_m}{\d s_m}}\right], +\end{equation} + +\noindent which we can see is still indeterminate. +So we will apply L'Hospital's rule once again. + +Beginning again with the first term of the numerator: + +\begin{equation} + \begin{aligned} + \frac{\d}{\d s_m} \left[(r_m-r_n)\frac{\d^2 x_m}{\d s_m^2}\right] &= \left(\frac{\d r_m}{\d s_m} - \cancel{\frac{\d r_n}{\d s_m}}\right)\frac{\d^2 x_m}{\d s_m^2}+(r_m-r_n)\frac{\d^3 x_m}{\d s_m^3}\\ + &= \frac{\d r_m}{\d s_m} \frac{\d^2 x_m}{\d s_m^2}+(r_m-r_n)\frac{\d^3 x_m}{\d s_m^3}. + \end{aligned} +\end{equation} + +\noindent Then the second term of the numerator: + +\begin{equation} + \begin{aligned} + \frac{\d}{\d s_m} \left[(x_m-x_n)\frac{\d^2 r_m}{\d s_m^2}\right] &= \left(\frac{\d x_m}{\d s_m} - \cancel{\frac{\d x_n}{\d s_m}}\right)\frac{\d^2 r_m}{\d s_m^2}+(x_m-x_n)\frac{\d^3 r_m}{\d s_m^3}\\ + &= \frac{\d x_m}{\d s_m} \frac{\d^2 r_m}{\d s_m^2}+(x_m-x_n)\frac{\d^3 r_m}{\d s_m^3}. + \end{aligned} +\end{equation} + +Now the first term of the denominator: + +\begin{equation} + \begin{aligned} + \frac{\d}{\d s_m} \left[(x_m-x_n)\frac{\d x_m}{\d s_m}\right] &= \left(\frac{\d x_m}{\d s_m} - \cancel{\frac{\d x_n}{\d s_m}}\right)\frac{\d x_m}{\d s_m}+(x_m-x_n)\frac{\d^2 x_m}{\d s_m^2}\\ + &= \left(\frac{\d x_m}{\d s_m}\right)^2+(x_m-x_n)\frac{\d^2 x_m}{\d s_m^2}. + \end{aligned} +\end{equation} + +\noindent And the second term of the denominator: + +\begin{equation} + \begin{aligned} + \frac{\d}{\d s_m} \left[(r_m-r_n)\frac{\d r_m}{\d s_m}\right] &= \left(\frac{\d r_m}{\d s_m} - \cancel{\frac{\d r_n}{\d s_m}}\right)\frac{\d r_m}{\d s_m}+(r_m-r_n)\frac{\d^2 r_m}{\d s_m^2}\\ + &= \left(\frac{\d r_m}{\d s_m}\right)^2+(r_m-r_n)\frac{\d^2 r_m}{\d s_m^2}. + \end{aligned} +\end{equation} + +\noindent Putting everything back together (remembering again that the second term in the numerator is subtracted) gives + +\begin{equation} + a^\text{plane}_{mm} = \frac{d_m}{4 \pi} \lim_{m\rightarrow n} \left[\frac{\frac{\d r_m}{\d s_m} \frac{\d^2 x_m}{\d s_m^2}+(r_m-r_n)\frac{\d^3 x_m}{\d s_m^3}-\frac{\d x_m}{\d s_m} \frac{\d^2 r_m}{\d s_m^2}-(x_m-x_n)\frac{\d^3 r_m}{\d s_m^3}}{\left(\frac{\d x_m}{\d s_m}\right)^2+(x_m-x_n)\frac{\d^2 x_m}{\d s_m^2}+\left(\frac{\d r_m}{\d s_m}\right)^2+(r_m-r_n)\frac{\d^2 r_m}{\d s_m^2}}\right]. +\end{equation} + +Taking the limit now, give us + +\begin{equation} + \label{eqn:planarselfinduced1} + a^\text{plane}_{mm} = \frac{d_m}{4 \pi} \frac{\frac{\d r_m}{\d s_m} \frac{\d^2 x_m}{\d s_m^2}-\frac{\d x_m}{\d s_m} \frac{\d^2 r_m}{\d s_m^2}}{\left(\frac{\d x_m}{\d s_m}\right)^2+\left(\frac{\d r_m}{\d s_m}\right)^2}. +\end{equation} + + +Although this expression can be uses as-is, Lewis \cite{Lewis_1991} proposed the introduction of a transformation that can further simplify this expression, removing the need for curve fitting procedures. + +He begins with the transformations + +\begin{align} + \frac{\d r_m}{\d s_m} &= \frac{\d r_m}{\d x_m}\frac{\d x_m}{\d s_m}\\ + \frac{\d^2 r_m}{\d s_m^2} &= \frac{\d^2 r_m}{\d x_m^2}\left(\frac{\d x_m}{\d s_m}\right)^2 + \frac{\d r_m}{\d x_m}\frac{\d^2 x_m}{\d s_m^2}. +\end{align} + +Applying these transformations to \cref{eqn:planarselfinduced1} and simplifying leads to + +\begin{align} + a^\text{plane}_{mm} &= \frac{d_m}{4 \pi} + \frac{ + \frac{\d r_m}{\d x_m}\frac{\d x_m}{\d s_m} \frac{\d^2 x_m}{\d s_m^2} + -\frac{\d x_m}{\d s_m} \left[\frac{\d^2 r_m}{\d x_m^2}\left(\frac{\d x_m}{\d s_m}\right)^2 + + \frac{\d r_m}{\d x_m}\frac{\d^2 x_m}{\d s_m^2} \right] + }{ + \left(\frac{\d x_m}{\d s_m}\right)^2 + + \left(\frac{\d r_m}{\d x_m}\right)^2\left(\frac{\d x_m}{\d s_m}\right)^2 + } \\ +% + &= \frac{d_m}{4 \pi} + \frac{ + \frac{\d r_m}{\d x_m}\cancel{\frac{\d x_m}{\d s_m}} \frac{\d^2 x_m}{\d s_m^2} + - \cancel{\frac{\d x_m}{\d s_m}} \left[\frac{\d^2 r_m}{\d x_m^2}\left(\frac{\d x_m}{\d s_m}\right)^2 + + \frac{\d r_m}{\d x_m}\frac{\d^2 x_m}{\d s_m^2} \right] + }{ + \left(\frac{\d x_m}{\d s_m}\right)^{\cancel{2}} + + \left(\frac{\d r_m}{\d x_m}\right)^2\left(\frac{\d x_m}{\d s_m}\right)^{\cancel{2}} + } \\ +% + &= \frac{d_m}{4 \pi} + \frac{ + \cancel{\frac{\d r_m}{\d x_m} \frac{\d^2 x_m}{\d s_m^2}} + - \left[\frac{\d^2 r_m}{\d x_m^2}\left(\frac{\d x_m}{\d s_m}\right)^2 + + \cancel{\frac{\d r_m}{\d x_m} \frac{\d^2 x_m}{\d s_m^2}} \right] + }{ + \frac{\d x_m}{\d s_m} + + \left(\frac{\d r_m}{\d x_m}\right)^2 \frac{\d x_m}{\d s_m} + } \\ +% + &= \frac{d_m}{4 \pi} + \frac{ + - \frac{\d^2 r_m}{\d x_m^2}\left(\frac{\d x_m}{\d s_m}\right)^{\cancel{2}} + }{ + \cancel{\frac{\d x_m}{\d s_m}} + + \left(\frac{\d r_m}{\d x_m}\right)^2\cancel{\frac{\d x_m}{\d s_m}} + } \\ +% +\label{eqn:planarselfinduced2} + &= \frac{d_m}{4 \pi} + \frac{ + - \frac{\d^2 r_m}{\d x_m^2} \frac{\d x_m}{\d s_m} + }{ + 1 + \left(\frac{\d r_m}{\d x_m}\right)^2 + }. +\end{align} + +\noindent We can then eliminate the \(\d x_m/ \d s_m\) term by applying the Pythagorean theorem such that + +\begin{align} + \d s_m^2 &= \d x_m^2 + \d r_m^2 \\ + \left(\frac{\d s_m}{\d x_m}\right)^2 &= \left(\frac{\d x_m}{\d x_m}\right)^2 + \left(\frac{\d r_m}{\d x_m}\right)^2 \\ + \frac{\d s_m}{\d x_m} &= \left[1 + \left(\frac{\d r_m}{\d x_m}\right)^2\right]^{1/2} \\ + \frac{\d x_m}{\d s_m} &= \frac{1}{\left[1 + \left(\frac{\d r_m}{\d x_m}\right)^2\right]^{1/2} } +\end{align} + +\noindent Which substituted into \cref{eqn:planarselfinduced2} leaves + +\begin{align} +a^\text{plane}_{mm} &= \frac{d_m}{4 \pi} +\frac{ + - \frac{\d^2 r_m}{\d x_m^2} \frac{1}{\left[1 + \left(\frac{\d r_m}{\d x_m}\right)^2\right]^{1/2} } +}{ + \left(\frac{\d r_m}{\d x_m}\right)^2 +} \\ +% + &= \frac{d_m}{4 \pi} + \frac{ + - \frac{\d^2 r_m}{\d x_m^2} + }{ + \left[1 + \left(\frac{\d r_m}{\d x_m}\right)^2\right]^{1/2} \left[1 + \left(\frac{\d r_m}{\d x_m}\right)^2\right] + } \\ +% + &= \frac{d_m}{4 \pi} + \frac{ + - \frac{\d^2 r_m}{\d x_m^2} + }{ + \left[1 + \left(\frac{\d r_m}{\d x_m}\right)^2\right]^{3/2} + } +\end{align} + +Realizing that the formula for the \textit{internal} radius of curvature is + +\begin{equation} + R_m = \frac{ + \left[1 + \left(\frac{\d r_m}{\d x_m}\right)^2\right]^{3/2} + }{ + -\frac{\d^2 r_m}{\d x_m^2} + }, +\end{equation} + +\noindent we are left with the simple expression + +\begin{equation} + a^\text{plane}_{mm} = \frac{d_m}{4 \pi R_m}. +\end{equation} + + + +\subsection{Vortex Ring Component} +\label{app:smokeringinduction} + +We start with an approximate expression for the self-induced velocity of a ring vortex as presented by Lamb \cite{Lamb_1945}.\sidenote{Lamb notes/cites that this expression is presented and/or verified by other authors in addition to the derivation he presents.}%book is called Hydrodyanmics, and is in your reading/books directory + +\begin{equation} + \label{eqn:lambvortex} + v_x = - \frac{1}{4 \pi r_m} \left[ \ln \left(\frac{8 r_m}{a} - \frac{1}{4}\right)\right] +\end{equation} + +\where the negative out front is due to our coordinate system as shown in \cref{fig:axisym_fundamental_geometry}, thus the vortex rings used in our method will induce a velocity in the negative x-direction. +The variable \(a\) in this expression is the cross-sectional radius of the vortex ring. +If we take an element of our vortex sheet of length, \(d_m\), having a total strength of \(\gamma(s_m)d_m\), distributed across the vortex element, we can reasonable imagine this to be analogous to a flattened vortex ring of total perimeter \(2d_m\) and vorticity strength of \(\gamma(s_m)/2\) (see \cref{fig:smokeringselfinduction}) +With this assumption in mind, we can relate our vortex sheet to the vortex ring by taking the ring to have the same total perimeter, thus the radius of the equivalent vortex ring would be \(a = d_m / \pi\). +Substituting into \cref{eqn:lambvortex} gives us the expression for the self-induced velocity due to the curvature of the surface in the \((r,\theta)\) plane + +\begin{equation} + v_x = - \frac{1}{4 \pi r_m} \left[ \ln \left(\frac{8 \pi r_m}{d_m} - \frac{1}{4}\right)\right] +\end{equation} + +\noindent To apply this now to our panel method, we simply need to remember to multiply by the length and cosine of the angle of the panel on which we are stationed to achieve this portion of the influence coefficient. + +\begin{equation} + a^\text{ring}_{mm} = - \frac{\cos(\beta_m)d_m}{4 \pi r_m} \left[ \ln \left(\frac{8 \pi r_m}{d_m} - \frac{1}{4}\right)\right] +\end{equation} + +\begin{figure}[h!] + \centering + \includegraphics[width=0.65\textwidth]{./figures/smokeringselfinduction} + \caption{} + \label{fig:smokeringselfinduction} +\end{figure} diff --git a/v0.5.0/DuctAPE/theory_latex/build.sh b/v0.5.0/DuctAPE/theory_latex/build.sh new file mode 100755 index 00000000..3397d683 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/build.sh @@ -0,0 +1,32 @@ +FNAME=theory + +# OPTION `build.sh genall`: Generate all auxiliary files +if [ ${1:-not} = genall ] +then + + # Remove all auxiliary files + sh clean.sh + + # # Remove biber cache because it gets corrupted now and then. + # rm -rf $(biber --cache) + + # Pre-compilation + pdflatex ${FNAME}.tex + + # Generate index files + makeindex ${FNAME}.nlo -s nomencl.ist -o ${FNAME}.nls + # makeindex main.idx -s main.mst + + # Generate .blg .bbl bibliography files + biber ${FNAME} + +fi + +# Pre-compile again to add bibliography to TOC +pdflatex ${FNAME}.tex + +# Final compilation +pdflatex ${FNAME}.tex + +# Remove auxiliary files +sh clean.sh diff --git a/v0.5.0/DuctAPE/theory_latex/byubib.bbx b/v0.5.0/DuctAPE/theory_latex/byubib.bbx new file mode 100644 index 00000000..e818f122 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/byubib.bbx @@ -0,0 +1,1217 @@ +%% ----------------------------------------------------------------- +%% Purpose: A biblatex implementation for AIAA Publications +%% Source: https://github.com/nasa/nasa-latex-docs +%% Type: Biblatex Bibliography Style +%% ----------------------------------------------------------------- + +\ProvidesFile{aiaa.bbx}[2016/04/13 v1.0 biblatex bibliography style] + +% Load the standard style to avoid copy-pasting unnecessary material +\RequireBibliographyStyle{numeric-comp} +\DeclareNameAlias{default}{family-given} + +\defbibenvironment{bibliography} + {\list +{\printfield[labelnumberwidth]{labelnumber}} +{\setlength{\labelwidth}{\labelnumberwidth}% + \setlength{\leftmargin}{0pt}% + %\setlength{\itemindent}{-\leftmargin}% + \setlength{\bibhang}{0pt}% + \setlength{\labelsep}{0.75\labelwidth}% + % \addtolength{\leftmargin}{\labelsep}% + \setlength{\itemsep}{\bibitemsep}% +\setlength{\parsep}{\bibparsep}}% + \renewcommand*{\makelabel}[1]{\hss##1}} +{\endlist} +{\item} + +% New options +\newtoggle{bbx:articletitle} +\newtoggle{bbx:chaptertitle} +\newtoggle{bbx:pageranges} +\DeclareBibliographyOption{articletitle}[true]{% + \settoggle{bbx:articletitle}{#1}% +} +\DeclareBibliographyOption{chaptertitle}[true]{% + \settoggle{bbx:chaptertitle}{#1}% +} +\DeclareBibliographyOption{pageranges}[true]{% + \settoggle{bbx:pageranges}{#1}% +} +\DeclareBibliographyOption{biblabel}{% + \ifstrequal{#1}{brackets} + {% +% \DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{##1}}% +% \setlength{\biblabelsep}{5pt}% + }% + {% + \DeclareFieldFormat{labelnumberwidth}{\textcolor{primary}{##1}}% + \setlength{\biblabelsep}{3pt}% + } + {% + \DeclareFieldFormat{labelnumberwidth}{\mkbibsuperscript{##1}}% + \setlength{\biblabelsep}{1pt}% + }% +} + +% Alter settings that carry through from biblatex +\ExecuteBibliographyOptions + { + articletitle = true , + chaptertitle = true , + biblabel = brackets , + doi = false , + eprint = false , + isbn = false , + maxnames = 999 , + maxcitenames = 999 , + pageranges = true , + dateabbrev = false , + url = true + } + +\uspunctuation + +% links to doi, isbn, or url, in title +\newbibmacro*{string+doiurlisbn}[1]{% + \iffieldundef{doi}{% + \iffieldundef{isbn}{% + \iffieldundef{url}{% + \ifentrytype{patent}{% + \href{https://patents.google.com/patent/US\thefield{number}/en}{#1}% + }{#1}% + }{% if only url is available + \href{https://\thefield{url}}{#1}% + }% + }{% if only url or isbn is available + \href{https://books.google.com/books?vid=ISBN\thefield{isbn}}{#1}% + }% + }% + {% + \href{https://dx.doi.org/\thefield{doi}}{#1}% + }% +} + +% Custom field formats +\DeclareFieldFormat[patent]{number}{\mkonepagegrouped{#1}} +\DeclareFieldFormat{pages}{% + \mkpageprefix[bookpagination][\mkpagegrouped]{#1}% +} +\DeclareFieldFormat{titlecase}{\bbx@colon@search\MakeCapital{#1}} +\DeclareFieldFormat{sentencecase}{\bbx@colon@search\MakeSentenceCase{#1}} +%\DeclareFieldFormat[report]{title}{\mkbibquote{#1\isdot}} +%\DeclareFieldFormat[online]{title}{\mkbibquote{#1\isdot}} +\DeclareFieldFormat{url}{\bibstring{url}\addcolon\space\url{#1}} +%\DeclareFieldFormat[misc]{title}{#1} +\DeclareFieldFormat[article,inbook,incollection,book, + inproceedings,patent,thesis,unpublished,suppbook, + suppcollection,suppperiodical]{citetitle}{\mkbibemph{#1}} +\DeclareFieldFormat[article,inbook,report,techreport, + inproceedings,patent,thesis,unpublished,suppbook, + suppcollection,suppperiodical]{title}{\usebibmacro{string+doiurlisbn}{\mkbibquote{#1}}} +\DeclareFieldFormat[book,incollection]{title}{\usebibmacro{string+doiurlisbn}{\mkbibemph{#1}}} +%\DeclareFieldFormat +% [article,inbook,incollection,inproceedings,patent,thesis, +% unpublished,techreport,misc,book] +% {title}{\mkbibemph{#1}} + +% Brackets around labels in the bibliography +\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{#1}} + +% Simple modifications to punctuation, etc. +\renewcommand*\bibnamedash{\textemdash\textemdash} +\renewcommand*\intitlepunct{\addspace} +\renewcommand*\newunitpunct{\addcomma\addspace} + +% Bibliography strings +\NewBibliographyString{patentjp} +\NewBibliographyString{presentedat} + +\DefineBibliographyStrings{english}{ + andothers = \mkbibemph{et al\adddot}\addspace , + chapter = ch\adddot , + editor = Ed\adddot , + editors = Eds\adddot , + mathesis = Master's thesis , + phdthesis = Ph\adddot D\adddot\addspace Dissertation, + patentjp = Japanese Patent , + patentus = U\adddot S\adddot\addspace Patent , + presentedat = presented at the\addspace , + techreport = , + url = \textsc{url} \addspace, + urlseen = retrieved, + volume = vol\adddot, + number = no\adddot, +} + +% remove "in" +\renewbibmacro{in:}{} + +% No period after doi, ibsn, or url +\renewcommand*{\finentrypunct}{% + \ifboolexpr{(togl {bbx:doi} and not test {\iffieldundef{doi}}) or + (togl {bbx:isbn} and not test {\iffieldundef{isbn}})% or + %(togl {bbx:url} and not test {\iffieldundef{url}} and test {\ifentrytype{online}})% + }% + {}% + {\addperiod}% + } + +% Put "cited on" back reference in margin +\DefineBibliographyStrings{english}{% + backrefpage = {cited on p.}, % for single page number + backrefpages = {cited on pp.} % for multiple page numbers +} + +\DeclareFieldFormat{pagerefformat}{{\footnotesize\color{mediumgray}#1}} +\renewbibmacro*{pageref}{% + \iflistundef{pageref} + {} + {\refnote{%\footnotesize%\color{gray}%{% + \printtext[pagerefformat]{% + \ifnumgreater{\value{pageref}}{1}% + {\bibstring{backrefpages}\ppspace}% + {\bibstring{backrefpage}\ppspace}% + \printlist[pageref][-\value{listtotal}]{pageref}% + }% + }}% + } + +\DeclareFieldFormat{urldate}{\bibstring{urlseen}\space#1} + +% \DefineBibliographyStrings{english}{ +% june = Jun\adddot , +% july = Jul\adddot , +% september = Sep\adddot , +% } + +% % Support for dashed author name replacement +% \InitializeBibliographyStyle{\global\undef\bbx@lasthash} +% +% \newbibmacro*{bbx:savehash}{\savefield{fullhash}{\bbx@lasthash}} + +% Bibliography macros +% \renewbibmacro*{author}{% +% \ifboolexpr{ +% test \ifuseauthor +% and +% not test {\ifnameundef{author}} +% } +% {% +% \iffieldequals{fullhash}{\bbx@lasthash} +% {\bibnamedash\addcomma\space} +% {\printnames{author}}% +% \usebibmacro{bbx:savehash}% +% \iffieldundef{authortype} +% {} +% {% +% \setunit{\addcomma\space}% +% \usebibmacro{authorstrg}% +% }% +% } +% {\global\undef\bbx@lasthash}% +% } + +\renewbibmacro*{bybookauthor}{% + \ifnamesequal{author}{bookauthor} + {} + {% + \iffieldundef{bookauthor} + {} + {% + \printnames{bookauthor}% + \newunit + }% + }% +} + +\renewbibmacro*{byeditor+others}{% + \ifnameundef{editor} + {} + {% + \usebibmacro{editor}% + \setunit{\addspace}% + \printnames[byeditor]{editor}% + \clearname{editor}% + \newunit + }% + \usebibmacro{byeditorx}% + \usebibmacro{bytranslator+others}% +} + +\renewbibmacro*{doi+eprint+url}{% + \setunit{\adddot\addspace}% + \iftoggle{bbx:doi} + {% + \iffieldundef{doi}% + {}% + {\ifboolexpr{(togl {bbx:isbn} and not test {\iffieldundef{isbn}})}{}{\addperiod\addspace}\printfield{doi}}% + }% + {}% + \setunit{\adddot\addspace}% + \iftoggle{bbx:eprint} + {\usebibmacro{eprint}} + {}% + \setunit{\adddot\addspace}% + %\iftoggle{bbx:url} % do not print random urls, online for online + % {% + % \iffieldundef{url}% + % {}% + % {\addperiod\\\printfield{url} (Accessed: \printfield{urldate})}% + % }% + % {}% + %{\usebibmacro{url+urldate}} + %{}% +} + +\renewbibmacro*{url+urldate}{% + \iftoggle{bbx:url} + {% + \iffieldundef{url}% + {}% + {\addperiod\space\printfield{url} \usebibmacro{urldate}}% + }% + {}% +} + +%\renewbibmacro*{isbn}{% +\newbibmacro*{isbn}{% + \setunit{\adddot\addspace}% + \iftoggle{bbx:isbn} + {% + \iffieldundef{isbn}% + {}% + %{\addperiod\\\printfield{isbn}}% + {\addperiod\addspace\href{http://books.google.com/books?vid=ISBN\thefield{isbn}}{\printfield{isbn}}}% + }% + {}% +} + +\newbibmacro*{patnumber}{% + %\setunit{\adddot\addspace}% + \iffieldundef{number}% + {}% + {\href{https://patents.google.com/patent/US\thefield{number}/en}{\printfield{number}}}% +} + +\renewbibmacro*{event+venue+date}{% + \iffieldundef{eventtitle} + {} + {% + \bibstring{presentedat}% + \printfield{eventtitle}% + }% + \ifboolexpr{ + test {\iffieldundef{venue}} + and + test {\iffieldundef{eventyear}} + } + {} + {\setunit*{\addspace}% + \printtext[parens]{% + \printfield{venue}% + \setunit*{\addcomma\space}% + \printeventdate}}% + \newunit +} + +\newbibmacro*{institution+location}{% + \printlist{institution}% + \newunit + \printlist{location}% + \newunit +} + +\renewbibmacro*{institution+location+date}{% + \printlist{institution}% + \newunit + \printlist{location}% + \newunit + \usebibmacro{date}% + \newunit +} + +\renewbibmacro*{issue+date}{% + \printtext{% + \iffieldundef{issue} + {\usebibmacro{date}} + {% + \printfield{issue}% + \setunit*{\addspace}% + \usebibmacro{date}% + }% + }% + \newunit + \usebibmacro{issue}% + \newunit +} + +\renewbibmacro*{journal}{% + \iffieldundef{journaltitle} + {} + {% + \printtext[journaltitle]{% + \printfield[titlecase]{journaltitle}% + \printfield[titlecase]{journalsubtitle}% + }% + }% + \midsentence +} + +%\renewbibmacro*{shortjournal}{% +\newbibmacro*{shortjournal}{% + \iffieldundef{shortjournal} + {} + {% + \printtext[shortjournal]{% + \mkbibemph{\printfield[titlecase]{shortjournal}}% + }% + }% + \midsentence +} + +\renewbibmacro*{journal+issuetitle}{% + \usebibmacro{journal}% + \newunit + \iffieldundef{series} + {} + {% + \newunit + \printfield{series}% + \newunit + }% + \usebibmacro{volume+number+eid}% + \setunit{\addspace}% +} + +%\renewbibmacro*{shortjournal+issuetitle}{% +\newbibmacro*{shortjournal+issuetitle}{% + \usebibmacro{shortjournal}% + \newunit + \iffieldundef{series} + {} + {% + \newunit + \printfield{series}% + \newunit + }% + \usebibmacro{volume+number+eid}% + \setunit{\addspace}% +} + +\renewbibmacro*{maintitle+booktitle}{% + \iffieldundef{maintitle} + {} + {% + \usebibmacro{maintitle}% + \newunit\newblock + }% + \usebibmacro{booktitle}% + \newunit +} + +\newbibmacro*{maintitle+booktitle(inproceedings)}{% + \iffieldundef{maintitle} + {% + \iffieldundef{booktitle} + {} + {% + \usebibmacro{in:}% + \usebibmacro{maintitle+booktitle}% + \clearfield{eventtitle}% + \clearfield{number}% + }% + } + {% + \usebibmacro{in:}% + \usebibmacro{maintitle+booktitle}% + \clearfield{eventtitle}% + \clearfield{number}% + }% +} + +\renewbibmacro*{maintitle+title}{% + \iffieldsequal{maintitle}{title} + {% + \clearfield{maintitle}% + \clearfield{mainsubtitle}% + \clearfield{maintitleaddon}% + } + {% + \iffieldundef{maintitle} + {} + {% + \usebibmacro{maintitle}% + }% + }% + \usebibmacro{title-in-maintitle}% + \newunit +} + +\newbibmacro*{pages}{% + \setunit{\bibpagespunct}% + \printfield{pages}% +} + +\renewbibmacro*{series+number}{% + \iffieldundef{series} + {} + {% + \bibstring{jourser}% + \addspace + \printfield{series}% + \setunit*{\addspace}% + }% + \printfield{number}% + \newunit +} + +\renewbibmacro*{title}{% + \ifboolexpr{ + test {\iffieldundef{title}} + and + test {\iffieldundef{subtitle}} + } + {} + {% + \printtext[title]{% + \printfield[sentencecase]{title}% + \setunit{\subtitlepunct}% + \printfield[sentencecase]{subtitle}% + }% + \newunit + }% + \printfield{titleaddon}% +} + +\newbibmacro*{title-in-maintitle}{% + \ifboolexpr{ + test {\iffieldundef{title}} + and + test {\iffieldundef{subtitle}} + } + {} + {% + \printtext[title]{% + \printfield[titlecase]{title}% + \setunit{\subtitlepunct}% + \printfield[titlecase]{subtitle}% + }% + \newunit + }% + \printfield{titleaddon}% +} + +\renewbibmacro*{title+issuetitle}{% + \usebibmacro{periodical}% + \newunit + \printfield{series} + \newunit + \iffieldundef{volume}% + {} + {% + \bibstring{volume}% + \addspace + \printfield{volume}% + \newunit + } + \printfield{number}% + \newunit + \printfield{eid}% + \newunit + \usebibmacro{issue+date}% + \newunit + \usebibmacro{issue}% + \newunit +} + +\renewbibmacro*{volume+number+eid}{% + \iffieldundef{volume} + {} + {% + \bibstring{volume}% + \addspace + \printfield{volume}% + \newunit + }% + \iffieldundef{number} + {} + {% + \bibstring{number}% + \addspace + \printfield{number}% + \newunit + }% + \newunit + \printfield{eid}% +} + +\newbibmacro*{volume+part}{% + \iffieldundef{volume} + {} + {% + \printfield{volume}% + \printfield{part}% + \setunit{\addcolon\space}% + }% +} + +% Specialised functions for manipulating data, where the biblatex +% kernel does not provide a suitable function. +\newcommand*{\mkpagegrouped}[1]{% + \mkpagegrouped@aux#1\bibrangedash&% +} + +\newcommand*{\mkpagegrouped@aux}{} +\def\mkpagegrouped@aux#1\bibrangedash#2&{% + \mkonepagegrouped{#1}% + \ifblank{#2} + {} + {% + \bibrangedash + \mkpagegrouped@second#2&% + }% +} + +\newcommand*{\mkonepagegrouped}[1]{% + \ifinteger{#1} + {% + \mkpagegrouped@ifmorethanfour{#1} + {\mkpagegrouped@separate{}#1\@empty\@empty\@empty} + {#1}% + } + {#1}% +} + +\newcommand*{\mkpagegrouped@second}{} +\def\mkpagegrouped@second#1\bibrangedash&{% + \mkpagegrouped@second@auxi#1\bibrangessep&% +} + +\newcommand*{\mkpagegrouped@second@auxi}{} +\def\mkpagegrouped@second@auxi#1\bibrangessep#2&{% + \mkonepagegrouped{#1}% + \ifblank{#2} + {} + {% + \bibrangessep + \mkpagegrouped@second@auxii#2&% + }% +} + +\newcommand*{\mkpagegrouped@second@auxii}{} +\def\mkpagegrouped@second@auxii#1\bibrangessep&{% + \mkpagegrouped{#1}% +} + +\newcommand*{\mkpagegrouped@ifmorethanfour}[1]{% + \mkpagegrouped@ifmorethanfour@aux#1\@empty\@empty\@empty\@empty + \@empty\@nil +} + +\newcommand*{\mkpagegrouped@ifmorethanfour@aux}{} +\def\mkpagegrouped@ifmorethanfour@aux#1#2#3#4#5\@nil{% + \ifx\@empty#5\@empty + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi +} + +\newcommand*{\mkpagegrouped@separate}[4]{% + \ifx\@empty#2\@empty + \mkpagegrouped@print#1\relax + \else + \ifx\@empty#3\@empty + \mkpagegrouped@print\@empty\@empty#1#2\relax + \else + \ifx\@empty#4\@empty + \mkpagegrouped@print\@empty#1#2#3\relax + \else + \mkpagegrouped@separate@aux{#1#2#3#4}% + \fi + \fi + \fi +} + +\newcommand*{\bbx@digits@separate@aux}{} +\def\mkpagegrouped@separate@aux#1\fi\fi\fi{% + \fi\fi\fi\mkpagegrouped@separate{#1}% +} + +\newcommand*{\mkpagegrouped@print}[4]{% + \ifblank{#1}{}{#1}% + #2#3% + \ifx#4\relax + \else + \addnbthinspace + \expandafter\mkpagegrouped@print\expandafter#4% + \fi +} + +% {} {} +\newcommand*{\bbx@colon@search}[2]{% + \bbx@colon@search@aux#1#2: \stop +} +\long\def\bbx@colon@search@aux#1#2: #3\stop{% + #1{#2}% + \ifblank{#3} + {} + {% + : % + \bbx@colon@search@aux#1#3\stop + }% +} + +% New bibliography drivers, using the required order of fields. These +% are mainly copied from standard.bbx then modified. +\DeclareBibliographyDriver{article}{% + \usebibmacro{bibindex}% + \usebibmacro{pageref}% + \usebibmacro{begentry}% + \usebibmacro{author/translator+others}% + \newunit + \usebibmacro{maintitle+title}% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{bytranslator+others}% + \newunit\newblock + \printfield{version}% + \newunit\newblock + \usebibmacro{journal+issuetitle}% + \newunit + \usebibmacro{byeditor+others}% + \newunit + \usebibmacro{issue+date}% + \newunit + \usebibmacro{pages}% +% \newunit +% \printfield{note}% +% \newunit\newblock +% \iftoggle{bbx:isbn} +% {\printfield{issn}} +% {}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + % \setunit{\bibpagerefpunct}\newblock + % \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% + \usebibmacro{finentry}% + \newunit\newblock + \usebibmacro{doi+eprint+url}% + \usebibmacro{finentry} +} + +\DeclareBibliographyDriver{book}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{pageref}% + \usebibmacro{author/editor+others/translator+others}% + \setunit{\labelnamepunct}\newblock + \usebibmacro{maintitle+title}% + \newunit + \printlist{language}% + \newunit\newblock + \printfield{edition}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit\newblock + \printfield{volumes}% + \newunit\newblock + \usebibmacro{series+number}% + \setunit{\adddot\addspace}% + \newblock + \usebibmacro{publisher+location+date}% + \newunit\newblock + \usebibmacro{volume+part}% + \newunit + \usebibmacro{chapter+pages}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + % \setunit{\bibpagerefpunct}\newblock + % \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% + \usebibmacro{finentry}% + \newunit\newblock + \usebibmacro{isbn}% + \usebibmacro{finentry}% + \newunit\newblock + \usebibmacro{doi+eprint+url}% + \usebibmacro{finentry}% +} + +\DeclareBibliographyDriver{inbook}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{pageref}% + \usebibmacro{author/translator+others}% + \setunit{\labelnamepunct}\newblock + \usebibmacro{title}% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{in:}% + \usebibmacro{bybookauthor}% + \usebibmacro{maintitle+booktitle}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit\newblock + \printfield{edition}% + \newunit + \printfield{volumes}% + \newunit\newblock + \usebibmacro{series+number}% + \setunit{\adddot\addspace}% + \newblock + \usebibmacro{publisher+location+date}% + \newunit\newblock + \usebibmacro{volume+part}% + \newunit + \usebibmacro{chapter+pages}% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{isbn}} + {}% + \newunit\newblock + \usebibmacro{doi+eprint+url}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + % \setunit{\bibpagerefpunct}\newblock + % \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% + \usebibmacro{finentry}% +} + +\DeclareBibliographyDriver{incollection}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{pageref}% + \usebibmacro{author/translator+others}% + \setunit{\labelnamepunct}\newblock + \usebibmacro{title}% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{in:}% + \usebibmacro{maintitle+booktitle}% + \newunit\newblock + \usebibmacro{series+number}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit\newblock + \printfield{edition}% + \newunit + \iffieldundef{maintitle} + {\printfield{volume}% + \printfield{part}} + {}% + \newunit + \printfield{volumes}% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \usebibmacro{publisher+location+date}% + \newunit\newblock + \usebibmacro{chapter+pages}% + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{isbn}} + {}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + % \setunit{\bibpagerefpunct}\newblock + % \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% + \usebibmacro{finentry}% + \newunit\newblock + \usebibmacro{doi+eprint+url}% + \usebibmacro{finentry}% +} + +\DeclareBibliographyDriver{inproceedings}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{pageref}% + \usebibmacro{author/translator+others}% + \setunit{\labelnamepunct}\newblock + \usebibmacro{title}% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{maintitle+booktitle(inproceedings)}% + \midsentence + \newunit\newblock + \usebibmacro{event+venue+date}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit\newblock + \printfield{volumes}% + \newunit\newblock + \usebibmacro{series+number}% + \newunit\newblock + \printlist{organization}% + \newunit\newblock + \usebibmacro{volume+part}% + \newunit + \usebibmacro{publisher+location+date}% + \newunit\newblock + \usebibmacro{chapter+pages}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + % \setunit{\bibpagerefpunct}\newblock + % \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% + \usebibmacro{finentry}% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \usebibmacro{doi+eprint+url}% + \usebibmacro{finentry}% + \newunit\newblock + %\usebibmacro{isbn}% + \usebibmacro{finentry}% +} + +\DeclareBibliographyDriver{online}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{pageref}% + \usebibmacro{author/editor+others/translator+others}% + \newunit + \usebibmacro{maintitle+title}% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{date}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{bytranslator+others}% + \newunit\newblock + \printfield{version}% + \newunit\newblock + \printlist{organization}% + \setunit{\adddot\addspace}% + \iftoggle{bbx:eprint} + {\usebibmacro{eprint}} + {}% + %\setunit{\adddot\addspace}% + \usebibmacro{addendum+pubstate}% + % \setunit{\bibpagerefpunct}\newblock + % \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% + \usebibmacro{finentry}% + \newunit\newblock% + \usebibmacro{url+urldate}% + \usebibmacro{finentry}% +} + +\DeclareBibliographyDriver{patent}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{pageref}% + \usebibmacro{author}% + \setunit{\labelnamepunct}\newblock + \usebibmacro{title}% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \printfield{type}% + \setunit*{\addspace}% + %\printfield{number}% + \usebibmacro{patnumber} + \newunit\newblock + \printfield{note}% + \newunit\newblock + \usebibmacro{date}% + \newunit\newblock + \usebibmacro{doi+eprint+url}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + % \setunit{\bibpagerefpunct}\newblock + % \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% + \usebibmacro{finentry}% +} + +\DeclareBibliographyDriver{thesis}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{pageref}% + \usebibmacro{author}% + \setunit{\labelnamepunct}\newblock + \usebibmacro{maintitle+title}% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \printfield{type}% + \newunit + \usebibmacro{institution+location+date}% + \newunit\newblock + \usebibmacro{chapter+pages}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + %\iftoggle{bbx:isbn} + % {\printfield{isbn}} + % {}% + %\newunit\newblock + %\usebibmacro{doi+eprint+url}% + %\newunit\newblock + \usebibmacro{addendum+pubstate}% + % \setunit{\bibpagerefpunct}\newblock + % \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{finentry}% + \newunit\newblock + \usebibmacro{isbn}% + \usebibmacro{finentry}% + \newunit\newblock + \usebibmacro{doi+eprint+url}% + \usebibmacro{finentry}% + } + +\DeclareBibliographyDriver{unpublished}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{pageref}% + \usebibmacro{author}% + \setunit{\labelnamepunct}\newblock + \usebibmacro{maintitle+title}% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \printfield{howpublished}% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \usebibmacro{location+date}% + \newunit\newblock + \iftoggle{bbx:url} + {\usebibmacro{url+urldate}} + {}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + % \setunit{\bibpagerefpunct}\newblock + % \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{finentry} + } + +\DeclareBibliographyDriver{misc}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{pageref}% + \usebibmacro{author/editor+others/translator+others}% + \setunit{\labelnamepunct}\newblock + \usebibmacro{maintitle+title}% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit\newblock + \printfield{howpublished}% + \newunit\newblock + \printfield{type}% + \newunit + \printfield{version}% + \newunit + \printfield{note}% + \newunit\newblock + \usebibmacro{organization+location+date}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + % \setunit{\bibpagerefpunct}\newblock + % \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{finentry}% + \newunit\newblock% + \usebibmacro{url}% +% \usebibmacro{doi+eprint+url}% + \usebibmacro{finentry}% + } + +\DeclareBibliographyDriver{software}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{pageref}% + \usebibmacro{author/editor+others/translator+others}% + \setunit{\labelnamepunct}\newblock + \usebibmacro{maintitle+title}% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit\newblock + \printfield{howpublished}% + \newunit\newblock + \printfield{type}% + \newunit + \printfield{version}% + \newunit + \printfield{note}% + \newunit\newblock + \usebibmacro{organization+location+date}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + % \setunit{\bibpagerefpunct}\newblock + % \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{finentry}% + \newunit\newblock% + \usebibmacro{url}% + % \usebibmacro{doi+eprint+url}% + \usebibmacro{finentry}% + } + +\DeclareBibliographyDriver{inproceedings}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{pageref}% + \usebibmacro{author/translator+others}% + \setunit{\labelnamepunct}\newblock + \usebibmacro{maintitle+title}% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{in:}% + \usebibmacro{maintitle+booktitle}% + \newunit\newblock + \usebibmacro{event+venue+date}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit\newblock + \iffieldundef{maintitle} + {\printfield{volume}% + \printfield{part}} + {}% + \newunit + \printfield{volumes}% + \newunit\newblock + \usebibmacro{series+number}% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \printlist{organization}% + \newunit + \usebibmacro{publisher+location+date}% + \newunit\newblock + \usebibmacro{chapter+pages}% + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{isbn}} + {}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + % \setunit{\bibpagerefpunct}\newblock + % \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{finentry}% + \newunit\newblock + \usebibmacro{doi+eprint+url}% + \usebibmacro{finentry} + } + +\DeclareBibliographyDriver{report}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author}% + \usebibmacro{pageref}% + \setunit{\labelnamepunct}\newblock + \usebibmacro{maintitle+title}% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \printfield{type}% + \setunit*{\addspace}% + %{\myliningnumfont{}\printfield{number}}% NOTE: removed the unrecognized myliningnumfont command. + \printfield{number}% + \newunit\newblock + \printfield{version}% + \newunit + \printfield{note}% + \newunit\newblock + \usebibmacro{institution+location+date}% + \newunit\newblock + \usebibmacro{chapter+pages}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{isrn}} + {}% + \newunit\newblock + \usebibmacro{doi+eprint+url}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + % \setunit{\bibpagerefpunct}\newblock + % \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{finentry}} + +%% End of file `aiaa.bbx'. + diff --git a/v0.5.0/DuctAPE/theory_latex/byubib.cbx b/v0.5.0/DuctAPE/theory_latex/byubib.cbx new file mode 100644 index 00000000..2b8917b2 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/byubib.cbx @@ -0,0 +1,55 @@ + +%% ----------------------------------------------------------------- +%% Purpose: A biblatex implementation for AIAA Publications +%% Source: https://github.com/nasa/nasa-latex-docs +%% Type: Biblatex Citation Style +%% ----------------------------------------------------------------- + +\ProvidesFile{byubib.cbx}[2016/04/13 v1.0 biblatex citation style] + +\RequireCitationStyle{numeric-comp} + +\ExecuteBibliographyOptions + { + autocite = superscript, + autopunct = false, + sorting = none + } + +\DeclareFieldFormat[article,inbook,report,techreport, + inproceedings,patent,thesis,unpublished,suppbook, + suppcollection,suppperiodical]{citetitle}{\usebibmacro{string+doiurlisbn}{\mkbibquote{#1}}} +\DeclareFieldFormat[book,incollection]{citetitle}{\usebibmacro{string+doiurlisbn}{\mkbibemph{#1}}} + +% NOTE: added coloring here to match the margin and bibliography number coloring. +\DeclareCiteCommand{\cbx@mcite}[\color{primary}\mkbibsuperscript] + {\usebibmacro{cite:init}% + \let\multicitedelim=\supercitedelim + \iffieldundef{prenote} + {} + {\BibliographyWarning{Ignoring prenote argument}}% + \iffieldundef{postnote} + {} + {\BibliographyWarning{Ignoring postnote argument}}} + {\usebibmacro{citeindex}% + \usebibmacro{cite:comp}} + {} + {\usebibmacro{cite:dump}} + + \DeclareCiteCommand{\mcite}[\cbx@mcite@init\cbx@mcite] + {\gdef\cbx@savedkeys{}% + \citetrackerfalse% + \pagetrackerfalse% + \DeferNextCitekeyHook% + \usebibmacro{cite:init}} + {\xappto\cbx@savedkeys{\thefield{entrykey},}% + \usebibmacro{sidecite}} + {} + {\protected@xappto\cbx@savedcites{% + [\thefield{prenote}][\thefield{postnote}]{\cbx@savedkeys}}} + +\DeclareDelimcontextAlias{cbx@mcite}{mcite} + +\newrobustcmd{\cbx@mcite@init}[2]{% + \def\cbx@savedcites{#1}#2\cbx@savedcites\empty} +%% End of file `aiaas.cbx'. diff --git a/v0.5.0/DuctAPE/theory_latex/byuthesis.cls b/v0.5.0/DuctAPE/theory_latex/byuthesis.cls new file mode 100644 index 00000000..e3433315 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/byuthesis.cls @@ -0,0 +1,749 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{byuthesis}[2023/05/01 v1.0 BYU thesis] +% Written by Tim McLain starting in September 2020. +% Significant contributions by Andrew Ning (who suggested using the memoir class as the foundation for +% the template), Ed Alvarez, Judd Mehr, and Victoria Stephens. A tip of the hat to Max Opgenoord -- the +% format of his MIT PhD thesis inspired many of the elements of the fancy format class option. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% -------- set user options for byuthesis class ----------- +% Options are declared by user when specifying the document class such as in the template.tex file +% For example, \documentclass[fancy,phd]{byuthesis} +%. or \documentclass[simple,masters]{byuthesis} +% Format options: fancy or simple (simple is default) +\newif\if@simple % defines logical variable "simple" and initializes it to false +\@simpletrue % sets simple = true as default +\newif\if@fancy % defines logical variable "fancy" and initializes it to false +\DeclareOption{fancy}{\@fancytrue \@simplefalse} % if the fancy option is passed, sets fancy = true + +% Degree options: masters or phd (masters is default) +\newif\if@masters +\@masterstrue +\newif\if@phd +\DeclareOption{phd}{\@phdtrue \@mastersfalse} + +% Pagination options: oneside or twoside (oneside is default) +% NOTE: Two-sided printing is not a requirement of the college or university +% Some departments or students in our college like the option of printing +% two-sided hard copies. The twoside option is intended to provide this +% capability. However, this option may require some tweaking, such as adding +% blank pages in places to ensure that abstract, acknowledgements, and first +% pages of chapters start the recto (right-hand) page. This two-sided printing +% capability is provided as a courtesy. The College of Engineering does not +% provide user support for two-sided printing. +% +\newif\if@oneside +\@onesidetrue +\newif\if@twoside +\DeclareOption{twoside}{\@twosidetrue \@onesidefalse} +% ------------------------------------- + +% -------- send main options to class ------------- +\ProcessOptions\relax +\if@twoside + % two-sided printing + \LoadClass[letterpaper,11pt,twoside,openright]{memoir} % based off of memoir class +\else + % one-sided printing (default) + \LoadClass[letterpaper,11pt,oneside,openright]{memoir} % based off of memoir class +\fi +\RequirePackage{memhfixc} % fix for hyperref w/ memoir +% ---------------------------------------------- + +% ----------- page layout ------------- +\setlrmarginsandblock{1.75in}{1.75in}{*} +\setulmarginsandblock{1in}{*}{1} +\checkandfixthelayout +% --------------------------------------- + +% ----------- typesetting --------------- +\usepackage{microtype} % this package makes micro adjustments to reduce need for hyphenation +% --------------------------------------- + +% ---------- fonts --------------- +% Use T1 font encoding (8-bit) for loaded fonts +\RequirePackage[T1]{fontenc} + +%%%% Serif fonts for body text +% newpxtext uses palatino for body text while newpxmath uses palatino form math mode for a consistent look +\RequirePackage{newpxtext,newpxmath} + +%% This font is not part of the standard LaTeX package and requires installation on your computer +%%\usepackage[urw-garamond]{mathdesign} +%%\usepackage{garamondx} + +%%%% Monospace fonts for \ttfamily (such as for displaying computer code or computer commands) +\RequirePackage[scaled=0.85]{beramono} + +%% This font is not part of the standard LaTeX package and requires installation on your computer +% I like this font more than beramono, however (TWM) +%\RequirePackage{inconsolata} +% +%%%% Sans serif font selection for \sffamily (for chapter and section titles) +\RequirePackage[defaultsans,scale=0.95]{opensans} %% Alternatively +% use the option 'defaultsans' instead of 'default' to replace the +% sans serif font only. + +%%%% Enable semi bold of opensans font +\DeclareRobustCommand{\sbshape}{% + \not@math@alphabet\sbshape\relax + \fontseries{sb}\selectfont +} +% Usage: \textsb{Words to be set with semibold font} + \DeclareTextFontCommand\textsb{\sbshape} + +% ------------------------------- + +% ---------- colors ------------- +\RequirePackage{xcolor} +\definecolor{navy}{HTML}{002E5D} +%\definecolor{royal}{HTML}{003DA5} % university brand guide definition of royal +\definecolor{royal}{HTML}{005CAB} % royal that matches BYU Engineering logo +%\definecolor{royal}{HTML}{0062B8} % royal definition from A. Ning +\definecolor{darkgray}{HTML}{141414} +%\definecolor{mediumgray}{HTML}{7C878E} % slate gray from university brand guide +\definecolor{mediumgray}{HTML}{666666} % medium gray definition from A. Ning +\definecolor{black}{HTML}{111111} +\definecolor{primary}{HTML}{005CAB} +\definecolor{lighttext}{HTML}{444444} +% ------------------------------- + +% -------- figures ------------ +\RequirePackage{graphicx} +\RequirePackage{rotating} +\RequirePackage[export]{adjustbox} % inner option used to align full-width figures to inner margin +% ------------------------------ + +% -------- math ---------- +\RequirePackage{amsmath} +\RequirePackage{amsfonts} +% ------------------------------ + +% ----------- algorithms ------- +\RequirePackage[chapter]{algorithm} % algorithms +\RequirePackage{algpseudocode} % algorithms +\renewcommand{\algorithmicrequire}{\textbf{Input:}} +\renewcommand{\algorithmicensure}{\textbf{return}} +\algrenewcommand\textproc{\texttt} % don't all caps function name +\newcommand{\algoreturn}{\textbf{return} } +\algrenewcommand{\algorithmiccomment}[1]{\textcolor{primary}{\hfill\sffamily\scriptsize\itshape $\triangleright$ #1}} +\algnewcommand{\LineComment}[1]{\State \textcolor{primary}{\sffamily\scriptsize\itshape $\triangleright$ #1}} +\algnewcommand{\To}{\textbf{to\ }} % For use in '\For{$i = 1$ \To $n$}' -- replaced $:\ $ +\algnewcommand{\By}{\textbf{by\ }} % For use in '\For{$i = 1$ \To $n$ \By $k$}' -- replaced $:\ $ +% ----------------------------- + +% ------------- nomeclature ------------- +\RequirePackage[intoc]{nomencl} +\makenomenclature +\renewcommand{\nomname}{Nomenclature} +\setlength{\nomitemsep}{0pt} % relaxed spacing (nominal spacing is looser than this) +% --------------------------------------- + +% ------------------------------ + +% -------- Sections ----------- +\setsecnumdepth{subsection} % number chapters, sections, and subsections +\maxsecnumdepth{subsection} + +% set up byuchapter style +\newcommand{\hsp}{\hspace{20pt}} +\newcommand*{\colorsectitle}{} +\newcommand*{\colorsubsectitle}{} +\makechapterstyle{byuchapter}{% + \setlength{\beforechapskip}{54pt} % Sets vertical space from top of page to baseline of chapter title to 2.2 in. + \setlength{\afterchapskip}{48pt} % Sets vertical space from baseline of chapter title to baseline of following text to be 0.87 in. + \renewcommand*{\printchaptername}{} % We don't print the word "Chapter" + \renewcommand*{\chapternamenum}{} % No space inserted after "Chapter" and before \chapnum + \renewcommand*{\chapnumfont}{\normalfont\LARGE\sffamily\itshape\colorchapnum} + \renewcommand*{\chaptitlefont}{\normalfont\LARGE\sffamily\itshape\colorchaptitle} + \renewcommand*{\afterchapternum}{} % No vertical space after "Chapter" before \chaptertitle +% \renewcommand*{\printchapternum}{\chapnumfont \thechapter\hsp} + \renewcommand*{\printchapternum}{% + \@hangfrom{\chapnumfont \thechapter\hsp}}% % Aligns second line of chapter title with beginning +} % of first line rather than chapter number +\renewcommand*{\colorchapnum}{\color{royal}} +\renewcommand*{\colorchaptitle}{\color{royal}} +\renewcommand*{\colorsectitle}{\color{royal}} + +\chapterstyle{byuchapter} + +% appendix formatting +\aliaspagestyle{part}{empty} +\renewcommand{\parttitlefont}{\normalfont\huge\sffamily\itshape\colorchapnum\raggedright} % format the font +\RequirePackage{etoolbox} % provides \appto command used below (append to) +% \appto\appendix{\appendixpage} + +% section heading formatting +\setsecheadstyle{\normalfont\large\sffamily\colorsectitle\raggedright}% +\setbeforesecskip{-18pt plus -4pt minus -1pt} +\setaftersecskip{6pt plus 1pt} + +% subsection heading formatting +\setsubsecheadstyle{\normalfont\large\sffamily\colorsectitle\raggedright}% +\setbeforesubsecskip{-12pt plus -3pt minus -1pt} +\setaftersubsecskip{3pt plus 1pt} + +% subsection heading formatting +\setsubsubsecheadstyle{\normalfont\sffamily\colorsectitle\raggedright}% +\setbeforesubsubsecskip{-12pt plus -2pt minus -1pt} +\setaftersubsubsecskip{1pt plus 0pt} + +% Table of contents formatting (and LoF and LoT) +\renewcommand{\contentsname}{Table of Contents} +\renewcommand{\listfigurename}{List of Figures} +\renewcommand{\listtablename}{List of Tables} + +%% change title style for toc, lof, lot +% Bold face, size LARGE titles +%\renewcommand{\printtoctitle}[1]{\LARGE\bfseries #1} +%\renewcommand{\printloftitle}[1]{\LARGE\bfseries #1} +%\renewcommand{\printlottitle}[1]{\LARGE\bfseries #1} + +% Color, sans serif titles +\renewcommand{\printtoctitle}[1]{\normalfont\LARGE\sffamily\colorchaptitle\itshape #1} +\renewcommand{\printloftitle}[1]{\normalfont\LARGE\sffamily\colorchaptitle\itshape #1} +\renewcommand{\printlottitle}[1]{\normalfont\LARGE\sffamily\colorchaptitle\itshape #1} + +% TODO: add color to the numbers in ToC, etc. +% how to do this without overwriting \thechapter, etc. which messes up the assumption box coloring? + +% remove the dots between titles and page numbers +\renewcommand{\cftdot}{} + +% % or you can put the numbers right after +% % put page number right after in toc, lof, lot +% \newcommand{\cfthsp}{\hspace{8pt}} % controls the spacing between the title and the page number in toc, lof, lot +% \renewcommand{\cftchapterleader}{\cfthsp} +% \renewcommand{\cftchapterafterpnum}{\cftparfillskip} +% \renewcommand\cftchapterformatpnum[1]{~{\cftchapterpagefont #1}} +% \renewcommand{\cftsectionleader}{\cfthsp} +% \renewcommand{\cftsectionafterpnum}{\cftparfillskip} +% \renewcommand\cftsectionformatpnum[1]{~{\cftsectionpagefont #1}} +% \renewcommand{\cftfigureleader}{\cfthsp} +% \renewcommand{\cftfigureafterpnum}{\cftparfillskip} +% \renewcommand\cftfigureformatpnum[1]{~{\cftsectionpagefont #1}} +% \renewcommand{\cfttableleader}{\cfthsp} +% \renewcommand{\cfttableafterpnum}{\cftparfillskip} +% \renewcommand\cfttableformatpnum[1]{~{\cftsectionpagefont #1}} + +% unbold titles in toc +\renewcommand{\cftchapterfont}{} +%\renewcommand{\cftchapterpagefont}{\color{royal}} % make page entries on ToC, LoF, LoT royal blue in color +%\renewcommand{\cftsectionpagefont}{\color{royal}} +%\renewcommand{\cftfigurepagefont}{\color{royal}} +%\renewcommand{\cfttablepagefont}{\color{royal}} +\renewcommand{\cftchapterpagefont}{\color{black}} % make page entries on ToC, LoF, LoT black in color +\renewcommand{\cftsectionpagefont}{\color{black}} +\renewcommand{\cftfigurepagefont}{\color{black}} +\renewcommand{\cfttablepagefont}{\color{black}} +% ---------------------------------------- + +%----------- figure captions ------------- +\captionnamefont{\normalfont\small} +\captiontitlefont{\normalfont\small} + +% % You need a newsubfloat element to use subcaption +% \newsubfloat{figure} +% % Command to set subcaption styles +% \subcaptionfont{\normalfont\small} +% ---------------------------------------- + +%---------------- header and footer ----------------- +%\setlength{\headwidth}{\textwidth} + +% create page style for opening pages of chapter that puts +% page number in the lower center of the page +\makepagestyle{byuchaptertitle} +\makeoddfoot{byuchaptertitle}{}{\normalfont\small\slshape\thepage}{} +\makeevenfoot{byuchaptertitle}{}{\normalfont\small\slshape\thepage}{} + +% create headers and footers +\makepagestyle{byu} +%\aliaspagestyle{chapter}{byuchaptertitle} +\aliaspagestyle{plain}{byuchaptertitle} +\makerunningwidth{byu}[\textwidth]{\textwidth} +\makeheadposition{byu}{flushright}{flushleft}{flushright}{flushleft} +\preto\tableofcontents{\pagestyle{byuchaptertitle}} % sets page numbering format in frontmatter + +\makepsmarks{byu}{% +\nouppercaseheads +%\createmark{chapter}{both}{nonumber}{}{} +\createmark{chapter}{left}{nonumber}{}{} +\createmark{section}{right}{shownumber}{}{. \space} +\createplainmark{toc}{both}{\contentsname} +\createplainmark{lof}{both}{\listfigurename} +\createplainmark{lot}{both}{\listtablename} +\createplainmark{bib}{both}{\bibname} +\createplainmark{index}{both}{\indexname} +\createplainmark{glossary}{both}{\glossaryname}} + +% Set up headers and footers for one-sided (default) or two-sided pagination +\if@twoside + % two-sided pagination + % Place page number in top outer corner of all pages except chapter title pages + % Place chapter title in top inner corner of all pages except chapter title pages + \makeoddhead{byu}% + {\normalfont\small\slshape\leftmark}{}{\normalfont\small\slshape\thepage} + \makeevenhead{byu}% + {\normalfont\small\slshape\thepage}{}{\normalfont\small\slshape\leftmark} + \makeoddfoot{byu}% + {}{}{} + \makeevenfoot{byu}% + {}{}{} +\else + % one-sided pagination (default) + % Place page number in top right corner of all pages except chapter title pages + % Place chapter title in top left corner of all pages except chapter title pages + \makeoddhead{byu}% + {\normalfont\small\slshape\leftmark}{}{\normalfont\small\slshape\thepage} % include chapter title + % {}{}{\normalfont\small\slshape\thepage} % don't include chapter title + \makeoddfoot{byu}% + {}{}{} +\fi + +\pagestyle{byu} +\appto\mainmatter{\pagestyle{byu}} +% ----------------------------------------------- + + +% package for making an index at the end. needs to be loaded before hyperref package though, so it's here instead of in customcommands.tex +\usepackage{imakeidx} + + +% -------------- hyperlinks ------------- +%\RequirePackage[colorlinks,bookmarks,bookmarksnumbered,allcolors=royal,breaklinks]{hyperref} % make hyperlinks royal +%\RequirePackage[colorlinks,bookmarks,bookmarksnumbered,allcolors=black,breaklinks]{hyperref} % make hyperlinks black +%\RequirePackage[colorlinks,bookmarks,bookmarksnumbered,allcolors=mediumgray,breaklinks]{hyperref} % make hyperlinks mediumgray +\RequirePackage[colorlinks,bookmarks,bookmarksnumbered,hidelinks,breaklinks]{hyperref} % make hyperlinks same color as surrounding text + +% hack to suppress annoying hyperref warnings related to \listoffigures, \listoftables, and \printnomenclature +\pdfstringdefDisableCommands{% + \let\leavevmode@ifvmode\@empty + \let\kern\@empty +} +% --------------------------------------- + +% ---------- cross referencing ------------ +\RequirePackage[capitalise]{cleveref} +% --------------------------------------- + +% ----------- bibliography -------------- +\if@fancy + % do nothing for fancy style here, see fancy style options below +\else + \usepackage[backend=biber,style=ieee,doi=true]{biblatex} + \urlstyle{same} + % Change type of DOI: and DOI URL to match text + \DeclareFieldFormat{doi}{% + DOI\addcolon\space + \ifhyperref + {\lowercase{\href{https://doi.org/#1}{\nolinkurl{#1}}}} + {\lowercase{\nolinkurl{#1}}}} +\fi +% --------------------------------------- + +% ----------- user input -------------- +\def\@customtitle{\relax} +\newcommand{\customtitle}[1]{\gdef\@customtitle{#1}} + +\def\@bauthor{\relax} +\newcommand{\bauthor}[1]{\gdef\@bauthor{#1}} + +\def\@department{\relax} +\newcommand{\department}[1]{\gdef\@department{#1}} + +\def\@institution{\relax} +\def\@shortinstitution{\relax} +\newcommand{\institution}[2][]{\gdef\@shortinstitution{\ifstrempty{#1}{#2}{#1}} \gdef\@institution{#2}} + +\institution{Brigham Young University} + +\def\@degree{\relax} +\newcommand{\degree}[1]{\gdef\@degree{#1}} + +\if@phd + \degree{Doctor of Philosophy} +\else + \degree{Master of Science} +\fi + +\newcommand*{\@committeelist}{} +\newcommand*{\committeemember}[1]{\listadd{\@committeelist}{#1}} +\newcommand*{\committeechair}[1]{\committeemember{#1, Chair}} + +\def\@copyrightyear{\number\the\year} +\newcommand{\copyrightyear}[1]{\gdef\@copyrightyear{#1}} + +\def\@keywords{\relax} +\newcommand{\keywords}[1]{\gdef\@keywords{#1}} +% --------------------------------------- + +% ----------- title page -------------- +\RequirePackage{etoolbox} +\newcommand*{\@printcommitteemember}[1]{#1\\} +\newlength{\titlebottomadjust} \setlength{\titlebottomadjust}{-4pt} % defined to tweak the length of the title page so that + % last line of text is at 1 inch above page bottom +\newcommand{\titlepage}{% + % for fancy style, set the page margins to be equal to center title on page + \if@fancy + \setlrmarginsandblock{1.75in}{1.75in}{*} + \checkandfixthelayout + \fi + \pdfbookmark{BYU TITLE PAGE}{titlepage} + \pagestyle{empty} + \begin{Spacing}{2.0} + \begin{center} + \@title \\ + \vspace{\fill} + \@author \\ + \vspace{\fill} + \begin{SingleSpace} + A \if@phd dissertation \else thesis \fi submitted to the faculty of \\ + \@institution \\ + in partial fulfillment of the requirements for the degree of \\ + \end{SingleSpace} + \@degree \\ + \vspace{\fill} + \begin{SingleSpace} + \forlistloop{\@printcommitteemember}{\@committeelist} + \end{SingleSpace} + \vspace{\fill} + \@department \\ + \@institution \\ + \vspace{\fill} + Copyright \textcopyright{} \@copyrightyear{} \@author \\ + All Rights Reserved + \par + \enlargethispage{\titlebottomadjust} + \clearpage + \end{center} + \end{Spacing} + % for fancy style, reset the page layout back for margin notes + \if@fancy + \setlrmarginsandblock{1.0in}{2.75in}{*} + \checkandfixthelayout + \setmarginnotes{0.125in}{2.0in}{\onelineskip} + \fi +} +% ---------------------------------------- + +% -------- custom title page ------------- +% This title page follows immediately after the title page required by BYU Grad Studies. +% This title page can be customized as the student desires, but should include the title, +% student name, department, degree, and the BYU Engineering logo. +% + +\newcommand{\customtitlepage}{% + \pdfbookmark{TITLE PAGE}{customtitlepage} + \pagestyle{empty} + \begin{Spacing}{2.2} + \vspace*{116pt} + \noindent + {\color{royal}\Huge\sffamily\itshape\@customtitle} \\ + \vspace{\fill} + \end{Spacing} + \begin{Spacing}{1.4} + {\Large + \noindent + \@author \\ + \@department \\ + \@degree} \\ + \vspace{\fill} + \begin{figure}[htbp] + \includegraphics[width=3.5in]{college_logo} + \end{figure} + \end{Spacing} +} +% ---------------------------------------- + +% ------------ abstract ------------------ +\renewenvironment{abstract}{% + \clearpage + \pdfbookmark[0]{ABSTRACT}{abstract} + \setlength{\parskip}{\baselineskip} + \vspace*{35pt} % spacing set to match chapter header spacing + \begin{flushleft} + % {\normalfont\LARGE\bfseries Abstract} % black serif boldface + {\normalfont\LARGE\sffamily\colorchaptitle\itshape{Abstract}} % royal sans serif italics + \par + \end{flushleft} + %% The following items should be omitted if the optional custom title page is used + % \@title \\[\baselineskip] + % \@author \\ + % \@department, \@shortinstitution \\ + % \@degree + \vspace*{24pt} % spacing set to match chapter header spacing +}{% + \par + \vspace{\fill} + \noindent + Keywords: \@keywords +} +% ---------------------------------------- + +% ---------- dedication ------------ +\newenvironment{dedication}{% + \clearpage + \pdfbookmark[0]{DEDICATION}{dedication} + \setlength{\parskip}{\baselineskip} + \vspace*{35pt} % spacing set to match chapter header spacing + \begin{flushleft} + {\normalfont\LARGE\sffamily\colorchaptitle\itshape{Dedication}} % royal sans serif italics + \end{flushleft} + \vspace*{24pt} % spacing set to match chapter header spacing +} +% ---------------------------------------- + +% ---------- acknowledgments ------------ +\newenvironment{acknowledgments}{% + \clearpage + \pdfbookmark[0]{ACKNOWLEDGMENTS}{acknowledgments} + \setlength{\parskip}{\baselineskip} + \vspace*{35pt} % spacing set to match chapter header spacing + \begin{flushleft} + % {\normalfont\LARGE\bfseries Acknowledgments} % black serif boldface + {\normalfont\LARGE\sffamily\colorchaptitle\itshape{Acknowledgments}} % royal sans serif italics + \end{flushleft} + \vspace*{24pt} % spacing set to match chapter header spacing +} +% ---------------------------------------- + +% ---------- epigraph ------------ +\newenvironment{customepigraph}{% + \clearpage + \pdfbookmark[0]{EPIGRAPH}{epigraph} + \setlength{\parskip}{\baselineskip} + \vspace*{35pt} % spacing set to match chapter header spacing + % \begin{flushleft} + % % {\normalfont\LARGE\bfseries Acknowledgments} % black serif boldface + % {\normalfont\LARGE\sffamily\colorchaptitle\itshape{Epigraph}} % royal sans serif italics + % \end{flushleft} + \vspace*{24pt} % spacing set to match chapter header spacing +} +% ---------------------------------------- + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% --- ADD FANCY OPTIONS --- %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\if@fancy + +% ----------- page layout ------------- +% change the page layout to allow margin notes +\setlrmarginsandblock{1.0in}{2.75in}{*} +\setulmarginsandblock{1in}{*}{1} +\checkandfixthelayout +% --------------------------------------- + +% ------------- marginnotes ------------- +% for notes in the margin, define separation from the textblock, max note width and min vertical distance between notes +\setmarginnotes{0.125in}{2.0in}{\onelineskip} +% --------------------------------------- + +% % -------------- chapter ---------------- +% % Revise the chapter style to create a fancier heading +% \newcommand{\mhsp}{\hspace{10pt}} +% \makechapterstyle{byuchapter}{% +% \setlength{\beforechapskip}{54pt} +% \setlength{\afterchapskip}{48pt} +% \renewcommand*{\chapnamefont}{\normalfont\LARGE\itshape} +% \renewcommand*{\chapnumfont}{\normalfont\LARGE\sffamily\itshape\colorchapnum} +% \renewcommand*{\chaptitlefont}{\normalfont\LARGE\sffamily\itshape\colorchaptitle} +% \renewcommand*{\afterchapternum}{} +% \renewcommand*{\printchaptername}{} +% \setlength{\midchapskip}{15mm} +% \renewcommand*{\chapternamenum}{} +% \renewcommand*{\printchapternum}{% +% \sidebar{\raisebox{-76pt}[0pt][0pt]{\makebox[0pt][l]{% +% \resizebox{!}{\midchapskip}{\mhsp\chapnumfont\thechapter}}}}} +% \renewcommand*{\printchaptertitle}[1]{\chaptitlefont ##1} +% \renewcommand*{\afterchaptertitle}% +% {\vskip\afterchapskip} +% } +% \chapterstyle{byuchapter} + +% -------------- chapter ---------------- +% Revise the chapter style to create a fancier heading +\newcommand{\mhsp}{\hspace{10pt}} +\makechapterstyle{byuchapter}{% + \setlength{\beforechapskip}{54pt} + \setlength{\afterchapskip}{48pt} + \renewcommand*{\chapnamefont}{\normalfont\LARGE\itshape} + \renewcommand*{\chapnumfont}{\normalfont\LARGE\sffamily\bfseries\colorchapnum} + \renewcommand*{\chaptitlefont}{\normalfont\LARGE\sffamily\itshape\colorchaptitle} + \renewcommand*{\afterchapternum}{} + \renewcommand*{\printchaptername}{} + \setlength{\midchapskip}{15mm} + \renewcommand*{\chapternamenum}{% + \sidebar{\raisebox{-86.5pt}[0pt][0pt]{\rotatebox[origin=c]{90}{% + \resizebox{\midchapskip}{12pt}{\sffamily\colorchaptitle Chapter}}}}} + \renewcommand*{\printchapternum}{% + \sidebar{\raisebox{-76pt}[0pt][0pt]{\makebox[0pt][l]{% + \resizebox{!}{\midchapskip}{\mhsp\chapnumfont\thechapter}}}}} + \renewcommand*{\printchaptertitle}[1]{\chaptitlefont ##1} + \renewcommand*{\afterchaptertitle}% + {\vskip\afterchapskip} +} +\chapterstyle{byuchapter} + +% -------------- appendix ---------------- +\makechapterstyle{byuappendix}{% + \setlength{\beforechapskip}{54pt} + \setlength{\afterchapskip}{48pt} + \renewcommand*{\chapnamefont}{\normalfont\LARGE\itshape} + \renewcommand*{\chapnumfont}{\normalfont\LARGE\sffamily\bfseries\colorchapnum} + \renewcommand*{\chaptitlefont}{\normalfont\LARGE\sffamily\itshape\colorchaptitle} + \renewcommand*{\afterchapternum}{} + \renewcommand*{\printchaptername}{} + \setlength{\midchapskip}{15mm} + \renewcommand*{\chapternamenum}{% + \sidebar{\raisebox{-86.5pt}[0pt][0pt]{\rotatebox[origin=c]{90}{% + \resizebox{\midchapskip}{10pt}{\sffamily\colorchaptitle Appendix}}}}} + \renewcommand*{\printchapternum}{% + \sidebar{\raisebox{-76pt}[0pt][0pt]{\makebox[0pt][l]{% + \resizebox{!}{\midchapskip}{\mhsp\chapnumfont\thechapter}}}}} + \renewcommand*{\printchaptertitle}[1]{\chaptitlefont ##1} + \renewcommand*{\afterchaptertitle}% + {\vskip\afterchapskip} +} +\appto\appendix{\chapterstyle{byuappendix}} +% --------------------------------------- + +% ------------- footnotes ---------------- +\RequirePackage{marginfix} % This package fixes the issue of margin notes overflowing the page: it makes them break into the next page instead + +% we place footnotes in the side margin and typeset them using the parameters associated with \footnotes +\renewcommand*{\@makefntext}[1]{\makefootmark\raggedright #1} % allow footnotes to be ragged right +%\renewcommand*{\thefootnote}{\fnsymbol{footnote}} % use symbols to denote footnotes +\renewcommand*{\thefootnote}{\itshape\alph{footnote}} % use letters to denote footnotes +\newcommand{\shsp}{\hspace{4pt}} +\footmarkstyle{\textsuperscript{\scriptsize\itshape #1}} +\renewcommand{\foottextfont}{\scriptsize} % slightly smaller fontsize since we are placing footnotes in margin +\setlength{\footmarkwidth}{0em} +\setlength{\footmarksep}{0em} +\setlength{\footparindent}{1em} % paragraph indent for a multi-paragraph footnote +%\counterwithout{footnote}{chapter} % do not restart footnote numbering with each chapter +\footnotesinmargin % put footnotes in the side margin +% --------------------------------------- + +% ------------- reference margin notes for backreferencing --------------- +% used by byubib.bbx +\newcounter{rnote} +\newcommand\refnote[1]{\stepcounter{rnote}\marginpar{\MakeLowercase{#1}}} + +% --------------------------------------- + +% -------- figures ------------ +\sidecapmargin{outer} % this puts the sidecaptions in the outer margin (supports both single-sided and two-sided printing) +\setsidecappos{b} % this aligns the side caption with the bottom of the figure +\setsidecaps{0.125in}{2.0in} % this controls the spacing from the edge of the text, and then the width of the box the caption sits in. +% this makes the name of the caption (e.g. Figure 1) bold, small, and blue (the number and word are controlled with separate commands) +\captionnamefont{\bfseries\footnotesize\color{royal}} +\captiontitlefont{\footnotesize} +% \subcaptionlabelfont{\bfseries\footnotesize\color{royal}} +% this redefinition left justifies the captions in both the right and left margins (needed for two-sided printing) +\renewcommand*{\sidecapstyle}{% +%% \captionnamefont{\bfseries} + \ifscapmargleft + \captionstyle{\raggedright}% + \else + \captionstyle{\raggedright}% +\fi} + +% ------------------------------ + +% ----------- bibliography -------------- +% setup biblatex, specify citation and bibliography styles +\RequirePackage[ + hyperref=true, + backref=true, % adds page number where citation occurs to references + citestyle=byubib, % citation style (byubib.cbx) + bibstyle=byubib, % bibliography style (byubib.bbx) + giveninits=true, + doi=true, % add doi information to bibliography + url=true, % adds hyperlinks to citations and bibliography + maxcitenames=1, % only one surname in citations + mincitenames=1, + dateabbrev=false, + urldate=long, + labeldateparts +]{biblatex} + +% Change type of DOI: and DOI URL to match text +\urlstyle{same} +\DeclareFieldFormat{doi}{% + DOI\addcolon\space + \ifhyperref + {\lowercase{\href{https://doi.org/#1}{\nolinkurl{#1}}}} + {\lowercase{\nolinkurl{#1}}}} + +\DeclareFieldFormat{labelnumberwidth}{\color{primary}#1}% +\setlength{\biblabelsep}{10pt}% +\renewbibmacro{in:}{} + +% ------------ Citations ------------------------ +% Some optional citation commands +\DeclareCiteCommand{\mciten} % only prints number and puts reference in margin + {} + {\printtext[bibhyperref]{\printfield{labelnumber}}% + \usebibmacro{sidecite}} + {} + {} +\DeclareCiteCommand{\citen} % only prints number, but not in margin (useful for figures) + {} + {{\printtext[bibhyperref]{\printfield{labelnumber}}}} + {} + {} +\DeclareCiteCommand{\nobibcite} % only prints number and puts reference in margin + {} + {\usebibmacro{sidecite}} + {} + {} +\DeclareCiteCommand{\sidecitenumber} + {} + {{\printtext[bibhyperref]{[\printfield{labelnumber}]}}} + {} + {} +\DeclareCiteCommand{\sidecitename} + {} + {\printnames{labelname}\unspace{\printtext[bibhyperref]{[\printfield{labelnumber}]}}} + {} + {} + +%% make scite the default citation command for fancy format +\let\scite=\mcite % use scite instead of replacing cite + +% sidecite bibliography macro to create citations in the side margin +\DeclareFieldFormat{sidecite}{\marginpar{\linespread{1.0}\scriptsize#1}} +\newbibmacro{sidecite}{% + \printtext[sidecite]{% + \raggedright% + \printtext[bibhyperref]{\textcolor{primary}{\printfield{labelnumber}}\:} + \textcolor{mediumgray}{% + \printnames{labelname}% + \unspace, % + \printfield[citetitle]{labeltitle}% + \newunit + \usebibmacro{shortjournal}% + \unspace, % + \printfield{year}.% + \vspace{-0.75\baselineskip}% % this command decreases the spacing between citations when they come in groups + }% + }% + \setunit{}} +% --------------------------------------- + +% ---------- for testing --------------- +\newcommand{\myshorttext}{{\color{mediumgray} Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante.}} + +\newcommand{\myshorttexta}{{\color{mediumgray} Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit.}} + +% ------------------------------------- + +\fi + diff --git a/v0.5.0/DuctAPE/theory_latex/clean.sh b/v0.5.0/DuctAPE/theory_latex/clean.sh new file mode 100755 index 00000000..18ca33cb --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/clean.sh @@ -0,0 +1,20 @@ +FNAME=* + +# OPTION `clean.sh keepnombib`: Keep auxiliary nomenclature and bibliography files +if [ ${1:-all} = keepaux ]; then + EXTS="synctex.gz out log brf fls fdb_latexmk run.xml dvi nlg bcf nlo ilg" + +# OPTION `clean.sh keepbib`: Keep auxiliary bibliography files +elif [ ${1:-all} = keepbib ]; then + EXTS="synctex.gz out log brf fls fdb_latexmk run.xml dvi nlg bcf nlo ilg nls aux toc lof lot" + +# DEFAULT `clean.sh`: Delete all auxiliary files +else + EXTS="synctex.gz out log brf fls fdb_latexmk run.xml dvi nlg bcf nlo ilg nls aux toc lof lot blg bbl tdo ind idx mst auxlock" +fi + +# Remove files +for EXT in ${EXTS} + do + rm -f ${FNAME}.${EXT} +done diff --git a/v0.5.0/DuctAPE/theory_latex/customcommands.tex b/v0.5.0/DuctAPE/theory_latex/customcommands.tex new file mode 100644 index 00000000..5fd297ab --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/customcommands.tex @@ -0,0 +1,622 @@ +% ------------- sidenotes --------------- +% create a new footnote series for sidenotes +%Note: alph here is lowercase letters. the alphalph package goes to aa, ab, ac, ... after z +\usepackage{alphalph} +\newcounter{snote}[chapter] +\newcommand\sidenote[1]{\stepcounter{snote}\textsuperscript{% + \itshape\alphalph{\value{snote}}}\marginpar{\scriptsize\textsuperscript{% + \scriptsize\itshape\alphalph{\value{snote}}} #1}} +% --------------------------------------- + +% ------------------ tikz ------------ +%%tikz +\RequirePackage{pgf,tikz} +\usepackage{pgfplots} +\pgfplotsset{compat=newest} +\usetikzlibrary{arrows.meta} +\usetikzlibrary{arrows} +\usetikzlibrary{shapes.geometric} +\usetikzlibrary{shapes.misc} +\usetikzlibrary{backgrounds} +\usetikzlibrary{bending} +\usetikzlibrary{shadows} +\usetikzlibrary{patterns} +\usetikzlibrary{patterns.meta} +\usetikzlibrary{intersections} +\usepgfplotslibrary{patchplots} +\usepgfplotslibrary{fillbetween} +\usepgfplotslibrary{groupplots} +\usepgfplotslibrary{polar} +\usepgfplotslibrary{smithchart} +\usepgfplotslibrary{statistics} +\usepgfplotslibrary{dateplot} +\usepgfplotslibrary{ternary} +\pgfplotsset{% + layers/standard/.define layer set={% + background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% + }{grid style= {/pgfplots/on layer=axis grid},% + tick style= {/pgfplots/on layer=axis ticks},% + axis line style= {/pgfplots/on layer=axis lines},% + label style= {/pgfplots/on layer=axis descriptions},% + legend style= {/pgfplots/on layer=axis descriptions},% + title style= {/pgfplots/on layer=axis descriptions},% + colorbar style= {/pgfplots/on layer=axis descriptions},% + ticklabel style= {/pgfplots/on layer=axis tick labels},% + axis background@ style={/pgfplots/on layer=axis background},% + 3d box foreground style={/pgfplots/on layer=axis foreground},% + }, +} +% new style at automates partial ellipse +\tikzset{ + partial ellipse/.style args={#1:#2:#3}{ + insert path={+ (#1:#3) arc (#1:#2:#3)} + } +} + +\RequirePackage{nicefrac} +\RequirePackage{cancel} + + +%\RequirePackage{marginfix} +%\let\evensidemargin\oddsidemargin +%\reversemarginpar +% ---------------------------------------- + + + +% -------- custom title page ------------- +% This title page follows immediately after the title page required by BYU Grad Studies. +% This title page can be customized as the student desires, but should include the title, +% student name, department, degree, and the BYU Engineering logo. +\RequirePackage{pagecolor} +\RequirePackage{afterpage} +\newcommand{\mycustomtitlepage}{% + \pagestyle{empty} + \newgeometry{margin=.5in} + \newpagecolor{navy}\afterpage{\restorepagecolor} + \begin{Spacing}{2.2} + \noindent\raggedleft + {\color{white}\Huge\sffamily\itshape\@customtitle} \\ +% \vspace{\fill} + \end{Spacing} + \begin{Spacing}{1.4} + {\color{white}\bfseries\Large + \noindent + \@author \\ + \@department \\ + \@degree} \\ + \vspace{\fill} + \begin{figure}[htbp] + \includegraphics[width=3.5in]{frontmatter/figures/college_logo} + \end{figure} + \end{Spacing} +\restoregeometry +} +% ---------------------------------------- + + + +% --------------- Part Page Format --------------- +\renewcommand*\part{% + \cleardoublepage + \thispagestyle{empty} + \setlrmarginsandblock{1.75in}{1.75in}{*} + \checkandfixthelayout + \if@twocolumn + \onecolumn + \@tempswatrue + \else + \@tempswafalse + \fi + \null\vfil + \secdef\@part\@spart +} +\newcommand{\resetpageformat}{% + \setlrmarginsandblock{1.0in}{2.75in}{*} + \checkandfixthelayout + \setmarginnotes{0.125in}{2.0in}{\onelineskip} +} +\renewcommand*{\thepart}{\Roman{part}} +% \renewcommand*{\thepart}{} +\renewcommand*{\partnamefont}{\normalfont\LARGE\sffamily\bfseries\colorchaptitle} +\renewcommand*{\partnumfont}{\normalfont\LARGE\sffamily\bfseries\colorchaptitle} +\renewcommand*{\parttitlefont}{\normalfont\LARGE\sffamily\itshape\colorchaptitle} +% don't print the part number or word part +\renewcommand*{\printpartname}{} +\renewcommand*{\printpartnum}{} +% \renewcommand*{\cftpartfont}{\cftchapterfont} +% \renewcommand*{\cftpartpagefont}{\cftchapterpagefont} +\renewcommand{\cftpartpresnum}{Part } +\renewcommand{\cftpartnumwidth}{4em} + + +\newcommand{\sectionquote}{\@empty} +\newcommand*{\@printsectionquote}[1]{{\color{mediumgray}#1}} + +\renewcommand*{\afterpartskip}{\vskip 20pt plus 0.7fil \@printsectionquote{\sectionquote} \newpage} +% ---------------------------------------- + + + +% ---------------- Assumption Box -------------------- +% Limits and Justification formats +\newcommand{\limit}[1]{\smallskip \noindent {\bfseries\color{primary}Limitations: }#1 \smallskip} +\newcommand{\why}[1]{\smallskip \noindent {\bfseries\color{primary}Justification: }#1} +\newcommand{\asm}[1]{\noindent \textit{\color{primary}#1}} + + +% Box frames +\RequirePackage[framemethod=TikZ]{mdframed} +\mdfsetup{}%skipabove=\topskip,skipbelow=\topskip} + +\newcounter{assumption}[chapter] +\setcounter{assumption}{0} +\makeatletter +\newenvironment{assumption}% +{% + \refstepcounter{assumption} + \renewcommand{\label}[1]{\ltx@label{{##1}}} + \mdfsetup{% + frametitle={% + \tikz[ + baseline=(current bounding box.east), + outer sep=0pt, + inner sep=5pt, + ] + \node[ + anchor=east, + rectangle, + rounded corners=0.1cm, + fill=primary, + text=white, + font=\normalfont\sffamily + ] + {Assumption~\thechapter.\theassumption}; + } + } +% + \mdfsetup{ + roundcorner=5pt, + innertopmargin=1pt, + innerbottommargin=10pt, + linecolor=primary,% + linewidth=0.75pt,% + topline=true,% + frametitleaboveskip=\dimexpr-\ht\strutbox\relax,% + } + \goodbreak + \begin{mdframed}[]\relax% + }% + {\end{mdframed}} + \makeatother + +\crefname{assumption}{assumption}{assumptions} +\Crefname{assumption}{Assumption}{Assumptions} +\labelformat{assumption}{\color{primary}\thechapter.#1} + +% ---------------------------------------------------- + + +% % ------- Other option for Assumptions -------------- +% \RequirePackage{placeins} + +% \newcounter{assumptioninternal}[chapter] + +% \DeclareCaptionType{assumptioninternal}[Example] +% \DeclareCaptionType{tipinternal}[Tip] +% \DeclareCaptionType{algointernal}[Algorithm] +% \crefname{assumptioninternal}{assumption}{assumptions} % name for cref +% \Crefname{assumptioninternal}{Assumption}{Assumptions} + +% \RequirePackage{stackengine} + +% \newenvironment{assumption}[1] +% { +% % \FloatBarrier +% %\refstepcounter{tipinternal}\refstepcounter{algointernal} % JM: don't increment the others +% \refstepcounter{assumptioninternal} +% \vspace{\baselineskip} +% \goodbreak +% \noindent\def\stackalignment{l}\stackon[-0.1pt]{\hspace*{-3px} +% \colorbox{primary}{\textcolor{white}{\sffamily Assumption +% \thechapter.\arabic{assumptioninternal}}} {\begin{minipage}[t]{3.1in}\sffamily #1\end{minipage}} +% }{ +% \hspace*{-3px}\textcolor{primary}{\rule{\linewidth}{3px}} +% } + +% \medskip\small +% } +% { + +% \noindent\textcolor{primary}{\rule{\linewidth}{2px}} + +% \bigskip +% } + +% ---------------- summary Box -------------------- + +\newcounter{summary}[chapter] +\setcounter{summary}{0} +\makeatletter +\newenvironment{summary}% +{% + \refstepcounter{summary} + \renewcommand{\label}[1]{\ltx@label{{##1}}} + \mdfsetup{% + frametitle={% + \tikz[ + baseline=(current bounding box.east), + outer sep=0pt, + inner sep=5pt, + ] + \node[ + anchor=east, + rectangle, + rounded corners=0.1cm, + fill=byutan, + text=black, + font=\normalfont\sffamily + ] + {Summary~\thechapter.\theassumption}; + } + } +% + \mdfsetup{ + roundcorner=5pt, + innertopmargin=1pt, + innerbottommargin=10pt, + linecolor=byutan,% + linewidth=0.75pt,% + topline=true,% + frametitleaboveskip=\dimexpr-\ht\strutbox\relax,% + } + \begin{mdframed}[]\relax% + }% + {\end{mdframed}} +\makeatother + +\crefname{summary}{summary}{summaries} +\Crefname{Summary}{Summary}{Summaries} +\labelformat{summary}{\color{primary}\thechapter.#1} + +% % ---------------- Summary Box -------------------- +% \newcounter{summary}[chapter] +% \newenvironment{summary}[1]% +% {% +% \refstepcounter{summary} +% \ifstrempty{#1}% +% {% +% \mdfsetup{% +% frametitle={% +% \tikz[baseline=(current bounding box.east),outer sep=0pt] +% \node[anchor=east,rectangle,rounded corners=0.1cm,fill=byutan] +% {\strut \textcolor{white}{Summary~\thechapter.\thesummary} };}} +% }% +% {% +% \mdfsetup{% +% frametitle={% +% \tikz[baseline=(current bounding box.east),outer sep=0pt] +% \node[anchor=east,rectangle,rounded corners=0.1cm,fill=byutan] +% {\strut \color{white}{Summary~\thechapter.\thesummary: #1} };}}% +% }% +% \mdfsetup{ +% roundcorner=5pt, +% innertopmargin=1pt, +% innerbottommargin=10pt, +% linecolor=byutan,% +% linewidth=0.5pt, +% topline=true, +% frametitleaboveskip=\dimexpr-\ht\strutbox\relax,} +% \begin{mdframed}[]\relax% +% }% +% {\end{mdframed}} + +% \crefname{summary}{Summary}{Summaries} +% \Crefname{summary}{Summary}{Summaries} +% \labelformat{summary}{\thechapter.#1} + +% ---------------------------------------------------- + + + +% -------------------- Equation Box -------------------- + +\usepackage{empheq} +\usepackage[most]{tcolorbox} + +\newtcbox{\eqbox}[1][]{% + nobeforeafter, math upper, tcbox raise base, + enhanced, colframe=primary, + colback=navy!3, + boxrule=0.5pt, + #1} + +\newtcbox{\stepbox}[1][]{% + nobeforeafter, math upper, tcbox raise base, + enhanced, colframe=gray, + standard jigsaw, + opacityback=0, + boxrule=0.5pt, + #1} + +% eqbox, but goes on the outside and you give it the environment to use, thus works with aligned as in +%\begin{eqboxed}{\eqbox}{align} blah blah \end{eqboxed} +\newenvironment{eqboxed}[2]{% + \empheq[box={#1}]{#2}}{\endempheq} + + +% ---- equation number formatting ----- + +\makeatletter +\renewcommand\tagform@[1]{\maketag@@@{\color{primary}\ignorespaces(#1)\unskip\@@italiccorr}} +\makeatother + +% ------------- Misc Cleveref Formatting ---------------- +\crefname{figure}{figure}{figures} +\Crefname{figure}{Figure}{Figures} +\renewcommand{\thefigure}{\arabic{chapter}.\arabic{figure}} +\labelformat{figure}{\color{primary}\normalfont#1} + + +% try getting subfigs reference color +% \newcommand{\thesubfigure}{\thefigure(\alph{subfigure})} +\crefname{subfigure}{figure}{figures} +\Crefname{subfigure}{Figure}{Figures} +\labelformat{subfigure}{\color{primary}\normalfont\thefigure#1} + +\crefname{section}{section}{sections} +\Crefname{section}{Section}{Sections} +\labelformat{section}{\color{primary}\sffamily#1} +\labelformat{subsection}{\color{primary}\sffamily#1} +\labelformat{subsubsection}{\color{primary}\sffamily#1} + +\crefname{equation}{equation}{equations} +\Crefname{equation}{Equation}{Equations} +\makeatletter +\creflabelformat{equation}{% + \textup{% + \color{primary} + (#2#1#3)% + }% +} +\makeatother +% \labelformat{equation}{\color{primary}#1} + +% ------------------------------------------------------- + +% ---------- Additional Colors ------------------------- +% \definecolor{lightblue}{HTML}{64AFFA} +% % \definecolor{navyred}{HTML}{9b0000} +% % \definecolor{royalred}{HTML}{B82B00} +% % \definecolor{lightred}{HTML}{FA4B4B} + +\definecolor{byutan}{HTML}{C5AF7D} +% \definecolor{plotsblue}{HTML}{002E5D} +% \definecolor{plotsred}{HTML}{9b0000} +% \definecolor{plotsgreen}{HTML}{A2E3A2} +% \definecolor{secondary}{HTML}{c05367} +% \definecolor{tertiary}{HTML}{8fa651} +\definecolor{secondary}{HTML}{be4c4d} +\definecolor{tertiary}{HTML}{69ae5f} +\definecolor{quaternary}{HTML}{a754a4} +\definecolor{quinary}{HTML}{be933d} +\definecolor{plotsgray}{HTML}{808080} + + +% -------------- easy coloring of things ---------------- +\newcommand{\navy}[1]{{\color{navy}#1}} +\newcommand{\primary}[1]{{\color{primary}#1}} +\newcommand{\secondary}[1]{{\color{secondary}#1}} +\newcommand{\tertiary}[1]{{\color{tertiary}#1}} +\newcommand{\gray}[1]{{\color{gray}#1}} + + +% ------------- part page formatting help ------------- +\newenvironment{fullwidth}{% + \clearpage + \setlrmarginsandblock{1.75in}{1.75in}{*} + \checkandfixthelayout +}{% + \clearpage + \setlrmarginsandblock{1.75in}{1.75in}{*} + \checkandfixthelayout + } + + +% -------- Stuff from macros.tex ------- % + +%%Potetially useful macros. +%\def\proof{\noindent{\it Proof: }} +%\def\QED{\mbox{\rule[0pt]{1.5ex}{1.5ex}}} +%\def\endproof{\hspace*{\fill}~\QED\par\endtrivlist\unskip} + +%\newcommand{\abs}[1]{\left|#1\right|} +%\newcommand{\defeq}{\stackrel{\triangle}{=}} +%\newcommand{\re}{\mathbb{R}} +% real numbers +%\newcommand{\OMIT}[1]{{}} +% omit sections of text + +%\newcommand{\superscript}[1]{\ensuremath{^\textrm{#1}}} +%\newcommand{\subscript}[1]{\ensuremath{_\textrm{#1}}} +% + +%partial derivatives +\newcommand{\pd}[2]{\ensuremath{\frac{\partial #1}{\partial #2}}} % partial derivative +\newcommand{\pdd}[2]{\ensuremath{\frac{\partial^2 #1}{\partial #2^2}}} % partial derivative +\newcommand{\pdpd}[3]{\ensuremath{\frac{\partial^2 #1}{\partial #2 \partial #3}}} % partial derivative + +%non-italic math letters +\renewcommand{\d}{\mathrm{d}} +\newcommand{\e}{\mathrm{e}} +%\newcommand{\i}{\mathrm{i}} + +%decrease overset height +\makeatletter +\newcommand{\oset}[3][0ex]{% + \mathrel{\mathop{#3}\limits^{ + \vbox to#1{\kern-0.5\ex@ + \hbox{$\scriptstyle#2$}\vss}}}} +\makeatother + +%%Vector arrow over variable +%\newcommand{\vect}[1]{% +% \oset{\rightharpoonup}{#1}} +\RequirePackage{bm} +\newcommand{\vect}[1]{\bm{#1}} + +%expand fractions to full display size +\newcommand\ddfrac[2]{\frac{\displaystyle #1}{\displaystyle #2}} + + +%Norm +\newcommand{\norm}[1]{\left\lVert#1\right\rVert} + +%Bezier word formatting +\newcommand{\beziername}{B\'{e}zier } + +\let\underbrace\LaTeXunderbrace +\let\overbrace\LaTeXoverbrace + + +%Cauchy Integral +\def\Xint#1{\mathchoice + {\XXint\displaystyle\textstyle{#1}}% + {\XXint\textstyle\scriptstyle{#1}}% + {\XXint\scriptstyle\scriptscriptstyle{#1}}% + {\XXint\scriptscriptstyle\scriptscriptstyle{#1}}% + \!\int} +\def\XXint#1#2#3{{\setbox0=\hbox{$#1{#2#3}{\int}$} + \vcenter{\hbox{$#2#3$}}\kern-.5\wd0}} +\def\ddashint{\Xint=} +\def\dashint{\Xint-} + + +%Multi-row in matricies +\usepackage{multirow} + + +%-TODO notes +\definecolor{notesblue}{HTML}{6A7AB8} +\definecolor{notesorange}{HTML}{B8946A} +\definecolor{notesred}{HTML}{B86A6A} +\definecolor{notesgreen}{HTML}{72B86A} +\definecolor{notespurple}{HTML}{A36AB8} + +\usepackage{xargs} +\usepackage[colorinlistoftodos,prependcaption,textsize=tiny]{todonotes} + +\newcommandx{\question}[2][1=]{\todo[linecolor=notesblue,backgroundcolor=notesblue!25,bordercolor=notesblue,#1]{{\bfseries Question:} #2}} +\newcommandx{\change}[2][1=]{\todo[linecolor=notesorange,backgroundcolor=notesorange!25,bordercolor=notesorange,#1]{{\bfseries Change:} #2}} +\newcommandx{\note}[2][1=]{\todo[linecolor=notesgreen,backgroundcolor=notesgreen!25,bordercolor=notesgreen,#1]{{\bfseries NOTE:} #2}} +\newcommandx{\toadd}[2][1=]{\todo[linecolor=notespurple,backgroundcolor=notespurple!25,bordercolor=notespurple,#1]{{\bfseries Add:} #2}} +\newcommandx{\toremove}[2][1=]{\todo[linecolor=notesred,backgroundcolor=notesred!25,bordercolor=notesred,#1]{{\bfseries Remove:} #2}} +\newcommandx{\format}[2][1=]{\todo[linecolor=plotsgray,backgroundcolor=plotsgray!25,bordercolor=notesred,#1]{{\bfseries Format:} #2}} +\newcommandx{\thiswillnotshow}[2][1=]{\todo[disable,#1]{#2}} + + +%cutom title page +\usepackage{pdfpages} + + +%paper 1 packages + +\RequirePackage{subcaption} +% \captionsetup[sub]{font=normalsize,labelfont={bf,sf}} +\captionsetup[subfigure]{subrefformat=simple,labelformat=simple} + \renewcommand\thesubfigure{(\alph{subfigure})} +\newdimen\figrasterwd +\figrasterwd\textwidth +\usepackage{placeins} +\usepackage{overpic} + + +% add a command so you don't have to write noident all over the place +\newcommand{\where}{\noindent where } + +%%%%%%% +% sub appendix stuff +\AtBeginEnvironment{subappendices}{% +\section*{Chapter~\thechapter~Appendices} +\addtocontents{toc}{\vspace{0.33em}} +\addcontentsline{toc}{section}{\numberline{}Chapter~\thechapter~Appendices} +\counterwithin{figure}{section} +\counterwithin{table}{section} +} + +%%%%%%%%%%%%%%% +% index stuff from https://tex.stackexchange.com/questions/249128/makeindex-style +\RequirePackage{filecontents} +\begin{filecontents*}{\jobname.mst} +delim_0 "\\IndexDotfill " +delim_1 "\\IndexDotfill " +headings_flag 1 +heading_prefix " \\IndexHeading{" +heading_suffix "}\n" +\end{filecontents*} + +\newcommand*{\IndexDotfill}{% + \nobreak\hfill\ \nobreak +} +% \renewcommand*{\indexspace}{% +% \par +% \vspace{25pt plus 6pt minus 4pt}% +% } +\newcommand*{\IndexHeading}[1]{% + \tikz\node[ + rounded corners=5pt, + draw=primary, + fill=navy!3, + line width=1pt, + inner sep=5pt, + align=center, + font=\sffamily\large, + text=navy, + minimum width=\linewidth-\pgflinewidth, + ] {#1};% + \nopagebreak + \par + \vspace{2mm}% +} + +%\usepackage{imakeidx} % have to load before hyperref, so this is now in the .cls file +\makeindex + + +%%%%%%%%%%% set table of contents dept %%%%%%%%%%%%%% +\setcounter{tocdepth}{2} + +%%%%% ------ add some breathing room between entries and brackets of matrices +\makeatletter +\renewenvironment{bmatrix} +{\left[\mkern3.5mu\env@matrix} +{\endmatrix\mkern3.5mu\right]} + +\renewenvironment{vmatrix} +{\left\lvert\mkern5mu\env@matrix} +{\endmatrix\mkern5mu\right\rvert} +\makeatother + +%%%%%%%%%%%% ------------ add room between figure numbers and descriptions in LoF ------- +\renewcommand{\cftfigurenumwidth}{3em} + +%%%%% ------ allow newlines inside table cells with the \makecell{} environment +\usepackage{makecell} + + +% fancy table alignment +\usepackage{array} +\newcommand{\PreserveBackslash}[1]{\let\temp=\\#1\let\\=\temp} +\newcolumntype{C}[1]{>{\PreserveBackslash\centering}m{#1}} +\newcolumntype{R}[1]{>{\PreserveBackslash\raggedleft}m{#1}} + +\usepackage{multirow} +\usepackage{array, makecell} + \renewcommand\theadfont{} +\renewcommand\theadalign{tc} +\renewcommand\cellalign{tr} +\setcellgapes{5pt} +\newcolumntype{/}{!{\color{plotsgray!50}\vrule width 0.001pt}} + +% decimal aligned columns in table +\usepackage{siunitx} % for 'S' column type diff --git a/v0.5.0/DuctAPE/theory_latex/ductairfoilcorrections.tex b/v0.5.0/DuctAPE/theory_latex/ductairfoilcorrections.tex new file mode 100644 index 00000000..5fa6b40a --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/ductairfoilcorrections.tex @@ -0,0 +1,424 @@ +\section{Airfoil Polar Corrections for Ducted Rotors} + +When airfoil/cascade aerodynamic data is unavailable for each of the rotor blade sections, it may be possible to use airfoil section data for subsonic flow regimes (and perhaps even mildly super sonic regimes) without terrible inaccuracy if we apply some corrections to the airfoil polar. +% +Though the accuracy of solutions does break down quickly for high subsonic, transonic, and supersonic cases. +% +If supersonic airfoil or cascade data is an absolute necessity (e.g. for fully super sonic data), then the following corrections should not be used, and proper section polars should be generated through appropriate means. +% +The following subsections cover the airfoil data corrections and adjustments available in DuctAPE as well as addition adjustments made to the implementation of each as required for suitability in gradient-based optimization. +% +Specifically, we discuss the nominal correction methodology and then go over implementation details required for removing any discontinuities\sidenote{As we do not necessarily know a priori where in the design space an optimizer will search, we need to ensure that the correction models are continuous over the entire design space when using gradient-based optimization.} present in the nominal formulation. + + +\subsection{Stall Cutoffs} +Before any actual corrections are applied, we need to make an important adjustment to the nominal airfoil data. +% +Especially if the airfoil data provided includes information in the post stall regime, we see that it is possible to obtain the same lift coefficient at two different angles of attack. +% +This feature of the airfoil data can make it difficult for the DuctAPE solver to converge, since a blade element method is the foundation of the rotor and wake models. +% +To remove the possibility of multiple solutions for the lift, we effectively cut off the airfoil data post stall and assign our own, slightly positive lift slope above the maximum lift coefficient and below the minimum lift coefficient. +% +We keep the nominal data between the minimum and maximum lift coefficients and smoothly blend that data into the prescribed lift slopes for the rest of the possible range of angles of attack. +% +We apply a similar procedure to the drag data, but use the cutoff angles of attack from the lift curve. +% +\Cref{fig:stall-cutoff} shows an example of our stall cutoff adjustment to lift and drag data. + +\begin{figure}[htb] + \centering + \begin{subfigure}[t]{0.45\textwidth} + \centering + \input{figures/liftstall-cutoff.tikz} + \caption{Lift data is overwritten and extended outside the minimum and maximum lift coefficient values.} + \label{fig:liftstallcutoff} + \end{subfigure} + \hfill + \begin{subfigure}[t]{0.45\textwidth} + \centering + \input{figures/dragstall-cutoff.tikz} + \caption{We cutoff Drag data at the same angles of attack as the lift data.} + \label{fig:dragstallcutoff} + \end{subfigure} + \caption{We cut off airfoil data outside the range of minimum and maximum lift coefficient and replace/extend the data using a prescribed lift curve slope in order to avoid numerical difficulties associated with multiple angles of attack resulting in equal lift coefficients.} + \label{fig:stall-cutoff} +\end{figure} + + +%---------------------------------# +% Cascade Corrections # +%---------------------------------# + +\subsection{Solidity and Stagger Corrections} + +Isolated airfoil data needs to be corrected to account for cascade, or multi-plane interference, effects since the airfoils along a rotor blade section are not actually isolated. +% +This is especially true for higher solidities, where blades are relatively close together. +% +We apply corrections based on a simple model published by Wallis\scite{Wallis_1968,Wallis_1977,Wallis_1983}, which assumes smooth transition between isolated airfoil and cascade data as solidity increases, as well as circular camber line airfoil geometries. +% +\begin{marginfigure} + \input{figures/soliditystagger-correction-margin.tikz} + \caption{Example curves demonstrating the changes to the lift coefficient vs angle of attack for the nominal polar when corrections for a solidity of 1.0 at a stagger angle of \(\pi/4\) are applied.} + \label{fig:soliditystagger-correction} +\end{marginfigure} +% +The corrections depend both on solidity and stagger, though stagger only begin to effect the correction after 20 degrees. +% +These corrections are somewhat limited as they assume the airfoil camber is well matched to the operating conditions such that the deviation angle isn't overly large, but they should be sufficient for our purposes. +% +Wallis gives his corrections in the form of a line plot, to which quadratic fits are made. +% +Specifically, we use the quadratic fits provided in the DFDC source code. +% +The model is also applied only for stagger angles less than 90 degrees, and stagger effects are held constant after that. +% +Furthermore, the total correction factor is set to a maximum of 1, since, as stated by Wallis, ``there are no documented examples of factors exceeding unity,'' and the tendency of theoretical models predict values above 1 appears to be due to not capturing increased deviation angles completely. + +For implementation, since the solidity and stagger corrections only apply for stagger angles between 20 and 90 degrees, and we also set a maximum adjustment factor of 1, we limit stagger angles below 20 degrees to 20 degrees, and above 90 degrees to 90 degrees. +% +We apply these limits using a sigmoid blending function between the limited ranges and the nominal range. +% +For the limit of the overall adjustment factor, we subtract the difference of the unlimited adjustment factor and the factor limit of 1 from the unlimited factor. +% +To keep the end product smooth, we actually apply another sigmoid blending function to the difference to be subtracted and zero, centered just before the point of limitation to mitigate overshoot by the blending function. +% +\Cref{fig:cascadesmoothed} shows the limited correction curves with respect to changes in solidity and stagger. +% +We also see in \cref{fig:cascadesmoothed} that our applications of smooth blending functions have minimal effect on the calculated correction values. + +\begin{figure}[htb] + \centering + \begin{subfigure}[t]{0.45\textwidth} + \centering + \input{figures/solidity-smoothed.tikz} + \caption{Corrected value vs solidity for a stagger angle of \(\pi/4\).} + \label{fig:solidtysmoothed} + \end{subfigure} + \hfill + \begin{subfigure}[t]{0.45\textwidth} + \centering + \input{figures/stagger-smoothed.tikz} + \caption{Corrected value vs stagger angle for a solidity of \(\sigma=2\)} + \label{fig:staggersmoothed} + \end{subfigure} + \caption{Nominal (with cutoffs) and smoothed solidity and stagger corrections for a nominal lift coefficient of 1.} + \label{fig:cascadesmoothed} +\end{figure} + + + +%---------------------------------# +% Compressibility Corrections # +%---------------------------------# +\subsection{Compressibility Lift Corrections} + +% \subsubsection{Subsonic Corrections} + +For subsonic compressibility corrections, we apply the well-used Pradtl-Glauert correction, which is based off of compressible potential flow and thin airfoil theories\scite{Glauert_1928}. +% +The Pradtl-Glauert correction states that for the nominal lift coefficient (which in our case is already corrected for solidty and stagger effects), \(c_{\ell_\text{ss}}\), one can apply a correction factor of \(\beta = \left[1-M^2\right]^{-1/2}\) to correct for compressibility affects of lift on the airfoil for Mach numbers, \(M\), up to about 0.7. + +\begin{marginfigure} + \input{figures/prandtlglauert-correction-margin.tikz} + \caption{Example curves demonstrating the changes to the lift coefficient vs angle of attack for the nominal polar when the Prandtl-Glauert correction applied.} + \label{fig:prandtlglauert-correction} +\end{marginfigure} + +\begin{equation} + \label{eqn:prandtlglauertlift} + c_{\ell_\text{pg}} = \frac{c_{\ell_\text{ss}}}{\left[1-M^2\right]^{1/2}} +\end{equation} + +\where the Mach number is defined as + +\begin{equation} + M = \frac{W}{V_s} +\end{equation} + +\where \(W\) is the local inflow velocity magnitude and \(V_s\) is the local speed of sound (which we assume to be the freestream speed of sound). +% +\Cref{fig:prandtlglauert-correction} shows an example application of the Pradtl-Glauert correction applied to an arbitrary set of airfoil data for a Mach number of 0.5. + +\begin{marginfigure} + \input{figures/pg-smoothed-margin.tikz} + \caption{Nominal (with cutoff Mach number) and smoothed versions of the Prandtl-Glauert correction compared for a nominal lift coefficient of 1.} + \label{fig:prandtlglauert-smoothed-correction} +\end{marginfigure} + +For implementation in a gradient-based optimization setting, we note that \cref{eqn:prandtlglauertlift} is only valid for Mach numbers less than 1. +% +At \(M=1\) we get infinity, and for \(M>1\) the output is not a real number. +% +In order to remedy these issues, we first set a limit on the Mach numbers that can be input, say \(M=0.999\), we then apply a quintic polynomial blend between \cref{eqn:prandtlglauertlift} and the output for the limit of \(M=0.999\) centered at \(M=0.975\) with an interpolation range of 0.02 on either side of the center point. +% +This provides a smooth transition to the cutoff value as well as avoids the possibility of \cref{eqn:prandtlglauertlift} being evaluated at or above \(M=1\). +% +Although, as may be seen in \cref{fig:prandtlglauert-smoothed-correction}, this adjustments causes a slight deviation from the nominal correction for high subsonic Mach numbers, the deviations are small and in ranges that we do not expect to operate frequently. + + +%---------------------------------# +% Reynolds Corrections # +%---------------------------------# +\subsection{Reynolds Number Drag Adjustments} + +If we have airfoil data at one Reynolds number, but we need to know how the airfoil behaves at a slightly different Reynolds number, we can apply an adjustment to the drag coefficient based on similarity between flat plate skin friction drag. +% +The limitation here is that we assume that the flow regimes between the Reynolds numbers are similar, in that they have similar laminar vs turbulent behavior, so that we can cancel out unknown constants due to airfoil shape and flow regime to arrive at + +\begin{marginfigure} + \input{figures/redrag-correction-margin.tikz} + \caption{Example curves demonstrating the changes to the drag coefficient vs angle of attack for the nominal polar when the Reynolds number adjustment is applied for a slightly higher Reynolds number.} + \label{fig:redrag-correction} +\end{marginfigure} + +\begin{equation} + c_{d_{Re}} = c_{d_o} \left(\frac{Re_o}{Re}\right)^p; +\end{equation} + +\where \(Re\) is the local Reynolds number, \(Re_o\) is the Reynolds number at which the data was generated, and the exponent terms are defined, for example, as \(p=0.5\) for fully laminar flow and \(p=0.2\) for fully turbulent flow. +% +\Cref{fig:redrag-correction} shows an example of the Reynolds number drag adjustment for an arbitrary drag curve applied for use at a Reynolds number 2.5 times larger than the nominal case. +% +Note that we do not have to apply a similar correction to the lift coefficient, because within the constraint of similar flow regimes (that is, relatively small changes in Reynolds number), the lift does not actually change significantly. +% +Also note that in practice, it may be better to simply utilize an interpolation between data at various Reynolds numbers, especially if the laminar vs turbulent regime is not fully characterized a priori. + + + +%---------------------------------# +% Transonic Corrections # +%---------------------------------# + +%%%%% ----- Transonic Lift Adjustments ----- %%%%% + +\subsection{Transonic Effects on Lift and Drag Coefficients} + +Above a critical Mach number, often around 0.7, the Pradtl-Glauert correction begins to break down due to transonic effects over the airfoil. +% +If shock waves are present on the airfoil, we can expect a decrease in lift as early separation can occur. +% +For these high subsonic and transonic cases, we apply limiters to the maximum and minimum lift coefficients. +% +We choose to employ the method used in XROTOR\sidenote{\url{https://web.mit.edu/drela/Public/web/xrotor/}} and DFDC\sidenote{\url{https://web.mit.edu/drela/Public/web/dfdc/}}. +% +The lift curve limiter correction used in these codes takes the form: + +\begin{equation} + c_{\ell_\text{corr}} = c_{\ell_\text{pg}} - (1-f_\text{stall}) c_{\ell_\text{lim}}, +\end{equation} + +\where + +\begin{marginfigure} + \input{figures/clminmaxlimit-correction-margin.tikz} + \caption{Example curves demonstrating the changes to the lift coefficient vs angle of attack for the nominal polar when the critical mach limiter is applied.} + \label{fig:clminmax-correction} +\end{marginfigure} + +\begin{equation} + f_\text{stall} = \frac{\left.\frac{\d c_\ell}{\d \alpha}\right|_\text{stall}}{\frac{\d c_\ell}{\d \alpha}}, +\end{equation} +% +and +% +\begin{equation} + c_{\ell_\text{lim}} = \Delta c_{\ell_\text{stall}} \ln \left[\frac{1 + exp\left(\frac{c_{\ell_\text{pg}}-c_{\ell_\text{max}}'}{\Delta c_{\ell_\text{stall}}}\right)}{1+exp\left(\frac{c_{\ell_\text{min}}'-c_{\ell_\text{pg}}}{\Delta c_{\ell_\text{stall}}}\right)}\right]; +\end{equation} + +\where \(\left.\frac{\d c_\ell}{\d \alpha}\right|_\text{stall}\) is the lift curve slope to apply in the post stall region as part of this limiting correction, and \(\frac{\d c_\ell}{\d \alpha}\) is the nominal lift curve slope. +% +The \(\Delta c_{\ell_\text{stall}}\) term is the change in \(c_\ell\) between incipient and total stall. +% +The \(c_{\ell_\text{max}}'\) and \(c_{\ell_\text{min}}'\) values are the minimum and maximum of the nominal \(c_{\ell_{\text{max}_o}}\) and \(c_{\ell_{\text{min}_o}}\) and the following expressions, respectively: + +\begin{subequations} + \begin{align} + c_{\ell_\text{max}}' &= min \left[\left.c_\ell\right|_{c_{d_\text{min}}}+4\left(M_\text{crit} - M +\Delta M_\text{stall}\right),~~c_{\ell_{\text{max}_o}}\right] \\ + c_{\ell_\text{min}}' &= max \left[\left.c_\ell\right|_{c_{d_\text{min}}}-4\left(M_\text{crit} - M +\Delta M_\text{stall}\right),~~c_{\ell_{\text{min}_o}} \right], + \end{align} +\end{subequations} + +\where \(M_\text{crit}\) is the critical Mach number, \(\left.c_\ell\right|_{c_{d_min}}\) is the lift coefficient at the minimum drag angle of attack, and + +\begin{equation} + \Delta M_\text{stall} = \left(\frac{0.1}{10}\right)^{1/3} +\end{equation} + +\noindent is comprised of chosen factors that yield reasonable results.\sidenote{These numbers are hard coded into XROTOR and DFDC.} +% +\Cref{fig:clminmax-correction} shows an example transonic limit adjustment for an arbitrary lift curve given a critical Mach number of 0.7 and an operational Mach number of 0.8. + + +%%%%% ----- Transonic Drag Adjustments ----- %%%%% + + +Along with the limiters placed on the lift curve due to transonic effects for Mach numbers above the critical Mach number for the airfoil, there are accompanying increases in the drag coefficients. +% +Again, we turn to the corrections provided in the XROTOR and DFDC codes, which add compressibility drag based on the limited lift coefficients described previously. +% +The added compressibility drag takes the form + +\begin{equation} + c_{d_c} = c_{d_{Re}} + 10 \left(M-M_\text{crit}(c_\ell)\right)^{3}, +\end{equation} + +\begin{marginfigure} + \input{figures/transdrag-correction-margin.tikz} + \caption{Example curves demonstrating the changes to the drag coefficient vs angle of attack for the nominal polar when the transonic compressibility corrections are added for a Mach number of 0.1 above \(M_\text{crit}\).} + \label{fig:transdrag-correction} +\end{marginfigure} +% + +\where the critical Mach adjusted for the limited lift coefficient takes the form + +\begin{equation} + \label{eqn:mcritcl} + M_\text{crit}(c_\ell) = M_\text{crit} - \frac{\bigg|c_{\ell_\text{lim}} - \left.c_\ell\right|_{c_{d_\text{min}}}\bigg|}{4} - \Delta M_\text{crit}, +\end{equation} + +\where + +\begin{equation} + \Delta M_\text{crit} = \left(\frac{0.002}{10}\right)^{1/3} +\end{equation} + +\noindent comes from the difference in Mach corresponding to a rise in \(c_d\) of 0.002 at \(M_\text{crit}\), which is chosen to match empirical experience.\sidenote{Again, these values are hard coded into XROTOR and DFDC.} +% +Similarly, as before, the other constants are chosen to yield reasonable results. +% +\Cref{fig:transdrag-correction} shows an example comparison between a nominal drag curve and one for which the transonic compressibility augmentations have been applied for a Mach number 0.1 above \(M_\text{crit}\). + + +For smooth implementation there are several min/max operations in the lift limiter function, these have been smoothed with sigmoid blending functions, and very little change is introduced from the nominal function as seen in \cref{fig:translim-smoothed}. +% +In addition, the nominal drag limiter function only adds drag after the critical Mach number is reached. +% +We smoothed this transition, which is perhaps less physical, but the differences are minimal as seen in \cref{fig:translim-smoothed}. +% +Furthermore, we used a smoothed absolute value with relatively tight smoothing range. +% +In this case, there is a slight over-prediction of the corrected drag for values at and just above the critical mach number, which actually counters the under prediction introduced by smoothing across the critical mach. + +\begin{figure}[htb] + \centering + \begin{subfigure}[t]{0.45\textwidth} + \centering + \input{figures/cltranslim-smoothed.tikz} + % \label{fig:cltranslim-smoothed} + \end{subfigure} + \hfill + \begin{subfigure}[t]{0.45\textwidth} + \centering + \input{figures/cdtranslim-smoothed.tikz} + % \label{fig:cdtranslim-smoothed} + \end{subfigure} + \caption{Nominal and smoothed transonic lift and drag coefficient limits across a range of Mach numbers for a Nominal lift coefficient of unity.} + \label{fig:translim-smoothed} +\end{figure} + + +\subsection{Combined Implementation} + +In DuctAPE, these corrections are applied as follows. +% +First, it is assumed that the user inputs airfoil data that is already pre-processed with the stall limits applied. +% +Ideally, the airfoil data also inherently has Reynolds number dependencies (data at various Reynolds numbers) already as well. +% +Then during computation, the corrections are applied on-the-fly, beginning with the solidity/stagger correction. +% +The Prandtl-Glauert compressibility correction is applied next, followed by the Reynolds number drag correction if data at multiple Reynolds numbers was not provided. +% +Finally, the transonic effect lift limiter and drag addition corrections are applied. + + + +% \subsection{Rotation (3D) Corrections} + + +\section{Comparison of Corrected Airfoil Polars to Experimental Cascade Data} + +To see how the corrections actually fare (especially the solidity and stagger corrections), we compare to experimental data produced by NACA for their NACA 65-410 airfoil. +The NACA 65-series compressor blade airfoils are base on a basic thickness form and mean line. +% +The basic thickness form comes from the \(65_2\)-016 airfoil which is first scaled down to 10\% thickness and then the y-coordinates are increased by 0.0015 times the chord-wise coordinate to slightly thicken the trailing edge. +% +There are also directly derived values for the coordinates; they are slightly different than the scaled values used in the study. +% +The basic mean line comes from the NACA 6-series method to obtain a design lift coefficient of 1.0, and then scaled based on the desired lift coefficient. +% +For example the 65-410 mean camber line takes the basic mean camber line and scales it by 0.4, while the 65-(12)10 mean camber line is the basic mean camber line scaled by a factor of 1.2. +% +Tests were run for at solidities from 0.5 to 1.5 and inflow angles of \(30^\circ\) to \(70^\circ\), although not every combination was tested. +% +Tests at solidities of 1.0 and above were performed at a Reynolds number of 2.45e5; for solidities less than 1.0 tests were performed at a Reynolds number of 2e5. +% +The experimental data for lift and drag coefficients in the NACA report is given for each tested combination of inflow angle and solidity across a range of angles of attack, generally ranging from negative to positive stall. +% +Note that the lift and drag forces were not measured directly, but rather calculated from pressure and velocity measurements. +% +In order to apply our airfoil corrections we calculate the stagger angles, \(\gamma\), from the provided inflow angles, \(\beta_1\), and angles of attack, \(\alpha\), as + +\begin{equation} + \gamma = \beta_1 - \alpha +\end{equation} + +\begin{figure}[hb!] + \centering + \input{figures/naca-65410scaled.tikz}% + \caption{NACA 65-410 compressor series airfoil geometry (using the scaled ordinates).} + \label{fig:naca65410scaled} +\end{figure} + + +As can be seen in \cref{fig:naca65410comps}, the method of corrected airfoil data does not do especially well at matching actual cascade data. +% +In general, the lift curve slopes of the cascades are much shallower than that of the isolated and corrected XFOIL outputs. +% +In addition, the drag ``bucket'' of the isolated airfoil is much narrower than for the cascades. +% +We note that we did not apply drag corrections in an attempt to capture cascade effects. +% +Such corrections would increase the drag due to blockage from solidity and increase the discrepancies we already see in \cref{fig:naca65410comps}. + +\clearpage +\newpage + +\begin{figure}[h!] + \centering + \begin{subfigure}[t]{\textwidth} + \centering + \input{figures/naca_65410_clcd_b30_comp.tikz}% + \caption{Inflow angle of \(\beta_1=30^\circ\).} + \label{} + \end{subfigure} + + \begin{subfigure}[t]{\textwidth} + \centering + \input{figures/naca_65410_clcd_b45_comp.tikz}% + \caption{Inflow angle of \(\beta_1=45^\circ\).} + \label{} + \end{subfigure} + + \begin{subfigure}[t]{\textwidth} + \centering + \input{figures/naca_65410_clcd_b60_comp.tikz}% + \caption{Inflow angle of \(\beta_1=60^\circ\).} + \label{} + \end{subfigure} + + \begin{subfigure}[t]{\textwidth} + \centering + \raisebox{-4em}{\input{figures/naca_65410_clcd_b70_comp.tikz}}% + \caption{Inflow angle of \(\beta_1=70^\circ\).} + \label{} + \end{subfigure} + + \caption{Comparison of NACA experimental data (\(\blacktriangle\) markers) and XFOIL airfoil outputs with applied corrections (lines) for angles of attack vs lift \((c_\ell\)) and drag \((c_d\)) coefficients at various inflow angles (\(\beta_1\)) and solidities. \primary{Blue indicates solidity = 1.0}, \secondary{red indicates solidity = 1.25}, and \tertiary{green indicates solidity = 1.5}; \gray{Grey dashed lines indicate the uncorrected, smoothed XFOIL outputs}.} + \label{fig:naca65410comps} +\end{figure} + +\clearpage +\newpage diff --git a/v0.5.0/DuctAPE/theory_latex/ductape.tex b/v0.5.0/DuctAPE/theory_latex/ductape.tex new file mode 100644 index 00000000..becf8042 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/ductape.tex @@ -0,0 +1,36 @@ +\chapter{DuctAPE Theory} + +\noindent Author: Judd Mehr + +\noindent Last Updated: \today + +\input{ductintro} + +\input{ductbodymethods} + +\input{ductrotorwakemethods} + +\input{ductpostprocessing} + +\input{ductverification} + +% %%% --- Chapter Appendices --- %%% +\clearpage +\newpage +\begin{subappendices} + \input{vortexringinducedvelocity} + \input{separationofsingularity} + \input{ductairfoilcorrections} + \input{poissoneqninversion} +% % \input{ductape/axisym_self_induction} %not needed now? +\end{subappendices} + +%%% --- Bibliography --- %%% +\clearpage +\newpage +\let\oldaddcontentsline\addcontentsline% Store \addcontentsline +\renewcommand{\addcontentsline}[3]{}% Make \addcontentsline a no-op +\printbibliography[title=References,heading=subbibliography] +\let\addcontentsline\oldaddcontentsline% Restore \addcontentsline + +% \end{document} diff --git a/v0.5.0/DuctAPE/theory_latex/ductbodymethods.tex b/v0.5.0/DuctAPE/theory_latex/ductbodymethods.tex new file mode 100644 index 00000000..ae91cd4b --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/ductbodymethods.tex @@ -0,0 +1,1440 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% NO ROTOR SOLUTION + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\section{No-rotor Solution: Axisymmetric Panel Method} +\label{sec:axisymmetricpanelmethod} + +One of the major pieces of the DuctAPE solver is an axisymmetric panel method. +The implementation for an axisymmetric panel method is similar to the implementation of typical planar panel methods, but there are a few differences. +We include here details for the axisymmetric panel method used. + +%---------------------------------# +% Potential Flow Theory # +%---------------------------------# +\subsection{Potential Flow Theory} +\label{ssec:potentialflow} + +Potential flow theory deals with the analysis of flow fields that can be modeled as the gradient of scalar functions. +% +In our case, we are specifically interested in the scalar function called the velocity potential\sidenote{Thus the name potential flow theory}, \(\vect{\phi}\), and its gradient: velocity, \(\vect{V}=\nabla\vect{\phi}\). +% +Potential flows conform to \cref{asm:irrotational} by definition\sidenote{Due to the vector identity that for any vector, \(\vect{\phi}\), the curl of the gradient of the vector is zero: \(\nabla \times \nabla\vect{\phi}=0\)}. + +\begin{assumption}{} + \label{asm:irrotational} + + \asm{The velocity field is irrotational, such that \[\vect{\omega} = \nabla \times \vect{V} = 0 \] everywhere in the field except for the axes of free vortices.} + + \limit{We cannot directly model viscous effects in the flow, and later (in our wake model) we lose some fidelity by forcing an irrotational interpretation of inherently rotational phenomena.} + + \why{We will see shortly that this allows us to greatly simplify the analysis to a linear system of equations, greatly reducing the computational expense. At high enough Reynolds numbers, the flow appears to be inviscid for large portions of the flow field as well.} + +\end{assumption} + +For our application, we also assume + +\begin{assumption}{} + \label{asm:incompressible} + + \asm{The velocity field is incompressible, such that + \[\nabla \cdot \vect{V} = 0. \]} + \vspace*{-\baselineskip} + + \limit{We cannot model highly compressible flows.} + + \why{For our application, we should not need to model highly compressible flows, + but we can later apply some compressibility corrections (assuming that the flow is reasonably close to incompressible).} + +\end{assumption} +% +From \cref{asm:incompressible} we see that + +\begin{equation} + \label{eqn:laplace} + \nabla \cdot \nabla \vect{\phi} = \nabla^2 \vect{\phi} = 0, +\end{equation} +% +which is the Laplace equation. +% +Along with the implication of \cref{asm:irrotational} that our flow is inviscid\sidenote{An irrotational flow is always inviscid, but an inviscid flow is not necessarily irrotational}, the fact that the Laplace equation is a linear operator is a major key to the reduction in required computational expense for potential flow methods. +% +Because the Laplace equation is a linear operator, we can model relatively complicated flow features (such as a duct and center body) using a superposition of elementary flows, each satisfying the Laplace equation (for example point sources and free vortices). +% +The superposition of any number of elementary flows of unknown strength can be assimilated into a single linear system of equations and solved directly. +% +In our application, we are mostly concerned with determining the strengths of elementary flows distributed along imaginary boundaries we define based on useful shapes (such as the surfaces of ducts and center bodies) that induce a potential flow field that matches what we would see for an actual solid body in reality.\sidenote{In reality, flow is neither irrotational, nor incompressible, but we find that in many cases it is close enough that potential flow theory provides a good approximation.} +% +We call problems dealing with values on boundaries: boundary value problems (for obvious reasons). +% +A common way to approach the solution of boundary value problem is with a boundary integral equation. + + + +%---------------------------------# +% Boundary Integral Equations # +%---------------------------------# +\subsubsection{Boundary Integral Equation} + +For a given aerodynamic body, representable by a simply connected contour (for example, \(\mathcal{S}\) as shown in \cref{fig:simplyconnectedairfoil}) we want to be able to find the velocity (and thereby pressure) distribution on that body surface as well as its influence on the remainder of the flow field. +% +One way to find the surface velocity distribution is to leverage potential flow theory. +% +Using potential flow theory, we can construct a boundary integral equation describing the influence of distributions of elementary flow distributions along a give boundary. +% +We can then use this boundary integral equation to solve the boundary value problem for the unknown surface velocity distribution. +% +Fortunately, Erik Ivar Fredholm developed a set of integral equations for application to boundary value problems\scite{Fredholm_1903}. +% +For our application, we will use a Fredholm integral equation of the second kind: + +\begin{equation} + \label{eqn:fredholm1} + % f(t) = \varphi(t) + \lambda \oint_\mathcal{S} K(s,t) \varphi(s) \d s. + f(t) = \vartheta(t) + \oint_\mathcal{S} K(s,t) \varphi(s) \d s. +\end{equation} + +\begin{figure}[h!] + \centering + \input{figures/simply_connected_airfoil.tikz} + \caption{An example of a simply connected contour, \(\mathcal{S}\), representing, in this case, an airfoil. The dashed arrow represent the direction about which the contour is traversed, with \(\hat{\vect{n}}\) being the unit surface normal associated with the direction of travel.} + \label{fig:simplyconnectedairfoil} +\end{figure} + + + + +To understand what each term in \cref{eqn:fredholm1} represents, we really need to start with an understanding of the problem we are trying to solve. +% +As mentioned, we would like to solve for the strengths associated with elementary flow field distributions that induce a potential flow field which matches our chosen geometry for a set of external flow conditions. +% +There are several ways to go about setting up a boundary value problem, and we are going to choose to apply what is often termed the no flow through condition. +% +In other words, we are going to apply the boundary condition that the velocity normal\sidenote{Using the normal directed out of the body, or into the space \(\mathcal{V}\) as depicted in \cref{fig:simplyconnectedairfoil}.} to the body is zero. +% +Because we are applying a boundary condition on velocity, which is the gradient of the velocity potential, we are applying what is called the Neumann boundary condition.\sidenote{As opposed to a Dirichlet boundary condition, which is typically applied directly to the value of the potential on the boundary.} +% +We are now ready to start defining the terms in \cref{eqn:fredholm1}. + +Starting with the integral term, which represents the influence of a distribution of elementary flows along the boundary, we have the kernel \(K\) which in our case will be the expression for the unit induced velocities of the surface segment, \(\d s\), acting normal to the surface at point \(t\). +% +Mathematically, we can state this as + +\begin{equation} + \begin{aligned} + K(s,t) &= \pd{\hat{\vect{\phi}}(s,t)}{\hat{\vect{n}}_t} \\ + &= \nabla \hat{\vect{\phi}}(s,t) \cdot \hat{\vect{n}}(t) \\ + &= \hat{\vect{V}}(s,t) \cdot \hat{\vect{n}}(t). + \end{aligned} +\end{equation} + +\where \(\hat{\vect{\phi}}\) is the unit velocity potential, \(\hat{\vect{V}}\) is the unit velocity, and \(\hat{\vect{n}}\) is the unit normal to the surface. +% +The other term in the integrand, \(\varphi(s)\) is the distribution of strengths of elementary flows along the boundary. +% +We will choose to use free vortices as our elementary flows and we represent their strengths with the symbol \(\gamma\). +% +%The \(\lambda\) in front of the integral determines where we are applying our conditions. +%% +%In our case, we want to apply things external to the body, or inside the volume, \(\mathcal{V}\) as shown in \cref{fig:simplyconnectedairfoil}. +%% +%Therefore \(\lambda = +1\).\scite{Kellogg_1929} + +The other term on the right hand side, \(\vartheta(t)\) represents the jump in velocity across the boundary. +% +It can be shown that the jump in tangential velocity associated with a vortex distribution along the boundary is \(\vartheta(t) = -\gamma/2\).\scite{Lewis_1991, Martensen_1971, Courant_1962} +% +And for the orthogonal case of the normal velocity (which we are concerned with at this point), the jump term is zero.%\toadd{probably need to find a source supporting this. it's intuitive since it's just the reverse of sources, but some explanation or citation should be added.}%\scite{cite} +% + +Lastly, the term on the left hand side, \(f(t)\) represents any externally induced velocity in the negative normal direction\sidenote{Remember that we want the total normal velocity at the boundary to be zero, so adding this term to both sides should give us zero.} on the boundary at point \(t\). +% +The typical externally induced velocity is due to (but not limited to) a uniform free stream.\sidenote{Note that a uniform flow is another of the elementary flows satisfying the Laplace equation.} +% +Mathematically we state the externally induced velocity as + +\begin{equation} + \begin{aligned} + \varphi(t) &= \pd{\vect{\phi}_\infty}{\hat{\vect{n}}_t} \\ + &= \nabla \vect{\phi}_\infty \cdot \hat{\vect{n}}(t) \\ + &= \vect{V}_\infty \cdot \hat{\vect{n}}(t). + \end{aligned} +\end{equation} + +All together our Fredholm integral equation of the second kind, applied to the Neumann problem for an unknown distribution of free vortices along a chosen boundary is + +\begin{subequations} + \label{eqn:fredholm2} + \begin{align} + \oint_\mathcal{S} \gamma(s) \pd{\hat{\vect{\phi}}(s,t)}{\hat{\vect{n}}} \d s &= -\pd{\vect{\phi}_\infty}{\hat{\vect{n}}} \\ + \text{-- or --} \notag\\ + \oint_\mathcal{S} \gamma(s) \hat{\vect{V}}(s,t)\cdot\hat{\vect{n}} \d s &= -\vect{V}_\infty\cdot\hat{\vect{n}}. + \end{align} +\end{subequations} + +We now have a boundary integral equation that we want to use to solve for the unknown distribution of vortex strengths, \(\gamma(s)\). +% +As we will see, we will apply this equation at various points, \(t\), along the boundary simultaneously to form a system of equations for which to solve for \(\gamma(s)\). + + +%---------------------------------# +% Panel Method # +%---------------------------------# +\subsection{The Panel Method: A Numerical Approach to Solving Boundary Integral Equations} +\label{ssec:panelmethodology} + +Solving the boundary integral equation over an entire boundary all at once is not, in general, a tractable approach. +% +Instead, we approximate the boundary as a series of segments and sum the integrals over those individual segments. +% +We often approximate the boundary as a polygon, discretizing the boundary using flat segments over which the surface integral is simplified. +% +For two- and general three-dimensional geometries, these flat segments are often referred to as panels, thus the name ``panel method.'' + +In panel methods, we also do not apply the no through flow condition everywhere in the boundary, but rather at a set of control points along the boundary. +% +We choose to place one control point at the center of each panel. +% +We can therefore assemble a system of integral equations for each of the control points, summing the integral of the influence of all the panels on each control point and use that system of equations to solve for the unknown vortex strength distribution required to match the flow field to our prescribed geometry. +% +In order to set up a system of equations, we first need to discretize the boundary into panels. + +\subsubsection{Discretizing bodies into panels} + +\begin{assumption}{} + \label{asm:panels} + + \asm{Smooth bodies can be reasonably represented by a discrete number of flat panels.} + + \limit{By approximating the geometry as a polygon, rather than a single continuous curve, we lose some accuracy in our computation.} + + \why{As mentioned, it is much easier to solve the problem through the sum of individual components of the boundary, and especially if we simplify those sections into pieces over which the integral is simpler to solve. In addition, with a sufficient number of panels, we obtain a close approximation of the body curvature and therefore the solution of the continuous integral over the entire boundary.} + +\end{assumption} + +The bodies which we would like to model in our application are axisymmetric bodies of revolution (such as the center body) and annular airfoils (such as the duct comprised of a casing and nacelle) of an electric ducted fan. +% +According to \cref{asm:axisymmetric,asm:panels} we can model the geometry as axisymmetric bands, as shown in \cref{fig:flatbandgeometry}. +% +Furthermore, as shown in \cref{ssec:ringvortices}, we may reduce the geometry for analysis to two dimensions without loss of generality after applying axisymmetry, modeling the geometry with representative cross sections in the \(r\)-\(z\) plane in cylindrical coordinates.%\toadd{create a figure showing the 3D geometry faded with a solid cross-sectional slice on the r-z plane} +% +The discretized boundary in our implementation then takes the form of 2D panels (representing the axisymmetric bands). +% +\Cref{fig:flatbandgeometry} shows what is intended by a flat, axisymmetric band, and \cref{fig:flatpanelgeometry} shows the panel representation of said band. + +\begin{figure}[h!] + \centering + \begin{subfigure}[t]{0.45\textwidth} + \centering + \input{figures/flatbandgeometry.tikz} + \caption{Axisymmetric Band Coordinate System.} + \label{fig:flatbandgeometry} + \end{subfigure} + \hfill + \begin{subfigure}[t]{0.45\textwidth} + \centering + \raisebox{2em}{\input{figures/flatpanelgeometry.tikz}} + \caption{Panel representing axisymmetric band; \(\hat{\vect{e}}_\theta\) out of the page.} + \label{fig:flatpanelgeometry} + \end{subfigure} + \caption{Axisymmetric band and panel geometry definitions.} + \label{fig:axisymmetricbandpanelgeometry} +\end{figure} + +One of the convenient traits of a panel method is that we simply need to know the geometry and relative position of each of the panels to calculate the unit induced velocities presented in \cref{ssec:ringvortices}. +% +As an overview of the panel geometry we need to know, we refer to \cref{fig:axisymmetricbandpanelgeometry} in which we see a panel defined from the point, {\(\vect{p}_j\)}, to the point, {\(\vect{p}_{j+1}\)}. +% +We take the midpoint of the panel to be \({\overline{\vect{p}}_j}={(\vect{p}_{j}+\vect{p}_{j+1})}/2\); and we define the unit normal, {\(\hat{\vect{n}}_j\)}, as shown in \cref{fig:flatpanelgeometry}, +such that \(\hat{\vect{n}}_j=\hat{\vect{e}}_\theta\times\hat{\vect{t}}_j\), +where \(\hat{\vect{e}}_\theta\) is the unit vector tangent to the vortex band in the positive \(\theta\)-direction according to the right hand rule, +and {\(\hat{\vect{t}}_j\)} is the unit tangent to the panel from {\(\vect{p}_j\)} to {\(\vect{p}_{j+1}\)} +such that \(\hat{\vect{t}}_j = (\vect{p}_{j+1}-\vect{p}_j)/||\vect{p}_{j+1}-\vect{p}_j||\). +% +In other words, we will assume that the discretized panels are defined such that increasing panel indices lead to the curve being traversed in a clockwise direction. + +%---------------------------------# +% Boundary Conditions # +%---------------------------------# +\subsubsection{Applying boundary conditions} + +As discussed in \cref{ssec:potentialflow}, we are trying to solve the boundary value problem using the Neumann boundary conditions. +% +As mentioned, we will apply this boundary condition at the control points placed at the center of each panel (\(\overline{\vect{p}}\) in \cref{fig:flatpanelgeometry}). +% +Since the boundary condition states that the normal velocity, due to all contributions, is zero at the control points, we also need to include the freestream contribution to our boundary condition. +% +Putting the surface influence and freestream influences together, we can, for the \(i\)th control point, state our approximate boundary integral equation as + +\begin{equation} + \label{eqn:neumanndiscrete} + \sum_{j=1}^N \left[\vect{K}_{ij} \cdot \hat{\vect{n}}_i \right] + \vect{V}_\infty \cdot \hat{\vect{n}}_i = 0, +\end{equation} + +\noindent Though we often put the freestream component on the right hand side for convenience, leaving us with + +\begin{equation} + \label{eqn:neumann2} + \eqbox{ + \sum_{j=1}^N \vect{K}_{ij}\cdot \hat{\vect{n}}_i = -\vect{V}_\infty \cdot \hat{\vect{n}}_i +} +\end{equation} + +\where \(\vect{K}\) is comprised of what the induced velocity on the \(i\)th control point\sidenote{Note that the \(i\)th control point here is synonymous with the point represented by the variable \(t\) in \cref{eqn:fredholm2}.} due to the \(j\)th segment of the surface (the \(j\)th panel in our case), calculated from the integral term found in our boundary integral equation, \cref{eqn:fredholm2}.%\todo{Find the bug causing blue side notes when an environement gets placed at the end of a section. there's probably a missing explicit color definitions in the side note environment definition.} +% +It is the set of \cref{eqn:neumann2} for each of the control points that will comprise the bulk of our system of equations. + +% \begin{equation} +% \vect{K}_{ij} =||\vect{p}_{j+1} - \vect{p}_j|| \frac{\gamma_j\hat{\vect{V}}(\vect{p}_j, \overline{\vect{p}}_i) + \gamma_{j+1}\hat{\vect{V}}(\vect{p}_{j+1}, \overline{\vect{p}}_i)}{2}. +% \end{equation} +% +% \Cref{eqn:neumanndiscrete} states that at the \(i\)th control point we add together the panel induced velocities normal to the surface as well as the freestream velocity normal to the surface; according to our boundary condition, that summation comes to zero. +% + + +%------------------------------------# +% Calculating Influence Coefficients # +%------------------------------------# +\subsubsection{Calculating Panel Induced Velocities} + + +In order to calculate the panel induced velocities, we want to discretize the vortex distribution along the boundary in a similar fashion to our discretization of the geometry above. +% +In fact, as mentioned, we will split the integral of our boundary integral equation into segments---integrating over each panel. +% +Along each panel then, we need to define a distribution of vortex strengths. +% +There are several options for how we might choose to discretize the vortex distributions along each panel. +% +For example, we may choose to not distribute the strengths and simply use discrete ring vortices along the boundary. +% +Alternatively, we may select the strength of the distribution to be constant along each panel. +% +We may instead select the strength of the distribution to vary linearly along each panel. +% +We could even choose a higher order distribution. +% +For our use case, we will select a linear distribution scheme along each panel, with the panel end points acting as ``nodes'' between which we will integrate. +% +Discretizing the vorticity distribution along the surface into linear segments then gives us an unknown vorticity magnitude, \(\gamma_j\), at each panel endpoint (node). + +We choose a linear distribution along each panel primarily because discrete distributions and constant distributions have or introduce issues\sidenote{Specifically, as mentioned by Katz and Plotkin, discrete distributions are ``inadequate near the stagnation points of a thick airfoil,'' and in practice are used for zero thickness airfoils rather than for closed surfaces. Additionally, constant vortex distributions introduce several issues also discussed by Katz and Plotkin that are solved by moving to a linear distribution scheme.} that are solved by moving to a linear distribution\scite{Katz_2001}. +% +An added benefit is that a linear distribution allows a more accurate solution for a coarser discretization of the geometry than constant strength panels do. +% +We choose not to utilize a higher order method mainly due to the difficulty of integrating our axisymmetric kernel (presented in \cref{sec:ringvortices}). + +Because the surface integrals of velocities induced by axisymmetric vortex rings are exceptionally difficult to solve analytically, we will take a numerical approach. +% +In general, quadrature is the process of approximating an integral of a function using a sum of weighted samples of the function: + +\begin{equation} + \int_a^b f(x) \d x \approx \sum_k^N w_k f(x_k), +\end{equation} + +\where the main task of the setup is to decide where along the integration interval to place the sample points, \(x_k\), and what weights, \(w_k\), to apply to those samples. + +In the nominal case when a panel induces velocity on the surface, but not on itself, we set things up as follows for a given panel and surface point, \(t\): +% +We start with the portion of the surface integral associated with the \(j\)th panel + +\begin{equation} + \int_{\vect{p}_j}^{\vect{p}_{j+1}} \gamma(s) \pd{\hat{\vect{\phi}}(s,t)}{\hat{\vect{n}}_t} \d s. +\end{equation} + +Because the unit normal applies at \(t\), it is a constant in this integral. +% +As such, we can express the integral in terms of the integration of velocities only, which are then multiplied by the components of the normal vector after integration. + +\begin{equation} + \begin{aligned} + \vect{v}_{tj} =&\int_{\vect{p}_j}^{\vect{p}_{j+1}} \gamma(s) \pd{\hat{\vect{\phi}}(s,t)}{\hat{\vect{n}}_t} \d s \\ + =\bigg(&\int_{\vect{p}_j}^{\vect{p}_{j+1}} \gamma(s) \nabla \hat{\vect{\phi}}(s,t) \d s\bigg)\cdot \hat{\vect{n}}_t \\ + =\bigg(&\int_{\vect{p}_j}^{\vect{p}_{j+1}} \gamma(s) \hat{\vect{V}}(s,t) \d s\bigg)\cdot \hat{\vect{n}}_t. + \end{aligned} +\end{equation} + +% +To get the integral in terms of components of velocity, we can split up the integral into its components + +\begin{subequations} + \begin{align} + v_{z_{tj}} &=\left(\int_{\vect{p}_j}^{\vect{p}_{j+1}} \gamma(s) v_z(s,t) \d s \right)n_{i_z},\\ + v_{r_{tj}} &=\left(\int_{\vect{p}_j}^{\vect{p}_{j+1}} \gamma(s) v_r(s,t) \d s\right)n_{i_r}. + \end{align} +\end{subequations} + +Since we are working toward assembling a system of equations, and we have introduced the unknown vortex magnitudes, \(\gamma_j\), which define the vorticity distribution along the boundary, we need to obtain the integrals over the panels in terms of each of the panel node strengths (\(\gamma_j\)). +% +As we perform our numerical integration, the quadrature procedure selects sample points along the range of integration as already mentioned. +% +To make things easier to implement, we will transform our integrals such that the integrator will integrate on the range (0,1) and we will introduce the transformed variable \(\zeta\) as the variable of integration. + +\begin{subequations} + \begin{align} + v_{z_{tj}} &=\left(\Delta s \int_{0}^{1}\gamma(s(\zeta)) v_z(s(\zeta),t) \d \zeta \right)n_{i_z},\\ + v_{r_{tj}} &=\left(\Delta s \int_{0}^{1}\gamma(s(\zeta)) v_r(s(\zeta),t) \d \zeta \right)n_{i_r}. + \end{align} +\end{subequations} + +\where \(\Delta s\) is the length of the range of integration, or panel length. +% +Referencing \cref{fig:integrationsplitmargin}, we see that the quadrature function samples can be split into the influences of each of the panel nodes by a simple geometric weighting:\sidenote{This is made possible due to the linear vortex distribution along a flat panel.} + +\begin{subequations} + \label{eqn:integrationpieces} + \begin{align} + f_j(x_k) &= w_k f(s(\zeta_k),t)&(1-\zeta_k) && \text{due to } \gamma_j \\ + f_{j+1}(x_k) &= w_k f(s(\zeta_k),t)&\zeta_k && \text{due to } \gamma_{j+1}. + \end{align} +\end{subequations} + +\begin{marginfigure} + \input{figures/integration-split-margin.tikz} + \caption{Visual representation of splitting the integral into the portions for each panel node.} + \label{fig:integrationsplitmargin} +\end{marginfigure} + +\noindent In other words, we return a piece of the integral weighted according to the sample point location along the range of integration. +% +Because we transformed the range of integration to (0,1), we can simply take these geometrically proportional weights to be \(1-\zeta\) and \(\zeta\) where \(\zeta\in (0,1)\) for the \(j\)th and \((j+1)\)th nodes, respectively. +% +Note that the \(\gamma_j\) values are also constant relative to \(\zeta\) and are therefore not included in the integrand expressions of \cref{eqn:integrationpieces}. +% +This allows us to pull out all of the \(\gamma_j\) terms which are the unknowns for which we want to solve using the system of equations we are assembling. +% +All together, the unit velocities normal to the \(i\)th panel, induced by the \(j\)th panel (defined by the \(j\)th and \((j+1)\)th nodes), or what we term the influence coefficients, \(IC\), are + +\begin{equation} + \label{eqn:nominalic} + \eqbox{ + \begin{alignedat}{2} + IC_{ij} &= \left(\Delta s_j\sum_k^N w_k v_z(s(\zeta_k),t) (1-\zeta_k)\right) n_{i_z} &&+ \left(\Delta s_j\sum_k^N w_k v_r(s(\zeta_k),t) (1-\zeta_k)\right) n_{i_r}\\ + IC_{i(j+1)} &= \left(\Delta s_j\sum_k^N w_k v_z(s(\zeta_k),t) \zeta_k\right) n_{i_z} &&+ \left(\Delta s_j\sum_k^N w_k v_r(s(\zeta_k),t) \zeta_k\right) n_{i_r},\\ + \end{alignedat} +} +\end{equation} +% +for the \(j\)th and \((j+1)\)th nodes, respectively. + + +In the singular case, where the panel induces velocity on itself, more consideration is required. +% +We first need to remember that we chose the midpoint of each panel to be the control point. +% +Because the expression for induced velocity is singular when the distance between the point of influence and the point being influenced is zero, there is a singularity at the panel midpoint of a panel inducing velocity on its own control point. +% +Knowing beforehand exactly where the singularity lies makes things somewhat easier to approach, but we still need to address the singularity. +% +We will take a separation of singularity approach to calculate the self-induced case. +% +The separation of singularity method is, in brief, to subtract out the singular piece of the integral while solving the integral, then afterward adding back in the singular piece solved analytically to avoid the computational issues associated with the computer attempting to divide by zero. +% +Basically, as the integral tends to positive and negative infinity on either side of the singular point, we cancel out the non-convergent values on either side of the singular point and replace them with an analytic approximation. +% +Mathematically we have the integral + +\begin{equation} + \vect{v}_{jj} = \int_{\vect{p}_j}^{\vect{p}_{j+1}} \gamma(s) I(s) \d s, +\end{equation} + +\where \[I(s) = \pd{\hat{\vect{\phi}}(s,\overline{\vect{p}}_j)}{\hat{\vect{n}}_j}\] +% +We need to subtract off the singular part, \(S\), (inside the integral), and then add back an analytical expression, \(A\), for the integral of subtracted singular part (outside the integral). +% +The other thing we need to do is to tell the quadrature package where the singular point is so that it can avoid placing sample points right on the singularity. +% +Under the hood, the quadrature package actually splits the integral into two, integrating from the start of the integration range to the singular point, then from the singular point to the end of the integration range.\sidenote{Note that the sample points associated with the Gauss-Legendre polynomials do not actually sample the integration range at its endpoints.} + +\begin{equation} + \vect{v}_{jj} = \int_{\vect{p}_j}^{\vect{p}_{j+1}} \gamma(\zeta)(\left(I(s(\zeta),\overline{\vect{p}}_j) - S(s(\zeta),\overline{\vect{p}}_j) \right)\d \zeta + \gamma A(\overline{\vect{p}}_j). +\end{equation} +% +% In practice, we actually want to account for the analytic approximation in the error estimate when using our quadrature approach. +% +% In order to do so, we actually add the analytic part to the integrand, but divide the analytic part by the range of integration in order to not double count it: + +% \begin{equation} +% \int_{\vect{p}_j}^{\vect{p}_{j+1}} \gamma(\zeta) \left(I(s(\zeta),\overline{\vect{p}}_j) - S(s(\zeta),\overline{\vect{p}}_j) + \frac{A(\overline{\vect{p}}_j)}{\Delta s}\right) \d \zeta. +% \end{equation} + +\noindent After these modifications to account for the singularity, the procedure for applying the quadrature is the same as before giving us the influence coefficients for the panel on itself to be + +\begin{equation} + \label{eqn:panelselfic} + \eqbox{ + \begin{aligned} + IC_{ii} =& \Delta s_i\left(\sum_k^N w_k \left[\left(v_z(s(\zeta_k),\overline{\vect{p}}_i)\right)(1-\zeta_k)-\frac{1}{2}S_z(s(\zeta_k),\overline{\vect{p}}_i)\right]+\frac{1}{2}A_z(\overline{\vect{p}}_i) \right) n_{i_z} \\ + &+ \Delta s_i\left(\sum_k^N w_k \left[\left(v_r(s(\zeta_k),\overline{\vect{p}}_i)\right)(1-\zeta_k)-\frac{1}{2}S_r(s(\zeta_k),\overline{\vect{p}}_i)\right] +\frac{1}{2}A_r(\overline{\vect{p}}_i) \right) n_{i_r} \\ + IC_{i(i+1)} =& \Delta s_i\left(\sum_k^N w_k \left[\left(v_z(s(\zeta_k),\overline{\vect{p}}_i)\right)\zeta-\frac{1}{2}S_z(s(\zeta_k),\overline{\vect{p}}_i)\right]+\frac{1}{2}A_z(\overline{\vect{p}}_i) \right) n_{i_z} \\ + &+ \Delta s_i\left(\sum_k^N w_k \left[\left(v_r(s(\zeta_k),\overline{\vect{p}}_i)\right)\zeta-\frac{1}{2}S_r(s(\zeta_k),\overline{\vect{p}}_i)\right]+\frac{1}{2}A_r(\overline{\vect{p}}_i) \right) n_{i_r} \\ + \end{aligned} +} +\end{equation} + +\where\sidenote{Details for how the singular and analytic expressions are derived are provided in \ref{app:separationofsingularity}.} + +\begin{equation} + \begin{aligned} + S_z(\vect{p}_o,\vect{p}) =& \frac{r_o-r}{2\pi\left[\left(z-z_o\right)^2 + \left(r-r_o\right)^2\right] } + -\frac{1}{8\pi r_o} \left[\ln\left(\frac{\left(z-z_o\right)^2 + \left(r-r_o\right)^2}{64r_o^2}\right)\right] \\ + S_r(\vect{p}_o,\vect{p}) =& \frac{z-z_o}{2\pi\left[\left(z-z_o\right)^2 + \left(r-r_o\right)^2\right]}, + \end{aligned} +\end{equation} + +\noindent and + +\begin{equation} + \begin{aligned} + A_z(\vect{p}) =& \frac{1}{4\pi r} \left( 1 + \ln\frac{8 r}{\Delta s}\right) \\ + A_r(\vect{p}) =& 0; + \end{aligned} +\end{equation} + +\noindent and the multiplication by \(1/2\) on the singular and analytic terms is due to the fact that the singular point is half way between the nodes, so each node is responsible for exactly half of the influence. + + + +%---------------------------------# +% Assemble and Solve System # +%---------------------------------# +% \subsection{Assembling and solving a linear system} +\subsubsection{Assembling the linear system} + +To find the strengths of each vortex node that result in a vortex distribution inducing a flow field matching our prescribed body geometry, we need to assemble a system composed of \cref{eqn:neumann2} for each panel. +% +Note, however, that currently our expression for \(\vect{K}\) is indexed according to panel, and contains information about more than one panel node, which we need to remedy in order to get expressions for the individual strengths at each node. +% +This is precisely why we separated out the node influences in the previous subsection. +% +Thus each node has a component of influences associated with each panel to which it is an edge point. +% +For the \(j\)th node then, we can add the contributions due to the \((j-1)\)th and \(j\)th panels for which it is an edge point. +% +This allows us to assemble the influence coefficient matrix based on a node-control point scheme rather than a panel-control point scheme: + +\begin{equation} +\vect{G}_{ij} = + \begin{cases} + IC_{ij} \hfill & \text{for }j=1,N+1 \\ + IC_{ij} + IC_{i(j-1)} & \text{for }2 \leq j \leq N \\ + % \hfill IC_{i(j-1)} & \text{for }j = N+1. \\ + \end{cases} +\end{equation} + +\where \(\vect{G}\) is the \(N \times N+1\) matrix whose elements, \(\vect{G}_{ij}\), are the influence coefficients of the \(j\)th node (\(N+1\) total) on the \(i\)th control point (\(N\) total); and the influence components, \(IC\), are defined in \cref{eqn:nominalic,eqn:panelselfic} for the nominal and self-induced cases, respectively. +% +Since \(\vect{G}\) is not square, as it has one more unknown than boundary conditions, we cannot solve the system directly as is. +% +Fortunately, we also require an additional condition to make things work. + +%---------------------------------# +% Kutta Condition # +%---------------------------------# +\subsubsection{The Kutta Condition} + +One of the shortcomings of using potential flow theory is that by itself, it lacks inherent mechanisms for ensuring the flow leaves the surface of lifting bodies at the correct location and in the correct direction. +% +One solution to this problem is known as the Kutta condition, which can be stated in several equivalent ways. +% +However it is be stated, the Kutta condition requires the flow over a lifting body with a sharp trailing edge to leave the body at the trailing edge in a manner roughly tangent to the trailing edge. +% +Therefore we can artificially enforce conditions that are observed in real, viscous flows at relatively low angles of attack. +% +Just as there are several equivalent ways to state the Kutta condition, there are several ways that the Kutta condition may be implemented. +% +One method is to require zero circulation at the trailing edge. +% +We can enforce this by setting the strengths of the first and last panel nodes to be equal\sidenote{Note that for a sharp trailing edge, where the nodes are coincident, they really should be equal anyway since they occupy the same point in space.} and opposite such that + +\begin{equation} + \gamma_1 + \gamma_N = 0. +\end{equation} +% +In order to make our system square, we simply add the Kutta condition as the \(N+1\)th equation. + +By itself, this version of the Kutta condition can lead to spurious spikes in surface velocity near the trailing edge. +% +In order increase the numerical robustness of the panel method, we apply an additional, indirect Kutta condition by placing an additional control point just inside the interior of the duct trailing edge and define an associated unit normal oriented such that the unit normal is effectively in the direction of the bisection angle of the trailing edge panels. +% +We also place an additional control point inside the center body if it has a blunt trailing edge.\sidenote{We will discuss shortly the case where the center body has a sharp trailing edge.} + + We apply the same boundary condition on these control point as the other control points in that we set the normal velocity induced by the freestream to be equal and opposite to the tangential velocity induced by the body boundaries on the control point. + +\begin{equation} + \sum_{j=1}^{N+1} \gamma_j\vect{G}^\multimapinv_{kj} = - \vect{V}_\infty \cdot \hat{\vect{n}}_k. +\end{equation} + +\where the elements of \(\vect{G}^\multimapinv\) are the expressions defined in \cref{eqn:nominalic}. + +Upon the addition of this equation, however, we find ourselves with insufficient unknowns (one for each body being modeled). +% +To remedy this insufficiency, we simply apply a dummy strength, \(\tau_k\), for the \(k\)th body and set all of its associated influence coefficients, \(\mathcal{T}\), to 1 for the panels of the body it is applied to and zero elsewhere (including itself). + +\begin{equation} + \mathcal{T}_{ik} = + \begin{cases} + 1 & \text{if}~i=k\\ + 0 & \text{otherwise} + \end{cases} +\end{equation} + +We mentioned placing the additional control point just inside the trailing edge. +% +This is done (rather than right at the middle of the trailing edge gap between the trailing edge nodes) to avoid numerical issues if the trailing edge is indeed sharp. +% +We specifically place the node along the line bisecting the trailing edge angle and passing through the point halfway between the trailing edge nodes. +% +The position is calculated as follows + +\begin{subequations} + \begin{align} + z_{cp} = \overline{z}_{TE} - \epsilon \overline{\Delta s}_{TE} \frac{z_\text{diff}}{s_\text{diff}} \\ + r_{cp} = \overline{r}_{TE} - \epsilon \overline{\Delta s}_{TE} \frac{r_\text{diff}}{s_\text{diff}} \\ + \hat{n}_{z_{cp}} = \frac{z_\text{diff}}{s_\text{diff}} \\ + \hat{n}_{r_{cp}} = \frac{r_\text{diff}}{s_\text{diff}} + \end{align} +\end{subequations} + +\where + +\begin{align} + \epsilon &= 0.05 \\ + \overline{z}_{TE} &= \frac{z_1+z_{N+1}}{2}\\ + \overline{r}_{TE} &= \frac{r_1+r_{N+1}}{2}\\ + \overline{\Delta s}_{TE} &= \frac{\Delta s_1+\Delta s_{N}}{2}\\ + z_\text{diff} &= \Delta z_{N} - \Delta z_{1} \\ + r_\text{diff} &= \Delta r_{N} - \Delta r_{1} \\ + s_\text{diff} &= \left[ z_\text{diff}^2 + r_\text{diff}^2\right]^{1/2} +\end{align} + +\where the \(\Delta (\cdot)\) lengths are calculated in the clockwise direction as before, and \(\epsilon\) is chosen for generally good numerical behavior. + +\begin{figure} + \centering + % \includegraphics[width=3in]{/figures/internal-panel-placement} + \input{figures/internal-controlpoint-placement.tikz} + \caption{Geometric explanation of internal control point placement.} + \label{fig:pseudocplocation} +\end{figure} + +\subsubsection{Additional Considerations for Open Bodies} + +The Kutta condition we have applied assumes that the trailing edge is both sharp and thin. +% +This approximation tends to be relatively good for a large variety of geometries, and is well behaved numerically, but eventually breaks down. +% +Specifically in the case of blunt trailing edges, when the trailing edge panel nodes are not coincident, the flow field can tend to flow into the inside of the body through the open trailing edge. +% +To prevent this, we will add a trailing edge panel with distribution strengths determined from the adjacent panels, similar to the method used by XFOIL\scite{Xfoil,mfoil} for blunt trailing edges. + +For any trailing edge panel, we will set a vortex and source distribution along the panel based on its orientation to the adjacent panels and the distribution strengths at the shared node locations: + +\begin{align} + \gamma_{TE_j} &= \left(\hat{\vect{n}}_{TE_j} \cdot \hat{\vect{n}}_{\text{adj}_j}\right)\gamma_{\text{adj}_j} \\ %- \left|\hat{\vect{n}}_{TE} \times \hat{\vect{n}}_{\text{adj}_j}\right|\sigma_{\text{adj}_j} \\ + \sigma_{TE_j} &= -\left|\hat{\vect{n}}_{TE_j} \times \hat{\vect{n}}_{\text{adj}_j}\right|\gamma_{\text{adj}_j}. %+ \left(\hat{\vect{n}}_{TE} \cdot \hat{\vect{n}}_{\text{adj}_j}\right)\sigma_{\text{adj}_j} +\end{align} + +\where the ``adj'' subscript indicates the adjacent panel. +% +Based on these definitions of strength distributions across the trailing edge panels, we can take the unit strengths (relative to the unknown distribution strengths on the shared nodes) to be + +\begin{align} + % \pd{\gamma_{TE_j}}{\sigma} &= - \left|\hat{\vect{n}}_{TE} \times \hat{\vect{n}}_{\text{adj}_j}\right| \\ + \hat{\gamma}_{TE_j} &= \hat{\vect{n}}_{TE_j} \cdot \hat{\vect{n}}_{\text{adj}_j} \\ + % \pd{\sigma_{TE_j}}{\sigma} &= \left(\hat{\vect{n}}_{TE} \cdot \hat{\vect{n}}_{\text{adj}_j}\right) \\ + \hat{\sigma}_{TE_j} &= -\left|\hat{\vect{n}}_{TE_j} \times \hat{\vect{n}}_{\text{adj}_j}\right|. +\end{align} + +For trailing edge panels which have a node on the axis of rotation, for example, in the case of a center body with a blunt trailing edge, we set the strength (\(\gamma_{TE_j}\)) and derivative (\(\partial \gamma_{TE_j}/\partial \gamma\)) of the vortex distribution at the axis to zero. +% +Since we do not have an adjacent panel on the axis side of such a trailing edge panel, we will simply use the same adjacent panel to calculate values for both source nodes of the trailing edge panel.\sidenote{We are effectively defining a constant strength source panel in this case.} + +To add the trailing edge panels to the linear system we do not want to add any more equations, because we have defined the trailing edge panel strengths according to unknowns we already have in the system. +% +As such, we simply need to augment the influence coefficients for the panels adjacent to the trailing edge panels, since all the trailing edge panel information comes directly from those adjacent panels. +% +For each panel with a node bordering a trailing edge panel, we add the following to the unit induced velocity on every control point + +\begin{equation} + \hat{\vect{V}}^\gamma_{i{TE}_j} \stackrel{+}{=} \hat{\vect{V}}^\gamma_{iTE_j}\hat{\gamma}_{TE_j} + \hat{\vect{V}}^\sigma_{iTE_j}\hat{\sigma}_{TE_j}. +\end{equation} +% +In other words, we add the unit induced velocity associated with the trailing edge node to the panel sharing that node scaled by how aligned the trailing edge and adjacent panel are. +% +As an example, if the duct had a blunt trailing edge, we would define a trailing edge panel spanning the gap from the first to the last node in the airfoil geoemetry. +% +We would then define the strengths and changes in strength relative to the first and last panels of the geometry (those at the trailing edge). +% +Finally, we would augment the unit induced velocity due to the first and last nodes by the above expressions for the trailing edge gap panel we defined. +% +We can apply this to the velocity directly, or we can simply add the velocities dotted with the control point normal vectors to the influence coefficient matrix after the fact. + +\begin{equation} + \label{eqn:teaicaugment} + \eqbox{ + \vect{G}_{ij} \stackrel{+}{=} \left[\hat{\vect{V}}^\gamma_{iTE_j}\hat{\gamma}_{TE_j} + \hat{\vect{V}}^\sigma_{iTE_j}\hat{\sigma}_{TE_j}\right]\cdot\hat{\vect{n}}_i, +} +\end{equation} + +\where the \(j\)th components of unit induced velocity, \(\hat{\vect{V}}\), are calculated from \cref{eqn:nominalic}.\sidenote{Exchanging the vortex ring induced unit velocities for those induced by source rings for the source terms in \cref{eqn:teaicaugment}.} + + + +%-----------------------------------------# +% Prescribed Nodes # +%-----------------------------------------# +\subsubsection{Additional Considerations for Nodes on the Axis of Revolution} + +As we have already discussed, annular airfoils with non-zero cambered cross-sections require the addition of a Kutta condition. +% +Bodies of revolution do not require such a condition in an axisymmetric scheme, but rather have other unique features to consider. +% +Specifically, bodies of revolution will have a panel node on the axis of revolution (at the leading edge). +% +As we will see in the definition of unit induced velocity (\cref{eqn:ringvortexinducedvelocity}), if an influence point lies on the axis, that is if \(r_o = 0\), then the induced velocity becomes infinite. +% +In reality, the induced velocity from such a point is zero. +% +Therefore in our system, we will need to prescribe the strengths of panel nodes on the axis of rotation to be zero strength. +% +In order to achieve this, we take an approach similar to applying the Kutta condition: we simply add the equation + +\begin{equation} + \gamma_{LE}^{cb} = 0 +\end{equation} +% +to the system, where \(\gamma_{LE}^{cb}\) is the prescribed node strength for the center body leading edge. +% +This additional equation also solves the issue of the matrix not being square due to there still being \(N+1\) nodes and only \(N\) panels for a body of revolution. +% +If the center body trailing edge is sharp, then we have an additional node on the axis of rotation and also need to prescribe its strength to zero. +% +As it turns out, we do not actually need the additional internal control point for bodies of revolution, but it doesn't hurt us to have it implemented. +% +In the case of a closed trailing edge, we will effectively remove the internal control point and substitute its equation with an equation prescribing the trailing edge node strength to be zero like the leading edge node: + +\begin{equation} + \gamma_{TE}^{cb} = 0. +\end{equation} + +\noindent Since we still have an additional equation, we will keep the dummy variable in place simply to keep the system square. + + +%---------------------------------# +% SOLVE # +%---------------------------------# +\subsubsection{Solving the linear system} + +To avoid confusion, we will let \(\vect{G}^*\) represent the influence matrix augmented by the Kutta condition, additional trailing edge control point equations, and any prescribed node equations. +% +Because the overall coupled solver in DuctAPE will need to solve the linear system for the panel method many times, it is advantageous to do as much precomputation as possible for the panel method. +% +The first thing that we will note is that the body geometry will not change throughout the coupled solve. +% +This means that the influence matrix \(\vect{G}^*\) can be fully precomputed and stored. +% +Due to this fact, we can also speed up the multiple linear solves by performing a Lower-Upper (LU) decomposition of \(\vect{G}^*\) such that + +\begin{equation} + \vect{G}^* = \vect{LU} +\end{equation} + +\where \(\vect{L}\) and \(\vect{U}\) are the lower and upper triangular matrices of the LU decomposition. +% +By precomputing the LU decomposition, we can speed up the solution process of the linear system, which can now be expressed as + +\begin{equation} + \vect{LU}\vect{\gamma} = \vect{b} +\end{equation} + +\where \(\vect{b}=\left(-\vect{V}_\infty \cdot \hat{n}\right)\). +% +We can solve this system through the forward and backward substitution in two steps: +\begin{enumerate} + \item Solve \(\vect{L}\vect{y} = \vect{b}\) for \(\vect{y}\). + \item Solve \(\vect{U}\vect{\gamma} = \vect{y}\) for \(\vect{\gamma}\). +\end{enumerate} +% +Although this is a two-step process, it ends up being numerically more efficient than a more direct system solve method, and again has the benefit of being able to be precomputed and used repeatedly. + + + +%---------------------------------# +% Body Induced Velocities # +%---------------------------------# +\subsection{Obtaining Body-induced Velocities} + +\subsubsection{Velocity Tangent to the Body Surface} +\label{sssec:vtanbody} + +After we have solved for the node strengths, \(\vect{\gamma}\), that coincide with our selected body geometry, we desire to use those strengths to find the velocity somewhere in the field. +% +We are especially interested in finding the surface velocity on the body and using it to determine the pressure distribution on the body surface. +% +In order to obtain the surface velocity, we need to find the velocity induced tangent to the panels. +% +We can do so by applying the same kind of Fredholm integral expression, but this time taking the tangential derivative, and remembering that the jump term across the boundary for the tangential velocity is \(-\gamma/2\) outward and \(\gamma/2\) inward\scite{Martensen_1971}: + +\begin{subequations} + \label{eqn:fredholmtan} + \begin{align} + v_\text{tan}(t) = \pm \frac{\gamma(t)}{2} + \oint_\mathcal{S}& \gamma(s) \pd{\hat{\vect{\phi}}(s,t)}{\hat{\vect{t}}_t} \d s +\pd{\vect{\phi}_\infty}{\hat{\vect{t}}_t} \\ + & \text{-- or --} \notag\\ + v_\text{tan}(t) = \pm \frac{\gamma(t)}{2} + \oint_\mathcal{S} &\gamma(s) \hat{\vect{V}}(s,t)\cdot\hat{\vect{t}}(t) \d s + \vect{V}_\infty\cdot\hat{\vect{t}}(t). + \end{align} +\end{subequations} + +We can therefore use the same discretization scheme and induced velocity expressions as we did to create our linear system. +% +To simplify things further, we can also simply take the sum of the full induced velocities on the control points and the magnitude will be the surface velocity. +% +This is due to the fact that we solved for the vortex strengths based on the boundary condition of zero flow normal to the control points; therefore when all the velocity components are summed, all that is left is the velocity tangent to the surface.\sidenote{Remember that the jump term is a jump in tangential velocity and the linear system solution only gave us a magnitude, so before adding the jump term in, we need to make sure to separate it into components tangent to the panel.} + +\begin{equation} + v_{\text{tan}_i} = \left| \pm\frac{\overline{\gamma}_i}{2}\hat{\vect{t}}_i + \sum_{j=1}^{N+1} \left[\gamma_j\vect{M}_{ij}\right] + \vect{V}_\infty \right|, +\end{equation} + +\where + +\begin{equation} + \overline{\gamma}_i = \frac{\gamma_i + \gamma_{i+1}}{2}, +\end{equation} +% +and + +\begin{equation} +\vect{M}_{ij}= + \begin{cases} + IC^t_{ij} \hfill & \text{for }j=1,N+1 \\ + IC^t_{ij} + IC^t_{i(j-1)} & \text{for }2 \leq j \leq N, + % \hfill IC_{i(j-1)} & \text{for }j = N+1. \\ + \end{cases} +\end{equation} + +\where for the nominal case, the components of the influence coefficients are defined identically to \cref{eqn:nominalic}, but we keep them in vector format for simplicity: + +\begin{equation} + \begin{alignedat}{2} + IC^t_{ij} &= \left(\Delta s_j\sum_k^N w_k v_z(s(\zeta_k),t) (1-\zeta_k)\right) &&+ \left(\Delta s_j\sum_k^N w_k v_r(s(\zeta_k),t) (1-\zeta_k)\right) \\ + IC^t_{i(j+1)} &= \left(\Delta s_j\sum_k^N w_k v_z(s(\zeta_k),t) \zeta_k\right) &&+ \left(\Delta s_j\sum_k^N w_k v_r(s(\zeta_k),t) \zeta_k\right) . + \end{alignedat} +\end{equation} + +\noindent For the self-induced case, again, the expressions are identical to \cref{eqn:panelselfic}, but again we keep things in vector format rather than dotting with the normal: + +\begin{equation} + \begin{aligned} + IC^t_{ii} =& \left(\Delta s_i\sum_k^N w_k \left[v_z(s(\zeta_k),\overline{\vect{p}}_i)-S_z(s(\zeta_k),\overline{\vect{p}}_i)+\frac{A_z(\overline{\vect{p}}_i)}{\Delta s_i}\right] (1-\zeta_k)\right) \\ + &+ \left(\Delta s_i\sum_k^N w_k \left[v_r(s(\zeta_k),\overline{\vect{p}}_i)-S_r(s(\zeta_k),\overline{\vect{p}}_i)+\frac{A_r(\overline{\vect{p}}_i)}{\Delta s_i}\right] (1-\zeta_k) \right) \\ + IC^t_{i(i+1)} =& \left(\Delta s_i\sum_k^N w_k \left[v_z(s(\zeta_k),\overline{\vect{p}}_i)-S_z(s(\zeta_k),\overline{\vect{p}}_i)+\frac{A_z(\overline{\vect{p}}_i)}{\Delta s_i}\right] \zeta_k \right) \\ + &+ \left(\Delta s_i\sum_k^N w_k \left[v_r(s(\zeta_k),\overline{\vect{p}}_i)-S_r(s(\zeta_k),\overline{\vect{p}}_i)+\frac{A_r(\overline{\vect{p}}_i)}{\Delta s_i}\right] \zeta_k \right) . + \end{aligned} +\end{equation} +% +Note that the coefficients, \(\vect{M}\), along with the system influence coefficients, \(\vect{G}^*\), can be precomputed and stored, although there is really no need for an LU-decomposition for \(\vect{M}\) as there is no linear solve, but rather a direct matrix-vector multiplication to calculate the tangential velocity. +% +In addition, the procedure in the presence of a trailing edge gap panel is identical to that presented for the normal induced velocities, with the exception already discussed here: that no dot product need be taken. + +\subsubsection{Velocity at Arbitrary Points in Space} + +For arbitrary points in space, the procedure for obtaining velocities is nearly identical, with the exceptions that there will be no self-induced or jump terms off the body surface, and we need not dot the components with any unit vector, as we typically want to know the velocity components in the global reference frame. + +\begin{subequations} + \label{eqn:fredholmarbitrary} + \begin{align} + \vect{V}_\text{field}(\vect{q}) = \oint_\mathcal{S}& \gamma(s) \nabla \vect{\phi}(s,\vect{q}) \d s + \nabla \vect{\phi}_\infty \\ + & \text{-- or --} \notag\\ + \vect{V}_\text{field}(\vect{q}) = \oint_\mathcal{S} &\gamma(s) \vect{V}(s,\vect{q}) \d s + \vect{V}_\infty. + \end{align} +\end{subequations} + +We can still use the same discretization scheme and induced velocity expressions as we did to create our linear system, and body surface velocity calculations, but this time, instead of dotting the velocity vector with some vector, we will keep things in a vector format. +% +In other words, we will keep the axial and radial components of induced velocity separate: + +\begin{equation} + \vect{V}_\text{field}(\vect{q}) = \vect{M}\vect{\gamma} + \vect{V}_\infty. +\end{equation} + +\where + +\begin{equation} +\vect{M}_{j}= + \begin{cases} + IC^f_{j} \hfill & \text{for }j=1,N+1 \\ + IC^f_{j} + IC^f_{j-1} & \text{for }2 \leq j \leq N, + \end{cases} +\end{equation} + +\where + +\begin{equation} + \begin{aligned} + IC^f_{j} &= \left[\Delta s_j\sum_k^N w_k v_z(s(\zeta_k),\vect{q}) (1-\zeta_k), \Delta s_j\sum_k^N w_k v_r(s(\zeta_k),\vect{q}) (1-\zeta_k)\right] \\ + IC^f_{j+1} &=\left[ \Delta s_j\sum_k^N w_k v_z(s(\zeta_k),\vect{q}) \zeta_k, \Delta s_j\sum_k^N w_k v_r(s(\zeta_k),\vect{q}) \zeta_k\right]. + \end{aligned} +\end{equation} + +%---------------------------------# +% Vortex Induced Velocity # +%---------------------------------# +\subsection{Ring Vortex Induced Velocities} +\label{ssec:ringvortices} + +We still have not defined the expression for the unit induced velocity due to a free vortex, \(\hat{\vect{V}}(s,t)\). +% +This section covers the derivation of the induced velocity due to ring vortices, or in other words, axisymmetric free vortices. +% +To derive an expression for the unit induced velocity due to a ring vortex, let us begin by defining some vector potential, \(\vect{\psi}\), such that\sidenote{remembering the vector identity \(\nabla \cdot \nabla \times \vect{\psi} = 0\).} + +\begin{equation} + \vect{V} = \nabla \times \vect{\psi}, +\end{equation} +% +and + +\begin{equation} + \nabla \cdot \vect{\psi} = 0, +\end{equation} +% +or in other words, \(\vect{\psi}\) is a divergence free vector field.\sidenote{Therefore automatically satisfying continuity.} + +Next we take the definition of vorticity (vorticity is the curl of the velocity) and plug in our expression for \(\vect{\psi}\): + +\begin{equation} + \begin{aligned} + \vect{\omega} &= \nabla \times \vect{V} \\ + &= \nabla \times \left( \nabla \times \vect{\psi} \right) \\ + &= \nabla \left(\nabla \cdot \vect{\psi} \right) - \nabla^2 \vect{\psi} && \text{(vector identity)}. + \end{aligned} +\end{equation} +% +Since we defined \(\vect{\psi}\) to be divergence free, our expression for vorticity simplifies to the Poisson equation + +\begin{equation} + \vect{\omega} = - \nabla^2 \vect{\psi}. +\end{equation} + +We can apply a Green's function in order to solve for \(\vect{\psi}\) in three dimensions, where the known Green's function\sidenote{See nearly any math text covering partial differential equation solution methods.} takes the form of + +\begin{equation} + \mathcal{G} = \frac{-1}{4\pi |\vect{r}|}, +\end{equation} + +\where \(|\vect{r}|\) is the Euclidean distance from the point of influence and the point of interest. +% +Applying this Green's function to the solution of \(\vect{\psi}\) yields + +\begin{equation} + \label{eqn:psi1} + \vect{\psi} = \frac{1}{4\pi} \int_{\mathcal{V}} \frac{\vect{\omega}(\vect{q})}{|\vect{r}|} \d^3s. +\end{equation} + + +Now that we have a fundamental expression for \(\vect{\psi}\), let us look at the case for a vortex ring. +% +We begin with some assumptions about the vortex ring that follow from \cref{asm:axisymmetric}. + +% \newpage % weird split +\begin{assumption}{} + \asm{The vortex ring is circular, such that the ring radius is constant. + \[r_o = \text{constant}\]} + \vspace*{-\baselineskip} +\end{assumption} + +\begin{assumption}{} + \asm{The vortex ring circulation is constant and in the tangential direction + \[\vect{\Gamma} = \gamma \hat{\vect{e}}_\theta\]} + \vspace*{-\baselineskip} +\end{assumption} +% +These assumptions formalize our axisymmetric assumption somewhat, and from them we can conclude that the vortex ring has no influence in the tangential direction, \(\hat{\vect{e}}_\theta\). + +\begin{figure}[h!] + \centering + \input{figures/vortexringcoordinatesystem.tikz} + \caption{Coordinate system for vortex ring induced velocity.} + \label{fig:vortexringgeom} +\end{figure} + +In \cref{fig:vortexringgeom} we see the coordinate system we will be using going forward. +% +Without loss of generality, we will set the field point, \(\vect{p}\), to be on the \(\theta = 0\) plane. +% + +Putting the solution to Poisson's equation in terms of our coordinate system gives + +\begin{equation} + \label{eqn:psi2} + \vect{\psi} = \frac{1}{4\pi} \int_{\mathcal{V}} \frac{\vect{\omega}(\vect{x}')}{|\vect{p}-\vect{p}'|} r_o \d\theta' \d{r'} \d{z'}. +\end{equation} + +For a vortex ring, which is infinitesimally thin in the \(\hat{\vect{e}}_r\) and \(\hat{\vect{e}}_z\) directions, we can define the vorticity of the ring to be + +\begin{equation} + \vect{\omega}(\vect{p}) = \gamma \delta(z-z_o) \delta(r-r_o) \hat{\vect{e}}_\theta. +\end{equation} + +\where \(\delta\) is the Dirac delta function. +% +Plugging this expression in for vorticity, gives + +\begin{equation} + \label{eqn:psi3} + \begin{aligned} + \vect{\psi} &= \frac{1}{4\pi} \int_{\mathcal{V}} \frac{\gamma \delta(z-z_o) \delta(r-r_o) \hat{\vect{e}}_\theta(\theta')}{|\vect{p}-\vect{p}'|} r_o \d\theta' \d{r'} \d{z'} \\ + \vect{\psi} &= \frac{1}{4\pi} \int_{-\pi}^{\pi} \frac{\gamma \hat{\vect{e}}_\theta(\theta')}{|\vect{p}-\vect{p}'|}r_o \d\theta', + \end{aligned} +\end{equation} +% +which we can simplify by taking the constants out of the integral: + +\begin{equation} + \label{eqn:psi4} + \vect{\psi} = \frac{\gamma r_o}{4\pi} \int_{-\pi}^{\pi} \frac{ \hat{\vect{e}}_\theta(\theta')}{|\vect{p}-\vect{p}'|} \d\theta'. +\end{equation} + +Next, let us tackle the denominator of the integrand, which is the Euclidean distance between a point on the vortex ring and a point we have chosen to be on the \(\theta=0\) plane. +% +We apply the distance formula, for which we need to find the individual differences in each coordinate position. +% +To obtain the Euclidean distance, it may be easier to momentarily think in terms of Cartesian coordinates, keeping the \(z\)-direction the same. +% +Thus the length in the \(z\)-direction is simply the difference in the \(z\)-coordinates, \(z-z_o\). +% +To get the \(x\) and \(y\) distances, we require slightly more consideration. +% +If we let the \(y\)-direction be normal to the \(x-z\) plane (the \(\theta = 0\) plane) on which the field point is defined, +then we let the \(y\) component of the field point be \(y = 0\), +which means the distance in the \(y\)-direction is simply the position of the point on the ring, \(y_o\). +% +At a given \(\theta_o\), the distance in the \(y\)-direction will be \(y_o = r_o \sin\theta_o\); \(\theta\) being right hand positive taken about the \(z\)-axis. +% +In the \(x\)-direction, we see that at the field point, the \(x\)-position is simply \(r\), since the point lies on the \(x-z\) plane. +% +For the point on the vortex ring, we see that similar to the \(y\)-direction, the \(x\)-position is \(x_o = r_o \cos\theta_o\). +% +Before putting everything together, let us apply a normalization that will prove to be convenient in our notation later. +% +We will normalize the positions of the points by the vortex ring radius. +% +We do this by multiplying by \(\nicefrac{r_o}{r_o}=1\) giving the points in Cartesian coordinates as + +\begin{align} + \vect{p} &= r_o\left[\frac{z}{r_o} \hat{\vect{e}}_z,~ 0 \hat{\vect{e}}_y,~ \frac{r}{r_o}\hat{\vect{e}}_x\right] \\ + \vect{p}_o &= r_o\left[\frac{z_o}{r_o} \hat{\vect{e}}_z,~ \sin\theta_o \hat{\vect{e}}_y,~ \cos\theta_o\hat{\vect{e}}_x\right] +\end{align} + +Putting all of these together we have + +\begin{equation} + \label{eqn:euclideandistance1} + |\vect{p}-\vect{p}_o| = r_o \left[\left(\frac{z-z_o}{r_o}\right)^2 + (\sin\theta_o)^2 + \left(\frac{r}{r_o}-\cos\theta_o\right)^2 \right]^{1/2}. +\end{equation} + +To help clean up the notation, we will introduce the following normalized variables. + +\begin{align} + \xi &= \frac{z - z_o}{r_o} \\ + \rho &= \frac{r}{r_o}. +\end{align} +% +In addition, we can simplify the radicand of our Euclidean distance expression by expanding the last term and applying the trigonometric identity \(\sin^2\theta + \cos^2\theta =1\): + +\begin{equation} + \begin{aligned} + \xi^2 &+ \sin^2\theta_o + \left(\rho-\cos\theta_o\right)^2 \\ + \xi^2 &+ \sin^2\theta_o + \rho^2+\cos^2\theta_o-2\rho\cos\theta_o \\ + \xi^2 &+ \cancelto{1}{\left(\sin^2\theta_o + \cos^2\theta_o\right)} + \rho^2-2\rho\cos\theta_o && (\text{trig identity}) \\ + \xi^2 &+ \rho^2 + 1 -2\rho\cos\theta_o \\ + \end{aligned} +\end{equation} +% +With this simplified radicand, \cref{eqn:euclideandistance1} becomes + +\begin{equation} + \label{eqn:euclideandistance2} + |\vect{p}-\vect{p}_o| = r_o \left[ \xi^2 + \rho^2 + 1 -2\rho\cos\theta_o \right]^{1/2}, +\end{equation} +% +which if we plug back in to our full expression for \(\vect{\psi}\) (\cref{eqn:psi4}) we have + +\begin{equation} + \label{eqn:psi5} + \vect{\psi} = \frac{\gamma}{4\pi} \int_{-\pi}^{\pi} \frac{ \hat{\vect{e}}_\theta(\theta')}{\left[ \xi^2 + \rho^2 + 1 -2\rho\cos\theta' \right]^{1/2}} \d\theta'. +\end{equation} + +We now will apply one more advantage of our axisymmetric assumption, which is that both the potential and velocity fields are axisymmetric. +% +Because the field point is set, without loss of generality, on the \(x-z\) (or \(\theta=0\)) plane, we can take the radially induced velocity at the field point to be only in the \(x\)-direction, and the tangential component to be only in the \(y\)-direction. +% +Therefore we make take \(\hat{\vect{e}}_\theta\) to be its \(y\) component: \(\cos\theta\hat{\vect{e}}_y\). +% +Likewise, \(\hat{\vect{e}}_r\) can be replaced with its \(x\)-component: \(\cos\theta\hat{\vect{e}}_x\). +% +Conveniently, this allows us to perform one integration over \(\theta\) as the single variable rather than having to perform a double integration of \(x\) and \(y\) thereby reducing our expression for \(\vect{\psi}\) to only the tangential component, \(\psi_\theta\). +% +Therefore we replace the \(\hat{\vect{e}}_\theta(\theta')\) in the numerator of \cref{eqn:psi5} with \(\cos(\theta')\) to arrive at the expression for the tangential component of \(\vect{\psi}\), + +\begin{equation} + \psi_\theta(\vect{x},\vect{x}_o) = \frac{\gamma}{4\pi} \int_{-\pi}^{\pi} \frac{ \cos(\theta')}{\left[ \xi^2 + \rho^2 + 1 -2\rho\cos\theta' \right]^{1/2}} \d\theta'. +\end{equation} + +We are now left with a simplified expression for \(\psi\), but that is still a relatively difficult integral to implement numerically, and perhaps more difficult to approach analytically. +% +To make our lives easier, we are going to get our expression in terms of elliptic integrals, which are far simpler to implement numerically. +% +We can make this transformation by first making a slight change to the bounds of integration, taking advantage of the fact that the integrand is an even function. + +\begin{equation} + \psi_\theta(\vect{x},\vect{x}_o) = \frac{\gamma}{2\pi} \int_{0}^{\pi} \frac{ \cos(\theta')}{\left[ \xi^2 + \rho^2 + 1 -2\rho\cos\theta' \right]^{1/2}} \d\theta'. +\end{equation} +% +Next, we will apply the substitution + +\begin{align} + \label{eqn:sub1} + \theta' &= 2\varphi \\ + \d\theta' &= 2\d\varphi, +\end{align} +% +noting the bounds of integration need to be divided by 2 as well, and changed to \([0,~\pi/2]\). +% +Applying \cref{eqn:sub1} and the trigonometric identity \(\cos(2\varphi) = 2\cos^2(\varphi)-1\) gives + +\begin{equation} + \begin{aligned} + \psi_\theta(\vect{x},\vect{x}_o) &= \frac{\gamma}{\pi} \int_{0}^{\frac{\pi}{2}} \frac{ 2\cos^2(\varphi)-1}{\left[ \xi^2 + \rho^2 + 1 - 4\rho\cos^2\varphi + 2\rho\right]^{1/2}} \d\varphi \\ + &= \frac{\gamma}{\pi} \int_{0}^{\frac{\pi}{2}} \frac{ 2\cos^2(\varphi)-1}{\left[ \xi^2 + (\rho + 1)^2 - 4\rho\cos^2\varphi \right]^{1/2}} \d\varphi. + \end{aligned} +\end{equation} +% +We will immediately apply another substitution + +\begin{equation} + \cos\varphi = t +\end{equation} + +\begin{equation} + \label{eqn:sub2} +\begin{aligned} + \d\varphi &= \frac{\d{t}}{-\sin{\varphi}} \\ + &= -\frac{\d{t}}{\sqrt{1-\cos^2{\varphi}}} \\ + &= -\frac{\d{t}}{\sqrt{1-t^2}}, +\end{aligned} +\end{equation} +% +where \(\cos{(\pi/2)}=0\) and \(\cos(0) = 1\) so we will flip the bounds and cancel out the negative in \cref{eqn:sub2}: + +\begin{equation} + \psi_\theta(\vect{p},\vect{p}_o) = \frac{\gamma}{\pi} \int_{0}^{1} \frac{ 2t^2 -1}{\left[ \xi^2 + (\rho + 1)^2 - 4\rho t^2 \right]^{1/2} \left[1-t^2\right]^{1/2}} \d{t}. +\end{equation} +% +Next we multiply by the top and bottom of the integrand by \(\left[(\rho+1)^2 + \xi^2\right]^{-1/2}\), noting that this term is constant relative to the integral and can therefore be brought outside. + +\begin{equation} + \psi_\theta(\vect{p},\vect{p}_o) = \frac{\gamma}{\pi \left[(\rho+1)^2 + \xi^2\right]^{1/2}} \int_{0}^{1} \frac{ 2t^2 -1}{\left[1 - \frac{4\rho t^2}{(\rho+1)^2 + \xi^2} \right]^{1/2} \left[1-t^2\right]^{1/2}} \d{t}. +\end{equation} +% +we now let + +\begin{equation} + \label{eqn:mdef} + m = \frac{4\rho}{(\rho+1)^2 + \xi^2} +\end{equation} +% +which cleans things up to be + +\begin{equation} + \psi_\theta(\vect{p},\vect{p}_o) = \frac{\gamma}{\pi \left[(\rho+1)^2 + \xi^2\right]^{1/2}} \int_{0}^{1} \frac{ 2t^2 -1}{\left[1 - m t^2 \right]^{1/2} \left[1-t^2\right]^{1/2}} \d{t}. +\end{equation} +% +Our integrand is now almost matching to elliptic integrals. +% +We just need to apply some algebraic manipulations to the numerator to match elliptic integral expressions of the form + +\begin{align} + \mathcal{K}(m) &= \int_0^1 \frac{\d{t}}{\sqrt{(1-t^2)(1-mt^2)}} \\ + \mathcal{E}(m) &= \int_0^1 \frac{\sqrt{1-mt^2}}{\sqrt{(1-t^2)}}\d{t} +\end{align} + +\where \(\mathcal{K}(m)\) and \(\mathcal{E}(m)\) are elliptic integrals of the first and second kind, respectively. +% +Making the required algebraic manipulations yields + +\begin{equation} +\psi_\theta(\vect{p},\vect{p}_o) = -\frac{\gamma}{\pi \left[(\rho+1)^2 + \xi^2\right]^{1/2}} \int_{0}^{1} \frac{ 1 - \frac{2}{m} + \frac{2}{m} (1 - mt^2) }{\left[1 - m t^2 \right]^{1/2} \left[1-t^2\right]^{1/2}} \d{t}. +\end{equation} +% +Splitting the integrand up we have + +\begin{equation} + \begin{split} + \psi_\theta(\vect{p},\vect{p}_o) = -\frac{\gamma}{\pi \left[(\rho+1)^2 + \xi^2\right]^{1/2}} \bigg[ + & \left(1-\frac{2}{m}\right) \int_{0}^{1} \frac{\d{t} }{\left[1 - m t^2 \right]^{1/2} \left[1-t^2\right]^{1/2}} \\ + & +\frac{2}{m} \int_{0}^{1} \frac{ [1 - mt^2]^{1/2} }{\left[1-t^2\right]^{1/2}} \d{t}\bigg]. + \end{split} +\end{equation} +% +Each of the integrals is now in the form of an elliptic integral. +% +Making the substitution for elliptic integrals gives + +\begin{equation} + \psi_\theta(\vect{p},\vect{p}_o) = -\frac{\gamma}{\pi \left[(\rho+1)^2 + \xi^2\right]^{1/2}} \left[ \frac{2}{m} \mathcal{E}(m) -\left(\frac{2}{m}-1\right)\mathcal{K}(m) \right]. +\end{equation} + +\subsubsection{General Form of Induced Velocities} + +The next step is to obtain the induced velocity from the vector potential, \(\psi_\theta(\vect{p},\vect{p}_o)\). +% +Remember that \(\vect{V} = \nabla \times \vect{\psi}\), which expands in cylindrical coordinates to + +\begin{equation} + \label{eqn:delxpsicyl} + \begin{split} + \vect{V} &= \left(\frac{1}{r}\pd{\psi_z}{\theta} - \pd{\psi_\theta}{z}\right)\hat{\vect{e}}_r \\ + &+ \left(\pd{\psi_r}{z} - \pd{\psi_z}{r}\right)\hat{\vect{e}}_\theta \\ + &+\frac{1}{r} \left(\pd{(r \psi_\theta)}{r} - \frac{\psi_r}{\theta}\right)\hat{\vect{e}}_z. + \end{split} +\end{equation} +% +Since our axisymmetric assumption allowed us to eliminate all but the tangential component of the vector potential, all but the \(\psi_\theta\) components in \cref{eqn:delxpsicyl} disappear, leaving us with the following induced velocities in the \(r\)- and \(z\)-directions. + +\begin{subequations} +\begin{align} + v_z &= \frac{1}{r}\pd{(r\psi_\theta)}{r}, \\ + v_r &= -\pd{\psi_\theta}{z}. +\end{align} +\end{subequations} + +After some tedious algebra (see \cref{app:ringvortexinducedvelocities}), +we arrive at the following expressions for the unit\sidenote{In other words, we have set \(\gamma=1\)} induced velocity due to a vortex ring. +\begin{subequations} + \label{eqn:ringvortexinducedvelocity} +\begin{eqboxed}{\eqbox}{align} + \label{eqn:ringvortexinducedvelocityaxial} + v_{z}^\gamma &= \frac{1}{2 \pi r_o} \frac{1}{D_1} \left[ \mathcal{K}(m) - \left( 1 + \frac{2(\rho-1)}{D_2} \right) \mathcal{E}(m) \right] \\ + \label{eqn:ringvortexinducedvelocityradial} + v_{r}^\gamma &= -\frac{1}{2 \pi r_o} \frac{\xi/\rho}{D_1} \left[ \mathcal{K}(m) - \left( 1 + \frac{2\rho}{D_2} \right) \mathcal{E}(m) \right] +\end{eqboxed} +\end{subequations} + +\where the superscript, \(\gamma\), indicates a unit vortex induced velocity. +% +In addition, \(\mathcal{K}(m)\) and \(\mathcal{E}(m)\) are complete elliptic integrals of the first and second kind, respectively, and + +\begin{eqboxed}{\eqbox}{align} +% \begin{equation} + % \label{eqn:normalizedgeom} + % \begin{aligned} + m &= \left( \frac{4\rho}{\xi^2 + (\rho+1)^2} \right) \\% = k^2 = \sin^2(\phi)\\ + \xi &= \frac{z - z_o}{r_o} \\ + \rho &= \frac{r}{r_o} \\ + D_1 &= \left[\xi^2 + (\rho+1)^2\right]^{1/2} \\ + D_2 &= \xi^2 + (\rho - 1)^2. + % \end{aligned} +% \end{equation} +\end{eqboxed} + +%---------------------------------# +% Source Induced Velocity # +%---------------------------------# +\subsection{Ring Source Induced Velocities} +\label{ssec:ringsources} + +Although our method for modeling the body aerodynamics primarily uses vortex ring distributions, we will find later that we will want to know the expressions for source ring induced velocities as well. +% +We include those expressions here for easy reference. +% +Note that a similar process to the derivation of the vortex ring induced velocities can be used to develop expressions for the induced velocity due to a ring source. +% +Here we simply state the expressions from Ryall and Collins\scite{Ryall_1967}, noting that the expressions for vortex induced velocity we have derived here also match the expressions they give. + +\begin{subequations} + \label{eqn:ringsourceinducedvelocity} +\begin{eqboxed}{\eqbox}{align} + \label{eqn:ringsourceinducedvelocityaxial} + v_{z}^\sigma &= \frac{1}{2 \pi r_o}\frac{\xi}{ D_1} \left(\frac{2 }{D_2} \mathcal{E}(m)\right) \\ + % v_{z}^\sigma &= \frac{1}{2 \pi r_o} \frac{1}{D_1} \left[ \mathcal{K}(m) - \left( 1 + \frac{2(\rho-1)}{D_2} \right) \mathcal{E}(m) \right] \\ + \label{eqn:ringsourceinducedvelocityradial} + v_{r}^\sigma &= \frac{1}{2 \pi r_o}\frac{1/\rho}{ D_1} \left[ \mathcal{K}(m) - \left( 1 - \frac{2\rho(\rho-1)}{D_2} \right) \mathcal{E}(m) \right], + % v_{r}^\sigma &= -\frac{1}{2 \pi r_o} \frac{\xi/\rho}{D_1} \left[ \mathcal{K}(m) - \left( 1 + \frac{2\rho}{D_2} \right) \mathcal{E}(m) \right] +\end{eqboxed} +\end{subequations} + +\where the superscript, \(\sigma\), indicates a unit source induced velocity. +% +The other variables in \cref{eqn:ringsourceinducedvelocity} are as defined for the vortex ring expressions. + +%##################################################################### +% # +% Validation # +% # +%##################################################################### +\subsection{Validation of Isolated Body Aerodynamics} + +%---------------------------------# +% Isolated Center Body Validation # +%---------------------------------# +\subsubsection{Isolated Duct} + +\begin{figure}[h!] + \centering + \input{figures/duct-validation-geometry.tikz} + \caption{Isolated annular airfoil cross section used for validation for a duct with length/diameter of 0.5988.} + \label{fig:ductgeom} +\end{figure} + +For the isolated duct, we compare with data provided by Lewis for an annular airfoil using the NACA \(66_2\)-\(015\) geometry and with a length to diameter ratio of 0.5988\scite{Lewis_1991}. +% +We generated smooth NACA 66-015 geometry using the airfoil tools within Open Vehicle Sketch Pad (OpenVSP)\scite{McDonald_2022}, and for the geometry producing \cref{fig:isolatedductvalidation}, we interpolated the OpenVSP coordinates using a cosine spacing resulting in a total of 161 coordinate points, and thus 160 panels. +% +See \cref{fig:ductgeom} for the cross sectional geometry we used. +% +\Cref{fig:isolatedductvalidation} shows a comparison of the experimental data provided by Lewis and the computation output from DuctAPE. +% +Observing \cref{fig:isolatedductvalidation}, we see very good agreement with the experimental data, with minor discrepancies on the aft portion of the duct, due to viscous effects being ignored in the present methodology. + +\begin{figure}[h!] + \centering + \input{figures/duct-pressure-comp-160-panels.tikz}% + \caption{Comparison of experimental data with DuctAPE for an isolated duct shows very good agreement despite the inviscid approximation in DuctAPE's development.} + \label{fig:isolatedductvalidation} +\end{figure} + +\Cref{fig:isolatedductgridconv} shows a refinement convergence for the aforementioned geometry. +% +We start with a very coarse refinement of 20 panels, and increase by 100 panels until reaching 700.\sidenote{Note that after 700 panels, the numerical integration scheme had trouble converging due to the proximity of the singularities for extremely small panels.} +% +Comparing the value of the sum of the local surface pressure coefficients multiplied by the associated panel length, we see that for 160 panels, a typical number in general use cases, we have only a 0.93\% difference from the value computed with 700 panels. + +\begin{figure}[h!] + \centering + \input{figures/duct-grid-refinement.tikz}% + \caption{Between 100 and 200 panels is generally a sufficient refinement for our use case.} + \label{fig:isolatedductgridconv} +\end{figure} + + +%---------------------------------# +% Isolated Center Body Validation # +%---------------------------------# +\subsubsection{Isolated Center Body} + +\begin{figure}[hb!] + \centering + \input{figures/cb-validation-geom.tikz} + \caption{Isolated center body geometry used for validation; note the trailing edge does not extend all the way to zero radius.} + \label{fig:cbgeom} +\end{figure} + +For the isolated center body, we again compare with data provided by Lewis as shown in \cref{fig:cbgeom}. +% +\Cref{fig:isolatedductvalidation} shows a comparison of the experimental data provided by Lewis and the computation output from DuctAPE. +% +We used the coordinates provided by Lewis to obtain the leading edge circular radius, the length of the flat portion, and the total length of the cross section to generate our own smooth geometry manually +% +For the geometry producing \cref{fig:isolatedhubvalidation}, we interpolated the coordinates using a cosine spacing resulting in a total of 81 coordinate points, and thus 80 panels. +% +Observing \cref{fig:isolatedhubvalidation}, we see good agreement with the experimental data, with discrepancies near the trailing edge which are, again, a result of the inviscid assumption in DuctAPE, as well as the small radial dimensions at the trailing edge, as discussed in \cref{ssec:panelmethodology}. + +\begin{figure}[h!] + \centering + \input{figures/hub-velocity-comp-80-panels.tikz} + \caption{Comparison of experimental data with DuctAPE for an isolated hub shows good agreement despite the inviscid approximation in DuctAPE's development.} + \label{fig:isolatedhubvalidation} +\end{figure} + +\begin{figure}[hb!] + \centering + \input{figures/hub-grid-refinement.tikz}% + \caption{Between 70 and 100 panels is generally a sufficient refinement for our use case.} + \label{fig:isolatedhubgridconv} +\end{figure} + + +\Cref{fig:isolatedhubgridconv} shows a refinement convergence for the aforementioned geometry. +% +We start with a very coarse refinement of 20 panels, increasing by 10s until reaching 100 panels, after which we increase by 100 panels until reaching 350 (half of what was used in the duct validation). +% +Comparing the value of the sum of the local surface pressure coefficients multiplied by the associated panel length, we see that for 80 panels, a typical number in general use cases, we have 14.7\% difference from the value computed with 350 panels; though the absolute magnitudes are very small in the first place. + + +%---------------------------------# +% Multi-Body Verification # +%---------------------------------# +\subsubsection{Multi-body System Verification} + +If we now combine these two geometries together, we can check that a multi-body system analysis works as expected. +% +Unfortunately, we do not have any experimental data at the time for an isolated duct and center body, but we can compare with Ducted Fan Design Code, from which we have developed most of our methodology, for verification. +% +\Cref{fig:ducthubvalgeom} shows the geometry of the duct and center body we have been using thus far for reference. +% +We now place both in a single system in order to verify that multi-body systems work properly. + +\begin{figure}[h!] + \centering + \input{figures/duct-and-hub-validation-geom.tikz}% + \caption{Isolated duct and center body geometry together.} + \label{fig:ducthubvalgeom} +\end{figure} +% +As can be seen in \cref{fig:dfdclewiscomp}, the surface velocity on the hub and pressure on the duct match very well to DFDC, lending confidence in DuctAPE's ability to model both a duct and hub together. + +\begin{figure}[h!] + \centering + \begin{subfigure}[b]{0.45\textwidth} + \raggedright + \input{figures/dfdclewis-velocity-comp-107-duct-panels-78-hub-panels.tikz}% + \caption{Comparison of the surface velocity on the center body with sharp trailing edge calculated by DFDC and calculated by DuctAPE.} + \label{fig:dfdclewisvel} + \end{subfigure} + \hfill + \begin{subfigure}[b]{0.45\textwidth} + \raggedright + \input{figures/dfdclewis-pressure-comp-107-duct-panels-78-hub-panels.tikz}% + \caption{Comparison of the surface pressure on the duct with sharp trailing edge calculated by DFDC and calculated by DuctAPE.} + \label{fig:dfdclewiscp} + \end{subfigure} + \caption{\primary{DuctAPE (blue)} matches very well to \secondary{DFDC (red dash)} for the multi-body, no rotor case, with sharp trailing edges.} + \label{fig:dfdclewiscomp} +\end{figure} + + +As a second check, we use geometry provided in the DFDC example files that contain blunt trailing edges on the duct and center body. +% +In this case, we need to apply the augmentations to the system for trailing edge gap panels. +% +\begin{figure}[hb!] + \centering + \input{figures/duct-and-hub-dfdc-example-verification-geometry.tikz} + \caption{Duct and center body geometry provided in DFDC examples.} + \label{fig:ducthubvalgeom} +\end{figure} +% +We see in \cref{fig:dfdcexamplecomp} that DuctAPE also matches well with DFDC in this case. + +\begin{figure}[h!] + \centering + \begin{subfigure}[b]{0.45\textwidth} + \raggedright + \input{figures/dfdcexample-velocity-comp-106-duct-panels-61-hub-panels.tikz}% + \caption{Comparison of the surface velocity on the center body with blunt trailing edge calculated by DFDC and calculated by DuctAPE.} + \label{fig:dfdcexamplevel} + \end{subfigure} + \hfill + \begin{subfigure}[b]{0.45\textwidth} + \raggedright + \input{figures/dfdcexample-pressure-comp-106-duct-panels-61-hub-panels.tikz}% + \caption{Comparison of the surface pressure on the duct with blunt trailing edge calculated by DFDC and calculated by DuctAPE.} + \label{fig:dfdcexamplecp} + \end{subfigure} + \caption{\primary{DuctAPE (blue)} matches very well to \secondary{DFDC (red dash)} for the multi-body, no rotor case with blunt trailing edges.} + \label{fig:dfdcexamplecomp} +\end{figure} diff --git a/v0.5.0/DuctAPE/theory_latex/ductintro.tex b/v0.5.0/DuctAPE/theory_latex/ductintro.tex new file mode 100644 index 00000000..765b694c --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/ductintro.tex @@ -0,0 +1,38 @@ +\section{Introduction} +\label{sec:ductintro} + +In the preliminary and conceptual stages of design, it is often helpful to have tools that make some sacrifices in fidelity in favor of computational efficiency. +% +It may also be desirable to sacrifice some flexibility to further decrease computation time costs in the beginning stages of design. +% +To this end, a low-fidelity tool for the evaluation of ducted ducted_rotors, catered specifically to electric ducted fans, is described in this document. +% +One of the major limitations in flexibility is that we require that: + +\begin{assumption} + \label{asm:axisymmetric} + + \asm{The system is modeled axisymmetrically.} + + \limit{There are two major limitations to the axisymmetric assumption: the first is that we can no longer model non-symmetric inflow conditions. + % + The second is that the internal flow, specifically aft of the rotor(s) is assumed to be uniform in the tangential direction (axisymmetric), removing any modeling of unsteady wake conditions. + % + An additional limitation comes in modeling flow near the center line, where we will see that division by numbers approaching zero can cause numerical issues.} + + \why{By making the axisymmetric assumption, we are able to utilize much faster computation methods, or at least faster versions of already relatively fast methods. Specifically in our case, we can use axisymmetric panel methods employing far less elements than would be required for a three-dimensional method. Although our operational cases are limited to axial inflow, there are still many uses in that limited design space.} + +\end{assumption} + +\noindent Therefore, we call our tool \textbf{Duct}ed \textbf{A}xisymmetric \textbf{P}ropulsor \textbf{E}valuation, or DuctAPE for short. +% +We also required a steady-state assumption, meaning the solution is stationary in time. +% +As alluded to, the overall goal of DuctAPE is to provide a computationally inexpensive tool to be used in a multidisciplinary design and optimization setting for preliminary and conceptual design. + +In this document we cover the methodology derivation required for DuctAPE as well as some implementation details and various verification and validation along the way. +% +The solver is comprised of two major components, which will be first presented in isolation before the full coupling is considered. +% +The first that will be covered is the analysis of the duct and center body (see \cref{sec:axisymmetricpanelmethod}), and the second is the analysis of the rotor and wake (see \cref{sec:rotorwakemethods}). + diff --git a/v0.5.0/DuctAPE/theory_latex/ductpostprocessing.tex b/v0.5.0/DuctAPE/theory_latex/ductpostprocessing.tex new file mode 100644 index 00000000..5e7462fb --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/ductpostprocessing.tex @@ -0,0 +1,193 @@ +\section{Post-Processing} +\label{sec:postprocess} + +After we have solved the non-linear system for unknown body, rotor, and wake strengths, we need to perform some post-processing in order to assess useful outputs such as thrust, torque, power, efficiency, blade loading, etc. +% +This section covers the methodology for calculating desired outputs. + +\subsection{Body Thrust} + +The body thrust is the sum of forces on the bodies and may augment the total system thrust and therefore efficiency. +% +Due to \cref{asm:axisymmetric}, the net radial pressure forces on the body cancel; we also assume there are no tangential forces induced due to the bodies. +% +We therefore sum the forces due to pressure in the axial direction to obtain thrust due to the bodies. + +\begin{equation} + T_\text{bod} = \frac{1}{2}\rho_\infty V_\text{ref}^2 f_z +\end{equation} + +\where the non-dimensional force coefficient, \(f_z\), is the integral of the pressure force coefficient in the axial direction about the body surfaces: + +\begin{equation} + \label{eqn:fzbody} + f_z = \sum_{i=1}^{N_b} 2 \pi \int_{S_i} r(s_i) (c_{p_\text{out}}-c_{p_\text{in}}) (s_i) \hat{\vect{n}}_{z}(s_i) \d s_i. +\end{equation} +% +In the case of a blunt trailing edge, the trailing edge gap panel is also included in the integral for the total axial force coefficient, though the pressure coefficient values used in that case are simply the average of the adjoining panels in the duct case, and the last panel in the center body case. +% +Since the trailing edge gap panels are in general pointing in the positive axial direction, this provides a rough approximation of profile drag due to the blunt trailing edges. + +Note that in \cref{eqn:fzbody} we integrate the difference in surface pressure between the outer and inner sides of the body surface. +% +This is due to the fact that there is a non-zero induced velocity on the inner side of the body boundaries as mentioned in \cref{sssec:vtanbody}. +% +To obtain the thrust due to a pressure difference, then, we require to net pressure induced on the body surfaces rather than just the externally induced surface pressure. +% +Internally, there is no additional effects on the surface pressure by the rotor and wake. +% +Externally however, there is a jump in pressure aft of the rotor(s) inside the duct. + +Aft of the rotor plane(s), the pressure coefficient changes due to the enthalpy and entropy jumps across the rotor plane as well as the addition of swirl velocity. +% +Remembering \cref{eqn:totalpressure1} we see that the steady state pressure coefficient changes due to the disk jumps as + +\begin{equation} + \begin{aligned} + \Delta c_{p_{hs}} &= \frac{\widetilde{p_t}}{\frac{1}{2} \rho V_\text{ref}^2} \\ + &= \frac{\rho \left(\widetilde{h}-\widetilde{S} \right)}{\frac{1}{2} \rho V_\text{ref}^2} \\ + &= \frac{\widetilde{h}-\widetilde{S}}{\frac{1}{2} V_\text{ref}^2} + \end{aligned} +\end{equation} + +\noindent The pressure is also altered by the addition of swirl velocity due to the rotor. +% +We treat this in the same manner as we do for the nominal, steady pressure coefficient based on the surface velocity. +% +For the nominal case, we only look at the velocity in the axial and radial directions, obtaining the velocity tangent to the body surfaces. +% +The pressure coefficient, is given by + +\begin{equation} + c_p = \frac{p - p_\infty}{\frac{1}{2} \rho V_\text{ref}^2} +\end{equation} +% +By \cref{asm:incompressible}, we can apply Bernoulli's equation + +\begin{align} + p_\infty + \frac{1}{2} \rho V_\infty^2 &= p + \frac{1}{2} \rho V_\text{tan}^2 \\ + p-p_\infty &= \frac{1}{2} \rho V_\infty^2 - \frac{1}{2} \rho V_\text{tan}^2 +\end{align} + +\where \(V_\text{tan}\) is the velocity tangent to the body surface, and substitute into the numerator and cancel to obtain + +\begin{equation} + c_p = \frac{V_\infty^2 - V_\text{tan}^2}{V_\text{ref}^2} +\end{equation} +% +Aft of the rotor, inside the duct, and on the outer side of the body surfaces \(V_\text{tan}\) contains a swirl component that is not present upstream of the rotor. +% +Since the \(V_{\theta_\infty}=0\), the change in pressure coefficient aft of the rotor due to the addition of swirl velocity is simply + +\begin{equation} + \Delta c_{p_\theta} = -\frac{V_\theta^2}{V_\text{ref}^2} +\end{equation} +% +All together the outer surface pressure coefficient rise aft of a rotor is then: + +\begin{equation} + \begin{aligned} + \Delta c_p &= \Delta c_{p_{hs}} + \Delta c_{p_\theta} \\ + &= \frac{2 (\widetilde{h} - \widetilde{S}) - V_\theta^2}{V_\text{ref}^2}. + \end{aligned} +\end{equation} + +\subsection{Rotor Performance} +\label{ssec:rotorperformance} + +\subsubsection{Blade Loading} + +Rotor performance calculation begins with determining the blade element aerodynamic loads. +% +To obtain the loads in the axial and tangential direction, we start with the lift and drag coefficients for the blade elements, calculated as explained in \cref{ssec:bladeelementmodel}. +% +The lift and drag coefficients are then rotated into the axial and tangential directions using the inflow angle, \(\beta_1\): + +\begin{align} + c_z &= c_\ell \cos(\beta_1) - c_d \sin(\beta_1) \\ + c_\theta &= c_\ell \sin(\beta_1) + c_d \cos(\beta_1), +\end{align} + +\where \(c_z\) is the force coefficient in the axial direction, and \(c_\theta\) is the force coefficient in the tangential direction. +% +We then multiply by the chord length to scale the force and dimensionalize to obtain the forces per unit length:\sidenote{ +It is these forces that are used in an aerostructural analysis and optimization setting.} + +\begin{align} + f_n &= \frac{1}{2} \rho_\infty W^2 c c_z \\ + f_t &= \frac{1}{2} \rho_\infty W^2 c c_\theta. +\end{align} + +\noindent We can then integrate these forces per unit length across the blade and multiply by the number of blades to obtain the full rotor thrust, \(T_\text{rot}\), and torque, \(Q\), on the rotor. + +\begin{equation} + T_\text{rot} = B \int_{R_\text{hub}}^{R_\text{tip}} f_n \d r +\end{equation} + +\begin{equation} + Q = B \int_{R_\text{hub}}^{R_\text{tip}} f_t r \d r +\end{equation} + +\noindent Power is related to torque by the rotation rate, \(\Omega\), and is therefore immediately found as well: + +\begin{equation} + P = Q\Omega. +\end{equation} + +It is common to express the rotor thrust, torque and power as non-dimensional coefficients. +% +We use the propeller convention here. +% +The thrust coefficient, \(C_T\), is + +\begin{equation} + C_T = \frac{T}{\rho_\infty n^2 D^4}, +\end{equation} + +\where \(n=\Omega/2\pi\) is the rotation rate in revolutions per second and \(D=2R_\text{tip}\) is the rotor tip diameter. +% +The torque coefficient, \(C_Q\), is + +\begin{equation} + C_Q = \frac{Q}{\rho_\infty n^2 D^5}, +\end{equation} + +\noindent and the power coefficient, \(C_P\), is + +\begin{equation} + C_P = C_Q \Omega +\end{equation} + + +\subsubsection{Efficiency} + +The rotor efficiency is the ratio of the thrust to power multiplied by the freestream velocity. +% +\begin{equation} + \eta_\text{rot} = \frac{T_\text{rot}}{P} V_\infty. +\end{equation} +% +To obtain the total system efficiency, we simply add the body thrust to the rotor thrust. + +\begin{equation} + \eta_\text{tot} = \frac{T_\text{tot}}{P} V_\infty. +\end{equation} + +\where + +\begin{equation} + T_\text{tot} = T_\text{rot}+T_\text{bod} +\end{equation} + +%\subsubsection{Induced Efficiency} +%%todo: is this needed for anything? if so, need to separate the rotated cn and ct out to just lift or drag contributions, the inv subscripts are from the lift only contributions to thrust and power +%\begin{equation} +% \eta_\text{inv} = \frac{T_\text{inv} + T_\text{bod}}{P_\text{inv}} +%\end{equation} + +\noindent The ideal efficiency is useful for comparing the actual efficiency with the theoretical potential and is defined as + +\begin{equation} + \eta_\text{ideal} = \frac{2}{1 + \left[\frac{1 + T_\text{tot}}{\frac{1}{2}\rho_\infty V_\infty^2 \pi R_\text{ref}^2}\right]^{1/2}}. +\end{equation} + diff --git a/v0.5.0/DuctAPE/theory_latex/ductrotorwakemethods.tex b/v0.5.0/DuctAPE/theory_latex/ductrotorwakemethods.tex new file mode 100644 index 00000000..69541564 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/ductrotorwakemethods.tex @@ -0,0 +1,1742 @@ +\clearpage +\newpage +\section{No Duct Solution: Rotor-Wake Lifting Line Model} +\label{sec:rotorwakemethods} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% REFERENCE FRAMES AND VELOCITIES +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Reference Frames} +\label{ssec:reference_frames} +To begin, we need to start with an explanation of the various reference frames and velocity decompositions used in the rotor and wake models. +% +We introduce multiple reference frames, because we would like to perform our analysis in steady frames. +% +The first frame we will use is the absolute reference frame, which is the reference frame of an observer stationed at a static location on the duct wall. +% +Since the aerodynamics of a rotor are inherently unsteady, we can't actually perfectly model things as steady. +% +If we, however, change our reference frame to be relative to a blade as we pass across the blade, we can reasonably approximate the flow across the blade section as steady. +% +In this blade relative, or simply relative, reference frame, the observer is stationed on a blade such that to the observer the blade is stationary. + +\subsubsection{Absolute Frame} +\label{ssec:absoluteframe} + +Along with the absolute reference frame, we introduce the absolute coordinate system in \cref{fig:absolutecoordinatesystem}. +% +As can be seen, the duct is defined in a right-handed cylindrical coordinate system. +% +We define the \(z\) axis to be along the axis of symmetry (also the center line/axis of rotation for the rotor(s)), positive in the downstream direction. +% +The \(r\) axis is positive from the center line outward. +% +Finally, \(\theta\) is positive about the \(z\)-axis according to the right-handed system. +% +% This allows a conventional right-handed rotor to rotate in the positive \(\theta\) direction.\change{keep track of sign changes that happen based on swapping theta direction} +% +We choose the origin to be located on the \(z\) axis, aligned with the duct leading edge, or in other words, the inlet plane. + +%\begin{figure}[h!] +% \centering +% \input{./figures/ductreferenceframe.tikz} +% \caption{Meridional view showing the duct reference frame ({\color{plotsblue} blue}), with origin ({\color{plotsred} red}), and duct wall and hub ({\color{plotsgray} gray}).} +% \label{fig:absolutecoordinatesystem} +%\end{figure} + +\begin{figure}[h!] + \centering + \input{./figures/absolute-reference-frame.tikz} + % \includegraphics[width=\textwidth]{./figures/duct_frame} + \caption{Meridional view showing the absolute reference frame. Example duct and center body geometry is shown in \primary{blue}, the origin location is shown in \secondary{red}, and an example blade lifting line location is shown in \tertiary{green}.} + \label{fig:absolutecoordinatesystem} +\end{figure} + + + +\subsubsection{Relative Frame} +\label{ssec:relativeframe} + +It may be helpful to initially think of the blade element reference frame as orthogonal to the slice of the absolute frame shown in \cref{fig:absolutecoordinatesystem}. +% +Imagine standing on the blade looking from the direction of the duct wall toward the rotor hub (in the negative \(r\) direction). +% +If you happen to be familiar with turbo-machinery conventions, the \(z\)-\(r\) slice of \cref{fig:absolutecoordinatesystem} is the meridional view, and the \(m\)-\(\theta\) slice of \cref{fig:relativeframe} is the cascade view. +% +We can use this cascade view to understand the various velocity decompositions through which we can relate the absolute and relative reference frames. +% +The blade rotates in the positive \(\theta\) direction, and the \(m\) axis (where \(dm^2 = dz^2+dr^2\)) is along a streamline passing through the lifting line representing the blade. +% +That is to say, the \(m\) axis is the meridional axis, which may or may not be orthogonal to \(r\) for a given blade element. + +\begin{figure}[h!] + \centering + \input{./figures/relative-reference-frame.tikz} + \caption{Cascade view showing the blade element relative frame with velocity decompositions.} + \label{fig:relativeframe} +\end{figure} + + + +\subsubsection{Velocity Decomposition and Definition} + +The velocity triangles in \cref{fig:relativeframe} show how the various velocity components are combined into useful quantities. +% +The components that give us the absolute local velocity, \(\vect{C}\), include: the freestream velocity, \(\vect{C}_\infty\),\sidenote{We will assume according to \cref{asm:axisymmetric} that \(\vect{C}_\infty=||\vect{C}_\infty|| \hat{z}\).} +and the velocity induced by the rotors and duct, \(\vect{V}\). +% +Together, we have + +\begin{equation} + \vect{C} = C_\infty \hat{z} + \vect{V} +\end{equation} + +The relative velocity, \(\vect{W}\), is comprised of the absolute velocity, \(\vect{C}\), plus the rotational velocity at the respective radial station along the blade, \(\vect{U} = \Omega r \hat{\theta}\). + +\begin{equation} + \begin{aligned} + \vect{W} &= \vect{C} - \vect{U}\\ + &= \vect{C} - \Omega r \hat{\theta} + \end{aligned} +\end{equation} + +It will be useful to put both \(\vect{C}\) and \(\vect{W}\) in terms of \(m\) and \(r\). +% +We get the velocities in terms of \(m\) and \(r\) by first separating out the various velocity components in the absolute reference frame and applying the definition of the meridional axis. +% +The velocity in the absolute frame is broken down into its various components as + +\begin{equation} + \label{eqn:absolutevelocities} + \begin{aligned} + C_z &= V_z + C_\infty \\ + C_r & = V_r \\ + C_\theta &= V_\theta. + \end{aligned} +\end{equation} + +Similarly, the relative velocity is broken down as\sidenote{Note that we will use gray boxes to highlight expressions that are not used immediately, but will be vital in later sections of our development.} + +\begin{equation} + \label{eqn:relativevelocities} + \stepbox{ + \begin{aligned} + W_z &= V_z + C_\infty \\ + W_r & = V_r \\ + W_\theta &= V_\theta - \Omega r. + \end{aligned} + } +\end{equation} + +\noindent These decompositions immediately yield the \(\theta\) components of the velocities. +% +To obtain the meridional component, we can use the definition of the meridional coordinate, that is, the direction tangent to the mean streamline in the \(z-r\) (meridional) plane, to see that + +\begin{equation} + \label{eqn:vmwm} + % \eqbox{ + \vect{C}_m = \vect{W}_m = C_z \hat{z} + C_r \hat{r}. + % } +\end{equation} + +\noindent Now we have all the pieces to express the relative velocities in terms of the blade element frame (see the right-most velocity triangle in \cref{fig:relativeframe}): + +\begin{align} + \vect{C} &= ||\vect{C_m}||\hat{m} + C_\theta \hat{\theta} \\ + \label{eqn:inflowvelocity} + \vect{W} &= ||\vect{C_m}||\hat{m} + (C_\theta - \Omega r) \hat{\theta} +\end{align} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% BLADE MODEL + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Rotor Blade Model} +\label{ssec:bladeelementmodel} + +For the rotor blades, themselves, we model the blade element circulation and profile drag in the following subsections. + +\subsubsection{Blade Circulation} +\label{ssec:bladecirculation} + +\smallskip + +\begin{assumption} +\label{asm:liftingline} + + \asm{The rotor can reasonably be modeled as a lifting line such that local blade circulation can be expressed according to the Kutta-Joukowski theorem, which states:} + + \[ \vect{F} = \rho \vect{W} \times \vect{\Gamma} \] + + \limit{We require the blade to be modeled as a single line, and we may not fully capture high solidity effects depending on how the force is obtained.} + + \why{This simplification allows for a more straightforward approach to the rotor-wake modeling, again reducing the computational complexity.} + +\end{assumption} + +Modeling the rotor blades as lifting lines, if we take the velocity to be the local inflow velocity magnitude, \(W=\left[W_z^2+W_\theta^2\right]^{1/2}\) at the radial point of interest, we can take the perpendicular component of the force to be lift also at the radial point of interest. +% +We can then rearrange the expression for the Kutta-Joukowski theorem in \cref{asm:liftingline} for the local circulation magnitude, \(\Gamma(r)\), along the blade as + +\begin{equation} + \Gamma(r) = \frac{L'}{\rho W}. +\end{equation} + +\noindent For each blade section, we will prescribe an airfoil polar such that the lift coefficient is known for a given angle of attack. +% +If we then take the expression for the two-dimensional coefficient of lift--- + +\begin{equation} + c_\ell = \frac{2 L'}{\rho W^2 c}, +\end{equation} + +\where \(c\) is the blade element chord length, and \(c_\ell\) is the local blade element lift coefficient--- %, and \(\psi\) is the local blade element work coefficient. + and substitute into our expression for circulation (again using the local meridional velocity), we arrive at + +\begin{equation} + \label{eqn:bladeelementcirculationrotor} + \eqbox{ + \Gamma(r) = \frac{1}{2} W c c_\ell, + } +\end{equation} + + +%\noindent or, equivalently +% +%\begin{equation} +% \label{eqn:bladeelementcirculationcascade} +% \eqbox{ +% \Gamma(r) = 2 \pi r W \psi, +%} +%\end{equation} + +\where \(W\), \(c\), and \(c_\ell\) %, and \(\psi\) +are all functions of the radial position, \(r\), along the rotor. + +We use a blade element method approach to model the rotor aerodynamics, in that we use a lookup table to find the lift and drag coefficients based on the local blade element geometry and flow as shown in \cref{fig:bladeelementangles}. +In the case of a low-solidity rotor, we can simply use airfoil data based on the aerodynamic angle of attack, \(\alpha\), which is the inflow angle, \(\beta_1\) minus the local blade element stagger angle, \(\gamma_{be}\): + +\begin{figure}[h!] + \centering + \input{./figures/airfoil-angles.tikz}% + \caption{Velocity decomposition with angles in the blade element frame.} + \label{fig:bladeelementangles} +\end{figure} + +\begin{equation} + \label{eqn:localangleofattack} + \alpha = \beta_1 - \gamma_{be}, +\end{equation} + +\where the inflow angle is defined as + +\begin{equation} + \label{eqn:inflowangle} + \eqbox{ + \beta_1 = \arctan \frac{-W_\theta}{W_z} = \arctan \frac{\Omega r - V_\theta}{C_\infty + V_z}, +} +\end{equation} + +\noindent or in other words, the angle from the axis of rotation to the local inflow velocity vector, \(\vect{W}\), as seen in \cref{fig:bladeelementangles}. + +For higher solidity rotors, when cascade data is available, we look up the lift and drag coefficients based on the inflow and stagger angles directly. +% +In addition, the section lift and drag coefficients may depend not only on the local angle of attack (or stagger and inflow angles), but may also be a function of the local Reynolds, \(Re_{be}\), and Mach, \(M_{be}\), numbers which we define in the typical manner: + +\begin{equation} + \label{eqn:re} + Re_{be} = \frac{\rho_\infty W c}{\mu_\infty}, +\end{equation} + +\noindent and + +\begin{equation} + \label{eqn:ma} + M_{be} = \frac{W}{a_{s_\infty}}, +\end{equation} + +\where \(\rho_\infty\), \(\mu_\infty\), and \(a_{s_\infty}\) are the freestream density, dynamic viscosity, and speed of sound, respectively. +% +Here again, \(W\) and \(c\) are the local (at a given radial station) inflow magnitude and blade element chord length. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% ROTOR SOURCES + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsubsection{Rotor Profile Drag} +\label{ssec:rotorsourcestrengths} + +\smallskip + +\begin{assumption} + \label{asm:rotorsources} + + \asm{The rotor blade section profile drag can be approximated by the addition of source elements along the rotor blade.} + + \limit{We aren't fully modeling viscous effects in the wake.} + + \why{This allows us to model the wake inviscidly (which allows us to simplify the wake model later), while still approximating the viscous effects of the rotor on the wake velocities.} + +\end{assumption} + +% Following a similar procedure as for the blade circulation above, we take the component parallel to the inflow velocity to be the rotor blade section profile drag per unit length: + +% \begin{equation} +% \Sigma(r) = \frac{1}{2} W c c_d +% \end{equation} + +We define the rotor blade section profile drag per unit length in terms of a local airfoil polar drag coefficient using similar logic to how we defined the circulation due to lift. +% +Though we are actually attempting to approximate a viscous effect inviscidly, so we are effectively equating the vorticity that would be introduced into the wake due to viscous profile drag with an approximate inviscid source distribution on the blade. +% +\Cref{fig:rvf_eif} shows visually this concept. +% +\begin{figure}[h!] + \centering + \begin{subfigure}[t]{0.45\textwidth} + \centering + \input{./figures/real-viscous.tikz} + \caption{The real, viscous formulation has no sources on the rotor blades, but rather sheds vorticity due to viscous effects.} + \label{} + \end{subfigure} + \hfill + \begin{subfigure}[t]{0.45\textwidth} + \centering + \input{./figures/equivalent-inviscid.tikz} + \caption{The equivalent inviscid formulation uses source distributions along the blade to approximate profile drag effects.} + \label{} + \end{subfigure} + \caption{Visual comparison of real, viscous vs. equivalent inviscid formulations.} + \label{fig:rvf_eif} +\end{figure} +% +The inviscid approximation of the profile drag per unit length then takes a similar form to the local circulation: + +\begin{equation} + % \Sigma(r) = \frac{1}{2} \rho W^2 c c_d + \Sigma = \frac{1}{2} W c c_d +\end{equation} + +\where \(c_d\) is the blade element drag coefficient at the angle of attack described in \cref{ssec:bladecirculation}, and again, each of the terms on the right hand side are functions of the radial position along the blade. +% +To get the total source sheet strength per unit length, we smear the total source strength per unit span of all the blades, \(B\), around the circumference, \(2\pi \): + +\begin{equation} + % \sigma(r) = \frac{B \Sigma}{2 \pi r}. + \sigma = \frac{B \Sigma}{2 \pi}. +\end{equation} + +Therefore the expression for the smeared rotor source strength per unit length along the blade is + +% \begin{equation} +% \label{eqn:rotorsourcestrengths} +% \eqbox{ +% \sigma(r) = \frac{B}{4 \pi r} W c c_d. +% } +% \end{equation} + +\begin{equation} + \label{eqn:rotorsourcestrengths} + \eqbox{ + % \sigma(r) = \frac{B}{4 \pi r} \rho W^2 c c_d. + \sigma = \frac{B}{4 \pi} W c c_d. + } +\end{equation} + + +%\subsection{Body Induced Velocities}\todo{look back at section 1.4 and update this one accordingly} +%\label{ssec:bodyinducedvelocities} +% +%To obtain the initial \(v_z\) and \(v_r\) for finding the local inflow angle, we use the no-rotor panel method solution to find the body-induced velocities at pertinent locations in the duct. +% +% +%\begin{equation} +% \begin{aligned} +% v_{z}^{P} &= A_z^{PB} \gamma^{B\infty} \\ +% v_{r}^{P} &= A_r^{PB} \gamma^{B\infty}. +% \end{aligned} +%\end{equation} +% +%\where \(v_z^P\) and \(v_r^P\) are the axial and radial induced velocities at the points of interest (for example, at the rotor plane(s)), respectively, and \(A^{PB}\) is the vortex coefficient matrix for the bodies influencing the points of interest. +%The \(A^{PB}\) matrix is generated nearly identically to the \(A^{BB}\) matrix (using the same equations for the coefficients highlighted in blue boxes in \cref{ssec:axisymmetricpaneltheory}), with the exception that the coordinates associated with the \(i\)th index are for the points of interest rather than the body itself. +% +%In practice, we can just get \(v_m^P\) (the meridional induced velocity) using the standard coefficient expression from \cref{eqn:vringamn}. +% +%\begin{equation} +% v_{m}^{P} = A^{PB} \gamma^{B\infty} +%\end{equation} +% +%\where \(A^{PB}\) is comprised of the combined \(z\) and \(r\) coefficients components. +% +%For the rest of the velocity components, we either know them as inputs, viz., \(V_\infty\) and \(\Omega r\), or we ignore them as in the case of \(v_\theta\), since we don't yet know the rotor induced velocity relative to the duct. +%Furthermore, we will assume no other externally induced velocities for the remainder of this chapter, so the \(u_m\) and \(u_\theta\) values will always be set to zero. + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% WAKE VORTICITY + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Wake Model} +\label{sec:wakevorticity} + +For a given position on a blade producing a circulation change, \(\Delta \Gamma\), by conservation of circulation, a helical vortex filament of strength \(-\Delta \Gamma\) is shed into the flow. + + +In order to represent 3D vortex filaments in our axisymmetric reference frames, we will also make the approximation that they can be smeared into equivalent axisymmetric vortex sheets in the \(m\) and \(\theta\) directions. +% +\begin{assumption} + + \asm{Three-dimensional helical vortex filaments can be represented in a smeared axisymmetric model.} + + \limit{We are not caputuring the full 3D and unsteady effects of the wake.} + + \why{We will see that we can develop a model that works very well with the panel method formulation of the solid body aerodynamics.} + +\end{assumption} +% +The smeared axisymmetric vortex sheets then have circulation to length ratios (densities) of \(\gamma_m\) and \(\gamma_\theta\) in their respective directions. +% +Because we are modeling the wake internal to the duct, we cannot guarantee a cylindrical wake, and therefore cannot simply model the wake with straight vortex cylinders. +% +Will will still use the concept of a wake cylinder, however to help us model discrete sections of the wake; so we continue with a description of how we smear a helical vortex filament into a cylindrical sheet. + + +%As we continue in this section, we will use conservation of circulation and velocity jumps across axisymmetric vortex sheets to obtain an expression for the \(\gamma_m\) term. +%% +%We will then use a force-free wake requirement to obtain an expression for \(\gamma_\theta\).\sidenote{In practice, we will represent the wake influence in the \(\theta\) direction using a series of vortex panels, similar to how we model the duct and center body surfaces. +%% +%Rather than applying boundary conditions and solving a linear system, however, we will develop our expression for the vortex strength (circulation density just mentioned) in terms of a force-free wake requirement and some simplifying assumptions that will be discussed as we continue.} + + +We begin with a shed vortex sheet, the geometry of which we approximate by a left-handed helix such that the helical sheet is defined parametrically in terms of the variable \(\overline{t}\) as + +\begin{equation} + \begin{aligned} + x(\overline{t}) &= r \cos (-\overline{t}) \\ + y(\overline{t}) &= r \sin (-\overline{t}) \\ + z(\overline{t}) &= \overline{t} \ell + \end{aligned} +\end{equation} + +\noindent in Cartesian coordinates, and + +\begin{equation} + \begin{aligned} + r(\overline{t}) &= r \\ + \theta(\overline{t}) &= -\overline{t} \\ + z(\overline{t}) &= \overline{t} \ell + \end{aligned} +\end{equation} + +\noindent in polar coordinates; where \(\ell\) is the torsional parameter describing the distance traveled in the \(z\) direction relative to the angle traveled in \(\theta\): + + \begin{equation} + \ell = \frac{h}{2\pi} = \frac{\d z}{-\d\theta}, + \end{equation} + + \where \(h\) is the pitch of the helix, defined as the distance traveled in \(z\) for one rotation of the rotor blade, in other words, the distance traveled in \(z\) after traveling circumferentially \(2\pi r\) + + \begin{equation} + h = 2\pi r \frac{\ell}{r} = 2\pi r \frac{\d z}{-r\d \theta} = 2\pi \frac{\d z}{-\d \theta}. + \end{equation} + +Given the polar coordinates, we can define the pitch angle of the helix such that the tangent of that angle is the ratio of the distance traveled in \(z\) to the distance traveled circumferentially + +\begin{equation} + \tan \phi = \frac{\d z}{-r\d \theta} = \frac{\ell}{r}. +\end{equation} + +It may be good to mention here that typically we see \(\ell\) defined in terms of \(h\) such that the torsional parameter is + +\begin{equation} + \ell = \frac{h}{2\pi} +\end{equation} + +\noindent From the pitch, we can obtain the apparent pitch, or the distance between the helix sheets created by consecutive blades by dividing the pitch by the number of blades, \(B\), + +\begin{equation} + h_B = \frac{2\pi}{B} \frac{\d z}{-\d \theta}. +\end{equation} + +If we now assume that: + +\begin{assumption} + + \asm{Vortex filaments are shed parallel to the relative inflow velocity, \(\vect{W}\).} + + \limit{This is a simplified modeling approach that ignores the some of the flow turning of the blade.} + + \why{By using this lifting line approach rather than some other approach, such as a lifting surface, we (like many of our other assumptions) simplify the model, allowing for simpler implementation and faster computation.} + +\end{assumption} + +\noindent In other words, we assume that the local \(\d z\) is in the direction of \(\hat{\vect{e}}_m\), and likewise \(\d\theta\) in the direction of \(\hat{\vect{e}}_\theta\) as per \cref{fig:relativeframe}, we obtain the non-dimensional length in the \(m\) direction for defining the \(\gamma_\theta\) strength density + +\begin{equation} + h_B \approx \frac{2\pi}{B} \left(\frac{W_m}{-W_\theta}\right). +\end{equation} + +\begin{figure}[h!] + \centering + \begin{subfigure}[t]{0.45\textwidth} + \centering + \input{./figures/wake-screw.tikz} + \caption{Wake Screw Geometry.} + \label{} + \end{subfigure} + \hfill + \begin{subfigure}[t]{0.45\textwidth} + \centering + \input{./figures/smeared-cylinder.tikz} + \caption{Axisymmetric Smeared Cylinder.} + \label{} + \end{subfigure} + \caption{2D vortex sheets are generated from ratios of circulation to lengths between vortex sheets.} + \label{fig:smearscrew} +\end{figure} + +\Cref{fig:smearscrew} shows graphically the wake screw non-dimensional geometry and orientation of the smeared vorticity. +% +To dimensionalize the lengths for a given smeared cylindrical surface, we multiply by the cylinder radius, \(r\), to obtain the dimensional length. +% +In addition, as we have defined our tangential vortices (see \cref{sec:axisymmetricpanelmethod}) to be positive in the positive \(\theta\) direction (the negative \(\overline{t}\) direction), we need to apply an additional negative to ensure our vortices are oriented correctly. +% +Thus + +\begin{equation} + \label{eqn:gammat1} + \stepbox{ + \gamma_\theta = -\frac{-\Delta\Gamma}{h_B r} = -\Delta \Gamma \frac{B }{2 \pi r} \left(\frac{W_\theta}{W_m}\right). +} +\end{equation} + +To obtain an expression for \(\gamma_m\) we look at the distance between blades in the \(\overline{t}\) direction, we know that the non-dimensional distance between the blade sections is the distance about \(\overline{t}\) divided by the number of blades (assuming even blade spacing), \(2\pi/B\). +% +For a given smeared cylinder of radius, \(r\), we multiply by \(r\) to obtain the dimensional distance, \(2\pi r/B\). +% +To keep the vortices oriented positively in our reference frame, we need to apply an additional negative.% as positive \(\theta\) is in the negative \(\overline{t}\) direction. +% +Applying this additional negative the meridional vortex strength density (strength per unit length), \(\gamma_m\), is + +\begin{equation} + \label{eqn:gammam1} + \stepbox{ + \gamma_m = \Delta\Gamma \frac{B}{2 \pi r}. +} +\end{equation} + + +Our expression for \(\gamma_m\) is generally applicable for steady state conditions if we use the local circulation jumps across the wake at any give point. +% +Due to conservation of circulation, we know the circulation jumps anywhere downstream. +% +On the other hand, \(\gamma_\theta\) would only be generally applicable if we assumed that the \(\Omega r\) component of \(W_\theta\) (see \cref{eqn:relativevelocities}) was constant in the entire wake. +% +In actuality, we only know \(\Omega r\) right at the rotor lifting line, but not generally in the remainder of the wake. +% +We therefore want to develop a more general expression for \(\gamma_\theta\) based on requiring the wake to be force-free, or in other words, we demand static pressure continuity across the vortex sheets. +% +The somewhat lengthy derivation for this more general expression for \(\gamma_\theta\) comprises the rest of \cref{sec:wakevorticity}. + + +\subsubsection{Swirl/Circulation Relation} + +The swirl velocity induced by upstream rotor blades, \(V_\theta\), can be determined by applying \index{Stokes' Theorem}Stokes' and \index{Kelvin's Theorem}Kelvin's theorems. +% +If we define a control volume around a streamtube as shown in \cref{fig:circulationsum}, where the first curve is taken about all upstream rotors along a streamline, and the second curve is taken about the axis of rotation, only in the \(r\)-\(\theta\) plane with radius such that the edge of the contour lies on the same streamline upon which the first curve lies (see the dotted line in \cref{fig:circulationsum}), we see by Kelvin's theorem (conservation of circulation), that the circulation due to the upstream rotors can be related to the tangential velocity downstream of the rotors through Stokes' theorem: + +\begin{equation} + \widetilde{\Gamma} = \oint_0^{2\pi} \vect{V} \cdot r \d \vect{\theta}, +\end{equation} + +\where \(\widetilde{\Gamma}\) is the net circulation contribution of all the blades of the upstream rotors: + +\begin{equation} + \label{eqn:gamma_tilde} + \eqbox{ + \widetilde{\Gamma} = \sum_{i=1}^N B_i \Gamma_i. + } +\end{equation} + + +\begin{figure}[h!] + \centering + \input{./figures/swirl-velocity-from-circulation.tikz} + \caption{Circulation is conserved between the dashed and solid contours, noting the red dotted line indicating the streamline on which the \(\widetilde{\Gamma}\) contours align. The integral over the contour about the axis of rotation yields \(V_\theta\) in terms of \(\widetilde{\Gamma}\).} + \label{fig:circulationsum} +\end{figure} + +\noindent Performing the integration for a give radial position and rearranging for \(V_\theta\)\sidenote{Note that the \(\theta\) component of \(V\) is the only component aligned with \(\d \vect{\theta}\) and is circumferentially constant due to our smearing approxmation. In addition the contour is a circle, so the integral is determined immediately.} gives + +\begin{equation} + \label{eqn:vtheta} + \stepbox{ + V_\theta = C_\theta = \frac{\widetilde{\Gamma}}{2 \pi r}, +} +\end{equation} + +\where \(V_\theta\) in our smeared, axisymmetric model is the circumferentially averaged swirl velocity induced by upstream rotors + +For the self-induced case, the contour is placed at the rotor plane. +% +This means that the rotor ``sees'' infinite trailing vortices from any upstream rotors, but only semi-infinite trailing vortices for itself. +% +Thus the rotor experiences the full swirl induced by upstream rotors, but only half of its own swirl contribution: + +\begin{equation} + \label{eqn:vthetaself} + \eqbox{ + (V_\theta)_\mathrm{self} = \frac{1}{2 \pi r} \left( \widetilde{\Gamma} + \frac{1}{2} B \Gamma \right), + } +\end{equation} + +% \begin{equation} +% (V_\theta)_\mathrm{self} = \frac{1}{2 \pi r} \left( \sum_{i=1}^N B_i \Gamma_i + \frac{1}{2} B \Gamma \right) +% \end{equation} + + +\where \(B \Gamma\) here is the number of blades and circulation of the rotor itself. + + +\subsubsection{Velocity Jumps} + +\begin{figure}[h!] + \centering + \input{./figures/velocity-jumps.tikz} + \caption{Circulation density can be related to velocity jump across axisymmetric vortex sheets.} + \label{fig:velocityjump} +\end{figure} + + +The smeared sheet strengths of \cref{eqn:gammam1,eqn:gammat1} can also be defined in terms of velocity jumps across the sheets.\sidenote{Assuming here that the velocities in this subsubsection are the equivalent inviscid flow velocities, \(V_\text{inv}\), implying that no additional vorticity is induced by blade profile drag. We also drop the ``inv'' subscript for simplicity.} +Starting with \cref{eqn:gammam1}, we can split the \(\Delta\Gamma\) into \(\Gamma_2 - \Gamma_1\) (taking \(\widetilde{\Gamma} = B\Gamma\) for the single rotor) for a given vortex sheet + +\begin{equation} + \begin{aligned} + \gamma_m &= \frac{\Delta \widetilde{\Gamma}}{2 \pi r} \\ + &= \frac{B(\Gamma_2-\Gamma_1)}{2 \pi r}. + \end{aligned} +\end{equation} + +\noindent Then using \cref{eqn:vtheta} + +\begin{equation} + \label{eqn:gamma2pre} + \begin{aligned} + V_{\theta_2} - V_{\theta_1} &= \frac{B\Gamma_2}{2 \pi r} - \frac{B\Gamma_1}{2 \pi r} \\ + &= \frac{B(\Gamma_2 - \Gamma_1)}{2 \pi r} ; + \end{aligned} +\end{equation} + +\noindent which we can then substitute in to get the sheet strength in terms of the velocity jump: + +\begin{equation} + \label{eqn:gammam2} + \stepbox{ + \gamma_m = \frac{B(\Gamma_2-\Gamma_1)}{2 \pi r} = C_{\theta_2} - C_{\theta_1}. +} +\end{equation} + +As it so happens, in general for inviscid flows, the jump in tangential velocity across a vortex sheet is equal to the sheet vorticity per unit length (what we've previously called the circulation density). +% +Therefore we can similarly equate \cref{eqn:gammat1} to a jump in the meridional velocities across the vortex sheet: + +\begin{equation} + \label{eqn:gammat2} + \stepbox{ + \gamma_\theta = -\frac{B(\Gamma_2 - \Gamma_1)}{2 \pi r} \frac{W_{\theta_\text{avg}}}{W_{m_\text{avg}}} = C_{m_1} - C_{m_2}. +} +\end{equation} + +\noindent where, to obtain the relative velocity components on the sheet, we combine the blade relative velocities just to either side of the sheet into averages, \(W_\text{avg}\), as + +\begin{align} + \label{eqn:wt} + W_{\theta_\text{avg}} &\equiv \frac{1}{2} (W_{\theta_1} + W_{\theta_2}) = \frac{1}{2} (C_{\theta_1} + C_{\theta_2} - 2\Omega r) \\ + \label{eqn:wm} + W_{m_\text{avg}} &\equiv \frac{1}{2} (W_{m_1} + W_{m_2}) = \frac{1}{2} (C_{m_1} + C_{m_2}). +\end{align} + + +\noindent If we divide \cref{eqn:gammam2} by \cref{eqn:gammat2}, we get + +\begin{equation} + \label{eqn:wgam} + \begin{aligned} + \frac{\gamma_m}{\gamma_\theta} &= -\frac{W_{m_\text{avg}}}{W_{\theta_\text{avg}}} \\ + \gamma_m W_{\theta_\text{avg}} &= -\gamma_\theta W_{m_\text{avg}} \\ + W_{m_\text{avg}} \gamma_\theta + W_{\theta_\text{avg}} \gamma_m &= 0. + \end{aligned} +\end{equation} + +\noindent Substituting in the average velocities from \cref{eqn:wt,eqn:wm} then gives + +\begin{equation} + \frac{1}{2}(C_{m_1} + C_{m_2}) \gamma_\theta + \frac{1}{2} (C_{\theta_1} + C_{\theta_2} - 2\Omega r) \gamma_m = 0. +\end{equation} + +\noindent Then applying the definitions of the vortex strengths from \cref{eqn:gammam2,eqn:gammat2} yields + +\begin{equation} + \frac{1}{2}(C_{m_1} + C_{m_2}) (C_{m_2} - C_{m_1}) + \frac{1}{2} (C_{\theta_1} + C_{\theta_2} - 2\Omega r) (C_{\theta_2} - C_{\theta_1}) = 0. +\end{equation} + +\noindent Simplifying + +\begin{equation} + \begin{aligned} + \frac{1}{2}(C_{m_1}^2 - C_{m_2}^2 +\cancel{C_{m_1}C_{m_2}}-\cancel{C_{m_1}C_{m_2}}) &= -\frac{1}{2} (C_{\theta_2}^2 - C_{\theta_1}^2 +\cancel{C_{\theta_1}C_{\theta_2}}-\cancel{C_{\theta_1}C_{\theta_2}}) - \Omega r(C_{\theta_2} - C_{\theta_1}) \\ + \frac{1}{2} \left(C_{m_1}^2 - C_{m_2}^2 + C_{\theta_1}^2 - C_{\theta_2}^2 \right) &= -(C_{\theta_1} - C_{\theta_2}) \Omega r \\ + \frac{1}{2} \left((C_{m_1}^2 + C_{\theta_1}^2) - \left(C_{m_2}^2 + C_{\theta_2}^2 \right) \right) &= - (C_{\theta_1} - C_{\theta_2}) \Omega r \\ + \frac{1}{2} \left(C_{1}^2 - C_{2}^2 \right) &= -(C_{\theta_1} - C_{\theta_2}) \Omega r + \end{aligned} +\end{equation} + +\where \(C^2 = C_m^2 + C_\theta^2\). +Then applying the definition in \cref{eqn:gamma2pre} (and multiplying both sides by -1), + +\begin{equation} + \label{eqn:vjumprel} + \stepbox{ + \frac{1}{2} \left(C_{2}^2 - C_{1}^2 \right) = -\frac{B(\Gamma_2-\Gamma_1)}{2 \pi} \Omega. +} +\end{equation} + + +% Referencing \cref{eqn:absolutevelocities,eqn:relativevelocities,eqn:vmwm} +% we see that the sheet strengths can also be defined in terms of \(W\) as + +% \begin{align} +% \gamma_m &= W_{\theta_1} - W_{\theta_2} \\ +% \gamma_\theta &= W_{m_2} - W_{m_1} +% \end{align} + +% \noindent which we can follow a similar process for. +% Starting with \cref{eqn:wgam}, but substituting in the second terms of \cref{eqn:wm,eqn:wt} we have + +% \begin{equation} +% \begin{aligned} +% \frac{1}{2}(W_{m_1} + W_{m_2}) \gamma_\theta &- \frac{1}{2} (W_{\theta_1} + W_{\theta_2} ) \gamma_m = 0\\ +% \frac{1}{2}(W_{m_1} + W_{m_2}) (v_{m_2} - v_{m_1}) &- \frac{1}{2} (W_{\theta_1} + W_{\theta_2} ) (v_{\theta_1} - v_{\theta_2}) = 0 \\ +% \frac{1}{2}(-W_{m_1}^2 + W_{m_2}^2 +\cancel{W_{m_1}W_{m_2}}-\cancel{W_{m_1}W_{m_2}}) &= \frac{1}{2} (W_{\theta_1}^2 - W_{\theta_2}^2 +\cancel{W_{\theta_1}W_{\theta_2}}-\cancel{W_{\theta_1}W_{\theta_2}}) \\ +% \frac{1}{2} \left(W_{m_2}^2 - W_{m_1}^2 + W_{\theta_2}^2 - W_{\theta_1}^2 \right) &= 0 \\ +% \frac{1}{2} \left(W_{m_2}^2 + W_{\theta_2}^2 - \left(W_{m_1}^2 + W_{\theta_1}^2 \right) \right) &= 0. \\ +% \end{aligned} +% \end{equation} + +% \noindent Thus + +% \begin{equation} +% \frac{1}{2} \left( W_2^2 - W_1^2 \right) = 0, +% \end{equation} + +% \noindent or in other words,\question{what is the take away here? it doesn't seem to be used anywhere else. Does it justify our usage of average velocities?, but that seems self-fulfilling} + +% \begin{equation} +% \norm{W_2} = \norm{W_1}. +% \end{equation} + + + +%As seen in \cref{fig:vortexsheets} the spacing between the \(\gamma_m\) vortex sheets, \(\ell_m\), is the local circumference, divided by the number of blades, in other words, the spacing between blades: +% +%\begin{equation} +% \ell_m = \frac{2\pi r}{B}. +%\end{equation} +%% +%The circulation to length ratio defining the strength of \(\gamma_m\) is then +% +%\begin{equation} +% \gamma_m = \frac{-\Delta\Gamma}{\ell_m}=-\frac{B\Delta \Gamma}{2 \pi r}. +%\end{equation} +% +%\noindent We can generalize this to any downstream location by using the total local circulation jump, \(\Delta \widetilde{\Gamma}\), where +% +%\begin{equation} +% \label{eqn:gammatilde} +% \widetilde{\Gamma} = \sum_{i=1}^{N} B_i \Gamma_i, +%\end{equation} +% +%\where \(N\) is the number of upstream rotors, \(B_i\) is the number of blades on the \(i\)th upstream rotor, and \(\Gamma_i\) is the local circulation along one blade on the \(i\)th upstream rotor. +%% +%Applying the total local circulation jump for all upstream rotors gives us the general form of \(\gamma_m\): +% +%\begin{equation} +% \label{eqn:gammam1} +% \gamma_m = -\frac{\Delta \widetilde{\Gamma}}{2 \pi r}. \\ +%\end{equation} +% +% +%For \(\gamma_\theta\), the length between sheets can be found by relating what we know about the blade element frame velocity triangle to the lengths between vortex filaments such that +% +%\begin{equation} +% \frac{-W_\theta}{W_m} = \frac{-\ell_m}{\ell_\theta}. +%\end{equation} +% +%\noindent Thus the length between the \(\gamma_\theta\) vortex sheets is +% +%\begin{equation} +% \label{eqn:elltheta} +% \ell_\theta = \frac{-2 \pi r}{B}\frac{W_m}{-W_\theta}. +%\end{equation} +% +%\noindent Now taking the circulation to length ratio to get the smeared \(\gamma_\theta\) strengths yields (noting the negatives in \cref{eqn:elltheta} cancel, leaving only the negative associated with the \(\Delta\Gamma\)) +% +%\begin{equation} +% \label{eqn:gammat1} +% \gamma_\theta = \frac{-\Delta\Gamma}{\ell_\theta} = - \frac{B\Delta \Gamma}{2 \pi r} \frac{W_\theta}{W_m}. +%\end{equation} +% +%We have a problem with this definition for \(\gamma_\theta\), however. +%Although, \cref{eqn:gammat1} is true immediately behind a rotor, \textbf{it is not generally applicable further downstream} as \(\Omega r\) (and thus \(W_\theta\)) changes outside of the immediate influence of the rotor disk. +%% +%It will take a bit more development and consideration of pressure relations\sidenote{Specifically, setting the pressure jump across vortex sheets to zero, rather than assuming a constant \(\Omega r\).} to obtain the general expression for \(\gamma_\theta\). +% +%The following explanation is somewhat lengthy, therefore, by way of overview, we will first go through some pressure relations (\cref{ssec:pressure}), including total pressure and static pressure. +%% +%We will then look at several jump relations (\cref{ssec:diskjumps,ssec:vortexsheetjumps}), including the disk jumps of enthalpy and entropy and the vortex sheet jumps of velocity and pressure. +%% +%All these together will give us the pieces we need to assemble a general expression for the tangential vortex sheet strength (\cref{ssec:vortexsheetstrength}). + + + +\subsubsection{Thermodynamic Pressure Relationships} +\label{ssec:pressure} + +\paragraph{Total Pressure} + + +To determine the pressure relationships, we begin with the understanding that a rotor induces downstream changes in total enthalpy and entropy which are accompanied by changes in total pressure. +% +We can relate these changes in pressure, enthalpy and entropy through the first and second laws of thermodynamics as follows. +% +The first law of thermodynamics expressed in terms of enthalpy and in differential form is: + +\begin{equation} + \label{eqn:firstlaw} + \d q = \d h - v\d p_t +\end{equation} + +\where \(q\) is specific heat, \(h\) is specific entropy, \(v\) is specific volume and \(p_t\) is total pressure. +% +The second law of thermodynamics, assuming an idealized (reversible) process, is expressed in differential form as: + +\begin{equation} + \label{eqn:secondlaw} + T \d s = \d q +\end{equation} + +\where \(T\) is total temperature, and \(s\) is specific entropy. +% +Plugging in the second law (\cref{eqn:secondlaw}) into the first law (\cref{eqn:firstlaw}) gives: + +\begin{equation} + \label{eqn:tds2} + T ds = \d h - v\d p_t +\end{equation} + +Which is a form of Gibb's equation in terms of enthalpy. +% +We now have an expression relating pressure, enthalpy, and entropy. +% +We will now use this differential expression (\cref{eqn:tds2}) to arrive at a simpler and more useful expression for our application. +% +First, we'll isolate entropy on the left hand side for convenience. + +\begin{equation} + \label{eqn:tds2b} + \d s = \frac{\d h}{T} - \frac{v \d p_t}{T}. +\end{equation} + +\noindent Moving away from using enthalpy briefly, we will assume: + +\begin{assumption} + + \asm{The fluid is a calorically perfect gas.} + + \limit{The specific heat capacity is constant.} + + \why{Our application is primarily at low Mach flows in electric ducted fans, for which air can reasonably be modeled as a calorically perfect gas. + This allows us to obtain a simple relation between change in enthalpy, entropy and pressure.} + +\end{assumption} + +\noindent In which case, we can relate enthalpy and temperature in both the following ways: + +\begin{eqboxed}{\stepbox}{align} +\label{eqn:dhdef} + \d h = c_p \d T \\ +\label{eqn:hdef} + h = c_p T, +\end{eqboxed} + +\where \(c_p\) here is the specific heat. +% +Substituting \cref{eqn:dhdef}\sidenote{note that since the rest of the terms are still in differential form, we cannot directly use \cref{eqn:hdef} at this point.} into \cref{eqn:tds2b}, we have + +\begin{equation} + \d s = \frac{c_p \d T}{T} - \frac{v \d p_t}{T}. +\end{equation} + +\noindent If we also apply the ideal gas law, + +\begin{equation} + \begin{aligned} + p_tv &= RT \\ + v &= \frac{RT}{p_t} + \end{aligned} +\end{equation} + +\noindent to the last term, we have + +\begin{equation} + \label{eqn:tds2c} + \begin{aligned} + \d s &= \frac{c_p \d T}{T} - \frac{R\cancel{T} \d p_t}{\cancel{T}p_t} \\ + \d s &= c_p\frac{\d T}{T} - R\frac{\d p_t}{p_t}. \\ +\end{aligned} +\end{equation} + +We now integrate \cref{eqn:tds2c} from the ambient to local conditions: + +\begin{equation} + \begin{aligned} + \int_{s_\infty}^s \d s &= c_p \int_{T_\infty}^T \frac{\d T}{T} - R \int_{p_{t_\infty}}^{p_t} \frac{\d p_t}{p_t} \\ + s\big|_{s_\infty}^s &= c_p \ln(T)\big|_{T_\infty}^T - R \ln(p_t)\big|_{p_{t_\infty}}^{p_t} \\ + s-s_\infty &= c_p \left[\ln(T) - \ln(T_\infty)\right] - R \left[\ln(p_t) - \ln(p_{t_\infty})\right] \\ + s-s_\infty &= c_p \ln\left(\frac{T}{T_\infty}\right) - R \ln\left(\frac{p_t}{p_{t_\infty}}\right). + \end{aligned} +\end{equation} + +% \noindent We can then apply some algebra as follows: + + +% \begin{equation} +% \begin{alignedat}{2} +% s-s_\infty &= c_p \ln\left(\frac{T}{T_\infty}\right) - R \ln\left(\frac{p_t}{p_{t_\infty}}\right) \\ +% s-s_\infty &= \ln \left[ \left( \frac{T}{T_\infty} \right)^{c_p} \right]- \ln \left[ \left( \frac{p_t}{p_{t_\infty}} \right)^R \right] & \text{bring multiples inside logarithms} \\ +% s-s_\infty &= \ln \left[ \frac{ \left( \frac{T}{T_\infty} \right)^{c_p} }{ \left( \frac{p_t}{p_{t_\infty}} \right)^R }\right] & \text{consolidate logarithm terms} \\ +% \frac{s-s_\infty}{R} &= \ln \left[ \frac{ \left( \frac{T}{T_\infty} \right)^{c_p} }{ \left( \frac{p_t}{p_{t_\infty}} \right)^R }\right]^{1/R} & \text{divide by } R \\ +% \frac{s-s_\infty}{R} &= \ln \left[ \frac{ \left( \frac{T}{T_\infty} \right)^\frac{c_p}{R} }{ \left( \frac{p_t}{p_{t_\infty}} \right) }\right] & \text{bring } R \text{ into logarithm} \\ +% \frac{s-s_\infty}{R} &= \ln \left[ \frac{ \left( \frac{T}{T_\infty} \right)^\frac{c_p}{c_p-c_v}}{ \left( \frac{p_t}{p_{t_\infty}} \right) }\right] & \text{apply specific heat relation} +% \end{alignedat} +% \end{equation} + +% \where we have used the specific heat relation: \(c_p = c_v + R\). +% +Next, we want to bring enthalpy back into the picture. +% +To do so, we now utilize \cref{eqn:hdef}, multiplying the temperatures by \(c_p\) to get back into terms of specific enthalpy + +% \begin{equation} +% \begin{aligned} +% \frac{s-s_\infty}{R} &= \ln \left[ \frac{ \left( \frac{c_pT}{c_pT_\infty} \right)^\frac{c_p}{c_p-c_v}}{ \left( \frac{p_t}{p_{t_\infty}} \right) }\right] \\ +% \frac{s-s_\infty}{R} &= \ln \left[ \frac{ \left( \frac{h}{h_\infty} \right)^\frac{c_p}{c_p-c_v}}{ \left( \frac{p_t}{p_{t_\infty}} \right) }\right] +% \end{aligned} +% \end{equation} + +\begin{equation} + \label{eqn:entropy1} + \begin{aligned} + s-s_\infty &= c_p \ln\left(\frac{c_pT}{c_pT_\infty}\right) - R \ln\left(\frac{p_t}{p_{t_\infty}}\right)\\ + s-s_\infty &= c_p \ln\left(\frac{h}{h_\infty}\right) - R \ln\left(\frac{p_t}{p_{t_\infty}}\right). + \end{aligned} +\end{equation} + +% \noindent We will finish up our algrebra by getting things in terms of the specific heat ratio, \(\gamma = c_p/c_v\). + +% \begin{equation} +% \begin{aligned} +% \frac{c_p}{c_p-c_v} &= \frac{1}{1-\frac{c_v}{c_p}} \\ +% &= \frac{1}{1-\gamma} \\ +% &= \frac{\gamma}{\gamma -1}, +% \end{aligned} +% \end{equation} + +% \noindent substituting this in finally leaves us with + +% \begin{equation} +% \label{eqn:entropy1} +% % \eqbox{ +% \frac{s- s_\infty}{R} = \ln \left[ \ddfrac{\left(\frac{h}{h_\infty}\right)^{\gamma/(\gamma-1)}}{\frac{p_t}{p_{t_\infty}}} \right]. +% % } +% \end{equation} + +% \where \(s-s_\infty\) is the change in entropy from the freestream to the point in question, \(h/h_\infty\) is the enthalpy ratio, \(p_t/p_{t_\infty}\) is the total pressure ratio, \(R\) is the universal gas constant, and \(\gamma\) here is the specific heat. + +If we now define changes relative to the (far upstream) freestream values (\(\infty\) subscripts) as: + +\begin{align} + \widetilde{p_t} =& p_t - p_{t_\infty} \\ + \widetilde{h} =& h - h_\infty \\ + \widetilde{s} =& (s - s_\infty)/R, +\end{align} + +\noindent then we can express \cref{eqn:entropy1} as\sidenote{Remembering that for \(x/y\), subtracting and adding \(1 = y/y\) gives \((x-y)/y + y/y = (x-y)/y +1\)} + +% \begin{equation} +% \label{eqn:entropy2} +% \widetilde{s} = \ln \left[ \ddfrac{\left( 1 + \frac{ \widetilde{h} }{ h_\infty} \right)^{ \gamma/(\gamma-1) } }{ 1+\frac{ \widetilde{p_t} }{ p_{t_\infty } } } \right]. +% \end{equation} + +\begin{equation} + \label{eqn:entropy2} + \widetilde{s} = \frac{c_p}{R} \ln\left(1+\frac{\widetilde{h}}{\widetilde{h}_\infty}\right) - \ln\left(1+\frac{\widetilde{p}_t}{\widetilde{p}_{t_\infty}}\right). +\end{equation} + +% \noindent Rearranging: + +% \begin{equation} +% \label{eqn:entropy3} +% 1 + \frac{\widetilde{p_t}}{p_{t_\infty}} = \left( 1 + \frac{\widetilde{h}}{h_\infty}\right)^{\gamma/(\gamma-1)} e^{-\widetilde{s}}. +% \end{equation} + +Now we will assume that + +\begin{assumption} + \label{asm:lowmach} + + \asm{The Mach number is sufficiently low such that} + + \begin{align} + \frac{\widetilde{p_t}}{p_{t_\infty}} &\ll 1 \\ + \frac{\widetilde{h}}{h_\infty} &\ll 1 \\ + \widetilde{s} &\ll 1, + \end{align} + + \limit{We are limited to low mach number regimes.} + + \why{We can simplify the relationship between entropy, enthalpy, and pressure, again allowing for a simpler methodology and faster computation.} + +\end{assumption} + +\noindent With \cref{asm:lowmach} we can simplify \cref{eqn:entropy2} by noting that the Taylor series expansion for a logarithm is + +\begin{equation} + \ln(x) = (x-1) + \frac{1}{2}(x-1)^2 + \text{higher order terms}, +\end{equation} + +\noindent if \(x\approx1\). +% +Therefore, by \cref{asm:lowmach}, we can simplify \cref{eqn:entropy2} using the first term in Taylor series approximations of each of the logarithm terms. + +\begin{equation} + \begin{alignedat}{2} + \widetilde{s} &= \frac{c_p}{R} \ln \left( 1 + \frac{ \widetilde{h} }{ h_\infty} \right) - \ln\left( 1+\frac{ \widetilde{p_t} }{ p_{t_\infty } }\right) \\ + \widetilde{s} &\simeq \frac{c_p}{R} \frac{ \widetilde{h} }{ h_\infty} - \frac{ \widetilde{p_t} }{ p_{t_\infty} } \\ + \widetilde{s} &\simeq \frac{\cancel{c_p}}{R} \frac{ \widetilde{h} }{ \cancel{c_p}T_\infty} - \frac{ \widetilde{p_t} }{ p_{t_\infty} } & \text{apply \cref{eqn:hdef}}\\ + \widetilde{s} &\simeq \frac{\rho_\infty}{p_{t_\infty}} \widetilde{h} - \frac{ \widetilde{p_t} }{ p_{t_\infty} } & \text{apply ideal gas law} \\ + p_{t_\infty} \widetilde{s} &\simeq \rho_\infty \widetilde{h} - \widetilde{p_t}. + \end{alignedat} +\end{equation} + +\noindent Rearranging leaves us with + +\begin{equation} + \label{eqn:totalpressure1} + \stepbox{ + \widetilde{p_t} \simeq \rho \left(\widetilde{h}-\widetilde{S} \right), +} +\end{equation} + +\where + +\begin{equation} + \widetilde{S} \equiv \frac{p_{t_\infty}}{\rho_\infty} \widetilde{s}, +\end{equation} + + +\where \(\rho\) is the air density, and for our steady, low Mach application, \(p_{t_\infty}/\rho_\infty\) is nearly constant, so we can convect \(\widetilde{S}\) downstream in place of \(\widetilde{s}\). +% +Therefore we end up seeing that the total pressure at any point in the rotor wake is the freestream total pressure plus any upstream work or losses: + +\begin{equation} + \label{eqn:totalpressure} + p_t = p_{t_\infty} + \rho \left(\widetilde{h}-\widetilde{S} \right) +\end{equation} + + +\paragraph{Static Pressure} +\label{sssec:staticpressure} + +The static pressure, \(p_s\), is the total pressure minus the dynamic pressure: + +\begin{equation} + \label{eqn:bernoulli} + p_s = p_{t} - \frac{1}{2}\rho V_{visc}^2. +\end{equation} + +\noindent Substituting in from \cref{eqn:totalpressure} gives us + +\begin{equation} + \label{eqn:staticpressurevisc} + p_s = p_{t_\infty} - \frac{1}{2}\rho V_{visc}^2 + \rho\left(\widetilde{h}-\widetilde{S} \right), +\end{equation} + +\where \(V_{visc}\) is the real viscous flow velocity. +% +Rather than finding the full viscous flow field, which (among other things) would require more costly wake treatment, +we can use the equivalent inviscid flow velocity, \(V_{inv}\), +through the addition of a source sheet at the drag elements in the flow (see \cref{asm:rotorsources}), +removing the need for trailing vortex sheets for drag elements. +% +See \cref{fig:rvf_eif} for a visual representation of this concept. +% +Using the equivalent inviscid flow simply eliminates entropy from \cref{eqn:staticpressurevisc} + +\begin{equation} + \label{eqn:staticpressure} + \stepbox{ + p_s = p_{t_\infty} - \frac{1}{2}\rho V_{inv}^2 + \rho \widetilde{h}. +} +\end{equation} + + +\subsubsection{Disk Jumps} +\label{ssec:diskjumps} + +The specific work, \(w_c\), done by a rotor is related to a jump in enthalpy across the rotor. +% +As such, we can obtain \(\widetilde{h}\) as the accumulation of changes in enthalpy across upstream disks. + +\begin{equation} + \label{eqn:hjump} + \eqbox{\widetilde{h} = \sum_{i=1}^N \Delta h_{\text{disk}_m}} \\ +\end{equation} + +\where the jump relation \(\Delta h_{\text{disk}}\) is defined according to the Euler turbine equation: + +\begin{equation} + \label{eqn:hjumprel} + \Delta h_{\text{disk}} = w_c = \Omega \Delta(r C_\theta). +\end{equation} + +\noindent We can relate the jump in enthalpy to the circulation by applying our lifting line assumption (\cref{asm:liftingline}), +which means that there is no radial deviation in flow across the blade, as well as substituting in for \(C_\theta\) from \cref{eqn:vtheta} (for a single disk). + +\begin{equation} +\label{eqn:hjumprel} + \begin{aligned} + \Delta h_{\text{disk}} &= \Omega r C_\theta \\ + &= \Omega \cancel{r} \frac{B\Gamma}{2\pi \cancel{r}} \\ + &= \Omega \frac{B\Gamma}{2\pi}. + \end{aligned} +\end{equation} + + +% We can obtain \(\widetilde{S}\) as the accumulation of changes in entropy across upstream disks. + +% \begin{equation} +% \widetilde{S} = \sum_{i=1}^N \Delta S_{\text{disk}_m} +% \end{equation} + +% \where the jump relation \(\Delta S_{\text{disk}}\) is defined as + +% \begin{equation} +% \label{eqn:hjumprel} +% \Delta S_{\text{disk}} &= \frac{1}{2} V_m^2 C_f +% \end{equation} + +% \where \(C_f\) is the friction coefficient of an equivalent screen representing the friction-producing disk. + + + + + +\paragraph{Pressure Jumps} + +Using \cref{eqn:staticpressure}, we see the jump in static pressure across a vortex sheet is + +% \begin{align} + % p_{s_2} - p_{s_1} &= -\frac{1}{2} \rho \left(V_{{visc}_2}^2 - V_{{visc}_1}^2 \right) + \rho \left( \widetilde{h}_2 - \widetilde{h}_1 - (\widetilde{S}_2 - \widetilde{S}_1)\right) \\ + % \shortintertext{for the real viscous flow case, or} +\begin{equation} + \label{eqn:pressurejump} + p_{s_2} - p_{s_1} = -\frac{1}{2} \rho \left(V_{{inv}_2}^2 - V_{{inv}_1}^2 \right) + \rho \left( \widetilde{h}_2 - \widetilde{h}_1 \right). +\end{equation} + +% \noindent for the equivalent inviscid flow case. + +\noindent If we substitute \cref{eqn:hjumprel} in for the enthalpy terms, and \cref{eqn:vjumprel} for the velocity terms in \cref{eqn:pressurejump}, we can simplify as follows + +\begin{align} + p_{s_2} - p_{s_1} &= -\cancel{\rho \frac{B(\Gamma_2-\Gamma_1)}{2 \pi} \Omega} + \cancel{\rho \frac{B(\Gamma_2-\Gamma_1)}{2 \pi} \Omega} \\ + p_{s_2} - p_{s_1} &= 0 +\end{align} + +\noindent which shows that there is no static pressure jump across the sheet, as would be expected in reality. + + + + + +\subsubsection{Tangential Vortex Sheet Strength} +\label{ssec:vortexsheetstrength} + +As promised at the beginning of \cref{ssec:pressure}, we are finally posed to obtain a general expression for the tangential vortex sheet strength, \(\gamma_\theta\). +% +Just as a reminder, we've needed all this preparation because the tangential sheet strength at an arbitrary downstream location is not generally equal to the value just behind the rotor disk. +% +This is because we don't automatically know what the \(\Omega r\) portion of the tangential velocity is anywhere except right at the rotor disk. +% +Thus we have used the zero static pressure jump across the wake sheet as our condition for finding a general term for \(\gamma_\theta\). +% +We'll begin with \cref{eqn:pressurejump}, setting the pressure jump to zero, as is physical, and divide out the density (assumed to be constant in our low Mach case) to obtain + +\begin{equation} + \frac{1}{2} \left(C_2^2 - C_1^2 \right) = \widetilde{h}_2 - \widetilde{h}_1. +\end{equation} + +\noindent Expanding out the left hand side gives + +\begin{equation} + C_{m_2}^2 - C_{m_1}^2 + C_{\theta_2}^2 - C_{\theta_1}^2 = 2 \left( \widetilde{h}_2 - \widetilde{h}_1 \right). +\end{equation} + +\noindent Applying \cref{eqn:vtheta} for the \(C_\theta\) terms: + +\begin{equation} + \label{eqn:gent} + C_{m_2}^2 - C_{m_1}^2 = -\left(\frac{1}{2 \pi r}\right)^2 \left(\widetilde{\Gamma}_2^2-\widetilde{\Gamma}_1^2\right) + 2 \left( \widetilde{h}_2 - \widetilde{h}_1 \right). +\end{equation} + +To get the general expression for \(\gamma_\theta\), we have two options: if \(C_{m_2}\) is known, then using \cref{eqn:gammat2} + +\begin{equation} + \gamma_\theta = C_{m_1} - C_{m_2}, + \tag{\ref{eqn:gammat2}} +\end{equation} + +\where from \cref{eqn:gent} + +\begin{equation} +\label{eqn:vm1} + C_{m_1}^2 = C_{m_2}^2 + \left(\frac{1}{2 \pi r}\right)^2 \left(\widetilde{\Gamma}_2^2-\widetilde{\Gamma}_1^2\right) - 2 \left( \widetilde{h}_2 - \widetilde{h}_1 \right), +\end{equation} + +\noindent gives us our general expression. +We can march \cref{eqn:vm1} radially inward, starting with \(C_{m_2} = C_\infty\) just outside the outermost vortex sheet. +% +On the other hand, if \(C_{m_\text{avg}}\) is known instead, we can still use \cref{eqn:gent} to obtain \(\gamma_\theta\) as follows: + +\begin{align} + \label{eqn:vmavg} + C_{m_\text{avg}} &= \frac{1}{2}\left(C_{m_1} + C_{m_2}\right) \\ + C_{m_2}^2 - C_{m_1}^2 &= \left(C_{m_1} + C_{m_2}\right)\left(C_{m_2} - C_{m_1}\right). +\end{align} + +\noindent Substituting from \cref{eqn:gammat2} + +\begin{equation} + C_{m_2}^2 - C_{m_1}^2 = -\left(C_{m_1} + C_{m_2}\right) \gamma_\theta. +\end{equation} + +\noindent Substituting from \cref{eqn:vmavg} + +\begin{equation} + C_{m_2}^2 - C_{m_1}^2 = -2C_{m_\text{avg}} \gamma_\theta. +\end{equation} + +\noindent Rearranging for \(\gamma_\theta\) and substituting from \cref{eqn:gent}: + +\begin{equation} + \label{eqn:gamma_theta_general} + \eqbox{ + \gamma_\theta = -\frac{1}{2 C_{m_\text{avg}}} \left(- \left(\frac{1}{2 \pi r}\right)^2 \left(\widetilde{\Gamma}_2^2-\widetilde{\Gamma}_1^2\right) + 2 \left( \widetilde{h}_2 - \widetilde{h}_1 \right) \right). + } +\end{equation} + + +% For initialization purposes, we can approximate the average meridional velocity at the rotors from momentum theory as +% +%\begin{equation} +% \label{eqn:Vm} +% C_{m_\text{avg}} = v_z + V_\infty, +%\end{equation} +% +%\where \(v_z\) is the axially induced velocity of the rotor found from conservation of momentum: +% +%\begin{equation} +% \begin{aligned} +% \rho V_\infty^2 A &= \rho (V_\infty - v_z)^2 + T \\ +% \rho A [V_\infty^2 - (V_\infty - v_z)^2] &= T \\ +% \rho A (V_\infty^2 - V_\infty^2 + V_\infty v_z + v_z^2) &= T \\ +% \rho A ( V_\infty v_z + v_z^2) &= T \\ +% V_\infty v_z + v_z^2 &= \frac{T}{\rho A} \\ +% v_z^2 + V_\infty v_z - \frac{T}{\rho A} &= 0 +% \end{aligned} +%\end{equation} +% +%\noindent then using the quadratic formula, we arrive at +% +%\begin{equation} +% \label{eqn:vx} +% v_z = \left( V_\infty^2 + \frac{2T}{\rho A_d} \right)^{1/2} - \frac{V_\infty}{2}, +%\end{equation} +% +%\where \(\rho\) is the freestream air density and \(A_d=\pi R_\text{tip}^2\) is the disk area. We can get the total thrust, \(T\), for a rotor from a sum of the weighted averaged contributions across the blade panels +% +%\begin{equation} +%T = \frac{\rho A_d \Omega}{2 \pi} \frac{\sum_{i=1}^{nw} B\overline{\Gamma}_i \Delta A_i}{A_a} +%\end{equation} +% +%\where \(\overline{\Gamma}\) is the average circulation of the blade elements at the edges of the ith blade panel, the wake sheet begin shed from the center thereof (thus the number of wake sheets, \(nw \), is one fewer than the number of blade elements). \(\Delta A\) is the annular area of the blade section between those blade elements, and \(A_a\) is the total annular area of the rotor. +% +%For rotors behind others, \(V_\infty\) in \cref{eqn:Vm,eqn:vx} is increased by the accumulation of \(v_z\) of upstream rotors. +% +%After initialization, we can simply use averages of the induced velocities calculated from +% +%\begin{equation} +% \label{eqn:vm_induced} +% \eqbox{ +% v_{m}^{P} = A^{PB} \gamma^{B} + A^{PW} \gamma_\theta^{W} + B^{PR} \sigma^{R}, +% } +%\end{equation} +% +%\where \(v_m^P\) are the meridional induced velocities at the points of interest (for example, at the rotor plane(s)), respectively, \(A^{PB}\) is the vortex coefficient matrix for the duct-hub system on the points of interest, \(A^{PW}\) is the vortex coefficient matrix of the wake influencing the points of interest, and \(B^{PR}\) is the source coefficient matrix for the rotors influencing the points of interest. +%For the rotor source strengths, \(\sigma^R\), we take the average of the strengths found at the blade element locations using \cref{eqn:rotorsourcestrengths} in order to obtain the strengths at the source panel control points. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% ROTOR WAKE + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Generating Rotor Wake Geometry} +\label{sec:rotorwakegeometry} + +The question we must now ask ourselves is \textit{where} is \cref{eqn:gamma_theta_general} applied? +% +We may first think to model the rotor wake by integrating along streamlines, which could be done. +% +An alternative method, however, is to define a ``grid'' defined by the solution of an elliptic partial differential system, using the solid bodies as the boundaries of the grid. +% +By wisely choosing the partial differential equations to solve, we can generate a grid that is aligned with the streamlines for the inviscid isolated body system. +% +Thompson, Thames, and Mastin\scite{thompson_1974} provide further insights into the benefits of this approach, which we will use for our application. + +\begin{assumption} + + \asm{The wake streamlines can be reasonably approximated as lying on an elliptic grid.} + + \limit{We are again ignoring viscous effects of the rotor/wake.} + + \why{This is perhaps one of the greatest reducers of computational cost for the code, as it allows us to pre-compute the potentially large matrices for the induced velocities in the system.} + +\end{assumption} + +By defining the wake geometry to lie on an elliptic grid, we can discretize the axisymmetric wake lines into axisymmetric vortex panels and apply the circulation density (vortex strength distribution) from \cref{eqn:gamma_theta_general} along the discretized wake panels. +% +In order to define our wake geometry, our first task is to define the appropriate partial differential equation. +% +As we are seeking to find the streamlines, we begin with the stream function. + + +\subsubsection{Axisymmetric Stream Function} + +The \(z\) and \(r\) components of absolute velocity can be defined in terms of the axisymmetric stream function, \(\psi(z,r)\), as + +\begin{subequations} + \label{eqn:axisymfreestream} + \begin{align} + C_z &= \frac{1}{\rho r}\pd{\psi}{r} \\ + C_r &= \frac{-1}{\rho r}\pd{\psi}{z} + \end{align} +\end{subequations} + +\where \(\rho \) is the air density. +% +Additionally, the circumferential vorticity is defined as + +\begin{equation} + \label{eqn:omegatheta} + \omega_\theta \equiv \pd{C_z}{r} - \pd{C_r}{z}. +\end{equation} + +\noindent If we plug \cref{eqn:axisymfreestream} into \cref{eqn:omegatheta}, and apply the chain rule, we arrive at + +\begin{equation} + % \pd{V_z}{r} - \pd{V_r}{z} = \frac{1}{\rho r} \left(\psi_{zz} + \psi_{rr} \right) + \psi_z \left( \frac{1}{\rho r} \right)_z + \psi_r \left( \frac{1}{\rho r} \right)_r. + \omega_\theta = \frac{1}{\rho r} \left(\pdd{\psi}{z} + \pdd{\psi}{r} \right) + \pd{\psi}{z} \pd{}{z}\left( \frac{1}{\rho r} \right) + \pd{\psi}{r} \pd{}{r}\left( \frac{1}{\rho r} \right). +\end{equation} + +\noindent which we can rearrange into a Poisson equation for \(\psi\): + +\begin{equation} + \label{eqn:poissonpsi} + \begin{alignedat}{2} + \omega_\theta =& \frac{1}{\rho r} \left(\pdd{\psi}{z} + \pdd{\psi}{r} \right) + \pd{\psi}{z} \pd{}{z}\left( \frac{1}{\rho r} \right) + \pd{\psi}{r} \pd{}{r}\left( \frac{1}{\rho r} \right) \\ + \omega_\theta =& \frac{1}{\rho r} \left(\pdd{\psi}{z} + \pdd{\psi}{r} \right) \\ + &- \rho r C_r \pd{}{z}\left( \frac{1}{\rho r} \right) + \rho r C_z \pd{}{r}\left( \frac{1}{\rho r} \right) & \text{(sub in \cref{eqn:axisymfreestream})}\\ + \rho r \omega_\theta =& \pdd{\psi}{z} + \pdd{\psi}{r} \\ + &- \rho^2 r^2 C_r \pd{}{z}\left( \frac{1}{\rho r} \right) + \rho^2 r^2 C_z \pd{}{r}\left( \frac{1}{\rho r} \right) & \text{(remove fraction)}\\ + \rho r \omega_\theta =& \pdd{\psi}{z} + \pdd{\psi}{r} \\ + &- \rho^2 r^2 C_r \left[\cancelto{0}{\frac{1}{\rho}\pd{}{z}\left( \frac{1}{r} \right)} + \frac{1}{r}\pd{}{z}\left( \frac{1}{\rho} \right)\right] \\ + &+ \rho^2 r^2 C_z \left[\frac{1}{\rho}\pd{}{r}\left( \frac{1}{r} \right) + \frac{1}{r}\pd{}{r}\left( \frac{1}{\rho} \right)\right]& \text{(product rule)}\\ + \rho r \omega_\theta =& \pdd{\psi}{z} + \pdd{\psi}{r} \\ + &- \rho^2 r^2 C_r \frac{-1}{\rho^2 r}\pd{\rho_z}{z} + \rho^2 r^2 C_z \left(\frac{-1}{\rho r^2} + \frac{-1}{\rho^2 r}\pd{\rho_r}{r}\right)& \text{(take derivatives)}\\ + \rho r \omega_\theta =& \pdd{\psi}{z} + \pdd{\psi}{r} - r C_r \pd{\rho_z}{z} + + r C_z \pd{\rho_r}{r} - \rho C_z & \text{(simplify)}\\ + \rho r \omega_\theta =& \nabla^2\vect{\psi} + r \left(\vect{C}_m \times \nabla\rho\right) \hat{\vect{e}}_\theta - \rho C_z & \text{(condense)}\\ + \rho r \omega_\theta =& \nabla^2\vect{\psi} + r \left(\vect{C}_m \times \nabla\rho\right) \hat{\vect{e}}_\theta - \frac{1}{r} \pd{\psi}{r} & \text{(sub in \cref{eqn:axisymfreestream})}\\ + \nabla^2\vect{\psi} =& \frac{1}{r} \pd{\psi}{r} - r \left(\vect{C}_m \times \nabla\rho\right) \hat{\vect{e}}_\theta + \rho r \omega_\theta. & \text{(rearrange)}\\ + % \psi_{zz} + \psi_{rr} = \frac{1}{r} \psi_r + r \left( \vect{V}_m \times \nabla \rho \right) \cdot \left(-\hat{\theta} \right) + \rho r \omega_\theta + % \pdd{\psi}{z} + \pdd{\psi}{r} &= \frac{1}{r} \psi_r + r \left( \vect{V}_m \times \nabla \rho \right) \cdot \left(-\hat{\theta} \right) + \rho r \omega_\theta +\end{alignedat} +\end{equation} + +We do not know what the value is for \(\omega_\theta\) immediately, so we will find an expression for it using terms we do have. +% +For an ideal, calorically perfect gas, the Crocco relation applied to our axisymmetric, steady flow in terms of total pressure is + +\begin{equation} + \label{eqn:vmomegat} + \begin{alignedat}{2} + \vect{C} \times \vect{\omega} &= v \nabla \widetilde{p}_t \\ + \vect{C} \times \vect{\omega} &= \frac{1}{\rho} \nabla \widetilde{p}_t & \text{(definition of specific volume)} \\ + \vect{C} \times \vect{\omega} &\simeq \frac{1}{\rho} \nabla \left[\rho\left(\widetilde{h} - \widetilde{S}\right)\right] & \text{(apply \cref{eqn:totalpressure1})} \\ + \vect{C} \times \vect{\omega} &\simeq \nabla \left(\widetilde{h} - \widetilde{S}\right) & \text{(incompressible)} \\ + \vect{C} \times \vect{\omega} &\simeq \nabla \widetilde{h} - \nabla \widetilde{S} & \text{(distributive property)} \\ + C_m \omega_\theta - C_\theta \omega_m &\simeq \nabla \widetilde{h} - \nabla \widetilde{S} & \text{(expand LHS)} \\ + \end{alignedat} +\end{equation} + +\where we have defined \(C_\theta\) in \cref{eqn:vtheta} as + +\begin{equation} + C_\theta = \frac{\widetilde{\Gamma}}{2 \pi r}; + \tag{\ref{eqn:vtheta}} +\end{equation} + +\noindent and the \(\omega_m\) component of vorticity is defined as\sidenote{Remembering that \(\vect{\omega} = \nabla \times \vect{C}\).} + +\begin{equation} +\begin{aligned} + \omega_m &= - \frac{1}{r} \pd{(r C_\theta)}{n} \\ + &= - \frac{1}{2 \pi r} \pd{\widetilde{\Gamma}}{n}. && \text{(plug in \cref{eqn:vtheta})} +\end{aligned} +\end{equation} + +\noindent Thus\sidenote{remembering that \(\pd{A}{n} = \frac{1}{2A}\pd{A^2}{n}\)} + +\begin{equation} +\begin{aligned} + C_\theta \omega_m &\simeq - \frac{\widetilde{\Gamma}}{(2 \pi r)^2} \pd{\widetilde{\Gamma}}{n} \\ + &\simeq - \frac{1}{2} \left(\frac{1}{2 \pi r}\right)^2 \pd{(\widetilde{\Gamma}^2)}{n}, +\end{aligned} +\end{equation} + + +\noindent which we can substitute back into \cref{eqn:vmomegat} to get an expression for \(\omega_\theta\) + +\begin{equation} + \omega_\theta = \frac{- \frac{1}{2} \left(\frac{1}{2 \pi r}\right)^2 \nabla\left(\widetilde{\Gamma}^2\right) + \nabla\widetilde{h} - \nabla\widetilde{S}}{C_m}. +\end{equation} + +\noindent We can now replace the \(\omega_\theta\) term in \cref{eqn:poissonpsi} to get a Poisson equation solely in terms that are part of our solution system: + +\begin{equation} + \nabla^2\vect{\psi} = \frac{1}{r} \pd{\psi}{r} - r \left(\vect{C}_m \times \nabla\rho\right) \hat{\vect{e}}_\theta + \rho r \frac{- \frac{1}{2} \left(\frac{1}{2 \pi r}\right)^2 \nabla\left(\widetilde{\Gamma}^2\right) + \nabla\widetilde{h} - \nabla\widetilde{S}}{C_m}. +\end{equation} + +\noindent We also now take advantage of \cref{asm:lowmach} to eliminate the density dilation term, leaving us with + +\begin{equation} + \label{eqn:poissonpsi1} + \nabla^2\vect{\psi} = \frac{1}{r} \pd{\psi}{r} + \frac{\rho r}{C_m} \left(- \frac{1}{2} \left(\frac{1}{2 \pi r}\right)^2 \nabla\left(\widetilde{\Gamma}^2\right) + \nabla\widetilde{h} - \nabla\widetilde{S}\right). +\end{equation} + +\noindent We may also express this Poisson equation as + +\begin{equation} +\label{eqn:poissonpsi2} +\nabla^2 \vect{\psi} = Q_0 + Q_1 +\end{equation} + +\where + +\begin{align} +Q_0 =& \frac{\psi_r}{r} \\ +\begin{split} + Q_1 =& \frac{\rho r}{C_m^2} \biggr[ - \frac{1}{2} \left(\frac{1}{2 \pi r}\right)^2 \vect{C}_m \times \nabla\left(\widetilde{\Gamma}^2\right) \\ + &~~+ \vect{C}_m \times \nabla \widetilde{h} - \vect{C}_m \times \nabla \widetilde{S} \biggr]\hat{\vect{e}}_\theta +\end{split} +\end{align} + +\noindent The \(Q_0\) term is a result of the axisymmetry of the problem. +% +The three terms of the source term, \(Q_1\), are first, the transverse circulation gradient, second, the transverse work gradient, and last, the transverse loss gradient. +% +% Ignoring the density dilation term for low speed flows gives us our final definition of \(Q_1\): + +% \begin{equation} +% Q_1 = \frac{\rho r}{V_m^2} \left[- \frac{1}{2} \left(\frac{1}{2 \pi r}\right)^2 \vect{C}_m \times \nabla\left(\widetilde{\Gamma}^2\right) +% + \vect{C}_m \times \nabla \widetilde{h} - \vect{C}_m \times \nabla \widetilde{S} \right] \cdot \left(-\hat{\theta}\right) +% \end{equation} + + +\subsubsection{Elliptic Wake Grid} +\label{ssec:generateellipticgrid} + +We are now ready to generate the solution grid, parametrically defined from our global coordinates through Poisson equations:\sidenote{We change our notation style for partial derivatives here as it proves to be easier to read due to the shear number of derivatives in this section.} + +\begin{align} + \label{eqn:poissonxi} + \xi(z,r) &\equiv \nabla^2 \xi = \xi_{zz} + \xi_{rr} = P \\ + \label{eqn:poissoneta} + \eta(z,r) &\equiv \nabla^2\eta = \eta_{zz} + \eta_{rr} = Q. +\end{align} + + +\where \(\eta =\) constant along streamlines (thus \(\eta\) coordinates correspond to the physical location of streamlines) and \(\xi\) is constant along radial lines as seen in \cref{fig:gridcoordinates}. +% +With \(\eta\) corresponding to streamlines, it makes sense to set \cref{eqn:poissoneta} equal to \cref{eqn:poissonpsi2}, such that \(\psi = \eta\) and \(Q = Q_0 + Q_1\). +% +Since the \(\xi\) values are arbitrary, we may as well set \(P=0\) which allows \(\xi\) to be arbitrarily chosen. +% +Note that we don't have the information available for source term, \(Q_1\), before solving, so for initialization we simply set it to zero. +% +Later, after the non-linear solve, we may choose to update the grid and re-solve. + +\begin{figure}[h!] + \centering + \input{figures/elliptic-grid.tikz} + \caption{Elliptic grid coordinate system showing lines of constant \(\eta\) (\primary{blue}) coinciding with streamlines, and lines of constant \(\xi\) (\secondary{red}) are constant relative to change in radius when the \(z\)-coordinates of the upper and lower boundaries are aligned.} + \label{fig:gridcoordinates} +\end{figure} + + +In order to solve for the specific \((\xi, \eta)\) coordinates, we need to invert the dependent and independent variables in \cref{eqn:poissonxi,eqn:poissoneta}. +% +In order to do so, we use the following derivative transformations: + + +\begin{align} + f_z &= \frac{r_\eta f_\xi - r_\xi f_\eta}{J} \\ + f_r &= \frac{- z_\eta f_\xi + z_\xi f_\eta}{J} +\end{align} + + +\where \(J = z_\xi r_\eta - z_\eta r_\xi\). + +The details of the inversion are included in \cref{app:poissontransform}. +% +After the inversion, we are left with expressions for \(z\) and \(r\) with respect to \(\xi\) and \(\eta\). + +%THIS IS THE VERSION IN THE DFDC CODE COMMENTS inigrd.f line 654 +\begin{align} + \alpha z_{\xi\xi} - 2 \beta z_{\xi\eta} + \gamma z_{\eta\eta} &= \frac{J}{r} z_\eta z_\xi \\ + \alpha r_{\xi\xi} - 2 \beta r_{\xi\eta} + \gamma r_{\eta\eta} &= \frac{J}{r} z_\eta r_\xi +\end{align} + + +\noindent or equivalently in terms of \(\alpha, \beta, \gamma\) only: + +\begin{equation} +\label{eqn:ellipticgridsystem} +\eqbox{ + \begin{aligned} + \alpha z_{\xi\xi} - 2 \beta z_{\xi\eta} + \frac{\gamma}{r} \left(r z_{\eta}\right)_\eta - \frac{\beta}{r} r_\xi z_\eta &= 0 \\ + \alpha r_{\xi\xi} - 2 \beta r_{\xi\eta} + \frac{\gamma}{r} \left(r r_{\eta}\right)_\eta - \frac{\beta}{r} r_\xi r_\eta &= 0 + \end{aligned} +} +\end{equation} + +\where + +\begin{align} + \alpha &= z_\eta^2 + r_\eta^2 \\ + \beta &= z_\xi z_\eta + r_\xi r_\eta \\ + \gamma &= z_\xi^2 + r_\xi^2 \\ + J &= z_\xi r_\eta - z_\eta r_\xi +\end{align} + +We can obtain expressions for the velocity in terms of \(z\) and \(r\) if we take the differential identities of the transformations + +\begin{align} + \label{eqn:firstid} + \begin{bmatrix} + z_\xi & z_\eta \\ + r_\xi & r_\eta + \end{bmatrix} + % + \begin{pmatrix} + d\xi \\ + d\eta + \end{pmatrix} + &= + \begin{pmatrix} + dz\\ + dr + \end{pmatrix} \\ + % + \begin{bmatrix} + \xi_z & \xi_r \\ + \eta_z & \eta_r + \end{bmatrix} + % + \begin{pmatrix} + dz \\ + dr + \end{pmatrix} + &= + \begin{pmatrix} + d\xi \\ + d\eta + \end{pmatrix} +\end{align} + +\noindent and invert one, say \cref{eqn:firstid}, + +\begin{equation} + \begin{pmatrix} + d\xi \\ + d\eta + \end{pmatrix} + = + \frac{1}{J}\begin{bmatrix} + r_\eta & -z_\eta \\ + -r_\xi & z_\xi + \end{bmatrix} + % + \begin{pmatrix} + dz\\ + dr + \end{pmatrix} +\end{equation} + +\noindent then set them equal to each other + +\begin{equation} + \begin{bmatrix} + \xi_z & \xi_r \\ + \eta_z & \eta_r + \end{bmatrix} + % + \begin{pmatrix} + dz \\ + dr + \end{pmatrix} + = + \frac{1}{J}\begin{bmatrix} + r_\eta & -z_\eta \\ + -r_\xi & z_\xi + \end{bmatrix} + % + \begin{pmatrix} + dz\\ + dr + \end{pmatrix} +\end{equation} + +\noindent we see that + +\begin{align} + \xi_z &= \frac{r_\eta}{J} \\ + \xi_r &= \frac{-z_\eta}{J} \\ + \eta_z &= \frac{-r_\xi}{J} \\ + \eta_r &= \frac{z_\xi}{J}. +\end{align} + +\noindent Thus the velocities can be computed from \cref{eqn:axisymfreestream} as + +\begin{align} + C_z = \frac{1}{\rho r} \frac{d\psi}{dr} = \frac{\eta_r}{\rho r} &= \frac{z_\xi}{\rho r J} \\ + C_r = \frac{-1}{\rho r} \frac{d\psi}{dx} = \frac{-\eta_z}{\rho r} &= \frac{z_\xi}{\rho r J}. +\end{align} + + +We can now solve for the \(z\) and \(r\) grid node positions by assigning \(\xi\) and \(\eta\) values to each grid line, and solving \cref{eqn:ellipticgridsystem} using the boundary conditions of fixed geometry (\(z,~r\) positions) on solid walls and the inlet plane\sidenote{This is a Dirichlet boundary condition.}, and fixed velocity magnitude (\(C_z^2+C_r^2\)) on streamlines and the outlet plane\sidenote{This is a Neumann boundary condition.}. + + +One final consideration is the end of the wake. +% +By Helmholtz` theorems, we cannot just have the vortex filaments of the wake (smeared or otherwise) simply end. +% +On the rotor blades, we have lines of circulation [(reference one of the figures)] from which the wake filaments are shed (as would be expected from a lifting line method). +% +We have not, however, defined those shed wake filaments to be semi-infinite, but rather to be discretized into smeared vortex panels. +% +Therefore we need to either extend them to infinity, or ``close the loop;'' we choose the latter. +% +At the end of each wake element, we add a panel similar to the trailing edge panels for the centerbody, which extends from the last wake node along the streamline to the axis of rotation. +% +In contrast to the centerbody trailing edge panel, we only apply the vorticity portion of the wake panel strength based on the last wake node along the streamline. + + +\subsection{Verification and Validation of Isolated Rotor+Wake Aerodynamics} +\label{ssec:rwvv} + +\subsubsection{Verification of Induced Velocities} + +To verify that the rotor and wake models are behaving as expected, we look at the induced velocities (axial and swirl) at locations ranging from upstream of the rotor to downstream of the rotor. +% +We compare to blade element momentum theory (BEMT) using the CCBlade.jl Julia package. +% +The rotor we use for comparison is the APC 10x5 propeller; geometry for which is provided in the CCBlade documentation and in the UIUC database. +% +\Cref{fig:inducedvelcheck} shows the near- and far-field values from BEMT compared to the DuctAPE values across the range of locations sampled. +% +We see that the general trends match well: the upstream velocities are at or near zero, and the far field velocities are approximately double the velocities at the rotor plane. +% +Note that the swirl velocity as modeled in DuctAPE is zero upstream of the rotor, and the far-field value at any point aft of the rotor as described by \cref{eqn:vtheta,eqn:vthetaself}. + + +\begin{figure}[h!] + \centering + \begin{subfigure}[t]{0.45\textwidth} + \centering + \raisebox{-3em}{\input{./figures/vx-verify.tikz}} + \caption{Axial Velocity (\(v_x\))} + \label{} + \end{subfigure} + \hfill + \begin{subfigure}[t]{0.45\textwidth} + \centering + \raisebox{-3em}{\input{./figures/vtheta-verify.tikz}} + \caption{Swirl Velocity (\(v_\theta\))} + \label{} + \end{subfigure} + \caption{Comparison of induced velocities from BEMT near and far field with induced velocities from DuctAPE sample at a range from one diameter upstream (\gray{gray}) to the rotor plane (\primary{blue}) and from the rotor plane to one diameter downstream (\secondary{red}).} + \label{fig:inducedvelcheck} +\end{figure} + + +\subsubsection{Validation of Thrust and Power Coefficients} + +For one validation case, we compare the thrust and power coefficients as well as efficiency with experimental data provided by UIUC for the APC 10x5. +% +We also compare to the BEMT outputs for further context. +% +As can be seen in \cref{fig:rotval1}, DuctAPE matches well with BEMT, and both are within expectations when compared to experimental data. + +\begin{figure}[h!] + \centering + \begin{subfigure}[t]{0.45\textwidth} + \centering + \input{./figures/rotor-only-thrust-and-power-validation.tikz} + \caption{Comparison of rotor power (\(C_P\)) and thrust (\(C_T\)) coefficients.} + \label{} + \end{subfigure} + \hfill + \begin{subfigure}[t]{0.45\textwidth} + \centering + \input{./figures/rotor-only-efficiency-validation.tikz} + \caption{Comparison of rotor efficiency (\(\eta\)).} + \label{} + \end{subfigure} + \caption{A comparison of rotor performance metrics across a range of advance ratios (\(J\)) shows good agreement between DuctAPE, BEMT, and experimental data.} + \label{fig:rotval1} +\end{figure} + diff --git a/v0.5.0/DuctAPE/theory_latex/ductsolveralgorithm.tex b/v0.5.0/DuctAPE/theory_latex/ductsolveralgorithm.tex new file mode 100644 index 00000000..9f98aa3e --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/ductsolveralgorithm.tex @@ -0,0 +1,349 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% COUPLING + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Coupling the Rotor-Wake and Body Aerodynamics} + +Coupling the body and rotor-wake aerodynamics is, for the most part, a straightforward process, with only a few particular concerns. +% +Essentially, the coupling takes place through mutually induced velocities. +% +Specifically, the solid bodies, rotor(s), and wake(s), all induce velocities one themselves and each other. +% +Accounting for these induced velocities is nearly the totality of the coupling methodology. + + +For the solid bodies, we subtract the induced velocities normal to the panels to the right hand side of the linear system, just as we do for the freestream velocities. +% +In addition, at the wake-body interfaces, or in other words, for the wake elements shed from the rotor hub and tip (assuming the rotor tip ``touches'' the duct wall), the wake panels lie directly on the boundary being solved by the linear system. +% +This requires the use of the separation of singularity integration when applying the induced velocity of the wake panels onto the body panels on which they lie. +% +In order to make this consistent, the geometry is defined from the outset to have the body and wake panel nodes and control points be coincident in order that the separation of singularity method in which we assume the position of the singular portion, functions properly. +% +In addition, since the wake panels lie on the boundary being solved, they will also induce a jump in tangential velocity across the boundary which must be accounted for the post-processing step to calculate the body surface velocity, pressure, and thereby thrust/drag. +% +Since the rotor tip and hub wakes interact with the body surfaces, additional consideration is also required for considering the strengths to define along the wake elements inside the duct. +% +In reality, this is a complex interaction that we cannot properly capture given the inviscid methodologies of DuctAPE. +% +As an approximation, we apply a linear interpolation from the body trailing edge, which gets the full rotor wake strength at that point, to the intersection of the rotor plane and wall, which we set to zero just ahead of the rotor. +% +% [look into what happens experimentally/in reality/in cfd. is the wake vorticity suppressed by the body and then pops back up outside the duct?] + + + +For the rotor(s) we simply the induced axial and radial velocities from the bodies and wakes to the relative axial and radial velocities used in determining the inflow angles and magnitudes across the blades. +% +Similarly for the wake, we combine all the induced velocities together to obtain the average meridional velocities required to compute the wake node strengths. + +\section{Solution Approach:} +\subsection{DFDC-like Solve Approach} + +\subsubsection{Residual} +\label{sssec:dfdcresid} + +The DFDC-like solution approach implemented in DuctAPE solves a non-linear system for the rotor circulation and wake panel strengths using a controlled successive over-relaxation (CSOR) fixed-point solver, taking the rotor circulation, rotor source panel strengths, and wake panel strengths as state variables. + +% +The residual function can be expressed generally as +\begin{subequations} + \label{eqn:dfdcresid} + \begin{align} + \Gamma - f\left(\Gamma, \sigma^R, \gamma^W, P\right) &= 0, \\ + \gamma^W - f\left(\Gamma, \sigma^R, \gamma^W, P\right) &= 0, + \end{align} +\end{subequations} + \where \(\Gamma\) are the blade element circulation strengths, \(\sigma^R\) are the rotor source panel strengths, \(\gamma^W\) are the wake vortex panel strengths, and \(P\) here are additional constant parameters used in calculating the residual. + + +\subsubsection{State Initialization} +\label{sssec:dfdcinit} + +To initialize the states in the DFDC-like approach, we first set the rotor source panel strengths to zero. +% +For the circulation, we perform a set number of iterations applying simple momentum theory to obtain the average axial induced velocity on the rotor, and use \cref{eqn:bladeelementcirculationrotor} to obtain the circulation strengths along the way. +% +The final induced axial velocity, along with the freestream and circulation strengths are then used to initialize the wake panel strengths using \cref{eqn:gamma_theta_general}. +% +Note that the tangential induced velocity on the rotors is not included in this process, nor are the body-induced velocities. + + +\subsubsection{Solver Method} +\label{sssec:dfdcsolve} + +The DFDC-like residual function formulation shown algorithmically in \cref{alg:csor} updates the states during the residual evaluation. +% +This leads to efficient convergence, but also precludes the DFDC-like approach from being used with many external solvers, some of which may actually be more efficient. + +\begin{algorithm} +\caption{DFDC-like Solution Method}\label{alg:csor} +\begin{algorithmic} +\State Initialize body, rotor, and wake strengths +\While{unconverged \textbf{and} iterator < iteration limit} +\begin{itemize} + \renewcommand\labelitemi{\(\cdot\)} + \setlength{\itemindent}{1em} + \item Solve the linear system for the body vortex strengths \Comment{using \cref{eqn:neumann2}}. + \item Calculate new estimates for the blade element circulation \Comment{using \cref{eqn:bladeelementcirculationrotor}.} + \item Select relaxation factors for each blade element circulation value. %\Comment{see \cref{eqn:circulationrelaxation} below.} + \item Update the blade element circulation values. %\Comment{see \cref{eqn:updatecirculation} below.} + \item Calculate new estimates for the wake vortex strengths \Comment{using \cref{eqn:gamma_theta_general}.} + \item Select relaxation factors for each wake node. %\Comment{see \cref{eqn:gammathetarelaxation} below.} + \item Update the wake vortex strengths. %\Comment{see \cref{eqn:updategammatheta} below.} + \item Update the rotor source panel strengths \Comment{using \cref{eqn:rotorsourcestrengths}.} + \item Check for convergence. %\Comment{see \cref{eqn:convergencecrit} below.} +\end{itemize} +\EndWhile +\State Post-process Solution +\end{algorithmic} +\end{algorithm} + +In addition, we provide here the methodology for calculating the various relaxation parameters used in DFDC's CSOR method which we have also implemented in DuctAPE. +% +To obtain the relaxation factors for the rotor blade circulation, we look at the difference in the current axisymmetrically smeared blade element circulation states, +\(B\vect{\Gamma}\), and the new estimation, +\((B\vect{\Gamma})_\text{est}\), normalized by the current circulation state with the greatest magnitude for the given rotor, \((B\Gamma)_\text{max}\): + +\begin{equation} + \hat{\vect{\delta}} = \frac{\vect{\delta}_{B\Gamma}}{(B\Gamma)_\text{max}}, +\end{equation} + +\where + +\begin{equation} + \vect{\delta}_{B\Gamma} = (B\vect{\Gamma})_\text{est} - B\vect{\Gamma}. +\end{equation} + +\noindent To avoid overly large values of \(\hat{\vect{\delta}}\), \((B\Gamma)_\text{max}\) is required to have a magnitude greater than or equal to 0.1 with the sign being positive if the average \(B\Gamma\) value along the blade is positive and negative if the average along the blade is negative: +% +\begin{equation} + (B\Gamma)_\text{max} = + \begin{cases} + \text{max}(B\vect{\Gamma},0.1) & \text{if } \overline{B\vect{\Gamma}} > 0, \\ + \text{min}(B\vect{\Gamma},-0.1) & \text{otherwise}; + \end{cases} +\end{equation} + +\where \(\overline{B\vect{\Gamma}}\) is the average of \(B\vect{\Gamma}\) for the given rotor. +% +We then take the magnitude of the maximum normalized difference along a blade, \(\hat{\delta}_\text{max}\), and set the initial relaxation factor for the whole blade, \(\omega_r\), to be + +\begin{equation} + \omega_r = + \begin{cases} + \dfrac{0.2}{|\hat{\delta}|_\text{max}} & \text{if } \frac{\omega_{r_\text{nom}}}{\hat{\delta}_\text{max}} < -0.2, + \\[10pt] + \dfrac{0.4}{|\hat{\delta}|_\text{max}} & \text{if } \frac{\omega_{r_\text{nom}}}{\hat{\delta}_\text{max}} > 0.4, \\[10pt] + \omega_{r_\text{nom}} & \text{otherwise}; + \end{cases} +\end{equation} + +\where the nominal relaxation factor value, \(\omega_{r_\text{nom}}=0.4\), and the various relaxation factors (here and those described below) may be set as desired by the user; though the defaults presented here are identical to the values hard-coded into DFDC. +% +Also note that in DuctAPE, the calculation of \(\hat{\vect{\delta}}\) is implemented so that if \(\hat{\vect{\delta}}\) happened to be zero, it is instead set to a magnitude of 1 to avoid a division by zero. + +We then apply an additional scaling factor to the individual blade element relaxation factors, \(\vect{\omega}_{be}\), based on whether the current and previous iteration difference values along the blade (\(\vect{\delta}_{B\Gamma}\) and \(\vect{\delta}_{B\Gamma_\text{prev}}\), respectively) are in the same or opposite directions. +% +If the current and previous differences for a given blade element are of different signs, meaning the solver has moved the estimated and previous values in opposite directions, we apply an additional scaling factor of 0.6 to the overall relaxation factor to obtain the relaxation factor for that blade element. +% +If the current and previous differences are of the same sign (direction), then we apply an additional scaling factor of 0.5. + +\begin{equation} + \label{eqn:circulationrelaxation} + \omega_{{be}_i} = + \begin{cases} + 0.6 \omega_r & \text{if } \text{sign}(\delta_{B\Gamma_{\text{prev}_i}}) \neq \text{sign}(\delta_{B\Gamma_i}), \\ + 0.5 \omega_r & \text{otherwise}. + \end{cases} +\end{equation} + +The relaxation factor selection is very similar for the wake vortex strengths. +% +For all wake panel nodes, the nominal relaxation factor is set to \(\omega_{\gamma_\text{nom}} = 0.4\). +% +If the difference between current and previous iteration's differences in estimated and previous strength (\(\vect{\delta}_{\gamma_\text{prev}}\) and \(\vect{\delta}_\gamma\), respectively) are of the same sign, we apply a scaling factor of 1.2, and if not, we apply a scaling factor of 0.6: + +\begin{equation} + \label{eqn:gammathetarelaxation} + \omega_{\gamma_i} = + \begin{cases} + 0.6\omega_{\gamma_\text{nom}} &\text{if } \text{sign}(\delta_{\gamma_{\text{prev}_i}}) \neq \text{sign}(\delta_{\gamma_i}), \\ + 1.2\omega_{\gamma_\text{nom}} & \text{otherwise}. + \end{cases} +\end{equation} + +We choose the new values for circulation and vortex strength to be the previous values plus the relaxation factors multiplied by the differences between the new estimates and current states: + +\begin{align} + \label{eqn:updatecirculation} + B\vect{\Gamma} \stackrel{+}{=}&~ \vect{\omega}_{be} \vect{\delta}_{B\Gamma}, \\ + \label{eqn:updategammatheta} + \vect{\gamma}_\theta \stackrel{+}{=}&~ \vect{\omega}_\gamma \vect{\delta}_\gamma. +\end{align} + +The nominal DFDC-like, relative convergence criteria for the solver is assembled with a combination of the maximum differences used in the relaxation factor selection: + +\begin{equation} + \label{eqn:convergencecrit} + \begin{aligned} + \text{converged if } &|\delta_\gamma|_\text{max} < 2\cdot10^{-4} V_\text{ref}, \\ + &\text{and } |\delta_{B\Gamma}|_\text{max} < 10^{-3}|B\Gamma|_\text{max}; + \end{aligned} +\end{equation} + +\where \(V_\text{ref}\) is a reference velocity set by the user. +% +Though in DuctAPE, we often use (especially for optimization) an absolute convergence criteria: + +\begin{equation} + \label{eqn:convergencecritabs} + \begin{aligned} + \text{converged if } &|\delta_\gamma|_\text{max} < f_{\delta_\gamma}, \\ + &\text{and } |\delta_{B\Gamma}|_\text{max} < f_{\delta_{B\Gamma}}; + \end{aligned} +\end{equation} + +\where we typically set \(f_{\delta_\gamma}=f_{\delta_{B\Gamma}}=1e-12\). + + +\subsection{Additional Solve Approach in DuctAPE} + +We have implemented an alternate solution approach in DuctAPE that solves a non-linear system for the rotor induced axial and tangential velocities and the wake absolute velocities using a generalized residual compatible with external solvers. + +\subsubsection{Residual} +\label{sssec:dtresid} + +We have formulated another residual function unique to DuctAPE that can be generally expressed as + +\begin{subequations} + \label{eqn:dtresid} + \begin{align} + f\left(V^\text{rotor}_z, V^\text{rotor}_{\theta}, C^\text{wake}_m, P\right) - V^\text{rotor}_z &= 0, \\ + f\left(V^\text{rotor}_z, V^\text{rotor}_{\theta}, P\right) - V^\text{rotor}_{\theta} &= 0, \\ + f\left(V^\text{rotor}_z, V^\text{rotor}_{\theta}, C^\text{wake}_m, P\right) - C^\text{wake}_m &= 0, + \end{align} +\end{subequations} + +\where \(V^\text{rotor}_z\) and \(V^\text{rotor}_{\theta}\) are the induced axial and tangential velocities on the rotor blade elements, respectively, \(C^\text{wake}_m\) is the absolute meridional velocity on the wake panel control points, and \(P\) here are various parameters used in calculating the residual. + +\subsubsection{State Initialization} +\label{sssec:dtinit} + +To choose initial states for the non-linear solve, we start by solving the panel method for the isolated bodies (without any rotors) first. +% +We then take the induced velocities from the body and apply them (along with the freestream velocity) to the blade elements within CCBlade, a blade element momentum theory (BEMT) formulation with guaranteed convergence \scite{CCBlade}. %(thus removing the possibility of non-convergence of the initialization as is possible in DFDC). +% +From the BEMT solution, we obtain the rotor induced axial and tangential velocities. +% +With the freestream velocity, body panel strengths, and initialized rotor states, we initialize the absolute velocities in the wake. + + +\subsubsection{Solver Method} +\label{sssec:dtsolve} + +A summary of our additional solution approach is shown algorithmically in \cref{alg:ductape} with references to relevant equations and figures. +% +The underlying purpose of this additional solve approach is to add greater flexibility in using DuctAPE with external solvers. +% +As the DFDC-like approach updates the state variables inside the residual function call, it is somewhat difficult to use that formulation with external solvers. +% +We found that our reformulated residual performed better with external solvers than simply altering the DFDC-like residual to not update the state variables internally. +% +% Various external solvers have been implemented in DuctAPE (as will be discussed below), and they each have their own options for convergence criteria, so we do not discuss those details here. + +\begin{algorithm} +\caption{Alternate Solution Method}\label{alg:ductape} +\begin{algorithmic} +\State Initialize induced rotor velocities, and absolute wake velocities. +\While{unconverged \textbf{and} iterator < iteration limit} +\begin{itemize} + \renewcommand\labelitemi{\(\cdot\)} + \setlength{\itemindent}{1em} + \item Calculate the blade element inflow angles and magnitudes \Comment{(see \cref{fig:bladeelementangles}).} + \item Look up the blade element local lift and drag. + \item Calculate the blade circulation and rotor source panel strengths \Comment{using \cref{eqn:bladeelementcirculationrotor,eqn:rotorsourcestrengths}.} + \item Estimate the tangential induced velocity on the rotor \Comment{using \cref{eqn:vthetaself}.} + \item Calculate the wake vortex strengths from the current wake velocity states and rotor circulation \Comment{using \cref{eqn:gamma_theta_general}.} + \item Solve the linear system for the body vortex strengths \Comment{using \cref{eqn:neumann2}}. + \item Estimate the axial induced velocity on the rotor \Comment{using \cref{eqn:vzvr}.} + \item Calculate the axial and radial induced velocities on the wake \Comment{using \cref{eqn:vzvr}.} + \item Estimate the wake absolute meridional velocities \Comment{using \cref{eqn:vmwm}.} + \item Check for convergence. +\end{itemize} +\EndWhile +\State Post-process Solution +\end{algorithmic} +\end{algorithm} + +\subsection{Differences in Approaches} + +\subsubsection{Residuals} + +The respective residual functions are similar. +% +Indeed, under the hood, the residual calculation process is more or less a re-ordering of the internals and the states of each approach are intermediate values of the other (as can be seen from \cref{alg:csor,alg:ductape}). +% +% \Cref{fig:flowchartcomp} shows flowcharts of both approaches for a visual comparison in which we see the same underlying equations used for each of the residual calculations. +% +The DFDC-like approach converges on the rotor circulation and wake strengths, and also includes the rotor source panel strengths as state variables. +% +The alternate approach converges on the rotor induced velocities and the absolute wake velocities which slightly fewer states than the DFDC approach. + +% { +% \hypersetup{linkcolor=white} +% \begin{figure}[h!] +% \centering +% \begin{subfigure}[t]{\textwidth} +% \centering +% % \tikzsetnextfilename{solvers/dfdc_flowchart} +% \input{figures/dfdc_flowchart.tikz} +% \caption{DFDC-like residual} +% \label{fig:dfdcflowchart} +% \end{subfigure} + + % \begin{subfigure}[t]{\textwidth} + % \centering +% % \tikzsetnextfilename{solvers/ductape_flowchart} + % \input{figures/ductape_flowchart.tikz} + % \caption{External solver residual} + % \label{fig:ductapeflowchart} + % \end{subfigure} + % \caption{Visual comparison of the residual formulations implemented in DuctAPE. + % \primary{Blue} boxes indicate calculations, + % \tertiary{green} boxes indicate when states are being updated, + % \secondary{red} boxes indicate checking termination conditions, + % and unfilled boxes indicate items that are passed in or out.} + % \label{fig:flowchartcomp} +% \end{figure} +% } +% \hypersetup{linkcolor=secondary} + + +\subsubsection{State Initializations} + +Both state initialization approaches apply some sort of momentum theory, and that is where the similarities end. +% +The approach we take as default in DuctAPE utilizes the body-induced velocities from the rotor-off case, as well as fully converges the blade element induced axial and tangential velocities. +% +In contrast, the DFDC-like approach ignores tangential induced velocity, looks only at the average (rather than local blade element) induced axial velocity, and does not require convergence of induced velocity, opting instead for a set number of iterations. +% +Both approaches are reasonable and avoid any issues that could be present with a method that requires, but does not guarantee, convergence. +% +In practice, however, the DFDC-like method ends up not being suitable for optimization settings as the implementation is susceptible to conditions leading to the square root of a negative number, which is not defined for real numbers. +% +This is typically not an issue for manual analysis when the user is providing a reasonable design, but an optimizer is generally not constrained to explore only reasonable designs in the search for the optimum. + + +\subsubsection{Solver Methods} + +As mentioned, the solution methods for both approaches use the same underlying equations (as presented in \cref{sec:methods}). +% +The largest difference between them is that the CSOR solver is constructed in a vaguely Gauss-Seidel way in that in each iteration the rotor circulation strengths are updated before being used to update the wake panel strengths, which in turn are updated before being used to update the rotor source panel strengths. +% +This leads to a highly efficient, but also specialized solver. + +On the other hand, the additional method is formulated in such a way that nearly any external solver can be used to converge the residual, which will be showcased somewhat later in \cref{ssec:benchmarking}. +% +Therefore, despite lacking specialization for inherent efficiency, the additional approach allows the user to select among various solvers depending on the desired usage. diff --git a/v0.5.0/DuctAPE/theory_latex/ductverification.tex b/v0.5.0/DuctAPE/theory_latex/ductverification.tex new file mode 100644 index 00000000..0edd93a6 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/ductverification.tex @@ -0,0 +1,237 @@ + +\section{Verification of Full Solver Implementations in DuctAPE} +\label{ssec:verification} + +As we have established, the methodology behind DuctAPE is based heavily on DFDC. +% +Therefore, we take the opportunity to provide a set of comparisons between DuctAPE and DFDC. +% +We compared an example available in the DFDC source code using a single ducted rotor across a range of operating conditions, specifically across a range of advance ratios including a hover condition. + +The geometry used in the single ducted rotor example case is shown in \cref{fig:singlerotorgeom}. +% +For this verification case, we used a rotor with tip radius of 0.15572 meters located 0.12 meters aft of the center body leading edge. +% +The wake extended 0.8 times the length of the duct (roughly 0.3 meters) past the duct trailing edge. +% +We used 10 blade elements associated with 11 wake sheets to model the rotor. +% +We set the rotor rotation rate constant at 8000 revolutions per minute and adjust the freestream velocity in order to sweep across advance ratios from 0.0 to 2.0 by increments of 0.1. +% +We assumed sea level conditions for reference values. + +\begin{figure}[h!] + \centering +% \tikzsetnextfilename{solvers/ductape_single_rotor_geometry} + \input{figures/ductape_single_rotor_geometry.tikz}\hspace*{5em} + \caption{Single rotor verification case geometry generated by DuctAPE. Duct geometry in \primary{blue}, center body geometry in \secondary{red}, rotor lifting line location in \tertiary{green}, and wake grid geometry in \gray{gray}.} + \label{fig:singlerotorgeom} +\end{figure} + +\begin{figure}[h!] + \centering +% \tikzsetnextfilename{solvers/dfdc_single_rotor_geometry} + \begin{subfigure}[t]{\textwidth} + \centering + \subcaptionbox{DFDC generated geometry.\label{fig:dfdcsinglerotorgeom}}{% + \input{figures/dfdc_single_rotor_geometry.tikz}\hspace*{5em} + }\qquad + \end{subfigure} + + \begin{subfigure}[t]{\textwidth} + \centering +% \tikzsetnextfilename{solvers/ductape_single_rotor_geometry} + \subcaptionbox{DuctAPE generated geometry.\label{fig:ductapesinglerotorgeom}}{% + \input{figures/ductape_single_rotor_geometry.tikz}\hspace*{5em} + }\qquad + \end{subfigure} + \caption{Single rotor verification case geometry as generated by DFDC and DuctAPE. Duct geometry in \primary{blue}, center body geometry in \secondary{red}, rotor lifting line location in \tertiary{green}, and wake grid geometry in \gray{gray}.} + \label{fig:singlerotorgeom} +\end{figure} + + +We note here that DuctAPE also differs from DFDC in the geometry re-paneling approach. +% +The reason for a different approach to geometry generation in DuctAPE is so that the duct, center body, and wake can be paneled in such a way to avoid discontinuities in gradients if the relative position of the rotors, duct, and center body were to change in an optimization setting. +% +Comparing the subfigures of \cref{fig:singlerotorgeom} we see two major differences between the DFDC generated geometry (\cref{fig:dfdcsinglerotorgeom}) and the DuctAPE generated geometry (\cref{fig:ductapesinglerotorgeom}). +% +The DuctAPE geometry re-paneling approach aligns the duct, center body, and wake panels aft of the rotor and distributes them linearly. +% +We align the panels so that there is a consistent number of panels between discrete locations (such as rotor positions and body trailing edges) in the geometry, thereby avoiding discontinuities. +% +For example, the number of center body and duct panels ahead of and behind the rotor need to stay constant if the rotor position is selected as a design variable in an optimization. +% +Without the number of panels ahead of and behind the rotor staying constant, there would be discontinuities as the rotor passed over panels along the solid bodies. +% + The second difference in geometries is that DuctAPE does not yet apply any expansion in the wake panel length aft of the duct exit. %TODO; should this be added? +% + The main reason to apply expansion is to reduce the number of panels in the wake, and thereby reduce the size of the system being solved. +% + % Not applying an expansion does not affect the solution, and is not yet implemented in DuctAPE (see \cref{sec:conclusions}), so we simply maintain a linear distribution of panels in the trailing wake. +% + Also note that the number of panels in the wake needs to stay constant between each discrete location, even aft of the duct exit, in case the duct chord length is selected as a design variable in an optimization. +% + One additional difference, not visible, is that the duct and center body geometries are defined counter-clockwise for DFDC and clockwise for DuctAPE, which simply led to some differences in sign (compared to the DFDC implementation) in the various induced velocity equations presented above. + +As we are comparing the performance of solvers using the DFDC-like CSOR approach and our alternate approach, we verify here that both implementations match values from the original Fortran implementation of DFDC. +% +Scanning \cref{tab:hovercompsinglerotor,tab:cruisecompsinglerotor}, we see that the differences between DFDC and both approaches implemented in DuctAPE are less than 0.5\% for major output values for both a hover and a cruise case. +% +\Cref{fig:singlerotorcpcteta} shows comparisons of total thrust and power coefficients (\cref{fig:singlerotorcpct}) and total efficiency (\cref{fig:singlerotoreta}), across the range of advance ratios, showing excellent matching across the entire range. +% +Note that the results for both the DFDC-like solver and alternate DuctAPE solver yield identical plots, so we include only one here. + +\begin{table}[h!] + \caption{Comparison of solver outputs for hover case (\(J=0.0\)). Errors relative to DFDC.} + \begin{subtable}[t]{0.35\textwidth} + \begin{center} + \input{figures/single_rotor_J0_verification_table_CSOR.tex} + \end{center} + \end{subtable} + + \begin{subtable}[t]{0.45\textwidth} + \begin{center} + \input{figures/single_rotor_J0_verification_table_DuctAPE.tex} + \end{center} + \end{subtable} + \label{tab:hovercompsinglerotor} +\end{table} + +\begin{table}[h!] + \caption{Comparison of solver outputs for a cruise case (\(J=1.0\)). Errors relative to DFDC.} + \begin{subtable}[t]{0.35\textwidth} + \begin{center} + \input{figures/single_rotor_J1_verification_table_CSOR.tex} + \end{center} + \end{subtable} + + \begin{subtable}[t]{0.45\textwidth} + \begin{center} + \input{figures/single_rotor_J1_verification_table_DuctAPE.tex} + \end{center} + \end{subtable} + \label{tab:cruisecompsinglerotor} +\end{table} + +\begin{figure}[h!] + \centering + \begin{subfigure}[t]{0.45\textwidth} + \centering +% \tikzsetnextfilename{solvers/single_rotor_cpct_comparison_CSOR} + \input{figures/single_rotor_cpct_comparison_CSOR.tikz} + \caption{Power and thrust comparison.} + \label{fig:singlerotorcpct} + \end{subfigure} +\hfill + \begin{subfigure}[t]{0.45\textwidth} + \centering +% \tikzsetnextfilename{solvers/single_rotor_efficiency_comparison_CSOR} + \input{figures/single_rotor_efficiency_comparison_CSOR.tikz} + \caption{Efficiency comparison.} + \label{fig:singlerotoreta} + \end{subfigure} + \caption{Comparison of power and thrust coefficients and efficiency for DFDC (dashed) and the DuctAPE implementations (solid) across a range of advance ratios.} + \label{fig:singlerotorcpcteta} +\end{figure} + + +\begin{figure}[h!] + \centering + \begin{subfigure}[t]{0.45\textwidth} + \centering +% \tikzsetnextfilename{solvers/single_rotor_cpct_comparison_DuctAPE} + \input{figures/single_rotor_cpct_comparison_DuctAPE.tikz} + \caption{Power and Thrust Comparison.} + \label{fig:singlerotorcpct} + \end{subfigure} +\hfill + \begin{subfigure}[t]{0.45\textwidth} + \centering +% \tikzsetnextfilename{solvers/single_rotor_efficiency_comparison_DuctAPE} + \input{figures/single_rotor_efficiency_comparison_DuctAPE.tikz} + \caption{Efficiency comparison.} + \label{fig:singlerotoreta} + \end{subfigure} + \caption{Comparison of power and thrust coefficients and efficiency for DFDC (dashed) and DuctAPE (solid) across a range of advance ratios.} + \label{fig:singlerotorcpcteta} +\end{figure} + +\subsection{Benchmarking Solver Implementations} +\label{ssec:benchmarking} + +Now that we have shown that both solve approaches yield nearly identical results, we show a comparison in solver efficiency. +% +To do so, we benchmarked various solvers against the CSOR solver. +% +Included in our comparison are the following external solvers: +% +\begin{itemize} + \item Fixed-point Solvers + \begin{itemize} + \item NLsolve's \scite{Mogensen_2020} Anderson accelerated fixed-point method \scite{Walker_2011}. + \item SpeedMapping.jl\footnote{\url{https://github.com/NicolasL-S/SpeedMapping.jl}} which uses an alternating cyclic extrapolation algorithm \scite{Lepage_2021}. + \item Fixedpoint.jl\footnote{\url{https://github.com/francescoalemanno/FixedPoint.jl}} which is a Nesterov accelerated fixed-point method. + \end{itemize} + \item Quasi-Newton Solvers + \begin{itemize} + \item The modified Powell Method \scite{Powell_1970} implemented in MINPACK's HYBRJ method,\footnote{\url{https://www.netlib.org/minpack/}} accessed through the Julia wrapper package, MINPACK.jl\footnote{\url{https://github.com/sglyon/MINPACK.jl}} which wraps a C++ re-write of MINPACK. + \end{itemize} + \item Newton Solvers + \begin{itemize} + \item NLsolve's Newton method using automatic differentiation for the Jacobian calculation and the Mor\'{e}-Thuente line search method \scite{More_1994} option available through the LineSearches.jl\footnote{\url{https://github.com/JuliaNLSolvers/LineSearches.jl}} package. + \item The Newton-Raphson method implemented in the SimpleNonlinearSolve.jl package\footnote{\url{https://github.com/SciML/SimpleNonlinearSolve.jl}} \scite{pal2024}. + \end{itemize} +\end{itemize} +% +\noindent Other than those specifically noted in this list, all solvers were set to use their default settings and given absolute convergence tolerances of 1e-12. + + +To perform the benchmarks, we used the same geometry and operating points used in \cref{ssec:verification}. +% +For each advance ratio, we used BenchmarkTools.jl\footnote{\url{https://github.com/JuliaCI/BenchmarkTools.jl}}, a benchmarking package in the Julia language, to run 200 samples, then calculated the median computational time across all samples and all advance ratios. +% +We allowed the fixed-point solvers an iteration limit of 1000, the quasi-Newton solvers an iteration limit of 100, and the Newton solvers an iteration limit of 25. +% +These iteration limits were sufficiently large that all solvers were able to converged on every analysis. +% +We also ran each advance ratio one additional time, saving the solve iteration counts and taking the mean number of iterations across the advance ratios in order to determine solver efficiency. +% +% Given the ducted fan design and iteration limits, all the solvers tested had a 100\% convergence rate, though convergence rates drop if iterations are limited further. + +\renewcommand{\arraystretch}{1.5} +\begin{table}[h!] + \caption{ + Comparison of benchmarked solver method median times and mean iterations. + \primary{Blue} indicates fixed-point solvers, \secondary{red} indicates quasi-Newton solvers, and \tertiary{green} indicates Newton solvers. + In all cases, except for CSOR Default, the solvers were given absolute convergence criteria of 1e-12. + (Note that the SimpleNonlinearSolve.jl package does not have any iteration tracing functionality and so that information is missing from this table.) + } + \begin{center} + \input{"figures/benchmark_table.tex"} + \end{center} + \label{tab:benchmarkcomp} +\end{table} + + +\Cref{tab:benchmarkcomp} includes comparisons of the median solve times and mean number of iterations across all advance ratios for each of the benchmarked solvers. +% +From \cref{tab:benchmarkcomp}, we first see that the default DFDC-like CSOR solve approach with loose, relative tolerances was very fast and efficient. +% +We should expect this as the default convergence criteria is between 1e-3 and 2e-4, depending on the residual value. %(see \cref{eqn:convergencecrit}). +% +In contrast, all other solvers were given an absolute convergence tolerance of 1e-12, including the CSOR solver with absolute convergence criteria. % (see \cref{eqn:convergencecritabs}). +% +Therefore, for tight, absolute tolerances, an Anderson accelerated fixed-point solver may be considered in favor of the CSOR solver if speed is the absolute priority, though a much broader set of benchmarks would need to be run before making that a general recommendation. +% +In addition, selecting non-default options for the various solvers may lead to increases in speed or efficiency, again requiring a broader set of benchmarks before general recommendations can be made. +% +That being said, based on these results, further exploration is worth pursuing. + + +Another important result to notice here is the cost of computing the Jacobian of the residual. +% +Looking at the quasi- and full Newton methods, we see several orders of magnitude increase in time, despite the lower number of overall iterations. +% +As expected, the Jacobian-based methods are more efficient in iterations, but the cost to compute the Jacobian is so high that it outweighs any inherent efficiency of the method. + diff --git a/v0.5.0/DuctAPE/theory_latex/figures/absolute-frame-duct.dat b/v0.5.0/DuctAPE/theory_latex/figures/absolute-frame-duct.dat new file mode 100644 index 00000000..0ee6f117 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/absolute-frame-duct.dat @@ -0,0 +1,119 @@ +4.0 2.068733638590856 +3.9971653913535237 2.070116751042998 +3.988669600420274 2.0742545487886503 +3.974536709442689 2.081112471454217 +3.9548067796357333 2.090633114364545 +3.9295357376290316 2.1027365262054034 +3.8987952169367626 2.1173206372593545 +3.862672354904677 2.1342658259784204 +3.821269545709826 2.1534335953938553 +3.774704150113143 2.174666472918831 +3.7231081627876117 2.1978018828275356 +3.66662783816503 2.2226516900807605 +3.6054232758619276 2.249029733214973 +3.5396679668598123 2.276732653271101 +3.4695483017261344 2.3055543817149293 +3.3952630422699692 2.335286254441895 +3.317022758130077 2.3657145614089377 +3.2350492298923834 2.3966241254443754 +3.1495748204288136 2.4278026921797844 +3.060841816239485 2.4590398783426646 +2.9691017406653 2.490128740579 +2.8746146409177107 2.520867152000421 +2.777648350946641 2.5510589122178566 +2.6784777322360607 2.58051465758389 +2.5773838946792416 2.609052623399243 +2.4746533997422295 2.6364992980351425 +2.3705774481742288 2.6626899996598983 +2.2654510545674436 2.687469399039879 +2.159572211106166 2.7106919454405656 +2.053241042875549 2.7322205810341407 +1.9467589571244504 2.7519283295902275 +1.8404277888938338 2.769699236506423 +1.7345489454325556 2.785428384000464 +1.6294225518257714 2.799019891073622 +1.5253466002577705 2.810382813446908 +1.4226161053207576 2.8194424992529763 +1.3215222677639393 2.8261366071302727 +1.2223516490533586 2.8304007909186994 +1.125385359082289 2.8321854564194404 +1.0308982593346996 2.8314604051145147 +0.939158183760515 2.828186580800645 +0.8504251795711864 2.822337759919849 +0.7649507701076161 2.813916036570147 +0.6829772418699227 2.8028976456948094 +0.6047369577300306 2.7892850098808943 +0.5304516982738654 2.773110075931921 +0.46033203314018745 2.75435206470975 +0.39457672413807265 2.7330532414236868 +0.3333721618349701 2.709263607757993 +0.27689183721238786 2.6829591712772487 +0.2252958498868569 2.654240548779644 +0.17873045429017353 2.623141971559738 +0.13732764509532314 2.589644173081501 +0.10120478306323744 2.5539474355779435 +0.07046426237096814 2.515978496169784 +0.04519322036426665 2.475733310842988 +0.02546329055731089 2.433712453738263 +0.011330399579725814 2.389110352655093 +0.002834608646476111 2.34293820897971 +0.0 2.2952667536411053 +0.002834608646476111 2.2725161501257136 +0.011330399579725814 2.250258771967714 +0.02546329055731089 2.229220518554398 +0.04519322036426665 2.209111337809614 +0.07046426237096814 2.1899812111489445 +0.10120478306323744 2.1718459970327424 +0.13732764509532314 2.154680717102694 +0.17873045429017353 2.1385004344153486 +0.2252958498868569 2.12330299427098 +0.27689183721238786 2.1090740514508806 +0.3333721618349701 2.0958112066006667 +0.39457672413807265 2.0835060605839066 +0.46033203314018745 2.072141738478579 +0.5304516982738654 2.061704185936095 +0.6047369577300306 2.052177588374007 +0.6829772418699227 2.0435431144856753 +0.7649507701076161 2.035779073346498 +0.8504251795711864 2.0288616345788886 +0.939158183760515 2.022766253366655 +1.0308982593346996 2.0174664779000167 +1.125385359082289 2.0129341254361854 +1.2223516490533586 2.009139464003763 +1.3215222677639393 2.0060513594688283 +1.4226161053207576 2.0036373978029136 +1.5253466002577705 2.0018639893678407 +1.6294225518257714 2.000696460048155 +1.7345489454325556 2.000097051369366 +1.8404277888938338 2.0 +1.9467589571244504 2.0 +2.053241042875549 2.0 +2.159572211106166 2.0 +2.2654510545674436 2.0 +2.3705774481742288 2.0 +2.4746533997422295 2.0 +2.5773838946792416 2.0 +2.6784777322360607 2.000215976328067 +2.777648350946641 2.0011067145623307 +2.8746146409177107 2.002644603930077 +2.9691017406653 2.004777552303142 +3.060841816239485 2.0074476116530326 +3.1495748204288136 2.010591730380796 +3.2350492298923834 2.0141425606884753 +3.317022758130077 2.0180293115807784 +3.3952630422699692 2.022178637577213 +3.4695483017261344 2.0265155528196708 +3.5396679668598123 2.0309643599827942 +3.6054232758619276 2.0354495832374253 +3.66662783816503 2.0398968944829026 +3.7231081627876117 2.044234022152185 +3.774704150113143 2.0483916321037956 +3.821269545709826 2.0523041704439 +3.862672354904677 2.055910658566752 +3.8987952169367626 2.0591554312571887 +3.9295357376290316 2.061988809358376 +3.9548067796357333 2.0643676992643094 +3.974536709442689 2.066256112340787 +3.988669600420274 2.0676255983013094 +3.9971653913535237 2.0684555875549897 +4.0 2.068733638590856 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/absolute-frame-hub.dat b/v0.5.0/DuctAPE/theory_latex/figures/absolute-frame-hub.dat new file mode 100644 index 00000000..514383ae --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/absolute-frame-hub.dat @@ -0,0 +1,20 @@ +1.0 0.0 +1.0272773931945554 0.04865519895527468 +1.1083655165987307 0.16863497993569868 +1.2410524975870219 0.30770148550564885 +1.4217189812072129 0.4226464744858838 +1.6454368567485178 0.48866481391454125 +1.9061036837551462 0.5 +2.196609150694061 0.5 +2.5090290257184016 0.5 +2.834841309055335 0.49641937007986914 +3.1651586909446645 0.4783656394935604 +3.490970974281598 0.44416736913091004 +3.8033908493059387 0.39419747975527936 +4.093896316244854 0.3306886949978892 +4.3545631432514815 0.25793523983299577 +4.5782810187927865 0.18211157644815124 +4.758947502412978 0.110816724020161 +4.891634483401269 0.05217029119150036 +4.972722606805444 0.01350276078908958 +5.0 -1.4013313079375145e-17 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/absolute-reference-frame.tikz b/v0.5.0/DuctAPE/theory_latex/figures/absolute-reference-frame.tikz new file mode 100644 index 00000000..83bb334f --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/absolute-reference-frame.tikz @@ -0,0 +1,51 @@ +\begin{tikzpicture}[scale=1.0] + % Coordinate system parameters + \coordinate (csysO) at (5.5,2.5); + \coordinate (er) at ($(csysO) +(0,1)$); + \coordinate (zgap1) at ($(csysO) +(0.065,0)$); + \coordinate (zgap2) at ($(csysO) +(0.135,0)$); + \coordinate (ez) at ($(csysO) +(1,0)$); + + % z-axis + \draw[] (csysO) -- (zgap1); + \draw[-Stealth,] (zgap2) -- (ez); + \node[anchor=south,outer sep=0] at (ez) {$\hat{\vect{e}}_z$}; + + % r-axis + \draw[-Stealth,] (csysO) -- (er); + \node[anchor=west,outer sep=0] at (er) {$\hat{\vect{e}}_r$}; + + %theta direction + \draw[-Stealth] ($(csysO) + (0.2,0)$) [partial ellipse =7:350:0.1 and 0.5]; + \node[anchor=north,outer sep=0,shift={(0.0,-0.5)}] at ($(csysO) + (0.2,0)$) {$\hat{\vect{e}}_\theta$}; + + % symmetry line + \draw[dash pattern=on 1cm off 0.1cm on 0.05cm off 0.1cm on 6.5cm off 0.1cm on 0.05cm off 0.1cm on 1cm] (-2,0) -- (7,0); + + % Origin Marker + \coordinate (O) at (0.0,0.0); + \coordinate (Orplus) at ($(O) + (0.0,6pt)$); + \coordinate (Orminus) at ($(O) - (0.0,6pt)$); + \coordinate (Ozplus) at ($(O) + (7pt,0.0)$); + \draw[secondary, thick] (O) circle (3pt); + \draw[secondary, thick] (Orplus)-- (Orminus); + \draw[-{Stealth[length=2pt,width=2pt]}, secondary, thick] (O)-- (Ozplus); + + % blade lifting line + \coordinate (rhub) at (2.0,0.5); + \coordinate (rtip) at (2.0,2.0); + \draw[tertiary,ultra thick] (rhub) -- (rtip); + + %Duct + \draw[primary,thick,pattern={Hatch[angle=35,distance=2pt, line width=0.25pt]}, pattern color=plotsgray] plot[smooth] file{figures/absolute-frame-duct.dat}; + + %Hub + \draw[primary,thick, pattern={Hatch[angle=35,distance=2pt,line width=0.25pt]}, pattern color=plotsgray] plot[smooth] file{figures/absolute-frame-hub.dat}; + + + % circulations + + % blade lifting line label + + % blade circulations label +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/absolute_reference_frame_geometry.jl b/v0.5.0/DuctAPE/theory_latex/figures/absolute_reference_frame_geometry.jl new file mode 100644 index 00000000..1b9351d4 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/absolute_reference_frame_geometry.jl @@ -0,0 +1,307 @@ +#= + +Attempt to make a Bspline parameterization for duct cross section + +=# + +include("../../../../../Code_Development/DuctTAPE/src/preliminary_design/1DModel_B.jl") +using Splines +using FLOWMath +const fm = FLOWMath + +""" +cosine spacing +""" +function cosine_spacing(N) + return [0.5 * (1 - cos(pi * (i - 1) / (N - 1))) for i in 1:N] +end + +""" +cosine spacing, but also scales and transforms +""" +function scaled_cosine_spacing(N, scale, translate; mypi=pi) + return translate .+ scale * [0.5 * (1 - cos(mypi * (i - 1) / (N - 1))) for i in 1:N] +end + +""" +nosecone stop and tail cone start are ratio of internal length +tail cone tip radius is ratio of hub radius +internal length is from leading edge to duct trailing edge, assuming hub and duct LE are at same spot, and hub extends back further +hub chord is ratio to duct chord +nose_tip_cpx and tail_tip_cpx are also ratio of internal length +""" +function centerbody_geom( + Rhub, + duct_chord; + nosecone_start=0.125, + nosecone_stop=0.35, + tailcone_start=0.65, + nose_tip_cpx=0.1, + tail_tip_cpx=0.85, + cb_te_radius=0.1, + hub_chord=1.25, + N=60, +) + + # - define flat portion first - # + flatx = range(nosecone_stop * duct_chord, tailcone_start * duct_chord, 10) + flatr = ones(10) * Rhub + + # - Nose Cone quadratic spline - # + # knot vector + knots = [0.0, 0.0, 0.0, 1.0, 1.0, 1.0] + + # Nose control points + #nose cpx2 is based on nose tip angle + nosecone_cps = [ + [nosecone_start * duct_chord, 0.0], + [(2.0 * nosecone_start + nosecone_stop) * duct_chord / 3.0, flatr[1]], + [flatx[1], flatr[1]], + ] + + # spline + nose_spline = Splines.NURBS(2, knots, ones(length(nosecone_cps)), nosecone_cps) + + # - tail cone quadratic spline - # + # tail control points + tail_cps = [ + [flatx[end], flatr[end]], + [tail_tip_cpx * duct_chord, flatr[end]], + [hub_chord * duct_chord, cb_te_radius * Rhub], + ] + + # spline + tail_spline = Splines.NURBS(2, knots, ones(length(tail_cps)), tail_cps) + + # - Get nose and tail points - # + u = range(0.0, 1.0; length=N + 1) + n = length(nose_spline.ctrlpts) - 1 + Cw_nose = [[0.0; 0.0] for i in 1:length(u)] + Cw_tail = [[0.0; 0.0] for i in 1:length(u)] + + #loop through parametric points to get curve points + for i in 1:length(u) + Cw_nose[i] = Splines.curvepoint(nose_spline, u[i]) + Cw_tail[i] = Splines.curvepoint(tail_spline, u[i]) + end + + # - Respline the whole geometry to make things smooth - # + # assemble array + xs = [getindex.(Cw_nose, 1); flatx[2:(end - 1)]; getindex.(Cw_tail, 1)] + rs = [getindex.(Cw_nose, 2); flatr[2:(end - 1)]; getindex.(Cw_tail, 2)] + + # re-spline with akima spline and cosine spacing + scale = tail_cps[end][1] - nosecone_cps[1][1] + translate = nosecone_start * duct_chord + cbx = scaled_cosine_spacing(N, scale, translate) + cbsp = fm.Akima(xs, rs) + cbr = cbsp(cbx) + + # return cbx, cbr, nosecone_cps, tail_cps + return cbx, cbr, cbsp, nosecone_cps, tail_cps +end + +""" +nacellevar is ratio relative to Rtip +""" +function duct_geom( + duct_le_radius, + duct_te_radius, + Rtip, + chord, + cbspline; + nosecone_stop=0.35, + tailcone_start=0.65, + nacellevar=1.0, + N=60, +) + + # - define flat portion first - # + flatx = range(nosecone_stop * chord, tailcone_start * chord, 10) + flatr = ones(10) * Rtip + + # - Get TE radial control point - # + # find hub radius at the exit plane + hubr = cbspline(chord) + # solve for duct radial point based on annulus area + # a = pi * (ductr^2 - hubr^2) + duct_te_radius = sqrt(exit_area / pi + hubr^2) + + # - Define outlet spline - # + # knot vector + knots2 = [0.0, 0.0, 0.0, 1.0, 1.0, 1.0] + + # control points + outlet_cps = [ + [flatx[end], flatr[end]], + [chord * (1.0 + tailcone_start) / 2.0, flatr[end]], + [chord, duct_te_radius], + ] + + # spline + outlet_spline = Splines.NURBS(2, knots2, ones(length(outlet_cps)), outlet_cps) + + # - Define inlet spline - # + # control points + inlet_cps = [[0.0, duct_le_radius], [0.0, flatr[end]], [flatx[1], flatr[1]]] + + # spline + inlet_spline = Splines.NURBS(2, knots2, ones(length(inlet_cps)), inlet_cps) + + # - Define nacelle spline - # + # knot vector + knots3 = [0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0] + + # control points + nacelle_cps = [ + [0.0, duct_le_radius], + [0.0, duct_le_radius + nacellevar], + [chord / 2.0, duct_le_radius + nacellevar], + [chord, duct_te_radius], + ] + + # spline + nacelle_spline = Splines.NURBS(3, knots3, ones(length(nacelle_cps)), nacelle_cps) + + # - Get Casing Points - # + u = range(0.0, 1.0; length=N + 1) + n = length(inlet_spline.ctrlpts) - 1 + Cw_inlet = [[0.0; 0.0] for i in 1:length(u)] + Cw_outlet = [[0.0; 0.0] for i in 1:length(u)] + + #loop through parametric points to get curve points + for i in 1:length(u) + Cw_inlet[i] = Splines.curvepoint(inlet_spline, u[i]) + Cw_outlet[i] = Splines.curvepoint(outlet_spline, u[i]) + end + + # - Respline the whole geometry to make things smooth - # + # assemble array + casing_xs = [getindex.(Cw_inlet, 1); flatx[2:(end - 1)]; getindex.(Cw_outlet, 1)] + casing_rs = [getindex.(Cw_inlet, 2); flatr[2:(end - 1)]; getindex.(Cw_outlet, 2)] + + # re-spline with akima spline and cosine spacing + cx = cosine_spacing(N) * chord + csp = fm.Akima(casing_xs, casing_rs) + cr = csp(cx) + + # - Get Nacelle Points - # + u = range(0.0, 1.0; length=N + 1) + n = length(nacelle_spline.ctrlpts) - 1 + Cw_nacelle = [[0.0; 0.0] for i in 1:length(u)] + + #loop through parametric points to get curve points + for i in 1:length(u) + Cw_nacelle[i] = Splines.curvepoint(nacelle_spline, u[i]) + end + + # - Respline the whole geometry to make things smooth - # + # assemble array + nacelle_xs = getindex.(Cw_nacelle, 1) + nacelle_rs = getindex.(Cw_nacelle, 2) + + # re-spline with akima spline and cosine spacing + nx = cosine_spacing(N) * chord + nsp = fm.Akima(nacelle_xs, nacelle_rs) + nr = nsp(nx) + + return cx, cr, nx, nr, inlet_cps, outlet_cps, nacelle_cps + # return dx, dr, dsp, cps +end + +Rtip = 2.0 # inches +Rhub = 0.25 * Rtip # inches +# Rtip = 5.0 # inches +# Rhub = 0.25 * Rtip / 2.0 # inches +chord = 2 * Rtip +xrotor = Rtip +nosecone_start = 0.25 +nosecone_stop = 0.45 +tailcone_start = 0.65 +nose_tip_cpx = 0.1 +tail_tip_cpx = 1.0 +cb_te_radius = 0.0 +# cb_te_radius = 1.0 + +cbx, cbr, cbspline, nosecone_cps, tailcone_cps = centerbody_geom( + Rhub, + chord; + nosecone_start=nosecone_start, + nosecone_stop=nosecone_stop, + tailcone_start=tailcone_start, + nose_tip_cpx=nose_tip_cpx, + tail_tip_cpx=tail_tip_cpx, + cb_te_radius=cb_te_radius, + hub_chord=1.25, + N=20, +) + +f = open("absolute-frame-hub.dat", "w") +for (x, r) in zip(eachrow(cbx), eachrow(cbr)) + write(f, "$(x[1]) $(r[1])\n") +end +close(f) + +# - APC 10x7 DATA at 4011 RPM - # +# J CT CP eta +# +rotor_data = [ + 0.144 0.1389 0.0726 0.276 + 0.180 0.1339 0.0719 0.335 + 0.214 0.1289 0.0710 0.389 + 0.251 0.1229 0.0699 0.442 + 0.287 0.1174 0.0686 0.491 + 0.327 0.1102 0.0666 0.541 + 0.361 0.1039 0.0649 0.578 + 0.390 0.0984 0.0632 0.606 + 0.437 0.0903 0.0610 0.648 + 0.468 0.0849 0.0591 0.672 + 0.501 0.0789 0.0571 0.692 + 0.539 0.0724 0.0546 0.714 + 0.568 0.0659 0.0520 0.720 + 0.611 0.0576 0.0487 0.723 + 0.647 0.0498 0.0453 0.711 + 0.674 0.0438 0.0427 0.691 + 0.718 0.0326 0.0374 0.627 +] + +Jfine = range(rotor_data[1, 1], rotor_data[end, 1], 50) +etafine = fm.akima(rotor_data[:, 1], rotor_data[:, end], Jfine) +ctfine = fm.akima(rotor_data[:, 1], rotor_data[:, 2], Jfine) +Jop = Jfine[findmax(etafine)[2]] +ctop = ctfine[findmax(etafine)[2]] +RPM = 4000 #change +Vinf = calculate_vstar(Rtip * 0.0254, RPM, 0.5) + +exit_area, debug = size_exit(Rtip * 0.0254, RPM, Jop, ctop, Vinf; rho=1.225) +facearea = pi * Rtip^2 +capturearea = debug.Vface * facearea / Vinf +captureradius = sqrt(capturearea / pi) +exit_area /= 0.0254^2 # convert from m^2 to in^2 +duct_te_radius = sqrt(exit_area / pi) + +# inlet_area = pi * 5.875^2 +inlet_area = pi * captureradius^2 +duct_le_radius = captureradius + +nacellevar = 0.75 + +cx, cr, nx, nr, cpi, cpo, cpn = duct_geom( + duct_le_radius, + duct_te_radius, + Rtip, + chord, + cbspline; + nosecone_stop=nosecone_stop, + tailcone_start=tailcone_start, + nacellevar=nacellevar, +) + +ductx = [reverse(nx); cx[2:end]] ./ chord +ductr = ([reverse(nr); cr[2:end]] .- nr[1]) ./ chord + +f = open("absolute-frame-duct.dat", "w") +for (x, r) in zip(eachrow([reverse(nx); cx[2:end]]), eachrow([reverse(nr); cr[2:end]])) + write(f, "$(x[1]) $(r[1])\n") +end +close(f) diff --git a/v0.5.0/DuctAPE/theory_latex/figures/airfoil-angles.tikz b/v0.5.0/DuctAPE/theory_latex/figures/airfoil-angles.tikz new file mode 100644 index 00000000..f992a78a --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/airfoil-angles.tikz @@ -0,0 +1,43 @@ +\begin{tikzpicture}[scale=1.0] + + % velocity vector points + \coordinate (O11) at (0.0,0.0); + \coordinate (O12) at ($(O11) + (-4.0,0.0)$); + \coordinate (O13) at ($(O11) + (-3.0,2.5)$); + \coordinate (O14) at ($(O11) + (-4.0,2.5)$); + \coordinate (O15) at ($(O11) + (-4.0,1.35)$); + + % velocity components + \draw [-Stealth,thick,shorten >=2pt] (O12) -- (O11) node [pos=0.4, below] {\(-\Omega r\)}; + \draw [-Stealth,thick,shorten >=2pt] (O13) -- (O11) node [pos=0.1, above right, shift={(-0.05,-0.05)}] {\(\vect{W}\)}; + \draw [-Stealth,densely dotted,] (O13) -- (O14) node [pos=0.5, above , shift={(0.0,0.0)}] {\(V_\theta\)}; + \draw [-Stealth,densely dotted,] (O14) -- (O15) node [midway, left , shift={(0.0,0.0)}] {\(V_z\)}; + \draw [-Stealth,thick,shorten >=2pt] (O13) -- (O15) node [midway, below right , shift={(-0.05,0.05)}] {\(\vect{V}\)}; + \draw [-Stealth,thick,] (O15) -- (O12) node [midway, left , shift={(0.0,0.0)}] {\(C_\infty\)}; + \draw [dotted,thick] (O11) -- (125:2.5); + \draw [dotted,thick] (O11) -- (90:2); + + % Inflow Angle + \draw[-{Stealth[bend]}] (O11) [partial ellipse = 90:140:0.75 and 0.75] node [pos=0.4, above] {\(\beta_1\)}; + %twist angle + % \draw[-{Stealth[bend]}] (O11) [partial ellipse = 180:125:1.9 and 1.9] node [pos=0.4, left] {\(\theta_{be}\)}; + %angle of attack + \draw[-{Stealth[bend]}] (O11) [partial ellipse = 140:125:1.2 and 1.2] node [midway, above left, shift={(0.05,0.0)}] {\(\alpha\)}; + %angle of attack + \draw[-{Stealth[bend]}] (O11) [partial ellipse = 90:125:1.7 and 1.7] node [midway, above, shift={(0.0,0.0)}] {\(\gamma_{be}\)}; + + % Coordinate system parameters + \coordinate (csysO) at ($(O11) + (1.5,3.0)$); + \coordinate (em) at ($(csysO) +(0,-1)$); + \coordinate (et) at ($(csysO) +(-1,0)$); + % m-axis + \draw[-Stealth,] (csysO) -- (em); + \node[anchor=north,outer sep=0] at (em) {$\hat{\vect{e}}_z$}; + % theta-axis + \draw[-Stealth,] (csysO) -- (et); + \node[anchor=east,outer sep=0] at (et) {$\hat{\vect{e}}_\theta$}; + + %Duct + \draw[primary, pattern={Hatch[angle=80,distance=1.5pt,xshift=.1pt]}, pattern color=plotsgray] plot[smooth] file{figures/bladeelement-angles.dat}; + +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/airfoil.dat b/v0.5.0/DuctAPE/theory_latex/figures/airfoil.dat new file mode 100644 index 00000000..75ee3dcf --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/airfoil.dat @@ -0,0 +1,81 @@ +1.000625 0.0046825 +0.9968775 0.006 +0.98565 0.009925 +0.9670025 0.016385 +0.94103 0.02526 +0.90786 0.0363875 +0.867665 0.0495725 +0.8206575 0.0645775 +0.767085 0.0811525 +0.7072375 0.099015 +0.641445 0.11788 +0.570075 0.1374475 +0.49353 0.1574125 +0.4122525 0.1774725 +0.3267175 0.1973225 +0.237435 0.216665 +0.144935 0.2352025 +0.0497875 0.25265 +-0.047425 0.268725 +-0.1460925 0.28316 +-0.24559 0.2957 +-0.3452775 0.3061075 +-0.444505 0.31417 +-0.543645 0.3196025 +-0.6423575 0.321465 +-0.73862 0.31955 +-0.83171 0.3139 +-0.9209325 0.3046275 +-1.005615 0.2919225 +-1.0851375 0.27604 +-1.15892 0.2573 +-1.2264475 0.2360725 +-1.2872625 0.2127625 +-1.340985 0.1878 +-1.3872925 0.161625 +-1.4259375 0.134655 +-1.45674 0.107295 +-1.4795775 0.07989 +-1.494395 0.0527375 +-1.501185 0.02606 +-1.5 0 +-1.4911075 -0.0245225 +-1.4748275 -0.04663 +-1.4513475 -0.0663125 +-1.4209025 -0.08357 +-1.38376 -0.0984075 +-1.340225 -0.11084 +-1.290615 -0.1209075 +-1.23528 -0.12867 +-1.1745675 -0.134215 +-1.1088475 -0.1376625 +-1.0384825 -0.139165 +-0.9638475 -0.138915 +-0.885315 -0.1371275 +-0.803265 -0.13406 +-0.71809 -0.12998 +-0.630185 -0.12518 +-0.53997 -0.1199525 +-0.44658 -0.114435 +-0.35087 -0.10816 +-0.25441 -0.101255 +-0.15776 -0.0939275 +-0.0614875 -0.08637 +0.0338275 -0.0787425 +0.1276075 -0.0711875 +0.219275 -0.06382 +0.3082575 -0.056725 +0.393995 -0.0499725 +0.4759325 -0.0436075 +0.5535475 -0.037665 +0.6263225 -0.032165 +0.6937775 -0.027125 +0.7554575 -0.0225575 +0.8109425 -0.018475 +0.85985 -0.01489 +0.90184 -0.01182 +0.9366125 -0.0092775 +0.96392 -0.00728 +0.98357 -0.0058425 +0.9954175 -0.004975 +0.999375 -0.0046825 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/airfoil_correction_margin_plots.jl b/v0.5.0/DuctAPE/theory_latex/figures/airfoil_correction_margin_plots.jl new file mode 100644 index 00000000..a03052a5 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/airfoil_correction_margin_plots.jl @@ -0,0 +1,212 @@ +#= +script for generating plots showing how airfoil polar corrections affect the nominal polars +=# + +###################################################################### +# # +# SETUP # +# # +###################################################################### + +#---------------------------------# +# Load Packages, etc. # +#---------------------------------# + +# - Get Project Directory - # +project_dir = dirname(@__FILE__) +if project_dir == "" + project_dir = "." +end + +# create save path +dispath = project_dir + +# - load DuctTAPE - # +using DuctTAPE +const dt = DuctTAPE + +# - load plotting defaults - # +include(project_dir * "/margin_plots_default.jl") + +#---------------------------------# +# Load Nominal Airfoil Data # +#---------------------------------# +include(project_dir * "/naca4412_smoothed_polar.jl") +aoa = ald[:, 1] # in degrees +clo = ald[:, 2] +cdo = ald[:, 3] + +###################################################################### +# # +# LIFT CORRECTIONS # +# # +###################################################################### + +#---------------------------------# +# Stagger & Solidity Correction # +#---------------------------------# +# - initialize plot - # +# have to create axes manually to make them thinner +pss = plot([minimum(aoa); maximum(aoa)], [0.0; 0.0]; linewidth=0.25, color=:black, label="") +plot!(pss, [0.0; 0.0], [minimum(clo); maximum(clo)]; linewidth=0.25, color=:black, label="") + +# - plot nominal curve - # +plot!(pss, aoa, clo; label="", color=1) +annotate!( + pss, + aoa[end]-4, + maximum(clo), + text("Nominal", :right, myblue, 6), +) + +# - calcualte P-G correction +solidity = 1.0 +stagger = pi / 4.0 +clss = dt.solidityandstagger(clo, solidity,stagger) + +# - plot corrected curve - # +plot!(pss, aoa, clss; label="", color=2) +annotate!( + pss, + aoa[end]+2, + maximum(clss)/2, + text("Corrected", :right, myred, 6), +) + +# - save figure - # +savefig(pss, "soliditystagger-correction-margin.pdf") +savefig(pss, "soliditystagger-correction-margin.tikz") + +#---------------------------------# +# Prandtl-Glauert Correction # +#---------------------------------# +# - initialize plot - # +# have to create axes manually to make them thinner +pg = plot([minimum(aoa); maximum(aoa)], [0.0; 0.0]; linewidth=0.25, color=:black, label="") +plot!(pg, [0.0; 0.0], [minimum(clo); maximum(clo)]; linewidth=0.25, color=:black, label="") + +# - plot nominal curve - # +plot!(pg, aoa, clo; label="", color=1) +annotate!( + pg, + aoa[findfirst(a -> a > maximum(clo) / 2 + 0.1, clo)], + maximum(clo) / 2, + text("Nominal", :left, myblue, 6), +) + +# - calcualte P-G correction +ma = 0.5 +clpg = dt.prandtlglauert(clo, ma) + +# - plot corrected curve - # +plot!(pg, aoa, clpg; label="", color=myred, ylim=(minimum(clpg), maximum(clpg) * 1.2)) +annotate!( + pg, + aoa[findfirst(a -> a > maximum(clpg) - 0.2, clpg)], + maximum(clo) + 0.2, + text("Corrected", :right, myred, 6), +) + +# - save figure - # +savefig(pg, "prandtlglauert-correction-margin.tikz") + +#---------------------------------# +# transonic cl limiter correction # +#---------------------------------# +# - initialize plot - # +# have to create axes manually to make them thinner +pml = plot([minimum(aoa); maximum(aoa)], [0.0; 0.0]; linewidth=0.25, color=:black, label="") +plot!(pml, [0.0; 0.0], [minimum(clo); maximum(clo)]; linewidth=0.25, color=:black, label="") + +# - plot nominal curve - # +plot!(pml, aoa, clo; label="", color=1) +annotate!(pml, aoa[findmax(clo)[2]] - 3, maximum(clo), text("Nominal", :right, myblue, 6)) + +# - calcualte transonic limiter correction +ma = 0.8 +clcdmin = clo[findmin(cdo)[2]] +clmax, maxid = findmax(clo) +clmin, minid = findmin(clo) +dclda = (clmax - clmin) / (aoa[maxid] * pi / 180 - aoa[minid] * pi / 180) +cllim = dt.transonicliftlimiter.(clo, ma, clcdmin, clmax, clmin, dclda) + +# - plot corrected curve - # +plot!(pml, aoa, cllim; label="", color=myred) +annotate!( + pml, + aoa[findfirst(a -> a > maximum(clo) / 2, clo)], + maximum(clo) / 2 - 0.1, + text("Limited", :left, myred, 6), +) + +# - save figure - # +savefig(pml, "clminmaxlimit-correction-margin.tikz") + +###################################################################### +# # +# DRAG CORRECTIONS # +# # +###################################################################### + +#---------------------------------# +# Reynolds Number Correction # +#---------------------------------# + +# - initialize plot - # +# have to create axes manually to make them thinner +pdre = plot( + [minimum(aoa); maximum(aoa)], [0.0; 0.0]; linewidth=0.25, color=:black, label="" +) +plot!(pdre, [0.0; 0.0], [0.0; maximum(cdo)]; linewidth=0.25, color=:black, label="") + +# - plot nominal curve - # +plot!(pdre, aoa, cdo; label="", color=1) +annotate!( + pdre, aoa[findmax(cdo)[2]], minimum(cdo) + 0.05, text("Nominal", :right, myblue, 6) +) + +# - calcualte Re correction +reref = 2e6 +re = 5e6 +reexp = 0.5 +cdre = dt.redrag(cdo, re, reref; reexp=reexp) + +# - plot corrected curve - # +plot!(pdre, aoa, cdre; label="", color=myred) +annotate!(pdre, aoa[findmax(cdo)[2]], minimum(cdre), text("Adjusted", :right, myred, 6)) + +# - save figure - # +savefig(pdre, "redrag-correction-margin.tikz") + +#---------------------------------# +# Transonic Drag Correction # +#---------------------------------# + +# - initialize plot - # +# have to create axes manually to make them thinner +pdlim = plot( + [minimum(aoa); maximum(aoa)], [0.0; 0.0]; linewidth=0.25, color=:black, label="" +) +plot!(pdlim, [0.0; 0.0], [0.0; maximum(cdo)]; linewidth=0.25, color=:black, label="") + +# - plot nominal curve - # +plot!(pdlim, aoa, cdo; label="", color=1) +annotate!( + pdlim, aoa[findmax(cdo)[2]], minimum(cdo) + 0.05, text("Nominal", :right, myblue, 6) +) + +# - calcualte transonic correction +mach = 0.8 +mcrit = 0.7 +cdlim = dt.transonicdragaddition(cdo, cllim, clcdmin, mach; mcrit=mcrit) + +plot!(pdlim, [0.0; 0.0], [0.0; maximum(cdlim)]; linewidth=0.25, color=:black, label="") +# - plot corrected curve - # +plot!(pdlim, aoa, cdlim; label="", color=myred) +annotate!( + pdlim, aoa[findmax(cdo)[2]] + 2, maximum(cdlim) / 2, text("Augmented", :right, myred, 6) +) + +# - save figure - # +savefig(pdlim, "transdrag-correction-margin.tikz") + diff --git a/v0.5.0/DuctAPE/theory_latex/figures/airfoil_correction_smoothing.jl b/v0.5.0/DuctAPE/theory_latex/figures/airfoil_correction_smoothing.jl new file mode 100644 index 00000000..7f93468a --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/airfoil_correction_smoothing.jl @@ -0,0 +1,237 @@ +#= +script for generating plots showing how airfoil polar corrections affect the nominal polars +=# + +###################################################################### +# # +# SETUP # +# # +###################################################################### + +# - Get Project Directory - # +project_dir = dirname(@__FILE__) +if project_dir == "" + project_dir = "." +end + +# create save path +dispath = project_dir * "/" + +# - load DuctAPE - # +using DuctAPE +const dt = DuctAPE + +# - load plotting defaults - # +# include(project_dir * "/margin_plots_default.jl") +include(project_dir * "/smoothing_plots_default.jl") + +#---------------------------------# +# Load Nominal Airfoil Data # +#---------------------------------# +include(project_dir * "/naca4412_smoothed_polar.jl") +aoa = ald[:, 1] # in degrees +clo = ald[:, 2] +cdo = ald[:, 3] + +###################################################################### +# # +# Stall Cutoffs # +# # +###################################################################### + +using Xfoil +using FLOWFoil +x, z = FLOWFoil.naca4(4, 4, 12) +aoarange = range(-25, 25, 51) +clxfoil, cdxfoil, _, _, conv = Xfoil.alpha_sweep(reverse(x), reverse(z), aoarange, 2e6) +good = findall(x -> x == 1, conv) +aoaext, clext, cdext = dt.stalllimiters( + aoarange[good] * pi / 180, + clxfoil[good], + cdxfoil[good]; + cutoff_slope=0.1, + N=20, + blend_hardness=50, +) + +plco = plot( + aoarange[good] * pi / 180, + clxfoil[good]; + color=1, + label="", + ylabel=L"c_\ell", + xlabel="Angle of Attack (radians)", + xlim=(-pi / 4, pi / 4), + xticks=(round.([-pi / 4 + 0.1, 0.0, pi / 4 - 0.1], digits=1)), + extra_kwargs=Dict(:subplot => Dict("ylabel style" => "{rotate=-90}")), +) +annotate!(plco, 0.4, 0, text("Nominal", :bottom, myblue, 8)) + +plot!(plco, aoaext, clext; label="", color=2, linestyle=:dash, linewidth=2) +annotate!(plco, -0.7, 1.9, text("Stall Limited", :left, myred, 8)) +# - save figure - # +savefig(plco, dispath * "liftstall-cutoff.tikz") + +pdco = plot( + aoarange[good] * pi / 180, + cdxfoil[good]; + color=1, + label="", + ylabel=L"c_d", + xlabel="Angle of Attack (radians)", + xlim=(-pi / 4, pi / 4), + xticks=(round.([-pi / 4 + 0.1, 0.0, pi / 4 - 0.1], digits=1)), + extra_kwargs=Dict(:subplot => Dict("ylabel style" => "{rotate=-90}")), +) +annotate!(pdco, -0.7, 0.3, text("Nominal", :left, myblue, 8)) + +plot!(pdco, aoaext, cdext; label="", color=2, linestyle=:dash, linewidth=2) +annotate!(pdco, -0.7, 0.265, text("Stall Limited", :left, myred, 8)) +# - save figure - # +savefig(pdco, dispath * "dragstall-cutoff.tikz") + +aoa = aoaext +clo = clext +cdo = cdext + +###################################################################### +# # +# LIFT CORRECTIONS # +# # +###################################################################### + +#---------------------------------# +# Stagger & Solidity Correction # +#---------------------------------# + +##### ----- Vs Solidity Smoothness ----- ##### + +N = 100 +clss = zeros(N, 2) +clssr = zeros(N, 2) +for (is, solidity) in enumerate(range(0.0, 3.0, N)) + for (i, stagger) in enumerate([0.0, pi / 4]) + clss[is, i] = dt.solidityandstaggerfactorsmooth(solidity, stagger;) + clssr[is, i] = dt.solidityandstaggerfactor(solidity, stagger;) + end +end + +pss = plot( + range(0.0, 3.0, N), + clss[:, 1]; + label="", + xlabel="Solidity", + ylabel=L"c_{\ell_\mathrm{ss}}", +) +annotate!(pss, 1.5, 0.9, text("Nominal", :left, myblue, 8)) +# plot!(pss, range(0.0, 3.0, N), clss[:, 2]; label="stagger active") +plot!(pss, range(0.0, 3.0, N), clssr[:, 1]; label="", linestyle=:dash, color=2, linewidth=2) +annotate!(pss, 1.5, 0.8, text("Smoothed", :left, myred, 8)) +# plot!(pss, range(0.0, 3.0, N), clssr[:, 2]; label="unsmoothed", linestyle=:dash, color=2) +# - save figure - # +savefig(pss, dispath * "solidity-smoothed.tikz") + +##### ----- Vs Stagger Smoothness ----- ##### + +N = 100 +clss = zeros(N, 1) +clssr = zeros(N, 1) +pss = plot(; xlabel="Stagger (degrees)", ylabel=L"c_{\ell_\mathrm{ss}}") +for (i, solidity) in enumerate([2.0]) + for (is, stagger) in enumerate(range(1, 100, N) * pi / 180) + clss[is, i] = dt.solidityandstaggerfactorsmooth(solidity, stagger;) + clssr[is, i] = dt.solidityandstaggerfactor(solidity, stagger;) + end + plot!(pss, range(1, 100, N), clssr[:, i]; color=1, label="") + plot!( + pss, range(1, 100, N), clss[:, i]; color=2, linestyle=:dash, linewidth=2, label="" + ) +end +annotate!(pss, 5, 1.0, text("Nominal", :left, myblue, 8)) +annotate!(pss, 5, 0.9, text("Smoothed", :left, myred, 8)) +# - save figure - # +savefig(pss, dispath * "stagger-smoothed.tikz") + +#---------------------------------# +# Prandtl-Glauert Correction # +#---------------------------------# + +N = 100 +clss = zeros(N) +clnom = zeros(N) +pgs = plot(; xlabel="Mach number", ylabel=L"c_{\ell_\text{pg}}") +for (i, ma) in enumerate(range(0.0, 1.5, N)) + clss[i] = dt.prandtlglauert(1.0, ma; verbose=true) + clnom[i] = 1.0 / sqrt(1.0 - min(ma, 0.99)^2) +end +plot!(pgs, range(0.0, 1.5, N), clnom; label="") +annotate!(pgs, 0.5, 6, text("Nominal", :bottom, myblue, 6)) +plot!(pgs, range(0.0, 1.5, N), clss; linestyle=:dash, linewidth=2, label="") +annotate!(pgs, 0.5, 6, text("Smoothed", :top, myred, 6)) +# - save figure - # +savefig(pgs, dispath * "pg-smoothed-margin.tikz") + +#---------------------------------# +# transonic limiter correction # +#---------------------------------# +# - calcualte transonic limiter correction +mcrit = 0.5 +clcdmin = clo[findmin(cdo)[2]] +clmax, maxid = findmax(clo) +clmin, minid = findmin(clo) +dclda = (clmax - clmin) / (aoa[maxid] * pi / 180 - aoa[minid] * pi / 180) + +N = 500 +clnom = zeros(N) +clsmooth = zeros(N) +for (i, mach) in enumerate(range(0.0, 1.0, N)) + clnom[i] = dt.transonicliftlimiter( + 1.0, mach, clcdmin, clmax, clmin, dclda; mcrit=mcrit, verbose=true + ) + clsmooth[i] = dt.transonicliftlimitersmooth( + 1.0, mach, clcdmin, clmax, clmin, dclda; mcrit=mcrit, verbose=true + ) +end + +pclsm = plot( + range(0, 1, N), + clnom; + label="", + color=1, + xlabel="Mach Number", + ylabel=L"c_{\ell_\mathrm{lim}}", +) +plot!(pclsm, range(0, 1, N), clsmooth; label="", color=2, linestyle=:dash, linewidth=2) +annotate!(pclsm, 0.05, 0.95, text("Nominal", :left, myblue, 8)) +annotate!(pclsm, 0.05, 0.9, text("Smoothed", :left, myred, 8)) + +# - save figure - # +savefig(pclsm, dispath * "cltranslim-smoothed.tikz") + +cdnom = zeros(N) +cdsmooth = zeros(N) +for (i, mach) in enumerate(range(0.0, 1.0, N)) + cl = dt.transonicliftlimitersmooth( + 1.0, mach, clcdmin, clmax, clmin, dclda; mcrit=mcrit, verbose=true + ) + cdnom[i] = dt.transonicdragaddition(1.0, cl, clcdmin, mach; mcrit=mcrit, verbose=true) + cdsmooth[i] = dt.transonicdragadditionsmooth( + 1.0, cl, clcdmin, mach; mcrit=mcrit, verbose=true + ) +end + +pcdsm = plot( + range(0, 1, N), + cdnom; + label="", + color=1, + xlabel="Mach Number", + ylabel=L"c_{d_\mathrm{lim}}", +) +plot!(pcdsm, range(0, 1, N), cdsmooth; label="", color=2, linestyle=:dash, linewidth=2) +annotate!(pcdsm, 0.05, 2.5, text("Nominal", :left, myblue, 8)) +annotate!(pcdsm, 0.05, 2.3, text("Smoothed", :left, myred, 8)) + +# - save figure - # +savefig(pcdsm, dispath * "cdtranslim-smoothed.tikz") + diff --git a/v0.5.0/DuctAPE/theory_latex/figures/axisym_fundamental_geometry.png b/v0.5.0/DuctAPE/theory_latex/figures/axisym_fundamental_geometry.png new file mode 100644 index 00000000..2f7d79d4 Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/axisym_fundamental_geometry.png differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/axisym_selfinduced_geometry.png b/v0.5.0/DuctAPE/theory_latex/figures/axisym_selfinduced_geometry.png new file mode 100644 index 00000000..d459fe0e Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/axisym_selfinduced_geometry.png differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/axisympaneldistances.jpg b/v0.5.0/DuctAPE/theory_latex/figures/axisympaneldistances.jpg new file mode 100644 index 00000000..a1d17c08 Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/axisympaneldistances.jpg differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/axisympanelgeometry.jpg b/v0.5.0/DuctAPE/theory_latex/figures/axisympanelgeometry.jpg new file mode 100644 index 00000000..3e417d00 Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/axisympanelgeometry.jpg differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/benchmark_table.tex b/v0.5.0/DuctAPE/theory_latex/figures/benchmark_table.tex new file mode 100644 index 00000000..8655737b --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/benchmark_table.tex @@ -0,0 +1,13 @@ + +\begin{tabular}{ r | S[detect-weight,table-format=2.4] | S[detect-weight,table-format=3.3] } +Method & {\thead{Median Time\\(seconds)}} & {\thead{Mean\\Iterations}} \\ +\hline +\makecell{\color{primary} CSOR Default} & \color{primary} 0.0042 & \color{primary} 15.571 \\ +\makecell{\color{primary} CSOR Absolute} & \color{primary} 0.0183 & \color{primary} 76.476 \\ +\makecell{\color{primary} NLSolve's Anderson Acceleration} & \color{primary} 0.0097 & \color{primary} 36.429 \\ +\makecell{\color{primary} SpeedMapping.jl} & \color{primary} 0.0300 & \color{primary} 139.333 \\ +\makecell{\color{primary} FixedPoint.jl (Nesterov Acceleration)} & \color{primary} 0.1399 & \color{primary} 592.286 \\ +\makecell{\color{secondary} MINPACK's HYBRJ} & \color{secondary}3.0528 & \color{secondary}14.238 \\ +\makecell{\color{tertiary} SimpleNonlinearSolve's Newton Raphson} & \color{tertiary} 10.7100 & \color{tertiary} \color{white} 0.0 \\ +\makecell{\color{tertiary} NLSolve's Newton Method} & \color{tertiary} 22.0116 & \color{tertiary} 16.714 \\ +\end{tabular} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/blade_element_angles.png b/v0.5.0/DuctAPE/theory_latex/figures/blade_element_angles.png new file mode 100644 index 00000000..ef12c1a8 Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/blade_element_angles.png differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/blade_element_angles_clean.png b/v0.5.0/DuctAPE/theory_latex/figures/blade_element_angles_clean.png new file mode 100644 index 00000000..4f5a4a7a Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/blade_element_angles_clean.png differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/bladeelement-angles.dat b/v0.5.0/DuctAPE/theory_latex/figures/bladeelement-angles.dat new file mode 100644 index 00000000..b2cc3150 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/bladeelement-angles.dat @@ -0,0 +1,161 @@ +0.8603646545265691 -1.2287280664334876 +0.8600149734543125 -1.2282670360316148 +0.85896642574342 -1.2268846862844185 +0.8572204948284522 -1.2245832420476954 +0.8547796429397031 -1.2213664129373933 +0.8516472962655772 -1.2172393953406742 +0.8478278249738358 -1.2122088746935822 +0.8433265188562196 -1.2062830275080725 +0.8381495595382584 -1.1994715225120949 +0.8323039903441125 -1.1917855201678718 +0.8257976850201768 -1.1832376697587808 +0.8186393165970763 -1.173842103187102 +0.8108383277046723 -1.163614424605297 +0.8024049036471289 -1.152571695013666 +0.793349949494357 -1.140732410997501 +0.7836850723529732 -1.1281164768468332 +0.7734225698461211 -1.1147451694001416 +0.7625754256601215 -1.1006410950779093 +0.7511573128110841 -1.0858281387197741 +0.73918260505136 -1.0703314040066112 +0.7266663965800715 -1.0541771454321227 +0.7136245299505031 -1.0373926919825989 +0.7000736317871563 -1.0200063628835336 +0.6860311556442665 -1.0020473759723214 +0.6715154310633041 -0.9835457494519679 +0.656545717627119 -0.9645321979662381 +0.6411422625703732 -0.94503802410666 +0.6253263602967546 -0.9250950066114816 +0.6091204119795576 -0.9047352866414667 +0.5925479832891515 -0.8839912536134914 +0.5756338582032362 -0.862895432136933 +0.5584040868171994 -0.8414803716274061 +0.5408860250846697 -0.8197785401658033 +0.5231083644836025 -0.7978222241270668 +0.5051011497207428 -0.7756434350228326 +0.48689578275552853 -0.7532738248860881 +0.468525011640577 -0.7307446113762723 +0.4500229029357925 -0.708086513602696 +0.43142479675152273 -0.6853296994564005 +0.4127672438068595 -0.6625037450100791 +0.39408792424484235 -0.6396376062974362 +0.3754255483190997 -0.6167596035229491 +0.3568197394478321 -0.5938974174863786 +0.33831090051214874 -0.5710780977397075 +0.3199400646476618 -0.5483280817337928 +0.3017487321319849 -0.5256732239641195 +0.28370710957738254 -0.5031889587567244 +0.26574523359049007 -0.4809784230997851 +0.2479094453641228 -0.45906280846246184 +0.23024840066253374 -0.43746109475362993 +0.2128112779079976 -0.4161912232353844 +0.1956475239183345 -0.39527019379898504 +0.17880659796691373 -0.3747141645771611 +0.1623377174622928 -0.35453855170681864 +0.14628960847926886 -0.3347581270999882 +0.13071026424369817 -0.315387112169313 +0.11564671448264055 -0.2964392655856167 +0.10114480830330903 -0.2779279633162753 +0.08724901296435601 -0.25986626940043556 +0.07400223055781706 -0.2422669961559655 +0.061445634237232136 -0.2251427527780221 +0.04961852521561305 -0.20850598157429912 +0.03855821132524927 -0.19236898138091776 +0.02829990748954292 -0.176743918008764 +0.018876658015077707 -0.16164282187589862 +0.010319280179901746 -0.14707757328051155 +0.0026563281812875955 -0.1330598760539451 +-0.004085923877706496 -0.11960122059808335 +-0.00988348163008141 -0.10671283754986036 +-0.014714614683740149 -0.09440564352237027 +-0.018559827675461042 -0.0826901805423788 +-0.021401820550348612 -0.07157655093410886 +-0.023225440607860703 -0.061074349486118694 +-0.024017628922102827 -0.051192594780013576 +-0.023767363745318945 -0.041939661555824 +-0.022465603439745345 -0.03332321593937447 +-0.020105231356097084 -0.025350155263195753 +-0.016681004890293925 -0.018026554076845978 +-0.012189510708368033 -0.011357617768259418 +-0.006629127838898189 -0.005347645009188469 +0.0 0.0 +0.0075764923117547685 0.004599237305242484 +0.01597586605038748 0.008363991354737756 +0.0251886847556011 0.01129091823571075 +0.03520113109658598 0.013375776637131374 +0.04599510864878798 0.014613490736221167 +0.057548381951890965 0.014998236556506141 +0.06983475289146195 0.014523550444780348 +0.08282427095180647 0.013182457972925655 +0.09648347443895833 0.010967621261479182 +0.11077565937854483 0.007871502450860442 +0.12566117246050976 0.0038865408181551764 +0.14109772413700533 -0.0009946591437549335 +0.15704071778535816 -0.006779131499190794 +0.17344359072756008 -0.013473347388844287 +0.190258162852283 -0.02108301121627769 +0.20743498861447354 -0.0296128573979631 +0.22492370828904518 -0.039066450497508134 +0.24267339452545983 -0.049445991441074436 +0.26063289048407345 -0.06075213234278597 +0.2787511361267081 -0.07298380226056671 +0.2969774795755813 -0.08613804595953982 +0.31526197083811025 -0.10020987748773985 +0.3335556356110787 -0.1151921500738199 +0.35181072731657215 -0.13107544354544315 +0.36998095597400216 -0.14784797014710246 +0.3880216929674287 -0.16549549931423221 +0.40589015121540895 -0.18400130164356573 +0.4235455406822829 -0.2033461119943853 +0.44094919957629664 -0.22350811136780668 +0.4580647019532006 -0.24446292694719074 +0.47485794277688914 -0.2661836494471328 +0.49129720177529257 -0.2886408667154121 +0.5073531876654407 -0.31180271236507934 +0.5229990645030133 -0.3356349280848598 +0.538212004662574 -0.360099858028464 +0.5530869340801263 -0.38507688624718606 +0.567679812115747 -0.4104722568039115 +0.5819762664112524 -0.4362411200294739 +0.5959631207791896 -0.4623375328279241 +0.6096283380323002 -0.4887145837746182 +0.6229609651023401 -0.5153245168746329 +0.6359510818224174 -0.542118852887732 +0.6485897544668328 -0.5690485073220934 +0.6608689948444886 -0.5960639044076117 +0.6727817254347462 -0.6231150865748818 +0.6843217507466686 -0.6501518191820046 +0.6954837347822918 -0.6771236904422344 +0.7062631841999607 -0.70398020670557 +0.7166564365123709 -0.7306708834314479 +0.7266606524225301 -0.7571453323529368 +0.7362738112053113 -0.7833533454711648 +0.745494707887455 -0.8092449766287154 +0.7543229508685052 -0.8347706214897902 +0.7627589585617556 -0.8598810968013355 +0.7708039536189981 -0.8845277198221804 +0.7784599533356795 -0.9086623887866144 +0.7857297549125757 -0.9322376652157023 +0.7926169143737037 -0.9552068588057618 +0.7991257181041526 -0.9775241155115268 +0.8052611461709889 -0.9991445093048579 +0.8110288268196961 -1.0200241379325357 +0.8164349817911841 -1.0401202228231499 +0.8214863623732287 -1.0593912131083965 +0.8261901763777534 -1.0777968935334086 +0.8305540065139495 -1.095298495839463 +0.8345857208991919 -1.1118588130159432 +0.8382933767074954 -1.1274423156419613 +0.8416851181918221 -1.1420152693766192 +0.844769070525314 -1.155545852514985 +0.8475532310817531 -1.1680042724085964 +0.8500453599123049 -1.179362879458059 +0.8522528712700439 -1.1895962773237774 +0.8541827280831109 -1.1986814279710214 +0.8558413412800421 -1.20659775016841 +0.8572344758264939 -1.2133272100947892 +0.8583671652421416 -1.2188544027777306 +0.8592436362320296 -1.2231666231860463 +0.8598672448913488 -1.226253925926475 +0.8602404257307951 -1.2281091726481153 +0.8603646545265691 -1.2287280664334876 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/bladeelementframe.tikz b/v0.5.0/DuctAPE/theory_latex/figures/bladeelementframe.tikz new file mode 100644 index 00000000..75d9c91e --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/bladeelementframe.tikz @@ -0,0 +1,321 @@ +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={1.0mm}, yshift={-1.0mm}, width={99.6mm}, height={56.05714285714286mm}, scaled x ticks={false}, xlabel={m}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorticks={false}, xmajorgrids={false}, xmin={-0.25}, xmax={1.5}, axis x line={left}, x axis line style={color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$\theta$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, ymajorticks={false}, ymajorgrids={false}, ymin={-0.15}, ymax={0.85}, axis y line={left}, y axis line style={color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={3924e4e0-1d00-4bfb-9a44-6a1ae60577ed}, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.284322277112458 -0.02318568699245091 \\ + 0.28426126779509386 -0.023110407884256584 \\ + 0.2840783227022495 -0.022884697847299407 \\ + 0.28377369072541636 -0.022508938106678075 \\ + 0.28334778771238145 -0.02198376192931821 \\ + 0.2828011979505283 -0.02131005152301213 \\ + 0.2821346761260105 -0.020488933816016672 \\ + 0.28134914964562047 -0.019521775233870553 \\ + 0.28044572118181665 -0.018410175617444693 \\ + 0.2794256712792599 -0.017155961449325796 \\ + 0.2782904608440687 -0.015761178573750395 \\ + 0.2770417333253824 -0.014228084607886757 \\ + 0.2756813163931532 -0.012559141248881439 \\ + 0.2742112229166232 -0.010757006681489018 \\ + 0.2726336510547641 -0.008824528285205663 \\ + 0.270950983282979 -0.006764735827712823 \\ + 0.26916578419932274 -0.0045808353133703905 \\ + 0.2672807969779635 -0.0022762036319040335 \\ + 0.2652989383669927 0.00014561587609908389 \\ + 0.26322329216126966 0.002680916853023657 \\ + 0.2610571011179027 0.005325832309630643 \\ + 0.2588037573212709 0.008076335952792169 \\ + 0.2564667910451351 0.010928242486202736 \\ + 0.25404985820029463 0.01387720695488659 \\ + 0.2515567264963058 0.016918723243670428 \\ + 0.24899126048387288 0.020048121877213096 \\ + 0.24635740567959397 0.02326056730360057 \\ + 0.24365917200576975 0.026551054873926047 \\ + 0.24090061680404684 0.029914407755749023 \\ + 0.23808582770196157 0.0333452740380657 \\ + 0.23521890562529896 0.036838124298752356 \\ + 0.2323039482560737 0.04038724991184507 \\ + 0.22934503423552874 0.04398676237115408 \\ + 0.22634620840366146 0.04763059389840914 \\ + 0.22331146835146398 0.051312499588424015 \\ + 0.22024475253949924 0.05502606132085934 \\ + 0.2171499302070452 0.05876469363846393 \\ + 0.2140307932603899 0.06252165175575401 \\ + 0.21089105028770636 0.06629004182070342 \\ + 0.20773432280216989 0.07006283350605491 \\ + 0.20456414376562662 0.07383287495735462 \\ + 0.20138395839331752 0.07759291007288847 \\ + 0.1981971271871112 0.08133559803757008 \\ + 0.19500693109167128 0.08505353497976315 \\ + 0.1918165786162534 0.08873927756829064 \\ + 0.18862921471566885 0.0923853683177647 \\ + 0.18545479718766822 0.09599122833416411 \\ + 0.18230710538082534 0.09956018226953359 \\ + 0.17918872629482954 0.10308446054266011 \\ + 0.17610198187474832 0.10655614260243292 \\ + 0.17304909502545934 0.10996733873546194 \\ + 0.1700322080278246 0.11331022407517644 \\ + 0.1670534008918671 0.11657707232362081 \\ + 0.16411470922693983 0.11976028874223943 \\ + 0.1612181412207835 0.12285244198023287 \\ + 0.15836569334023254 0.1258462943303483 \\ + 0.15555936439574294 0.12873483003183425 \\ + 0.15280116764928386 0.1315112812781479 \\ + 0.15009314068966273 0.13416915163205106 \\ + 0.14743735285008017 0.1367022366020149 \\ + 0.14483590999852694 0.1391046411902549 \\ + 0.14229095659130156 0.14137079428300345 \\ + 0.13980467494211155 0.1434954598164611 \\ + 0.1373792817225303 0.14547374471585375 \\ + 0.13501702177257613 0.14730110366872518 \\ + 0.13272015936143775 0.14897334085558556 \\ + 0.13049096709648605 0.15048660881991174 \\ + 0.12833171273236138 0.15183740471392954 \\ + 0.12624464417986916 0.15302256420535973 \\ + 0.12423197305555478 0.15403925337227986 \\ + 0.12229585714620413 0.1548849589474791 \\ + 0.12043838218735381 0.15555747729939542 \\ + 0.11866154337061613 0.1560549025533334 \\ + 0.11696722700085115 0.1563756142637981 \\ + 0.11535719272080174 0.1565182650462848 \\ + 0.11383305670781409 0.15648176856481047 \\ + 0.11239627622498455 0.15626528825014008 \\ + 0.11104813587801006 0.15586822709356038 \\ + 0.1097897358898819 0.15529021882288666 \\ + 0.1086219826592461 0.15453112072205244 \\ + 0.10754558181582113 0.15359100830418596 \\ + 0.10657822484702256 0.15248736290982892 \\ + 0.10573759257093786 0.15123807550394264 \\ + 0.10502435765490735 0.14984444887045767 \\ + 0.10443936838642452 0.14830838041158004 \\ + 0.10398363699382195 0.1466323488508183 \\ + 0.10365832362793674 0.1448193959534198 \\ + 0.10346471626967119 0.14287310353261815 \\ + 0.10340420689494258 0.14079756607765984 \\ + 0.10347826428855186 0.1385973594005935 \\ + 0.10368840395084265 0.13627750575211767 \\ + 0.10403615558468568 0.1338434359014108 \\ + 0.10452302868452398 0.13130094871001458 \\ + 0.10515047677336017 0.12865616875492833 \\ + 0.10591986084730409 0.1259155025707298 \\ + 0.10683241259048477 0.12308559408463257 \\ + 0.10788919791585931 0.12017327981200833 \\ + 0.1090910813700386 0.11718554436336204 \\ + 0.11043869191322628 0.11412947678757582 \\ + 0.11193239054946769 0.11101222824116956 \\ + 0.11357224023854424 0.10784097143027221 \\ + 0.11535797847010319 0.10462286222203795 \\ + 0.11728899282419568 0.10136500376658403 \\ + 0.11936429978162144 0.09807441341048545 \\ + 0.12158252698374031 0.09475799261983163 \\ + 0.1239418990761393 0.09142250006625503 \\ + 0.1264402272051786 0.08807452796462795 \\ + 0.12907490217239856 0.08472048168769815 \\ + 0.13184289119040432 0.08136656262215805 \\ + 0.13474073812642526 0.0780187541737771 \\ + 0.1377645670674235 0.07468281077742607 \\ + 0.14091008899440452 0.07136424972208912 \\ + 0.14417261131430759 0.06806834556213814 \\ + 0.14754704996618542 0.06480012685489367 \\ + 0.15102794379478646 0.061564374941282335 \\ + 0.15460932291135943 0.05836547651345527 \\ + 0.1582738166146836 0.055196515566720825 \\ + 0.16200770261733305 0.0520543065054249 \\ + 0.16580393307981592 0.04894240393027482 \\ + 0.16965529172307703 0.04586424340264798 \\ + 0.1735544166395807 0.04282314783130871 \\ + 0.1774938225338147 0.03982233323769979 \\ + 0.18146592217040397 0.036864913703401045 \\ + 0.18546304685006945 0.03395390534543358 \\ + 0.18947746577830182 0.031092229209720573 \\ + 0.19350140423761447 0.02828271301897456 \\ + 0.19752706052036378 0.025528091757323845 \\ + 0.20154662162415188 0.022831007118899488 \\ + 0.20555227775458956 0.020194005890214917 \\ + 0.20953623571961194 0.0176195373753833 \\ + 0.21349073133460678 0.015109950008060202 \\ + 0.21740804098749394 0.012667487323598056 \\ + 0.22128049253686116 0.010294283488563358 \\ + 0.22510047573378078 0.007992358601937088 \\ + 0.22886045236863445 0.00576361399264104 \\ + 0.2325529663479743 0.003609827741314464 \\ + 0.23617065390315448 0.0015326506505191073 \\ + 0.23970625412237034 -0.0004663971230377123 \\ + 0.24315261998120086 -0.0023859285777315525 \\ + 0.24650273002431183 -0.004224691344166948 \\ + 0.24974970082332243 -0.005981567984949629 \\ + 0.2528868003037824 -0.007655575004463566 \\ + 0.25590746199869857 -0.009245860492195085 \\ + 0.2588053002480805 -0.010751700361786978 \\ + 0.2615741263246467 -0.012172493188046363 \\ + 0.26420796542622726 -0.013507753684464552 \\ + 0.2667010744366416 -0.014757104903328197 \\ + 0.2690479603199863 -0.015920269278125884 \\ + 0.27124339897937266 -0.016997058662661976 \\ + 0.27328245438113585 -0.01798736355213329 \\ + 0.275160497720249 -0.01889114169757017 \\ + 0.2768732263828031 -0.019708406345782636 \\ + 0.27841668244754253 -0.020439214351718846 \\ + 0.27978727046095336 -0.021083654418537642 \\ + 0.28098177421954657 -0.0216418357224806 \\ + 0.2819973722987919 -0.022113877174748595 \\ + 0.28283165208054156 -0.02249989756115807 \\ + 0.28348262204943153 -0.022800006782662932 \\ + 0.2839487221532094 -0.02301429839633952 \\ + 0.2842288320516024 -0.023142843627748058 \\ + 0.28432227711245806 -0.023185686992450882 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={cd9fd12a-ee71-4a45-8aa3-986732375067}, draw opacity={1.0}, line width={1.0}, solid, quiver={u={\thisrow{u}}, v={\thisrow{v}}, every arrow/.append style={-{stealth[length = 0.3pt, width = 0.3pt]}}}] + table[row sep={\\}] + { + x y u v \\ + -0.08464280727919828 0.4565182650462848 0.19 -0.29 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={cd9fd12a-ee71-4a45-8aa3-986732375067}, forget plot, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + -0.08464280727919828 0.4565182650462848 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={3c5db312-7a7c-4575-bf98-6b4f49190d79}, draw opacity={1.0}, line width={1.0}, solid, quiver={u={\thisrow{u}}, v={\thisrow{v}}, every arrow/.append style={-{stealth[length = 0.3pt, width = 0.3pt]}}}] + table[row sep={\\}] + { + x y u v \\ + -0.08464280727919828 0.4565182650462848 0.19 0.15000000000000002 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={3c5db312-7a7c-4575-bf98-6b4f49190d79}, forget plot, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + -0.08464280727919828 0.4565182650462848 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={5b39e7cd-f8e5-431b-818f-cba991f99a7c}, draw opacity={1.0}, line width={1.0}, solid, quiver={u={\thisrow{u}}, v={\thisrow{v}}, every arrow/.append style={-{stealth[length = 0.3pt, width = 0.3pt]}}}] + table[row sep={\\}] + { + x y u v \\ + 0.10535719272080174 0.2015182650462848 0.0 0.37 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={5b39e7cd-f8e5-431b-818f-cba991f99a7c}, forget plot, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.10535719272080174 0.2015182650462848 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={47cfbe82-4a6f-4c8b-aa0d-ee7eae274ad5}, draw opacity={1.0}, line width={1.0}, solid, quiver={u={\thisrow{u}}, v={\thisrow{v}}, every arrow/.append style={-{stealth[length = 0.3pt, width = 0.3pt]}}}] + table[row sep={\\}] + { + x y u v \\ + 0.43071438544160345 0.21303653009256962 0.38 0.30000000000000004 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={47cfbe82-4a6f-4c8b-aa0d-ee7eae274ad5}, forget plot, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.43071438544160345 0.21303653009256962 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={5351a276-609c-452f-8b52-501a37a6404c}, draw opacity={1.0}, line width={1.0}, solid, quiver={u={\thisrow{u}}, v={\thisrow{v}}, every arrow/.append style={-{stealth[length = 0.3pt, width = 0.3pt]}}}] + table[row sep={\\}] + { + x y u v \\ + 0.43071438544160345 0.21303653009256962 0.25460000000000005 0.0 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={5351a276-609c-452f-8b52-501a37a6404c}, forget plot, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.43071438544160345 0.21303653009256962 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={0d3dcb14-ddee-4ccd-b92b-1208336f3889}, draw opacity={1.0}, line width={1.0}, solid, quiver={u={\thisrow{u}}, v={\thisrow{v}}, every arrow/.append style={-{stealth[length = 0.3pt, width = 0.3pt]}}}] + table[row sep={\\}] + { + x y u v \\ + 0.6853143854416035 0.21303653009256962 0.09404999999999997 0.15000000000000002 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={0d3dcb14-ddee-4ccd-b92b-1208336f3889}, forget plot, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.6853143854416035 0.21303653009256962 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={cea73c69-ea01-4078-82e8-0f06c39a468b}, draw opacity={1.0}, line width={1.0}, solid, quiver={u={\thisrow{u}}, v={\thisrow{v}}, every arrow/.append style={-{stealth[length = 0.3pt, width = 0.3pt]}}}] + table[row sep={\\}] + { + x y u v \\ + 0.7793643854416035 0.36303653009256964 0.03134999999999999 0.1325 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={cea73c69-ea01-4078-82e8-0f06c39a468b}, forget plot, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.7793643854416035 0.36303653009256964 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={9b016db2-a4a6-4e81-ad79-b36bb4257d18}, draw opacity={1.0}, line width={1.0}, solid, quiver={u={\thisrow{u}}, v={\thisrow{v}}, every arrow/.append style={-{stealth[length = 0.3pt, width = 0.3pt]}}}] + table[row sep={\\}] + { + x y u v \\ + 0.9307143854416035 0.21303653009256962 0.38 0.30000000000000004 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={9b016db2-a4a6-4e81-ad79-b36bb4257d18}, forget plot, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.9307143854416035 0.21303653009256962 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={4e6c6452-fe5a-4935-94b5-0398d0999d91}, draw opacity={1.0}, line width={1.0}, solid, quiver={u={\thisrow{u}}, v={\thisrow{v}}, every arrow/.append style={-{stealth[length = 0.3pt, width = 0.3pt]}}}] + table[row sep={\\}] + { + x y u v \\ + 0.9307143854416035 0.21303653009256962 0.38 0.0 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={4e6c6452-fe5a-4935-94b5-0398d0999d91}, forget plot, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.9307143854416035 0.21303653009256962 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={850bbc63-c4b4-427b-909d-04134c192732}, draw opacity={1.0}, line width={1.0}, solid, quiver={u={\thisrow{u}}, v={\thisrow{v}}, every arrow/.append style={-{stealth[length = 0.3pt, width = 0.3pt]}}}] + table[row sep={\\}] + { + x y u v \\ + 1.3107143854416035 0.21303653009256962 0.0 0.265 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={850bbc63-c4b4-427b-909d-04134c192732}, forget plot, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 1.3107143854416035 0.21303653009256962 \\ + } + ; + \node[right, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:-0.13464280727919825,0.31151826504628477) {$\vect{W}$}; + \node[, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:-0.009642807279198265,0.6065182650462848) {$\vect{C}$}; + \node[, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:0.19035719272080173,0.4065182650462848) {$\vect{U}$}; + \node[, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:0.5807143854416035,0.4489069638309985) {$\vect{C}$}; + \node[, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:0.5580143854416035,0.11303653009256961) {$C_\infty$}; + \node[, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:0.7673393854416035,0.2304292240740557) {$\vect{V}$}; + \node[, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:0.8300393854416035,0.39428653009256964) {$\vect{u}$}; + \node[, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:1.0807143854416035,0.4489069638309985) {$\vect{C}$}; + \node[, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:1.1207143854416035,0.11303653009256961) {$C_m$}; + \node[, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:1.4107143854416035,0.3455365300925696) {$C_\theta$}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/cb-validation-geom.tikz b/v0.5.0/DuctAPE/theory_latex/figures/cb-validation-geom.tikz new file mode 100644 index 00000000..36112ee9 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/cb-validation-geom.tikz @@ -0,0 +1,7 @@ +\begin{tikzpicture}[scale=5] + %Airfoil + \draw[ thick,primary, pattern={Hatch[angle=35,distance=2pt,xshift=.1pt, line width=0.25pt]}, pattern color=plotsgray] plot[smooth] file{figures/isolated_hub_coordinates.dat}; + % \draw[dashed] (-0.1,0) -- (1.1,0); + \draw[dash pattern=on 12pt off 2pt on 1pt off 2pt on 4cm] (-0.2,0) -- (0.65,0); + \draw[dash pattern=on 12pt off 2pt on 1pt off 2pt on 4cm ] (1.5,0) -- (0.65,0); +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/cdtranslim-smoothed.tikz b/v0.5.0/DuctAPE/theory_latex/figures/cdtranslim-smoothed.tikz new file mode 100644 index 00000000..3c686584 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/cdtranslim-smoothed.tikz @@ -0,0 +1,1040 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={45.8mm}, height={50.8mm}, scaled x ticks={false}, xlabel={Mach Number}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.030000000000000027}, xmax={1.03}, xticklabels={{$0.00$,$0.25$,$0.50$,$0.75$,$1.00$}}, xtick={{0.0,0.25,0.5,0.75,1.0}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_{d_\mathrm{lim}}$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, ymajorgrids={false}, ymin={0.9455182151822091}, ymax={2.870538945855386}, yticklabels={{$1.0$,$1.5$,$2.0$,$2.5$}}, ytick={{1.0,1.5,2.0,2.5}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={188d8285-9849-40ee-a6d6-9c958f9ec7d3}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.0 1.0 \\ + 0.002004008016032064 1.0 \\ + 0.004008016032064128 1.0 \\ + 0.006012024048096192 1.0 \\ + 0.008016032064128256 1.0 \\ + 0.01002004008016032 1.0 \\ + 0.012024048096192385 1.0 \\ + 0.014028056112224449 1.0 \\ + 0.01603206412825651 1.0 \\ + 0.018036072144288578 1.0 \\ + 0.02004008016032064 1.0 \\ + 0.022044088176352707 1.0 \\ + 0.02404809619238477 1.0 \\ + 0.026052104208416832 1.0 \\ + 0.028056112224448898 1.0 \\ + 0.03006012024048096 1.0 \\ + 0.03206412825651302 1.0 \\ + 0.03406813627254509 1.0 \\ + 0.036072144288577156 1.0 \\ + 0.03807615230460922 1.0 \\ + 0.04008016032064128 1.0 \\ + 0.04208416833667335 1.0 \\ + 0.04408817635270541 1.0 \\ + 0.04609218436873747 1.0 \\ + 0.04809619238476954 1.0 \\ + 0.050100200400801605 1.0 \\ + 0.052104208416833664 1.0 \\ + 0.05410821643286573 1.0 \\ + 0.056112224448897796 1.0 \\ + 0.05811623246492986 1.0 \\ + 0.06012024048096192 1.0 \\ + 0.06212424849699399 1.0 \\ + 0.06412825651302605 1.0 \\ + 0.06613226452905811 1.0 \\ + 0.06813627254509018 1.0 \\ + 0.07014028056112225 1.0 \\ + 0.07214428857715431 1.0 \\ + 0.07414829659318638 1.0 \\ + 0.07615230460921844 1.0 \\ + 0.0781563126252505 1.0 \\ + 0.08016032064128256 1.0 \\ + 0.08216432865731463 1.0 \\ + 0.0841683366733467 1.0 \\ + 0.08617234468937876 1.0 \\ + 0.08817635270541083 1.0 \\ + 0.09018036072144289 1.0 \\ + 0.09218436873747494 1.0 \\ + 0.09418837675350701 1.0 \\ + 0.09619238476953908 1.0 \\ + 0.09819639278557114 1.0 \\ + 0.10020040080160321 1.0 \\ + 0.10220440881763528 1.0 \\ + 0.10420841683366733 1.0 \\ + 0.1062124248496994 1.0 \\ + 0.10821643286573146 1.0 \\ + 0.11022044088176353 1.0 \\ + 0.11222444889779559 1.0 \\ + 0.11422845691382766 1.0 \\ + 0.11623246492985972 1.0 \\ + 0.11823647294589178 1.0 \\ + 0.12024048096192384 1.0 \\ + 0.12224448897795591 1.0 \\ + 0.12424849699398798 1.0 \\ + 0.12625250501002003 1.0 \\ + 0.1282565130260521 1.0 \\ + 0.13026052104208416 1.0 \\ + 0.13226452905811623 1.0 \\ + 0.1342685370741483 1.0 \\ + 0.13627254509018036 1.0 \\ + 0.13827655310621242 1.0 \\ + 0.1402805611222445 1.0 \\ + 0.14228456913827656 1.0 \\ + 0.14428857715430862 1.0 \\ + 0.1462925851703407 1.0 \\ + 0.14829659318637275 1.0 \\ + 0.15030060120240482 1.0 \\ + 0.1523046092184369 1.0 \\ + 0.15430861723446893 1.0 \\ + 0.156312625250501 1.0 \\ + 0.15831663326653306 1.0 \\ + 0.16032064128256512 1.0 \\ + 0.1623246492985972 1.0 \\ + 0.16432865731462926 1.0 \\ + 0.16633266533066132 1.0 \\ + 0.1683366733466934 1.0 \\ + 0.17034068136272545 1.0 \\ + 0.17234468937875752 1.0 \\ + 0.1743486973947896 1.0 \\ + 0.17635270541082165 1.0 \\ + 0.17835671342685372 1.0 \\ + 0.18036072144288579 1.0 \\ + 0.18236472945891782 1.0 \\ + 0.1843687374749499 1.0 \\ + 0.18637274549098196 1.0 \\ + 0.18837675350701402 1.0 \\ + 0.1903807615230461 1.0 \\ + 0.19238476953907815 1.0 \\ + 0.19438877755511022 1.0 \\ + 0.1963927855711423 1.0 \\ + 0.19839679358717435 1.0 \\ + 0.20040080160320642 1.0 \\ + 0.20240480961923848 1.0 \\ + 0.20440881763527055 1.0 \\ + 0.20641282565130262 1.0 \\ + 0.20841683366733466 1.0 \\ + 0.21042084168336672 1.0 \\ + 0.2124248496993988 1.0 \\ + 0.21442885771543085 1.0 \\ + 0.21643286573146292 1.0 \\ + 0.218436873747495 1.0 \\ + 0.22044088176352705 1.0 \\ + 0.22244488977955912 1.0 \\ + 0.22444889779559118 1.0 \\ + 0.22645290581162325 1.0 \\ + 0.22845691382765532 1.0 \\ + 0.23046092184368738 1.0 \\ + 0.23246492985971945 1.0 \\ + 0.23446893787575152 1.0 \\ + 0.23647294589178355 1.0 \\ + 0.23847695390781562 1.0 \\ + 0.24048096192384769 1.0 \\ + 0.24248496993987975 1.0 \\ + 0.24448897795591182 1.0 \\ + 0.24649298597194388 1.0 \\ + 0.24849699398797595 1.0 \\ + 0.250501002004008 1.0 \\ + 0.25250501002004005 1.0 \\ + 0.2545090180360721 1.0 \\ + 0.2565130260521042 1.0 \\ + 0.25851703406813625 1.0 \\ + 0.2605210420841683 1.0 \\ + 0.2625250501002004 1.0 \\ + 0.26452905811623245 1.0 \\ + 0.2665330661322645 1.0 \\ + 0.2685370741482966 1.0 \\ + 0.27054108216432865 1.0 \\ + 0.2725450901803607 1.0 \\ + 0.2745490981963928 1.0 \\ + 0.27655310621242485 1.0 \\ + 0.2785571142284569 1.0 \\ + 0.280561122244489 1.0 \\ + 0.28256513026052105 1.0 \\ + 0.2845691382765531 1.0 \\ + 0.2865731462925852 1.0 \\ + 0.28857715430861725 1.0 \\ + 0.2905811623246493 1.0 \\ + 0.2925851703406814 1.0 \\ + 0.29458917835671344 1.0 \\ + 0.2965931863727455 1.0 \\ + 0.2985971943887776 1.0 \\ + 0.30060120240480964 1.0 \\ + 0.3026052104208417 1.0 \\ + 0.3046092184368738 1.0 \\ + 0.3066132264529058 1.0 \\ + 0.30861723446893785 1.0 \\ + 0.3106212424849699 1.0 \\ + 0.312625250501002 1.0 \\ + 0.31462925851703405 1.0 \\ + 0.3166332665330661 1.0 \\ + 0.3186372745490982 1.0 \\ + 0.32064128256513025 1.0 \\ + 0.3226452905811623 1.0 \\ + 0.3246492985971944 1.0 \\ + 0.32665330661322645 1.0 \\ + 0.3286573146292585 1.0 \\ + 0.3306613226452906 1.0 \\ + 0.33266533066132264 1.0 \\ + 0.3346693386773547 1.0 \\ + 0.3366733466933868 1.0 \\ + 0.33867735470941884 1.0 \\ + 0.3406813627254509 1.0 \\ + 0.342685370741483 1.0 \\ + 0.34468937875751504 1.0 \\ + 0.3466933867735471 1.0 \\ + 0.3486973947895792 1.0 \\ + 0.35070140280561124 1.0 \\ + 0.3527054108216433 1.0 \\ + 0.35470941883767537 1.0 \\ + 0.35671342685370744 1.0 \\ + 0.3587174348697395 1.0 \\ + 0.36072144288577157 1.0 \\ + 0.3627254509018036 1.0 \\ + 0.36472945891783565 1.0 \\ + 0.3667334669338677 1.0 \\ + 0.3687374749498998 1.0 \\ + 0.37074148296593185 1.0 \\ + 0.3727454909819639 1.0 \\ + 0.374749498997996 1.0 \\ + 0.37675350701402804 1.0 \\ + 0.3787575150300601 1.0 \\ + 0.3807615230460922 1.0 \\ + 0.38276553106212424 1.0 \\ + 0.3847695390781563 1.0 \\ + 0.3867735470941884 1.0 \\ + 0.38877755511022044 1.0 \\ + 0.3907815631262525 1.0 \\ + 0.3927855711422846 1.0 \\ + 0.39478957915831664 1.0 \\ + 0.3967935871743487 1.0 \\ + 0.39879759519038077 1.0 \\ + 0.40080160320641284 1.0 \\ + 0.4028056112224449 1.0 \\ + 0.40480961923847697 1.0 \\ + 0.40681362725450904 1.0 \\ + 0.4088176352705411 1.0 \\ + 0.41082164328657317 1.0 \\ + 0.41282565130260523 1.0 \\ + 0.4148296593186373 1.0 \\ + 0.4168336673346693 1.0 \\ + 0.4188376753507014 1.0 \\ + 0.42084168336673344 1.0 \\ + 0.4228456913827655 1.0 \\ + 0.4248496993987976 1.0 \\ + 0.42685370741482964 1.0 \\ + 0.4288577154308617 1.0 \\ + 0.4308617234468938 1.0 \\ + 0.43286573146292584 1.0 \\ + 0.4348697394789579 1.0 \\ + 0.43687374749499 1.0 \\ + 0.43887775551102204 1.0 \\ + 0.4408817635270541 1.0 \\ + 0.44288577154308617 1.0 \\ + 0.44488977955911824 1.0 \\ + 0.4468937875751503 1.0 \\ + 0.44889779559118237 1.0 \\ + 0.45090180360721444 1.0 \\ + 0.4529058116232465 1.0 \\ + 0.45490981963927857 1.0 \\ + 0.45691382765531063 1.0 \\ + 0.4589178356713427 1.0 \\ + 0.46092184368737477 1.0 \\ + 0.46292585170340683 1.0 \\ + 0.4649298597194389 1.0 \\ + 0.46693386773547096 1.0 \\ + 0.46893787575150303 1.0 \\ + 0.4709418837675351 1.0 \\ + 0.4729458917835671 1.0 \\ + 0.4749498997995992 1.0 \\ + 0.47695390781563124 1.0 \\ + 0.4789579158316633 1.0 \\ + 0.48096192384769537 1.0 \\ + 0.48296593186372744 1.0 \\ + 0.4849699398797595 1.0 \\ + 0.48697394789579157 1.0 \\ + 0.48897795591182364 1.0 \\ + 0.4909819639278557 1.0 \\ + 0.49298597194388777 1.0 \\ + 0.49498997995991983 1.0 \\ + 0.4969939879759519 1.0 \\ + 0.49899799599198397 1.0 \\ + 0.501002004008016 1.0329105552947742 \\ + 0.503006012024048 1.0342492636763854 \\ + 0.5050100200400801 1.0356229862288189 \\ + 0.5070140280561122 1.0370320646016882 \\ + 0.5090180360721442 1.0384768261988626 \\ + 0.5110220440881763 1.0399575828038528 \\ + 0.5130260521042084 1.0414746290814172 \\ + 0.5150300601202404 1.0430282409457057 \\ + 0.5170340681362725 1.0446186737847556 \\ + 0.5190380761523046 1.0462461605306992 \\ + 0.5210420841683366 1.0479109095646235 \\ + 0.5230460921843687 1.0496131024446682 \\ + 0.5250501002004008 1.0513528914456844 \\ + 0.5270541082164328 1.0531303968986234 \\ + 0.5290581162324649 1.0549457043178079 \\ + 0.531062124248497 1.0567988613044108 \\ + 0.533066132264529 1.0586898742148567 \\ + 0.5350701402805611 1.0606187045835078 \\ + 0.5370741482965932 1.0625852652899852 \\ + 0.5390781563126252 1.0645894164628333 \\ + 0.5410821643286573 1.0666309611130438 \\ + 0.5430861723446894 1.0687096404933043 \\ + 0.5450901803607214 1.0708251291817736 \\ + 0.5470941883767535 1.0729770298928272 \\ + 0.5490981963927856 1.0751648680216488 \\ + 0.5511022044088176 1.0773880859348341 \\ + 0.5531062124248497 1.0796460370254581 \\ + 0.5551102204408818 1.081937979558376 \\ + 0.5571142284569138 1.0842630703400018 \\ + 0.5591182364729459 1.0866203582564595 \\ + 0.561122244488978 1.089008777734894 \\ + 0.56312625250501 1.0914271421948527 \\ + 0.5651302605210421 1.0938741375699537 \\ + 0.5671342685370742 1.0963483159944614 \\ + 0.5691382765531062 1.0988480897646993 \\ + 0.5711422845691383 1.1013717257011977 \\ + 0.5731462925851704 1.1039173400537434 \\ + 0.5751503006012024 1.10648289410758 \\ + 0.5771543086172345 1.1090661906643278 \\ + 0.5791583166332666 1.111664871584994 \\ + 0.5811623246492986 1.1142764165938972 \\ + 0.5831663326653307 1.1168981435504268 \\ + 0.5851703406813628 1.1195272103992342 \\ + 0.5871743486973948 1.1221606190075462 \\ + 0.5891783567134269 1.1247952210896275 \\ + 0.591182364729459 1.12742772640189 \\ + 0.593186372745491 1.1300547133667296 \\ + 0.5951903807615231 1.1326726422481288 \\ + 0.5971943887775552 1.1352778709569242 \\ + 0.5991983967935872 1.137866673508441 \\ + 0.6012024048096193 1.140435261090471 \\ + 0.6032064128256514 1.14297980562653 \\ + 0.6052104208416834 1.1454964656398485 \\ + 0.6072144288577155 1.147981414140234 \\ + 0.6092184368737475 1.150430868172037 \\ + 0.6112224448897795 1.1528411195808017 \\ + 0.6132264529058116 1.1552085664829623 \\ + 0.6152304609218436 1.1575297448614983 \\ + 0.6172344689378757 1.159801359664997 \\ + 0.6192384769539078 1.1620203147617583 \\ + 0.6212424849699398 1.16418374109735 \\ + 0.6232464929859719 1.1662890224251605 \\ + 0.625250501002004 1.1683338180254688 \\ + 0.627254509018036 1.1703160818983482 \\ + 0.6292585170340681 1.1722340780068645 \\ + 0.6312625250501002 1.1740863912556068 \\ + 0.6332665330661322 1.1758719340106372 \\ + 0.6352705410821643 1.1775899480945762 \\ + 0.6372745490981964 1.1792400023185519 \\ + 0.6392785571142284 1.180821985734846 \\ + 0.6412825651302605 1.1823360969044059 \\ + 0.6432865731462926 1.1837828295667032 \\ + 0.6452905811623246 1.185162955171211 \\ + 0.6472945891783567 1.1864775027761243 \\ + 0.6492985971943888 1.187727736837044 \\ + 0.6513026052104208 1.1889151333914278 \\ + 0.6533066132264529 1.1900413550860836 \\ + 0.655310621242485 1.191108225381442 \\ + 0.657314629258517 1.1921177020731113 \\ + 0.6593186372745491 1.193071849953736 \\ + 0.6613226452905812 1.193972811917236 \\ + 0.6633266533066132 1.1948227769445532 \\ + 0.6653306613226453 1.1956239419664372 \\ + 0.6673346693386774 1.1963784621682283 \\ + 0.6693386773547094 1.1970883802004733 \\ + 0.6713426853707415 1.19775551785219 \\ + 0.6733466933867736 1.198381302175425 \\ + 0.6753507014028056 1.1989664788579368 \\ + 0.6773547094188377 1.199510634266273 \\ + 0.6793587174348698 1.2000113974645166 \\ + 0.6813627254509018 1.2004631165193034 \\ + 0.6833667334669339 1.2008546934812891 \\ + 0.685370741482966 1.2011661296295297 \\ + 0.687374749498998 1.2013632467781064 \\ + 0.6893787575150301 1.2013902626452824 \\ + 0.6913827655310621 1.2011611314457702 \\ + 0.6933867735470942 1.200554527150885 \\ + 0.6953907815631263 1.1994268591244996 \\ + 0.6973947895791583 1.19775998262362 \\ + 0.6993987975951904 1.1965793655834611 \\ + 0.7014028056112225 1.196625129633777 \\ + 0.7034068136272545 1.1982553865262364 \\ + 0.7054108216432866 1.2013114715530597 \\ + 0.7074148296593187 1.2052660761241556 \\ + 0.7094188376753507 1.2096463252190033 \\ + 0.7114228456913828 1.214209334582183 \\ + 0.7134268537074149 1.218870016387981 \\ + 0.7154308617234469 1.2236056988537793 \\ + 0.717434869739479 1.2284112134760405 \\ + 0.7194388777555111 1.2332854916602924 \\ + 0.7214428857715431 1.2382285880832635 \\ + 0.7234468937875751 1.2432409364321662 \\ + 0.7254509018036072 1.2483230572778725 \\ + 0.7274549098196392 1.2534754644841741 \\ + 0.7294589178356713 1.2586986547859793 \\ + 0.7314629258517034 1.2639931151172148 \\ + 0.7334669338677354 1.2693593285214892 \\ + 0.7354709418837675 1.274797776943568 \\ + 0.7374749498997996 1.2803089422584044 \\ + 0.7394789579158316 1.2858933065563836 \\ + 0.7414829659318637 1.2915513521665405 \\ + 0.7434869739478958 1.297283561607668 \\ + 0.7454909819639278 1.3030904175324758 \\ + 0.7474949899799599 1.3089724026827643 \\ + 0.749498997995992 1.3149299998576052 \\ + 0.751503006012024 1.3209636918920804 \\ + 0.7535070140280561 1.3270739616435638 \\ + 0.7555110220440882 1.3332612919830718 \\ + 0.7575150300601202 1.3395261657898914 \\ + 0.7595190380761523 1.3458690659482877 \\ + 0.7615230460921844 1.3522904753455052 \\ + 0.7635270541082164 1.3587908768705588 \\ + 0.7655310621242485 1.3653707534135133 \\ + 0.7675350701402806 1.3720305878650534 \\ + 0.7695390781563126 1.378770863116226 \\ + 0.7715430861723447 1.3855920620582933 \\ + 0.7735470941883767 1.3924946675826404 \\ + 0.7755511022044088 1.3994791625807257 \\ + 0.7775551102204409 1.4065460299440498 \\ + 0.779559118236473 1.4136957525641376 \\ + 0.781563126252505 1.4209288133325284 \\ + 0.7835671342685371 1.4282456951407696 \\ + 0.7855711422845691 1.4356468808804133 \\ + 0.7875751503006012 1.4431328534430141 \\ + 0.7895791583166333 1.4507040957201291 \\ + 0.7915831663326653 1.4583610906033149 \\ + 0.7935871743486974 1.4661043209841293 \\ + 0.7955911823647295 1.4739342697541309 \\ + 0.7975951903807615 1.481851419804878 \\ + 0.7995991983967936 1.4898562540279285 \\ + 0.8016032064128257 1.497949255314841 \\ + 0.8036072144288577 1.5061309065571744 \\ + 0.8056112224448898 1.5144016906464866 \\ + 0.8076152304609219 1.5227620904743366 \\ + 0.8096192384769539 1.5312125889322825 \\ + 0.811623246492986 1.539753668911883 \\ + 0.8136272545090181 1.5483858133046968 \\ + 0.8156312625250501 1.557109505002282 \\ + 0.8176352705410822 1.5659252268961974 \\ + 0.8196392785571143 1.5748334618780016 \\ + 0.8216432865731463 1.5838346928392526 \\ + 0.8236472945891784 1.5929294026715095 \\ + 0.8256513026052105 1.6021180742663308 \\ + 0.8276553106212425 1.6114011905152745 \\ + 0.8296593186372746 1.6207792343098995 \\ + 0.8316633266533067 1.630252688541764 \\ + 0.8336673346693386 1.6398220361024265 \\ + 0.8356713426853707 1.6494877598834465 \\ + 0.8376753507014028 1.6592503427763814 \\ + 0.8396793587174348 1.6691102676727902 \\ + 0.8416833667334669 1.6790680174642314 \\ + 0.843687374749499 1.6891240750422636 \\ + 0.845691382765531 1.6992789232984449 \\ + 0.8476953907815631 1.709533045124334 \\ + 0.8496993987975952 1.7198869234114897 \\ + 0.8517034068136272 1.73034104105147 \\ + 0.8537074148296593 1.7408958809358341 \\ + 0.8557114228456913 1.7515519259561398 \\ + 0.8577154308617234 1.7623096590039462 \\ + 0.8597194388777555 1.7731695629708115 \\ + 0.8617234468937875 1.784132120748294 \\ + 0.8637274549098196 1.7951978152279526 \\ + 0.8657314629258517 1.806367129301346 \\ + 0.8677354709418837 1.8176405458600322 \\ + 0.8697394789579158 1.8290185477955698 \\ + 0.8717434869739479 1.8405016179995175 \\ + 0.87374749498998 1.852090239363434 \\ + 0.875751503006012 1.8637848947788775 \\ + 0.8777555110220441 1.8755860671374065 \\ + 0.8797595190380761 1.8874942393305796 \\ + 0.8817635270541082 1.8995098942499553 \\ + 0.8837675350701403 1.9116335147870922 \\ + 0.8857715430861723 1.9238655838335488 \\ + 0.8877755511022044 1.9362065842808835 \\ + 0.8897795591182365 1.9486569990206548 \\ + 0.8917835671342685 1.9612173109444218 \\ + 0.8937875751503006 1.9738880029437418 \\ + 0.8957915831663327 1.9866695579101745 \\ + 0.8977955911823647 1.9995624587352778 \\ + 0.8997995991983968 2.0125671883106104 \\ + 0.9018036072144289 2.025684229527731 \\ + 0.9038076152304609 2.0389140652781976 \\ + 0.905811623246493 2.0522571784535693 \\ + 0.9078156312625251 2.065714051945404 \\ + 0.9098196392785571 2.079285168645261 \\ + 0.9118236472945892 2.0929710114446975 \\ + 0.9138276553106213 2.1067720632352733 \\ + 0.9158316633266533 2.120688806908547 \\ + 0.9178356713426854 2.1347217253560764 \\ + 0.9198396793587175 2.14887130146942 \\ + 0.9218436873747495 2.1631380181401365 \\ + 0.9238476953907816 2.1775223582597842 \\ + 0.9258517034068137 2.1920248047199227 \\ + 0.9278557114228457 2.2066458404121088 \\ + 0.9298597194388778 2.221385948227902 \\ + 0.9318637274549099 2.2362456110588615 \\ + 0.9338677354709419 2.251225311796544 \\ + 0.935871743486974 2.26632553333251 \\ + 0.9378757515030061 2.2815467585583162 \\ + 0.9398797595190381 2.2968894703655227 \\ + 0.9418837675350702 2.312354151645687 \\ + 0.9438877755511023 2.327941285290368 \\ + 0.9458917835671342 2.343651354191123 \\ + 0.9478957915831663 2.359484841239513 \\ + 0.9498997995991983 2.3754422293270947 \\ + 0.9519038076152304 2.3915240013454273 \\ + 0.9539078156312625 2.4077306401860685 \\ + 0.9559118236472945 2.4240626287405784 \\ + 0.9579158316633266 2.4405204499005135 \\ + 0.9599198396793587 2.457104586557434 \\ + 0.9619238476953907 2.473815521602898 \\ + 0.9639278557114228 2.490653737928463 \\ + 0.9659318637274549 2.5076197184256888 \\ + 0.9679358717434869 2.524713945986133 \\ + 0.969939879759519 2.541936903501355 \\ + 0.9719438877755511 2.5592890738629124 \\ + 0.9739478957915831 2.5767709399623646 \\ + 0.9759519038076152 2.5943829846912694 \\ + 0.9779559118236473 2.612125690941185 \\ + 0.9799599198396793 2.629999541603671 \\ + 0.9819639278557114 2.6480050195702853 \\ + 0.9839679358717435 2.6661426077325867 \\ + 0.9859719438877755 2.684412788982134 \\ + 0.9879759519038076 2.7028160462104847 \\ + 0.9899799599198397 2.721352862309198 \\ + 0.9919839679358717 2.740023720169832 \\ + 0.9939879759519038 2.7588291026839453 \\ + 0.9959919839679359 2.777769492743097 \\ + 0.9979959919839679 2.7968453732388454 \\ + 1.0 2.816057227062749 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={1f786efc-24b2-4cfb-9204-fa6aa7a5ca8d}, draw opacity={1.0}, line width={2}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.0 0.9999999999939382 \\ + 0.002004008016032064 0.999999999993413 \\ + 0.004008016032064128 0.9999999999928432 \\ + 0.006012024048096192 0.9999999999922248 \\ + 0.008016032064128256 0.9999999999915538 \\ + 0.01002004008016032 0.9999999999908258 \\ + 0.012024048096192385 0.9999999999900361 \\ + 0.014028056112224449 0.9999999999891795 \\ + 0.01603206412825651 0.9999999999882506 \\ + 0.018036072144288578 0.9999999999872432 \\ + 0.02004008016032064 0.9999999999861511 \\ + 0.022044088176352707 0.999999999984967 \\ + 0.02404809619238477 0.9999999999836835 \\ + 0.026052104208416832 0.9999999999822924 \\ + 0.028056112224448898 0.9999999999807848 \\ + 0.03006012024048096 0.9999999999791513 \\ + 0.03206412825651302 0.9999999999773816 \\ + 0.03406813627254509 0.9999999999754646 \\ + 0.036072144288577156 0.9999999999733883 \\ + 0.03807615230460922 0.9999999999711396 \\ + 0.04008016032064128 0.9999999999687049 \\ + 0.04208416833667335 0.9999999999660689 \\ + 0.04408817635270541 0.9999999999632155 \\ + 0.04609218436873747 0.9999999999601272 \\ + 0.04809619238476954 0.9999999999567852 \\ + 0.050100200400801605 0.9999999999531692 \\ + 0.052104208416833664 0.9999999999492574 \\ + 0.05410821643286573 0.9999999999450261 \\ + 0.056112224448897796 0.9999999999404501 \\ + 0.05811623246492986 0.999999999935502 \\ + 0.06012024048096192 0.9999999999301525 \\ + 0.06212424849699399 0.99999999992437 \\ + 0.06412825651302605 0.9999999999181206 \\ + 0.06613226452905811 0.9999999999113677 \\ + 0.06813627254509018 0.999999999904072 \\ + 0.07014028056112225 0.9999999998961911 \\ + 0.07214428857715431 0.99999999988768 \\ + 0.07414829659318638 0.9999999998784895 \\ + 0.07615230460921844 0.9999999998685677 \\ + 0.0781563126252505 0.9999999998578581 \\ + 0.08016032064128256 0.9999999998463007 \\ + 0.08216432865731463 0.9999999998338306 \\ + 0.0841683366733467 0.9999999998203783 \\ + 0.08617234468937876 0.9999999998058698 \\ + 0.08817635270541083 0.999999999790225 \\ + 0.09018036072144289 0.9999999997733586 \\ + 0.09218436873747494 0.9999999997551793 \\ + 0.09418837675350701 0.9999999997355887 \\ + 0.09619238476953908 0.9999999997144824 \\ + 0.09819639278557114 0.9999999996917479 \\ + 0.10020040080160321 0.9999999996672654 \\ + 0.10220440881763528 0.9999999996409066 \\ + 0.10420841683366733 0.9999999996125345 \\ + 0.1062124248496994 0.9999999995820026 \\ + 0.10821643286573146 0.9999999995491547 \\ + 0.11022044088176353 0.999999999513824 \\ + 0.11222444889779559 0.9999999994758325 \\ + 0.11422845691382766 0.9999999994349906 \\ + 0.11623246492985972 0.9999999993910962 \\ + 0.11823647294589178 0.9999999993439337 \\ + 0.12024048096192384 0.999999999293274 \\ + 0.12224448897795591 0.9999999992388731 \\ + 0.12424849699398798 0.9999999991804714 \\ + 0.12625250501002003 0.9999999991177935 \\ + 0.1282565130260521 0.9999999990505463 \\ + 0.13026052104208416 0.9999999989784186 \\ + 0.13226452905811623 0.9999999989010808 \\ + 0.1342685370741483 0.9999999988181829 \\ + 0.13627254509018036 0.9999999987293543 \\ + 0.13827655310621242 0.9999999986342023 \\ + 0.1402805611222445 0.9999999985323118 \\ + 0.14228456913827656 0.9999999984232437 \\ + 0.14428857715430862 0.999999998306534 \\ + 0.1462925851703407 0.9999999981816929 \\ + 0.14829659318637275 0.999999998048204 \\ + 0.15030060120240482 0.999999997905523 \\ + 0.1523046092184369 0.9999999977530765 \\ + 0.15430861723446893 0.9999999975902617 \\ + 0.156312625250501 0.999999997416445 \\ + 0.15831663326653306 0.9999999972309613 \\ + 0.16032064128256512 0.9999999970331134 \\ + 0.1623246492985972 0.9999999968221703 \\ + 0.16432865731462926 0.9999999965973682 \\ + 0.16633266533066132 0.9999999963579083 \\ + 0.1683366733466934 0.9999999961029574 \\ + 0.17034068136272545 0.9999999958316473 \\ + 0.17234468937875752 0.9999999955430747 \\ + 0.1743486973947896 0.9999999952363013 \\ + 0.17635270541082165 0.9999999949103541 \\ + 0.17835671342685372 0.9999999945642255 \\ + 0.18036072144288579 0.9999999941968749 \\ + 0.18236472945891782 0.9999999938072295 \\ + 0.1843687374749499 0.9999999933941852 \\ + 0.18637274549098196 0.9999999929566092 \\ + 0.18837675350701402 0.999999992493342 \\ + 0.1903807615230461 0.9999999920031999 \\ + 0.19238476953907815 0.9999999914849788 \\ + 0.19438877755511022 0.9999999909374572 \\ + 0.1963927855711423 0.9999999903594015 \\ + 0.19839679358717435 0.9999999897495705 \\ + 0.20040080160320642 0.9999999891067216 \\ + 0.20240480961923848 0.9999999884296175 \\ + 0.20440881763527055 0.999999987717033 \\ + 0.20641282565130262 0.9999999869677646 \\ + 0.20841683366733466 0.9999999861806389 \\ + 0.21042084168336672 0.9999999853545235 \\ + 0.2124248496993988 0.9999999844883386 \\ + 0.21442885771543085 0.9999999835810698 \\ + 0.21643286573146292 0.9999999826317821 \\ + 0.218436873747495 0.9999999816396352 \\ + 0.22044088176352705 0.9999999806039007 \\ + 0.22244488977955912 0.9999999795239795 \\ + 0.22444889779559118 0.9999999783994222 \\ + 0.22645290581162325 0.9999999772299503 \\ + 0.22845691382765532 0.9999999760154784 \\ + 0.23046092184368738 0.9999999747561394 \\ + 0.23246492985971945 0.9999999734523097 \\ + 0.23446893787575152 0.9999999721046372 \\ + 0.23647294589178355 0.99999997071407 \\ + 0.23847695390781562 0.9999999692818874 \\ + 0.24048096192384769 0.999999967809731 \\ + 0.24248496993987975 0.9999999662996386 \\ + 0.24448897795591182 0.9999999647540777 \\ + 0.24649298597194388 0.9999999631759808 \\ + 0.24849699398797595 0.9999999615687809 \\ + 0.250501002004008 0.9999999599364472 \\ + 0.25250501002004005 0.9999999582835207 \\ + 0.2545090180360721 0.9999999566151491 \\ + 0.2565130260521042 0.9999999549371208 \\ + 0.25851703406813625 0.9999999532558965 \\ + 0.2605210420841683 0.999999951578639 \\ + 0.2625250501002004 0.9999999499132383 \\ + 0.26452905811623245 0.9999999482683339 \\ + 0.2665330661322645 0.9999999466533307 \\ + 0.2685370741482966 0.9999999450784074 \\ + 0.27054108216432865 0.9999999435545188 \\ + 0.2725450901803607 0.9999999420933866 \\ + 0.2745490981963928 0.9999999407074797 \\ + 0.27655310621242485 0.9999999394099816 \\ + 0.2785571142284569 0.9999999382147422 \\ + 0.280561122244489 0.999999937136213 \\ + 0.28256513026052105 0.9999999361893624 \\ + 0.2845691382765531 0.9999999353895692 \\ + 0.2865731462925852 0.9999999347524925 \\ + 0.28857715430861725 0.9999999342939142 \\ + 0.2905811623246493 0.999999934029553 \\ + 0.2925851703406814 0.9999999339748463 \\ + 0.29458917835671344 0.9999999341446983 \\ + 0.2965931863727455 0.9999999345531931 \\ + 0.2985971943887776 0.9999999352132692 \\ + 0.30060120240480964 0.9999999361363568 \\ + 0.3026052104208417 0.999999937331976 \\ + 0.3046092184368738 0.9999999388072973 \\ + 0.3066132264529058 0.9999999405666675 \\ + 0.30861723446893785 0.9999999426111027 \\ + 0.3106212424849699 0.9999999449377576 \\ + 0.312625250501002 0.9999999475393776 \\ + 0.31462925851703405 0.9999999504037478 \\ + 0.3166332665330661 0.9999999535131548 \\ + 0.3186372745490982 0.999999956843883 \\ + 0.32064128256513025 0.9999999603657744 \\ + 0.3226452905811623 0.9999999640418876 \\ + 0.3246492985971944 0.9999999678283009 \\ + 0.32665330661322645 0.9999999716741153 \\ + 0.3286573146292585 0.9999999755217287 \\ + 0.3306613226452906 0.9999999793074651 \\ + 0.33266533066132264 0.999999982962663 \\ + 0.3346693386773547 0.9999999864153524 \\ + 0.3366733466933868 0.9999999895926693 \\ + 0.33867735470941884 0.9999999924241979 \\ + 0.3406813627254509 0.9999999948464557 \\ + 0.342685370741483 0.999999996808793 \\ + 0.34468937875751504 0.9999999982810178 \\ + 0.3466933867735471 0.9999999992631247 \\ + 0.3486973947895792 0.9999999997975725 \\ + 0.35070140280561124 0.9999999999846378 \\ + 0.3527054108216433 1.0000000000014677 \\ + 0.35470941883767537 1.0000000001255631 \\ + 0.35671342685370744 1.0000000007635585 \\ + 0.3587174348697395 1.0000000024863036 \\ + 0.36072144288577157 1.0000000060714382 \\ + 0.3627254509018036 1.0000000125548396 \\ + 0.36472945891783565 1.000000023292564 \\ + 0.3667334669338677 1.0000000400351612 \\ + 0.3687374749498998 1.0000000650165588 \\ + 0.37074148296593185 1.0000001010600592 \\ + 0.3727454909819639 1.0000001517044041 \\ + 0.374749498997996 1.000000221353326 \\ + 0.37675350701402804 1.0000003154525396 \\ + 0.3787575150300601 1.0000004406987355 \\ + 0.3807615230460922 1.0000006052858152 \\ + 0.38276553106212424 1.0000008191943721 \\ + 0.3847695390781563 1.0000010945312436 \\ + 0.3867735470941884 1.0000014459269018 \\ + 0.38877755511022044 1.000001890999703 \\ + 0.3907815631262525 1.0000024508978662 \\ + 0.3927855711422846 1.00000315093212 \\ + 0.39478957915831664 1.0000040213127925 \\ + 0.3967935871743487 1.0000050980049757 \\ + 0.39879759519038077 1.0000064237174842 \\ + 0.40080160320641284 1.0000080490455767 \\ + 0.4028056112224449 1.0000100337905506 \\ + 0.40480961923847697 1.0000124484810895 \\ + 0.40681362725450904 1.0000153761234176 \\ + 0.4088176352705411 1.0000189142102285 \\ + 0.41082164328657317 1.0000231770216106 \\ + 0.41282565130260523 1.0000282982544948 \\ + 0.4148296593186373 1.0000344340204224 \\ + 0.4168336673346693 1.000041766254594 \\ + 0.4188376753507014 1.000050506582091 \\ + 0.42084168336673344 1.0000609006896908 \\ + 0.4228456913827655 1.0000732332535773 \\ + 0.4248496993987976 1.0000878334742025 \\ + 0.42685370741482964 1.000105081269166 \\ + 0.4288577154308617 1.0001254141728342 \\ + 0.4308617234468938 1.000149334986908 \\ + 0.43286573146292584 1.0001774202186369 \\ + 0.4348697394789579 1.0002103293320694 \\ + 0.43687374749499 1.0002488148217439 \\ + 0.43887775551102204 1.0002937330965689 \\ + 0.4408817635270541 1.000346056133268 \\ + 0.44288577154308617 1.0004068838225681 \\ + 0.44488977955911824 1.0004774568862485 \\ + 0.4468937875751503 1.000559170188344 \\ + 0.44889779559118237 1.0006535861985508 \\ + 0.45090180360721444 1.000762448290086 \\ + 0.4529058116232465 1.0008876934683868 \\ + 0.45490981963927857 1.0010314640326046 \\ + 0.45691382765531063 1.0011961175715727 \\ + 0.4589178356713427 1.001384234594126 \\ + 0.46092184368737477 1.0015986229964933 \\ + 0.46292585170340683 1.0018423184852188 \\ + 0.4649298597194389 1.0021185800130767 \\ + 0.46693386773547096 1.0024308792600918 \\ + 0.46893787575150303 1.0027828832158359 \\ + 0.4709418837675351 1.0031784290070427 \\ + 0.4729458917835671 1.0036214902796672 \\ + 0.4749498997995992 1.0041161346975669 \\ + 0.47695390781563124 1.0046664724665535 \\ + 0.4789579158316633 1.005276596230681 \\ + 0.48096192384769537 1.0059505132052626 \\ + 0.48296593186372744 1.0066920709844687 \\ + 0.4849699398797595 1.0075048790541672 \\ + 0.48697394789579157 1.008392228605279 \\ + 0.48897795591182364 1.0093570137232801 \\ + 0.4909819639278557 1.0104016573665917 \\ + 0.49298597194388777 1.0115280456854163 \\ + 0.49498997995991983 1.0127374741304493 \\ + 0.4969939879759519 1.0140306084352846 \\ + 0.49899799599198397 1.0154074629312275 \\ + 0.501002004008016 1.0168673978020535 \\ + 0.503006012024048 1.018409135870637 \\ + 0.5050100200400801 1.0200307984134167 \\ + 0.5070140280561122 1.0217299584189306 \\ + 0.5090180360721442 1.0235037087402001 \\ + 0.5110220440881763 1.0253487418221734 \\ + 0.5130260521042084 1.0272614371764286 \\ + 0.5150300601202404 1.0292379525574276 \\ + 0.5170340681362725 1.0312743148669972 \\ + 0.5190380761523046 1.0333665071460094 \\ + 0.5210420841683366 1.0355105485508243 \\ + 0.5230460921843687 1.0377025648894813 \\ + 0.5250501002004008 1.0399388480370262 \\ + 0.5270541082164328 1.0422159032935103 \\ + 0.5290581162324649 1.0445304844360184 \\ + 0.531062124248497 1.0468796168066963 \\ + 0.533066132264529 1.0492606092476902 \\ + 0.5350701402805611 1.051671056032145 \\ + 0.5370741482965932 1.0541088301517514 \\ + 0.5390781563126252 1.0565720694189833 \\ + 0.5410821643286573 1.0590591568452479 \\ + 0.5430861723446894 1.0615686966863325 \\ + 0.5450901803607214 1.0640994874255032 \\ + 0.5470941883767535 1.0666504928121916 \\ + 0.5490981963927856 1.0692208119073008 \\ + 0.5511022044088176 1.071809648918092 \\ + 0.5531062124248497 1.0744162834462807 \\ + 0.5551102204408818 1.0770400416290071 \\ + 0.5571142284569138 1.0796802685276699 \\ + 0.5591182364729459 1.0823363020159487 \\ + 0.561122244488978 1.0850074483357812 \\ + 0.56312625250501 1.0876929594275189 \\ + 0.5651302605210421 1.0903920120961637 \\ + 0.5671342685370742 1.09310368904724 \\ + 0.5691382765531062 1.0958269618110121 \\ + 0.5711422845691383 1.0985606755699848 \\ + 0.5731462925851704 1.1013035359094774 \\ + 0.5751503006012024 1.1040540975222173 \\ + 0.5771543086172345 1.106810754913219 \\ + 0.5791583166332666 1.1095717351685837 \\ + 0.5811623246492986 1.1123350928693716 \\ + 0.5831663326653307 1.115098707247458 \\ + 0.5851703406813628 1.1178602816925807 \\ + 0.5871743486973948 1.1206173457268729 \\ + 0.5891783567134269 1.1233672595635746 \\ + 0.591182364729459 1.1261072213588577 \\ + 0.593186372745491 1.1288342772486566 \\ + 0.5951903807615231 1.1315453342351425 \\ + 0.5971943887775552 1.1342371759495318 \\ + 0.5991983967935872 1.1369064812692535 \\ + 0.6012024048096193 1.1395498457086815 \\ + 0.6032064128256514 1.1421638054348526 \\ + 0.6052104208416834 1.1447448636848296 \\ + 0.6072144288577155 1.1472895192821824 \\ + 0.6092184368737475 1.1497942968698431 \\ + 0.6112224448897795 1.1522557783991514 \\ + 0.6132264529058116 1.154670635344538 \\ + 0.6152304609218436 1.1570356610543389 \\ + 0.6172344689378757 1.1593478026049575 \\ + 0.6192384769539078 1.1616041915017177 \\ + 0.6212424849699398 1.1638021725682128 \\ + 0.6232464929859719 1.1659393303885852 \\ + 0.625250501002004 1.168013512714447 \\ + 0.627254509018036 1.1700228503190877 \\ + 0.6292585170340681 1.1719657728737163 \\ + 0.6312625250501002 1.1738410205299226 \\ + 0.6332665330661322 1.1756476510142502 \\ + 0.6352705410821643 1.1773850421689922 \\ + 0.6372745490981964 1.179052890001754 \\ + 0.6392785571142284 1.1806512024287719 \\ + 0.6412825651302605 1.1821802890075244 \\ + 0.6432865731462926 1.1836407470476313 \\ + 0.6452905811623246 1.1850334445608575 \\ + 0.6472945891783567 1.1863595005574017 \\ + 0.6492985971943888 1.1876202632126636 \\ + 0.6513026052104208 1.1888172864116662 \\ + 0.6533066132264529 1.1899523051196654 \\ + 0.655310621242485 1.1910272099137957 \\ + 0.657314629258517 1.192044020817229 \\ + 0.6593186372745491 1.1930048602597447 \\ + 0.6613226452905812 1.193911924467547 \\ + 0.6633266533066132 1.1947674517221825 \\ + 0.6653306613226453 1.195573684484808 \\ + 0.6673346693386774 1.196332819951568 \\ + 0.6693386773547094 1.1970469395048866 \\ + 0.6713426853707415 1.1977179006187757 \\ + 0.6733466933867736 1.198347163208582 \\ + 0.6753507014028056 1.198935503224519 \\ + 0.6773547094188377 1.1994825349148157 \\ + 0.6793587174348698 1.1999859130686858 \\ + 0.6813627254509018 1.200440009556222 \\ + 0.6833667334669339 1.2008337485630693 \\ + 0.685370741482966 1.2011471521128638 \\ + 0.687374749498998 1.2013460616746312 \\ + 0.6893787575150301 1.201374713824161 \\ + 0.6913827655310621 1.2011470810103058 \\ + 0.6933867735470942 1.2005418545838946 \\ + 0.6953907815631263 1.199415459201694 \\ + 0.6973947895791583 1.197749755757698 \\ + 0.6993987975951904 1.1965701689741701 \\ + 0.7014028056112225 1.19661680789105 \\ + 0.7034068136272545 1.1982477957615192 \\ + 0.7054108216432866 1.2013044986414145 \\ + 0.7074148296593187 1.2052596440984376 \\ + 0.7094188376753507 1.2096403822609834 \\ + 0.7114228456913828 1.2142038412167173 \\ + 0.7134268537074149 1.2188649386422232 \\ + 0.7154308617234469 1.2236010058378435 \\ + 0.717434869739479 1.2284068766603051 \\ + 0.7194388777555111 1.2332814846027018 \\ + 0.7214428857715431 1.2382248862576088 \\ + 0.7234468937875751 1.243237517087235 \\ + 0.7254509018036072 1.2483198993122804 \\ + 0.7274549098196392 1.253472548331079 \\ + 0.7294589178356713 1.2586959623055305 \\ + 0.7314629258517034 1.2639906294960486 \\ + 0.7334669338677354 1.2693570341788982 \\ + 0.7354709418837675 1.274795659443987 \\ + 0.7374749498997996 1.2803069882298377 \\ + 0.7394789579158316 1.2858915036144034 \\ + 0.7414829659318637 1.2915496888435003 \\ + 0.7434869739478958 1.2972820272867924 \\ + 0.7454909819639278 1.303089002386512 \\ + 0.7474949899799599 1.3089710976168907 \\ + 0.749498997995992 1.3149287964563228 \\ + 0.751503006012024 1.3209625823698175 \\ + 0.7535070140280561 1.3270729387987503 \\ + 0.7555110220440882 1.3332603491554487 \\ + 0.7575150300601202 1.3395252968208395 \\ + 0.7595190380761523 1.3458682651439697 \\ + 0.7615230460921844 1.3522897374426317 \\ + 0.7635270541082164 1.358790197004599 \\ + 0.7655310621242485 1.3653701270891818 \\ + 0.7675350701402806 1.372030010928918 \\ + 0.7695390781563126 1.3787703317312894 \\ + 0.7715430861723447 1.3855915726804109 \\ + 0.7735470941883767 1.392494216938649 \\ + 0.7755511022044088 1.3994787476481603 \\ + 0.7775551102204409 1.4065456479323388 \\ + 0.779559118236473 1.4136954008971736 \\ + 0.781563126252505 1.4209284896325136 \\ + 0.7835671342685371 1.42824539721325 \\ + 0.7855711422845691 1.4356466067004137 \\ + 0.7875751503006012 1.4431326011421972 \\ + 0.7895791583166333 1.4507038635749043 \\ + 0.7915831663326653 1.4583608770238303 \\ + 0.7935871743486974 1.4661041245040807 \\ + 0.7955911823647295 1.4739340890213306 \\ + 0.7975951903807615 1.481851253572529 \\ + 0.7995991983967936 1.4898561011465503 \\ + 0.8016032064128257 1.497949114724802 \\ + 0.8036072144288577 1.5061307772817856 \\ + 0.8056112224448898 1.514401571785615 \\ + 0.8076152304609219 1.5227619811985005 \\ + 0.8096192384769539 1.5312124884771947 \\ + 0.811623246492986 1.5397535765734056 \\ + 0.8136272545090181 1.5483857284341807 \\ + 0.8156312625250501 1.5571094270022598 \\ + 0.8176352705410822 1.5659251552164055 \\ + 0.8196392785571143 1.5748333960117047 \\ + 0.8216432865731463 1.5838346323198507 \\ + 0.8236472945891784 1.5929293470694037 \\ + 0.8256513026052105 1.6021180231860306 \\ + 0.8276553106212425 1.6114011435927273 \\ + 0.8296593186372746 1.6207791912100253 \\ + 0.8316633266533067 1.6302526489561808 \\ + 0.8336673346693386 1.6398219997473507 \\ + 0.8356713426853707 1.6494877264977565 \\ + 0.8376753507014028 1.6592503121198319 \\ + 0.8396793587174348 1.6691102395243638 \\ + 0.8416833667334669 1.6790679916206188 \\ + 0.843687374749499 1.6891240513164623 \\ + 0.845691382765531 1.6992789015184675 \\ + 0.8476953907815631 1.7095330251320169 \\ + 0.8496993987975952 1.7198869050613947 \\ + 0.8517034068136272 1.7303410242098738 \\ + 0.8537074148296593 1.7408958654797935 \\ + 0.8557114228456913 1.7515519117726344 \\ + 0.8577154308617234 1.7623096459890855 \\ + 0.8597194388777555 1.7731695510291055 \\ + 0.8617234468937875 1.784132109791982 \\ + 0.8637274549098196 1.7951978051763842 \\ + 0.8657314629258517 1.80636712008041 \\ + 0.8677354709418837 1.8176405374016338 \\ + 0.8697394789579158 1.8290185400371466 \\ + 0.8717434869739479 1.8405016108835937 \\ + 0.87374749498998 1.8520902328372117 \\ + 0.875751503006012 1.8637848887938606 \\ + 0.8777555110220441 1.875586061649052 \\ + 0.8797595190380761 1.8874942342979801 \\ + 0.8817635270541082 1.8995098896355442 \\ + 0.8837675350701403 1.9116335105563738 \\ + 0.8857715430861723 1.9238655799548487 \\ + 0.8877755511022044 1.9362065807251225 \\ + 0.8897795591182365 1.948656995761135 \\ + 0.8917835671342685 1.9612173079566353 \\ + 0.8937875751503006 1.973888000205193 \\ + 0.8957915831663327 1.9866695554002152 \\ + 0.8977955911823647 1.999562456434957 \\ + 0.8997995991983968 2.0125671862025367 \\ + 0.9018036072144289 2.025684227595944 \\ + 0.9038076152304609 2.038914063508053 \\ + 0.905811623246493 2.0522571768316302 \\ + 0.9078156312625251 2.0657140504593423 \\ + 0.9098196392785571 2.0792851672837664 \\ + 0.9118236472945892 2.0929710101973953 \\ + 0.9138276553106213 2.1067720620926456 \\ + 0.9158316633266533 2.120688805861864 \\ + 0.9178356713426854 2.1347217243973313 \\ + 0.9198396793587175 2.1488713005912703 \\ + 0.9218436873747495 2.1631380173358474 \\ + 0.9238476953907816 2.1775223575231815 \\ + 0.9258517034068137 2.192024804045343 \\ + 0.9278557114228457 2.206645839794361 \\ + 0.9298597194388778 2.2213859476622266 \\ + 0.9318637274549099 2.236245610540893 \\ + 0.9338677354709419 2.2512253113222833 \\ + 0.935871743486974 2.2663255328982888 \\ + 0.9378757515030061 2.2815467581607742 \\ + 0.9398797595190381 2.2968894700015783 \\ + 0.9418837675350702 2.3123541513125163 \\ + 0.9438877755511023 2.327941284985383 \\ + 0.9458917835671342 2.3436513539119526 \\ + 0.9478957915831663 2.359484840983983 \\ + 0.9498997995991983 2.375442229093215 \\ + 0.9519038076152304 2.3915240011313728 \\ + 0.9539078156312625 2.4077306399901675 \\ + 0.9559118236472945 2.424062628561299 \\ + 0.9579158316633266 2.440520449736453 \\ + 0.9599198396793587 2.4571045864073073 \\ + 0.9619238476953907 2.4738155214655273 \\ + 0.9639278557114228 2.49065373780277 \\ + 0.9659318637274549 2.5076197183106856 \\ + 0.9679358717434869 2.524713945880915 \\ + 0.969939879759519 2.5419369034050936 \\ + 0.9719438877755511 2.559289073774849 \\ + 0.9739478957915831 2.576770939881804 \\ + 0.9759519038076152 2.594382984617576 \\ + 0.9779559118236473 2.612125690873776 \\ + 0.9799599198396793 2.6299995415420128 \\ + 0.9819639278557114 2.6480050195138904 \\ + 0.9839679358717435 2.666142607681007 \\ + 0.9859719438877755 2.68441278893496 \\ + 0.9879759519038076 2.7028160461673423 \\ + 0.9899799599198397 2.7213528622697436 \\ + 0.9919839679358717 2.7400237201337525 \\ + 0.9939879759519038 2.758829102650953 \\ + 0.9959919839679359 2.7777694927129293 \\ + 0.9979959919839679 2.796845373211261 \\ + 1.0 2.8160572270375273 \\ + } + ; + \node[right, , color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:0.05,2.5) {Nominal}; + \node[right, , color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:0.05,2.3) {Smoothed}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/circulationsum.png b/v0.5.0/DuctAPE/theory_latex/figures/circulationsum.png new file mode 100644 index 00000000..047071c6 Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/circulationsum.png differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/circulationsum_clean.png b/v0.5.0/DuctAPE/theory_latex/figures/circulationsum_clean.png new file mode 100644 index 00000000..4d2c345a Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/circulationsum_clean.png differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/clminmaxlimit-correction-margin.tikz b/v0.5.0/DuctAPE/theory_latex/figures/clminmaxlimit-correction-margin.tikz new file mode 100644 index 00000000..d8f9ada7 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/clminmaxlimit-correction-margin.tikz @@ -0,0 +1,778 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={45.8mm}, height={50.8mm}, scaled x ticks={false}, xlabel={}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorticks={false}, xmajorgrids={false}, xmin={-18.080000000000002}, xmax={20.080000000000002}, axis x line*={left}, separate axis lines, x axis line style={{draw opacity = 0}}, scaled y ticks={false}, ylabel={}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, ymajorticks={false}, ymajorgrids={false}, ymin={-1.4228193239977105}, ymax={1.6767320105016155}, axis y line*={left}, y axis line style={{draw opacity = 0}}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={ba9c24f6-3f79-44a0-8c46-7cab81e48987}, draw opacity={1.0}, line width={0.25}, solid, forget plot] + table[row sep={\\}] + { + \\ + -17.0 0.0 \\ + 19.0 0.0 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={c922f216-1d0f-4909-96fd-ded32bac61fc}, draw opacity={1.0}, line width={0.25}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.0 -1.3350961730213144 \\ + 0.0 1.5890088595252194 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={25786f64-6396-49b7-9a80-c5464f7a7db5}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -17.0 -1.3263761926191644 \\ + -16.9 -1.3284019384451278 \\ + -16.8 -1.3301543349855023 \\ + -16.7 -1.331636378557983 \\ + -16.6 -1.3328510654802654 \\ + -16.5 -1.3338013920700442 \\ + -16.4 -1.3344903546450155 \\ + -16.3 -1.3349209495228738 \\ + -16.2 -1.3350961730213144 \\ + -16.1 -1.335019021458033 \\ + -16.0 -1.334692491150725 \\ + -15.9 -1.3341195784170845 \\ + -15.8 -1.3333032795748079 \\ + -15.7 -1.3322465909415897 \\ + -15.6 -1.3309525088351257 \\ + -15.5 -1.3294240295731108 \\ + -15.4 -1.3276641494732404 \\ + -15.3 -1.3256758648532094 \\ + -15.2 -1.3234621720307134 \\ + -15.1 -1.3210260673234475 \\ + -15.0 -1.3183705470491074 \\ + -14.9 -1.3155885053659153 \\ + -14.8 -1.3127454998545929 \\ + -14.7 -1.3098035219665838 \\ + -14.6 -1.3067245631533313 \\ + -14.5 -1.3034706148662791 \\ + -14.4 -1.3000036685568699 \\ + -14.3 -1.296285715676548 \\ + -14.2 -1.292278747676756 \\ + -14.1 -1.287944756008938 \\ + -14.0 -1.2832457321245372 \\ + -13.9 -1.2781436674749966 \\ + -13.8 -1.2726005535117604 \\ + -13.7 -1.2665783816862708 \\ + -13.6 -1.2600391434499725 \\ + -13.5 -1.252944830254308 \\ + -13.4 -1.2452574335507216 \\ + -13.3 -1.236938944790656 \\ + -13.2 -1.2279513554255543 \\ + -13.1 -1.218256656906861 \\ + -13.0 -1.2078168406860186 \\ + -12.9 -1.1969545268352275 \\ + -12.8 -1.186018188207181 \\ + -12.7 -1.1750085954240634 \\ + -12.6 -1.1639265191080592 \\ + -12.5 -1.1527727298813533 \\ + -12.4 -1.1415479983661292 \\ + -12.3 -1.1302530951845715 \\ + -12.2 -1.1188887909588647 \\ + -12.1 -1.1074558563111927 \\ + -12.0 -1.0959550618637404 \\ + -11.9 -1.0843871782386918 \\ + -11.8 -1.072752976058231 \\ + -11.7 -1.0610532259445424 \\ + -11.6 -1.0492886985198109 \\ + -11.5 -1.0374601644062207 \\ + -11.4 -1.0255683942259552 \\ + -11.3 -1.0136141586011995 \\ + -11.2 -1.001598228154138 \\ + -11.1 -0.9895213735069548 \\ + -11.0 -0.9773843652818341 \\ + -10.9 -0.9652104621446128 \\ + -10.8 -0.9530235929458453 \\ + -10.7 -0.9408255335847938 \\ + -10.6 -0.9286180599607206 \\ + -10.5 -0.9164029479728876 \\ + -10.4 -0.9041819735205565 \\ + -10.3 -0.8919569125029898 \\ + -10.2 -0.8797295408194489 \\ + -10.1 -0.8675016343691964 \\ + -10.0 -0.855274969051494 \\ + -9.9 -0.8430513207656039 \\ + -9.8 -0.8308324654107879 \\ + -9.7 -0.818620178886308 \\ + -9.6 -0.8064162370914264 \\ + -9.5 -0.7942224159254052 \\ + -9.4 -0.7820404912875063 \\ + -9.3 -0.7698722390769915 \\ + -9.2 -0.757719435193123 \\ + -9.1 -0.7455838555351627 \\ + -9.0 -0.7334672760023729 \\ + -8.9 -0.7213476671605121 \\ + -8.8 -0.7092064757887554 \\ + -8.7 -0.6970506921064885 \\ + -8.6 -0.6848873063330984 \\ + -8.5 -0.6727233086879707 \\ + -8.4 -0.660565689390492 \\ + -8.3 -0.6484214386600484 \\ + -8.2 -0.6362975467160258 \\ + -8.1 -0.624201003777811 \\ + -8.0 -0.6121388000647897 \\ + -7.9 -0.6001179257963486 \\ + -7.8 -0.5881453711918734 \\ + -7.7 -0.5762281264707507 \\ + -7.6 -0.5643731818523667 \\ + -7.5 -0.5525875275561075 \\ + -7.4 -0.5408781538013594 \\ + -7.3 -0.5292520508075083 \\ + -7.2 -0.517716208793941 \\ + -7.1 -0.5062776179800431 \\ + -7.0 -0.49494326858520143 \\ + -6.9 -0.48371911033487036 \\ + -6.8 -0.4726022124991179 \\ + -6.7 -0.4615862446142507 \\ + -6.6 -0.45066487621657486 \\ + -6.5 -0.43983177684239705 \\ + -6.4 -0.4290806160280234 \\ + -6.3 -0.41840506330976024 \\ + -6.2 -0.4077987882239142 \\ + -6.1 -0.3972554603067914 \\ + -6.0 -0.3867687490946983 \\ + -5.9 -0.3763323241239414 \\ + -5.8 -0.36593985493082676 \\ + -5.7 -0.355585011051661 \\ + -5.6 -0.3452614620227504 \\ + -5.5 -0.3349628773804013 \\ + -5.4 -0.3246829266609202 \\ + -5.3 -0.31441527940061326 \\ + -5.2 -0.304153605135787 \\ + -5.1 -0.29389157340274763 \\ + -5.0 -0.28362285373780177 \\ + -4.9 -0.27334848544104173 \\ + -4.8 -0.2630738322468798 \\ + -4.7 -0.2527990503431024 \\ + -4.6 -0.2425242959174956 \\ + -4.5 -0.23224972515784578 \\ + -4.4 -0.2219754942519391 \\ + -4.3 -0.2117017593875617 \\ + -4.2 -0.20142867675249995 \\ + -4.1 -0.19115640253453994 \\ + -4.0 -0.1808850929214681 \\ + -3.9 -0.1706149041010705 \\ + -3.8 -0.16034599226113339 \\ + -3.7 -0.15007851358944305 \\ + -3.6 -0.13981262427378563 \\ + -3.5 -0.12954848050194748 \\ + -3.4 -0.11928623846171468 \\ + -3.3 -0.10902605434087356 \\ + -3.2 -0.09876808432721038 \\ + -3.1 -0.08851248460851127 \\ + -3.0 -0.07825941137256248 \\ + -2.9 -0.06800815075249923 \\ + -2.8 -0.05775790171309017 \\ + -2.7 -0.04750868968957163 \\ + -2.6 -0.03726054011717993 \\ + -2.5 -0.02701347843115147 \\ + -2.4 -0.016767530066722613 \\ + -2.3 -0.006522720459129719 \\ + -2.2 0.003720924956390808 \\ + -2.1 0.013963380744602669 \\ + -2.0 0.024204621470269486 \\ + -1.9 0.034444621698154876 \\ + -1.8 0.044683355993022464 \\ + -1.7 0.054920798919635916 \\ + -1.6 0.06515692504275884 \\ + -1.5 0.07539170892715487 \\ + -1.4 0.0856251251375877 \\ + -1.3 0.09585714823882088 \\ + -1.2 0.10608775279561815 \\ + -1.1 0.11631691337274302 \\ + -1.0 0.12654460453495925 \\ + -0.9 0.13675114698078158 \\ + -0.8 0.1469191062590442 \\ + -0.7 0.15705182420998975 \\ + -0.6 0.1671526426738609 \\ + -0.5 0.17722490349090023 \\ + -0.4 0.18727194850135045 \\ + -0.3 0.1972971195454542 \\ + -0.2 0.20730375846345414 \\ + -0.1 0.21729520709559283 \\ + 0.0 0.22727480728211297 \\ + 0.1 0.2372459008632572 \\ + 0.2 0.24721182967926816 \\ + 0.3 0.25717593557038854 \\ + 0.4 0.26714156037686093 \\ + 0.5 0.27711204593892796 \\ + 0.6 0.28709073409683233 \\ + 0.7 0.2970809666908167 \\ + 0.8 0.3070860855611236 \\ + 0.9 0.31710943254799584 \\ + 1.0 0.32715434949167593 \\ + 1.1 0.3372311618514844 \\ + 1.2 0.34734784498727106 \\ + 1.3 0.357504215590073 \\ + 1.4 0.36770009035092716 \\ + 1.5 0.37793528596087045 \\ + 1.6 0.38820961911093976 \\ + 1.7 0.39852290649217215 \\ + 1.8 0.40887496479560453 \\ + 1.9 0.4192656107122737 \\ + 2.0 0.4296946609332169 \\ + 2.1 0.4401619321494708 \\ + 2.2 0.45066724105207245 \\ + 2.3 0.46121040433205873 \\ + 2.4 0.4717912386804668 \\ + 2.5 0.48240956078833336 \\ + 2.6 0.4930651873466955 \\ + 2.7 0.50375793504659 \\ + 2.8 0.5144876205790542 \\ + 2.9 0.5252540606351245 \\ + 3.0 0.5360570719058383 \\ + 3.1 0.5472176917030886 \\ + 3.2 0.5590142298647537 \\ + 3.3 0.5713824118708475 \\ + 3.4 0.5842579632013845 \\ + 3.5 0.5975766093363787 \\ + 3.6 0.6112740757558444 \\ + 3.7 0.6252860879397959 \\ + 3.8 0.6395483713682468 \\ + 3.9 0.653996651521212 \\ + 4.0 0.6685666538787055 \\ + 4.1 0.6831941039207411 \\ + 4.2 0.6978147271273336 \\ + 4.3 0.7123642489784966 \\ + 4.4 0.7267783949542447 \\ + 4.5 0.7409928905345917 \\ + 4.6 0.7549434611995522 \\ + 4.7 0.7685658324291402 \\ + 4.8 0.7817957297033699 \\ + 4.9 0.7945688785022555 \\ + 5.0 0.806821004305811 \\ + 5.1 0.818768964189323 \\ + 5.2 0.8306621191887592 \\ + 5.3 0.8424849507251556 \\ + 5.4 0.8542219402195486 \\ + 5.5 0.8658575690929744 \\ + 5.6 0.8773763187664694 \\ + 5.7 0.8887626706610697 \\ + 5.8 0.9000011061978116 \\ + 5.9 0.9110761067977312 \\ + 6.0 0.9219721538818648 \\ + 6.1 0.9326737288712489 \\ + 6.2 0.9431653131869197 \\ + 6.3 0.9534313882499131 \\ + 6.4 0.9634564354812657 \\ + 6.5 0.9732249363020133 \\ + 6.6 0.9827213721331928 \\ + 6.7 0.9919302243958399 \\ + 6.8 1.0008359745109914 \\ + 6.9 1.0094231038996828 \\ + 7.0 1.017676093982951 \\ + 7.1 1.0257363947197207 \\ + 7.2 1.0337563825947784 \\ + 7.3 1.041736928817951 \\ + 7.4 1.0496789045990664 \\ + 7.5 1.057583181147952 \\ + 7.6 1.0654506296744348 \\ + 7.7 1.0732821213883428 \\ + 7.8 1.081078527499503 \\ + 7.9 1.0888407192177432 \\ + 8.0 1.0965695677528906 \\ + 8.1 1.104265944314773 \\ + 8.2 1.1119307201132174 \\ + 8.3 1.1195647663580517 \\ + 8.4 1.127168954259103 \\ + 8.5 1.1347441550261987 \\ + 8.6 1.1422912398691667 \\ + 8.7 1.1498110799978338 \\ + 8.8 1.1573045466220284 \\ + 8.9 1.1647725109515767 \\ + 9.0 1.1722158441963073 \\ + 9.1 1.179650461534768 \\ + 9.2 1.1870895824612524 \\ + 9.3 1.1945300346592058 \\ + 9.4 1.2019686458120726 \\ + 9.5 1.2094022436032983 \\ + 9.6 1.216827655716328 \\ + 9.7 1.224241709834606 \\ + 9.8 1.2316412336415778 \\ + 9.9 1.2390230548206882 \\ + 10.0 1.2463840010553824 \\ + 10.1 1.2537209000291054 \\ + 10.2 1.2610305794253018 \\ + 10.3 1.2683098669274173 \\ + 10.4 1.2755555902188962 \\ + 10.5 1.2827645769831837 \\ + 10.6 1.2899336549037248 \\ + 10.7 1.2970596516639645 \\ + 10.8 1.304139394947348 \\ + 10.9 1.3111697124373198 \\ + 11.0 1.3181474318173256 \\ + 11.1 1.325026174277794 \\ + 11.2 1.3317668927068351 \\ + 11.3 1.338377412334413 \\ + 11.4 1.3448655583904925 \\ + 11.5 1.351239156105038 \\ + 11.6 1.3575060307080147 \\ + 11.7 1.3636740074293865 \\ + 11.8 1.3697509114991193 \\ + 11.9 1.3757445681471765 \\ + 12.0 1.3816628026035231 \\ + 12.1 1.3875134400981242 \\ + 12.2 1.3933043058609442 \\ + 12.3 1.399043225121948 \\ + 12.4 1.4047380231110997 \\ + 12.5 1.4103965250583645 \\ + 12.6 1.4160265561937067 \\ + 12.7 1.4216359417470912 \\ + 12.8 1.4272325069484826 \\ + 12.9 1.4328240770278458 \\ + 13.0 1.438418477215145 \\ + 13.1 1.44397194969458 \\ + 13.2 1.449437093844378 \\ + 13.3 1.454816270685545 \\ + 13.4 1.4601118412390868 \\ + 13.5 1.4653261665260098 \\ + 13.6 1.4704616075673198 \\ + 13.7 1.475520525384023 \\ + 13.8 1.4805052809971249 \\ + 13.9 1.485418235427632 \\ + 14.0 1.49026174969655 \\ + 14.1 1.4950381848248855 \\ + 14.2 1.499749901833644 \\ + 14.3 1.5043992617438318 \\ + 14.4 1.5089886255764546 \\ + 14.5 1.5135203543525189 \\ + 14.6 1.51799680909303 \\ + 14.7 1.5224203508189946 \\ + 14.8 1.5267933405514187 \\ + 14.9 1.5311181393113076 \\ + 15.0 1.5353971081196682 \\ + 15.1 1.539551204323609 \\ + 15.2 1.5435032907074437 \\ + 15.3 1.5472585864479875 \\ + 15.4 1.5508223107220547 \\ + 15.5 1.554199682706459 \\ + 15.6 1.557395921578015 \\ + 15.7 1.5604162465135376 \\ + 15.8 1.5632658766898406 \\ + 15.9 1.5659500312837387 \\ + 16.0 1.5684739294720458 \\ + 16.1 1.5708427904315765 \\ + 16.2 1.573061833339145 \\ + 16.3 1.5751362773715663 \\ + 16.4 1.5770713417056537 \\ + 16.5 1.5788722455182223 \\ + 16.6 1.580544207986086 \\ + 16.7 1.5820924482860599 \\ + 16.8 1.5835221855949575 \\ + 16.9 1.5848386390895934 \\ + 17.0 1.5860470279467822 \\ + 17.1 1.5870871836027531 \\ + 17.2 1.587898652660948 \\ + 17.3 1.5884862270490012 \\ + 17.4 1.588854698694547 \\ + 17.5 1.5890088595252194 \\ + 17.6 1.5889535014686522 \\ + 17.7 1.5886934164524797 \\ + 17.8 1.5882333964043356 \\ + 17.9 1.5875782332518544 \\ + 18.0 1.58673271892267 \\ + 18.1 1.5857016453444164 \\ + 18.2 1.5844898044447273 \\ + 18.3 1.5831019881512376 \\ + 18.4 1.5815429883915808 \\ + 18.5 1.5798175970933912 \\ + 18.6 1.5779306061843026 \\ + 18.7 1.575886807591949 \\ + 18.8 1.5736909932439649 \\ + 18.9 1.571347955067984 \\ + 19.0 1.5688624849916406 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={2feea139-c798-4240-98c3-4c619f877b20}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -17.0 -0.05811342042506862 \\ + -16.9 -0.05815417246592469 \\ + -16.8 -0.05818942544794847 \\ + -16.7 -0.05821923968194298 \\ + -16.6 -0.058243675472333445 \\ + -16.5 -0.058262793117743295 \\ + -16.4 -0.05827665291147999 \\ + -16.3 -0.05828531514193336 \\ + -16.2 -0.05828884009290225 \\ + -16.1 -0.058287288043856744 \\ + -16.0 -0.05828071927013867 \\ + -15.9 -0.05826919404310815 \\ + -15.8 -0.05825277263023976 \\ + -15.7 -0.05823151529517223 \\ + -15.6 -0.058205482297710276 \\ + -15.5 -0.05817473389378636 \\ + -15.4 -0.05813933033537633 \\ + -15.3 -0.058099331870372195 \\ + -15.2 -0.05805479874241426 \\ + -15.1 -0.05800579119067262 \\ + -15.0 -0.057952369449588925 \\ + -14.9 -0.05789640225462911 \\ + -14.8 -0.05783920842255341 \\ + -14.7 -0.0577800232964778 \\ + -14.6 -0.05771808220531671 \\ + -14.5 -0.05765262046138564 \\ + -14.4 -0.057582873357237 \\ + -14.3 -0.05750807616158071 \\ + -14.2 -0.05742746411406885 \\ + -14.1 -0.05734027241868733 \\ + -14.0 -0.057245736235393974 \\ + -13.9 -0.05714309066954004 \\ + -13.8 -0.057031570758459216 \\ + -13.7 -0.05691041145440745 \\ + -13.6 -0.05677884760276153 \\ + -13.5 -0.056636113914008135 \\ + -13.4 -0.05648144492754792 \\ + -13.3 -0.05631407496463314 \\ + -13.2 -0.05613323806676784 \\ + -13.1 -0.05593816791453432 \\ + -13.0 -0.055728097719871084 \\ + -12.9 -0.055509517121132834 \\ + -12.8 -0.05528943672558362 \\ + -12.7 -0.05506787063839225 \\ + -12.6 -0.0548448327770501 \\ + -12.5 -0.05462033684527978 \\ + -12.4 -0.054394396303214965 \\ + -12.3 -0.05416702433330611 \\ + -12.2 -0.05393823380132501 \\ + -12.1 -0.053708037211744886 \\ + -12.0 -0.05347644665667284 \\ + -11.9 -0.053243473757377924 \\ + -11.8 -0.05300912959731763 \\ + -11.7 -0.052773424645406575 \\ + -11.6 -0.05253636866807243 \\ + -11.5 -0.05229797062842856 \\ + -11.4 -0.05205823857063763 \\ + -11.3 -0.05181717948725839 \\ + -11.2 -0.051574799167012464 \\ + -11.1 -0.05133110202004043 \\ + -11.0 -0.05108609087725269 \\ + -10.9 -0.050840221053246815 \\ + -10.8 -0.05059396034955199 \\ + -10.7 -0.05034732751943849 \\ + -10.6 -0.05010033913235756 \\ + -10.5 -0.04985300930027592 \\ + -10.4 -0.0496053493711921 \\ + -10.3 -0.04935736758616027 \\ + -10.2 -0.049109068695795344 \\ + -10.1 -0.04886045353183377 \\ + -10.0 -0.04861151852890744 \\ + -9.9 -0.04836225519124493 \\ + -9.8 -0.048112649498529114 \\ + -9.7 -0.04786268124464399 \\ + -9.6 -0.04761232330250387 \\ + -9.5 -0.04736154080761146 \\ + -9.4 -0.04711029025240543 \\ + -9.3 -0.04685851848287037 \\ + -9.2 -0.04660616158826969 \\ + -9.1 -0.046353143674256136 \\ + -9.0 -0.046099375509006 \\ + -8.9 -0.04584425054190544 \\ + -8.8 -0.04558720741024391 \\ + -8.7 -0.045328198550129484 \\ + -8.6 -0.04506715448413756 \\ + -8.5 -0.044803981714644614 \\ + -8.4 -0.04453856050785221 \\ + -8.3 -0.044270742583498834 \\ + -8.2 -0.04400034873099856 \\ + -8.1 -0.04372716637949614 \\ + -8.0 -0.04345094715703701 \\ + -7.9 -0.043171404482824416 \\ + -7.8 -0.04288821124631492 \\ + -7.7 -0.04260099763768199 \\ + -7.6 -0.04230934920584806 \\ + -7.5 -0.04201280523268813 \\ + -7.4 -0.04171085752490988 \\ + -7.3 -0.0414029497382159 \\ + -7.2 -0.04108847736119292 \\ + -7.1 -0.04076678849846316 \\ + -7.0 -0.0404371856032919 \\ + -6.9 -0.04009889636854813 \\ + -6.8 -0.03975082106505401 \\ + -6.7 -0.0393916590432421 \\ + -6.6 -0.039019995093199145 \\ + -6.5 -0.0386342874065716 \\ + -6.4 -0.03823285419393013 \\ + -6.3 -0.03781385881627608 \\ + -6.2 -0.03737529327845157 \\ + -6.1 -0.036914959921637125 \\ + -6.0 -0.03643045114237298 \\ + -5.9 -0.03591912695726279 \\ + -5.8 -0.0353780902265759 \\ + -5.7 -0.03480415934746628 \\ + -5.6 -0.03419383822989697 \\ + -5.5 -0.03354328337740037 \\ + -5.4 -0.0328482679127563 \\ + -5.3 -0.03210414241828263 \\ + -5.2 -0.03130579250503013 \\ + -5.1 -0.03044759308869438 \\ + -5.0 -0.029523359437085783 \\ + -4.9 -0.028527037048378973 \\ + -4.8 -0.027452608768346404 \\ + -4.7 -0.02629315950498365 \\ + -4.6 -0.025041325012072152 \\ + -4.5 -0.023689295433155177 \\ + -4.4 -0.022228826425510134 \\ + -4.3 -0.020651259123708104 \\ + -4.2 -0.018947550192224216 \\ + -4.1 -0.017108313144791026 \\ + -4.0 -0.015123871960699087 \\ + -3.9 -0.012984327792309625 \\ + -3.8 -0.010679639224029924 \\ + -3.7 -0.008199716106454508 \\ + -3.6 -0.005534526453248367 \\ + -3.5 -0.0026742152650976736 \\ + -3.4 0.0003907665417589995 \\ + -3.3 0.003669525639942356 \\ + -3.2 0.007170585462663331 \\ + -3.1 0.01090174490073667 \\ + -3.0 0.014869940873664014 \\ + -2.9 0.019081487377391626 \\ + -2.8 0.023541716151121675 \\ + -2.7 0.028254460847778856 \\ + -2.6 0.03322228912488197 \\ + -2.5 0.038446449040080516 \\ + -2.4 0.043926842249746315 \\ + -2.3 0.04966202518204501 \\ + -2.2 0.055649238127734375 \\ + -2.1 0.06188446096791752 \\ + -2.0 0.06836249312926337 \\ + -1.9 0.07507705440422052 \\ + -1.8 0.08202090255762905 \\ + -1.7 0.08918596319811511 \\ + -1.6 0.09656346723207866 \\ + -1.5 0.10414409132398057 \\ + -1.4 0.11191809712228748 \\ + -1.3 0.11987546552482559 \\ + -1.2 0.12800602289232987 \\ + -1.1 0.13629955681622147 \\ + -1.0 0.14474591975293655 \\ + -0.9 0.1533184798626236 \\ + -0.8 0.16199177266277057 \\ + -0.7 0.1707580173169689 \\ + -0.6 0.17961011697295498 \\ + -0.5 0.18854165278847743 \\ + -0.4 0.1975468692990009 \\ + -0.3 0.20662065298492066 \\ + -0.2 0.21575850568646712 \\ + -0.1 0.2249565142941017 \\ + 0.0 0.23421131792373198 \\ + 0.1 0.24352007357839 \\ + 0.2 0.2528804211068139 \\ + 0.3 0.2622904480977546 \\ + 0.4 0.2717486551979912 \\ + 0.5 0.28125392221177786 \\ + 0.6 0.2908054752286122 \\ + 0.7 0.3004028549330933 \\ + 0.8 0.3100458861731803 \\ + 0.9 0.3197346487992043 \\ + 1.0 0.3294694497333775 \\ + 1.1 0.33925758687958113 \\ + 1.2 0.3491042943917821 \\ + 1.3 0.3590070141238999 \\ + 1.4 0.36896327841324184 \\ + 1.5 0.3789706953066607 \\ + 1.6 0.38902693319359877 \\ + 1.7 0.3991297048277102 \\ + 1.8 0.40927675069719816 \\ + 1.9 0.419465821683971 \\ + 2.0 0.4296946609332169 \\ + 2.1 0.43996098483803764 \\ + 2.2 0.45026246302850187 \\ + 2.3 0.4605966972410349 \\ + 2.4 0.4709611989328067 \\ + 2.5 0.48135336549714597 \\ + 2.6 0.4917704549306612 \\ + 2.7 0.5022095588015308 \\ + 2.8 0.5126675733724755 \\ + 2.9 0.5231411687426396 \\ + 3.0 0.5336267558917779 \\ + 3.1 0.5444309736808883 \\ + 3.2 0.5558148557075325 \\ + 3.3 0.5677050923223858 \\ + 3.4 0.5800268512164539 \\ + 3.5 0.5927037316148505 \\ + 3.6 0.6056577672926441 \\ + 3.7 0.6188095000283121 \\ + 3.8 0.632078149584206 \\ + 3.9 0.6453819094436177 \\ + 4.0 0.6586383981063773 \\ + 4.1 0.6717652923069073 \\ + 4.2 0.684681159635278 \\ + 4.3 0.6973064926645041 \\ + 4.4 0.7095649246739275 \\ + 4.5 0.7213845797274966 \\ + 4.6 0.7326994803788964 \\ + 4.7 0.7434509095795443 \\ + 4.8 0.7535886054674891 \\ + 4.9 0.7630716642658097 \\ + 5.0 0.7718690410083715 \\ + 5.1 0.7801509657051896 \\ + 5.2 0.7880901432987933 \\ + 5.3 0.7956692303039499 \\ + 5.4 0.802874510166535 \\ + 5.5 0.8096961234427514 \\ + 5.6 0.816128183402937 \\ + 5.7 0.8221687684271607 \\ + 5.8 0.8278197912021554 \\ + 5.9 0.8330867533774968 \\ + 6.0 0.8379784019568302 \\ + 6.1 0.8425063094358844 \\ + 6.2 0.8466844030267983 \\ + 6.3 0.8505284690896358 \\ + 6.4 0.8540556573543197 \\ + 6.5 0.8572840061621533 \\ + 6.6 0.8602320054362408 \\ + 6.7 0.8629182090740728 \\ + 6.8 0.8653609035287735 \\ + 6.9 0.8675778349459449 \\ + 7.0 0.8695859936194239 \\ + 7.1 0.8714364747825988 \\ + 7.2 0.8731739636454693 \\ + 7.3 0.8748050058590868 \\ + 7.4 0.876335917705236 \\ + 7.5 0.877772770730729 \\ + 7.6 0.8791213806973512 \\ + 7.7 0.8803873004111094 \\ + 7.8 0.8815758159835183 \\ + 7.9 0.8826919460811289 \\ + 8.0 0.8837404437342493 \\ + 8.1 0.8847258002989623 \\ + 8.2 0.8856522511955329 \\ + 8.3 0.8865237830789672 \\ + 8.4 0.8873441421319982 \\ + 8.5 0.8881168432057044 \\ + 8.6 0.8888451795671948 \\ + 8.7 0.8895322330465001 \\ + 8.8 0.8901808844054279 \\ + 8.9 0.8907938237793127 \\ + 9.0 0.8913735610681244 \\ + 9.1 0.8919235209284788 \\ + 9.2 0.8924465705668143 \\ + 9.3 0.892944214997184 \\ + 9.4 0.8934179033778942 \\ + 9.5 0.8938690261245548 \\ + 9.6 0.8942989128659269 \\ + 9.7 0.894708831152471 \\ + 9.8 0.8950999858299423 \\ + 9.9 0.8954735189940075 \\ + 10.0 0.8958305104463925 \\ + 10.1 0.8961719785782307 \\ + 10.2 0.8964988816118629 \\ + 10.3 0.8968121191381382 \\ + 10.4 0.8971125338921342 \\ + 10.5 0.8974009137160025 \\ + 10.6 0.8976779936632797 \\ + 10.7 0.8979444582043811 \\ + 10.8 0.898200943498077 \\ + 10.9 0.898448039698486 \\ + 11.0 0.8986862932714954 \\ + 11.1 0.8989147931677818 \\ + 11.2 0.8991329656473982 \\ + 11.3 0.8993417547454143 \\ + 11.4 0.8995420124642917 \\ + 11.5 0.899734510535066 \\ + 11.6 0.8999199505500945 \\ + 11.7 0.9000989727060779 \\ + 11.8 0.900272163359588 \\ + 11.9 0.9004400615665895 \\ + 12.0 0.9006031647515387 \\ + 12.1 0.900761933629803 \\ + 12.2 0.9009167964887207 \\ + 12.3 0.9010681529170492 \\ + 12.4 0.9012163770594058 \\ + 12.5 0.9013618204611712 \\ + 12.6 0.9015048145598916 \\ + 12.7 0.9016456728712201 \\ + 12.8 0.9017846929106405 \\ + 12.9 0.9019221578864272 \\ + 13.0 0.9020583381943722 \\ + 13.1 0.902192254571576 \\ + 13.2 0.9023228738725528 \\ + 13.3 0.902450367615254 \\ + 13.4 0.9025748959797616 \\ + 13.5 0.9026966089450261 \\ + 13.6 0.902815647302526 \\ + 13.7 0.9029321435610348 \\ + 13.8 0.903046222754963 \\ + 13.9 0.9031580031672334 \\ + 14.0 0.9032675969763301 \\ + 14.1 0.9033751108360234 \\ + 14.2 0.9034806463952513 \\ + 14.3 0.9035843007647667 \\ + 14.4 0.903686166936385 \\ + 14.5 0.903786334159989 \\ + 14.6 0.9038848882828491 \\ + 14.7 0.9039819120553035 \\ + 14.8 0.9040774854063742 \\ + 14.9 0.904171685692494 \\ + 15.0 0.9042645879221662 \\ + 15.1 0.9043545055491098 \\ + 15.2 0.9044398105838207 \\ + 15.3 0.9045206594992049 \\ + 15.4 0.9045972030910282 \\ + 15.5 0.9046695871812983 \\ + 15.6 0.9047379532276059 \\ + 15.7 0.9048024388520449 \\ + 15.8 0.9048631783012393 \\ + 15.9 0.9049203028472451 \\ + 16.0 0.9049739411376181 \\ + 16.1 0.9050242195017081 \\ + 16.2 0.9050712622191833 \\ + 16.3 0.905115191755922 \\ + 16.4 0.9051561289716487 \\ + 16.5 0.905194193303075 \\ + 16.6 0.9052295029257583 \\ + 16.7 0.9052621748974412 \\ + 16.8 0.9052923252852464 \\ + 16.9 0.905320069278765 \\ + 17.0 0.9053455212907996 \\ + 17.1 0.9053674188308889 \\ + 17.2 0.9053844950155591 \\ + 17.3 0.9053968558615261 \\ + 17.4 0.9054046058073644 \\ + 17.5 0.9054078478535996 \\ + 17.6 0.9054066836828949 \\ + 17.7 0.9054012137629546 \\ + 17.8 0.9053915374343914 \\ + 17.9 0.9053777529854908 \\ + 18.0 0.9053599577155279 \\ + 18.1 0.9053382479880809 \\ + 18.2 0.9053127192755865 \\ + 18.3 0.9052834661962319 \\ + 18.4 0.9052505825441433 \\ + 18.5 0.9052141613137231 \\ + 18.6 0.9051742947189024 \\ + 18.7 0.9051310742079938 \\ + 18.8 0.9050845904747851 \\ + 18.9 0.905034933466458 \\ + 19.0 0.904982192388889 \\ + } + ; + \node[left, , color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{6 pt}{7.800000000000001 pt}\selectfont}}] at (axis cs:14.5,1.5890088595252194) {Nominal}; + \node[right, , color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{6 pt}{7.800000000000001 pt}\selectfont}}] at (axis cs:4.9,0.6945044297626097) {Limited}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/cltranslim-smoothed.tikz b/v0.5.0/DuctAPE/theory_latex/figures/cltranslim-smoothed.tikz new file mode 100644 index 00000000..fbc5231e --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/cltranslim-smoothed.tikz @@ -0,0 +1,1040 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={45.8mm}, height={50.8mm}, scaled x ticks={false}, xlabel={Mach Number}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.030000000000000027}, xmax={1.03}, xticklabels={{$0.00$,$0.25$,$0.50$,$0.75$,$1.00$}}, xtick={{0.0,0.25,0.5,0.75,1.0}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_{\ell_\mathrm{lim}}$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, ymajorgrids={false}, ymin={0.6327278367197582}, ymax={1.0106890661150496}, yticklabels={{$0.7$,$0.8$,$0.9$,$1.0$}}, ytick={{0.7000000000000001,0.8,0.9,1.0}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={3872b832-ced2-4ab2-9152-be36ac4aefa0}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.0 0.9999917438488518 \\ + 0.002004008016032064 0.9999917438488518 \\ + 0.004008016032064128 0.9999917438488518 \\ + 0.006012024048096192 0.9999917438488518 \\ + 0.008016032064128256 0.9999917438488518 \\ + 0.01002004008016032 0.9999917438488518 \\ + 0.012024048096192385 0.9999917438488518 \\ + 0.014028056112224449 0.9999917438488518 \\ + 0.01603206412825651 0.9999917438488518 \\ + 0.018036072144288578 0.9999917438488518 \\ + 0.02004008016032064 0.9999917438488518 \\ + 0.022044088176352707 0.9999917438488518 \\ + 0.02404809619238477 0.9999917438488518 \\ + 0.026052104208416832 0.9999917438488518 \\ + 0.028056112224448898 0.9999917438488518 \\ + 0.03006012024048096 0.9999917438488518 \\ + 0.03206412825651302 0.9999917438488518 \\ + 0.03406813627254509 0.9999917438488518 \\ + 0.036072144288577156 0.9999917438488518 \\ + 0.03807615230460922 0.9999917438488518 \\ + 0.04008016032064128 0.9999917438488518 \\ + 0.04208416833667335 0.9999917438488518 \\ + 0.04408817635270541 0.9999917438488518 \\ + 0.04609218436873747 0.9999917438488518 \\ + 0.04809619238476954 0.9999917438488518 \\ + 0.050100200400801605 0.9999917438488518 \\ + 0.052104208416833664 0.9999917438488518 \\ + 0.05410821643286573 0.9999917438488518 \\ + 0.056112224448897796 0.9999917438488518 \\ + 0.05811623246492986 0.9999917438488518 \\ + 0.06012024048096192 0.9999917438488518 \\ + 0.06212424849699399 0.9999917438488518 \\ + 0.06412825651302605 0.9999917438488518 \\ + 0.06613226452905811 0.9999917438488518 \\ + 0.06813627254509018 0.9999917438488518 \\ + 0.07014028056112225 0.9999917438488518 \\ + 0.07214428857715431 0.9999917438488518 \\ + 0.07414829659318638 0.9999917438488518 \\ + 0.07615230460921844 0.9999917438488518 \\ + 0.0781563126252505 0.9999917438488518 \\ + 0.08016032064128256 0.9999917438488518 \\ + 0.08216432865731463 0.9999917438488518 \\ + 0.0841683366733467 0.9999917438488518 \\ + 0.08617234468937876 0.9999917438488518 \\ + 0.08817635270541083 0.9999917438488518 \\ + 0.09018036072144289 0.9999917438488518 \\ + 0.09218436873747494 0.9999917438488518 \\ + 0.09418837675350701 0.9999917438488518 \\ + 0.09619238476953908 0.9999917438488518 \\ + 0.09819639278557114 0.9999917438488518 \\ + 0.10020040080160321 0.9999917438488518 \\ + 0.10220440881763528 0.9999917438488518 \\ + 0.10420841683366733 0.9999917438488518 \\ + 0.1062124248496994 0.9999917438488518 \\ + 0.10821643286573146 0.9999917438488518 \\ + 0.11022044088176353 0.9999917438488518 \\ + 0.11222444889779559 0.9999917438488518 \\ + 0.11422845691382766 0.9999917438488518 \\ + 0.11623246492985972 0.9999917438488518 \\ + 0.11823647294589178 0.9999917438488518 \\ + 0.12024048096192384 0.9999917438488518 \\ + 0.12224448897795591 0.9999917438488518 \\ + 0.12424849699398798 0.9999917438488518 \\ + 0.12625250501002003 0.9999917438488518 \\ + 0.1282565130260521 0.9999917438488518 \\ + 0.13026052104208416 0.9999917438488518 \\ + 0.13226452905811623 0.9999917438488518 \\ + 0.1342685370741483 0.9999917438488518 \\ + 0.13627254509018036 0.9999917438488518 \\ + 0.13827655310621242 0.9999917438488518 \\ + 0.1402805611222445 0.9999917438488518 \\ + 0.14228456913827656 0.9999917438488518 \\ + 0.14428857715430862 0.9999917438488518 \\ + 0.1462925851703407 0.9999917438488518 \\ + 0.14829659318637275 0.9999917438488518 \\ + 0.15030060120240482 0.9999917438488518 \\ + 0.1523046092184369 0.9999917438488518 \\ + 0.15430861723446893 0.9999917438488518 \\ + 0.156312625250501 0.9999917438488518 \\ + 0.15831663326653306 0.9999917438488518 \\ + 0.16032064128256512 0.9999917438488518 \\ + 0.1623246492985972 0.9999917438488518 \\ + 0.16432865731462926 0.9999917438488518 \\ + 0.16633266533066132 0.9999917438488518 \\ + 0.1683366733466934 0.9999917438488518 \\ + 0.17034068136272545 0.9999917438488518 \\ + 0.17234468937875752 0.9999917438488518 \\ + 0.1743486973947896 0.9999917438488518 \\ + 0.17635270541082165 0.9999917438488518 \\ + 0.17835671342685372 0.9999917438488518 \\ + 0.18036072144288579 0.9999917438488518 \\ + 0.18236472945891782 0.9999917438488518 \\ + 0.1843687374749499 0.9999917438488518 \\ + 0.18637274549098196 0.9999917438488518 \\ + 0.18837675350701402 0.9999917438488518 \\ + 0.1903807615230461 0.9999917438488518 \\ + 0.19238476953907815 0.9999917438488518 \\ + 0.19438877755511022 0.9999917438488518 \\ + 0.1963927855711423 0.9999917438488518 \\ + 0.19839679358717435 0.9999917438488518 \\ + 0.20040080160320642 0.9999917438488518 \\ + 0.20240480961923848 0.9999917438490858 \\ + 0.20440881763527055 0.9999917438493704 \\ + 0.20641282565130262 0.9999917438496786 \\ + 0.20841683366733466 0.9999917438500125 \\ + 0.21042084168336672 0.9999917438503745 \\ + 0.2124248496993988 0.9999917438507665 \\ + 0.21442885771543085 0.9999917438511913 \\ + 0.21643286573146292 0.9999917438516515 \\ + 0.218436873747495 0.9999917438521502 \\ + 0.22044088176352705 0.9999917438526904 \\ + 0.22244488977955912 0.9999917438532757 \\ + 0.22444889779559118 0.99999174385391 \\ + 0.22645290581162325 0.9999917438545971 \\ + 0.22845691382765532 0.9999917438553416 \\ + 0.23046092184368738 0.9999917438561482 \\ + 0.23246492985971945 0.9999917438570222 \\ + 0.23446893787575152 0.999991743857969 \\ + 0.23647294589178355 0.9999917438589949 \\ + 0.23847695390781562 0.9999917438601065 \\ + 0.24048096192384769 0.9999917438613107 \\ + 0.24248496993987975 0.9999917438626156 \\ + 0.24448897795591182 0.9999917438640292 \\ + 0.24649298597194388 0.999991743865561 \\ + 0.24849699398797595 0.9999917438672206 \\ + 0.250501002004008 0.9999917438690186 \\ + 0.25250501002004005 0.9999917438709667 \\ + 0.2545090180360721 0.9999917438730773 \\ + 0.2565130260521042 0.9999917438753642 \\ + 0.25851703406813625 0.999991743877842 \\ + 0.2605210420841683 0.9999917438805265 \\ + 0.2625250501002004 0.999991743883435 \\ + 0.26452905811623245 0.9999917438865863 \\ + 0.2665330661322645 0.9999917438900007 \\ + 0.2685370741482966 0.9999917438936999 \\ + 0.27054108216432865 0.999991743897708 \\ + 0.2725450901803607 0.9999917439020505 \\ + 0.2745490981963928 0.9999917439067555 \\ + 0.27655310621242485 0.9999917439118532 \\ + 0.2785571142284569 0.9999917439173763 \\ + 0.280561122244489 0.9999917439233604 \\ + 0.28256513026052105 0.9999917439298439 \\ + 0.2845691382765531 0.9999917439368685 \\ + 0.2865731462925852 0.9999917439444794 \\ + 0.28857715430861725 0.9999917439527256 \\ + 0.2905811623246493 0.9999917439616599 \\ + 0.2925851703406814 0.9999917439713399 \\ + 0.29458917835671344 0.9999917439818279 \\ + 0.2965931863727455 0.9999917439931911 \\ + 0.2985971943887776 0.9999917440055028 \\ + 0.30060120240480964 0.999991744018842 \\ + 0.3026052104208417 0.9999917440332945 \\ + 0.3046092184368738 0.9999917440489532 \\ + 0.3066132264529058 0.9999917440659188 \\ + 0.30861723446893785 0.9999917440843004 \\ + 0.3106212424849699 0.9999917441042161 \\ + 0.312625250501002 0.999991744125794 \\ + 0.31462925851703405 0.9999917441491727 \\ + 0.3166332665330661 0.9999917441745027 \\ + 0.3186372745490982 0.9999917442019467 \\ + 0.32064128256513025 0.9999917442316812 \\ + 0.3226452905811623 0.9999917442638975 \\ + 0.3246492985971944 0.9999917442988024 \\ + 0.32665330661322645 0.9999917443366206 \\ + 0.3286573146292585 0.9999917443775952 \\ + 0.3306613226452906 0.9999917444219895 \\ + 0.33266533066132264 0.999991744470089 \\ + 0.3346693386773547 0.9999917445222029 \\ + 0.3366733466933868 0.9999917445786662 \\ + 0.33867735470941884 0.9999917446398421 \\ + 0.3406813627254509 0.9999917447061237 \\ + 0.342685370741483 0.9999917447779373 \\ + 0.34468937875751504 0.9999917448557444 \\ + 0.3466933867735471 0.9999917449400454 \\ + 0.3486973947895792 0.9999917450313822 \\ + 0.35070140280561124 0.9999917451303421 \\ + 0.3527054108216433 0.9999917452375612 \\ + 0.35470941883767537 0.9999917453537289 \\ + 0.35671342685370744 0.999991745479592 \\ + 0.3587174348697395 0.9999917456159598 \\ + 0.36072144288577157 0.999991745763709 \\ + 0.3627254509018036 0.9999917459237894 \\ + 0.36472945891783565 0.9999917460972302 \\ + 0.3667334669338677 0.9999917462851465 \\ + 0.3687374749498998 0.9999917464887464 \\ + 0.37074148296593185 0.9999917467093391 \\ + 0.3727454909819639 0.9999917469483425 \\ + 0.374749498997996 0.9999917472072933 \\ + 0.37675350701402804 0.9999917474878564 \\ + 0.3787575150300601 0.9999917477918354 \\ + 0.3807615230460922 0.9999917481211847 \\ + 0.38276553106212424 0.9999917484780217 \\ + 0.3847695390781563 0.9999917488646408 \\ + 0.3867735470941884 0.9999917492835273 \\ + 0.38877755511022044 0.9999917497373744 \\ + 0.3907815631262525 0.9999917502290999 \\ + 0.3927855711422846 0.9999911560012378 \\ + 0.39478957915831664 0.9999904179099592 \\ + 0.3967935871743487 0.9999896182232041 \\ + 0.39879759519038077 0.9999887518012414 \\ + 0.40080160320641284 0.9999878130755613 \\ + 0.4028056112224449 0.9999867960131215 \\ + 0.40480961923847697 0.9999856940776144 \\ + 0.40681362725450904 0.9999845001875093 \\ + 0.4088176352705411 0.9999832066706004 \\ + 0.41082164328657317 0.99998180521477 \\ + 0.41282565130260523 0.9999802868146531 \\ + 0.4148296593186373 0.999978641713864 \\ + 0.4168336673346693 0.9999768593424148 \\ + 0.4188376753507014 0.9999749282489282 \\ + 0.42084168336673344 0.9999728360272142 \\ + 0.4228456913827655 0.9999705692367415 \\ + 0.4248496993987976 0.9999681133164997 \\ + 0.42685370741482964 0.9999654524917052 \\ + 0.4288577154308617 0.9999625696727599 \\ + 0.4308617234468938 0.999959446345821 \\ + 0.43286573146292584 0.9999560624542922 \\ + 0.4348697394789579 0.9999523962704853 \\ + 0.43687374749499 0.9999484242566435 \\ + 0.43887775551102204 0.9999441209144536 \\ + 0.4408817635270541 0.9999394586220961 \\ + 0.44288577154308617 0.9999344074578155 \\ + 0.44488977955911824 0.9999289350089045 \\ + 0.4468937875751503 0.9999230061649068 \\ + 0.44889779559118237 0.9999165828937544 \\ + 0.45090180360721444 0.9999096239994415 \\ + 0.4529058116232465 0.9999020848597394 \\ + 0.45490981963927857 0.9998939171423281 \\ + 0.45691382765531063 0.9998850684975976 \\ + 0.4589178356713427 0.9998754822262347 \\ + 0.46092184368737477 0.9998650969195634 \\ + 0.46292585170340683 0.9998538460704521 \\ + 0.4649298597194389 0.9998416576524312 \\ + 0.46693386773547096 0.9998284536644845 \\ + 0.46893787575150303 0.999814149638792 \\ + 0.4709418837675351 0.9997986541084898 \\ + 0.4729458917835671 0.9997818680323026 \\ + 0.4749498997995992 0.9997636841726725 \\ + 0.47695390781563124 0.9997439864237609 \\ + 0.4789579158316633 0.9997226490854488 \\ + 0.48096192384769537 0.999699536079183 \\ + 0.48296593186372744 0.9996745001012343 \\ + 0.4849699398797595 0.9996473817086342 \\ + 0.48697394789579157 0.9996180083327431 \\ + 0.48897795591182364 0.9995861932150798 \\ + 0.4909819639278557 0.9995517342597093 \\ + 0.49298597194388777 0.9995144127961367 \\ + 0.49498997995991983 0.9994739922463111 \\ + 0.4969939879759519 0.9994302166889816 \\ + 0.49899799599198397 0.9993828093142997 \\ + 0.501002004008016 0.9993314707612054 \\ + 0.503006012024048 0.9992758773298005 \\ + 0.5050100200400801 0.9992156790605844 \\ + 0.5070140280561122 0.9991504976721364 \\ + 0.5090180360721442 0.9990799243485624 \\ + 0.5110220440881763 0.9990035173678153 \\ + 0.5130260521042084 0.9989207995618441 \\ + 0.5150300601202404 0.9988312555994594 \\ + 0.5170340681362725 0.9987343290828286 \\ + 0.5190380761523046 0.9986294194486641 \\ + 0.5210420841683366 0.998515878665468 \\ + 0.5230460921843687 0.9983930077186733 \\ + 0.5250501002004008 0.9982600528762142 \\ + 0.5270541082164328 0.9981162017280041 \\ + 0.5290581162324649 0.9979605789940426 \\ + 0.531062124248497 0.9977922420974695 \\ + 0.533066132264529 0.9976101765008748 \\ + 0.5350701402805611 0.9974132908066395 \\ + 0.5370741482965932 0.9972004116250747 \\ + 0.5390781563126252 0.996970278217719 \\ + 0.5410821643286573 0.9967215369274324 \\ + 0.5430861723446894 0.9964527354119478 \\ + 0.5450901803607214 0.9961623167034146 \\ + 0.5470941883767535 0.9958486131232401 \\ + 0.5490981963927856 0.9955098400893051 \\ + 0.5511022044088176 0.9951440898614492 \\ + 0.5531062124248497 0.9947493252810405 \\ + 0.5551102204408818 0.9943233735715047 \\ + 0.5571142284569138 0.9938639202788789 \\ + 0.5591182364729459 0.9933685034447535 \\ + 0.561122244488978 0.9928345081182763 \\ + 0.56312625250501 0.9922591613290888 \\ + 0.5651302605210421 0.9916395276589064 \\ + 0.5671342685370742 0.9909725055656766 \\ + 0.5691382765531062 0.9902548246304038 \\ + 0.5711422845691383 0.9894830439123449 \\ + 0.5731462925851704 0.988653551612696 \\ + 0.5751503006012024 0.9877625662593388 \\ + 0.5771543086172345 0.9868061396348167 \\ + 0.5791583166332666 0.9857801616754216 \\ + 0.5811623246492986 0.9846803675699871 \\ + 0.5831663326653307 0.9835023472814779 \\ + 0.5851703406813628 0.9822415577015163 \\ + 0.5871743486973948 0.9808933376263822 \\ + 0.5891783567134269 0.9794529257116518 \\ + 0.591182364729459 0.9779154815206208 \\ + 0.593186372745491 0.9762761097283854 \\ + 0.5951903807615231 0.9745298874787712 \\ + 0.5971943887775552 0.9726718948156041 \\ + 0.5991983967935872 0.9706972480241332 \\ + 0.6012024048096193 0.9686011356245585 \\ + 0.6032064128256514 0.9663788566601571 \\ + 0.6052104208416834 0.9640258608208415 \\ + 0.6072144288577155 0.9615377898432599 \\ + 0.6092184368737475 0.9589105195354745 \\ + 0.6112224448897795 0.9561402016929712 \\ + 0.6132264529058116 0.9532233051084653 \\ + 0.6152304609218436 0.9501566548356482 \\ + 0.6172344689378757 0.9469374688509943 \\ + 0.6192384769539078 0.9435633912713213 \\ + 0.6212424849699398 0.9400325213298812 \\ + 0.6232464929859719 0.9363434373905974 \\ + 0.625250501002004 0.9324952153870674 \\ + 0.627254509018036 0.928487441206658 \\ + 0.6292585170340681 0.9243202166952331 \\ + 0.6312625250501002 0.9199941591281333 \\ + 0.6332665330661322 0.9155103941703019 \\ + 0.6352705410821643 0.91087054252475 \\ + 0.6372745490981964 0.9060767006357697 \\ + 0.6392785571142284 0.9011314159639756 \\ + 0.6412825651302605 0.8960376574780462 \\ + 0.6432865731462926 0.8907987821081464 \\ + 0.6452905811623246 0.8854184979754293 \\ + 0.6472945891783567 0.8799008252495809 \\ + 0.6492985971943888 0.8742500554927702 \\ + 0.6513026052104208 0.8684707103258498 \\ + 0.6533066132264529 0.8625675002048234 \\ + 0.655310621242485 0.8565452840269618 \\ + 0.657314629258517 0.8504090302015653 \\ + 0.6593186372745491 0.8441637797254826 \\ + 0.6613226452905812 0.8378146117031282 \\ + 0.6633266533066132 0.8313666116495156 \\ + 0.6653306613226453 0.8248248428167023 \\ + 0.6673346693386774 0.8181943206922137 \\ + 0.6693386773547094 0.8114799907348967 \\ + 0.6713426853707415 0.8046867093408281 \\ + 0.6733466933867736 0.7978192279702635 \\ + 0.6753507014028056 0.7908821803163979 \\ + 0.6773547094188377 0.7838800723576285 \\ + 0.6793587174348698 0.776817275106408 \\ + 0.6813627254509018 0.7696980198486656 \\ + 0.6833667334669339 0.7625263956570305 \\ + 0.685370741482966 0.7553063489574757 \\ + 0.687374749498998 0.7480416849312717 \\ + 0.6893787575150301 0.7407360705410941 \\ + 0.6913827655310621 0.7333930389806589 \\ + 0.6933867735470942 0.7260159953603273 \\ + 0.6953907815631263 0.718608223455895 \\ + 0.6973947895791583 0.7111728933634304 \\ + 0.6993987975951904 0.7037130699189957 \\ + 0.7014028056112225 0.6962317217577949 \\ + 0.7034068136272545 0.6887317309023688 \\ + 0.7054108216432866 0.6812159027835774 \\ + 0.7074148296593187 0.6736869766110113 \\ + 0.7094188376753507 0.6661476360210181 \\ + 0.7114228456913828 0.658600519940548 \\ + 0.7134268537074149 0.6510482336134751 \\ + 0.7154308617234469 0.6434933597428429 \\ + 0.717434869739479 0.6434458290403369 \\ + 0.7194388777555111 0.6434458290403369 \\ + 0.7214428857715431 0.6434458290403369 \\ + 0.7234468937875751 0.6434458290403369 \\ + 0.7254509018036072 0.6434458290403369 \\ + 0.7274549098196392 0.6434458290403369 \\ + 0.7294589178356713 0.6434458290403369 \\ + 0.7314629258517034 0.6434458290403369 \\ + 0.7334669338677354 0.6434458290403369 \\ + 0.7354709418837675 0.6434458290403369 \\ + 0.7374749498997996 0.6434458290403369 \\ + 0.7394789579158316 0.6434458290403369 \\ + 0.7414829659318637 0.6434458290403369 \\ + 0.7434869739478958 0.6434458290403369 \\ + 0.7454909819639278 0.6434458290403369 \\ + 0.7474949899799599 0.6434458290403369 \\ + 0.749498997995992 0.6434458290403369 \\ + 0.751503006012024 0.6434458290403369 \\ + 0.7535070140280561 0.6434458290403369 \\ + 0.7555110220440882 0.6434458290403369 \\ + 0.7575150300601202 0.6434458290403369 \\ + 0.7595190380761523 0.6434458290403369 \\ + 0.7615230460921844 0.6434458290403369 \\ + 0.7635270541082164 0.6434458290403369 \\ + 0.7655310621242485 0.6434458290403369 \\ + 0.7675350701402806 0.6434458290403369 \\ + 0.7695390781563126 0.6434458290403369 \\ + 0.7715430861723447 0.6434458290403369 \\ + 0.7735470941883767 0.6434458290403369 \\ + 0.7755511022044088 0.6434458290403369 \\ + 0.7775551102204409 0.6434458290403369 \\ + 0.779559118236473 0.6434458290403369 \\ + 0.781563126252505 0.6434458290403369 \\ + 0.7835671342685371 0.6434458290403369 \\ + 0.7855711422845691 0.6434458290403369 \\ + 0.7875751503006012 0.6434458290403369 \\ + 0.7895791583166333 0.6434458290403369 \\ + 0.7915831663326653 0.6434458290403369 \\ + 0.7935871743486974 0.6434458290403369 \\ + 0.7955911823647295 0.6434458290403369 \\ + 0.7975951903807615 0.6434458290403369 \\ + 0.7995991983967936 0.6434458290403369 \\ + 0.8016032064128257 0.6434458290403369 \\ + 0.8036072144288577 0.6434458290403369 \\ + 0.8056112224448898 0.6434458290403369 \\ + 0.8076152304609219 0.6434458290403369 \\ + 0.8096192384769539 0.6434458290403369 \\ + 0.811623246492986 0.6434458290403369 \\ + 0.8136272545090181 0.6434458290403369 \\ + 0.8156312625250501 0.6434458290403369 \\ + 0.8176352705410822 0.6434458290403369 \\ + 0.8196392785571143 0.6434458290403369 \\ + 0.8216432865731463 0.6434458290403369 \\ + 0.8236472945891784 0.6434458290403369 \\ + 0.8256513026052105 0.6434458290403369 \\ + 0.8276553106212425 0.6434458290403369 \\ + 0.8296593186372746 0.6434458290403369 \\ + 0.8316633266533067 0.6434458290403369 \\ + 0.8336673346693386 0.6434458290403369 \\ + 0.8356713426853707 0.6434458290403369 \\ + 0.8376753507014028 0.6434458290403369 \\ + 0.8396793587174348 0.6434458290403369 \\ + 0.8416833667334669 0.6434458290403369 \\ + 0.843687374749499 0.6434458290403369 \\ + 0.845691382765531 0.6434458290403369 \\ + 0.8476953907815631 0.6434458290403369 \\ + 0.8496993987975952 0.6434458290403369 \\ + 0.8517034068136272 0.6434458290403369 \\ + 0.8537074148296593 0.6434458290403369 \\ + 0.8557114228456913 0.6434458290403369 \\ + 0.8577154308617234 0.6434458290403369 \\ + 0.8597194388777555 0.6434458290403369 \\ + 0.8617234468937875 0.6434458290403369 \\ + 0.8637274549098196 0.6434458290403369 \\ + 0.8657314629258517 0.6434458290403369 \\ + 0.8677354709418837 0.6434458290403369 \\ + 0.8697394789579158 0.6434458290403369 \\ + 0.8717434869739479 0.6434458290403369 \\ + 0.87374749498998 0.6434458290403369 \\ + 0.875751503006012 0.6434458290403369 \\ + 0.8777555110220441 0.6434458290403369 \\ + 0.8797595190380761 0.6434458290403369 \\ + 0.8817635270541082 0.6434458290403369 \\ + 0.8837675350701403 0.6434458290403369 \\ + 0.8857715430861723 0.6434458290403369 \\ + 0.8877755511022044 0.6434458290403369 \\ + 0.8897795591182365 0.6434458290403369 \\ + 0.8917835671342685 0.6434458290403369 \\ + 0.8937875751503006 0.6434458290403369 \\ + 0.8957915831663327 0.6434458290403369 \\ + 0.8977955911823647 0.6434458290403369 \\ + 0.8997995991983968 0.6434458290403369 \\ + 0.9018036072144289 0.6434458290403369 \\ + 0.9038076152304609 0.6434458290403369 \\ + 0.905811623246493 0.6434458290403369 \\ + 0.9078156312625251 0.6434458290403369 \\ + 0.9098196392785571 0.6434458290403369 \\ + 0.9118236472945892 0.6434458290403369 \\ + 0.9138276553106213 0.6434458290403369 \\ + 0.9158316633266533 0.6434458290403369 \\ + 0.9178356713426854 0.6434458290403369 \\ + 0.9198396793587175 0.6434458290403369 \\ + 0.9218436873747495 0.6434458290403369 \\ + 0.9238476953907816 0.6434458290403369 \\ + 0.9258517034068137 0.6434458290403369 \\ + 0.9278557114228457 0.6434458290403369 \\ + 0.9298597194388778 0.6434458290403369 \\ + 0.9318637274549099 0.6434458290403369 \\ + 0.9338677354709419 0.6434458290403369 \\ + 0.935871743486974 0.6434458290403369 \\ + 0.9378757515030061 0.6434458290403369 \\ + 0.9398797595190381 0.6434458290403369 \\ + 0.9418837675350702 0.6434458290403369 \\ + 0.9438877755511023 0.6434458290403369 \\ + 0.9458917835671342 0.6434458290403369 \\ + 0.9478957915831663 0.6434458290403369 \\ + 0.9498997995991983 0.6434458290403369 \\ + 0.9519038076152304 0.6434458290403369 \\ + 0.9539078156312625 0.6434458290403369 \\ + 0.9559118236472945 0.6434458290403369 \\ + 0.9579158316633266 0.6434458290403369 \\ + 0.9599198396793587 0.6434458290403369 \\ + 0.9619238476953907 0.6434458290403369 \\ + 0.9639278557114228 0.6434458290403369 \\ + 0.9659318637274549 0.6434458290403369 \\ + 0.9679358717434869 0.6434458290403369 \\ + 0.969939879759519 0.6434458290403369 \\ + 0.9719438877755511 0.6434458290403369 \\ + 0.9739478957915831 0.6434458290403369 \\ + 0.9759519038076152 0.6434458290403369 \\ + 0.9779559118236473 0.6434458290403369 \\ + 0.9799599198396793 0.6434458290403369 \\ + 0.9819639278557114 0.6434458290403369 \\ + 0.9839679358717435 0.6434458290403369 \\ + 0.9859719438877755 0.6434458290403369 \\ + 0.9879759519038076 0.6434458290403369 \\ + 0.9899799599198397 0.6434458290403369 \\ + 0.9919839679358717 0.6434458290403369 \\ + 0.9939879759519038 0.6434458290403369 \\ + 0.9959919839679359 0.6434458290403369 \\ + 0.9979959919839679 0.6434458290403369 \\ + 1.0 0.6434458290403369 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={ba17905d-0f18-4ebe-a413-abc0ac483e9c}, draw opacity={1.0}, line width={2}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.0 0.9999917438488518 \\ + 0.002004008016032064 0.9999917438488518 \\ + 0.004008016032064128 0.9999917438488518 \\ + 0.006012024048096192 0.9999917438488518 \\ + 0.008016032064128256 0.9999917438488518 \\ + 0.01002004008016032 0.9999917438488518 \\ + 0.012024048096192385 0.9999917438488518 \\ + 0.014028056112224449 0.9999917438488518 \\ + 0.01603206412825651 0.9999917438488518 \\ + 0.018036072144288578 0.9999917438488518 \\ + 0.02004008016032064 0.9999917438488518 \\ + 0.022044088176352707 0.9999917438488518 \\ + 0.02404809619238477 0.9999917438488518 \\ + 0.026052104208416832 0.9999917438488518 \\ + 0.028056112224448898 0.9999917438488518 \\ + 0.03006012024048096 0.9999917438488518 \\ + 0.03206412825651302 0.9999917438488518 \\ + 0.03406813627254509 0.9999917438488518 \\ + 0.036072144288577156 0.9999917438488518 \\ + 0.03807615230460922 0.9999917438488518 \\ + 0.04008016032064128 0.9999917438488518 \\ + 0.04208416833667335 0.9999917438488518 \\ + 0.04408817635270541 0.9999917438488518 \\ + 0.04609218436873747 0.9999917438488518 \\ + 0.04809619238476954 0.9999917438488518 \\ + 0.050100200400801605 0.9999917438488518 \\ + 0.052104208416833664 0.9999917438488518 \\ + 0.05410821643286573 0.9999917438488518 \\ + 0.056112224448897796 0.9999917438488518 \\ + 0.05811623246492986 0.9999917438488518 \\ + 0.06012024048096192 0.9999917438488518 \\ + 0.06212424849699399 0.9999917438488518 \\ + 0.06412825651302605 0.9999917438488518 \\ + 0.06613226452905811 0.9999917438488518 \\ + 0.06813627254509018 0.9999917438488518 \\ + 0.07014028056112225 0.9999917438488518 \\ + 0.07214428857715431 0.9999917438488518 \\ + 0.07414829659318638 0.9999917438488518 \\ + 0.07615230460921844 0.9999917438488518 \\ + 0.0781563126252505 0.9999917438488518 \\ + 0.08016032064128256 0.9999917438488518 \\ + 0.08216432865731463 0.9999917438488518 \\ + 0.0841683366733467 0.9999917438488518 \\ + 0.08617234468937876 0.9999917438488518 \\ + 0.08817635270541083 0.9999917438488518 \\ + 0.09018036072144289 0.9999917438488518 \\ + 0.09218436873747494 0.9999917438488518 \\ + 0.09418837675350701 0.9999917438488518 \\ + 0.09619238476953908 0.9999917438488518 \\ + 0.09819639278557114 0.9999917438488518 \\ + 0.10020040080160321 0.9999917438488518 \\ + 0.10220440881763528 0.9999917438488518 \\ + 0.10420841683366733 0.9999917438488518 \\ + 0.1062124248496994 0.9999917438488518 \\ + 0.10821643286573146 0.9999917438488518 \\ + 0.11022044088176353 0.9999917438488518 \\ + 0.11222444889779559 0.9999917438488518 \\ + 0.11422845691382766 0.9999917438488518 \\ + 0.11623246492985972 0.9999917438488518 \\ + 0.11823647294589178 0.9999917438488518 \\ + 0.12024048096192384 0.9999917438488518 \\ + 0.12224448897795591 0.9999917438488518 \\ + 0.12424849699398798 0.9999917438488518 \\ + 0.12625250501002003 0.9999917438488518 \\ + 0.1282565130260521 0.9999917438488518 \\ + 0.13026052104208416 0.9999917438488518 \\ + 0.13226452905811623 0.9999917438488518 \\ + 0.1342685370741483 0.9999917438488518 \\ + 0.13627254509018036 0.9999917438488518 \\ + 0.13827655310621242 0.9999917438488518 \\ + 0.1402805611222445 0.9999917438488518 \\ + 0.14228456913827656 0.9999917438488518 \\ + 0.14428857715430862 0.9999917438488518 \\ + 0.1462925851703407 0.9999917438488518 \\ + 0.14829659318637275 0.9999917438488518 \\ + 0.15030060120240482 0.9999917438488518 \\ + 0.1523046092184369 0.9999917438488518 \\ + 0.15430861723446893 0.9999917438488518 \\ + 0.156312625250501 0.9999917438488518 \\ + 0.15831663326653306 0.9999917438488517 \\ + 0.16032064128256512 0.9999917438488517 \\ + 0.1623246492985972 0.9999917438488517 \\ + 0.16432865731462926 0.9999917438488517 \\ + 0.16633266533066132 0.9999917438488516 \\ + 0.1683366733466934 0.9999917438488515 \\ + 0.17034068136272545 0.9999917438488514 \\ + 0.17234468937875752 0.999991743848851 \\ + 0.1743486973947896 0.9999917438488505 \\ + 0.17635270541082165 0.9999917438488496 \\ + 0.17835671342685372 0.9999917438488483 \\ + 0.18036072144288579 0.9999917438488459 \\ + 0.18236472945891782 0.9999917438488422 \\ + 0.1843687374749499 0.9999917438488362 \\ + 0.18637274549098196 0.999991743848827 \\ + 0.18837675350701402 0.9999917438488135 \\ + 0.1903807615230461 0.9999917438487947 \\ + 0.19238476953907815 0.9999917438487713 \\ + 0.19438877755511022 0.9999917438487478 \\ + 0.1963927855711423 0.999991743848736 \\ + 0.19839679358717435 0.9999917438487573 \\ + 0.20040080160320642 0.9999917438488379 \\ + 0.20240480961923848 0.9999917438489974 \\ + 0.20440881763527055 0.9999917438492368 \\ + 0.20641282565130262 0.9999917438495421 \\ + 0.20841683366733466 0.9999917438498952 \\ + 0.21042084168336672 0.9999917438502828 \\ + 0.2124248496993988 0.9999917438506992 \\ + 0.21442885771543085 0.9999917438511438 \\ + 0.21643286573146292 0.9999917438516189 \\ + 0.218436873747495 0.9999917438521282 \\ + 0.22044088176352705 0.9999917438526759 \\ + 0.22244488977955912 0.9999917438532663 \\ + 0.22444889779559118 0.9999917438539038 \\ + 0.22645290581162325 0.9999917438545931 \\ + 0.22845691382765532 0.9999917438553391 \\ + 0.23046092184368738 0.9999917438561465 \\ + 0.23246492985971945 0.999991743857021 \\ + 0.23446893787575152 0.9999917438579684 \\ + 0.23647294589178355 0.9999917438589945 \\ + 0.23847695390781562 0.9999917438601061 \\ + 0.24048096192384769 0.9999917438613106 \\ + 0.24248496993987975 0.9999917438626155 \\ + 0.24448897795591182 0.9999917438640292 \\ + 0.24649298597194388 0.9999917438655609 \\ + 0.24849699398797595 0.9999917438672205 \\ + 0.250501002004008 0.9999917438690186 \\ + 0.25250501002004005 0.9999917438709667 \\ + 0.2545090180360721 0.9999917438730773 \\ + 0.2565130260521042 0.9999917438753642 \\ + 0.25851703406813625 0.999991743877842 \\ + 0.2605210420841683 0.9999917438805265 \\ + 0.2625250501002004 0.999991743883435 \\ + 0.26452905811623245 0.9999917438865863 \\ + 0.2665330661322645 0.9999917438900007 \\ + 0.2685370741482966 0.9999917438936999 \\ + 0.27054108216432865 0.999991743897708 \\ + 0.2725450901803607 0.9999917439020505 \\ + 0.2745490981963928 0.9999917439067555 \\ + 0.27655310621242485 0.9999917439118532 \\ + 0.2785571142284569 0.9999917439173763 \\ + 0.280561122244489 0.9999917439233604 \\ + 0.28256513026052105 0.9999917439298439 \\ + 0.2845691382765531 0.9999917439368685 \\ + 0.2865731462925852 0.9999917439444794 \\ + 0.28857715430861725 0.9999917439527256 \\ + 0.2905811623246493 0.9999917439616599 \\ + 0.2925851703406814 0.9999917439713399 \\ + 0.29458917835671344 0.9999917439818279 \\ + 0.2965931863727455 0.9999917439931912 \\ + 0.2985971943887776 0.9999917440055028 \\ + 0.30060120240480964 0.999991744018842 \\ + 0.3026052104208417 0.9999917440332946 \\ + 0.3046092184368738 0.9999917440489534 \\ + 0.3066132264529058 0.9999917440659191 \\ + 0.30861723446893785 0.9999917440843008 \\ + 0.3106212424849699 0.999991744104217 \\ + 0.312625250501002 0.9999917441257955 \\ + 0.31462925851703405 0.9999917441491755 \\ + 0.3166332665330661 0.9999917441745076 \\ + 0.3186372745490982 0.9999917442019555 \\ + 0.32064128256513025 0.9999917442316969 \\ + 0.3226452905811623 0.9999917442639251 \\ + 0.3246492985971944 0.9999917442988515 \\ + 0.32665330661322645 0.9999917443367073 \\ + 0.3286573146292585 0.9999917443777484 \\ + 0.3306613226452906 0.99999174442226 \\ + 0.33266533066132264 0.9999917444705662 \\ + 0.3346693386773547 0.9999917445230436 \\ + 0.3366733466933868 0.9999917445801454 \\ + 0.33867735470941884 0.9999917446424411 \\ + 0.3406813627254509 0.9999917447106837 \\ + 0.342685370741483 0.9999917447859251 \\ + 0.34468937875751504 0.9999917448697129 \\ + 0.3466933867735471 0.9999917449644266 \\ + 0.3486973947895792 0.9999917450738512 \\ + 0.35070140280561124 0.9999917452041522 \\ + 0.3527054108216433 0.9999917453655246 \\ + 0.35470941883767537 0.9999917455749691 \\ + 0.35671342685370744 0.9999917458609341 \\ + 0.3587174348697395 0.9999917462710103 \\ + 0.36072144288577157 0.9999917468845599 \\ + 0.3627254509018036 0.9999917478331748 \\ + 0.36472945891783565 0.9999917493332573 \\ + 0.3667334669338677 0.9999917517367148 \\ + 0.3687374749498998 0.9999917556072194 \\ + 0.37074148296593185 0.9999917618290165 \\ + 0.3727454909819639 0.9999917717482832 \\ + 0.374749498997996 0.9999917873225113 \\ + 0.37675350701402804 0.9999918111869223 \\ + 0.3787575150300601 0.9999918463915959 \\ + 0.3807615230460922 0.9999918952527759 \\ + 0.38276553106212424 0.9999919562965133 \\ + 0.3847695390781563 0.9999920180682516 \\ + 0.3867735470941884 0.9999920501887678 \\ + 0.38877755511022044 0.9999919977716275 \\ + 0.3907815631262525 0.9999917921224031 \\ + 0.3927855711422846 0.9999913823662137 \\ + 0.39478957915831664 0.9999907639374094 \\ + 0.3967935871743487 0.9999899734596749 \\ + 0.39879759519038077 0.9999890583191463 \\ + 0.40080160320641284 0.9999880527095456 \\ + 0.4028056112224449 0.9999869721651804 \\ + 0.40480961923847697 0.9999858184125128 \\ + 0.40681362725450904 0.9999845855276372 \\ + 0.4088176352705411 0.9999832640821095 \\ + 0.41082164328657317 0.9999818432640034 \\ + 0.41282565130260523 0.9999803117418649 \\ + 0.4148296593186373 0.9999786578948251 \\ + 0.4168336673346693 0.9999768697672158 \\ + 0.4188376753507014 0.9999749349231791 \\ + 0.42084168336673344 0.9999728402774947 \\ + 0.4228456913827655 0.9999705719309537 \\ + 0.4248496993987976 0.9999681150174808 \\ + 0.42685370741482964 0.9999654535618127 \\ + 0.4288577154308617 0.9999625703438585 \\ + 0.4308617234468938 0.9999594467655022 \\ + 0.43286573146292584 0.9999560627160793 \\ + 0.4348697394789579 0.9999523964334058 \\ + 0.43687374749499 0.9999484243578232 \\ + 0.43887775551102204 0.9999441209771694 \\ + 0.4408817635270541 0.9999394586609018 \\ + 0.44288577154308617 0.9999344074817879 \\ + 0.44488977955911824 0.9999289350236912 \\ + 0.4468937875751503 0.9999230061740151 \\ + 0.44889779559118237 0.9999165828993576 \\ + 0.45090180360721444 0.9999096240028842 \\ + 0.4529058116232465 0.9999020848618523 \\ + 0.45490981963927857 0.9998939171436235 \\ + 0.45691382765531063 0.999885068498391 \\ + 0.4589178356713427 0.9998754822267202 \\ + 0.46092184368737477 0.9998650969198601 \\ + 0.46292585170340683 0.9998538460706334 \\ + 0.4649298597194389 0.9998416576525418 \\ + 0.46693386773547096 0.999828453664552 \\ + 0.46893787575150303 0.9998141496388332 \\ + 0.4709418837675351 0.9997986541085148 \\ + 0.4729458917835671 0.9997818680323178 \\ + 0.4749498997995992 0.9997636841726818 \\ + 0.47695390781563124 0.9997439864237666 \\ + 0.4789579158316633 0.9997226490854523 \\ + 0.48096192384769537 0.999699536079185 \\ + 0.48296593186372744 0.9996745001012355 \\ + 0.4849699398797595 0.999647381708635 \\ + 0.48697394789579157 0.9996180083327435 \\ + 0.48897795591182364 0.99958619321508 \\ + 0.4909819639278557 0.9995517342597094 \\ + 0.49298597194388777 0.9995144127961368 \\ + 0.49498997995991983 0.9994739922463111 \\ + 0.4969939879759519 0.9994302166889816 \\ + 0.49899799599198397 0.9993828093142997 \\ + 0.501002004008016 0.9993314707612054 \\ + 0.503006012024048 0.9992758773298005 \\ + 0.5050100200400801 0.9992156790605844 \\ + 0.5070140280561122 0.9991504976721364 \\ + 0.5090180360721442 0.9990799243485624 \\ + 0.5110220440881763 0.9990035173678153 \\ + 0.5130260521042084 0.9989207995618441 \\ + 0.5150300601202404 0.9988312555994594 \\ + 0.5170340681362725 0.9987343290828286 \\ + 0.5190380761523046 0.9986294194486641 \\ + 0.5210420841683366 0.998515878665468 \\ + 0.5230460921843687 0.9983930077186733 \\ + 0.5250501002004008 0.9982600528762142 \\ + 0.5270541082164328 0.9981162017280041 \\ + 0.5290581162324649 0.9979605789940426 \\ + 0.531062124248497 0.9977922420974695 \\ + 0.533066132264529 0.9976101765008748 \\ + 0.5350701402805611 0.9974132908066395 \\ + 0.5370741482965932 0.9972004116250747 \\ + 0.5390781563126252 0.996970278217719 \\ + 0.5410821643286573 0.9967215369274324 \\ + 0.5430861723446894 0.9964527354119478 \\ + 0.5450901803607214 0.9961623167034146 \\ + 0.5470941883767535 0.9958486131232401 \\ + 0.5490981963927856 0.9955098400893051 \\ + 0.5511022044088176 0.9951440898614492 \\ + 0.5531062124248497 0.9947493252810405 \\ + 0.5551102204408818 0.9943233735715047 \\ + 0.5571142284569138 0.9938639202788789 \\ + 0.5591182364729459 0.9933685034447535 \\ + 0.561122244488978 0.9928345081182763 \\ + 0.56312625250501 0.9922591613290888 \\ + 0.5651302605210421 0.9916395276589064 \\ + 0.5671342685370742 0.9909725055656766 \\ + 0.5691382765531062 0.9902548246304038 \\ + 0.5711422845691383 0.9894830439123449 \\ + 0.5731462925851704 0.988653551612696 \\ + 0.5751503006012024 0.9877625662593388 \\ + 0.5771543086172345 0.9868061396348167 \\ + 0.5791583166332666 0.9857801616754216 \\ + 0.5811623246492986 0.9846803675699871 \\ + 0.5831663326653307 0.9835023472814779 \\ + 0.5851703406813628 0.9822415577015162 \\ + 0.5871743486973948 0.9808933376263822 \\ + 0.5891783567134269 0.9794529257116517 \\ + 0.591182364729459 0.9779154815206206 \\ + 0.593186372745491 0.9762761097283849 \\ + 0.5951903807615231 0.9745298874787702 \\ + 0.5971943887775552 0.9726718948156022 \\ + 0.5991983967935872 0.9706972480241295 \\ + 0.6012024048096193 0.9686011356245516 \\ + 0.6032064128256514 0.9663788566601441 \\ + 0.6052104208416834 0.9640258608208169 \\ + 0.6072144288577155 0.9615377898432133 \\ + 0.6092184368737475 0.9589105195353864 \\ + 0.6112224448897795 0.9561402016928051 \\ + 0.6132264529058116 0.9532233051081527 \\ + 0.6152304609218436 0.950156654835061 \\ + 0.6172344689378757 0.9469374688498928 \\ + 0.6192384769539078 0.9435633912692598 \\ + 0.6212424849699398 0.9400325213260304 \\ + 0.6232464929859719 0.9363434373834191 \\ + 0.625250501002004 0.9324952153737136 \\ + 0.627254509018036 0.9284874411818684 \\ + 0.6292585170340681 0.9243202166493123 \\ + 0.6312625250501002 0.9199941590432499 \\ + 0.6332665330661322 0.9155103940137355 \\ + 0.6352705410821643 0.9108705422365904 \\ + 0.6372745490981964 0.9060767001065669 \\ + 0.6392785571142284 0.9011314149942207 \\ + 0.6412825651302605 0.8960376557048755 \\ + 0.6432865731462926 0.8907987788730638 \\ + 0.6452905811623246 0.8854184920861172 \\ + 0.6472945891783567 0.8799008145519959 \\ + 0.6492985971943888 0.8742500361041871 \\ + 0.6513026052104208 0.8684706752634461 \\ + 0.6533066132264529 0.8625674369392715 \\ + 0.655310621242485 0.856545170129053 \\ + 0.657314629258517 0.8504088256148399 \\ + 0.6593186372745491 0.8441634130854939 \\ + 0.6613226452905812 0.8378139561820216 \\ + 0.6633266533066132 0.831365442426389 \\ + 0.6653306613226453 0.824822762420272 \\ + 0.6673346693386774 0.8181906283620364 \\ + 0.6693386773547094 0.8114734546053304 \\ + 0.6713426853707415 0.8046751706433245 \\ + 0.6733466933867736 0.7977989162373298 \\ + 0.6753507014028056 0.7908465341279126 \\ + 0.6773547094188377 0.7838177197155416 \\ + 0.6793587174348698 0.7767085974805796 \\ + 0.6813627254509018 0.7695093558792458 \\ + 0.6833667334669339 0.7622003741307786 \\ + 0.685370741482966 0.7547460304420233 \\ + 0.687374749498998 0.7470852080429786 \\ + 0.6893787575150301 0.7391178411316053 \\ + 0.6913827655310621 0.7306889243909616 \\ + 0.6933867735470942 0.721578301281462 \\ + 0.6953907815631263 0.711521561600192 \\ + 0.6973947895791583 0.7003156497508735 \\ + 0.6993987975951904 0.6880685735921512 \\ + 0.7014028056112225 0.6755234980583985 \\ + 0.7034068136272545 0.6640776608734429 \\ + 0.7054108216432866 0.6551245237235697 \\ + 0.7074148296593187 0.6492002348268464 \\ + 0.7094188376753507 0.6458657611103056 \\ + 0.7114228456913828 0.6442655190580175 \\ + 0.7134268537074149 0.6436308670667082 \\ + 0.7154308617234469 0.643446272109572 \\ + 0.717434869739479 0.64342485264604 \\ + 0.7194388777555111 0.6434388870857466 \\ + 0.7214428857715431 0.6434495293934724 \\ + 0.7234468937875751 0.6434528529028823 \\ + 0.7254509018036072 0.6434523588445773 \\ + 0.7274549098196392 0.6434507492075339 \\ + 0.7294589178356713 0.6434491907128141 \\ + 0.7314629258517034 0.6434480064225732 \\ + 0.7334669338677354 0.6434471948936554 \\ + 0.7354709418837675 0.6434466682755972 \\ + 0.7374749498997996 0.6434463373774428 \\ + 0.7394789579158316 0.6434461337338258 \\ + 0.7414829659318637 0.6434460101978247 \\ + 0.7434869739478958 0.6434459360488323 \\ + 0.7454909819639278 0.6434458919081008 \\ + 0.7474949899799599 0.6434458658054527 \\ + 0.749498997995992 0.6434458504549081 \\ + 0.751503006012024 0.6434458414700046 \\ + 0.7535070140280561 0.6434458362324715 \\ + 0.7555110220440882 0.6434458331903208 \\ + 0.7575150300601202 0.6434458314289464 \\ + 0.7595190380761523 0.6434458304120283 \\ + 0.7615230460921844 0.6434458298264201 \\ + 0.7635270541082164 0.6434458294899698 \\ + 0.7655310621242485 0.6434458292970762 \\ + 0.7675350701402806 0.6434458291866998 \\ + 0.7695390781563126 0.6434458291236526 \\ + 0.7715430861723447 0.6434458290876984 \\ + 0.7735470941883767 0.6434458290672256 \\ + 0.7755511022044088 0.6434458290555842 \\ + 0.7775551102204409 0.6434458290489734 \\ + 0.779559118236473 0.6434458290452238 \\ + 0.781563126252505 0.6434458290430993 \\ + 0.7835671342685371 0.643445829041897 \\ + 0.7855711422845691 0.6434458290412173 \\ + 0.7875751503006012 0.6434458290408333 \\ + 0.7895791583166333 0.6434458290406164 \\ + 0.7915831663326653 0.6434458290404943 \\ + 0.7935871743486974 0.6434458290404255 \\ + 0.7955911823647295 0.6434458290403866 \\ + 0.7975951903807615 0.6434458290403647 \\ + 0.7995991983967936 0.6434458290403525 \\ + 0.8016032064128257 0.6434458290403458 \\ + 0.8036072144288577 0.6434458290403418 \\ + 0.8056112224448898 0.6434458290403396 \\ + 0.8076152304609219 0.6434458290403384 \\ + 0.8096192384769539 0.6434458290403378 \\ + 0.811623246492986 0.6434458290403373 \\ + 0.8136272545090181 0.6434458290403371 \\ + 0.8156312625250501 0.6434458290403369 \\ + 0.8176352705410822 0.6434458290403369 \\ + 0.8196392785571143 0.6434458290403369 \\ + 0.8216432865731463 0.6434458290403368 \\ + 0.8236472945891784 0.6434458290403369 \\ + 0.8256513026052105 0.6434458290403369 \\ + 0.8276553106212425 0.6434458290403369 \\ + 0.8296593186372746 0.6434458290403369 \\ + 0.8316633266533067 0.6434458290403369 \\ + 0.8336673346693386 0.6434458290403369 \\ + 0.8356713426853707 0.6434458290403369 \\ + 0.8376753507014028 0.6434458290403369 \\ + 0.8396793587174348 0.6434458290403369 \\ + 0.8416833667334669 0.6434458290403369 \\ + 0.843687374749499 0.6434458290403369 \\ + 0.845691382765531 0.6434458290403369 \\ + 0.8476953907815631 0.6434458290403369 \\ + 0.8496993987975952 0.6434458290403369 \\ + 0.8517034068136272 0.6434458290403369 \\ + 0.8537074148296593 0.6434458290403369 \\ + 0.8557114228456913 0.6434458290403369 \\ + 0.8577154308617234 0.6434458290403369 \\ + 0.8597194388777555 0.6434458290403369 \\ + 0.8617234468937875 0.6434458290403369 \\ + 0.8637274549098196 0.6434458290403369 \\ + 0.8657314629258517 0.6434458290403369 \\ + 0.8677354709418837 0.6434458290403369 \\ + 0.8697394789579158 0.6434458290403369 \\ + 0.8717434869739479 0.6434458290403369 \\ + 0.87374749498998 0.6434458290403369 \\ + 0.875751503006012 0.6434458290403369 \\ + 0.8777555110220441 0.6434458290403369 \\ + 0.8797595190380761 0.6434458290403369 \\ + 0.8817635270541082 0.6434458290403369 \\ + 0.8837675350701403 0.6434458290403369 \\ + 0.8857715430861723 0.6434458290403369 \\ + 0.8877755511022044 0.6434458290403369 \\ + 0.8897795591182365 0.6434458290403369 \\ + 0.8917835671342685 0.6434458290403369 \\ + 0.8937875751503006 0.6434458290403369 \\ + 0.8957915831663327 0.6434458290403369 \\ + 0.8977955911823647 0.6434458290403369 \\ + 0.8997995991983968 0.6434458290403369 \\ + 0.9018036072144289 0.6434458290403369 \\ + 0.9038076152304609 0.6434458290403369 \\ + 0.905811623246493 0.6434458290403369 \\ + 0.9078156312625251 0.6434458290403369 \\ + 0.9098196392785571 0.6434458290403369 \\ + 0.9118236472945892 0.6434458290403369 \\ + 0.9138276553106213 0.6434458290403369 \\ + 0.9158316633266533 0.6434458290403369 \\ + 0.9178356713426854 0.6434458290403369 \\ + 0.9198396793587175 0.6434458290403369 \\ + 0.9218436873747495 0.6434458290403369 \\ + 0.9238476953907816 0.6434458290403369 \\ + 0.9258517034068137 0.6434458290403369 \\ + 0.9278557114228457 0.6434458290403369 \\ + 0.9298597194388778 0.6434458290403369 \\ + 0.9318637274549099 0.6434458290403369 \\ + 0.9338677354709419 0.6434458290403369 \\ + 0.935871743486974 0.6434458290403369 \\ + 0.9378757515030061 0.6434458290403369 \\ + 0.9398797595190381 0.6434458290403369 \\ + 0.9418837675350702 0.6434458290403369 \\ + 0.9438877755511023 0.6434458290403369 \\ + 0.9458917835671342 0.6434458290403369 \\ + 0.9478957915831663 0.6434458290403369 \\ + 0.9498997995991983 0.6434458290403369 \\ + 0.9519038076152304 0.6434458290403369 \\ + 0.9539078156312625 0.6434458290403369 \\ + 0.9559118236472945 0.6434458290403369 \\ + 0.9579158316633266 0.6434458290403369 \\ + 0.9599198396793587 0.6434458290403369 \\ + 0.9619238476953907 0.6434458290403369 \\ + 0.9639278557114228 0.6434458290403369 \\ + 0.9659318637274549 0.6434458290403369 \\ + 0.9679358717434869 0.6434458290403369 \\ + 0.969939879759519 0.6434458290403369 \\ + 0.9719438877755511 0.6434458290403369 \\ + 0.9739478957915831 0.6434458290403369 \\ + 0.9759519038076152 0.6434458290403369 \\ + 0.9779559118236473 0.6434458290403369 \\ + 0.9799599198396793 0.6434458290403369 \\ + 0.9819639278557114 0.6434458290403369 \\ + 0.9839679358717435 0.6434458290403369 \\ + 0.9859719438877755 0.6434458290403369 \\ + 0.9879759519038076 0.6434458290403369 \\ + 0.9899799599198397 0.6434458290403369 \\ + 0.9919839679358717 0.6434458290403369 \\ + 0.9939879759519038 0.6434458290403369 \\ + 0.9959919839679359 0.6434458290403369 \\ + 0.9979959919839679 0.6434458290403369 \\ + 1.0 0.6434458290403369 \\ + } + ; + \node[right, , color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:0.05,0.95) {Nominal}; + \node[right, , color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:0.05,0.9) {Smoothed}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/constant_vortex_panel.jl b/v0.5.0/DuctAPE/theory_latex/figures/constant_vortex_panel.jl new file mode 100644 index 00000000..631d9ace --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/constant_vortex_panel.jl @@ -0,0 +1,42 @@ +using DuctTAPE +const dt = DuctTAPE +include("../../plots_default_new.jl") + +x = [0.0; 1.0] +y = [0.25; 0.0] +xy = [x y] +panel = dt.generate_panels(xy) + +annoteoffset = 0.05 + +p = plot(aspectratio=1, axis=false) + +plot!(panel.nodes[1,:,1],panel.nodes[1,:,2], marker=true, arrow=9,markersize=4, color=byublue[1], label="") +plot!([panel.nodes[1,2,1]], [panel.nodes[1,2,2]], seriestype=:scatter, label="", color=byublue[1], markersize=4) +annotate!(panel.nodes[1,1,1], annoteoffset+panel.nodes[1,1,2], text(L"p_1", 12, :center, color=byublue[1])) +annotate!(panel.nodes[1,2,1], annoteoffset+panel.nodes[1,2,2], text(L"p_2", 12, :center, color=byublue[1])) + +normal_scale=0.25 +normal_x = panel.controlpoint[1,1].+[0.0; normal_scale*panel.normal[1,1]] +normal_y = panel.controlpoint[1,2].+[0.0; normal_scale*panel.normal[1,2]] + +plot!(normal_x, normal_y, arrow=7, color=byured[1], label="") +annotate!(normal_x[2]+annoteoffset, normal_y[2]-annoteoffset, text(L"\hat{n}", 12, :center, color=byured[1])) + +plot!([panel.controlpoint[1,1]], [panel.controlpoint[1,2]], seriestype=:scatter, markersize=5, markershape=:rect, color=byured[3], label="") +annotate!(normal_x[1], normal_y[1]-annoteoffset, text(L"\overline{p}", 12, :center, color=byured[3])) + + +function makecircle(R,h,v,n; start=pi/2, stop=5*pi/2) + t = range(start,stop,n) + x = R*cos.(t) .+ h + y = R*sin.(t) .+ v + return x,y +end + +x,y = makecircle(0.1,panel.controlpoint[1,1], panel.controlpoint[1,2],120, start=5*pi/6, stop=11*pi/5) +plot!(x[1:end-2],y[1:end-2],linecolor=byublue[2],arrow=7, color=byublue[2], label="") +annotate!(panel.controlpoint[1,1], -2.5*annoteoffset+panel.controlpoint[1,2], text(L"\gamma", 12, :left, color=byublue[2])) + +savefig(p,"constant_vortex_panel.tikz") +# savefig(p,"margin_doublet_panel.pdf") diff --git a/v0.5.0/DuctAPE/theory_latex/figures/constant_vortex_panel.pdf b/v0.5.0/DuctAPE/theory_latex/figures/constant_vortex_panel.pdf new file mode 100644 index 00000000..314f80f3 Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/constant_vortex_panel.pdf differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/constant_vortex_panel.tikz b/v0.5.0/DuctAPE/theory_latex/figures/constant_vortex_panel.tikz new file mode 100644 index 00000000..5186dc3b --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/constant_vortex_panel.tikz @@ -0,0 +1,203 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={5.0mm}, yshift={-5.0mm}, width={112.0mm}, height={85.25mm}, scaled x ticks={false}, xlabel={}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.030000000000000027}, xmax={1.03}, xticklabels={{}}, xtick={{0.0,0.25,0.5,0.75,1.0}}, xtick style={draw=none}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, separate axis lines, x axis line style={{draw opacity = 0}}, scaled y ticks={false}, ylabel={}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, ymajorgrids={false}, ymin={-0.23002317108839082}, ymax={0.5975587961247238}, yticklabels={{}}, ytick={{-0.2,0.0,0.2,0.4}}, ytick style={draw=none}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={{draw opacity = 0}}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, name path={67d7ba48-7f21-4a51-aab3-8733bb90eb43}, draw opacity={1.0}, line width={1.0}, solid, mark={*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.1804;blue,0.3647}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, quiver={u={\thisrow{u}}, v={\thisrow{v}}, every arrow/.append style={-{Stealth[length = 9.0pt, width = 9.0pt]}}}, forget plot] + table[row sep={\\}] + { + x y u v \\ + 0.0 0.25 1.0 -0.25 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, name path={67d7ba48-7f21-4a51-aab3-8733bb90eb43}, forget plot, draw opacity={1.0}, line width={1.0}, solid, mark={*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.1804;blue,0.3647}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}] + table[row sep={\\}] + { + \\ + 0.0 0.25 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, name path={fe12a9c0-4166-45a3-bc20-07a8170c3b2b}, only marks, draw opacity={1.0}, line width={0}, solid, mark={*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.1804;blue,0.3647}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 1.0 0.0 \\ + } + ; + \addplot[color={rgb,1:red,0.6078;green,0.0;blue,0.0}, name path={ff4174f8-569c-4d9c-bcd0-a7ac1c821557}, draw opacity={1.0}, line width={1.0}, solid, quiver={u={\thisrow{u}}, v={\thisrow{v}}, every arrow/.append style={-{Stealth[length = 7.0pt, width = 7.0pt]}}}, forget plot] + table[row sep={\\}] + { + x y u v \\ + 0.5 0.125 0.06063390625908327 0.24253562503633297 \\ + } + ; + \addplot[color={rgb,1:red,0.6078;green,0.0;blue,0.0}, name path={ff4174f8-569c-4d9c-bcd0-a7ac1c821557}, forget plot, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.5 0.125 \\ + } + ; + \addplot[color={rgb,1:red,0.9804;green,0.2941;blue,0.2941}, name path={2b9c2727-86ac-462d-a877-7a407780cd0a}, only marks, draw opacity={1.0}, line width={0}, solid, mark={square*}, mark size={3.75 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.9804;green,0.2941;blue,0.2941}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 0.5 0.125 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3843;blue,0.7216}, name path={bb5f76ca-f783-450a-84cd-74708ebffa2a}, draw opacity={1.0}, line width={1.0}, solid, quiver={u={\thisrow{u}}, v={\thisrow{v}}, every arrow/.append style={-{Stealth[length = 7.0pt, width = 7.0pt]}}}, forget plot] + table[row sep={\\}] + { + x y u v \\ + 0.5867780030864365 0.17469485064199744 -0.0018490729906284198 0.0030979219010443815 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3843;blue,0.7216}, name path={bb5f76ca-f783-450a-84cd-74708ebffa2a}, forget plot, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.4133974596215561 0.175 \\ + 0.4116502169700881 0.17184352504420958 \\ + 0.41001797208395446 0.16862607766137136 \\ + 0.40850284952427984 0.16535184574246176 \\ + 0.40710682140353127 0.16202509109029392 \\ + 0.40583170481857883 0.1586501438722739 \\ + 0.40467915948552813 0.15523139698417232 \\ + 0.4036506855794017 0.1517733003322468 \\ + 0.40274762178148255 0.14828035504115944 \\ + 0.40197114353686136 0.14475710759522672 \\ + 0.4013222615244543 0.14120814392062872 \\ + 0.40080182034148437 0.13763808341628006 \\ + 0.40041049740413714 0.13405157294113193 \\ + 0.4001488020658235 0.13045328076573168 \\ + 0.4000170749541947 0.126847890495913 \\ + 0.4000154875277758 0.12324009497652465 \\ + 0.4001440418527914 0.1196345901831342 \\ + 0.40040257060047607 0.11603606910965666 \\ + 0.40079073726487335 0.11244921565986365 \\ + 0.40130803660083764 0.10887869855072489 \\ + 0.4019537952816713 0.1053291652355172 \\ + 0.4027271727755395 0.10180523585461021 \\ + 0.4036271624395224 0.09831149722180357 \\ + 0.40465259282988086 0.0948524968540426 \\ + 0.40580212922683 0.09143273705228305 \\ + 0.40707427537183616 0.08805666904121043 \\ + 0.408467375415175 0.08472868717544095 \\ + 0.40997961607121797 0.08145312321974532 \\ + 0.41160902897863877 0.07823424071074134 \\ + 0.41335349326247056 0.07507622940739286 \\ + 0.41521073829467703 0.0719831998375397 \\ + 0.4171783466496453 0.06895917794755607 \\ + 0.41925375725075353 0.0660080998621017 \\ + 0.42143426870391676 0.06313380676078695 \\ + 0.4237170428137733 0.06034003987842006 \\ + 0.42609910827793407 0.05763043563534431 \\ + 0.42857736455448636 0.05500852090420395 \\ + 0.43114858589771854 0.05247770841929941 \\ + 0.43380942555681234 0.05004129233450706 \\ + 0.43655642013203755 0.04770244393554557 \\ + 0.4393859940827794 0.045464207512170035 \\ + 0.4422944643815302 0.043329496395666106 \\ + 0.44527804530778886 0.041301089166802224 \\ + 0.44833285337562645 0.039381626039176124 \\ + 0.4514549123885059 0.03757360542266221 \\ + 0.4546401586147755 0.0358793806714334 \\ + 0.45788444607709966 0.03430115702079063 \\ + 0.4611835519489417 0.032840988716786396 \\ + 0.46453318205107624 0.03150077634237865 \\ + 0.4679289764409745 0.030282264343595974 \\ + 0.47136651508778865 0.029187038758933206 \\ + 0.4748413236255491 0.02821652515493335 \\ + 0.4783488791770838 0.027371986770643092 \\ + 0.48188461624108214 0.026654522873356623 \\ + 0.4854439326346387 0.026065067327788294 \\ + 0.48902219548354203 0.02560438738053658 \\ + 0.49261474725251253 0.025273082661421198 \\ + 0.4962169118075394 0.025071584402993424 \\ + 0.49982400050242587 0.025000154879235667 \\ + 0.5034313182816204 0.025058887064180538 \\ + 0.5070341697913912 0.025247704510894184 \\ + 0.510627865491388 0.02556636145098097 \\ + 0.5142077277586375 0.02601444311448038 \\ + 0.5177690969760268 0.02659136626973954 \\ + 0.5213073375973496 0.027296379982558613 \\ + 0.5248178441810223 0.028128566593621118 \\ + 0.5282960473846147 0.029086842912936894 \\ + 0.5317374199123929 0.03016996162974281 \\ + 0.5351374824081343 0.031376512936026266 \\ + 0.5384918092855431 0.03270492636155828 \\ + 0.5417960344886783 0.034153472818047606 \\ + 0.5450458571748948 0.035720266849754906 \\ + 0.5482370473129031 0.03740326908763808 \\ + 0.5513654511886584 0.039200288903834035 \\ + 0.5544269968119142 0.04110898726302155 \\ + 0.5574176992164026 0.04312687976695448 \\ + 0.5603336656467426 0.04525133988820208 \\ + 0.563171100625325 0.04747960238888699 \\ + 0.5659263108925783 0.04980876691997184 \\ + 0.5685957102141858 0.052235801796409145 \\ + 0.571175824048997 0.05475754794324013 \\ + 0.5736632940715569 0.057370723007507146 \\ + 0.5760548825433661 0.06007192563062731 \\ + 0.5783474765271831 0.06285763987566534 \\ + 0.5805380919388832 0.06572423980374442 \\ + 0.5826238774315995 0.06866799419363773 \\ + 0.5846021181070897 0.07168507139839689 \\ + 0.5864702390495006 0.07477154433269698 \\ + 0.5882258086769268 0.07792339558440611 \\ + 0.5898665419064046 0.08113652264372526 \\ + 0.5913903031282197 0.08440674324309369 \\ + 0.5927951089856575 0.0877298008009085 \\ + 0.5940791309565778 0.09110136996197216 \\ + 0.5952406977334548 0.09451706222745754 \\ + 0.5962782973987824 0.0979724316670622 \\ + 0.5971905793930148 0.10146298070591568 \\ + 0.597976356272481 0.1049841659787091 \\ + 0.5986346052549842 0.10853140424342647 \\ + 0.5991644695510743 0.1121000783469796 \\ + 0.5995652594792613 0.11568554323498295 \\ + 0.5998364533637185 0.11928313199784546 \\ + 0.5999776982133054 0.12288816194530872 \\ + 0.5999888101810273 0.12649594070152623 \\ + 0.599869774803335 0.1301017723127498 \\ + 0.5996207470189501 0.13370096335967216 \\ + 0.5992420509671936 0.13728882906647136 \\ + 0.5987341795660809 0.1408606993986045 \\ + 0.5980977938707295 0.1444119251414141 \\ + 0.5973337222129174 0.14793788395163437 \\ + 0.5964429591229102 0.1514339863739215 \\ + 0.5954266640349624 0.15489568181457694 \\ + 0.5942861597781743 0.1583184644646864 \\ + 0.5930229308546741 0.16169787916496708 \\ + 0.5916386215073596 0.16502952720468847 \\ + 0.5901350335797217 0.16830907204711762 \\ + 0.5885141241705304 0.1715322449740385 \\ + 0.5867780030864365 0.17469485064199744 \\ + } + ; + \node[, color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{12 pt}{15.600000000000001 pt}\selectfont}}] at (axis cs:0.0,0.3) {$p_1$}; + \node[, color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{12 pt}{15.600000000000001 pt}\selectfont}}] at (axis cs:1.0,0.05) {$p_2$}; + \node[, color={rgb,1:red,0.6078;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{12 pt}{15.600000000000001 pt}\selectfont}}] at (axis cs:0.6106339062590833,0.317535625036333) {$\hat{n}$}; + \node[, color={rgb,1:red,0.9804;green,0.2941;blue,0.2941}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{12 pt}{15.600000000000001 pt}\selectfont}}] at (axis cs:0.5,0.075) {$\overline{p}$}; + \node[right, , color={rgb,1:red,0.0;green,0.3843;blue,0.7216}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{12 pt}{15.600000000000001 pt}\selectfont}}] at (axis cs:0.5,0.0) {$\gamma$}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/cppseudopanel.jpeg b/v0.5.0/DuctAPE/theory_latex/figures/cppseudopanel.jpeg new file mode 100644 index 00000000..48b2d852 Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/cppseudopanel.jpeg differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/d.dat b/v0.5.0/DuctAPE/theory_latex/figures/d.dat new file mode 100644 index 00000000..9498f2e3 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/d.dat @@ -0,0 +1,120 @@ +duct +1.0 -0.0566332787625623 +0.9992913478383809 -0.05628750064952681 +0.9971674001050685 -0.055253051213113746 +0.9936341773606723 -0.053538570546722064 +0.9887016949089333 -0.051158409819140105 +0.9823839344072579 -0.04813255685892548 +0.9746988042341906 -0.04448652909543771 +0.9656680887261693 -0.04025023191567123 +0.9553173864274564 -0.03545828956181252 +0.9436760375282858 -0.03015007018056859 +0.9307770406969029 -0.024366217703392423 +0.9166569595412575 -0.018153765890086215 +0.9013558189654819 -0.011559255106533106 +0.8849169917149531 -0.004633525092501034 +0.8673870754315336 0.002571907018455999 +0.8488157605674923 0.010004875200197438 +0.8292556895325193 0.01761195194195808 +0.8087623074730959 0.025339342950817523 +0.7873937051072034 0.033133984634669766 +0.7652104540598712 0.04094328117538981 +0.742275435166325 0.04871549673447362 +0.7186536602294277 0.056400099589828945 +0.6944120877366603 0.06394803964418783 +0.6696194330590152 0.07131197598569616 +0.6443459736698104 0.07844646743953443 +0.6186633499355574 0.08530813609850929 +0.5926443620435572 0.09185581150469824 +0.5663627636418609 0.09805066134969342 +0.5398930527765415 0.10385629794986506 +0.5133102607188873 0.10923845684825884 +0.4866897392811126 0.11416539398728054 +0.46010694722345846 0.11860812071632942 +0.4336372363581389 0.12254040758983964 +0.40735563795644286 0.12593828435812915 +0.3813366500644426 0.12877901495145072 +0.3556540263301894 0.13104393640296774 +0.33038056694098483 0.13271746337229184 +0.30558791226333964 0.13378350931939853 +0.2813463397705723 0.13422967569458377 +0.2577245648336749 0.13404841286835234 +0.23478954594012874 0.13322995678988492 +0.2126062948927966 0.1317677515696859 +0.19123769252690404 0.12966232073226047 +0.17074431046748068 0.126907723013426 +0.15118423943250764 0.12350456405994725 +0.13261292456846635 0.11946083057270396 +0.11508300828504686 0.11477132776716115 +0.09864418103451816 0.10944662194564536 +0.08334304045874252 0.10349921352922187 +0.06922295930309696 0.09692310440903584 +0.05632396247171423 0.0897434487846347 +0.044682613572543384 0.08196880447965815 +0.034331911273830784 0.07359435486009891 +0.02530119576580936 0.06467017048420953 +0.017616065592742036 0.05517793563216966 +0.011298305091066663 0.04511663930047072 +0.006365822639327723 0.03461142502428938 +0.0028325998949314535 0.023460899753496967 +0.0007086521616190278 0.01191786383465121 +0.0 0.0 +0.0007086521616190278 -0.005687650878847927 +0.0028325998949314535 -0.011251995418347871 +0.006365822639327723 -0.01651155877167687 +0.011298305091066663 -0.021538853957872806 +0.017616065592742036 -0.026321385623040205 +0.02530119576580936 -0.030855189152090734 +0.034331911273830784 -0.03514650913460282 +0.044682613572543384 -0.03919157980643917 +0.05632396247171423 -0.04299093984253133 +0.06922295930309696 -0.04654817554755619 +0.08334304045874252 -0.049863886760109666 +0.09864418103451816 -0.05294017326429967 +0.11508300828504686 -0.05578125379063159 +0.13261292456846635 -0.05839064192625254 +0.15118423943250764 -0.06077229131677453 +0.17074431046748068 -0.06293090978885751 +0.19123769252690404 -0.06487192007365183 +0.2126062948927966 -0.06660127976555419 +0.23478954594012874 -0.06812512506861257 +0.2577245648336749 -0.06945006893527217 +0.2813463397705723 -0.07058315705122997 +0.30558791226333964 -0.07153182240933553 +0.33038056694098483 -0.07230384854306926 +0.3556540263301894 -0.07290733895954793 +0.3813366500644426 -0.07335069106831615 +0.40735563795644286 -0.07364257339823754 +0.4336372363581389 -0.07379242556793486 +0.46010694722345846 -0.07381668841027633 +0.4866897392811126 -0.07381668841027633 +0.5133102607188873 -0.07381668841027633 +0.5398930527765415 -0.07381668841027633 +0.5663627636418609 -0.07381668841027633 +0.5926443620435572 -0.07381668841027633 +0.6186633499355574 -0.07381668841027633 +0.6443459736698104 -0.07381668841027633 +0.6696194330590152 -0.07376269432825955 +0.6944120877366603 -0.07354000976969366 +0.7186536602294277 -0.07315553742775704 +0.742275435166325 -0.0726223003344908 +0.7652104540598712 -0.07195478549701817 +0.7873937051072034 -0.07116875581507731 +0.8087623074730959 -0.0702810482381575 +0.8292556895325193 -0.06930936051508174 +0.8488157605674923 -0.06827202901597307 +0.8673870754315336 -0.06718780020535864 +0.8849169917149531 -0.06607559841457777 +0.9013558189654819 -0.06495429260092 +0.9166569595412575 -0.06384246478955069 +0.9307770406969029 -0.06275818287223012 +0.9436760375282858 -0.06171878038432743 +0.9553173864274564 -0.060740645799301385 +0.9656680887261693 -0.059839023768588295 +0.9746988042341906 -0.05902783059597916 +0.9823839344072579 -0.05831948607068238 +0.9887016949089333 -0.05772476359419898 +0.9936341773606723 -0.057252660325079585 +0.9971674001050685 -0.056910288834948974 +0.9992913478383809 -0.056702791521528906 +1.0 -0.0566332787625623 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/ddim.dat b/v0.5.0/DuctAPE/theory_latex/figures/ddim.dat new file mode 100644 index 00000000..0ee6f117 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/ddim.dat @@ -0,0 +1,119 @@ +4.0 2.068733638590856 +3.9971653913535237 2.070116751042998 +3.988669600420274 2.0742545487886503 +3.974536709442689 2.081112471454217 +3.9548067796357333 2.090633114364545 +3.9295357376290316 2.1027365262054034 +3.8987952169367626 2.1173206372593545 +3.862672354904677 2.1342658259784204 +3.821269545709826 2.1534335953938553 +3.774704150113143 2.174666472918831 +3.7231081627876117 2.1978018828275356 +3.66662783816503 2.2226516900807605 +3.6054232758619276 2.249029733214973 +3.5396679668598123 2.276732653271101 +3.4695483017261344 2.3055543817149293 +3.3952630422699692 2.335286254441895 +3.317022758130077 2.3657145614089377 +3.2350492298923834 2.3966241254443754 +3.1495748204288136 2.4278026921797844 +3.060841816239485 2.4590398783426646 +2.9691017406653 2.490128740579 +2.8746146409177107 2.520867152000421 +2.777648350946641 2.5510589122178566 +2.6784777322360607 2.58051465758389 +2.5773838946792416 2.609052623399243 +2.4746533997422295 2.6364992980351425 +2.3705774481742288 2.6626899996598983 +2.2654510545674436 2.687469399039879 +2.159572211106166 2.7106919454405656 +2.053241042875549 2.7322205810341407 +1.9467589571244504 2.7519283295902275 +1.8404277888938338 2.769699236506423 +1.7345489454325556 2.785428384000464 +1.6294225518257714 2.799019891073622 +1.5253466002577705 2.810382813446908 +1.4226161053207576 2.8194424992529763 +1.3215222677639393 2.8261366071302727 +1.2223516490533586 2.8304007909186994 +1.125385359082289 2.8321854564194404 +1.0308982593346996 2.8314604051145147 +0.939158183760515 2.828186580800645 +0.8504251795711864 2.822337759919849 +0.7649507701076161 2.813916036570147 +0.6829772418699227 2.8028976456948094 +0.6047369577300306 2.7892850098808943 +0.5304516982738654 2.773110075931921 +0.46033203314018745 2.75435206470975 +0.39457672413807265 2.7330532414236868 +0.3333721618349701 2.709263607757993 +0.27689183721238786 2.6829591712772487 +0.2252958498868569 2.654240548779644 +0.17873045429017353 2.623141971559738 +0.13732764509532314 2.589644173081501 +0.10120478306323744 2.5539474355779435 +0.07046426237096814 2.515978496169784 +0.04519322036426665 2.475733310842988 +0.02546329055731089 2.433712453738263 +0.011330399579725814 2.389110352655093 +0.002834608646476111 2.34293820897971 +0.0 2.2952667536411053 +0.002834608646476111 2.2725161501257136 +0.011330399579725814 2.250258771967714 +0.02546329055731089 2.229220518554398 +0.04519322036426665 2.209111337809614 +0.07046426237096814 2.1899812111489445 +0.10120478306323744 2.1718459970327424 +0.13732764509532314 2.154680717102694 +0.17873045429017353 2.1385004344153486 +0.2252958498868569 2.12330299427098 +0.27689183721238786 2.1090740514508806 +0.3333721618349701 2.0958112066006667 +0.39457672413807265 2.0835060605839066 +0.46033203314018745 2.072141738478579 +0.5304516982738654 2.061704185936095 +0.6047369577300306 2.052177588374007 +0.6829772418699227 2.0435431144856753 +0.7649507701076161 2.035779073346498 +0.8504251795711864 2.0288616345788886 +0.939158183760515 2.022766253366655 +1.0308982593346996 2.0174664779000167 +1.125385359082289 2.0129341254361854 +1.2223516490533586 2.009139464003763 +1.3215222677639393 2.0060513594688283 +1.4226161053207576 2.0036373978029136 +1.5253466002577705 2.0018639893678407 +1.6294225518257714 2.000696460048155 +1.7345489454325556 2.000097051369366 +1.8404277888938338 2.0 +1.9467589571244504 2.0 +2.053241042875549 2.0 +2.159572211106166 2.0 +2.2654510545674436 2.0 +2.3705774481742288 2.0 +2.4746533997422295 2.0 +2.5773838946792416 2.0 +2.6784777322360607 2.000215976328067 +2.777648350946641 2.0011067145623307 +2.8746146409177107 2.002644603930077 +2.9691017406653 2.004777552303142 +3.060841816239485 2.0074476116530326 +3.1495748204288136 2.010591730380796 +3.2350492298923834 2.0141425606884753 +3.317022758130077 2.0180293115807784 +3.3952630422699692 2.022178637577213 +3.4695483017261344 2.0265155528196708 +3.5396679668598123 2.0309643599827942 +3.6054232758619276 2.0354495832374253 +3.66662783816503 2.0398968944829026 +3.7231081627876117 2.044234022152185 +3.774704150113143 2.0483916321037956 +3.821269545709826 2.0523041704439 +3.862672354904677 2.055910658566752 +3.8987952169367626 2.0591554312571887 +3.9295357376290316 2.061988809358376 +3.9548067796357333 2.0643676992643094 +3.974536709442689 2.066256112340787 +3.988669600420274 2.0676255983013094 +3.9971653913535237 2.0684555875549897 +4.0 2.068733638590856 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/dfdc_flowchart.tikz b/v0.5.0/DuctAPE/theory_latex/figures/dfdc_flowchart.tikz new file mode 100644 index 00000000..40ed1137 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/dfdc_flowchart.tikz @@ -0,0 +1,51 @@ +\begin{tikzpicture}[block/.style={rectangle, rounded corners, fill=primary, text=white, minimum width=3cm, minimum height=1cm,align=center}, node distance = 5mm and 5mm] + + \matrix (chart) + [ + row sep = 8mm, + column sep = 5mm, + ] + { + \node [draw, rounded corners] (solve) {$\begin{array}{c}\text{States:}\\\Gamma, \gamma^W, \sigma^R\end{array}$}; & + \node [block] (body) {$\begin{array}{c}\text{Calculate }\gamma^B \\ \text{\cref{eqn:neumann2}}\end{array}$}; & \\ + % + \node [block] (Gamr) {$\begin{array}{c}\text{Estimate }\Gamma\\ \text{\cref{eqn:bladeelementcirculationrotor}}\end{array}$}; & + \node [block] (est_vz) {$\begin{array}{c}\text{Calculate }v_z^R,~v_r^R,~v_\theta^R\\ \text{\cref{eqn:vzvr} and \cref{eqn:vthetaself}}\end{array}$}; & + \node [block] (est_cm) {$\begin{array}{c}\text{Calculate }C_m^W \\ \text{\cref{eqn:vzvr} and \cref{eqn:vmwm}}\end{array}$}; & \\ + % + % \node [block, fill=tertiary] (rGamr) {$\begin{array}{c}\text{Update }\Gamma\\ \text{\cref{eqn:updatecirculation}}\end{array}$}; & + \node [block, fill=tertiary] (rGamr) {$\begin{array}{c}\text{Update }\Gamma\end{array}$}; & + \node [block] (gamw) {$\begin{array}{c}\text{Estimate }\gamma^W \\ \text{\cref{eqn:gamma_theta_general}}\end{array}$}; & + % \node [block, fill=tertiary] (rgamw) {$\begin{array}{c}\text{Update }\gamma^W \\ \text{\cref{eqn:updategammatheta}}\end{array}$}; \\ + \node [block, fill=tertiary] (rgamw) {$\begin{array}{c}\text{Update }\gamma^W\end{array}$}; \\ + % + % \node [block, fill=secondary] (conv) {$\begin{array}{c}\text{Converged?}\\ \text{\cref{eqn:convergencecritabs}}\end{array}$}; & + \node [block, fill=secondary] (conv) {$\begin{array}{c}\text{Converged?}\end{array}$}; & + \node [block, fill=tertiary] (sigr) {$\begin{array}{c}\text{Estimate/Update }\sigma^R \\ \text{\cref{eqn:rotorsourcestrengths}}\end{array}$};& + \node [block] (est_vz2) {$\text{Re-calculate }v_z^R,~v_\theta^R$}; \\ + % + % + \node [draw, rounded corners] (return) {$\begin{array}{c}\text{Post Process}\\\Gamma, \gamma^W, \sigma^R\end{array}$}; & & \\ + }; + + \draw[-Stealth] (solve) -- (body); + \draw[-Stealth] (solve) -- +(0,-10mm) -| (est_vz); + \draw[-Stealth] (body) -- (est_vz); + \draw[-Stealth] (body.east) -- +(45mm,0) |- (est_vz2.east); + \draw[-Stealth] (est_vz) -- (est_cm); + \draw[-Stealth] (est_cm) -- +(0,-10mm) -| (gamw); + \draw[-Stealth] (est_vz) -- (Gamr); + \draw[-Stealth] (Gamr) -- (rGamr); + \draw[-Stealth] (rGamr) -- (gamw); + \draw[-Stealth] (gamw) -- (rgamw); + \draw[-Stealth] (rgamw) -- +(0,-10mm) -| (est_vz2); + \draw[-Stealth] (rgamw) -- +(0,-10mm) -| (conv); + \draw[-Stealth] (est_vz2) -- (sigr); + \draw[-Stealth] (rGamr) -- +(0,-10mm) -| (est_vz2); + \draw[-Stealth] (rGamr) -- (conv); + \draw[-Stealth] (sigr) -- (conv); + + \draw[-Stealth] (conv.west) -- +(-6mm,0) |- (solve.west) node [pos=0.25, fill=white] {No}; + \draw[-Stealth] (conv) -- (return) node [pos=0.4, fill=white] {Yes}; + +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/dfdc_single_rotor_geometry.tikz b/v0.5.0/DuctAPE/theory_latex/figures/dfdc_single_rotor_geometry.tikz new file mode 100644 index 00000000..0e1fa583 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/dfdc_single_rotor_geometry.tikz @@ -0,0 +1,1657 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, draw opacity={0.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={5.0mm}, yshift={-5.0mm}, width={131.304mm}, height={50.96mm}, scaled x ticks={false}, xlabel={$z~\mathrm{(m)}$}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={true}, xmin={-0.01666598439}, xmax={0.57219879739}, xticklabels={{0.00,0.12,0.31,0.56}}, xtick={{0.0,0.120000012,0.30637899,0.555532813}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$r~\mathrm{(m)}$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={true}, ymin={-0.019809924434880805}, ymax={0.2342324034348808}, yticklabels={{0.00,0.04,0.16,0.18,0.21}}, ytick={{0.0,0.044952523,0.155720815,0.178180113,0.214422479}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={1bab93e0-4c6a-429b-a8d5-f2ffbfb4e7ba}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.119999997 0.044952523 \\ + 0.119999997 0.0560293496 \\ + 0.119999997 0.0671061799 \\ + 0.120000005 0.0781830102 \\ + 0.120000005 0.0892598331 \\ + 0.120000005 0.100336671 \\ + 0.120000005 0.111413494 \\ + 0.120000005 0.122490317 \\ + 0.120000012 0.133567154 \\ + 0.120000012 0.144643977 \\ + 0.120000012 0.155720815 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={0151a7d3-bd93-419e-b221-ca540f2ec3d2}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.126598373 0.0449425951 \\ + 0.126558438 0.0560412109 \\ + 0.126518264 0.0671321899 \\ + 0.126477122 0.0782214478 \\ + 0.12643443 0.0893098935 \\ + 0.126389757 0.100397676 \\ + 0.126343116 0.111484513 \\ + 0.126295686 0.122569807 \\ + 0.126252562 0.133652225 \\ + 0.126234606 0.144728884 \\ + 0.126339316 0.155793041 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={6ce9280b-1758-4eb6-bd6f-5c029a2ff220}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.133326128 0.0449483283 \\ + 0.133245647 0.0560548678 \\ + 0.133164659 0.0671587884 \\ + 0.133081689 0.0782606304 \\ + 0.132995501 0.0893610269 \\ + 0.13290517 0.100460134 \\ + 0.132810473 0.111557484 \\ + 0.132712901 0.122651935 \\ + 0.132618949 0.133741051 \\ + 0.132551491 0.144819811 \\ + 0.132587165 0.155877367 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={e96166cc-5881-4c5c-b416-0199e76a77aa}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.140088946 0.0449485965 \\ + 0.139968172 0.0560677573 \\ + 0.139846593 0.067185156 \\ + 0.139721945 0.078299813 \\ + 0.13959226 0.089412421 \\ + 0.139456004 0.100523241 \\ + 0.139312387 0.111631706 \\ + 0.139162093 0.122736335 \\ + 0.139009237 0.133834034 \\ + 0.138866305 0.14491877 \\ + 0.138760611 0.155978441 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={7c05fabd-2bff-4a40-9acb-df32fa627490}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.146876231 0.0449386574 \\ + 0.146715805 0.0560786538 \\ + 0.146554217 0.0672108829 \\ + 0.146388352 0.0783387199 \\ + 0.146215454 0.0894638523 \\ + 0.146033287 0.100586854 \\ + 0.145840228 0.111707218 \\ + 0.145635501 0.12282332 \\ + 0.14541921 0.133931905 \\ + 0.145191148 0.145026967 \\ + 0.144942939 0.156097993 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={0e326861-6e2f-4257-8b27-9e9a8f0bceca}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.153716758 0.0449272916 \\ + 0.1535175 0.056088496 \\ + 0.153316632 0.0672359988 \\ + 0.153110132 0.078377299 \\ + 0.152894422 0.0895153135 \\ + 0.152666479 0.100651085 \\ + 0.152423769 0.111784257 \\ + 0.152164072 0.122913301 \\ + 0.151883841 0.13403514 \\ + 0.151572704 0.145144433 \\ + 0.15119262 0.156232446 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={4adc8110-dda0-42eb-9bf3-52b14fd4f082}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.160557494 0.0449194387 \\ + 0.160320878 0.0560980961 \\ + 0.160082117 0.0672602504 \\ + 0.159836203 0.0784149542 \\ + 0.159578711 0.0895660743 \\ + 0.159305796 0.100715086 \\ + 0.15901418 0.111861899 \\ + 0.15870063 0.123005226 \\ + 0.15835996 0.134142399 \\ + 0.157978609 0.145269051 \\ + 0.157518655 0.156378597 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={932dc358-2c43-4987-a0fd-01c097706aad}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.167418554 0.0449135117 \\ + 0.16714634 0.0561074205 \\ + 0.166871279 0.0672834814 \\ + 0.166587412 0.0784514323 \\ + 0.166289359 0.0896158293 \\ + 0.165972456 0.100778565 \\ + 0.165632829 0.11193984 \\ + 0.165267035 0.123098657 \\ + 0.164870307 0.134252951 \\ + 0.164431185 0.145399407 \\ + 0.163917422 0.156533509 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={506dd8ac-4587-446c-95cb-02c5feffca68}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.174291193 0.0449075662 \\ + 0.173985556 0.0561159588 \\ + 0.173676267 0.0673052445 \\ + 0.173356295 0.0784861669 \\ + 0.17301926 0.0896639302 \\ + 0.172659665 0.100840792 \\ + 0.172273144 0.112017214 \\ + 0.171856567 0.123192549 \\ + 0.171407461 0.13436529 \\ + 0.170921043 0.145533279 \\ + 0.170381293 0.156694025 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={a9ce3cd8-13d3-4c9d-9a50-21f0ca6492ee}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.18116495 0.0449010506 \\ + 0.180828556 0.0561232083 \\ + 0.180487558 0.0673249513 \\ + 0.18013376 0.0785184652 \\ + 0.179759741 0.0897095799 \\ + 0.179359019 0.100900881 \\ + 0.178926647 0.112093031 \\ + 0.178460047 0.123285651 \\ + 0.177959904 0.134477779 \\ + 0.177430943 0.145668238 \\ + 0.176883996 0.156856567 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={603bf71c-be4f-4c66-bc20-cb9396d52ef4}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.188040003 0.0448941104 \\ + 0.187675938 0.056128744 \\ + 0.187306151 0.067341961 \\ + 0.186921269 0.0785475522 \\ + 0.186512634 0.0897519514 \\ + 0.186072558 0.100957938 \\ + 0.185595259 0.112166278 \\ + 0.185078308 0.123376779 \\ + 0.184525192 0.134588853 \\ + 0.183949143 0.14580211 \\ + 0.1833819 0.15701735 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={cc39fee3-c414-4b3d-ac06-d32043ee1dc3}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.194916084 0.0448871255 \\ + 0.194527879 0.0561321341 \\ + 0.194132686 0.0673554763 \\ + 0.193719909 0.0785724893 \\ + 0.193279505 0.0897900462 \\ + 0.192802265 0.101010941 \\ + 0.192280948 0.112235889 \\ + 0.191712439 0.123464711 \\ + 0.191101521 0.134697065 \\ + 0.190466985 0.145933002 \\ + 0.189850047 0.157173961 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={57f25128-d887-4b93-b1f7-455f121ba2b5}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.201786935 0.0448808186 \\ + 0.201378569 0.0561328046 \\ + 0.200961858 0.0673644841 \\ + 0.200524941 0.0785921291 \\ + 0.20005624 0.0898227021 \\ + 0.199544623 0.101058744 \\ + 0.198980644 0.112300679 \\ + 0.198359087 0.123548187 \\ + 0.197683975 0.134800941 \\ + 0.196976677 0.146059319 \\ + 0.196288183 0.157325283 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={3ddfbee6-d4dc-4eb0-b487-cd9ec6fb6b3d}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.208656073 0.0448750034 \\ + 0.208231941 0.0561298095 \\ + 0.207798049 0.0673677102 \\ + 0.207341343 0.0786051229 \\ + 0.206848547 0.0898486376 \\ + 0.206306234 0.101100162 \\ + 0.205701783 0.112359539 \\ + 0.205026209 0.123626083 \\ + 0.204279929 0.134899318 \\ + 0.203482866 0.146179691 \\ + 0.202688128 0.157469675 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={31fce6ef-06fc-4ebd-8ad6-2e295b877716}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.215509951 0.0448674187 \\ + 0.215074837 0.0561216772 \\ + 0.214628607 0.0673634559 \\ + 0.21415709 0.0786097869 \\ + 0.213645324 0.0898663402 \\ + 0.213077247 0.101133838 \\ + 0.212436169 0.112411208 \\ + 0.211707339 0.123697169 \\ + 0.210884154 0.134990916 \\ + 0.209980592 0.146292716 \\ + 0.209050387 0.157605141 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={1f8a9dd5-5eea-425e-97c9-a9c35ce662f0}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.222354814 0.0448568724 \\ + 0.2219138 0.0561067387 \\ + 0.221460417 0.067349568 \\ + 0.220979676 0.078604117 \\ + 0.22045505 0.0898741558 \\ + 0.219867632 0.101158448 \\ + 0.219195962 0.112454593 \\ + 0.218417466 0.123760514 \\ + 0.217514426 0.135074899 \\ + 0.2164886 0.146397591 \\ + 0.215387374 0.15773055 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={b6fbf57c-6dd7-4f40-abae-de14c66ea1c2}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.229183137 0.0448483042 \\ + 0.228741482 0.0560832731 \\ + 0.228286475 0.067323193 \\ + 0.227802634 0.0785856098 \\ + 0.227272227 0.0898701549 \\ + 0.226673692 0.101172529 \\ + 0.225980401 0.112488531 \\ + 0.225160286 0.123815134 \\ + 0.224179819 0.135150447 \\ + 0.223020017 0.146493703 \\ + 0.221715644 0.157846034 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={7b9b882c-b13c-4773-b769-c5270cb8f6e1}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.23595807 0.0448484048 \\ + 0.235521033 0.056048099 \\ + 0.235070005 0.0672804862 \\ + 0.234589562 0.0785513818 \\ + 0.234061286 0.089852348 \\ + 0.233461618 0.101174623 \\ + 0.232759148 0.112511829 \\ + 0.231911585 0.123859957 \\ + 0.230865002 0.135216579 \\ + 0.229566857 0.146580324 \\ + 0.228036374 0.157951623 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={11867be1-ad60-42be-aeb1-b4f24c9405d0}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.242728472 0.0448510461 \\ + 0.242301211 0.055992946 \\ + 0.241859689 0.0672152191 \\ + 0.24138926 0.0784974843 \\ + 0.240871623 0.0898183882 \\ + 0.240282282 0.101163387 \\ + 0.239586458 0.112523735 \\ + 0.238732681 0.123894617 \\ + 0.237644017 0.135273308 \\ + 0.236213505 0.146657839 \\ + 0.234346643 0.158046767 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={a81d7027-0e85-406e-81b3-2eac8b00d157}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.249308959 0.0448360331 \\ + 0.248895854 0.0559058823 \\ + 0.248468667 0.0671219453 \\ + 0.248014197 0.0784218386 \\ + 0.247515231 0.089767538 \\ + 0.246947899 0.101138338 \\ + 0.246276617 0.112523526 \\ + 0.245444879 0.123917893 \\ + 0.244357824 0.13531889 \\ + 0.242850944 0.146724433 \\ + 0.240648702 0.158130884 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={cca1499c-428e-4c26-ab9a-6287642b9e8d}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.255458832 0.0447726212 \\ + 0.255062699 0.0557756722 \\ + 0.254653007 0.0669992864 \\ + 0.254218608 0.0783263519 \\ + 0.253744245 0.0897022411 \\ + 0.25320816 0.101101421 \\ + 0.252577126 0.112512253 \\ + 0.251795858 0.123929895 \\ + 0.250764996 0.135352507 \\ + 0.249291167 0.146778673 \\ + 0.2469531 0.158204004 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={4f5d18fd-aedd-462c-a7b2-f1efea78ffb0}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.26105535 0.0446099378 \\ + 0.260677278 0.0555957817 \\ + 0.26028654 0.0668503419 \\ + 0.259874225 0.0782157704 \\ + 0.259427547 0.0896268114 \\ + 0.25892812 0.101056084 \\ + 0.258347571 0.112492524 \\ + 0.25763768 0.123932414 \\ + 0.256709009 0.135375157 \\ + 0.255382955 0.146820739 \\ + 0.253263652 0.158266708 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={6394e1cc-7950-44e9-a922-30c164f777c0}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.266296536 0.0443151407 \\ + 0.265937179 0.0553589165 \\ + 0.265566319 0.0666736141 \\ + 0.265177429 0.0780902132 \\ + 0.264760494 0.0895420015 \\ + 0.2643013 0.101003513 \\ + 0.26377812 0.112465963 \\ + 0.26315406 0.123927556 \\ + 0.262359738 0.135389298 \\ + 0.261256844 0.14685294 \\ + 0.2595779 0.15831925 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={46618cb7-cb16-4071-ac41-5cfec562456f}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.271419168 0.0438756235 \\ + 0.271079302 0.0550550483 \\ + 0.270729423 0.0664635822 \\ + 0.270365387 0.0779465735 \\ + 0.269980192 0.0894461349 \\ + 0.26956436 0.100943066 \\ + 0.269104183 0.112432793 \\ + 0.268577129 0.123916283 \\ + 0.267940551 0.13539654 \\ + 0.267104477 0.14687711 \\ + 0.265893519 0.158361465 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={c73def6c-38f5-40a8-bce4-583deb2ea7b1}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.276492447 0.043291498 \\ + 0.276172608 0.0546808504 \\ + 0.275844574 0.0662192404 \\ + 0.275506437 0.0777847916 \\ + 0.275154352 0.0893394351 \\ + 0.27478376 0.100875117 \\ + 0.274389625 0.112393506 \\ + 0.273965776 0.123899221 \\ + 0.27350086 0.135397568 \\ + 0.272960097 0.146893889 \\ + 0.272215903 0.158393458 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={7d2e3c57-06bd-44de-a980-4c41ea5e8b53}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.28147167 0.0425630659 \\ + 0.281171709 0.0542436317 \\ + 0.280865729 0.0659467727 \\ + 0.280553728 0.0776092112 \\ + 0.280234754 0.0892248452 \\ + 0.279909104 0.100801654 \\ + 0.279580146 0.11234951 \\ + 0.279258162 0.123877406 \\ + 0.278965652 0.135393143 \\ + 0.278737038 0.146903813 \\ + 0.278544694 0.158416122 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={fde8c377-72e4-41b7-93f6-67dee79cbccd}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.286317348 0.0416866243 \\ + 0.286036581 0.0537559614 \\ + 0.285752267 0.0656553805 \\ + 0.285465807 0.077425532 \\ + 0.28517884 0.0891059116 \\ + 0.284895867 0.100725017 \\ + 0.284627736 0.112302445 \\ + 0.284399152 0.123852089 \\ + 0.284265041 0.135384381 \\ + 0.284342706 0.146907911 \\ + 0.284838438 0.15843077 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={a85e0d2f-bb83-4904-be89-a3d3632c831c}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.291039765 0.0406553857 \\ + 0.290777266 0.0532308333 \\ + 0.290513963 0.0653534904 \\ + 0.29025206 0.0772383511 \\ + 0.289995372 0.0889852345 \\ + 0.289751798 0.100646839 \\ + 0.289537966 0.112253509 \\ + 0.289389431 0.123824343 \\ + 0.289386094 0.135372385 \\ + 0.289723724 0.146907508 \\ + 0.290954471 0.158438653 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={36d86b8c-afed-4f70-bb2a-3a3b15d43a5e}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.295656592 0.0394639932 \\ + 0.295411348 0.0526852831 \\ + 0.295168221 0.0650501922 \\ + 0.294929653 0.0770520791 \\ + 0.294701129 0.0888651237 \\ + 0.294493079 0.100568503 \\ + 0.294325948 0.112203702 \\ + 0.29424122 0.123795047 \\ + 0.29433012 0.13535814 \\ + 0.294827372 0.146903947 \\ + 0.296547413 0.158441409 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={8b99cf19-8691-4c9d-a08f-9df48988547b}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.300156772 0.0381152593 \\ + 0.299927622 0.0521458276 \\ + 0.299703658 0.0647572204 \\ + 0.299486935 0.0768720955 \\ + 0.299284071 0.0887483731 \\ + 0.299107254 0.100491688 \\ + 0.298978776 0.112154178 \\ + 0.298940957 0.123765126 \\ + 0.299079686 0.135342598 \\ + 0.299590915 0.146898493 \\ + 0.30104059 0.158440918 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={6bf8ecb2-a0a4-484e-ac2c-246c41bc3558}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.304466009 0.0366412401 \\ + 0.304251671 0.0516529754 \\ + 0.304045349 0.0644899309 \\ + 0.303848445 0.0767055079 \\ + 0.30366835 0.0886389539 \\ + 0.303518087 0.100418866 \\ + 0.303420186 0.112106599 \\ + 0.303414196 0.123735793 \\ + 0.303569436 0.135326713 \\ + 0.303987443 0.14689216 \\ + 0.304466009 0.158438995 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={617be8f8-9411-433e-89ea-982c0f1e0a8f}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.30637899 0.0359279998 \\ + 0.30617103 0.0514550358 \\ + 0.305972278 0.0643785745 \\ + 0.305783778 0.0766345039 \\ + 0.30561319 0.0885916799 \\ + 0.305473655 0.100387089 \\ + 0.305387467 0.112085633 \\ + 0.305392295 0.123722702 \\ + 0.305549711 0.135319471 \\ + 0.30593279 0.146889165 \\ + 0.30637899 0.158438995 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={f3485236-6e39-4aa1-b6c6-55a98731969e}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.309001654 0.0359279998 \\ + 0.308802336 0.0512223616 \\ + 0.308613658 0.0642347485 \\ + 0.308436275 0.0765405819 \\ + 0.308278024 0.0885283947 \\ + 0.308152199 0.100344203 \\ + 0.308080316 0.112057135 \\ + 0.308097094 0.123704761 \\ + 0.308253765 0.135309398 \\ + 0.308596283 0.146884903 \\ + 0.309001654 0.158438995 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={8a8f89e7-4b30-45d8-8d75-2d33061e6272}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.312035203 0.0359279998 \\ + 0.31184572 0.0510053523 \\ + 0.311668158 0.0640826449 \\ + 0.311503053 0.0764375851 \\ + 0.311358213 0.0884577706 \\ + 0.311246753 0.100295797 \\ + 0.311189145 0.112024672 \\ + 0.311216205 0.123684108 \\ + 0.311368674 0.135297656 \\ + 0.311672181 0.146879822 \\ + 0.312035203 0.158438995 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={cd59a2ec-13ef-4d1a-bce7-3c7be77b041a}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.315543979 0.0359279998 \\ + 0.315365613 0.0508075356 \\ + 0.315200329 0.0639262348 \\ + 0.315048546 0.0763266906 \\ + 0.314918011 0.0883799866 \\ + 0.314821333 0.100241728 \\ + 0.314777434 0.111987993 \\ + 0.31481269 0.123660512 \\ + 0.314957738 0.135284036 \\ + 0.315223992 0.146873832 \\ + 0.315543979 0.158438995 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={bed2755e-abae-481e-9463-25991f0175ca}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.319602489 0.0359279998 \\ + 0.31943658 0.0506314039 \\ + 0.319284648 0.0637700856 \\ + 0.31914717 0.0762099251 \\ + 0.319031596 0.0882957429 \\ + 0.318949819 0.100182116 \\ + 0.318918616 0.111947015 \\ + 0.318959653 0.123633824 \\ + 0.319094419 0.13526842 \\ + 0.319325238 0.146866858 \\ + 0.319602489 0.158438995 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={f3c69f6c-1f5a-4e3b-bba4-8f0d8f3a5a12}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.324296772 0.0359279998 \\ + 0.324144721 0.0504782163 \\ + 0.324007124 0.0636189654 \\ + 0.323884755 0.0760901347 \\ + 0.3237845 0.0882063583 \\ + 0.323717207 0.10011749 \\ + 0.323697239 0.111901879 \\ + 0.323741436 0.123604015 \\ + 0.323863685 0.135250732 \\ + 0.324060977 0.146858841 \\ + 0.324296772 0.158438995 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={2da65b48-469c-4504-a352-cdeebc31602d}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.329726517 0.0359279998 \\ + 0.329589605 0.0503480025 \\ + 0.329467267 0.0634773076 \\ + 0.329360425 0.0759707838 \\ + 0.329275489 0.0881138518 \\ + 0.329221845 0.100048877 \\ + 0.329211265 0.111853063 \\ + 0.329256028 0.123571284 \\ + 0.329364181 0.135231048 \\ + 0.329530001 0.146849811 \\ + 0.329726517 0.158438995 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={d440e7fb-f43d-48ba-bc5e-adf5bfdff466}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.33600688 0.0359279998 \\ + 0.33588624 0.050239712 \\ + 0.335779727 0.0633487701 \\ + 0.335688621 0.0758556724 \\ + 0.335618496 0.0880208537 \\ + 0.33557725 0.0999778882 \\ + 0.335573941 0.11180146 \\ + 0.335616916 0.123536088 \\ + 0.335709989 0.13520956 \\ + 0.335846633 0.146839857 \\ + 0.33600688 0.158438995 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={d3649cfe-492c-43f1-8ef1-ce63841befb1}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.343271166 0.0359279998 \\ + 0.343167543 0.0501515158 \\ + 0.343077153 0.0632358715 \\ + 0.343001515 0.0757484511 \\ + 0.342945307 0.0879304111 \\ + 0.34291479 0.0999066234 \\ + 0.342916548 0.111748412 \\ + 0.342955828 0.123499222 \\ + 0.343033612 0.135186732 \\ + 0.343143642 0.146829158 \\ + 0.343271166 0.158438995 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={5f9cff80-dd24-4a16-abd0-11f1e90ee78d}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.351673514 0.0359279998 \\ + 0.351587176 0.0500811152 \\ + 0.35151279 0.0631398857 \\ + 0.351451844 0.075652197 \\ + 0.351408213 0.0878456458 \\ + 0.351386577 0.0998375863 \\ + 0.351391405 0.111695699 \\ + 0.351425529 0.123461857 \\ + 0.351488471 0.135163233 \\ + 0.351574689 0.146818027 \\ + 0.351673514 0.158438995 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={f61fa9ee-1ca0-487f-98c4-f243d9ef848d}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.36139217 0.0359279998 \\ + 0.36132282 0.0500260592 \\ + 0.361263692 0.0630608946 \\ + 0.361216277 0.0755690634 \\ + 0.361183614 0.0877693817 \\ + 0.361168951 0.0997733697 \\ + 0.36117506 0.111645341 \\ + 0.361203313 0.123425424 \\ + 0.361252427 0.135139957 \\ + 0.361317903 0.146806911 \\ + 0.36139217 0.158438995 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={18bbf5ac-347a-4027-919b-20c900950370}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.372633398 0.0359279998 \\ + 0.372579962 0.0499839634 \\ + 0.372534901 0.0629980415 \\ + 0.372499496 0.0755001307 \\ + 0.372475952 0.0877037272 \\ + 0.372466445 0.0997162983 \\ + 0.372472584 0.111599416 \\ + 0.372494727 0.123391509 \\ + 0.372531503 0.135117978 \\ + 0.372579485 0.146796286 \\ + 0.372633398 0.158438995 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={26451768-3c45-4824-9430-e12120592a3f}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.385635734 0.0359279998 \\ + 0.385596573 0.0499526002 \\ + 0.385563821 0.0629497841 \\ + 0.385538548 0.0754453912 \\ + 0.385522306 0.0876498744 \\ + 0.385516405 0.0996681154 \\ + 0.38552174 0.111559674 \\ + 0.385538161 0.12336158 \\ + 0.385564446 0.135098293 \\ + 0.385598153 0.146786705 \\ + 0.385635734 0.158438995 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={8a9aa7b4-f301-497f-8e90-08ae5650dca2}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.400675058 0.0359279998 \\ + 0.400647938 0.0499299727 \\ + 0.400625437 0.0629141927 \\ + 0.400608331 0.0754039288 \\ + 0.400597632 0.0876079723 \\ + 0.400594175 0.0996296778 \\ + 0.400598288 0.111527286 \\ + 0.400609732 0.123336755 \\ + 0.400627553 0.135081753 \\ + 0.400650084 0.146778584 \\ + 0.400675058 0.158438995 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={ac490a35-fc55-467f-a3e4-3ee45388391b}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.418070495 0.0359279998 \\ + 0.418052942 0.049914293 \\ + 0.418038458 0.0628891364 \\ + 0.41802755 0.0753741562 \\ + 0.418020904 0.0875772387 \\ + 0.418018937 0.0996009037 \\ + 0.418021768 0.111502595 \\ + 0.418029219 0.123317547 \\ + 0.418040574 0.135068804 \\ + 0.418054789 0.146772176 \\ + 0.418070495 0.158438995 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={809bddcb-2155-49b0-9008-2b1665b6ae1b}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.438191146 0.0359279998 \\ + 0.438180625 0.0499039702 \\ + 0.438171983 0.0628724545 \\ + 0.438165516 0.0753540471 \\ + 0.438161641 0.0875561461 \\ + 0.438160568 0.0995808542 \\ + 0.438162357 0.111485146 \\ + 0.438166827 0.123303808 \\ + 0.438173562 0.135059461 \\ + 0.438181937 0.146767527 \\ + 0.438191146 0.158438995 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={60b8b0b7-32e8-49f5-a210-6f0aafba7e66}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.461463988 0.0359279998 \\ + 0.461458236 0.0498975925 \\ + 0.461453527 0.0628620759 \\ + 0.461450011 0.0753414184 \\ + 0.461447924 0.0875427574 \\ + 0.461447388 0.0995679796 \\ + 0.461448401 0.111473829 \\ + 0.461450845 0.123294815 \\ + 0.461454481 0.135053307 \\ + 0.461459011 0.146764442 \\ + 0.461463988 0.158438995 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={0b07a53f-73ee-4960-bdf2-44405d211b95}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.488382816 0.0359279998 \\ + 0.488380045 0.0498939641 \\ + 0.48837775 0.0628561452 \\ + 0.488376051 0.0753341392 \\ + 0.488375038 0.0875349864 \\ + 0.48837477 0.099560447 \\ + 0.488375247 0.11146716 \\ + 0.488376439 0.123289488 \\ + 0.488378197 0.135049641 \\ + 0.488380402 0.146762609 \\ + 0.488382816 0.158438995 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={df4b1f03-a6e0-43a3-a713-d2d00abde52a}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.519518852 0.0359279998 \\ + 0.519517779 0.0498921089 \\ + 0.519516885 0.0628531054 \\ + 0.51951623 0.075330399 \\ + 0.519515812 0.0875309706 \\ + 0.519515753 0.0995565429 \\ + 0.519515932 0.111463688 \\ + 0.519516408 0.123286709 \\ + 0.519517124 0.135047719 \\ + 0.519517958 0.146761641 \\ + 0.519518852 0.158438995 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={3fd199db-477b-4214-a11c-86c977e3aa78}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.555532813 0.0359279998 \\ + 0.555532813 0.0498913489 \\ + 0.555532813 0.0628518537 \\ + 0.555532813 0.0753288642 \\ + 0.555532813 0.0875293314 \\ + 0.555532813 0.0995549411 \\ + 0.555532813 0.111462265 \\ + 0.555532813 0.123285569 \\ + 0.555532813 0.135046944 \\ + 0.555532813 0.146761253 \\ + 0.555532813 0.158438995 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={04b209fb-7451-4215-9f8d-a6e182ce6074}, draw opacity={1.0}, line width={0.75}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.119999997 0.0560293496 \\ + 0.126558438 0.0560412109 \\ + 0.133245647 0.0560548678 \\ + 0.139968172 0.0560677573 \\ + 0.146715805 0.0560786538 \\ + 0.1535175 0.056088496 \\ + 0.160320878 0.0560980961 \\ + 0.16714634 0.0561074205 \\ + 0.173985556 0.0561159588 \\ + 0.180828556 0.0561232083 \\ + 0.187675938 0.056128744 \\ + 0.194527879 0.0561321341 \\ + 0.201378569 0.0561328046 \\ + 0.208231941 0.0561298095 \\ + 0.215074837 0.0561216772 \\ + 0.2219138 0.0561067387 \\ + 0.228741482 0.0560832731 \\ + 0.235521033 0.056048099 \\ + 0.242301211 0.055992946 \\ + 0.248895854 0.0559058823 \\ + 0.255062699 0.0557756722 \\ + 0.260677278 0.0555957817 \\ + 0.265937179 0.0553589165 \\ + 0.271079302 0.0550550483 \\ + 0.276172608 0.0546808504 \\ + 0.281171709 0.0542436317 \\ + 0.286036581 0.0537559614 \\ + 0.290777266 0.0532308333 \\ + 0.295411348 0.0526852831 \\ + 0.299927622 0.0521458276 \\ + 0.304251671 0.0516529754 \\ + 0.30617103 0.0514550358 \\ + 0.308802336 0.0512223616 \\ + 0.31184572 0.0510053523 \\ + 0.315365613 0.0508075356 \\ + 0.31943658 0.0506314039 \\ + 0.324144721 0.0504782163 \\ + 0.329589605 0.0503480025 \\ + 0.33588624 0.050239712 \\ + 0.343167543 0.0501515158 \\ + 0.351587176 0.0500811152 \\ + 0.36132282 0.0500260592 \\ + 0.372579962 0.0499839634 \\ + 0.385596573 0.0499526002 \\ + 0.400647938 0.0499299727 \\ + 0.418052942 0.049914293 \\ + 0.438180625 0.0499039702 \\ + 0.461458236 0.0498975925 \\ + 0.488380045 0.0498939641 \\ + 0.519517779 0.0498921089 \\ + 0.555532813 0.0498913489 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={b5909803-3b15-4b3c-b892-ac9acf28cc05}, draw opacity={1.0}, line width={0.75}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.119999997 0.0671061799 \\ + 0.126518264 0.0671321899 \\ + 0.133164659 0.0671587884 \\ + 0.139846593 0.067185156 \\ + 0.146554217 0.0672108829 \\ + 0.153316632 0.0672359988 \\ + 0.160082117 0.0672602504 \\ + 0.166871279 0.0672834814 \\ + 0.173676267 0.0673052445 \\ + 0.180487558 0.0673249513 \\ + 0.187306151 0.067341961 \\ + 0.194132686 0.0673554763 \\ + 0.200961858 0.0673644841 \\ + 0.207798049 0.0673677102 \\ + 0.214628607 0.0673634559 \\ + 0.221460417 0.067349568 \\ + 0.228286475 0.067323193 \\ + 0.235070005 0.0672804862 \\ + 0.241859689 0.0672152191 \\ + 0.248468667 0.0671219453 \\ + 0.254653007 0.0669992864 \\ + 0.26028654 0.0668503419 \\ + 0.265566319 0.0666736141 \\ + 0.270729423 0.0664635822 \\ + 0.275844574 0.0662192404 \\ + 0.280865729 0.0659467727 \\ + 0.285752267 0.0656553805 \\ + 0.290513963 0.0653534904 \\ + 0.295168221 0.0650501922 \\ + 0.299703658 0.0647572204 \\ + 0.304045349 0.0644899309 \\ + 0.305972278 0.0643785745 \\ + 0.308613658 0.0642347485 \\ + 0.311668158 0.0640826449 \\ + 0.315200329 0.0639262348 \\ + 0.319284648 0.0637700856 \\ + 0.324007124 0.0636189654 \\ + 0.329467267 0.0634773076 \\ + 0.335779727 0.0633487701 \\ + 0.343077153 0.0632358715 \\ + 0.35151279 0.0631398857 \\ + 0.361263692 0.0630608946 \\ + 0.372534901 0.0629980415 \\ + 0.385563821 0.0629497841 \\ + 0.400625437 0.0629141927 \\ + 0.418038458 0.0628891364 \\ + 0.438171983 0.0628724545 \\ + 0.461453527 0.0628620759 \\ + 0.48837775 0.0628561452 \\ + 0.519516885 0.0628531054 \\ + 0.555532813 0.0628518537 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={294f8519-b1f1-4359-afef-95d26183ee13}, draw opacity={1.0}, line width={0.75}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.120000005 0.0781830102 \\ + 0.126477122 0.0782214478 \\ + 0.133081689 0.0782606304 \\ + 0.139721945 0.078299813 \\ + 0.146388352 0.0783387199 \\ + 0.153110132 0.078377299 \\ + 0.159836203 0.0784149542 \\ + 0.166587412 0.0784514323 \\ + 0.173356295 0.0784861669 \\ + 0.18013376 0.0785184652 \\ + 0.186921269 0.0785475522 \\ + 0.193719909 0.0785724893 \\ + 0.200524941 0.0785921291 \\ + 0.207341343 0.0786051229 \\ + 0.21415709 0.0786097869 \\ + 0.220979676 0.078604117 \\ + 0.227802634 0.0785856098 \\ + 0.234589562 0.0785513818 \\ + 0.24138926 0.0784974843 \\ + 0.248014197 0.0784218386 \\ + 0.254218608 0.0783263519 \\ + 0.259874225 0.0782157704 \\ + 0.265177429 0.0780902132 \\ + 0.270365387 0.0779465735 \\ + 0.275506437 0.0777847916 \\ + 0.280553728 0.0776092112 \\ + 0.285465807 0.077425532 \\ + 0.29025206 0.0772383511 \\ + 0.294929653 0.0770520791 \\ + 0.299486935 0.0768720955 \\ + 0.303848445 0.0767055079 \\ + 0.305783778 0.0766345039 \\ + 0.308436275 0.0765405819 \\ + 0.311503053 0.0764375851 \\ + 0.315048546 0.0763266906 \\ + 0.31914717 0.0762099251 \\ + 0.323884755 0.0760901347 \\ + 0.329360425 0.0759707838 \\ + 0.335688621 0.0758556724 \\ + 0.343001515 0.0757484511 \\ + 0.351451844 0.075652197 \\ + 0.361216277 0.0755690634 \\ + 0.372499496 0.0755001307 \\ + 0.385538548 0.0754453912 \\ + 0.400608331 0.0754039288 \\ + 0.41802755 0.0753741562 \\ + 0.438165516 0.0753540471 \\ + 0.461450011 0.0753414184 \\ + 0.488376051 0.0753341392 \\ + 0.51951623 0.075330399 \\ + 0.555532813 0.0753288642 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={3771c237-7f99-4c8c-8929-114178023c4f}, draw opacity={1.0}, line width={0.75}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.120000005 0.0892598331 \\ + 0.12643443 0.0893098935 \\ + 0.132995501 0.0893610269 \\ + 0.13959226 0.089412421 \\ + 0.146215454 0.0894638523 \\ + 0.152894422 0.0895153135 \\ + 0.159578711 0.0895660743 \\ + 0.166289359 0.0896158293 \\ + 0.17301926 0.0896639302 \\ + 0.179759741 0.0897095799 \\ + 0.186512634 0.0897519514 \\ + 0.193279505 0.0897900462 \\ + 0.20005624 0.0898227021 \\ + 0.206848547 0.0898486376 \\ + 0.213645324 0.0898663402 \\ + 0.22045505 0.0898741558 \\ + 0.227272227 0.0898701549 \\ + 0.234061286 0.089852348 \\ + 0.240871623 0.0898183882 \\ + 0.247515231 0.089767538 \\ + 0.253744245 0.0897022411 \\ + 0.259427547 0.0896268114 \\ + 0.264760494 0.0895420015 \\ + 0.269980192 0.0894461349 \\ + 0.275154352 0.0893394351 \\ + 0.280234754 0.0892248452 \\ + 0.28517884 0.0891059116 \\ + 0.289995372 0.0889852345 \\ + 0.294701129 0.0888651237 \\ + 0.299284071 0.0887483731 \\ + 0.30366835 0.0886389539 \\ + 0.30561319 0.0885916799 \\ + 0.308278024 0.0885283947 \\ + 0.311358213 0.0884577706 \\ + 0.314918011 0.0883799866 \\ + 0.319031596 0.0882957429 \\ + 0.3237845 0.0882063583 \\ + 0.329275489 0.0881138518 \\ + 0.335618496 0.0880208537 \\ + 0.342945307 0.0879304111 \\ + 0.351408213 0.0878456458 \\ + 0.361183614 0.0877693817 \\ + 0.372475952 0.0877037272 \\ + 0.385522306 0.0876498744 \\ + 0.400597632 0.0876079723 \\ + 0.418020904 0.0875772387 \\ + 0.438161641 0.0875561461 \\ + 0.461447924 0.0875427574 \\ + 0.488375038 0.0875349864 \\ + 0.519515812 0.0875309706 \\ + 0.555532813 0.0875293314 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={55508043-bd83-4e4e-9348-16d4013239b9}, draw opacity={1.0}, line width={0.75}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.120000005 0.100336671 \\ + 0.126389757 0.100397676 \\ + 0.13290517 0.100460134 \\ + 0.139456004 0.100523241 \\ + 0.146033287 0.100586854 \\ + 0.152666479 0.100651085 \\ + 0.159305796 0.100715086 \\ + 0.165972456 0.100778565 \\ + 0.172659665 0.100840792 \\ + 0.179359019 0.100900881 \\ + 0.186072558 0.100957938 \\ + 0.192802265 0.101010941 \\ + 0.199544623 0.101058744 \\ + 0.206306234 0.101100162 \\ + 0.213077247 0.101133838 \\ + 0.219867632 0.101158448 \\ + 0.226673692 0.101172529 \\ + 0.233461618 0.101174623 \\ + 0.240282282 0.101163387 \\ + 0.246947899 0.101138338 \\ + 0.25320816 0.101101421 \\ + 0.25892812 0.101056084 \\ + 0.2643013 0.101003513 \\ + 0.26956436 0.100943066 \\ + 0.27478376 0.100875117 \\ + 0.279909104 0.100801654 \\ + 0.284895867 0.100725017 \\ + 0.289751798 0.100646839 \\ + 0.294493079 0.100568503 \\ + 0.299107254 0.100491688 \\ + 0.303518087 0.100418866 \\ + 0.305473655 0.100387089 \\ + 0.308152199 0.100344203 \\ + 0.311246753 0.100295797 \\ + 0.314821333 0.100241728 \\ + 0.318949819 0.100182116 \\ + 0.323717207 0.10011749 \\ + 0.329221845 0.100048877 \\ + 0.33557725 0.0999778882 \\ + 0.34291479 0.0999066234 \\ + 0.351386577 0.0998375863 \\ + 0.361168951 0.0997733697 \\ + 0.372466445 0.0997162983 \\ + 0.385516405 0.0996681154 \\ + 0.400594175 0.0996296778 \\ + 0.418018937 0.0996009037 \\ + 0.438160568 0.0995808542 \\ + 0.461447388 0.0995679796 \\ + 0.48837477 0.099560447 \\ + 0.519515753 0.0995565429 \\ + 0.555532813 0.0995549411 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={425e75a3-f6b9-4069-974a-17b3af2ef541}, draw opacity={1.0}, line width={0.75}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.120000005 0.111413494 \\ + 0.126343116 0.111484513 \\ + 0.132810473 0.111557484 \\ + 0.139312387 0.111631706 \\ + 0.145840228 0.111707218 \\ + 0.152423769 0.111784257 \\ + 0.15901418 0.111861899 \\ + 0.165632829 0.11193984 \\ + 0.172273144 0.112017214 \\ + 0.178926647 0.112093031 \\ + 0.185595259 0.112166278 \\ + 0.192280948 0.112235889 \\ + 0.198980644 0.112300679 \\ + 0.205701783 0.112359539 \\ + 0.212436169 0.112411208 \\ + 0.219195962 0.112454593 \\ + 0.225980401 0.112488531 \\ + 0.232759148 0.112511829 \\ + 0.239586458 0.112523735 \\ + 0.246276617 0.112523526 \\ + 0.252577126 0.112512253 \\ + 0.258347571 0.112492524 \\ + 0.26377812 0.112465963 \\ + 0.269104183 0.112432793 \\ + 0.274389625 0.112393506 \\ + 0.279580146 0.11234951 \\ + 0.284627736 0.112302445 \\ + 0.289537966 0.112253509 \\ + 0.294325948 0.112203702 \\ + 0.298978776 0.112154178 \\ + 0.303420186 0.112106599 \\ + 0.305387467 0.112085633 \\ + 0.308080316 0.112057135 \\ + 0.311189145 0.112024672 \\ + 0.314777434 0.111987993 \\ + 0.318918616 0.111947015 \\ + 0.323697239 0.111901879 \\ + 0.329211265 0.111853063 \\ + 0.335573941 0.11180146 \\ + 0.342916548 0.111748412 \\ + 0.351391405 0.111695699 \\ + 0.36117506 0.111645341 \\ + 0.372472584 0.111599416 \\ + 0.38552174 0.111559674 \\ + 0.400598288 0.111527286 \\ + 0.418021768 0.111502595 \\ + 0.438162357 0.111485146 \\ + 0.461448401 0.111473829 \\ + 0.488375247 0.11146716 \\ + 0.519515932 0.111463688 \\ + 0.555532813 0.111462265 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={16ca0f0e-d152-49d1-af0e-889c2e791655}, draw opacity={1.0}, line width={0.75}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.120000005 0.122490317 \\ + 0.126295686 0.122569807 \\ + 0.132712901 0.122651935 \\ + 0.139162093 0.122736335 \\ + 0.145635501 0.12282332 \\ + 0.152164072 0.122913301 \\ + 0.15870063 0.123005226 \\ + 0.165267035 0.123098657 \\ + 0.171856567 0.123192549 \\ + 0.178460047 0.123285651 \\ + 0.185078308 0.123376779 \\ + 0.191712439 0.123464711 \\ + 0.198359087 0.123548187 \\ + 0.205026209 0.123626083 \\ + 0.211707339 0.123697169 \\ + 0.218417466 0.123760514 \\ + 0.225160286 0.123815134 \\ + 0.231911585 0.123859957 \\ + 0.238732681 0.123894617 \\ + 0.245444879 0.123917893 \\ + 0.251795858 0.123929895 \\ + 0.25763768 0.123932414 \\ + 0.26315406 0.123927556 \\ + 0.268577129 0.123916283 \\ + 0.273965776 0.123899221 \\ + 0.279258162 0.123877406 \\ + 0.284399152 0.123852089 \\ + 0.289389431 0.123824343 \\ + 0.29424122 0.123795047 \\ + 0.298940957 0.123765126 \\ + 0.303414196 0.123735793 \\ + 0.305392295 0.123722702 \\ + 0.308097094 0.123704761 \\ + 0.311216205 0.123684108 \\ + 0.31481269 0.123660512 \\ + 0.318959653 0.123633824 \\ + 0.323741436 0.123604015 \\ + 0.329256028 0.123571284 \\ + 0.335616916 0.123536088 \\ + 0.342955828 0.123499222 \\ + 0.351425529 0.123461857 \\ + 0.361203313 0.123425424 \\ + 0.372494727 0.123391509 \\ + 0.385538161 0.12336158 \\ + 0.400609732 0.123336755 \\ + 0.418029219 0.123317547 \\ + 0.438166827 0.123303808 \\ + 0.461450845 0.123294815 \\ + 0.488376439 0.123289488 \\ + 0.519516408 0.123286709 \\ + 0.555532813 0.123285569 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={98fe6ec8-e466-4b28-9022-837d604a38af}, draw opacity={1.0}, line width={0.75}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.120000012 0.133567154 \\ + 0.126252562 0.133652225 \\ + 0.132618949 0.133741051 \\ + 0.139009237 0.133834034 \\ + 0.14541921 0.133931905 \\ + 0.151883841 0.13403514 \\ + 0.15835996 0.134142399 \\ + 0.164870307 0.134252951 \\ + 0.171407461 0.13436529 \\ + 0.177959904 0.134477779 \\ + 0.184525192 0.134588853 \\ + 0.191101521 0.134697065 \\ + 0.197683975 0.134800941 \\ + 0.204279929 0.134899318 \\ + 0.210884154 0.134990916 \\ + 0.217514426 0.135074899 \\ + 0.224179819 0.135150447 \\ + 0.230865002 0.135216579 \\ + 0.237644017 0.135273308 \\ + 0.244357824 0.13531889 \\ + 0.250764996 0.135352507 \\ + 0.256709009 0.135375157 \\ + 0.262359738 0.135389298 \\ + 0.267940551 0.13539654 \\ + 0.27350086 0.135397568 \\ + 0.278965652 0.135393143 \\ + 0.284265041 0.135384381 \\ + 0.289386094 0.135372385 \\ + 0.29433012 0.13535814 \\ + 0.299079686 0.135342598 \\ + 0.303569436 0.135326713 \\ + 0.305549711 0.135319471 \\ + 0.308253765 0.135309398 \\ + 0.311368674 0.135297656 \\ + 0.314957738 0.135284036 \\ + 0.319094419 0.13526842 \\ + 0.323863685 0.135250732 \\ + 0.329364181 0.135231048 \\ + 0.335709989 0.13520956 \\ + 0.343033612 0.135186732 \\ + 0.351488471 0.135163233 \\ + 0.361252427 0.135139957 \\ + 0.372531503 0.135117978 \\ + 0.385564446 0.135098293 \\ + 0.400627553 0.135081753 \\ + 0.418040574 0.135068804 \\ + 0.438173562 0.135059461 \\ + 0.461454481 0.135053307 \\ + 0.488378197 0.135049641 \\ + 0.519517124 0.135047719 \\ + 0.555532813 0.135046944 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={586d507f-260c-4871-9981-f86b17eda546}, draw opacity={1.0}, line width={0.75}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.120000012 0.144643977 \\ + 0.126234606 0.144728884 \\ + 0.132551491 0.144819811 \\ + 0.138866305 0.14491877 \\ + 0.145191148 0.145026967 \\ + 0.151572704 0.145144433 \\ + 0.157978609 0.145269051 \\ + 0.164431185 0.145399407 \\ + 0.170921043 0.145533279 \\ + 0.177430943 0.145668238 \\ + 0.183949143 0.14580211 \\ + 0.190466985 0.145933002 \\ + 0.196976677 0.146059319 \\ + 0.203482866 0.146179691 \\ + 0.209980592 0.146292716 \\ + 0.2164886 0.146397591 \\ + 0.223020017 0.146493703 \\ + 0.229566857 0.146580324 \\ + 0.236213505 0.146657839 \\ + 0.242850944 0.146724433 \\ + 0.249291167 0.146778673 \\ + 0.255382955 0.146820739 \\ + 0.261256844 0.14685294 \\ + 0.267104477 0.14687711 \\ + 0.272960097 0.146893889 \\ + 0.278737038 0.146903813 \\ + 0.284342706 0.146907911 \\ + 0.289723724 0.146907508 \\ + 0.294827372 0.146903947 \\ + 0.299590915 0.146898493 \\ + 0.303987443 0.14689216 \\ + 0.30593279 0.146889165 \\ + 0.308596283 0.146884903 \\ + 0.311672181 0.146879822 \\ + 0.315223992 0.146873832 \\ + 0.319325238 0.146866858 \\ + 0.324060977 0.146858841 \\ + 0.329530001 0.146849811 \\ + 0.335846633 0.146839857 \\ + 0.343143642 0.146829158 \\ + 0.351574689 0.146818027 \\ + 0.361317903 0.146806911 \\ + 0.372579485 0.146796286 \\ + 0.385598153 0.146786705 \\ + 0.400650084 0.146778584 \\ + 0.418054789 0.146772176 \\ + 0.438181937 0.146767527 \\ + 0.461459011 0.146764442 \\ + 0.488380402 0.146762609 \\ + 0.519517958 0.146761641 \\ + 0.555532813 0.146761253 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={91acbcd4-aa12-4e47-80e7-0e1278ec0493}, draw opacity={1.0}, line width={0.75}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.304466009 0.158438995 \\ + 0.30637899 0.158438995 \\ + 0.309001654 0.158438995 \\ + 0.312035203 0.158438995 \\ + 0.315543979 0.158438995 \\ + 0.319602489 0.158438995 \\ + 0.324296772 0.158438995 \\ + 0.329726517 0.158438995 \\ + 0.33600688 0.158438995 \\ + 0.343271166 0.158438995 \\ + 0.351673514 0.158438995 \\ + 0.36139217 0.158438995 \\ + 0.372633398 0.158438995 \\ + 0.385635734 0.158438995 \\ + 0.400675058 0.158438995 \\ + 0.418070495 0.158438995 \\ + 0.438191146 0.158438995 \\ + 0.461463988 0.158438995 \\ + 0.488382816 0.158438995 \\ + 0.519518852 0.158438995 \\ + 0.555532813 0.158438995 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={4b730178-3359-4e90-9e26-6f3012485ce7}, draw opacity={1.0}, line width={0.75}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.30637899 0.0359279998 \\ + 0.309001654 0.0359279998 \\ + 0.312035203 0.0359279998 \\ + 0.315543979 0.0359279998 \\ + 0.319602489 0.0359279998 \\ + 0.324296772 0.0359279998 \\ + 0.329726517 0.0359279998 \\ + 0.33600688 0.0359279998 \\ + 0.343271166 0.0359279998 \\ + 0.351673514 0.0359279998 \\ + 0.36139217 0.0359279998 \\ + 0.372633398 0.0359279998 \\ + 0.385635734 0.0359279998 \\ + 0.400675058 0.0359279998 \\ + 0.418070495 0.0359279998 \\ + 0.438191146 0.0359279998 \\ + 0.461463988 0.0359279998 \\ + 0.488382816 0.0359279998 \\ + 0.519518852 0.0359279998 \\ + 0.555532813 0.0359279998 \\ + } + ; + \addplot[color={rgb,1:red,0.4118;green,0.6824;blue,0.3725}, name path={15e1168b-2f5a-4564-ac06-d7b92cc3a91c}, draw opacity={1.0}, line width={2}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.119999997 0.044952523 \\ + 0.119999997 0.0560293496 \\ + 0.119999997 0.0671061799 \\ + 0.120000005 0.0781830102 \\ + 0.120000005 0.0892598331 \\ + 0.120000005 0.100336671 \\ + 0.120000005 0.111413494 \\ + 0.120000005 0.122490317 \\ + 0.120000012 0.133567154 \\ + 0.120000012 0.144643977 \\ + 0.120000012 0.155720815 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={5b9a6b88-5d72-4172-b162-f0ca2bcb063b}, draw opacity={1.0}, line width={1.0}, solid, mark={*}, mark size={1.125 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.3608;blue,0.6706}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 0.304466009 0.158438995 \\ + 0.30104059 0.158440918 \\ + 0.296547413 0.158441409 \\ + 0.290954471 0.158438653 \\ + 0.284838438 0.15843077 \\ + 0.278544694 0.158416122 \\ + 0.272215903 0.158393458 \\ + 0.265893519 0.158361465 \\ + 0.2595779 0.15831925 \\ + 0.253263652 0.158266708 \\ + 0.2469531 0.158204004 \\ + 0.240648702 0.158130884 \\ + 0.234346643 0.158046767 \\ + 0.228036374 0.157951623 \\ + 0.221715644 0.157846034 \\ + 0.215387374 0.15773055 \\ + 0.209050387 0.157605141 \\ + 0.202688128 0.157469675 \\ + 0.196288183 0.157325283 \\ + 0.189850047 0.157173961 \\ + 0.1833819 0.15701735 \\ + 0.176883996 0.156856567 \\ + 0.170381293 0.156694025 \\ + 0.163917422 0.156533509 \\ + 0.157518655 0.156378597 \\ + 0.15119262 0.156232446 \\ + 0.144942939 0.156097993 \\ + 0.138760611 0.155978441 \\ + 0.132587165 0.155877367 \\ + 0.126339316 0.155793041 \\ + 0.120000012 0.155720815 \\ + 0.111004442 0.155630499 \\ + 0.102162637 0.155552015 \\ + 0.0936912298 0.155501485 \\ + 0.0855727866 0.155502617 \\ + 0.0777727887 0.155572012 \\ + 0.0703083277 0.155723751 \\ + 0.0631919801 0.155972108 \\ + 0.0564354546 0.156330809 \\ + 0.0500534326 0.156811386 \\ + 0.0440574624 0.157423645 \\ + 0.0384658799 0.158174351 \\ + 0.033303123 0.159064338 \\ + 0.0285827313 0.160096079 \\ + 0.024310058 0.161268204 \\ + 0.02048482 0.162573695 \\ + 0.0171024166 0.164010316 \\ + 0.0141469585 0.165579274 \\ + 0.0116014639 0.167288974 \\ + 0.00946037937 0.169150949 \\ + 0.00772702973 0.171179235 \\ + 0.0064273621 0.17337504 \\ + 0.0055845296 0.175722182 \\ + 0.0052184551 0.178180113 \\ + 0.00531059969 0.180689871 \\ + 0.00582839875 0.183185413 \\ + 0.00676491577 0.185668364 \\ + 0.00811316539 0.188122496 \\ + 0.00985984225 0.190536648 \\ + 0.0120013645 0.19290553 \\ + 0.0145334946 0.195220843 \\ + 0.0174508858 0.197471961 \\ + 0.0207423549 0.199641794 \\ + 0.0243888609 0.201711833 \\ + 0.028366942 0.203663021 \\ + 0.0326463282 0.20547694 \\ + 0.0372016616 0.20713985 \\ + 0.0420092456 0.20864363 \\ + 0.0470369235 0.209980547 \\ + 0.052257929 0.211142972 \\ + 0.0576559529 0.212128595 \\ + 0.0632159039 0.212937504 \\ + 0.0689225122 0.213569939 \\ + 0.0747614354 0.214027002 \\ + 0.0807205811 0.214310423 \\ + 0.0867883936 0.214422479 \\ + 0.0929517895 0.214365974 \\ + 0.0992028862 0.21414265 \\ + 0.105543934 0.213755563 \\ + 0.111961305 0.213210344 \\ + 0.118446901 0.212506652 \\ + 0.125078455 0.211635858 \\ + 0.131927684 0.210602611 \\ + 0.138974875 0.209422499 \\ + 0.146162391 0.208114341 \\ + 0.153422281 0.206694216 \\ + 0.160723969 0.20517005 \\ + 0.168066114 0.203543484 \\ + 0.175464198 0.201814786 \\ + 0.182902128 0.199992642 \\ + 0.190356091 0.198084086 \\ + 0.197829321 0.196089581 \\ + 0.205321759 0.194011703 \\ + 0.212824583 0.191854686 \\ + 0.220334753 0.189620689 \\ + 0.227847159 0.187312916 \\ + 0.235348269 0.184936389 \\ + 0.242835328 0.182491779 \\ + 0.2503106 0.179979146 \\ + 0.25776273 0.177402914 \\ + 0.265186906 0.174763754 \\ + 0.272589475 0.172059685 \\ + 0.279946595 0.16930072 \\ + 0.287187666 0.166512892 \\ + 0.294101626 0.16378139 \\ + 0.300096214 0.161357403 \\ + 0.304542005 0.159526005 \\ + } + ; + \addplot[color={rgb,1:red,0.7451;green,0.298;blue,0.302}, name path={8ce78fbc-9b8d-4d2b-846e-92b91f1885e0}, draw opacity={1.0}, line width={1.0}, solid, mark={*}, mark size={1.125 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.7451;green,0.298;blue,0.302}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 0.0 0.0 \\ + 0.000221907947 0.00327736163 \\ + 0.000816724729 0.00622903509 \\ + 0.00176226569 0.00906565692 \\ + 0.00305221137 0.0118118245 \\ + 0.00468654046 0.0144791165 \\ + 0.00665957527 0.0170694496 \\ + 0.00896466151 0.0195757356 \\ + 0.0115928082 0.0219898652 \\ + 0.0145341456 0.0243067294 \\ + 0.0177702773 0.0265152901 \\ + 0.0212840736 0.0286078416 \\ + 0.0250577405 0.0305783823 \\ + 0.0290697441 0.0324218199 \\ + 0.0333011299 0.0341345593 \\ + 0.037733335 0.03571539 \\ + 0.042347841 0.0371641666 \\ + 0.0471230336 0.0384794995 \\ + 0.0520442128 0.0396629795 \\ + 0.0571017079 0.0407177247 \\ + 0.0622883439 0.0416484587 \\ + 0.0675890148 0.0424586125 \\ + 0.0729805753 0.0431486107 \\ + 0.0784593672 0.0437219962 \\ + 0.0840299651 0.0441843681 \\ + 0.0896970928 0.0445428453 \\ + 0.0954227969 0.044800397 \\ + 0.101146452 0.0449494347 \\ + 0.107029006 0.0449990593 \\ + 0.11332047 0.0449849516 \\ + 0.119999997 0.044952523 \\ + 0.126598373 0.0449425951 \\ + 0.133326128 0.0449483283 \\ + 0.140088946 0.0449485965 \\ + 0.146876231 0.0449386574 \\ + 0.153716758 0.0449272916 \\ + 0.160557494 0.0449194387 \\ + 0.167418554 0.0449135117 \\ + 0.174291193 0.0449075662 \\ + 0.18116495 0.0449010506 \\ + 0.188040003 0.0448941104 \\ + 0.194916084 0.0448871255 \\ + 0.201786935 0.0448808186 \\ + 0.208656073 0.0448750034 \\ + 0.215509951 0.0448674187 \\ + 0.222354814 0.0448568724 \\ + 0.229183137 0.0448483042 \\ + 0.23595807 0.0448484048 \\ + 0.242728472 0.0448510461 \\ + 0.249308959 0.0448360331 \\ + 0.255458832 0.0447726212 \\ + 0.26105535 0.0446099378 \\ + 0.266296536 0.0443151407 \\ + 0.271419168 0.0438756235 \\ + 0.276492447 0.043291498 \\ + 0.28147167 0.0425630659 \\ + 0.286317348 0.0416866243 \\ + 0.291039765 0.0406553857 \\ + 0.295656592 0.0394639932 \\ + 0.300156772 0.0381152593 \\ + 0.304466009 0.0366412401 \\ + 0.30637899 0.0359279998 \\ + } + ; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/dfdcexample-pressure-comp-105-duct-panels-61-hub-panels.tikz b/v0.5.0/DuctAPE/theory_latex/figures/dfdcexample-pressure-comp-105-duct-panels-61-hub-panels.tikz new file mode 100644 index 00000000..70ee89dc --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/dfdcexample-pressure-comp-105-duct-panels-61-hub-panels.tikz @@ -0,0 +1,228 @@ +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={52.15mm}, height={42.926mm}, scaled x ticks={false}, xlabel={x}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.0036647000000000207}, xmax={0.3116747}, xticklabels={{$0.0$,$0.1$,$0.2$,$0.3$}}, xtick={{0.0,0.1,0.2,0.30000000000000004}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_p$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, y dir={reverse}, ymajorgrids={false}, ymin={-1.1109218999999997}, ymax={1.0543719}, yticklabels={{$-1.0$,$-0.5$,$0.0$,$0.5$,$1.0$}}, ytick={{-1.0,-0.5,0.0,0.5,1.0}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={b33c87f5-9e09-44eb-83c9-43e6df993cf3}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.3027496635 0.3258358826737 \\ + 0.29877787850000004 0.3846938705946501 \\ + 0.29372301700000003 0.3692244423920453 \\ + 0.28787264199999996 0.35425040645572603 \\ + 0.28166984 0.3417279929696381 \\ + 0.275350615 0.3314450372328358 \\ + 0.26902322450000005 0.32301697757936876 \\ + 0.2627004685 0.31551729021134867 \\ + 0.256379366 0.3087094562800702 \\ + 0.2500674275 0.3026546137115482 \\ + 0.243762612 0.2969247511869706 \\ + 0.2374598605 0.2914126273588692 \\ + 0.2311513645 0.2860127940894194 \\ + 0.22483147650000002 0.280637671684524 \\ + 0.2185029685 0.27544816117297377 \\ + 0.2121696695 0.27029886562609395 \\ + 0.2058202025 0.2648350653495971 \\ + 0.1994369175 0.2590753758235794 \\ + 0.1930172965 0.25333215468538495 \\ + 0.1865691545 0.2475296351230103 \\ + 0.18009151499999998 0.24144283595936267 \\ + 0.1735911965 0.23519768966135535 \\ + 0.167106241 0.2290054154171307 \\ + 0.160672113 0.2229098170319581 \\ + 0.1543029245 0.21704266539268957 \\ + 0.14800300449999998 0.2115831136373305 \\ + 0.1417730975 0.20641461837693842 \\ + 0.1356161165 0.20204044441393254 \\ + 0.129456945 0.19979529372836835 \\ + 0.1231787315 0.19992382039425638 \\ + 0.1154811455 0.1990016904101356 \\ + 0.10656770700000001 0.1937758130947259 \\ + 0.09794062015 0.1863498769532962 \\ + 0.08963782340000001 0.17883040703254005 \\ + 0.08166589215 0.17183838155324205 \\ + 0.0740330629 0.16621758348305793 \\ + 0.06674211845 0.16285736371440807 \\ + 0.059802168999999995 0.16246963409940507 \\ + 0.0532291476 0.16600309195791974 \\ + 0.04703938965 0.1746213388469997 \\ + 0.041247349249999996 0.1901874603950957 \\ + 0.0358688589 0.21383964490613394 \\ + 0.0309251491 0.247675696774034 \\ + 0.026427102299999998 0.2942950121618564 \\ + 0.022378951299999998 0.35558016680344007 \\ + 0.018778618400000002 0.4343075172603894 \\ + 0.0156121603 0.532070590568459 \\ + 0.012864709799999999 0.6481525293095074 \\ + 0.010524780465 0.7766674205792305 \\ + 0.008590708249999999 0.9000201115111688 \\ + 0.007076690205 0.9851205936253608 \\ + 0.00600737729 0.9895596271447499 \\ + 0.00540318992 0.8866295424586157 \\ + 0.00526305847 0.6869027766703492 \\ + 0.005563038635 0.42620224713513677 \\ + 0.00628457079 0.14652526800162047 \\ + 0.007419826465 -0.11602065378305615 \\ + 0.008959359025 -0.34056530797492757 \\ + 0.010895996335 -0.5218381399011311 \\ + 0.013225628949999998 -0.6633216500115895 \\ + 0.0159431286 -0.7727315505456276 \\ + 0.0190411676 -0.8553722012022877 \\ + 0.02250402235 -0.9179836456323762 \\ + 0.0263101626 -0.9643966127404036 \\ + 0.03043434115 -0.9968937371385949 \\ + 0.0348483473 -1.0182915111126616 \\ + 0.03952684625 -1.0295323731776902 \\ + 0.04444176515 -1.0339236739670006 \\ + 0.04956356435 -1.032281608049864 \\ + 0.05487084015 -1.0237938507895965 \\ + 0.06035005115 -1.0093301105784716 \\ + 0.0659851283 -0.9908045885984549 \\ + 0.07175710055000001 -0.9687775382517303 \\ + 0.07765365765 -0.9426752348702154 \\ + 0.08366731555 -0.9133321921664856 \\ + 0.08978510649999999 -0.8818312975271638 \\ + 0.09599512815 -0.8477846784951899 \\ + 0.10229099155 -0.8112491273904394 \\ + 0.10866945950000001 -0.7720731363002191 \\ + 0.1151293065 -0.7309133841259199 \\ + 0.12168329550000001 -0.6851475532526257 \\ + 0.128414061 -0.6327015252316182 \\ + 0.1353736595 -0.5819222314982879 \\ + 0.14249666049999998 -0.5374088967246431 \\ + 0.14971537899999998 -0.4964978735703949 \\ + 0.156999126 -0.45843365919823653 \\ + 0.1643260195 -0.42233024118680884 \\ + 0.171698436 -0.3870412297392818 \\ + 0.1791179625 -0.3531616608002768 \\ + 0.1865658685 -0.3206378137623196 \\ + 0.1940341815 -0.2887561943499044 \\ + 0.201519683 -0.2574153904808669 \\ + 0.2090179625 -0.22631110706761293 \\ + 0.21652941399999998 -0.19517976274340376 \\ + 0.22404552249999998 -0.16429527075242256 \\ + 0.23154877899999998 -0.13310271519366634 \\ + 0.2390433255 -0.10080349642465869 \\ + 0.24653129299999998 -0.06743749222706974 \\ + 0.25400278 -0.03254804874434525 \\ + 0.2614468785 0.004449031558268923 \\ + 0.26886054849999996 0.04496375578625034 \\ + 0.276239693 0.08989088862262262 \\ + 0.28353644899999997 0.14126765650894924 \\ + 0.290621996 0.2018796309669636 \\ + 0.2970891745 0.2758278083156196 \\ + 0.3023157715 0.2810767976129891 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={e499b048-798b-463d-a4ef-92cb5c854b31}, draw opacity={1.0}, line width={2}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.30232 0.45206 \\ + 0.29709 0.31041 \\ + 0.29062 0.22519 \\ + 0.28354 0.15779 \\ + 0.27624 0.1026 \\ + 0.26886 0.05567 \\ + 0.26145 0.01331 \\ + 0.254 -0.02499 \\ + 0.24653 -0.06078 \\ + 0.23904 -0.09503 \\ + 0.23155 -0.12816 \\ + 0.22405 -0.16006 \\ + 0.21653 -0.19144 \\ + 0.20902 -0.22314 \\ + 0.20152 -0.25453 \\ + 0.19403 -0.28682 \\ + 0.18657 -0.31849 \\ + 0.17912 -0.35151 \\ + 0.1717 -0.38545 \\ + 0.16433 -0.42223 \\ + 0.157 -0.45814 \\ + 0.14972 -0.49634 \\ + 0.1425 -0.53762 \\ + 0.13537 -0.58275 \\ + 0.12841 -0.63387 \\ + 0.12168 -0.68677 \\ + 0.11513 -0.73304 \\ + 0.10867 -0.77443 \\ + 0.10229 -0.81446 \\ + 0.096 -0.85165 \\ + 0.08979 -0.88658 \\ + 0.08367 -0.91859 \\ + 0.07765 -0.94876 \\ + 0.07176 -0.97718 \\ + 0.06599 -0.99927 \\ + 0.06035 -1.0192 \\ + 0.05487 -1.03423 \\ + 0.04956 -1.04504 \\ + 0.04444 -1.04964 \\ + 0.03953 -1.04519 \\ + 0.03485 -1.037 \\ + 0.03043 -1.01719 \\ + 0.02631 -0.98737 \\ + 0.0225 -0.94395 \\ + 0.01904 -0.88564 \\ + 0.01594 -0.80543 \\ + 0.01323 -0.70099 \\ + 0.0109 -0.56371 \\ + 0.00896 -0.38556 \\ + 0.00742 -0.16659 \\ + 0.00628 0.09998 \\ + 0.00556 0.3833 \\ + 0.00526 0.65044 \\ + 0.0054 0.86174 \\ + 0.00601 0.98038 \\ + 0.00708 0.99309 \\ + 0.00859 0.92336 \\ + 0.01052 0.81189 \\ + 0.01286 0.69083 \\ + 0.01561 0.58017 \\ + 0.01878 0.48625 \\ + 0.02238 0.40885 \\ + 0.02643 0.34849 \\ + 0.03093 0.30289 \\ + 0.03587 0.26794 \\ + 0.04125 0.24422 \\ + 0.04704 0.22797 \\ + 0.05323 0.21889 \\ + 0.0598 0.21472 \\ + 0.06674 0.21422 \\ + 0.07403 0.21688 \\ + 0.08167 0.22177 \\ + 0.08964 0.22801 \\ + 0.09794 0.23488 \\ + 0.10657 0.2417 \\ + 0.11548 0.24651 \\ + 0.12318 0.2473 \\ + 0.12946 0.24713 \\ + 0.13562 0.24951 \\ + 0.14177 0.25358 \\ + 0.148 0.25817 \\ + 0.1543 0.26291 \\ + 0.16067 0.26858 \\ + 0.16711 0.27433 \\ + 0.17359 0.28018 \\ + 0.18009 0.28586 \\ + 0.18657 0.29149 \\ + 0.19302 0.29673 \\ + 0.19944 0.30205 \\ + 0.20582 0.30749 \\ + 0.21217 0.31213 \\ + 0.2185 0.31665 \\ + 0.22483 0.32117 \\ + 0.23115 0.32586 \\ + 0.23746 0.33046 \\ + 0.24376 0.33523 \\ + 0.25007 0.3404 \\ + 0.25638 0.3452 \\ + 0.2627 0.35125 \\ + 0.26902 0.35788 \\ + 0.27535 0.36594 \\ + 0.28167 0.37626 \\ + 0.28787 0.3902 \\ + 0.29372 0.41018 \\ + 0.29878 0.44162 \\ + 0.30275 0.50594 \\ + } + ; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/dfdcexample-pressure-comp-106-duct-panels-61-hub-panels.tikz b/v0.5.0/DuctAPE/theory_latex/figures/dfdcexample-pressure-comp-106-duct-panels-61-hub-panels.tikz new file mode 100644 index 00000000..cb36c706 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/dfdcexample-pressure-comp-106-duct-panels-61-hub-panels.tikz @@ -0,0 +1,250 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={52.15mm}, height={42.926mm}, scaled x ticks={false}, xlabel={x}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.0036647000000000207}, xmax={0.3116747}, xticklabels={{$0.0$,$0.1$,$0.2$,$0.3$}}, xtick={{0.0,0.1,0.2,0.30000000000000004}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_p$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, y dir={reverse}, ymajorgrids={false}, ymin={-1.1109218999999997}, ymax={1.0543719}, yticklabels={{$-1.0$,$-0.5$,$0.0$,$0.5$,$1.0$}}, ytick={{-1.0,-0.5,0.0,0.5,1.0}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={3ffc473f-49cd-4d1a-bc31-f542ab5642c3}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.3027496635 0.5058677829390232 \\ + 0.29877787850000004 0.4415491991034669 \\ + 0.29372301700000003 0.41013970724353865 \\ + 0.28787264199999996 0.3901953553618338 \\ + 0.28166984 0.3762656388936835 \\ + 0.275350615 0.36592539305992033 \\ + 0.26902322450000005 0.35800534155506814 \\ + 0.2627004685 0.35126506459572304 \\ + 0.256379366 0.3453110030288913 \\ + 0.2500674275 0.3401150213027393 \\ + 0.243762612 0.33522353085795153 \\ + 0.2374598605 0.33051037990756704 \\ + 0.2311513645 0.3258635145741071 \\ + 0.22483147650000002 0.3211946768023023 \\ + 0.2185029685 0.31665434261000425 \\ + 0.2121696695 0.312106058808572 \\ + 0.2058202025 0.3072186534438419 \\ + 0.1994369175 0.3020143683367883 \\ + 0.1930172965 0.2967916582655412 \\ + 0.1865691545 0.29148253552210235 \\ + 0.18009151499999998 0.285879159218957 \\ + 0.1735911965 0.2801042166473289 \\ + 0.167106241 0.27436005985552436 \\ + 0.160672113 0.26869145307726094 \\ + 0.1543029245 0.26322632289527914 \\ + 0.14800300449999998 0.25813690687836455 \\ + 0.1417730975 0.253316840073166 \\ + 0.1356161165 0.24924333795680054 \\ + 0.129456945 0.247176100308514 \\ + 0.1231787315 0.2473484562185081 \\ + 0.1154811455 0.24655703844050236 \\ + 0.10656770700000001 0.24175858343766332 \\ + 0.09794062015 0.23493876956926263 \\ + 0.08963782340000001 0.22809568511077782 \\ + 0.08166589215 0.2218330206088145 \\ + 0.0740330629 0.21696760436017382 \\ + 0.06674211845 0.21436323273814084 \\ + 0.059802168999999995 0.2147216836015856 \\ + 0.0532291476 0.21897179598814653 \\ + 0.04703938965 0.22824817137493336 \\ + 0.041247349249999996 0.24434194068018245 \\ + 0.0358688589 0.2683636220825383 \\ + 0.0309251491 0.3023075369841772 \\ + 0.026427102299999998 0.3486042235859721 \\ + 0.022378951299999998 0.40896419360375436 \\ + 0.018778618400000002 0.48581507546008806 \\ + 0.0156121603 0.5802969331406345 \\ + 0.012864709799999999 0.691068992177226 \\ + 0.010524780465 0.8114225856800021 \\ + 0.008590708249999999 0.9231057364771076 \\ + 0.007076690205 0.9930686571606838 \\ + 0.00600737729 0.9804916434011082 \\ + 0.00540318992 0.8617273903380317 \\ + 0.00526305847 0.6499989376631209 \\ + 0.005563038635 0.38179390311208017 \\ + 0.00628457079 0.09883356181286207 \\ + 0.007419826465 -0.1635471555445993 \\ + 0.008959359025 -0.385646584751979 \\ + 0.010895996335 -0.5632677716990246 \\ + 0.013225628949999998 -0.7006460590858068 \\ + 0.0159431286 -0.8059733492530423 \\ + 0.0190411676 -0.8847631315000859 \\ + 0.02250402235 -0.9438809516410933 \\ + 0.0263101626 -0.9871806379381542 \\ + 0.03043434115 -1.0169212445305855 \\ + 0.0348483473 -1.0358976550943035 \\ + 0.03952684625 -1.045006521438983 \\ + 0.04444176515 -1.0475335007745818 \\ + 0.04956356435 -1.044256851322083 \\ + 0.05487084015 -1.034321473430881 \\ + 0.06035005115 -1.0185703725046107 \\ + 0.0659851283 -0.9989008883233628 \\ + 0.07175710055000001 -0.9758536604894119 \\ + 0.07765365765 -0.9488337390986408 \\ + 0.08366731555 -0.9186622239144848 \\ + 0.08978510649999999 -0.8864124354210079 \\ + 0.09599512815 -0.8516842570662415 \\ + 0.10229099155 -0.8145248734185926 \\ + 0.10866945950000001 -0.774774622726629 \\ + 0.1151293065 -0.7330842816896337 \\ + 0.12168329550000001 -0.6868228006048129 \\ + 0.128414061 -0.6339037714154931 \\ + 0.1353736595 -0.582675098669774 \\ + 0.14249666049999998 -0.5377385485908117 \\ + 0.14971537899999998 -0.4964238674321646 \\ + 0.156999126 -0.45796946142745365 \\ + 0.1643260195 -0.42148424970003173 \\ + 0.171698436 -0.3858155583669334 \\ + 0.1791179625 -0.3515522305443455 \\ + 0.1865658685 -0.3186353996098237 \\ + 0.1940341815 -0.28634561007026593 \\ + 0.201519683 -0.254574219451122 \\ + 0.2090179625 -0.2230088288230434 \\ + 0.21652941399999998 -0.1913752427668327 \\ + 0.22404552249999998 -0.15993358710458594 \\ + 0.23154877899999998 -0.12811360263199445 \\ + 0.2390433255 -0.095094040082353 \\ + 0.24653129299999998 -0.060879645628048484 \\ + 0.25400278 -0.024963097201692985 \\ + 0.2614468785 0.013319545871643634 \\ + 0.26886054849999996 0.055518221401616774 \\ + 0.276239693 0.10280433488622875 \\ + 0.28353644899999997 0.15780411136948702 \\ + 0.290621996 0.22524439313830957 \\ + 0.2970891745 0.31044977408959173 \\ + 0.3023157715 0.45203161862552355 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={ca06b5af-689d-4336-9621-1dd9d67bedbb}, draw opacity={1.0}, line width={2}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.30232 0.45206 \\ + 0.29709 0.31041 \\ + 0.29062 0.22519 \\ + 0.28354 0.15779 \\ + 0.27624 0.1026 \\ + 0.26886 0.05567 \\ + 0.26145 0.01331 \\ + 0.254 -0.02499 \\ + 0.24653 -0.06078 \\ + 0.23904 -0.09503 \\ + 0.23155 -0.12816 \\ + 0.22405 -0.16006 \\ + 0.21653 -0.19144 \\ + 0.20902 -0.22314 \\ + 0.20152 -0.25453 \\ + 0.19403 -0.28682 \\ + 0.18657 -0.31849 \\ + 0.17912 -0.35151 \\ + 0.1717 -0.38545 \\ + 0.16433 -0.42223 \\ + 0.157 -0.45814 \\ + 0.14972 -0.49634 \\ + 0.1425 -0.53762 \\ + 0.13537 -0.58275 \\ + 0.12841 -0.63387 \\ + 0.12168 -0.68677 \\ + 0.11513 -0.73304 \\ + 0.10867 -0.77443 \\ + 0.10229 -0.81446 \\ + 0.096 -0.85165 \\ + 0.08979 -0.88658 \\ + 0.08367 -0.91859 \\ + 0.07765 -0.94876 \\ + 0.07176 -0.97718 \\ + 0.06599 -0.99927 \\ + 0.06035 -1.0192 \\ + 0.05487 -1.03423 \\ + 0.04956 -1.04504 \\ + 0.04444 -1.04964 \\ + 0.03953 -1.04519 \\ + 0.03485 -1.037 \\ + 0.03043 -1.01719 \\ + 0.02631 -0.98737 \\ + 0.0225 -0.94395 \\ + 0.01904 -0.88564 \\ + 0.01594 -0.80543 \\ + 0.01323 -0.70099 \\ + 0.0109 -0.56371 \\ + 0.00896 -0.38556 \\ + 0.00742 -0.16659 \\ + 0.00628 0.09998 \\ + 0.00556 0.3833 \\ + 0.00526 0.65044 \\ + 0.0054 0.86174 \\ + 0.00601 0.98038 \\ + 0.00708 0.99309 \\ + 0.00859 0.92336 \\ + 0.01052 0.81189 \\ + 0.01286 0.69083 \\ + 0.01561 0.58017 \\ + 0.01878 0.48625 \\ + 0.02238 0.40885 \\ + 0.02643 0.34849 \\ + 0.03093 0.30289 \\ + 0.03587 0.26794 \\ + 0.04125 0.24422 \\ + 0.04704 0.22797 \\ + 0.05323 0.21889 \\ + 0.0598 0.21472 \\ + 0.06674 0.21422 \\ + 0.07403 0.21688 \\ + 0.08167 0.22177 \\ + 0.08964 0.22801 \\ + 0.09794 0.23488 \\ + 0.10657 0.2417 \\ + 0.11548 0.24651 \\ + 0.12318 0.2473 \\ + 0.12946 0.24713 \\ + 0.13562 0.24951 \\ + 0.14177 0.25358 \\ + 0.148 0.25817 \\ + 0.1543 0.26291 \\ + 0.16067 0.26858 \\ + 0.16711 0.27433 \\ + 0.17359 0.28018 \\ + 0.18009 0.28586 \\ + 0.18657 0.29149 \\ + 0.19302 0.29673 \\ + 0.19944 0.30205 \\ + 0.20582 0.30749 \\ + 0.21217 0.31213 \\ + 0.2185 0.31665 \\ + 0.22483 0.32117 \\ + 0.23115 0.32586 \\ + 0.23746 0.33046 \\ + 0.24376 0.33523 \\ + 0.25007 0.3404 \\ + 0.25638 0.3452 \\ + 0.2627 0.35125 \\ + 0.26902 0.35788 \\ + 0.27535 0.36594 \\ + 0.28167 0.37626 \\ + 0.28787 0.3902 \\ + 0.29372 0.41018 \\ + 0.29878 0.44162 \\ + 0.30275 0.50594 \\ + } + ; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/dfdcexample-velocity-comp-105-duct-panels-61-hub-panels.tikz b/v0.5.0/DuctAPE/theory_latex/figures/dfdcexample-velocity-comp-105-duct-panels-61-hub-panels.tikz new file mode 100644 index 00000000..1ea8d764 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/dfdcexample-velocity-comp-105-duct-panels-61-hub-panels.tikz @@ -0,0 +1,160 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={52.15mm}, height={42.926mm}, scaled x ticks={false}, xlabel={x}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.009049374535000015}, xmax={0.314581859035}, xticklabels={{$0.0$,$0.1$,$0.2$,$0.3$}}, xtick={{0.0,0.1,0.2,0.30000000000000004}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$\frac{V_s}{V_\infty}$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={0.033447301661037265}, ymax={1.2199829763043857}, yticklabels={{$0.25$,$0.50$,$0.75$,$1.00$}}, ytick={{0.25,0.5,0.75,1.0}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={27e877da-d3fa-43ce-8d2a-43c66431965f}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.0001102468815 0.31529041703217947 \\ + 0.000519379799 0.13254773819011414 \\ + 0.0012917024425 0.255686018117825 \\ + 0.00241208478 0.366416866845651 \\ + 0.0038782043850000003 0.46468167736247157 \\ + 0.005685289160000001 0.5498912814476091 \\ + 0.007828662175 0.6223302965808457 \\ + 0.010301236545 0.6826632282863937 \\ + 0.0130918459 0.7323875169690929 \\ + 0.0161866769 0.7731017723624428 \\ + 0.019569600950000002 0.8061863793748729 \\ + 0.023221952849999998 0.8331244044913877 \\ + 0.027123609549999997 0.8550371938298958 \\ + 0.03125513905 0.8728979267285635 \\ + 0.0355965365 0.8875284041349865 \\ + 0.0401296262 0.8995368689205488 \\ + 0.04483622315 0.9094422995582597 \\ + 0.049696851550000004 0.9176335695728961 \\ + 0.054698873349999996 0.9242373756628229 \\ + 0.059836067300000004 0.9294052850527109 \\ + 0.06509048305000001 0.9334818043686886 \\ + 0.07044585045 0.9364809885742733 \\ + 0.07589874785 0.9382489381563385 \\ + 0.0814421065 0.9388409230440178 \\ + 0.08706642315 0.9382263954948712 \\ + 0.09277571365000001 0.9362755404560928 \\ + 0.0985472614 0.933185620170384 \\ + 0.1043302085 0.9279572226870142 \\ + 0.1103216375 0.9179220283639005 \\ + 0.1167118775 0.9055395443679994 \\ + 0.12333425149999999 0.897290504134677 \\ + 0.1300519705 0.893793523700694 \\ + 0.136846751 0.891061628158613 \\ + 0.14367851599999998 0.888484061152796 \\ + 0.150522269 0.88661699147966 \\ + 0.1573724595 0.8850617356968256 \\ + 0.164226748 0.8836897206735939 \\ + 0.1710828245 0.8825944462184049 \\ + 0.1779412625 0.881784795309437 \\ + 0.18480045350000002 0.8812454661828868 \\ + 0.191659227 0.8810043924411588 \\ + 0.1985184175 0.8811234113932944 \\ + 0.205377653 0.8817029640065611 \\ + 0.212235443 0.8828902417357749 \\ + 0.21909105 0.8848887871688003 \\ + 0.22593951950000002 0.8879364012408455 \\ + 0.232777931 0.8923132167328685 \\ + 0.23958946050000002 0.8988173608226855 \\ + 0.2462859305 0.9094791230330243 \\ + 0.2526147815 0.9259794306303842 \\ + 0.25840427 0.9456846506077159 \\ + 0.2637838425 0.9631237177356777 \\ + 0.268963471 0.9759415670844092 \\ + 0.27405229200000003 0.9855979290734773 \\ + 0.279061213 0.9940738831490197 \\ + 0.283965975 1.0025075267841508 \\ + 0.28874248300000005 1.011469500680948 \\ + 0.293388501 1.0219594190307035 \\ + 0.29792058450000003 1.0376220233023434 \\ + 0.30231362549999996 1.0715720168273757 \\ + 0.3054224845 1.186401777965423 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={7b41fb0a-2ef8-4023-86b8-2f7c8dd4085e}, draw opacity={1.0}, line width={2}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.30542 0.7564434999999999 \\ + 0.30231 0.8208905 \\ + 0.29792 0.8667515 \\ + 0.29339 0.8947315 \\ + 0.28874 0.9121454999999999 \\ + 0.28397 0.922078 \\ + 0.27906 0.9269455000000001 \\ + 0.27405 0.9283535 \\ + 0.26896 0.9268845000000001 \\ + 0.26378 0.9218885 \\ + 0.2584 0.911662 \\ + 0.25261 0.896109 \\ + 0.24629 0.8797790000000001 \\ + 0.23959 0.868314 \\ + 0.23278 0.86212 \\ + 0.22594 0.858384 \\ + 0.21909 0.8557745000000001 \\ + 0.21224 0.8541025 \\ + 0.20538 0.853181 \\ + 0.19852 0.852835 \\ + 0.19166 0.852908 \\ + 0.1848 0.8533054999999999 \\ + 0.17794 0.853966 \\ + 0.17108 0.854849 \\ + 0.16423 0.855963 \\ + 0.15737 0.857339 \\ + 0.15052 0.8589585 \\ + 0.14368 0.8607065 \\ + 0.13685 0.8628795 \\ + 0.13005 0.865886 \\ + 0.12333 0.8687205 \\ + 0.11671 0.8730969999999999 \\ + 0.11032 0.8839835 \\ + 0.10433 0.8972355000000001 \\ + 0.09855 0.9046609999999999 \\ + 0.09278 0.908161 \\ + 0.08707 0.9109014999999999 \\ + 0.08144 0.9124655 \\ + 0.0759 0.9127105 \\ + 0.07045 0.9119249999999999 \\ + 0.06509 0.9099824999999999 \\ + 0.05984 0.9068815000000001 \\ + 0.0547 0.9028674999999999 \\ + 0.0497 0.897702 \\ + 0.04484 0.8909825 \\ + 0.04013 0.882716 \\ + 0.0356 0.8726635 \\ + 0.03126 0.860307 \\ + 0.02712 0.8451124999999999 \\ + 0.02322 0.8263985 \\ + 0.01957 0.803225 \\ + 0.01619 0.7746069999999999 \\ + 0.01309 0.739283 \\ + 0.0103 0.695681 \\ + 0.00783 0.6425335 \\ + 0.00569 0.5780575 \\ + 0.00388 0.5011215 \\ + 0.00241 0.411364 \\ + 0.00129 0.3087705 \\ + 0.00052 0.19441999999999998 \\ + 0.00011 0.0670285 \\ + } + ; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/dfdcexample-velocity-comp-106-duct-panels-61-hub-panels.tikz b/v0.5.0/DuctAPE/theory_latex/figures/dfdcexample-velocity-comp-106-duct-panels-61-hub-panels.tikz new file mode 100644 index 00000000..b7b76673 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/dfdcexample-velocity-comp-106-duct-panels-61-hub-panels.tikz @@ -0,0 +1,160 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={52.15mm}, height={42.926mm}, scaled x ticks={false}, xlabel={x}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.009049374535000015}, xmax={0.314581859035}, xticklabels={{$0.0$,$0.1$,$0.2$,$0.3$}}, xtick={{0.0,0.1,0.2,0.30000000000000004}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$\frac{V_s}{V_\infty}$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={0.041188749999999996}, ymax={0.9541932500000001}, yticklabels={{$0.2$,$0.4$,$0.6$,$0.8$}}, ytick={{0.2,0.4,0.6000000000000001,0.8}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={fe189536-6394-4870-8141-8ab196edc3bc}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.0001102468815 0.19054824696349137 \\ + 0.000519379799 0.13011655285595483 \\ + 0.0012917024425 0.25096992689356623 \\ + 0.00241208478 0.3595982261859507 \\ + 0.0038782043850000003 0.4559311062440331 \\ + 0.005685289160000001 0.5393825922896096 \\ + 0.007828662175 0.6102291559741563 \\ + 0.010301236545 0.6691247329575019 \\ + 0.0130918459 0.7175431597191093 \\ + 0.0161866769 0.7570602230183439 \\ + 0.019569600950000002 0.7890392046344232 \\ + 0.023221952849999998 0.8149448801934657 \\ + 0.027123609549999997 0.8358882747601516 \\ + 0.03125513905 0.8528351755542845 \\ + 0.0355965365 0.86660269358104 \\ + 0.0401296262 0.8777982438471235 \\ + 0.04483622315 0.8869406260707728 \\ + 0.049696851550000004 0.8944201967247498 \\ + 0.054698873349999996 0.9003698138789632 \\ + 0.059836067300000004 0.9049443333393533 \\ + 0.06509048305000001 0.9084846997096232 \\ + 0.07044585045 0.9110087580318368 \\ + 0.07589874785 0.9123688173026723 \\ + 0.0814421065 0.9126190825189088 \\ + 0.08706642315 0.9117294063005701 \\ + 0.09277571365000001 0.9095720927332618 \\ + 0.0985472614 0.9063367162610211 \\ + 0.1043302085 0.9010512814124508 \\ + 0.1103216375 0.8911212364389829 \\ + 0.1167118775 0.8789277902127534 \\ + 0.12333425149999999 0.870757405319696 \\ + 0.1300519705 0.8672084454071214 \\ + 0.136846751 0.8644079530800562 \\ + 0.14367851599999998 0.8617590157979744 \\ + 0.150522269 0.8597971282554578 \\ + 0.1573724595 0.8581308193233348 \\ + 0.164226748 0.8566300841288055 \\ + 0.1710828245 0.8553795807933634 \\ + 0.1779412625 0.8543808584263871 \\ + 0.18480045350000002 0.8536106022387479 \\ + 0.191659227 0.8530854787470157 \\ + 0.1985184175 0.8528522323014535 \\ + 0.205377653 0.852991177280718 \\ + 0.212235443 0.8536226336047841 \\ + 0.21909105 0.8549138827910076 \\ + 0.22593951950000002 0.8570546498095719 \\ + 0.232777931 0.8602599521539261 \\ + 0.23958946050000002 0.8652202116850166 \\ + 0.2462859305 0.8737772348855509 \\ + 0.2526147815 0.8874126595836602 \\ + 0.25840427 0.9034903171711012 \\ + 0.2637838425 0.9166444426597969 \\ + 0.268963471 0.9243799567535003 \\ + 0.27405229200000003 0.9276633888158088 \\ + 0.279061213 0.9277389417003755 \\ + 0.283965975 0.9247120137885056 \\ + 0.28874248300000005 0.9175511592645209 \\ + 0.293388501 0.9043739680509522 \\ + 0.29792058450000003 0.8826839007544439 \\ + 0.30231362549999996 0.8489954973962208 \\ + 0.3054224845 0.8042532215454425 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={ca4b3df7-fe46-4f86-b19f-feb8b1607eb9}, draw opacity={1.0}, line width={2}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.30542 0.7564434999999999 \\ + 0.30231 0.8208905 \\ + 0.29792 0.8667515 \\ + 0.29339 0.8947315 \\ + 0.28874 0.9121454999999999 \\ + 0.28397 0.922078 \\ + 0.27906 0.9269455000000001 \\ + 0.27405 0.9283535 \\ + 0.26896 0.9268845000000001 \\ + 0.26378 0.9218885 \\ + 0.2584 0.911662 \\ + 0.25261 0.896109 \\ + 0.24629 0.8797790000000001 \\ + 0.23959 0.868314 \\ + 0.23278 0.86212 \\ + 0.22594 0.858384 \\ + 0.21909 0.8557745000000001 \\ + 0.21224 0.8541025 \\ + 0.20538 0.853181 \\ + 0.19852 0.852835 \\ + 0.19166 0.852908 \\ + 0.1848 0.8533054999999999 \\ + 0.17794 0.853966 \\ + 0.17108 0.854849 \\ + 0.16423 0.855963 \\ + 0.15737 0.857339 \\ + 0.15052 0.8589585 \\ + 0.14368 0.8607065 \\ + 0.13685 0.8628795 \\ + 0.13005 0.865886 \\ + 0.12333 0.8687205 \\ + 0.11671 0.8730969999999999 \\ + 0.11032 0.8839835 \\ + 0.10433 0.8972355000000001 \\ + 0.09855 0.9046609999999999 \\ + 0.09278 0.908161 \\ + 0.08707 0.9109014999999999 \\ + 0.08144 0.9124655 \\ + 0.0759 0.9127105 \\ + 0.07045 0.9119249999999999 \\ + 0.06509 0.9099824999999999 \\ + 0.05984 0.9068815000000001 \\ + 0.0547 0.9028674999999999 \\ + 0.0497 0.897702 \\ + 0.04484 0.8909825 \\ + 0.04013 0.882716 \\ + 0.0356 0.8726635 \\ + 0.03126 0.860307 \\ + 0.02712 0.8451124999999999 \\ + 0.02322 0.8263985 \\ + 0.01957 0.803225 \\ + 0.01619 0.7746069999999999 \\ + 0.01309 0.739283 \\ + 0.0103 0.695681 \\ + 0.00783 0.6425335 \\ + 0.00569 0.5780575 \\ + 0.00388 0.5011215 \\ + 0.00241 0.411364 \\ + 0.00129 0.3087705 \\ + 0.00052 0.19441999999999998 \\ + 0.00011 0.0670285 \\ + } + ; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/dfdclewis-pressure-comp-107-duct-panels-78-hub-panels.tikz b/v0.5.0/DuctAPE/theory_latex/figures/dfdclewis-pressure-comp-107-duct-panels-78-hub-panels.tikz new file mode 100644 index 00000000..d003202b --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/dfdclewis-pressure-comp-107-duct-panels-78-hub-panels.tikz @@ -0,0 +1,252 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={52.15mm}, height={42.926mm}, scaled x ticks={false}, xlabel={x}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.028740308989658292}, xmax={1.0241590381259125}, xticklabels={{$0.00$,$0.25$,$0.50$,$0.75$,$1.00$}}, xtick={{0.0,0.25,0.5,0.75,1.0}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_p$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, y dir={reverse}, ymajorgrids={false}, ymin={-0.8011624435777318}, ymax={0.9867773946367724}, yticklabels={{$-0.75$,$-0.50$,$-0.25$,$0.00$,$0.25$,$0.50$,$0.75$}}, ytick={{-0.75,-0.5,-0.25,0.0,0.25,0.5,0.75}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={7c6aba75-f98e-451c-a946-e7d0429e926c}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.994355023 0.2950874968926518 \\ + 0.982092619 0.26709814401544785 \\ + 0.9681902525 0.25350033544330486 \\ + 0.953175187 0.22838067665860273 \\ + 0.9371143285000001 0.19085726514749657 \\ + 0.9198240045 0.14461851077536603 \\ + 0.901000798 0.09127356785459129 \\ + 0.8805665970000001 0.03453087990716397 \\ + 0.8591232895 -0.02100007308923635 \\ + 0.8372083905000001 -0.07918709448815964 \\ + 0.815097064 -0.14342740888634653 \\ + 0.7933405935 -0.2091852279070645 \\ + 0.771980852 -0.26891857734715185 \\ + 0.7506812215 -0.3303420353535915 \\ + 0.7299986780000001 -0.4021672737781594 \\ + 0.7105257215 -0.4718372925223071 \\ + 0.6918145419999999 -0.528354267477152 \\ + 0.6733235125 -0.5809084283031432 \\ + 0.6552076044999999 -0.6350283487998671 \\ + 0.6375718715 -0.6795290097171311 \\ + 0.6201012135 -0.7065172237174027 \\ + 0.602374375 -0.7197848378189999 \\ + 0.5841305555 -0.7256948638361276 \\ + 0.5652986170000001 -0.7304638060147199 \\ + 0.546127737 -0.7400441202960943 \\ + 0.5270031989999999 -0.7499837111300611 \\ + 0.5079137235 -0.7505603726848684 \\ + 0.48849996900000003 -0.7431321629490395 \\ + 0.468649223 -0.737985433961063 \\ + 0.448683232 -0.7363039735502055 \\ + 0.4287768455 -0.7308584172824779 \\ + 0.40876325950000003 -0.7211169785708051 \\ + 0.38857312499999996 -0.7118930422945511 \\ + 0.3683808595 -0.7042591702212846 \\ + 0.348322138 -0.69508874030963 \\ + 0.328363836 -0.6830208066444778 \\ + 0.3084448875 -0.6688393584812751 \\ + 0.288562283 -0.6537911962857132 \\ + 0.26879349350000004 -0.6385407070060838 \\ + 0.249220714 -0.6210724559316159 \\ + 0.2297855245 -0.6000861028961015 \\ + 0.210453108 -0.5794373298813258 \\ + 0.191409886 -0.5597471955168176 \\ + 0.1727912425 -0.536406844073325 \\ + 0.154527664 -0.5093612911313155 \\ + 0.136652969 -0.4816646705676142 \\ + 0.1193142425 -0.4499385348638494 \\ + 0.1025219598 -0.4106935280164594 \\ + 0.08628943935 -0.37124809297070893 \\ + 0.0709218234 -0.3327894900878161 \\ + 0.0567590371 -0.2825474125129459 \\ + 0.0434177034 -0.2243696427093007 \\ + 0.031311044499999996 -0.1631874787050822 \\ + 0.02136806025 -0.10545917461925614 \\ + 0.01331625365 -0.09972991375380102 \\ + 0.007347236855 0.08017875283591569 \\ + 0.00356442924 0.5813623131137208 \\ + 0.0010587291362541078 0.936175323743909 \\ + 0.0012184525862541078 0.9276299225607048 \\ + 0.004088862335 0.5293918791333587 \\ + 0.0085834386 0.056076612115186 \\ + 0.015487411100000001 -0.02782026805763227 \\ + 0.0244704457 -0.03826153843979441 \\ + 0.0355528239 -0.0856127351628746 \\ + 0.049026344 -0.12440463394934742 \\ + 0.064597182 -0.16456738948037697 \\ + 0.08206086979999999 -0.1891125368745421 \\ + 0.10109924884999999 -0.21223745081574075 \\ + 0.1211427115 -0.2341282323569973 \\ + 0.1419803725 -0.24876161055689194 \\ + 0.16357531400000003 -0.26018854065780284 \\ + 0.18573123200000002 -0.27022093646493595 \\ + 0.208450779 -0.27622599512987067 \\ + 0.2316784335 -0.2832048354275609 \\ + 0.255118899 -0.29092842172124844 \\ + 0.2787662745 -0.29602029462601953 \\ + 0.30266360950000004 -0.30094605985270073 \\ + 0.326670885 -0.30640577649657175 \\ + 0.3507320285 -0.31083086605337007 \\ + 0.3749279085 -0.3136455879755309 \\ + 0.39928199350000004 -0.3171706105630243 \\ + 0.4235433635 -0.32337729816936145 \\ + 0.4475874005 -0.32789999783306656 \\ + 0.47164334350000003 -0.3302865394551058 \\ + 0.49551701550000005 -0.3372224341737089 \\ + 0.5188025835000001 -0.3440911229384451 \\ + 0.5418265465000001 -0.3422449824829146 \\ + 0.5649296345 -0.3394207027806535 \\ + 0.587652117 -0.3420604718342577 \\ + 0.609559983 -0.3433404913457192 \\ + 0.6308045685 -0.3347964020483172 \\ + 0.651955515 -0.30937407570399045 \\ + 0.6736617684999999 -0.272505245935464 \\ + 0.6959303619999999 -0.23590446707992196 \\ + 0.7186780275 -0.19238061159867303 \\ + 0.7427898049999999 -0.13870644350069594 \\ + 0.7682478724999999 -0.09172737750804782 \\ + 0.794022292 -0.04800714833762654 \\ + 0.8202933375 0.0020258608767179664 \\ + 0.846894056 0.050587119330427255 \\ + 0.873054773 0.09546042083775252 \\ + 0.8980646729999999 0.14288535844663497 \\ + 0.920918226 0.190345922259609 \\ + 0.9415717125 0.23104323541304672 \\ + 0.9604808389999999 0.25965809770780524 \\ + 0.9778432845 0.27601570663803376 \\ + 0.9930838645 0.2870824706737053 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={6eff45b5-2f41-4de0-83d5-abc445e98ad4}, draw opacity={1.0}, line width={2}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.99308 0.30483 \\ + 0.97784 0.27398 \\ + 0.96048 0.25971 \\ + 0.94157 0.23114 \\ + 0.92092 0.19036 \\ + 0.89806 0.14313 \\ + 0.87305 0.0955 \\ + 0.84689 0.05081 \\ + 0.82029 0.0022 \\ + 0.79402 -0.048 \\ + 0.76825 -0.09114 \\ + 0.74279 -0.13867 \\ + 0.71868 -0.19232 \\ + 0.69593 -0.23704 \\ + 0.67366 -0.269 \\ + 0.65196 -0.30947 \\ + 0.6308 -0.33483 \\ + 0.60956 -0.34321 \\ + 0.58765 -0.34089 \\ + 0.56493 -0.33932 \\ + 0.54183 -0.3398 \\ + 0.5188 -0.34408 \\ + 0.49552 -0.33718 \\ + 0.47164 -0.3335 \\ + 0.44759 -0.32783 \\ + 0.42354 -0.32351 \\ + 0.39928 -0.31711 \\ + 0.37493 -0.31342 \\ + 0.35073 -0.31081 \\ + 0.32667 -0.30637 \\ + 0.30266 -0.3009 \\ + 0.27877 -0.29597 \\ + 0.25512 -0.29086 \\ + 0.23168 -0.2832 \\ + 0.20845 -0.27632 \\ + 0.18573 -0.27039 \\ + 0.16358 -0.25662 \\ + 0.14198 -0.24839 \\ + 0.12114 -0.23387 \\ + 0.1011 -0.21142 \\ + 0.08206 -0.18883 \\ + 0.0646 -0.16467 \\ + 0.04903 -0.12365 \\ + 0.03555 -0.08873 \\ + 0.02447 -0.04012 \\ + 0.01549 -0.02321 \\ + 0.00858 0.06298 \\ + 0.00409 0.53098 \\ + 0.00122 0.92822 \\ + 0.00106 0.93533 \\ + 0.00356 0.5812 \\ + 0.00735 0.08587 \\ + 0.01332 -0.09385 \\ + 0.02137 -0.10796 \\ + 0.03131 -0.16261 \\ + 0.04342 -0.22617 \\ + 0.05676 -0.28407 \\ + 0.07092 -0.33391 \\ + 0.08629 -0.37293 \\ + 0.10252 -0.41139 \\ + 0.11931 -0.45048 \\ + 0.13665 -0.4823 \\ + 0.15453 -0.5081 \\ + 0.17279 -0.53718 \\ + 0.19141 -0.5605 \\ + 0.21045 -0.58019 \\ + 0.22979 -0.60074 \\ + 0.24922 -0.62163 \\ + 0.26879 -0.6392 \\ + 0.28856 -0.65381 \\ + 0.30844 -0.66952 \\ + 0.32836 -0.68375 \\ + 0.34832 -0.69881 \\ + 0.36838 -0.7047 \\ + 0.38857 -0.71303 \\ + 0.40876 -0.72161 \\ + 0.42878 -0.73313 \\ + 0.44868 -0.73692 \\ + 0.46865 -0.7393 \\ + 0.4885 -0.74147 \\ + 0.50791 -0.75039 \\ + 0.527 -0.75037 \\ + 0.54613 -0.74044 \\ + 0.5653 -0.73553 \\ + 0.58413 -0.72625 \\ + 0.60237 -0.72037 \\ + 0.6201 -0.70671 \\ + 0.63757 -0.68374 \\ + 0.65521 -0.63588 \\ + 0.67332 -0.58162 \\ + 0.69181 -0.52809 \\ + 0.71053 -0.47135 \\ + 0.73 -0.40311 \\ + 0.75068 -0.33075 \\ + 0.77198 -0.26933 \\ + 0.79334 -0.20986 \\ + 0.8151 -0.14376 \\ + 0.83721 -0.07959 \\ + 0.85912 -0.02134 \\ + 0.88057 0.03416 \\ + 0.901 0.09121 \\ + 0.91982 0.14433 \\ + 0.93711 0.19008 \\ + 0.95318 0.22778 \\ + 0.96819 0.253 \\ + 0.98209 0.26973 \\ + 0.99436 0.30306 \\ + } + ; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/dfdclewis-velocity-comp-107-duct-panels-78-hub-panels.tikz b/v0.5.0/DuctAPE/theory_latex/figures/dfdclewis-velocity-comp-107-duct-panels-78-hub-panels.tikz new file mode 100644 index 00000000..5878e381 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/dfdclewis-velocity-comp-107-duct-panels-78-hub-panels.tikz @@ -0,0 +1,194 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={52.15mm}, height={42.926mm}, scaled x ticks={false}, xlabel={x}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.040539029760945144}, xmax={1.400196673779445}, xticklabels={{$0.00$,$0.25$,$0.50$,$0.75$,$1.00$,$1.25$}}, xtick={{0.0,0.25,0.5,0.75,1.0,1.25}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$\frac{V_s}{V_\infty}$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={0.01633303648296569}, ymax={1.496527804762632}, yticklabels={{$0.25$,$0.50$,$0.75$,$1.00$,$1.25$}}, ytick={{0.25,0.5,0.75,1.0,1.25}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={7bad2c26-b2d4-4edb-821d-b3de5a24ee63}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.0002365090185 0.05822534124559771 \\ + 0.0011492094485 0.17281861247973546 \\ + 0.0029288538500000004 0.28429927931085786 \\ + 0.00555571262 0.3936862307776444 \\ + 0.0090133229 0.5009125687403377 \\ + 0.013282631100000001 0.6053684929892662 \\ + 0.0183416703 0.7065148957660728 \\ + 0.02416467665 0.8038850013418648 \\ + 0.03072046765 0.8969758568151193 \\ + 0.03797308725 0.9851494758790975 \\ + 0.0458844807 1.06772294872396 \\ + 0.0542984307 1.1439189782633659 \\ + 0.0631537512 1.2124989584612604 \\ + 0.0725014061 1.2741190070167157 \\ + 0.08229906114999999 1.327341336182284 \\ + 0.0925162323 1.3714250277547229 \\ + 0.1031089949 1.4074709890539763 \\ + 0.11398820949999999 1.4364963792609273 \\ + 0.125067245 1.4544331296899464 \\ + 0.1364190055 1.4489447740191266 \\ + 0.14854758950000002 1.4082538444136827 \\ + 0.16267373400000001 1.3415748010139286 \\ + 0.1805795805 1.280133028606365 \\ + 0.2022239045 1.241613279069433 \\ + 0.2255844475 1.2203499869434258 \\ + 0.2494025755 1.2082196478235911 \\ + 0.2733567655 1.2006182761570035 \\ + 0.29735346149999997 1.1955825507754874 \\ + 0.32137130199999997 1.1922978885070588 \\ + 0.345398262 1.190105148243255 \\ + 0.369428709 1.1885514870578073 \\ + 0.39345933499999997 1.1873989729351457 \\ + 0.4174864445 1.186492171457195 \\ + 0.441506654 1.1856696307826362 \\ + 0.465513676 1.184853339989975 \\ + 0.4894966035 1.1841803009674075 \\ + 0.5134412349999999 1.1837900780161998 \\ + 0.5373023155000001 1.1833429738011723 \\ + 0.5610522035000001 1.1823158600851145 \\ + 0.5845570265 1.1816613350745953 \\ + 0.6077578960000001 1.184203502555894 \\ + 0.6303894219999999 1.1896900721668227 \\ + 0.6521198745 1.1912831996572195 \\ + 0.672984868 1.1849602773403192 \\ + 0.6923325655 1.1806063544870624 \\ + 0.710163593 1.201412065612424 \\ + 0.7269395590000001 1.2569762868619616 \\ + 0.7417331635 1.324981823842789 \\ + 0.7543979285 1.3762044872103618 \\ + 0.766074419 1.3889649081449975 \\ + 0.7779119315 1.3501193637482267 \\ + 0.7910832765 1.2724683920257336 \\ + 0.8062634765 1.1820704036522374 \\ + 0.8224272724999999 1.115033352587353 \\ + 0.8392564355000001 1.0881782300694414 \\ + 0.857923746 1.0834566982636669 \\ + 0.877935499 1.0781425829598583 \\ + 0.8987647295 1.0625202932595328 \\ + 0.9205408989999999 1.0430778507237584 \\ + 0.942860246 1.0273671470176122 \\ + 0.9655560255 1.0154206133745611 \\ + 0.988501191 1.00421762706728 \\ + 1.011777045 0.9928795525558389 \\ + 1.03534973 0.9821341091126043 \\ + 1.05896163 0.9722614243535721 \\ + 1.08259976 0.9629237320182262 \\ + 1.106249155 0.9539430487932539 \\ + 1.12990588 0.94528045472469 \\ + 1.153565645 0.936851228738154 \\ + 1.177227315 0.9285331898285516 \\ + 1.200889885 0.9201992230152566 \\ + 1.2245526899999999 0.9116903088953796 \\ + 1.2482149599999999 0.9027835483888801 \\ + 1.271873415 0.8931321538980675 \\ + 1.29550415 0.8821817156697926 \\ + 1.31893122 0.8681930535745055 \\ + 1.34113866 0.8619456336446654 \\ + 1.3594211349999998 0.7664729524227176 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={03d3cea3-f449-4434-bd01-344665649d2c}, draw opacity={1.0}, line width={2}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 1.35942 0.766529 \\ + 1.34114 0.8620085 \\ + 1.31893 0.8682605000000001 \\ + 1.2955 0.8822525000000001 \\ + 1.27187 0.8932074999999999 \\ + 1.24821 0.9028639999999999 \\ + 1.22455 0.911774 \\ + 1.20089 0.920284 \\ + 1.17723 0.9286199999999999 \\ + 1.15357 0.9369425 \\ + 1.12991 0.9453765000000001 \\ + 1.10625 0.9540435 \\ + 1.0826 0.9630280000000001 \\ + 1.05896 0.9723694999999999 \\ + 1.03535 0.982245 \\ + 1.01178 0.992996 \\ + 0.9885 1.0043405 \\ + 0.96556 1.015542 \\ + 0.94286 1.0274940000000001 \\ + 0.92054 1.043212 \\ + 0.89876 1.0626575 \\ + 0.87794 1.078284 \\ + 0.85792 1.0836025 \\ + 0.83926 1.0883185 \\ + 0.82243 1.1151935 \\ + 0.80626 1.1822329999999999 \\ + 0.79108 1.2726485 \\ + 0.77791 1.3503045 \\ + 0.76607 1.389188 \\ + 0.7544 1.3763960000000002 \\ + 0.74173 1.3251675 \\ + 0.72694 1.2571695 \\ + 0.71016 1.2015980000000002 \\ + 0.69233 1.1807815 \\ + 0.67298 1.1851425 \\ + 0.65212 1.191465 \\ + 0.63039 1.1898754999999999 \\ + 0.60776 1.184389 \\ + 0.58456 1.181848 \\ + 0.56105 1.182507 \\ + 0.5373 1.183532 \\ + 0.51344 1.1839765 \\ + 0.4895 1.1843685000000002 \\ + 0.46551 1.1850515 \\ + 0.44151 1.1858615000000001 \\ + 0.41749 1.1866854999999998 \\ + 0.39346 1.1875930000000001 \\ + 0.36943 1.188742 \\ + 0.3454 1.190295 \\ + 0.32137 1.192487 \\ + 0.29735 1.1957725 \\ + 0.27336 1.2008105 \\ + 0.2494 1.20841 \\ + 0.22558 1.2205394999999999 \\ + 0.20222 1.2418005 \\ + 0.18058 1.2803195 \\ + 0.16267 1.3417795 \\ + 0.14855 1.4084619999999999 \\ + 0.13642 1.449097 \\ + 0.12507 1.4546355 \\ + 0.11399 1.4367115 \\ + 0.10311 1.4076605 \\ + 0.09252 1.371616 \\ + 0.0823 1.327516 \\ + 0.0725 1.2742915 \\ + 0.06315 1.2126554999999999 \\ + 0.0543 1.144066 \\ + 0.04588 1.06786 \\ + 0.03797 0.9852745 \\ + 0.03072 0.89709 \\ + 0.02416 0.8039845 \\ + 0.01834 0.7066 \\ + 0.01328 0.6054405 \\ + 0.00901 0.5009725 \\ + 0.00556 0.393733 \\ + 0.00293 0.284333 \\ + 0.00115 0.17283900000000002 \\ + 0.00024 0.05823199999999999 \\ + } + ; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/doublet_panel.jl b/v0.5.0/DuctAPE/theory_latex/figures/doublet_panel.jl new file mode 100644 index 00000000..7a4cb698 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/doublet_panel.jl @@ -0,0 +1,46 @@ +using DuctTAPE +const dt = DuctTAPE +include("../../plots_default_new.jl") + +x = [0.0; 1.0] +y = [0.25; 0.0] +xy = [x y] +panel = dt.generate_panels(xy) + +annoteoffset = 0.05 + +p = plot(aspectratio=1, axis=false) + +plot!(panel.nodes[1,:,1],panel.nodes[1,:,2], marker=true, arrow=true,markersize=2, color=blue[1], label="") +plot!([panel.nodes[1,2,1]], [panel.nodes[1,2,2]], seriestype=:scatter, label="", color=blue[1], markersize=2) +annotate!(panel.nodes[1,1,1], annoteoffset+panel.nodes[1,1,2], text(L"p_1", 12, :center, color=blue[1])) +annotate!(panel.nodes[1,2,1], annoteoffset+panel.nodes[1,2,2], text(L"p_2", 12, :center, color=blue[1])) + +normal_scale=0.25 +normal_x = panel.control_point[1,1].+[0.0; normal_scale*panel.normal[1,1]] +normal_y = panel.control_point[1,2].+[0.0; normal_scale*panel.normal[1,2]] + +plot!(normal_x, normal_y, arrow=true, color=red[1], label="") +annotate!(normal_x[2]+annoteoffset, normal_y[2]-annoteoffset, text(L"\hat{n}", 12, :center, color=red[1])) + +plot!([panel.control_point[1,1]], [panel.control_point[1,2]], seriestype=:scatter, markersize=3, markershape=:rect, color=red[2], label="") +annotate!(normal_x[1], normal_y[1]-annoteoffset, text(L"\bar{p}", 12, :center, color=red[2])) + + +function makecircle(R,h,v,n; start=pi/2, stop=5*pi/2) + t = range(start,stop,n) + x = R*cos.(t) .+ h + y = R*sin.(t) .+ v + return x,y +end + +x,y = makecircle(0.05,panel.nodes[1,1,1], panel.nodes[1,1,2],120, start=5*pi/6, stop=11*pi/5) +plot!(x[1:end-2],y[1:end-2],linecolor=1,arrow=true, color=blue[2], label="") +annotate!(panel.nodes[1,1,1], -1.5*annoteoffset+panel.nodes[1,1,2], text(L"\gamma_1=+\mu", 12, :left, color=blue[2])) + +x,y = makecircle(0.05,panel.nodes[1,2,1], panel.nodes[1,2,2],120, stop=4*pi/6, start=11*pi/5) +plot!(x[1:end-2],y[1:end-2],linecolor=1,arrow=true,color=blue[2], label="") +annotate!(panel.nodes[1,2,1], -1.5*annoteoffset+panel.nodes[1,2,2], text(L"\gamma_2=-\mu", 12, :right, color=blue[2])) + +savefig(p,"margin_doublet_panel.tikz") +# savefig(p,"margin_doublet_panel.pdf") diff --git a/v0.5.0/DuctAPE/theory_latex/figures/dragstall-cutoff.tikz b/v0.5.0/DuctAPE/theory_latex/figures/dragstall-cutoff.tikz new file mode 100644 index 00000000..3eb19af1 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/dragstall-cutoff.tikz @@ -0,0 +1,446 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={45.8mm}, height={50.8mm}, scaled x ticks={false}, xlabel={Angle of Attack (radians)}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.7853981633974483}, xmax={0.7853981633974483}, xticklabels={{$-0.7$,$0.0$,$0.7$}}, xtick={{-0.7,0.0,0.7}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_d$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={-0.004726450363115031}, ymax={0.3501599290647303}, yticklabels={{$0.0$,$0.1$,$0.2$,$0.3$}}, ytick={{0.0,0.1,0.2,0.30000000000000004}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={bdd58c6d-19f0-4a35-8c87-e4223043d1e4}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -0.3490658503988659 0.22253838132616477 \\ + -0.3316125578789226 0.16796282769950013 \\ + -0.3141592653589793 0.1596778159277443 \\ + -0.2792526803190927 0.08422465361046082 \\ + -0.2617993877991494 0.025664080343649625 \\ + -0.24434609527920614 0.020321706448338677 \\ + -0.22689280275926285 0.017362599181849295 \\ + -0.20943951023931953 0.015129582907198956 \\ + -0.19198621771937624 0.01264039494333479 \\ + -0.17453292519943295 0.011265337773330403 \\ + -0.15707963267948966 0.009916094661964555 \\ + -0.13962634015954636 0.00913068830622313 \\ + -0.12217304763960307 0.008279670274612487 \\ + -0.10471975511965977 0.007660311583124659 \\ + -0.08726646259971647 0.007183773068856983 \\ + -0.06981317007977318 0.006832662122038555 \\ + -0.05235987755982988 0.006599951987190126 \\ + -0.03490658503988659 0.0064221777662872076 \\ + -0.017453292519943295 0.006329332347483174 \\ + 0.0 0.00629638407416882 \\ + 0.017453292519943295 0.0060679012451152325 \\ + 0.03490658503988659 0.005317503771635288 \\ + 0.05235987755982988 0.005633927747874414 \\ + 0.06981317007977318 0.006056196387976169 \\ + 0.08726646259971647 0.006576603305621797 \\ + 0.10471975511965977 0.007431334942248487 \\ + 0.12217304763960307 0.008755888667524615 \\ + 0.13962634015954636 0.010572317026226193 \\ + 0.15707963267948966 0.012306674271232844 \\ + 0.17453292519943295 0.013993677931318668 \\ + 0.19198621771937624 0.01591991787576938 \\ + 0.20943951023931953 0.018326453917654036 \\ + 0.22689280275926285 0.021350809116202588 \\ + 0.24434609527920614 0.025209297180026756 \\ + 0.2617993877991494 0.030641294920038895 \\ + 0.2792526803190927 0.03725723886650568 \\ + 0.29670597283903605 0.04699828485379302 \\ + 0.3141592653589793 0.057372636106898585 \\ + 0.3316125578789226 0.0703436170277454 \\ + 0.3490658503988659 0.08604955516972278 \\ + 0.3665191429188092 0.10569798553689437 \\ + 0.3839724354387525 0.12405262936920293 \\ + 0.40142572795869574 0.14354519513993408 \\ + 0.41887902047863906 0.16465358911032568 \\ + 0.4363323129985824 0.18725407754431073 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={88e754e4-fc36-4506-89b8-6ccd1282a179}, draw opacity={1.0}, line width={2}, dashed, forget plot] + table[row sep={\\}] + { + \\ + -3.141592653589793 0.31364340692271403 \\ + -3.12413936106985 0.3118980776707197 \\ + -3.1066860685499065 0.31015274841872537 \\ + -3.0892327760299634 0.30840741916673103 \\ + -3.07177948351002 0.3066620899147367 \\ + -3.0543261909900767 0.30491676066274237 \\ + -3.036872898470133 0.30317143141074804 \\ + -3.01941960595019 0.3014261021587537 \\ + -3.0019663134302466 0.2996807729067594 \\ + -2.9845130209103035 0.29793544365476504 \\ + -2.9670597283903604 0.29619011440277077 \\ + -2.949606435870417 0.2944447851507764 \\ + -2.9321531433504737 0.2926994558987821 \\ + -2.91469985083053 0.2909541266467877 \\ + -2.897246558310587 0.28920879739479344 \\ + -2.8797932657906435 0.28746346814279905 \\ + -2.8623399732707004 0.2857181388908048 \\ + -2.844886680750757 0.2839728096388104 \\ + -2.827433388230814 0.2822274803868161 \\ + -2.8099800957108707 0.2804821511348218 \\ + -2.792526803190927 0.27873682188282745 \\ + -2.775073510670984 0.2769914926308331 \\ + -2.7576202181510405 0.2752461633788388 \\ + -2.7401669256310974 0.27350083412684445 \\ + -2.722713633111154 0.27175550487485006 \\ + -2.705260340591211 0.2700101756228558 \\ + -2.6878070480712672 0.2682648463708614 \\ + -2.670353755551324 0.2665195171188671 \\ + -2.652900463031381 0.2647741878668728 \\ + -2.6354471705114375 0.26302885861487846 \\ + -2.6179938779914944 0.2612835293628841 \\ + -2.600540585471551 0.2595382001108898 \\ + -2.5830872929516078 0.25779287085889546 \\ + -2.5656340004316642 0.25604754160690113 \\ + -2.548180707911721 0.2543022123549068 \\ + -2.5307274153917776 0.25255688310291247 \\ + -2.5132741228718345 0.25081155385091813 \\ + -2.4958208303518914 0.24906622459892383 \\ + -2.478367537831948 0.24732089534692947 \\ + -2.4609142453120048 0.24557556609493517 \\ + -2.443460952792061 0.2438302368429408 \\ + -2.426007660272118 0.24208490759094647 \\ + -2.4085543677521746 0.24033957833895214 \\ + -2.3911010752322315 0.2385942490869578 \\ + -2.373647782712288 0.23684891983496348 \\ + -2.356194490192345 0.23510359058296915 \\ + -2.3387411976724017 0.23335826133097484 \\ + -2.321287905152458 0.2316129320789805 \\ + -2.303834612632515 0.2298676028269862 \\ + -2.2863813201125716 0.22812227357499185 \\ + -2.2689280275926285 0.22637694432299754 \\ + -2.251474735072685 0.22463161507100318 \\ + -2.234021442552742 0.22288628581900888 \\ + -2.2165681500327983 0.22114095656701452 \\ + -2.199114857512855 0.21939562731502021 \\ + -2.181661564992912 0.2176502980630259 \\ + -2.1642082724729685 0.21590496881103155 \\ + -2.1467549799530254 0.21415963955903725 \\ + -2.129301687433082 0.2124143103070429 \\ + -2.111848394913139 0.21066898105504858 \\ + -2.0943951023931953 0.20892365180305422 \\ + -2.076941809873252 0.20717832255105992 \\ + -2.0594885173533086 0.20543299329906556 \\ + -2.0420352248333655 0.20368766404707125 \\ + -2.0245819323134224 0.20194233479507692 \\ + -2.007128639793479 0.20019700554308256 \\ + -1.9896753472735356 0.19845167629108823 \\ + -1.9722220547535922 0.1967063470390939 \\ + -1.9547687622336491 0.1949610177870996 \\ + -1.9373154697137058 0.19321568853510526 \\ + -1.9198621771937625 0.19147035928311093 \\ + -1.9024088846738192 0.1897250300311166 \\ + -1.8849555921538759 0.18797970077912227 \\ + -1.8675022996339325 0.18623437152712793 \\ + -1.8500490071139892 0.18448904227513363 \\ + -1.832595714594046 0.1827437130231393 \\ + -1.8151424220741026 0.18099838377114494 \\ + -1.7976891295541595 0.17925305451915066 \\ + -1.7802358370342162 0.17750772526715633 \\ + -1.7627825445142729 0.175762396015162 \\ + -1.7453292519943295 0.17401706676316767 \\ + -1.7278759594743862 0.17227173751117333 \\ + -1.710422666954443 0.17052640825917897 \\ + -1.6929693744344996 0.16878107900718464 \\ + -1.6755160819145563 0.1670357497551903 \\ + -1.658062789394613 0.16529042050319598 \\ + -1.6406094968746698 0.16354509125120167 \\ + -1.6231562043547265 0.16179976199920734 \\ + -1.6057029118347832 0.160054432747213 \\ + -1.5882496193148399 0.15830910349521868 \\ + -1.5707963267948966 0.15656377424322435 \\ + -1.5533430342749532 0.15481844499123001 \\ + -1.53588974175501 0.15307311573923568 \\ + -1.5184364492350666 0.15132778648724135 \\ + -1.5009831567151233 0.14958245723524702 \\ + -1.4835298641951802 0.14783712798325271 \\ + -1.4660765716752369 0.14609179873125838 \\ + -1.4486232791552935 0.14434646947926405 \\ + -1.4311699866353502 0.14260114022726972 \\ + -1.413716694115407 0.1408558109752754 \\ + -1.3962634015954636 0.13911048172328105 \\ + -1.3788101090755203 0.13736515247128672 \\ + -1.361356816555577 0.1356198232192924 \\ + -1.3439035240356336 0.13387449396729803 \\ + -1.3264502315156905 0.1321291647153037 \\ + -1.3089969389957472 0.1303838354633094 \\ + -1.2915436464758039 0.12863850621131506 \\ + -1.2740903539558606 0.12689317695932073 \\ + -1.2566370614359172 0.1251478477073264 \\ + -1.239183768915974 0.12340251845533208 \\ + -1.2217304763960306 0.12165718920333775 \\ + -1.2042771838760873 0.11991185995134343 \\ + -1.186823891356144 0.1181665306993491 \\ + -1.1693705988362009 0.1164212014473548 \\ + -1.1519173063162575 0.11467587219536046 \\ + -1.1344640137963142 0.11293054294336613 \\ + -1.117010721276371 0.1111852136913718 \\ + -1.0995574287564276 0.10943988443937747 \\ + -1.0821041362364843 0.10769455518738313 \\ + -1.064650843716541 0.1059492259353888 \\ + -1.0471975511965976 0.10420389668339447 \\ + -1.0297442586766543 0.10245856743140014 \\ + -1.0122909661567112 0.10071323817940582 \\ + -0.9948376736367678 0.09896790892741149 \\ + -0.9773843811168246 0.09722257967541716 \\ + -0.9599310885968813 0.09547725042342282 \\ + -0.9424777960769379 0.09373192117142849 \\ + -0.9250245035569946 0.09198659191943416 \\ + -0.9075712110370513 0.09024126266743983 \\ + -0.8901179185171081 0.08849593341544551 \\ + -0.8726646259971648 0.08675060416345118 \\ + -0.8552113334772214 0.08500527491145685 \\ + -0.8377580409572781 0.08325994565946251 \\ + -0.8203047484373349 0.08151461640746818 \\ + -0.8028514559173916 0.07976928715547385 \\ + -0.7853981633974483 0.07802395790347952 \\ + -0.767944870877505 0.07627862865148519 \\ + -0.7504915783575616 0.07453329939949085 \\ + -0.7330382858376184 0.07278797014749654 \\ + -0.7155849933176751 0.0710426408955022 \\ + -0.6981317007977318 0.06929731164350787 \\ + -0.6806784082777885 0.06755198239151354 \\ + -0.6632251157578453 0.06580665313951921 \\ + -0.6457718232379019 0.06406132388752488 \\ + -0.6283185307179586 0.062315994635530544 \\ + -0.6108652381980153 0.06057066538353621 \\ + -0.593411945678072 0.05882533613154188 \\ + -0.5759586531581288 0.05708000687954756 \\ + -0.5585053606381855 0.05533467762755323 \\ + -0.5410520681182421 0.05358934837555889 \\ + -0.5235987755982988 0.05184401912356456 \\ + -0.5061454830783556 0.05009868987157024 \\ + -0.4886921905584123 0.0483533606195759 \\ + -0.47123889803846897 0.04660803136758157 \\ + -0.45378560551852565 0.044862702115587245 \\ + -0.4363323129985824 0.043117372863592913 \\ + -0.41887902047863906 0.041372043611598575 \\ + -0.4014257279586958 0.03962671435960428 \\ + -0.3839724354387525 0.037881385107610015 \\ + -0.3665191429188092 0.03613605585561567 \\ + -0.3490658503988659 0.03439072660362114 \\ + -0.33161255787892263 0.03264539735162631 \\ + -0.3141592653589793 0.030900068099631053 \\ + -0.296705972839036 0.02915473884763525 \\ + -0.2792526803190927 0.027409409595638798 \\ + -0.2617993877991494 0.025664080343641565 \\ + -0.24434609527920614 0.021381756049354342 \\ + -0.22689280275926282 0.018077666799427967 \\ + -0.20943951023931953 0.015489824897380025 \\ + -0.19198621771937624 0.012819123344961037 \\ + -0.17453292519943295 0.011336669082074114 \\ + -0.15707963267948966 0.009944022674818361 \\ + -0.13962634015954636 0.009140264030071683 \\ + -0.12217304763960307 0.008282846425113606 \\ + -0.10471975511965977 0.007661202482599106 \\ + -0.08726646259971647 0.0071839396486049955 \\ + -0.06981317007977318 0.0068326372921262086 \\ + -0.05235987755982988 0.006599898909126306 \\ + -0.03490658503988659 0.006422137396965193 \\ + -0.017453292519943295 0.006329308259119943 \\ + 2.524354896707238e-29 0.006296372963981781 \\ + 0.017453292519943295 0.006067901858370478 \\ + 0.03490658503988659 0.0053175212373090695 \\ + 0.05235987755982988 0.0056339788324660045 \\ + 0.06981317007977318 0.006056328441783342 \\ + 0.08726646259971647 0.006576935465426823 \\ + 0.10471975511965977 0.00743215589418155 \\ + 0.12217304763960307 0.008757882259679462 \\ + 0.13962634015954636 0.01057707645643728 \\ + 0.15707963267948966 0.012318066694881766 \\ + 0.17453292519943295 0.014020982635329127 \\ + 0.19198621771937624 0.01598477991285393 \\ + 0.20943951023931953 0.018477708515915715 \\ + 0.22689280275926282 0.021694068619070514 \\ + 0.24434609527920614 0.025954161152826474 \\ + 0.2617993877991494 0.03210274905833797 \\ + 0.2792526803190927 0.039728294893018025 \\ + 0.296705972839036 0.04954125894403976 \\ + 0.3141592653589793 0.057372636106884686 \\ + 0.33161255787892263 0.059117965358884715 \\ + 0.3490658503988659 0.06086329461088306 \\ + 0.3665191429188092 0.06260862386287998 \\ + 0.3839724354387525 0.06435395311487578 \\ + 0.4014257279586958 0.06609928236687074 \\ + 0.41887902047863906 0.06784461161886511 \\ + 0.4363323129985824 0.06958994087085918 \\ + 0.45378560551852565 0.07133527012285326 \\ + 0.47123889803846897 0.07308059937484754 \\ + 0.4886921905584123 0.07482592862684187 \\ + 0.5061454830783556 0.0765712578788362 \\ + 0.5235987755982988 0.07831658713083053 \\ + 0.5410520681182421 0.08006191638282487 \\ + 0.5585053606381855 0.0818072456348192 \\ + 0.5759586531581288 0.08355257488681353 \\ + 0.593411945678072 0.08529790413880785 \\ + 0.6108652381980153 0.08704323339080218 \\ + 0.6283185307179586 0.08878856264279651 \\ + 0.6457718232379019 0.09053389189479084 \\ + 0.6632251157578453 0.09227922114678518 \\ + 0.6806784082777885 0.09402455039877951 \\ + 0.6981317007977318 0.09576987965077384 \\ + 0.7155849933176751 0.09751520890276817 \\ + 0.7330382858376184 0.09926053815476252 \\ + 0.7504915783575616 0.10100586740675684 \\ + 0.767944870877505 0.10275119665875115 \\ + 0.7853981633974483 0.10449652591074549 \\ + 0.8028514559173916 0.10624185516273983 \\ + 0.8203047484373349 0.10798718441473416 \\ + 0.8377580409572781 0.10973251366672848 \\ + 0.8552113334772214 0.11147784291872281 \\ + 0.8726646259971648 0.11322317217071715 \\ + 0.8901179185171081 0.11496850142271148 \\ + 0.9075712110370513 0.11671383067470581 \\ + 0.9250245035569946 0.11845915992670013 \\ + 0.9424777960769379 0.12020448917869446 \\ + 0.9599310885968813 0.12194981843068879 \\ + 0.9773843811168246 0.12369514768268312 \\ + 0.9948376736367678 0.12544047693467744 \\ + 1.0122909661567112 0.12718580618667177 \\ + 1.0297442586766543 0.12893113543866605 \\ + 1.0471975511965976 0.1306764646906604 \\ + 1.064650843716541 0.13242179394265474 \\ + 1.0821041362364843 0.13416712319464907 \\ + 1.0995574287564276 0.1359124524466434 \\ + 1.117010721276371 0.13765778169863774 \\ + 1.1344640137963142 0.13940311095063207 \\ + 1.1519173063162575 0.1411484402026264 \\ + 1.1693705988362009 0.14289376945462073 \\ + 1.186823891356144 0.14463909870661507 \\ + 1.2042771838760873 0.1463844279586094 \\ + 1.2217304763960306 0.1481297572106037 \\ + 1.239183768915974 0.14987508646259803 \\ + 1.2566370614359172 0.15162041571459237 \\ + 1.2740903539558606 0.1533657449665867 \\ + 1.2915436464758039 0.15511107421858103 \\ + 1.3089969389957472 0.1568564034705754 \\ + 1.3264502315156905 0.15860173272256972 \\ + 1.3439035240356336 0.16034706197456403 \\ + 1.361356816555577 0.16209239122655836 \\ + 1.3788101090755203 0.1638377204785527 \\ + 1.3962634015954636 0.16558304973054702 \\ + 1.413716694115407 0.16732837898254135 \\ + 1.4311699866353502 0.16907370823453569 \\ + 1.4486232791552935 0.17081903748653002 \\ + 1.4660765716752369 0.17256436673852435 \\ + 1.4835298641951802 0.17430969599051868 \\ + 1.5009831567151233 0.17605502524251299 \\ + 1.5184364492350666 0.17780035449450732 \\ + 1.53588974175501 0.17954568374650165 \\ + 1.5533430342749532 0.18129101299849598 \\ + 1.5707963267948966 0.1830363422504903 \\ + 1.5882496193148399 0.18478167150248465 \\ + 1.6057029118347832 0.18652700075447898 \\ + 1.6231562043547265 0.1882723300064733 \\ + 1.6406094968746698 0.19001765925846764 \\ + 1.658062789394613 0.19176298851046195 \\ + 1.6755160819145563 0.19350831776245628 \\ + 1.6929693744344996 0.1952536470144506 \\ + 1.710422666954443 0.19699897626644494 \\ + 1.7278759594743862 0.19874430551843927 \\ + 1.7453292519943295 0.2004896347704336 \\ + 1.7627825445142729 0.20223496402242794 \\ + 1.7802358370342162 0.20398029327442227 \\ + 1.7976891295541595 0.2057256225264166 \\ + 1.8151424220741026 0.2074709517784109 \\ + 1.832595714594046 0.20921628103040524 \\ + 1.8500490071139892 0.21096161028239957 \\ + 1.8675022996339325 0.2127069395343939 \\ + 1.8849555921538759 0.21445226878638823 \\ + 1.9024088846738192 0.21619759803838257 \\ + 1.9198621771937625 0.2179429272903769 \\ + 1.9373154697137058 0.21968825654237123 \\ + 1.9547687622336491 0.22143358579436556 \\ + 1.9722220547535922 0.22317891504635987 \\ + 1.9896753472735356 0.2249242442983542 \\ + 2.007128639793479 0.22666957355034853 \\ + 2.0245819323134224 0.2284149028023429 \\ + 2.0420352248333655 0.2301602320543372 \\ + 2.0594885173533086 0.23190556130633153 \\ + 2.076941809873252 0.23365089055832586 \\ + 2.0943951023931953 0.2353962198103202 \\ + 2.111848394913139 0.23714154906231455 \\ + 2.129301687433082 0.23888687831430885 \\ + 2.1467549799530254 0.2406322075663032 \\ + 2.1642082724729685 0.24237753681829752 \\ + 2.181661564992912 0.24412286607029188 \\ + 2.199114857512855 0.24586819532228618 \\ + 2.2165681500327983 0.24761352457428049 \\ + 2.234021442552742 0.24935885382627485 \\ + 2.251474735072685 0.25110418307826915 \\ + 2.2689280275926285 0.2528495123302635 \\ + 2.2863813201125716 0.2545948415822578 \\ + 2.303834612632515 0.25634017083425215 \\ + 2.321287905152458 0.2580855000862465 \\ + 2.3387411976724017 0.2598308293382408 \\ + 2.356194490192345 0.26157615859023514 \\ + 2.373647782712288 0.2633214878422295 \\ + 2.3911010752322315 0.2650668170942238 \\ + 2.4085543677521746 0.26681214634621814 \\ + 2.426007660272118 0.26855747559821247 \\ + 2.443460952792061 0.2703028048502068 \\ + 2.4609142453120048 0.27204813410220113 \\ + 2.478367537831948 0.27379346335419547 \\ + 2.4958208303518914 0.2755387926061898 \\ + 2.5132741228718345 0.27728412185818413 \\ + 2.5307274153917776 0.2790294511101784 \\ + 2.548180707911721 0.2807747803621728 \\ + 2.5656340004316642 0.28252010961416707 \\ + 2.5830872929516078 0.28426543886616146 \\ + 2.600540585471551 0.28601076811815573 \\ + 2.6179938779914944 0.2877560973701501 \\ + 2.6354471705114375 0.2895014266221444 \\ + 2.652900463031381 0.2912467558741388 \\ + 2.670353755551324 0.29299208512613306 \\ + 2.6878070480712672 0.2947374143781274 \\ + 2.705260340591211 0.2964827436301217 \\ + 2.722713633111154 0.29822807288211606 \\ + 2.7401669256310974 0.2999734021341104 \\ + 2.7576202181510405 0.3017187313861047 \\ + 2.775073510670984 0.30346406063809905 \\ + 2.792526803190927 0.3052093898900934 \\ + 2.8099800957108707 0.3069547191420877 \\ + 2.827433388230814 0.30870004839408205 \\ + 2.844886680750757 0.3104453776460763 \\ + 2.8623399732707004 0.3121907068980707 \\ + 2.8797932657906435 0.313936036150065 \\ + 2.897246558310587 0.3156813654020594 \\ + 2.91469985083053 0.31742669465405365 \\ + 2.9321531433504737 0.31917202390604804 \\ + 2.949606435870417 0.3209173531580423 \\ + 2.9670597283903604 0.3226626824100367 \\ + 2.9845130209103035 0.324408011662031 \\ + 3.0019663134302466 0.3261533409140253 \\ + 3.01941960595019 0.32789867016601965 \\ + 3.036872898470133 0.329643999418014 \\ + 3.0543261909900767 0.3313893286700083 \\ + 3.07177948351002 0.33313465792200264 \\ + 3.0892327760299634 0.334879987173997 \\ + 3.1066860685499065 0.3366253164259913 \\ + 3.12413936106985 0.33837064567798564 \\ + 3.141592653589793 0.34011597492997997 \\ + } + ; + \node[right, , color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:-0.7,0.3) {Nominal}; + \node[right, , color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:-0.7,0.265) {Stall Limited}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/duct-and-hub-dfdc-example-verification-geometry.tikz b/v0.5.0/DuctAPE/theory_latex/figures/duct-and-hub-dfdc-example-verification-geometry.tikz new file mode 100644 index 00000000..08d9f397 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/duct-and-hub-dfdc-example-verification-geometry.tikz @@ -0,0 +1,7 @@ +\begin{tikzpicture}[scale=15] + %Airfoil + \draw[ thick,primary,pattern={Hatch[angle=35,distance=2pt,xshift=.1pt, line width=0.25pt]}, pattern color=plotsgray ] plot[] file{figures/isolated_dfdc_duct_coordinates.dat}; + \draw[ thick,primary, pattern={Hatch[angle=35,distance=2pt,xshift=.1pt, line width=0.25pt]}, pattern color=plotsgray] plot[] file{figures/isolated_dfdc_hub_coordinates.dat}; + \draw[dash pattern=on 12pt off 2pt on 1pt off 2pt on 5cm] (-0.1,0) -- (0.25,0); + \draw[dash pattern=on 12pt off 2pt on 1pt off 2pt on 5cm ] (0.4,0) -- (0.25,0); +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/duct-and-hub-grid-refinement.tikz b/v0.5.0/DuctAPE/theory_latex/figures/duct-and-hub-grid-refinement.tikz new file mode 100644 index 00000000..fc7303d9 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/duct-and-hub-grid-refinement.tikz @@ -0,0 +1,33 @@ +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={71.2mm}, height={57.15mm}, scaled x ticks={false}, xlabel={Total Number of Panels}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmode={log}, log basis x={10}, xmajorgrids={false}, xmin={54.84289230065208}, xmax={1312.8410442923314}, xticklabels={{$10^{2.0}$,$10^{2.5}$,$10^{3.0}$}}, xtick={{100.0,316.22776601683796,1000.0}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$\sum_{i=1}^N \left[c_{p_i} \Delta s_i\right]$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={-0.9429372477517319}, ymax={-0.85782247893079}, yticklabels={{$-0.94$,$-0.92$,$-0.90$,$-0.88$,$-0.86$}}, ytick={{-0.9400000000000002,-0.9200000000000002,-0.9000000000000001,-0.8800000000000001,-0.8600000000000002}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, name path={362c2a3c-9722-4f14-9bdd-0ff66b2a3e9b}, draw opacity={1.0}, line width={1.0}, dotted, mark={square*}, mark size={2.25 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.3608;blue,0.6706}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 60.0 -0.8602313874823261 \\ + 75.0 -0.8785370757424736 \\ + 90.0 -0.8904351732490723 \\ + 105.0 -0.8985146321873525 \\ + 120.0 -0.9045461440074074 \\ + 135.0 -0.909289814119211 \\ + 150.0 -0.9130238756932144 \\ + 240.0 -0.9248155189300596 \\ + 300.0 -0.9286952833725095 \\ + 450.0 -0.9337868595121043 \\ + 600.0 -0.9364064404197552 \\ + 750.0 -0.9379843024376172 \\ + 900.0 -0.939088404247066 \\ + 1050.0 -0.9399021083529173 \\ + 1200.0 -0.9405283392001957 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={de665f1a-aba1-4a43-a2af-43d4f9589a30}, only marks, draw opacity={1.0}, line width={0}, solid, mark={square*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 240.0 -0.9248155189300596 \\ + } + ; + \node[right, above, color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{10 pt}{13.0 pt}\selectfont}}] at (axis cs:542,-0.9253155189300596) {240 total panels}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/duct-and-hub-validation-geom.tikz b/v0.5.0/DuctAPE/theory_latex/figures/duct-and-hub-validation-geom.tikz new file mode 100644 index 00000000..83013dcc --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/duct-and-hub-validation-geom.tikz @@ -0,0 +1,7 @@ +\begin{tikzpicture}[scale=5] + %Airfoil + \draw[ thick,primary,pattern={Hatch[angle=35,distance=2pt,xshift=.1pt, line width=0.25pt]}, pattern color=plotsgray ] plot[] file{figures/isolated_duct_coordinates.dat}; + \draw[ thick,primary, pattern={Hatch[angle=35,distance=2pt,xshift=.1pt, line width=0.25pt]}, pattern color=plotsgray] plot[] file{figures/isolated_hub_coordinates.dat}; + \draw[dash pattern=on 12pt off 2pt on 1pt off 2pt on 4cm] (-0.2,0) -- (0.65,0); + \draw[dash pattern=on 12pt off 2pt on 1pt off 2pt on 4cm ] (1.5,0) -- (0.65,0); +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/duct-coordinates-160-panels.dat b/v0.5.0/DuctAPE/theory_latex/figures/duct-coordinates-160-panels.dat new file mode 100644 index 00000000..24f09f07 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/duct-coordinates-160-panels.dat @@ -0,0 +1,161 @@ +1.0 0.8349999999999997 +0.9996145181203615 0.8349874571948281 +0.998458666866564 0.8349461669092276 +0.9965342284774632 0.8348647578882575 +0.9938441702975689 0.834724836252403 +0.9903926402016152 0.834500727160864 +0.9861849601988383 0.8341505994526763 +0.9812276182268236 0.8336515441558705 +0.9755282581475768 0.8330049638609922 +0.9690956679612421 0.8321878697395054 +0.9619397662556434 0.831190200611149 +0.9540715869125407 0.8299999513813422 +0.9455032620941839 0.8286100889859096 +0.9362480035363985 0.8270176065770051 +0.9263200821770461 0.8252245846092692 +0.9157348061512725 0.8232309153585626 +0.9045084971874737 0.8210394976590719 +0.8926584654403724 0.8186617875135176 +0.8802029828000155 0.8161066564330289 +0.8671612547178428 0.8133869124330358 +0.8535533905932737 0.8105138496052497 +0.8394003727664707 0.807501219442065 +0.8247240241650917 0.8043588366765853 +0.8095469746549169 0.8011062583192167 +0.7938926261462365 0.7977699242429727 +0.7777851165098011 0.7943823839385564 +0.7612492823579744 0.7909739732432037 +0.7443106207484775 0.787591097155131 +0.7269952498697734 0.78424858437565 +0.709329868768714 0.7809724899915871 +0.6913417161825448 0.7777709685641667 +0.6730585285387464 0.7746868294996103 +0.6545084971874737 0.7717989083914469 +0.6357202249325372 0.7691919644385893 +0.6167226819279527 0.7669712537022366 +0.5975451610080641 0.765160898530817 +0.5782172325201153 0.7637134139550659 +0.5587686987289188 0.7625660912034093 +0.5392295478639224 0.7616573639855223 +0.5196299078795341 0.7609558431106278 +0.49999999999999994 0.7604539955084958 +0.48037009212046566 0.7601413097138335 +0.4607704521360775 0.760006015926433 +0.4412313012710811 0.7600471510813336 +0.4217827674798845 0.7602563080390057 +0.40245483899193585 0.7606377821240208 +0.38327731807204724 0.7611718400782611 +0.36427977506746284 0.7618694889171169 +0.3454915028125263 0.7627123351826404 +0.3269414714612535 0.7637014199489944 +0.3086582838174551 0.7648287931911806 +0.29067013123128593 0.7660920924517405 +0.27300475013022657 0.7674853369731368 +0.2556893792515225 0.7690105427308684 +0.23875071764202555 0.7706539245722992 +0.22221488349019886 0.7724147237375923 +0.20610737385376343 0.7742788311487154 +0.19045302534508302 0.7762486003627471 +0.17527597583490812 0.7783104636902693 +0.1605996272335291 0.7804649693310254 +0.1464466094067262 0.7827108051845442 +0.13283874528215722 0.7850427482021642 +0.11979701719998453 0.7874465168822662 +0.10734153455962753 0.7899061787833862 +0.09549150281252627 0.7924085709100757 +0.08426519384872738 0.7949381917410531 +0.07367991782295386 0.7974949500742705 +0.06375199646360141 0.8000708771375179 +0.05449673790581605 0.8026690693687264 +0.04592841308745932 0.8052860324404705 +0.03806023374435663 0.807881573493732 +0.03090433203875792 0.8104223833333905 +0.024471741852423234 0.8128789583545872 +0.01877238177317636 0.8152497608784984 +0.013815039801161721 0.8176248881033797 +0.009607359798384785 0.8200999063267486 +0.006155829702431115 0.822733341295557 +0.0034657715225368535 0.8255957833184571 +0.001541333133436018 0.8286740427862144 +0.0003854818796385495 0.8317716368482387 +0.0 0.835 +0.0003854818796385495 0.8382283631517611 +0.001541333133436018 0.8413259572137856 +0.0034657715225368535 0.8444042166815428 +0.006155829702431115 0.8472666587044431 +0.009607359798384785 0.8499000936732511 +0.013815039801161721 0.8523751118966201 +0.01877238177317636 0.8547502391215016 +0.024471741852423234 0.8571210416454128 +0.03090433203875792 0.8595776166666095 +0.03806023374435663 0.8621184265062678 +0.04592841308745932 0.8647139675595295 +0.05449673790581605 0.8673309306312736 +0.06375199646360141 0.8699291228624819 +0.07367991782295386 0.8725050499257293 +0.08426519384872738 0.8750618082589467 +0.09549150281252627 0.8775914290899243 +0.10734153455962753 0.8800938212166137 +0.11979701719998453 0.8825534831177336 +0.13283874528215722 0.8849572517978357 +0.1464466094067262 0.8872891948154558 +0.1605996272335291 0.8895350306689745 +0.17527597583490812 0.8916895363097306 +0.19045302534508302 0.8937513996372529 +0.20610737385376343 0.8957211688512843 +0.22221488349019886 0.8975852762624076 +0.23875071764202555 0.8993460754277007 +0.2556893792515225 0.9009894572691315 +0.27300475013022657 0.9025146630268631 +0.29067013123128593 0.9039079075482594 +0.3086582838174551 0.9051712068088194 +0.3269414714612535 0.9062985800510056 +0.3454915028125263 0.9072876648173596 +0.36427977506746284 0.908130511082883 +0.38327731807204724 0.9088281599217388 +0.40245483899193585 0.909362217875979 +0.4217827674798845 0.9097436919609944 +0.4412313012710811 0.9099528489186663 +0.4607704521360775 0.9099939840735669 +0.48037009212046566 0.9098586902861664 +0.49999999999999994 0.9095460044915042 +0.5196299078795341 0.9090441568893719 +0.5392295478639224 0.9083426360144775 +0.5587686987289188 0.9074339087965907 +0.5782172325201153 0.906286586044934 +0.5975451610080641 0.9048391014691829 +0.6167226819279527 0.9030287462977631 +0.6357202249325372 0.9008080355614106 +0.6545084971874737 0.898201091608553 +0.6730585285387464 0.8953131705003898 +0.6913417161825448 0.8922290314358331 +0.709329868768714 0.889027510008413 +0.7269952498697734 0.8857514156243498 +0.7443106207484775 0.8824089028448686 +0.7612492823579744 0.8790260267567964 +0.7777851165098011 0.8756176160614434 +0.7938926261462365 0.8722300757570274 +0.8095469746549169 0.8688937416807831 +0.8247240241650917 0.8656411633234146 +0.8394003727664707 0.862498780557935 +0.8535533905932737 0.8594861503947501 +0.8671612547178428 0.8566130875669643 +0.8802029828000155 0.8538933435669711 +0.8926584654403724 0.8513382124864823 +0.9045084971874737 0.8489605023409281 +0.9157348061512725 0.8467690846414375 +0.9263200821770461 0.8447754153907306 +0.9362480035363985 0.8429823934229947 +0.9455032620941839 0.8413899110140903 +0.9540715869125407 0.8400000486186578 +0.9619397662556434 0.8388097993888509 +0.9690956679612421 0.8378121302604945 +0.9755282581475768 0.8369950361390076 +0.9812276182268236 0.8363484558441295 +0.9861849601988383 0.8358494005473236 +0.9903926402016152 0.8354992728391358 +0.9938441702975689 0.835275163747597 +0.9965342284774632 0.8351352421117425 +0.998458666866564 0.8350538330907723 +0.9996145181203615 0.8350125428051718 +1.0 0.8350000000000002 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/duct-grid-refinement.tikz b/v0.5.0/DuctAPE/theory_latex/figures/duct-grid-refinement.tikz new file mode 100644 index 00000000..4212abf6 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/duct-grid-refinement.tikz @@ -0,0 +1,57 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={71.2mm}, height={57.15mm}, scaled x ticks={false}, xlabel={Number of Panels}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmode={log}, log basis x={10}, xmajorgrids={false}, xmin={17.976616530321675}, xmax={778.7894889110976}, xticklabels={{$10^{1.5}$,$10^{2.0}$,$10^{2.5}$}}, xtick={{31.622776601683793,100.0,316.22776601683796}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$\sum_{i=1}^N \left[c_{p_i} \Delta s_i\right]$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={-0.5452103284929636}, ymax={-0.48336935051738655}, yticklabels={{$-0.54$,$-0.53$,$-0.52$,$-0.51$,$-0.50$,$-0.49$}}, ytick={{-0.5400000000000001,-0.5300000000000001,-0.5200000000000001,-0.5100000000000001,-0.5000000000000001,-0.4900000000000001}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, name path={105f66d4-8947-4196-a5ce-6363e60abe84}, draw opacity={1.0}, line width={1.0}, dotted, mark={square*}, mark size={2.25 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.3608;blue,0.6706}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 20.0 -0.4851195668751859 \\ + 30.0 -0.5072513017845744 \\ + 40.0 -0.5171243604143352 \\ + 50.0 -0.523004698670667 \\ + 60.0 -0.5268413077417455 \\ + 70.0 -0.529540584722596 \\ + 80.0 -0.5315696774954023 \\ + 90.0 -0.5331151830474788 \\ + 100.0 -0.5343269441511453 \\ + 150.0 -0.5379524926700386 \\ + 160.0 -0.5384016667918938 \\ + 200.0 -0.5397295302240782 \\ + 300.0 -0.5414895093551249 \\ + 400.0 -0.5423430280195417 \\ + 500.0 -0.5428688691739596 \\ + 600.0 -0.5432109031531196 \\ + 700.0 -0.5434601121351642 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={ba82cca9-c96f-4a19-8f9f-6d29b0ba3084}, only marks, draw opacity={1.0}, line width={0}, solid, mark={square*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 160.0 -0.5384016667918938 \\ + } + ; + \node[right, above, color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{10 pt}{13.0 pt}\selectfont}}] at (axis cs:236,-0.5374016667918938) {160 panels}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/duct-pressure-comp-160-panels.tikz b/v0.5.0/DuctAPE/theory_latex/figures/duct-pressure-comp-160-panels.tikz new file mode 100644 index 00000000..c81ed6b5 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/duct-pressure-comp-160-panels.tikz @@ -0,0 +1,239 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={71.2mm}, height={57.15mm}, scaled x ticks={false}, xlabel={x}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.02979569460379161}, xmax={1.0297956946037916}, xticklabels={{$0.00$,$0.25$,$0.50$,$0.75$,$1.00$}}, xtick={{0.0,0.25,0.5,0.75,1.0}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_p$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, y dir={reverse}, ymajorgrids={false}, ymin={-0.719192491342353}, ymax={1.0282293188125537}, yticklabels={{$-0.5$,$0.0$,$0.5$,$1.0$}}, ytick={{-0.5,0.0,0.5,1.0}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, name path={fbfe580e-24bd-40de-87be-ded55eeed891}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.1804;blue,0.3647}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}] + table[row sep={\\}] + { + \\ + 0.0022988505747127 0.6630265210608424 \\ + 0.0206896551724138 -0.0273010920436818 \\ + 0.0471264367816092 -0.125585023400936 \\ + 0.0816091954022989 -0.1723868954758191 \\ + 0.1264367816091954 -0.2355694227769111 \\ + 0.1816091954022989 -0.2566302652106085 \\ + 0.2413793103448276 -0.2917316692667706 \\ + 0.310344827586207 -0.3104524180967239 \\ + 0.3850574712643678 -0.3244929797191888 \\ + 0.4528735632183909 -0.3338533541341654 \\ + 0.5298850574712645 -0.3361934477379096 \\ + 0.6034482758620691 -0.3315132605304213 \\ + 0.6770114942528737 -0.2730109204368175 \\ + 0.7494252873563219 -0.2145085803432137 \\ + 0.8241379310344829 0.0522620904836194 \\ + 0.881609195402299 0.1271450858034321 \\ + } + ; + \addlegendentry {exp outer} + \addplot[color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, name path={317909bc-c22a-4535-8711-7a7b1fc2e2d7}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.1804;blue,0.3647}, fill opacity={1.0}, line width={0.75}, rotate={180}, solid}] + table[row sep={\\}] + { + \\ + 0.0011494252873563 0.4804992199687987 \\ + 0.0172413793103448 -0.0998439937597504 \\ + 0.0459770114942529 -0.2472698907956319 \\ + 0.0827586206896552 -0.3221528861154447 \\ + 0.1264367816091954 -0.4297971918876756 \\ + 0.1747126436781609 -0.4719188767550703 \\ + 0.235632183908046 -0.5514820592823714 \\ + 0.3045977011494253 -0.5959438377535102 \\ + 0.374712643678161 -0.6240249609984401 \\ + 0.4471264367816092 -0.6427457098283932 \\ + 0.5264367816091955 -0.654446177847114 \\ + 0.6000000000000001 -0.6193447737909517 \\ + 0.674712643678161 -0.5374414976599065 \\ + 0.745977011494253 -0.3806552262090484 \\ + 0.8241379310344829 -0.0507020280811233 \\ + 0.8839080459770116 0.0709828393135725 \\ + } + ; + \addlegendentry {exp inner} + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={606f6706-093e-40e7-b855-207118fa2be7}, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.9998072590601808 0.3564365515068817 \\ + 0.9990365924934628 0.3383713221200596 \\ + 0.9974964476720136 0.3316111316186323 \\ + 0.995189199387516 0.3294077442501555 \\ + 0.992118405249592 0.3287359198860075 \\ + 0.9882888002002268 0.32450639263040515 \\ + 0.983706289212831 0.31345617395217207 \\ + 0.9783779381872002 0.3002103907000562 \\ + 0.9723119630544095 0.28640596815659913 \\ + 0.9655177171084428 0.2704505743369272 \\ + 0.9580056765840921 0.25271530223621386 \\ + 0.9497874245033623 0.23285502494681565 \\ + 0.9408756328152912 0.2109466310527328 \\ + 0.9312840428567223 0.18738824026225376 \\ + 0.9210274441641593 0.16227521101236864 \\ + 0.9101216516693731 0.13509680103449018 \\ + 0.8985834813139231 0.10611947824987045 \\ + 0.886430724120194 0.07564401502075435 \\ + 0.8736821187589292 0.043656280842925055 \\ + 0.8603573226555583 0.010170382837350167 \\ + 0.8464768816798722 -0.024903225753767577 \\ + 0.8320621984657812 -0.062150010338131834 \\ + 0.8171354994100043 -0.1022497519191472 \\ + 0.8017198004005767 -0.1450407379512717 \\ + 0.7858388713280188 -0.18989221848694338 \\ + 0.7695171994338877 -0.23664833263106289 \\ + 0.752779951553226 -0.2835331420137601 \\ + 0.7356529353091255 -0.3300168941864303 \\ + 0.7181625593192437 -0.377131087773412 \\ + 0.7003357924756294 -0.4268258287596183 \\ + 0.6822001223606455 -0.481757952030869 \\ + 0.66378351286311 -0.53925170296384 \\ + 0.6451143610600054 -0.5946188785617372 \\ + 0.6262214534302449 -0.6383901766959275 \\ + 0.6071339214680084 -0.6622623270652275 \\ + 0.5878811967640897 -0.6697371570926858 \\ + 0.568492965624517 -0.6682801650087746 \\ + 0.5489991232964206 -0.6643865607105548 \\ + 0.5294297278717283 -0.6617761997631055 \\ + 0.5098149539397671 -0.6596791299837874 \\ + 0.49018504606023283 -0.6568609961588774 \\ + 0.47057027212827157 -0.6538968591853289 \\ + 0.4510008767035793 -0.6504750822752465 \\ + 0.4315070343754828 -0.6464890938842374 \\ + 0.4121188032359102 -0.6410564988804792 \\ + 0.3928660785319915 -0.6350351886818539 \\ + 0.37377854656975507 -0.6281788366080712 \\ + 0.3548856389399946 -0.6200071221481716 \\ + 0.3362164871368899 -0.6115664391945115 \\ + 0.3177998776393543 -0.602284313280945 \\ + 0.2996642075243705 -0.5923802459577459 \\ + 0.2818374406807562 -0.5818846438426346 \\ + 0.26434706469087454 -0.5700581166638197 \\ + 0.24722004844677403 -0.5571420788510337 \\ + 0.2304828005661122 -0.543386369451061 \\ + 0.21416112867198114 -0.5291069557884251 \\ + 0.19828019959942322 -0.5141800200726128 \\ + 0.18286450058999557 -0.49851908165506353 \\ + 0.1679378015342186 -0.48267713302304416 \\ + 0.15352311832012766 -0.4652517675655985 \\ + 0.13964267734444172 -0.445381194777013 \\ + 0.12631788124107088 -0.4232096688114144 \\ + 0.11356927587980603 -0.39981578294621034 \\ + 0.1014165186860769 -0.37569076510104593 \\ + 0.08987834833062683 -0.35194290204969203 \\ + 0.07897255583584062 -0.32808047181541 \\ + 0.06871595714327763 -0.30318181706586755 \\ + 0.05912436718470873 -0.27597814963177325 \\ + 0.050212575496637685 -0.24201716634668657 \\ + 0.041994323415907975 -0.2028216081877232 \\ + 0.034482282891557275 -0.1639128828313794 \\ + 0.027688036945590577 -0.13037736740487138 \\ + 0.021622061812799798 -0.11032210845884038 \\ + 0.01629371078716904 -0.0937104519242864 \\ + 0.011711199799773253 -0.047168057823575804 \\ + 0.00788159475040795 0.06105801566469249 \\ + 0.004810800612483984 0.26106514177751505 \\ + 0.002503552327986436 0.5392399729244359 \\ + 0.0009634075065372838 0.8042674755758872 \\ + 0.00019274093981927476 0.9746501458412171 \\ + 0.00019274093981927476 0.9787739845628867 \\ + 0.0009634075065372838 0.8177324407193516 \\ + 0.002503552327986436 0.5646206638484554 \\ + 0.004810800612483984 0.3005669241595116 \\ + 0.00788159475040795 0.11324606484954236 \\ + 0.011711199799773253 0.014788810355579551 \\ + 0.01629371078716904 -0.024330722000670102 \\ + 0.021622061812799798 -0.034650191856020474 \\ + 0.027688036945590577 -0.04749702560356828 \\ + 0.034482282891557275 -0.07206311313956948 \\ + 0.041994323415907975 -0.10078629085714574 \\ + 0.050212575496637685 -0.12905381083850354 \\ + 0.05912436718470873 -0.15200229691350087 \\ + 0.06871595714327763 -0.16844687156679816 \\ + 0.07897255583584062 -0.1825013298430629 \\ + 0.08987834833062683 -0.19535914111460673 \\ + 0.1014165186860769 -0.20787576315433842 \\ + 0.11356927587980603 -0.2205231910328287 \\ + 0.12631788124107088 -0.23239381541551118 \\ + 0.13964267734444172 -0.24314059942372435 \\ + 0.15352311832012766 -0.25192924284633844 \\ + 0.1679378015342186 -0.2587256176421324 \\ + 0.18286450058999557 -0.26432576187693413 \\ + 0.19828019959942322 -0.26994814652652965 \\ + 0.21416112867198114 -0.27517448770128183 \\ + 0.2304828005661122 -0.28012039685304835 \\ + 0.24722004844677403 -0.2849348681597257 \\ + 0.26434706469087454 -0.2894050554426839 \\ + 0.2818374406807562 -0.2933789849836743 \\ + 0.2996642075243705 -0.296707032483736 \\ + 0.3177998776393543 -0.3000249504837418 \\ + 0.3362164871368899 -0.30334189081316176 \\ + 0.3548856389399946 -0.3065178402258426 \\ + 0.37377854656975507 -0.3100427959159393 \\ + 0.3928660785319915 -0.3131212749392007 \\ + 0.4121188032359102 -0.31616683737205187 \\ + 0.4315070343754828 -0.31940493316972973 \\ + 0.4510008767035793 -0.3221848288036391 \\ + 0.47057027212827157 -0.3252283776034268 \\ + 0.49018504606023283 -0.32864286137271037 \\ + 0.5098149539397671 -0.3327039121263493 \\ + 0.5294297278717283 -0.33699116684640074 \\ + 0.5489991232964206 -0.3425302574066609 \\ + 0.568492965624517 -0.35001591918966946 \\ + 0.5878811967640897 -0.35659958627650234 \\ + 0.6071339214680084 -0.35716845365701966 \\ + 0.6262214534302449 -0.345652616839502 \\ + 0.6451143610600054 -0.31889747799259616 \\ + 0.66378351286311 -0.28316582998012785 \\ + 0.6822001223606455 -0.24577475919347203 \\ + 0.7003357924756294 -0.21032141952314531 \\ + 0.7181625593192437 -0.1789110913813896 \\ + 0.7356529353091255 -0.1492554581958616 \\ + 0.752779951553226 -0.11963714929673741 \\ + 0.7695171994338877 -0.08907464231234075 \\ + 0.7858388713280188 -0.0579286421136227 \\ + 0.8017198004005767 -0.0276807041987015 \\ + 0.8171354994100043 0.00155831283468999 \\ + 0.8320621984657812 0.029225943427383494 \\ + 0.8464768816798722 0.05514741071763374 \\ + 0.8603573226555583 0.07990239970496638 \\ + 0.8736821187589292 0.1039938956487102 \\ + 0.886430724120194 0.12747566568421853 \\ + 0.8985834813139231 0.1503018381061877 \\ + 0.9101216516693731 0.17245033315097646 \\ + 0.9210274441641593 0.19359367281885875 \\ + 0.9312840428567223 0.21342659570528477 \\ + 0.9408756328152912 0.23238510908857446 \\ + 0.9497874245033623 0.25032584511653866 \\ + 0.9580056765840921 0.2668079855211518 \\ + 0.9655177171084428 0.2816968714559035 \\ + 0.9723119630544095 0.29527196144156675 \\ + 0.9783779381872002 0.307110891168655 \\ + 0.983706289212831 0.3187332311786837 \\ + 0.9882888002002268 0.32847471620807267 \\ + 0.992118405249592 0.33169163782982936 \\ + 0.995189199387516 0.3315463959843985 \\ + 0.9974964476720136 0.33304646401425086 \\ + 0.9990365924934628 0.33918126922345115 \\ + 0.9998072590601808 0.3566929605022753 \\ + } + ; + \addlegendentry {DuctAPE} +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/duct-validation-geometry.tikz b/v0.5.0/DuctAPE/theory_latex/figures/duct-validation-geometry.tikz new file mode 100644 index 00000000..b807f938 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/duct-validation-geometry.tikz @@ -0,0 +1,7 @@ +\begin{tikzpicture}[scale=7] + %Airfoil + \draw[ thick,primary, pattern={Hatch[angle=35,distance=2pt,xshift=.1pt, line width=0.25pt]}, pattern color=plotsgray] plot[] file{figures/isolated_duct_coordinates.dat}; + % \draw[dashed] (-0.1,0) -- (1.1,0); + % \draw[dash pattern=on 12pt off 2pt on 1pt off 2pt on 6cm] (-0.2,0) -- (0.5,0); + % \draw[dash pattern=on 12pt off 2pt on 1pt off 2pt on 6cm ] (1.2,0) -- (0.5,0); +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/duct_frame.png b/v0.5.0/DuctAPE/theory_latex/figures/duct_frame.png new file mode 100644 index 00000000..e1b2a068 Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/duct_frame.png differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/ductape_flowchart.tikz b/v0.5.0/DuctAPE/theory_latex/figures/ductape_flowchart.tikz new file mode 100644 index 00000000..ad0affe4 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/ductape_flowchart.tikz @@ -0,0 +1,53 @@ +\begin{tikzpicture}[block/.style={rectangle, rounded corners, fill=primary, text=white, minimum width=3cm, minimum height=1cm,align=center}, node distance = 5mm and 5mm] + + \matrix (chart) + [ + row sep = 8mm, + column sep = 5mm, + ] + { + % \node [block,fill=tertiary] (solve) {Update States}; & & & \\ + \node [block, fill=tertiary] (solve) {$\begin{array}{c}\text{Update States:}\\v_\theta^R, v_z^R, C_m^W\end{array}$}; & & & \\ + % + \node [block] (Gamr) {$\begin{array}{c}\text{Calculate }\Gamma\\ \text{\cref{eqn:bladeelementcirculationrotor}}\end{array}$}; & + \node [block] (gamw) {$\begin{array}{c}\text{Calculate }\gamma^W \\ \text{\cref{eqn:gamma_theta_general}}\end{array}$}; & + \node [block] (body) {$\begin{array}{c}\text{Calculate }\gamma^B \\ \text{\cref{eqn:neumann2}}\end{array}$}; & + % \node [block] (body) {$\begin{array}{c}\text{Calculate }\gamma^B \\ \gamma^B = AIC \backslash f(\gamma^W,\sigma^R,V_\infty)\end{array}$}; & + \node [block] (sigr) {$\begin{array}{c}\text{Calculate }\sigma^R \\ \text{\cref{eqn:rotorsourcestrengths}}\end{array}$}; \\ + % + \node [block] (est_vtheta) {$\begin{array}{c}\text{Estimate }v_\theta^R \\ \text{\cref{eqn:vthetaself}}\end{array}$}; & + \node [block] (est_vz) {$\begin{array}{c}\text{Estimate }v_z^R \\ \text{\cref{eqn:vzvr}}\end{array}$}; & + \node [block] (est_cm) {$\begin{array}{c}\text{Estimate }C_m^W \\ \text{\cref{eqn:vzvr,eqn:vmwm}}\end{array}$}; & \\ + % + \node [block,fill=secondary] (conv) {Converged?}; & & & \\ + % + \node [draw, rounded corners] (return) {$\begin{array}{c}\text{Post Process}\\v_\theta^R, v_z^R, C_m^W\end{array}$}; & & & \\ + }; + + \draw[-Stealth] (solve) -- (Gamr); + \draw[-Stealth] (solve.east) -| (gamw.north); + \draw[-Stealth] (solve.east) -| (body.north); + \draw[-Stealth] (solve.east) -| (sigr.north); + + \draw[-Stealth] (Gamr) -- (est_vtheta); + \draw[-Stealth] (Gamr) -- (gamw); + + \draw[-Stealth] (gamw) -- (body); + \draw[-Stealth] (gamw) -- (est_vz); + \draw[-Stealth] (gamw.south) -- +(0,-4mm) -| (est_cm.north); + + \draw[-Stealth] (sigr) -- (body); + \draw[-Stealth] (sigr.south) -- +(0,-4mm) -| (est_vz.north); + \draw[-Stealth] (sigr.south) -- +(0,-4mm) -| (est_cm.north); + + \draw[-Stealth] (body.south) -- +(0,-4mm) -| (est_vz.north); + \draw[-Stealth] (body) -- (est_cm); + + \draw[-Stealth] (est_vtheta) -- (conv); + \draw[-Stealth] (est_vz.south) |- (conv.east); + \draw[-Stealth] (est_cm.south) |- (conv.east); + + \draw[-Stealth] (conv.west) -- +(-6mm,0) |- (solve.west) node [pos=0.25, fill=white] {No}; + \draw[-Stealth] (conv) -- (return) node [pos=0.4, fill=white] {Yes}; + +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/ductape_single_rotor_geometry.tikz b/v0.5.0/DuctAPE/theory_latex/figures/ductape_single_rotor_geometry.tikz new file mode 100644 index 00000000..6b69e355 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/ductape_single_rotor_geometry.tikz @@ -0,0 +1,2040 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, draw opacity={0.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={5.0mm}, yshift={-5.0mm}, width={131.304mm}, height={50.96mm}, scaled x ticks={false}, xlabel={$z~\mathrm{(m)}$}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={true}, xmin={-0.01654556446238531}, xmax={0.5680643798752283}, xticklabels={{0.00,0.12,0.31,0.55}}, xtick={{0.0,0.12,0.30637899,0.5514821820000002}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$r~\mathrm{(m)}$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={true}, ymin={-0.018897937641611184}, ymax={0.23330880956173}, yticklabels={{0.00,0.04,0.16,0.18,0.21}}, ytick={{0.0,0.044952523,0.155720815,0.17818011312626458,0.21441087192011882}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={ad3ad9cd-3fec-45f0-b5e6-88e87c686960}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.12 0.04495252299071941 \\ + 0.12 0.05602935219164747 \\ + 0.12 0.06710618139257553 \\ + 0.12 0.07818301059350359 \\ + 0.12 0.08925983979443165 \\ + 0.12 0.10033666899535972 \\ + 0.12 0.11141349819628778 \\ + 0.12 0.12249032739721583 \\ + 0.12 0.1335671565981439 \\ + 0.12 0.14464398579907195 \\ + 0.12 0.155720815 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={68b01e25-813b-4b02-a6a7-910eb86f5f9e}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.12615140016666665 0.04494248592934282 \\ + 0.12615140019524057 0.0560404395104915 \\ + 0.1261514002210339 0.06713071695180639 \\ + 0.126151400241577 0.07821950267194142 \\ + 0.1261514002549012 0.08930768769610237 \\ + 0.12615140025972063 0.10039538250716509 \\ + 0.12615140025554467 0.11148236259103259 \\ + 0.12615140024271357 0.12256798715099464 \\ + 0.12615140022235488 0.1336508446344345 \\ + 0.1261514001962611 0.1447277691363484 \\ + 0.12615140016666665 0.15579077631842816 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={8118e2da-b4ae-4e8d-b030-3c5f03bbcb41}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.13230280033333333 0.04494776043555422 \\ + 0.1323028003913925 0.05605296683605158 \\ + 0.13230280044378667 0.0671553292278602 \\ + 0.13230280048548837 0.0782559880131186 \\ + 0.13230280051249943 0.08935560960449251 \\ + 0.13230280052221355 0.10045432517316684 \\ + 0.13230280051364623 0.11155172607354069 \\ + 0.13230280048750778 0.12264664646709793 \\ + 0.13230280044611692 0.13373657213266293 \\ + 0.132302800393164 0.14481614363284223 \\ + 0.13230280033333333 0.1558732022935015 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={96373f63-31b8-4647-9a2f-beaceca27e5c}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.13845420049999999 0.044949764153980734 \\ + 0.13845420058934013 0.05606501577684807 \\ + 0.13845420066992722 0.06717967633249355 \\ + 0.13845420073402734 0.07829231617435715 \\ + 0.13845420077549261 0.08940353188882594 \\ + 0.13845420079032575 0.10051354088230255 \\ + 0.13845420077703385 0.11162185072557691 \\ + 0.13845420073673972 0.12272697691396277 \\ + 0.13845420067305042 0.13382579732752276 \\ + 0.1384542005917003 0.14491206495073028 \\ + 0.13845420049999999 0.1559729329828782 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={3751e22c-a163-4492-98c5-d421a78bab84}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.14460560066666667 0.044942278699579535 \\ + 0.14460560079001664 0.05607536754340089 \\ + 0.1446056009012248 0.06720344097092065 \\ + 0.14460560098962408 0.07832831538807132 \\ + 0.144605601046736 0.0894513380666458 \\ + 0.14460560106706402 0.10057299701664563 \\ + 0.14460560104858047 0.11169285335570084 \\ + 0.14460560099287698 0.12280934155347033 \\ + 0.14460560090498 0.13391924135262664 \\ + 0.14460560079285847 0.1450166051869055 \\ + 0.14460560066666667 0.15609102041875295 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={3184714d-b5d8-45f1-a2fe-86396167fc4f}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.15075700083333332 0.04493204538203043 \\ + 0.1507570009944323 0.056084531918666 \\ + 0.1507570011396005 0.06722652798138998 \\ + 0.15075700125491626 0.07836381408209799 \\ + 0.15075700132932401 0.0894988566340506 \\ + 0.15075700135567988 0.10063255991642192 \\ + 0.1507570013313835 0.11176466904790242 \\ + 0.1507570012585672 0.12289374982477055 \\ + 0.15075700114384671 0.13401687233765402 \\ + 0.15075700099767186 0.14512903043874306 \\ + 0.15075700083333332 0.15622265571003757 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={47116a75-9c82-4992-b8f7-50dc81a3b762}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.156908401 0.044923127246484104 \\ + 0.15690840120370972 0.0560932491500544 \\ + 0.15690840138718576 0.06724891750798433 \\ + 0.15690840153282662 0.07839861751686146 \\ + 0.15690840162667963 0.08954584775223029 \\ + 0.15690840165976214 0.10069198275589758 \\ + 0.15690840162885206 0.1118370460812192 \\ + 0.15690840153671326 0.12297988993388287 \\ + 0.15690840139176687 0.1341181109398657 \\ + 0.15690840120725882 0.145247877297928 \\ + 0.156908401 0.15636407383589124 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={49c91940-de59-427d-84c8-75ae91518b16}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.16305980116666666 0.04491727692121097 \\ + 0.16305980141911983 0.05610185389778746 \\ + 0.16305980164638673 0.06727051141803732 \\ + 0.16305980182664898 0.07843247184616652 \\ + 0.16305980194265315 0.08959199140521185 \\ + 0.1630598019833388 0.10075090393602434 \\ + 0.16305980194480232 0.11190956234905504 \\ + 0.16305980183055457 0.12306719467988293 \\ + 0.1630598016510932 0.13422203132650048 \\ + 0.16305980142285748 0.1453714339695169 \\ + 0.16305980116666666 0.15651236616271635 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={6b0e2fcb-5ad8-461c-8a6f-51a89cddcb37}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.16921120133333334 0.04491196172254526 \\ + 0.16921120164212095 0.056110045676790836 \\ + 0.16921120191995728 0.06729106515668723 \\ + 0.16921120214014587 0.07846504059891733 \\ + 0.1692112022816338 0.08963688056691509 \\ + 0.16921120233099135 0.10080885315695454 \\ + 0.16921120228356445 0.11198165270245582 \\ + 0.16921120214375715 0.12315491172194172 \\ + 0.1692112019244811 0.13432750486434455 \\ + 0.1692112016458617 0.14549789279093822 \\ + 0.16921120133333334 0.15666486336534555 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={3703a70e-d83b-4223-a00d-7ae05d9cb1b3}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.1753626015 0.044906620646925216 \\ + 0.17536260187440036 0.05611747133702889 \\ + 0.1753626022110816 0.06731023233667703 \\ + 0.17536260247765992 0.07849590014122762 \\ + 0.1753626026486766 0.0896800198575199 \\ + 0.1753626027079842 0.10086526204915033 \\ + 0.17536260265010248 0.11205263965240041 \\ + 0.17536260248051416 0.12324216719187772 \\ + 0.17536260221496122 0.13443330414778515 \\ + 0.17536260187785932 0.14562542051196536 \\ + 0.1753626015 0.15681857836445 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={a49c7b81-dcad-43b7-a78b-09066fa71c87}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.18151400166666667 0.04490069966154803 \\ + 0.1815140021179268 0.056123773948205766 \\ + 0.1815140025234716 0.06732758926788507 \\ + 0.1815140028442434 0.07852453904258988 \\ + 0.181514003049649 0.08972082667202388 \\ + 0.1815140031204133 0.10091947637043401 \\ + 0.18151400305015145 0.11212176274436124 \\ + 0.1815140028456599 0.12332801937251056 \\ + 0.18151400252602115 0.1345381905217773 \\ + 0.18151400212067537 0.1457523440446712 \\ + 0.18151400166666667 0.15697133722994003 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={e1147850-e212-4918-ac80-e315a58a1a65}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.18766540183333333 0.04489448945657971 \\ + 0.18766540237501228 0.05612866310351651 \\ + 0.18766540286148156 0.067342641873836 \\ + 0.18766540324580985 0.07855035379718306 \\ + 0.18766540349140065 0.08975863172261479 \\ + 0.18766540357537678 0.10097076746037408 \\ + 0.1876654034903738 0.11218820383875444 \\ + 0.18766540324479908 0.1234114987789757 \\ + 0.18766540286169772 0.1346409642309278 \\ + 0.1876654023764194 0.1458771844962717 \\ + 0.18766540183333333 0.15712150120938215 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={4d544e49-f094-46ae-84c9-40633031beae}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.193816802 0.04488823654667903 \\ + 0.19381680264838852 0.05613182293510373 \\ + 0.19381680323024608 0.06735480163046952 \\ + 0.1938168036893129 0.07857263630941203 \\ + 0.19381680398196213 0.0897926768834148 \\ + 0.1938168040811733 0.10101834167588453 \\ + 0.19381680397853998 0.11225110758252534 \\ + 0.1938168036844555 0.12349163568811568 \\ + 0.193816803226682 0.13474048468284108 \\ + 0.1938168026475395 0.14599862705058791 \\ + 0.193816802 0.15726777750621487 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={68334e00-6024-480b-9134-a5166d1c9af4}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.19996820216666666 0.04488243703899517 \\ + 0.19996820294129872 0.056132848421925056 \\ + 0.19996820363584517 0.0673633454997533 \\ + 0.1999682041829581 0.07859055305782527 \\ + 0.1999682045307765 0.08982210956312595 \\ + 0.1999682046475313 0.1010613476062314 \\ + 0.19996820452373618 0.11230959800557637 \\ + 0.19996820417224237 0.12356747941597948 \\ + 0.19996820362643988 0.13483567444425562 \\ + 0.19996820293688403 0.1461154636342167 \\ + 0.19996820216666666 0.15740915183117207 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={a920762a-d336-4e1d-b66a-95ee861eb4f8}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.20611960233333335 0.04487715711766979 \\ + 0.20611960325761167 0.05613110596234895 \\ + 0.20611960408550423 0.0673673598287346 \\ + 0.2061196047364545 0.07860311632026916 \\ + 0.20611960514897135 0.08984597375713471 \\ + 0.20611960528587536 0.10109888172387062 \\ + 0.20611960513660454 0.11236279307574953 \\ + 0.20611960471705912 0.1236381149258848 \\ + 0.2061196040673514 0.13492552158683233 \\ + 0.20611960324777379 0.14622649016019462 \\ + 0.20611960233333335 0.15754388480717682 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={a82d04f0-67f4-4090-aa98-1eca4d8ef662}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.2122710025 0.04487136962829655 \\ + 0.21227100360196116 0.05612563287887272 \\ + 0.21227100458783607 0.06736568162579662 \\ + 0.21227100536131296 0.07860914849751283 \\ + 0.21227100584967618 0.08986319860985523 \\ + 0.21227100600963467 0.1011299937391038 \\ + 0.21227100582962008 0.11240981908966702 \\ + 0.21227100532931756 0.12370268190535638 \\ + 0.21227100455687117 0.1350091095795613 \\ + 0.21227100358408668 0.1463306100739647 \\ + 0.2122710025 0.1576701304503246 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={aa18d7ad-f348-4604-b748-3f4c99813c7d}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.21842240266666665 0.04486309798935874 \\ + 0.2184224039799177 0.056115209461446 \\ + 0.21842240515313588 0.06735684052934798 \\ + 0.21842240607120084 0.07860723787386087 \\ + 0.2184224066483922 0.0898725857833963 \\ + 0.218422406834599 0.10115369345270674 \\ + 0.21842240661740944 0.11244982595007046 \\ + 0.218422406021203 0.12376039434363861 \\ + 0.21842240510371397 0.13508565582842222 \\ + 0.21842240395035464 0.14642701504444167 \\ + 0.21842240266666665 0.15778714679780784 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={40837fe8-9786-49ee-a00f-4588a79151d8}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.22457380283333334 0.04485360527005957 \\ + 0.2245738043982078 0.05609862960554776 \\ + 0.22457380579374378 0.06733896142861041 \\ + 0.22457380688235992 0.07859567915993154 \\ + 0.22457380756341977 0.08987279803444295 \\ + 0.22457380777932734 0.10116896178434373 \\ + 0.22457380751711667 0.11248200427707714 \\ + 0.2245738068069738 0.12381055584075983 \\ + 0.22457380571806682 0.13515451980748214 \\ + 0.22457380435187183 0.14651516205877915 \\ + 0.22457380283333334 0.15789500367297732 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={677ee67e-fb43-4398-8e5f-25f93eb9b2c6}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.230725203 0.0448476314166718 \\ + 0.23072520486502654 0.0560742577875494 \\ + 0.23072520652449496 0.06730951514369517 \\ + 0.23072520781409608 0.07857239328873217 \\ + 0.23072520861634768 0.08986235486443839 \\ + 0.23072520886561346 0.10117477013910177 \\ + 0.23072520854882148 0.11250560651005616 \\ + 0.23072520770330537 0.1238525722232395 \\ + 0.23072520641183372 0.1352151874130788 \\ + 0.23072520479481992 0.14659461262109502 \\ + 0.230725203 0.15799347431712235 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={82768981-4a6c-46ca-b67d-d93e6c227c26}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.23687660316666667 0.044848601431894536 \\ + 0.236876605390478 0.05603861868336703 \\ + 0.23687660736326796 0.06726491146826322 \\ + 0.23687660888933887 0.07853484727372217 \\ + 0.23687660983260314 0.08983964813226591 \\ + 0.23687661011901207 0.10117011389147092 \\ + 0.23687660973601576 0.11251997500326537 \\ + 0.23687660872968597 0.12388596778461915 \\ + 0.2368766071989195 0.13526726829449545 \\ + 0.23687660528641738 0.1466649843626945 \\ + 0.23687660316666667 0.1580818906263962 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={1b755dd0-59ba-4d0b-8210-1371c1d9368e}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.24302800333333333 0.04485107224020261 \\ + 0.24302800598714014 0.055984546650524734 \\ + 0.2430280083316136 0.0672000915347298 \\ + 0.24302801013525505 0.07848003044705751 \\ + 0.24302801124205642 0.08980299748430785 \\ + 0.2430280115694266 0.10115406627813653 \\ + 0.243028011106145 0.11252457917280535 \\ + 0.2430280099088706 0.12391040769746414 \\ + 0.24302800809555822 0.13531051547766182 \\ + 0.24302800583509376 0.14672603705782658 \\ + 0.24302800333333333 0.15815975337140403 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={3136a9f1-3e60-4462-88ad-ed1b0ade82c3}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.2491794035 0.04483645969082626 \\ + 0.24917940667070462 0.05589987935954851 \\ + 0.24917940945540965 0.06710837261316725 \\ + 0.24917941158388188 0.07840456300083282 \\ + 0.2491794128796673 0.08975076671054721 \\ + 0.24917941325176104 0.10112585713526756 \\ + 0.24917941269122246 0.11251906151488966 \\ + 0.24917941126740398 0.12392572336658478 \\ + 0.24917940912069386 0.13534484638930663 \\ + 0.24917940645069037 0.14677775336237048 \\ + 0.2491794035 0.15822728314697948 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={b6387c91-1e0d-4702-b5df-9ab4c1731c4a}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.25533080366666666 0.044774484794636006 \\ + 0.25533080746060915 0.055767078407355675 \\ + 0.25533081076544345 0.06698175664728288 \\ + 0.2553308132727256 0.07830500208116842 \\ + 0.25533081478615677 0.08968155388848503 \\ + 0.2553308152066385 0.10108497604801062 \\ + 0.2553308145285274 0.11250328981595437 \\ + 0.2553308128362228 0.12393193634922521 \\ + 0.25533081029642163 0.13537034567568784 \\ + 0.2553308071446905 0.14682028588402926 \\ + 0.25533080366666666 0.15828503040023142 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={448d932f-5910-44f5-bf92-7e192fe972f8}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.2614822038333333 0.044592370393489775 \\ + 0.2614822083805179 0.055562800352296375 \\ + 0.2614822122977724 0.06681186401686831 \\ + 0.26148221524526294 0.07817837794098743 \\ + 0.26148221700869273 0.0895944503248274 \\ + 0.26148221748119715 0.10103129187374736 \\ + 0.2614822166614041 0.11247741035986174 \\ + 0.26148221465135507 0.12392927958575795 \\ + 0.2614822116485037 0.13538726081860353 \\ + 0.26148220793049315 0.1468538547638709 \\ + 0.2614822038333333 0.15833308352046074 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={2c48ce0c-f2a9-409e-8d72-c810913662b4}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.267633604 0.04421530669424536 \\ + 0.26763360945783743 0.055265286576094926 \\ + 0.2676336140936322 0.06659199933255601 \\ + 0.26763361755129433 0.0780229410851018 \\ + 0.2676336196015953 0.0894893370174616 \\ + 0.2676336201299862 0.10096517151955674 \\ + 0.26763361914018513 0.11244189405263647 \\ + 0.267633616754736 0.12391821512694683 \\ + 0.2676336132069755 0.13539601336710996 \\ + 0.26763360882374065 0.146878777620109 \\ + 0.267633604 0.1583712647951522 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={6783c59f-b682-4b65-bde9-8285fa0ade01}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.2737850041666667 0.04362179231228574 \\ + 0.2737850107226667 0.054863194210018736 \\ + 0.27378501619896545 0.06631938676320463 \\ + 0.27378502024718865 0.07783891230973548 \\ + 0.2737850226271058 0.08936715393102769 \\ + 0.27378502321600184 0.10088757302268427 \\ + 0.2737850220232743 0.11239756478204808 \\ + 0.27378501919516685 0.12389944276158213 \\ + 0.2737850150068578 0.13539721850969472 \\ + 0.27378500984270293 0.14689558885228318 \\ + 0.2737850041666667 0.15839986466358472 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={3c89ab1e-2669-4fa0-8adf-b3704b1ce81d}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.27993640433333333 0.04280470972471024 \\ + 0.2799364122072503 0.054354784921220145 \\ + 0.27993641866383007 0.06599624378782942 \\ + 0.27993642339614044 0.07762899205874955 \\ + 0.27993642615630765 0.0892300705468901 \\ + 0.2799364268119306 0.10080008660836114 \\ + 0.2799364253784347 0.11234559906099814 \\ + 0.27993642202944796 0.12387389111256711 \\ + 0.27993641708899336 0.1353916860143239 \\ + 0.27993641100872163 0.1469050910532755 \\ + 0.27993640433333333 0.15841995001612175 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={857743c6-760b-4c32-bb4e-080d6c2d3151}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.2860878045 0.04173197487913953 \\ + 0.28608781394460575 0.05374561692252722 \\ + 0.28608782154156026 0.06563029646824577 \\ + 0.28608782706858 0.07739859238088641 \\ + 0.2860878302703292 0.08908151204073678 \\ + 0.2860878310016841 0.10070490343691223 \\ + 0.2860878292843385 0.11228748906818595 \\ + 0.28608782532372357 0.12384268624056223 \\ + 0.2860878195010295 0.13538039027131413 \\ + 0.28608781234672537 0.14690827504726234 \\ + 0.2860878045 0.15843280185958125 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={e2ded9c9-8a1d-43ab-b6e5-6bdd685e94ba}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.2922392046666667 0.040364235789079016 \\ + 0.2922392159645786 0.05305301859198817 \\ + 0.2922392248876448 0.06523561804303711 \\ + 0.2922392313429909 0.07715580666129163 \\ + 0.2922392350620107 0.08892601151667356 \\ + 0.2922392358823359 0.10060470052744373 \\ + 0.29223923383244643 0.11222496656167623 \\ + 0.2922392291550817 0.12380709913175461 \\ + 0.2922392222985777 0.13536442502857887 \\ + 0.29223921388583923 0.14690623885046122 \\ + 0.2922392046666667 0.15843959620544462 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={993e17ec-266d-4a4a-a145-ab4ad8ed7010}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.29839060483333335 0.038669523760712386 \\ + 0.29839061828781116 0.05231414428199146 \\ + 0.2983906287592233 0.06483332747820882 \\ + 0.2983906363076548 0.07691097355749534 \\ + 0.2983906406382771 0.08876885622063425 \\ + 0.2983906415665778 0.1005024406188454 \\ + 0.29839063912928604 0.11215989152137111 \\ + 0.29839063361345675 0.12376847642707164 \\ + 0.29839062554657736 0.13534495550240616 \\ + 0.29839061566010217 0.146900166876214 \\ + 0.29839060483333335 0.1584414626579145 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={c64fb68f-89b3-4ff9-9e8f-98c0e06b812c}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.304542005 0.036613858106809886 \\ + 0.3045420209191786 0.051595405041978036 \\ + 0.3045420332171931 0.06445101021750609 \\ + 0.3045420420640752 0.0766755753846573 \\ + 0.3045420471234639 0.08861550954242504 \\ + 0.3045420481858039 0.10040110174599662 \\ + 0.30454204529919815 0.11209411675340528 \\ + 0.3045420388038831 0.12372815935402574 \\ + 0.30454202932089514 0.13532316547991338 \\ + 0.30454201770929595 0.14689135308812828 \\ + 0.304542005 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={b3378eb0-d604-49d6-98c6-1b2d24f593c6}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.30637899 0.03592799979999999 \\ + 0.3063790067118232 0.051406599548768375 \\ + 0.30637901962687536 0.0643463473441166 \\ + 0.30637902891051905 0.0766090956582217 \\ + 0.3063790342150497 0.08857138189245868 \\ + 0.3063790353238422 0.10037153389437943 \\ + 0.3063790322893496 0.11207466773029352 \\ + 0.30637902546977697 0.12371603274379787 \\ + 0.3063790155173971 0.13531642747556027 \\ + 0.30637900333372864 0.14688851094714875 \\ + 0.30637899 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={04b389c3-17bf-46e1-82cb-2ae3e5fabd8f}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.3145490964 0.03592799979999999 \\ + 0.31454911697933774 0.050842252216885195 \\ + 0.3145491330389462 0.0639477319598452 \\ + 0.31454914455114974 0.07633836320599678 \\ + 0.3145491511093207 0.08838596984491395 \\ + 0.31454915246455956 0.10024473922294365 \\ + 0.3145491486937438 0.11198976551337624 \\ + 0.3145491402472744 0.1236619888789181 \\ + 0.3145491279358046 0.1352854868089334 \\ + 0.31454911287516696 0.1468749285743424 \\ + 0.3145490964 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={c9cdde0d-457b-42da-823a-00e3a175686a}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.3227192028 0.03592799979999999 \\ + 0.3227192280346334 0.050519563370960065 \\ + 0.3227192479595764 0.06365532593896576 \\ + 0.322719262253222 0.0761163200086327 \\ + 0.32271927038915565 0.08822441201016228 \\ + 0.32271927207158807 0.10012985818882085 \\ + 0.3227192674084074 0.11191047652297306 \\ + 0.32271925696575005 0.12361005525695089 \\ + 0.32271924175138167 0.13525480603821718 \\ + 0.3227192231467283 0.14686102249543315 \\ + 0.3227192028 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={4c1cbfc0-e7a0-4a04-b2c0-0096fea1dad7}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.33088930920000004 0.03592799979999999 \\ + 0.33088934012977145 0.05032389511663432 \\ + 0.3308893647732326 0.06344555413950083 \\ + 0.3308893825008494 0.07594047385431368 \\ + 0.33088939260291655 0.08808838882812306 \\ + 0.3308893947096599 0.10002906445335612 \\ + 0.330889388962727 0.111838736376796 \\ + 0.3308893760706582 0.12356184175324728 \\ + 0.33088935728515295 0.13522565408360918 \\ + 0.3308893343162264 0.14684755481245004 \\ + 0.33088930920000004 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={cc5df659-2cb9-413a-87d8-5e3a750481a7}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.3390594156 0.03592799979999999 \\ + 0.3390594535331789 0.050198985415511384 \\ + 0.3390594839471249 0.06329508780318066 \\ + 0.3390595058962311 0.07580368495588057 \\ + 0.3390595184317064 0.08797648907387864 \\ + 0.3390595210777388 0.0999427782695948 \\ + 0.3390595140104026 0.11177546452623631 \\ + 0.33905949811136643 0.12351830759697713 \\ + 0.33905947493279903 0.1351988294755506 \\ + 0.3390594465904846 0.14683499422035584 \\ + 0.3390594156 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={c1f550f6-1092-4dbd-b75f-e3e610afb022}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.347229522 0.03592799979999999 \\ + 0.347229568558387 0.0501157010556521 \\ + 0.34722960604725867 0.06318620669925075 \\ + 0.34722963318103195 0.07569809149872803 \\ + 0.34722964871705686 0.08788580478010745 \\ + 0.3472296520389769 0.09987025383397206 \\ + 0.347229643357913 0.11172078627973303 \\ + 0.3472296237651819 0.12347987138476386 \\ + 0.34722959518198687 0.13517475994558956 \\ + 0.34722956022439017 0.146823603475183 \\ + 0.347229522 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={38ed5571-cc71-45bb-a53c-f546caf2e636}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.3553996284 0.03592799979999999 \\ + 0.3553996855847916 0.05005814756146559 \\ + 0.3553997317635693 0.06310646525569791 \\ + 0.35539976526649114 0.075616723614403 \\ + 0.3553997844959765 0.0878129941358577 \\ + 0.3553997886575703 0.09981011168845659 \\ + 0.35539977799939276 0.11167428840052289 \\ + 0.355399753866825 0.12344654795511546 \\ + 0.3553997186336654 0.13515359488510492 \\ + 0.35539967553204227 0.14681349801125748 \\ + 0.3553996284 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={f364a5a1-0b38-4861-ba07-a8d01c85a3f2}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.3635697348 0.03592799979999999 \\ + 0.3635698050772228 0.05001720842195701 \\ + 0.3635698619412591 0.06304732859525827 \\ + 0.3635699032723407 0.07555393145493997 \\ + 0.36356992704499996 0.08775485321077865 \\ + 0.36356993224432615 0.09976072362718605 \\ + 0.3635699191595374 0.11163524379598788 \\ + 0.3635698894446839 0.12341808044642985 \\ + 0.3635698460282941 0.13513528773234879 \\ + 0.3635697929005032 0.14680469016934244 \\ + 0.3635697348 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={cde8446c-d92b-4e66-9ba6-81ee4fb00cde}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.37173984120000003 0.03592799979999999 \\ + 0.37173992760768426 0.049987405550129586 \\ + 0.371739997618834 0.06300295281505029 \\ + 0.3717400485754441 0.07550532423590893 \\ + 0.37174007793497926 0.0877085635960768 \\ + 0.3717400844129372 0.09972045244561493 \\ + 0.3717400683464427 0.1116027812957342 \\ + 0.3717400317654777 0.12339405088118224 \\ + 0.37173997827820915 0.13511966502202966 \\ + 0.37173991280679575 0.14679712389736138 \\ + 0.37173984120000003 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={edddf818-5282-486a-bf46-b45be318bf4a}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.3799099476 0.03592799979999999 \\ + 0.3799100538813233 0.04996530544721607 \\ + 0.3799101400745015 0.0629693016722311 \\ + 0.3799102028699015 0.07546755580465006 \\ + 0.3799102390987651 0.08767175970237416 \\ + 0.3799102471492997 0.099687781838861 \\ + 0.37991022741664443 0.11157600045120916 \\ + 0.37991018238932317 0.12337396392155768 \\ + 0.3799101165076361 0.1351064806361067 \\ + 0.3799100358389651 0.1467907016420016 \\ + 0.3799099476 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={e21fc0bd-597c-48ad-9aed-867030d54ca3}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.388080054 0.03592799979999999 \\ + 0.3880801847683727 0.049948674250106025 \\ + 0.3880802908832295 0.06294355011247844 \\ + 0.388080368241107 0.07543809536494703 \\ + 0.3880804129144707 0.08764250885603442 \\ + 0.388080422896663 0.09966137405082315 \\ + 0.38808039865509203 0.1115540415055056 \\ + 0.38808034323767204 0.12335730516822024 \\ + 0.38808026210226687 0.1350954557794504 \\ + 0.38808016272226664 0.1467853044195057 \\ + 0.388080054 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={bdb8a1e5-e942-49c8-8d85-85f3fb9b6a32}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.3962501604 0.03592799979999999 \\ + 0.3962503213439879 0.04993601057118275 \\ + 0.39625045198738607 0.06292369096447809 \\ + 0.39625054725697945 0.07541503060303202 \\ + 0.3962506023076106 0.08761925659644776 \\ + 0.39625061465992667 0.0996400846401548 \\ + 0.396250584873342 0.11153612285570005 \\ + 0.3962505166771905 0.1233435784347396 \\ + 0.3962504167708732 0.1350863065436754 \\ + 0.3962502943518805 0.14678080605369023 \\ + 0.3962501604 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={e3505ab6-19aa-46a9-a74c-b56f7d3df854}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.4044202668 0.03592799979999999 \\ + 0.4044204649384488 0.04992627670438774 \\ + 0.4044206257847325 0.0629082765068913 \\ + 0.40442074308041226 0.07539691264131396 \\ + 0.4044208108760499 0.08760076370743183 \\ + 0.40442082613295866 0.09962295424492405 \\ + 0.40442078952990634 0.1115215568622359 \\ + 0.40442070562344534 0.12333232717257825 \\ + 0.4044205826222216 0.13507876151039622 \\ + 0.40442043183406434 0.14677708266194575 \\ + 0.4044202668 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={52f80ba1-e70d-445d-a333-94898050638f}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.4125903732 0.03592799979999999 \\ + 0.41259061720114876 0.04991873810880169 \\ + 0.41259081523876096 0.06289624752843993 \\ + 0.41259095960797343 0.07538263871295257 \\ + 0.41259104304231786 0.08758604694108861 \\ + 0.4125910618533038 0.09960918963998613 \\ + 0.41259101687739697 0.11150975228942685 \\ + 0.4125909136693054 0.12332314476826371 \\ + 0.41259076226170527 0.13507257187209598 \\ + 0.41259057653843373 0.14677401847132818 \\ + 0.4125903732 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={8adb4671-701b-405f-bfe5-3c27800f4243}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.4207604796 0.03592799979999999 \\ + 0.4207607801833836 0.049912864219275314 \\ + 0.42076102401820403 0.06288681890780116 \\ + 0.42076120164109976 0.0753713649848897 \\ + 0.42076130423833435 0.08757432784736127 \\ + 0.4207613273889434 0.09959814115254509 \\ + 0.42076127214181636 0.11150020917153226 \\ + 0.4207611452443796 0.12331567752023932 \\ + 0.4207609589138673 0.13506751625594868 \\ + 0.4207607301653186 0.14677150894740648 \\ + 0.4207604796 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={da3eb792-5934-4de1-81c5-441a20a1bf7a}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.428930586 0.03592799979999999 \\ + 0.42893095644763335 0.04990826521558875 \\ + 0.42893125667534415 0.06287940190572144 \\ + 0.4289314750975138 0.07536244221308494 \\ + 0.4289316011277286 0.08756499052624503 \\ + 0.4289316295615548 0.09958928019716523 \\ + 0.4289315617399195 0.11149250990548899 \\ + 0.42893140581376 0.12330962313150153 \\ + 0.4289311765797538 0.13506340201414993 \\ + 0.4289308948342452 0.14676946205934605 \\ + 0.428930586 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={bceec131-b58e-4342-a869-e054fed86a34}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.4371006924 0.03592799979999999 \\ + 0.43710114921569976 0.04990465056326204 \\ + 0.43710151887713694 0.06287355056068024 \\ + 0.43710178727237936 0.07535536825558958 \\ + 0.43710194187024826 0.0875575475904319 \\ + 0.43710197670947615 0.09958217872865896 \\ + 0.4371018935407276 0.11148630892654979 \\ + 0.4371017021270834 0.12330472670796604 \\ + 0.43710142024252935 0.13506006431355577 \\ + 0.4371010732032426 0.1467677983278903 \\ + 0.4371006924 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={ad0f599e-8562-4338-8d44-14f2507f9cb4}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.4452707988 0.03592799979999999 \\ + 0.4452713625764755 0.04990180113190044 \\ + 0.4452718177100991 0.06286892412607183 \\ + 0.4452721471607802 0.07534975289929793 \\ + 0.4452723364304007 0.08755161311240367 \\ + 0.44527237899040106 0.09957649130687644 \\ + 0.4452722771764445 0.11148132234100594 \\ + 0.44527204253287295 0.1233007755881061 \\ + 0.4452716961422626 0.13505736397892873 \\ + 0.44527126863525707 0.14676645013696812 \\ + 0.4452707988 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={d522b895-6b44-4368-9d9b-5f4a03a6d336}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.4534409052 0.03592799979999999 \\ + 0.4534416017898208 0.04989955001406339 \\ + 0.45344216209086075 0.06286526034495345 \\ + 0.45344256585529447 0.07534529165925995 \\ + 0.45344279692682216 0.08754688127810589 \\ + 0.4534428487172092 0.09957193988220653 \\ + 0.453442724405047 0.11147731825425801 \\ + 0.4534424373788569 0.12329759384162746 \\ + 0.4534420121533931 0.1350551847400687 \\ + 0.4534414854402353 0.14676536064905302 \\ + 0.4534409052 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={85546cd7-7375-4062-b0a0-857efa55437f}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.4616110116 0.03592799979999999 \\ + 0.4616118737533524 0.049897769060290524 \\ + 0.4616125633309914 0.0628623561618278 \\ + 0.4616130570344347 0.0753417461325479 \\ + 0.46161333800683757 0.08754310960262762 \\ + 0.46161340070814477 0.09956830112584683 \\ + 0.4616132495192633 0.11147410813803929 \\ + 0.46161289952734985 0.12329503693436912 \\ + 0.4616123783195899 0.1350534303037881 \\ + 0.4616117292452863 0.14676448255345573 \\ + 0.4616110116 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={a2031982-e16c-4bd7-aba5-e38ec38e3a34}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.469781118 0.03592799979999999 \\ + 0.4697821877598345 0.049896359256787245 \\ + 0.4697830359278678 0.06286005361862049 \\ + 0.4697836375593605 0.07533892916690509 \\ + 0.4697839772059938 0.0875401057510919 \\ + 0.46978405261252476 0.09956539601100546 \\ + 0.469783869779121 0.11147153934678937 \\ + 0.46978344502730296 0.12329298682876325 \\ + 0.4697828076354344 0.13505202150706594 \\ + 0.46978200759368277 0.14676377679387123 \\ + 0.469781118 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={3b51037e-1953-4aa7-9710-658e431c402b}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.4779512244 0.03592799979999999 \\ + 0.4779525568001732 0.04989524374163353 \\ + 0.47795359867673637 0.06285822942069735 \\ + 0.4779543281998854 0.07533669359232714 \\ + 0.47795473520100135 0.08753771719333776 \\ + 0.47795482514627424 0.09956308132165273 \\ + 0.4779546058046166 0.11146948876243899 \\ + 0.47795409400497524 0.12329134764296687 \\ + 0.47795331721670903 0.13505089369454465 \\ + 0.4779523309766128 0.14676321136241535 \\ + 0.4779512244 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={76e655cf-6139-4619-b9ec-613694cea9e7}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.4861213308 0.03592799979999999 \\ + 0.4861229999453529 0.04989436266866223 \\ + 0.48612427618904097 0.06285678714039036 \\ + 0.4861251545321778 0.07533492361160196 \\ + 0.48612563575046147 0.08753582308273485 \\ + 0.4861257421556427 0.09956124277961106 \\ + 0.4861254817658055 0.11146785748017712 \\ + 0.4861248718771444 0.12329004190227692 \\ + 0.48612393006187904 0.13504999438898 \\ + 0.4861227147347506 0.14676276020703213 \\ + 0.4861213308 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={c3437aa4-e56c-45f6-92bd-09da729a11a2}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.4942914372 0.03592799979999999 \\ + 0.49429354697824773 0.0498936693892024 \\ + 0.49429510072870425 0.06285565134393827 \\ + 0.49429614816331185 0.07533352819344553 \\ + 0.4942967048348483 0.08753432788268865 \\ + 0.494296830506958 0.09955978951408254 \\ + 0.4942965249431467 0.1114665664195881 \\ + 0.4942958111129259 0.12328900736500872 \\ + 0.4942946776020239 0.13504928127644167 \\ + 0.494293182827893 0.1467624022727971 \\ + 0.4942914372 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={474dc2d1-d2d3-45c0-b007-32e301958bad}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.5024615436 0.03592799979999999 \\ + 0.5024642479774059 0.0498931275903585 \\ + 0.5024661134932674 0.06285476314142364 \\ + 0.5024673489413295 0.07533243598866415 \\ + 0.5024679677106296 0.08753315637090663 \\ + 0.5024681203045294 0.09955864963716243 \\ + 0.5024677634546381 0.11146555273962629 \\ + 0.5024669542191273 0.12328819437833258 \\ + 0.5024656028282337 0.13504872050046546 \\ + 0.5024637759106771 0.14676212068132216 \\ + 0.5024615436 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={18ab6172-2082-409e-9262-e0d437a8711c}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.51063165 0.03592799979999999 \\ + 0.5106351944033974 0.049892709139502826 \\ + 0.510637361592821 0.06285407680492099 \\ + 0.5106388108383605 0.07533159141680935 \\ + 0.5106394400997473 0.08753224973544467 \\ + 0.510639648071418 0.09955776672796887 \\ + 0.5106392184697081 0.11146476694217285 \\ + 0.5106383603992285 0.123287563708417 \\ + 0.5106367616621093 0.13504828524465456 \\ + 0.5106345700757328 0.1467619020430869 \\ + 0.51063165 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={b833bbef-9452-43c4-a540-a3d453ed6c85}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.5188017564 0.03592799979999999 \\ + 0.5188065683278625 0.04989239245934904 \\ + 0.518808877237784 0.06285355720098837 \\ + 0.518810621879253 0.07533095166289289 \\ + 0.5188111013820477 0.08753156254240115 \\ + 0.5188114735956995 0.09955709706379755 \\ + 0.5188108788505589 0.11146417056132538 \\ + 0.5188101253521777 0.12328708478744244 \\ + 0.5188082115728961 0.1350479545769144 \\ + 0.5188057239001983 0.1467617358927971 \\ + 0.5188017564 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={4e772676-22e7-471b-910f-5c108ef40358}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.5269718628 0.03592799979999999 \\ + 0.5269787639157566 0.04989216130947543 \\ + 0.5269805936959953 0.06285317785468095 \\ + 0.5269829765002086 0.07533048439138054 \\ + 0.5269828086779716 0.08753106040674549 \\ + 0.5269837504807874 0.09955660746829151 \\ + 0.5269826167802892 0.11146373435046013 \\ + 0.526982450866389 0.12328673432366069 \\ + 0.5269799439722115 0.13504771252740955 \\ + 0.5269776053049885 0.14676161423624165 \\ + 0.5269718628 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={2f10a5af-4ceb-431d-a181-95b42b26c426}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.5351419692 0.03592799979999999 \\ + 0.5351527026038095 0.049892003887225256 \\ + 0.5351520492424573 0.06285291951215571 \\ + 0.5351564383917821 0.07533016603620829 \\ + 0.535154008691445 0.08753071823734165 \\ + 0.5351569956825083 0.09955627367509137 \\ + 0.5351538979259829 0.11146343689352065 \\ + 0.5351559041316796 0.1232864952278606 \\ + 0.5351515995595778 0.13504754737373442 \\ + 0.5351511552596466 0.1467615311978387 \\ + 0.5351419692 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={be1b0f73-eb08-417b-9c94-be84b39fa6c2}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.5433120755999999 0.03592799979999999 \\ + 0.5433306877795506 0.049891912191107786 \\ + 0.5433213979586135 0.06285276909886658 \\ + 0.543332881422732 0.07532998057230542 \\ + 0.543322743829804 0.08753051895060487 \\ + 0.5433330799713588 0.09955607913807567 \\ + 0.5433227613075436 0.11146326357384015 \\ + 0.5433323929047321 0.12328635582365197 \\ + 0.5433213891694104 0.13504745110549474 \\ + 0.5433289841335676 0.1467614827621099 \\ + 0.5433120755999999 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={cadb7ee6-4a5c-4a17-b080-3dfd1e177609}, draw opacity={0.25}, line width={0.1}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.5514821820000001 0.03592799979999999 \\ + 0.5515188154128429 0.049891881625735275 \\ + 0.5514821820000002 0.06285271896110357 \\ + 0.5515188154128428 0.07532991875100449 \\ + 0.5514821820000001 0.08753045252169261 \\ + 0.5515188154128428 0.09955601429240378 \\ + 0.5514821820000001 0.11146320580061327 \\ + 0.551518815412843 0.12328630935558241 \\ + 0.5514821820000002 0.1350474190160815 \\ + 0.551518815412843 0.14676146661686695 \\ + 0.5514821820000002 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={b37cce2b-a741-46f1-b47b-1ebed49edd16}, draw opacity={1.0}, line width={0.75}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.12 0.04495252299071941 \\ + 0.12615140016666665 0.04494248592934282 \\ + 0.13230280033333333 0.04494776043555422 \\ + 0.13845420049999999 0.044949764153980734 \\ + 0.14460560066666667 0.044942278699579535 \\ + 0.15075700083333332 0.04493204538203043 \\ + 0.156908401 0.044923127246484104 \\ + 0.16305980116666666 0.04491727692121097 \\ + 0.16921120133333334 0.04491196172254526 \\ + 0.1753626015 0.044906620646925216 \\ + 0.18151400166666667 0.04490069966154803 \\ + 0.18766540183333333 0.04489448945657971 \\ + 0.193816802 0.04488823654667903 \\ + 0.19996820216666666 0.04488243703899517 \\ + 0.20611960233333335 0.04487715711766979 \\ + 0.2122710025 0.04487136962829655 \\ + 0.21842240266666665 0.04486309798935874 \\ + 0.22457380283333334 0.04485360527005957 \\ + 0.230725203 0.0448476314166718 \\ + 0.23687660316666667 0.044848601431894536 \\ + 0.24302800333333333 0.04485107224020261 \\ + 0.2491794035 0.04483645969082626 \\ + 0.25533080366666666 0.044774484794636006 \\ + 0.2614822038333333 0.044592370393489775 \\ + 0.267633604 0.04421530669424536 \\ + 0.2737850041666667 0.04362179231228574 \\ + 0.27993640433333333 0.04280470972471024 \\ + 0.2860878045 0.04173197487913953 \\ + 0.2922392046666667 0.040364235789079016 \\ + 0.29839060483333335 0.038669523760712386 \\ + 0.304542005 0.036613858106809886 \\ + 0.30637899 0.03592799979999999 \\ + 0.3145490964 0.03592799979999999 \\ + 0.3227192028 0.03592799979999999 \\ + 0.33088930920000004 0.03592799979999999 \\ + 0.3390594156 0.03592799979999999 \\ + 0.347229522 0.03592799979999999 \\ + 0.3553996284 0.03592799979999999 \\ + 0.3635697348 0.03592799979999999 \\ + 0.37173984120000003 0.03592799979999999 \\ + 0.3799099476 0.03592799979999999 \\ + 0.388080054 0.03592799979999999 \\ + 0.3962501604 0.03592799979999999 \\ + 0.4044202668 0.03592799979999999 \\ + 0.4125903732 0.03592799979999999 \\ + 0.4207604796 0.03592799979999999 \\ + 0.428930586 0.03592799979999999 \\ + 0.4371006924 0.03592799979999999 \\ + 0.4452707988 0.03592799979999999 \\ + 0.4534409052 0.03592799979999999 \\ + 0.4616110116 0.03592799979999999 \\ + 0.469781118 0.03592799979999999 \\ + 0.4779512244 0.03592799979999999 \\ + 0.4861213308 0.03592799979999999 \\ + 0.4942914372 0.03592799979999999 \\ + 0.5024615436 0.03592799979999999 \\ + 0.51063165 0.03592799979999999 \\ + 0.5188017564 0.03592799979999999 \\ + 0.5269718628 0.03592799979999999 \\ + 0.5351419692 0.03592799979999999 \\ + 0.5433120755999999 0.03592799979999999 \\ + 0.5514821820000001 0.03592799979999999 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={8cf05959-0002-4f13-b71e-e1fa1868f3e2}, draw opacity={1.0}, line width={0.75}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.12 0.05602935219164747 \\ + 0.12615140019524057 0.0560404395104915 \\ + 0.1323028003913925 0.05605296683605158 \\ + 0.13845420058934013 0.05606501577684807 \\ + 0.14460560079001664 0.05607536754340089 \\ + 0.1507570009944323 0.056084531918666 \\ + 0.15690840120370972 0.0560932491500544 \\ + 0.16305980141911983 0.05610185389778746 \\ + 0.16921120164212095 0.056110045676790836 \\ + 0.17536260187440036 0.05611747133702889 \\ + 0.1815140021179268 0.056123773948205766 \\ + 0.18766540237501228 0.05612866310351651 \\ + 0.19381680264838852 0.05613182293510373 \\ + 0.19996820294129872 0.056132848421925056 \\ + 0.20611960325761167 0.05613110596234895 \\ + 0.21227100360196116 0.05612563287887272 \\ + 0.2184224039799177 0.056115209461446 \\ + 0.2245738043982078 0.05609862960554776 \\ + 0.23072520486502654 0.0560742577875494 \\ + 0.236876605390478 0.05603861868336703 \\ + 0.24302800598714014 0.055984546650524734 \\ + 0.24917940667070462 0.05589987935954851 \\ + 0.25533080746060915 0.055767078407355675 \\ + 0.2614822083805179 0.055562800352296375 \\ + 0.26763360945783743 0.055265286576094926 \\ + 0.2737850107226667 0.054863194210018736 \\ + 0.2799364122072503 0.054354784921220145 \\ + 0.28608781394460575 0.05374561692252722 \\ + 0.2922392159645786 0.05305301859198817 \\ + 0.29839061828781116 0.05231414428199146 \\ + 0.3045420209191786 0.051595405041978036 \\ + 0.3063790067118232 0.051406599548768375 \\ + 0.31454911697933774 0.050842252216885195 \\ + 0.3227192280346334 0.050519563370960065 \\ + 0.33088934012977145 0.05032389511663432 \\ + 0.3390594535331789 0.050198985415511384 \\ + 0.347229568558387 0.0501157010556521 \\ + 0.3553996855847916 0.05005814756146559 \\ + 0.3635698050772228 0.05001720842195701 \\ + 0.37173992760768426 0.049987405550129586 \\ + 0.3799100538813233 0.04996530544721607 \\ + 0.3880801847683727 0.049948674250106025 \\ + 0.3962503213439879 0.04993601057118275 \\ + 0.4044204649384488 0.04992627670438774 \\ + 0.41259061720114876 0.04991873810880169 \\ + 0.4207607801833836 0.049912864219275314 \\ + 0.42893095644763335 0.04990826521558875 \\ + 0.43710114921569976 0.04990465056326204 \\ + 0.4452713625764755 0.04990180113190044 \\ + 0.4534416017898208 0.04989955001406339 \\ + 0.4616118737533524 0.049897769060290524 \\ + 0.4697821877598345 0.049896359256787245 \\ + 0.4779525568001732 0.04989524374163353 \\ + 0.4861229999453529 0.04989436266866223 \\ + 0.49429354697824773 0.0498936693892024 \\ + 0.5024642479774059 0.0498931275903585 \\ + 0.5106351944033974 0.049892709139502826 \\ + 0.5188065683278625 0.04989239245934904 \\ + 0.5269787639157566 0.04989216130947543 \\ + 0.5351527026038095 0.049892003887225256 \\ + 0.5433306877795506 0.049891912191107786 \\ + 0.5515188154128429 0.049891881625735275 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={a3fca1c9-e97d-45b7-bf1c-8ca56894c94d}, draw opacity={1.0}, line width={0.75}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.12 0.06710618139257553 \\ + 0.1261514002210339 0.06713071695180639 \\ + 0.13230280044378667 0.0671553292278602 \\ + 0.13845420066992722 0.06717967633249355 \\ + 0.1446056009012248 0.06720344097092065 \\ + 0.1507570011396005 0.06722652798138998 \\ + 0.15690840138718576 0.06724891750798433 \\ + 0.16305980164638673 0.06727051141803732 \\ + 0.16921120191995728 0.06729106515668723 \\ + 0.1753626022110816 0.06731023233667703 \\ + 0.1815140025234716 0.06732758926788507 \\ + 0.18766540286148156 0.067342641873836 \\ + 0.19381680323024608 0.06735480163046952 \\ + 0.19996820363584517 0.0673633454997533 \\ + 0.20611960408550423 0.0673673598287346 \\ + 0.21227100458783607 0.06736568162579662 \\ + 0.21842240515313588 0.06735684052934798 \\ + 0.22457380579374378 0.06733896142861041 \\ + 0.23072520652449496 0.06730951514369517 \\ + 0.23687660736326796 0.06726491146826322 \\ + 0.2430280083316136 0.0672000915347298 \\ + 0.24917940945540965 0.06710837261316725 \\ + 0.25533081076544345 0.06698175664728288 \\ + 0.2614822122977724 0.06681186401686831 \\ + 0.2676336140936322 0.06659199933255601 \\ + 0.27378501619896545 0.06631938676320463 \\ + 0.27993641866383007 0.06599624378782942 \\ + 0.28608782154156026 0.06563029646824577 \\ + 0.2922392248876448 0.06523561804303711 \\ + 0.2983906287592233 0.06483332747820882 \\ + 0.3045420332171931 0.06445101021750609 \\ + 0.30637901962687536 0.0643463473441166 \\ + 0.3145491330389462 0.0639477319598452 \\ + 0.3227192479595764 0.06365532593896576 \\ + 0.3308893647732326 0.06344555413950083 \\ + 0.3390594839471249 0.06329508780318066 \\ + 0.34722960604725867 0.06318620669925075 \\ + 0.3553997317635693 0.06310646525569791 \\ + 0.3635698619412591 0.06304732859525827 \\ + 0.371739997618834 0.06300295281505029 \\ + 0.3799101400745015 0.0629693016722311 \\ + 0.3880802908832295 0.06294355011247844 \\ + 0.39625045198738607 0.06292369096447809 \\ + 0.4044206257847325 0.0629082765068913 \\ + 0.41259081523876096 0.06289624752843993 \\ + 0.42076102401820403 0.06288681890780116 \\ + 0.42893125667534415 0.06287940190572144 \\ + 0.43710151887713694 0.06287355056068024 \\ + 0.4452718177100991 0.06286892412607183 \\ + 0.45344216209086075 0.06286526034495345 \\ + 0.4616125633309914 0.0628623561618278 \\ + 0.4697830359278678 0.06286005361862049 \\ + 0.47795359867673637 0.06285822942069735 \\ + 0.48612427618904097 0.06285678714039036 \\ + 0.49429510072870425 0.06285565134393827 \\ + 0.5024661134932674 0.06285476314142364 \\ + 0.510637361592821 0.06285407680492099 \\ + 0.518808877237784 0.06285355720098837 \\ + 0.5269805936959953 0.06285317785468095 \\ + 0.5351520492424573 0.06285291951215571 \\ + 0.5433213979586135 0.06285276909886658 \\ + 0.5514821820000002 0.06285271896110357 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={f05a5ea2-3766-4b5a-90a6-c9025e218578}, draw opacity={1.0}, line width={0.75}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.12 0.07818301059350359 \\ + 0.126151400241577 0.07821950267194142 \\ + 0.13230280048548837 0.0782559880131186 \\ + 0.13845420073402734 0.07829231617435715 \\ + 0.14460560098962408 0.07832831538807132 \\ + 0.15075700125491626 0.07836381408209799 \\ + 0.15690840153282662 0.07839861751686146 \\ + 0.16305980182664898 0.07843247184616652 \\ + 0.16921120214014587 0.07846504059891733 \\ + 0.17536260247765992 0.07849590014122762 \\ + 0.1815140028442434 0.07852453904258988 \\ + 0.18766540324580985 0.07855035379718306 \\ + 0.1938168036893129 0.07857263630941203 \\ + 0.1999682041829581 0.07859055305782527 \\ + 0.2061196047364545 0.07860311632026916 \\ + 0.21227100536131296 0.07860914849751283 \\ + 0.21842240607120084 0.07860723787386087 \\ + 0.22457380688235992 0.07859567915993154 \\ + 0.23072520781409608 0.07857239328873217 \\ + 0.23687660888933887 0.07853484727372217 \\ + 0.24302801013525505 0.07848003044705751 \\ + 0.24917941158388188 0.07840456300083282 \\ + 0.2553308132727256 0.07830500208116842 \\ + 0.26148221524526294 0.07817837794098743 \\ + 0.26763361755129433 0.0780229410851018 \\ + 0.27378502024718865 0.07783891230973548 \\ + 0.27993642339614044 0.07762899205874955 \\ + 0.28608782706858 0.07739859238088641 \\ + 0.2922392313429909 0.07715580666129163 \\ + 0.2983906363076548 0.07691097355749534 \\ + 0.3045420420640752 0.0766755753846573 \\ + 0.30637902891051905 0.0766090956582217 \\ + 0.31454914455114974 0.07633836320599678 \\ + 0.322719262253222 0.0761163200086327 \\ + 0.3308893825008494 0.07594047385431368 \\ + 0.3390595058962311 0.07580368495588057 \\ + 0.34722963318103195 0.07569809149872803 \\ + 0.35539976526649114 0.075616723614403 \\ + 0.3635699032723407 0.07555393145493997 \\ + 0.3717400485754441 0.07550532423590893 \\ + 0.3799102028699015 0.07546755580465006 \\ + 0.388080368241107 0.07543809536494703 \\ + 0.39625054725697945 0.07541503060303202 \\ + 0.40442074308041226 0.07539691264131396 \\ + 0.41259095960797343 0.07538263871295257 \\ + 0.42076120164109976 0.0753713649848897 \\ + 0.4289314750975138 0.07536244221308494 \\ + 0.43710178727237936 0.07535536825558958 \\ + 0.4452721471607802 0.07534975289929793 \\ + 0.45344256585529447 0.07534529165925995 \\ + 0.4616130570344347 0.0753417461325479 \\ + 0.4697836375593605 0.07533892916690509 \\ + 0.4779543281998854 0.07533669359232714 \\ + 0.4861251545321778 0.07533492361160196 \\ + 0.49429614816331185 0.07533352819344553 \\ + 0.5024673489413295 0.07533243598866415 \\ + 0.5106388108383605 0.07533159141680935 \\ + 0.518810621879253 0.07533095166289289 \\ + 0.5269829765002086 0.07533048439138054 \\ + 0.5351564383917821 0.07533016603620829 \\ + 0.543332881422732 0.07532998057230542 \\ + 0.5515188154128428 0.07532991875100449 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={a1998ca1-0793-4e63-9447-2dcbbb89b322}, draw opacity={1.0}, line width={0.75}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.12 0.08925983979443165 \\ + 0.1261514002549012 0.08930768769610237 \\ + 0.13230280051249943 0.08935560960449251 \\ + 0.13845420077549261 0.08940353188882594 \\ + 0.144605601046736 0.0894513380666458 \\ + 0.15075700132932401 0.0894988566340506 \\ + 0.15690840162667963 0.08954584775223029 \\ + 0.16305980194265315 0.08959199140521185 \\ + 0.1692112022816338 0.08963688056691509 \\ + 0.1753626026486766 0.0896800198575199 \\ + 0.181514003049649 0.08972082667202388 \\ + 0.18766540349140065 0.08975863172261479 \\ + 0.19381680398196213 0.0897926768834148 \\ + 0.1999682045307765 0.08982210956312595 \\ + 0.20611960514897135 0.08984597375713471 \\ + 0.21227100584967618 0.08986319860985523 \\ + 0.2184224066483922 0.0898725857833963 \\ + 0.22457380756341977 0.08987279803444295 \\ + 0.23072520861634768 0.08986235486443839 \\ + 0.23687660983260314 0.08983964813226591 \\ + 0.24302801124205642 0.08980299748430785 \\ + 0.2491794128796673 0.08975076671054721 \\ + 0.25533081478615677 0.08968155388848503 \\ + 0.26148221700869273 0.0895944503248274 \\ + 0.2676336196015953 0.0894893370174616 \\ + 0.2737850226271058 0.08936715393102769 \\ + 0.27993642615630765 0.0892300705468901 \\ + 0.2860878302703292 0.08908151204073678 \\ + 0.2922392350620107 0.08892601151667356 \\ + 0.2983906406382771 0.08876885622063425 \\ + 0.3045420471234639 0.08861550954242504 \\ + 0.3063790342150497 0.08857138189245868 \\ + 0.3145491511093207 0.08838596984491395 \\ + 0.32271927038915565 0.08822441201016228 \\ + 0.33088939260291655 0.08808838882812306 \\ + 0.3390595184317064 0.08797648907387864 \\ + 0.34722964871705686 0.08788580478010745 \\ + 0.3553997844959765 0.0878129941358577 \\ + 0.36356992704499996 0.08775485321077865 \\ + 0.37174007793497926 0.0877085635960768 \\ + 0.3799102390987651 0.08767175970237416 \\ + 0.3880804129144707 0.08764250885603442 \\ + 0.3962506023076106 0.08761925659644776 \\ + 0.4044208108760499 0.08760076370743183 \\ + 0.41259104304231786 0.08758604694108861 \\ + 0.42076130423833435 0.08757432784736127 \\ + 0.4289316011277286 0.08756499052624503 \\ + 0.43710194187024826 0.0875575475904319 \\ + 0.4452723364304007 0.08755161311240367 \\ + 0.45344279692682216 0.08754688127810589 \\ + 0.46161333800683757 0.08754310960262762 \\ + 0.4697839772059938 0.0875401057510919 \\ + 0.47795473520100135 0.08753771719333776 \\ + 0.48612563575046147 0.08753582308273485 \\ + 0.4942967048348483 0.08753432788268865 \\ + 0.5024679677106296 0.08753315637090663 \\ + 0.5106394400997473 0.08753224973544467 \\ + 0.5188111013820477 0.08753156254240115 \\ + 0.5269828086779716 0.08753106040674549 \\ + 0.535154008691445 0.08753071823734165 \\ + 0.543322743829804 0.08753051895060487 \\ + 0.5514821820000001 0.08753045252169261 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={34a410aa-ebc2-4dde-b0d0-cfed39befed0}, draw opacity={1.0}, line width={0.75}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.12 0.10033666899535972 \\ + 0.12615140025972063 0.10039538250716509 \\ + 0.13230280052221355 0.10045432517316684 \\ + 0.13845420079032575 0.10051354088230255 \\ + 0.14460560106706402 0.10057299701664563 \\ + 0.15075700135567988 0.10063255991642192 \\ + 0.15690840165976214 0.10069198275589758 \\ + 0.1630598019833388 0.10075090393602434 \\ + 0.16921120233099135 0.10080885315695454 \\ + 0.1753626027079842 0.10086526204915033 \\ + 0.1815140031204133 0.10091947637043401 \\ + 0.18766540357537678 0.10097076746037408 \\ + 0.1938168040811733 0.10101834167588453 \\ + 0.1999682046475313 0.1010613476062314 \\ + 0.20611960528587536 0.10109888172387062 \\ + 0.21227100600963467 0.1011299937391038 \\ + 0.218422406834599 0.10115369345270674 \\ + 0.22457380777932734 0.10116896178434373 \\ + 0.23072520886561346 0.10117477013910177 \\ + 0.23687661011901207 0.10117011389147092 \\ + 0.2430280115694266 0.10115406627813653 \\ + 0.24917941325176104 0.10112585713526756 \\ + 0.2553308152066385 0.10108497604801062 \\ + 0.26148221748119715 0.10103129187374736 \\ + 0.2676336201299862 0.10096517151955674 \\ + 0.27378502321600184 0.10088757302268427 \\ + 0.2799364268119306 0.10080008660836114 \\ + 0.2860878310016841 0.10070490343691223 \\ + 0.2922392358823359 0.10060470052744373 \\ + 0.2983906415665778 0.1005024406188454 \\ + 0.3045420481858039 0.10040110174599662 \\ + 0.3063790353238422 0.10037153389437943 \\ + 0.31454915246455956 0.10024473922294365 \\ + 0.32271927207158807 0.10012985818882085 \\ + 0.3308893947096599 0.10002906445335612 \\ + 0.3390595210777388 0.0999427782695948 \\ + 0.3472296520389769 0.09987025383397206 \\ + 0.3553997886575703 0.09981011168845659 \\ + 0.36356993224432615 0.09976072362718605 \\ + 0.3717400844129372 0.09972045244561493 \\ + 0.3799102471492997 0.099687781838861 \\ + 0.388080422896663 0.09966137405082315 \\ + 0.39625061465992667 0.0996400846401548 \\ + 0.40442082613295866 0.09962295424492405 \\ + 0.4125910618533038 0.09960918963998613 \\ + 0.4207613273889434 0.09959814115254509 \\ + 0.4289316295615548 0.09958928019716523 \\ + 0.43710197670947615 0.09958217872865896 \\ + 0.44527237899040106 0.09957649130687644 \\ + 0.4534428487172092 0.09957193988220653 \\ + 0.46161340070814477 0.09956830112584683 \\ + 0.46978405261252476 0.09956539601100546 \\ + 0.47795482514627424 0.09956308132165273 \\ + 0.4861257421556427 0.09956124277961106 \\ + 0.494296830506958 0.09955978951408254 \\ + 0.5024681203045294 0.09955864963716243 \\ + 0.510639648071418 0.09955776672796887 \\ + 0.5188114735956995 0.09955709706379755 \\ + 0.5269837504807874 0.09955660746829151 \\ + 0.5351569956825083 0.09955627367509137 \\ + 0.5433330799713588 0.09955607913807567 \\ + 0.5515188154128428 0.09955601429240378 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={fbedaecf-e85f-4fc8-a0e3-0296e2f08dd0}, draw opacity={1.0}, line width={0.75}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.12 0.11141349819628778 \\ + 0.12615140025554467 0.11148236259103259 \\ + 0.13230280051364623 0.11155172607354069 \\ + 0.13845420077703385 0.11162185072557691 \\ + 0.14460560104858047 0.11169285335570084 \\ + 0.1507570013313835 0.11176466904790242 \\ + 0.15690840162885206 0.1118370460812192 \\ + 0.16305980194480232 0.11190956234905504 \\ + 0.16921120228356445 0.11198165270245582 \\ + 0.17536260265010248 0.11205263965240041 \\ + 0.18151400305015145 0.11212176274436124 \\ + 0.1876654034903738 0.11218820383875444 \\ + 0.19381680397853998 0.11225110758252534 \\ + 0.19996820452373618 0.11230959800557637 \\ + 0.20611960513660454 0.11236279307574953 \\ + 0.21227100582962008 0.11240981908966702 \\ + 0.21842240661740944 0.11244982595007046 \\ + 0.22457380751711667 0.11248200427707714 \\ + 0.23072520854882148 0.11250560651005616 \\ + 0.23687660973601576 0.11251997500326537 \\ + 0.243028011106145 0.11252457917280535 \\ + 0.24917941269122246 0.11251906151488966 \\ + 0.2553308145285274 0.11250328981595437 \\ + 0.2614822166614041 0.11247741035986174 \\ + 0.26763361914018513 0.11244189405263647 \\ + 0.2737850220232743 0.11239756478204808 \\ + 0.2799364253784347 0.11234559906099814 \\ + 0.2860878292843385 0.11228748906818595 \\ + 0.29223923383244643 0.11222496656167623 \\ + 0.29839063912928604 0.11215989152137111 \\ + 0.30454204529919815 0.11209411675340528 \\ + 0.3063790322893496 0.11207466773029352 \\ + 0.3145491486937438 0.11198976551337624 \\ + 0.3227192674084074 0.11191047652297306 \\ + 0.330889388962727 0.111838736376796 \\ + 0.3390595140104026 0.11177546452623631 \\ + 0.347229643357913 0.11172078627973303 \\ + 0.35539977799939276 0.11167428840052289 \\ + 0.3635699191595374 0.11163524379598788 \\ + 0.3717400683464427 0.1116027812957342 \\ + 0.37991022741664443 0.11157600045120916 \\ + 0.38808039865509203 0.1115540415055056 \\ + 0.396250584873342 0.11153612285570005 \\ + 0.40442078952990634 0.1115215568622359 \\ + 0.41259101687739697 0.11150975228942685 \\ + 0.42076127214181636 0.11150020917153226 \\ + 0.4289315617399195 0.11149250990548899 \\ + 0.4371018935407276 0.11148630892654979 \\ + 0.4452722771764445 0.11148132234100594 \\ + 0.453442724405047 0.11147731825425801 \\ + 0.4616132495192633 0.11147410813803929 \\ + 0.469783869779121 0.11147153934678937 \\ + 0.4779546058046166 0.11146948876243899 \\ + 0.4861254817658055 0.11146785748017712 \\ + 0.4942965249431467 0.1114665664195881 \\ + 0.5024677634546381 0.11146555273962629 \\ + 0.5106392184697081 0.11146476694217285 \\ + 0.5188108788505589 0.11146417056132538 \\ + 0.5269826167802892 0.11146373435046013 \\ + 0.5351538979259829 0.11146343689352065 \\ + 0.5433227613075436 0.11146326357384015 \\ + 0.5514821820000001 0.11146320580061327 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={6f0edf5f-30d0-4bf7-aa84-823f6cef856d}, draw opacity={1.0}, line width={0.75}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.12 0.12249032739721583 \\ + 0.12615140024271357 0.12256798715099464 \\ + 0.13230280048750778 0.12264664646709793 \\ + 0.13845420073673972 0.12272697691396277 \\ + 0.14460560099287698 0.12280934155347033 \\ + 0.1507570012585672 0.12289374982477055 \\ + 0.15690840153671326 0.12297988993388287 \\ + 0.16305980183055457 0.12306719467988293 \\ + 0.16921120214375715 0.12315491172194172 \\ + 0.17536260248051416 0.12324216719187772 \\ + 0.1815140028456599 0.12332801937251056 \\ + 0.18766540324479908 0.1234114987789757 \\ + 0.1938168036844555 0.12349163568811568 \\ + 0.19996820417224237 0.12356747941597948 \\ + 0.20611960471705912 0.1236381149258848 \\ + 0.21227100532931756 0.12370268190535638 \\ + 0.218422406021203 0.12376039434363861 \\ + 0.2245738068069738 0.12381055584075983 \\ + 0.23072520770330537 0.1238525722232395 \\ + 0.23687660872968597 0.12388596778461915 \\ + 0.2430280099088706 0.12391040769746414 \\ + 0.24917941126740398 0.12392572336658478 \\ + 0.2553308128362228 0.12393193634922521 \\ + 0.26148221465135507 0.12392927958575795 \\ + 0.267633616754736 0.12391821512694683 \\ + 0.27378501919516685 0.12389944276158213 \\ + 0.27993642202944796 0.12387389111256711 \\ + 0.28608782532372357 0.12384268624056223 \\ + 0.2922392291550817 0.12380709913175461 \\ + 0.29839063361345675 0.12376847642707164 \\ + 0.3045420388038831 0.12372815935402574 \\ + 0.30637902546977697 0.12371603274379787 \\ + 0.3145491402472744 0.1236619888789181 \\ + 0.32271925696575005 0.12361005525695089 \\ + 0.3308893760706582 0.12356184175324728 \\ + 0.33905949811136643 0.12351830759697713 \\ + 0.3472296237651819 0.12347987138476386 \\ + 0.355399753866825 0.12344654795511546 \\ + 0.3635698894446839 0.12341808044642985 \\ + 0.3717400317654777 0.12339405088118224 \\ + 0.37991018238932317 0.12337396392155768 \\ + 0.38808034323767204 0.12335730516822024 \\ + 0.3962505166771905 0.1233435784347396 \\ + 0.40442070562344534 0.12333232717257825 \\ + 0.4125909136693054 0.12332314476826371 \\ + 0.4207611452443796 0.12331567752023932 \\ + 0.42893140581376 0.12330962313150153 \\ + 0.4371017021270834 0.12330472670796604 \\ + 0.44527204253287295 0.1233007755881061 \\ + 0.4534424373788569 0.12329759384162746 \\ + 0.46161289952734985 0.12329503693436912 \\ + 0.46978344502730296 0.12329298682876325 \\ + 0.47795409400497524 0.12329134764296687 \\ + 0.4861248718771444 0.12329004190227692 \\ + 0.4942958111129259 0.12328900736500872 \\ + 0.5024669542191273 0.12328819437833258 \\ + 0.5106383603992285 0.123287563708417 \\ + 0.5188101253521777 0.12328708478744244 \\ + 0.526982450866389 0.12328673432366069 \\ + 0.5351559041316796 0.1232864952278606 \\ + 0.5433323929047321 0.12328635582365197 \\ + 0.551518815412843 0.12328630935558241 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={026ef830-6c67-4a58-8e91-6e77c3ed252d}, draw opacity={1.0}, line width={0.75}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.12 0.1335671565981439 \\ + 0.12615140022235488 0.1336508446344345 \\ + 0.13230280044611692 0.13373657213266293 \\ + 0.13845420067305042 0.13382579732752276 \\ + 0.14460560090498 0.13391924135262664 \\ + 0.15075700114384671 0.13401687233765402 \\ + 0.15690840139176687 0.1341181109398657 \\ + 0.1630598016510932 0.13422203132650048 \\ + 0.1692112019244811 0.13432750486434455 \\ + 0.17536260221496122 0.13443330414778515 \\ + 0.18151400252602115 0.1345381905217773 \\ + 0.18766540286169772 0.1346409642309278 \\ + 0.193816803226682 0.13474048468284108 \\ + 0.19996820362643988 0.13483567444425562 \\ + 0.2061196040673514 0.13492552158683233 \\ + 0.21227100455687117 0.1350091095795613 \\ + 0.21842240510371397 0.13508565582842222 \\ + 0.22457380571806682 0.13515451980748214 \\ + 0.23072520641183372 0.1352151874130788 \\ + 0.2368766071989195 0.13526726829449545 \\ + 0.24302800809555822 0.13531051547766182 \\ + 0.24917940912069386 0.13534484638930663 \\ + 0.25533081029642163 0.13537034567568784 \\ + 0.2614822116485037 0.13538726081860353 \\ + 0.2676336132069755 0.13539601336710996 \\ + 0.2737850150068578 0.13539721850969472 \\ + 0.27993641708899336 0.1353916860143239 \\ + 0.2860878195010295 0.13538039027131413 \\ + 0.2922392222985777 0.13536442502857887 \\ + 0.29839062554657736 0.13534495550240616 \\ + 0.30454202932089514 0.13532316547991338 \\ + 0.3063790155173971 0.13531642747556027 \\ + 0.3145491279358046 0.1352854868089334 \\ + 0.32271924175138167 0.13525480603821718 \\ + 0.33088935728515295 0.13522565408360918 \\ + 0.33905947493279903 0.1351988294755506 \\ + 0.34722959518198687 0.13517475994558956 \\ + 0.3553997186336654 0.13515359488510492 \\ + 0.3635698460282941 0.13513528773234879 \\ + 0.37173997827820915 0.13511966502202966 \\ + 0.3799101165076361 0.1351064806361067 \\ + 0.38808026210226687 0.1350954557794504 \\ + 0.3962504167708732 0.1350863065436754 \\ + 0.4044205826222216 0.13507876151039622 \\ + 0.41259076226170527 0.13507257187209598 \\ + 0.4207609589138673 0.13506751625594868 \\ + 0.4289311765797538 0.13506340201414993 \\ + 0.43710142024252935 0.13506006431355577 \\ + 0.4452716961422626 0.13505736397892873 \\ + 0.4534420121533931 0.1350551847400687 \\ + 0.4616123783195899 0.1350534303037881 \\ + 0.4697828076354344 0.13505202150706594 \\ + 0.47795331721670903 0.13505089369454465 \\ + 0.48612393006187904 0.13504999438898 \\ + 0.4942946776020239 0.13504928127644167 \\ + 0.5024656028282337 0.13504872050046546 \\ + 0.5106367616621093 0.13504828524465456 \\ + 0.5188082115728961 0.1350479545769144 \\ + 0.5269799439722115 0.13504771252740955 \\ + 0.5351515995595778 0.13504754737373442 \\ + 0.5433213891694104 0.13504745110549474 \\ + 0.5514821820000002 0.1350474190160815 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={d1a01947-1cb9-44bb-b190-88259c1926ec}, draw opacity={1.0}, line width={0.75}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.12 0.14464398579907195 \\ + 0.1261514001962611 0.1447277691363484 \\ + 0.132302800393164 0.14481614363284223 \\ + 0.1384542005917003 0.14491206495073028 \\ + 0.14460560079285847 0.1450166051869055 \\ + 0.15075700099767186 0.14512903043874306 \\ + 0.15690840120725882 0.145247877297928 \\ + 0.16305980142285748 0.1453714339695169 \\ + 0.1692112016458617 0.14549789279093822 \\ + 0.17536260187785932 0.14562542051196536 \\ + 0.18151400212067537 0.1457523440446712 \\ + 0.1876654023764194 0.1458771844962717 \\ + 0.1938168026475395 0.14599862705058791 \\ + 0.19996820293688403 0.1461154636342167 \\ + 0.20611960324777379 0.14622649016019462 \\ + 0.21227100358408668 0.1463306100739647 \\ + 0.21842240395035464 0.14642701504444167 \\ + 0.22457380435187183 0.14651516205877915 \\ + 0.23072520479481992 0.14659461262109502 \\ + 0.23687660528641738 0.1466649843626945 \\ + 0.24302800583509376 0.14672603705782658 \\ + 0.24917940645069037 0.14677775336237048 \\ + 0.2553308071446905 0.14682028588402926 \\ + 0.26148220793049315 0.1468538547638709 \\ + 0.26763360882374065 0.146878777620109 \\ + 0.27378500984270293 0.14689558885228318 \\ + 0.27993641100872163 0.1469050910532755 \\ + 0.28608781234672537 0.14690827504726234 \\ + 0.29223921388583923 0.14690623885046122 \\ + 0.29839061566010217 0.146900166876214 \\ + 0.30454201770929595 0.14689135308812828 \\ + 0.30637900333372864 0.14688851094714875 \\ + 0.31454911287516696 0.1468749285743424 \\ + 0.3227192231467283 0.14686102249543315 \\ + 0.3308893343162264 0.14684755481245004 \\ + 0.3390594465904846 0.14683499422035584 \\ + 0.34722956022439017 0.146823603475183 \\ + 0.35539967553204227 0.14681349801125748 \\ + 0.3635697929005032 0.14680469016934244 \\ + 0.37173991280679575 0.14679712389736138 \\ + 0.3799100358389651 0.1467907016420016 \\ + 0.38808016272226664 0.1467853044195057 \\ + 0.3962502943518805 0.14678080605369023 \\ + 0.40442043183406434 0.14677708266194575 \\ + 0.41259057653843373 0.14677401847132818 \\ + 0.4207607301653186 0.14677150894740648 \\ + 0.4289308948342452 0.14676946205934605 \\ + 0.4371010732032426 0.1467677983278903 \\ + 0.44527126863525707 0.14676645013696812 \\ + 0.4534414854402353 0.14676536064905302 \\ + 0.4616117292452863 0.14676448255345573 \\ + 0.46978200759368277 0.14676377679387123 \\ + 0.4779523309766128 0.14676321136241535 \\ + 0.4861227147347506 0.14676276020703213 \\ + 0.494293182827893 0.1467624022727971 \\ + 0.5024637759106771 0.14676212068132216 \\ + 0.5106345700757328 0.1467619020430869 \\ + 0.5188057239001983 0.1467617358927971 \\ + 0.5269776053049885 0.14676161423624165 \\ + 0.5351511552596466 0.1467615311978387 \\ + 0.5433289841335676 0.1467614827621099 \\ + 0.551518815412843 0.14676146661686695 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={8aa5d03d-3754-4ec3-8721-d3822a0bb74d}, draw opacity={1.0}, line width={0.75}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.12 0.155720815 \\ + 0.12615140016666665 0.15579077631842816 \\ + 0.13230280033333333 0.1558732022935015 \\ + 0.13845420049999999 0.1559729329828782 \\ + 0.14460560066666667 0.15609102041875295 \\ + 0.15075700083333332 0.15622265571003757 \\ + 0.156908401 0.15636407383589124 \\ + 0.16305980116666666 0.15651236616271635 \\ + 0.16921120133333334 0.15666486336534555 \\ + 0.1753626015 0.15681857836445 \\ + 0.18151400166666667 0.15697133722994003 \\ + 0.18766540183333333 0.15712150120938215 \\ + 0.193816802 0.15726777750621487 \\ + 0.19996820216666666 0.15740915183117207 \\ + 0.20611960233333335 0.15754388480717682 \\ + 0.2122710025 0.1576701304503246 \\ + 0.21842240266666665 0.15778714679780784 \\ + 0.22457380283333334 0.15789500367297732 \\ + 0.230725203 0.15799347431712235 \\ + 0.23687660316666667 0.1580818906263962 \\ + 0.24302800333333333 0.15815975337140403 \\ + 0.2491794035 0.15822728314697948 \\ + 0.25533080366666666 0.15828503040023142 \\ + 0.2614822038333333 0.15833308352046074 \\ + 0.267633604 0.1583712647951522 \\ + 0.2737850041666667 0.15839986466358472 \\ + 0.27993640433333333 0.15841995001612175 \\ + 0.2860878045 0.15843280185958125 \\ + 0.2922392046666667 0.15843959620544462 \\ + 0.29839060483333335 0.1584414626579145 \\ + 0.304542005 0.1584389348467872 \\ + 0.30637899 0.1584389348467872 \\ + 0.3145490964 0.1584389348467872 \\ + 0.3227192028 0.1584389348467872 \\ + 0.33088930920000004 0.1584389348467872 \\ + 0.3390594156 0.1584389348467872 \\ + 0.347229522 0.1584389348467872 \\ + 0.3553996284 0.1584389348467872 \\ + 0.3635697348 0.1584389348467872 \\ + 0.37173984120000003 0.1584389348467872 \\ + 0.3799099476 0.1584389348467872 \\ + 0.388080054 0.1584389348467872 \\ + 0.3962501604 0.1584389348467872 \\ + 0.4044202668 0.1584389348467872 \\ + 0.4125903732 0.1584389348467872 \\ + 0.4207604796 0.1584389348467872 \\ + 0.428930586 0.1584389348467872 \\ + 0.4371006924 0.1584389348467872 \\ + 0.4452707988 0.1584389348467872 \\ + 0.4534409052 0.1584389348467872 \\ + 0.4616110116 0.1584389348467872 \\ + 0.469781118 0.1584389348467872 \\ + 0.4779512244 0.1584389348467872 \\ + 0.4861213308 0.1584389348467872 \\ + 0.4942914372 0.1584389348467872 \\ + 0.5024615436 0.1584389348467872 \\ + 0.51063165 0.1584389348467872 \\ + 0.5188017564 0.1584389348467872 \\ + 0.5269718628 0.1584389348467872 \\ + 0.5351419692 0.1584389348467872 \\ + 0.5433120755999999 0.1584389348467872 \\ + 0.5514821820000002 0.1584389348467872 \\ + } + ; + \addplot[color={rgb,1:red,0.4118;green,0.6824;blue,0.3725}, name path={56add62f-64ae-481a-b331-a8f1e1b999ac}, draw opacity={1.0}, line width={2}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.12 0.04495252299071941 \\ + 0.12 0.05602935219164747 \\ + 0.12 0.06710618139257553 \\ + 0.12 0.07818301059350359 \\ + 0.12 0.08925983979443165 \\ + 0.12 0.10033666899535972 \\ + 0.12 0.11141349819628778 \\ + 0.12 0.12249032739721583 \\ + 0.12 0.1335671565981439 \\ + 0.12 0.14464398579907195 \\ + 0.12 0.155720815 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={b28b339c-50a1-4eed-bfbb-20203a8780c9}, draw opacity={1.0}, line width={1.0}, solid, mark={*}, mark size={1.125 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.3608;blue,0.6706}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 0.304542005 0.1584389348467872 \\ + 0.29839060483333335 0.1584414626579145 \\ + 0.2922392046666667 0.15843959620544462 \\ + 0.2860878045 0.15843280185958125 \\ + 0.27993640433333333 0.15841995001612175 \\ + 0.2737850041666667 0.15839986466358472 \\ + 0.267633604 0.1583712647951522 \\ + 0.2614822038333333 0.15833308352046074 \\ + 0.25533080366666666 0.15828503040023142 \\ + 0.2491794035 0.15822728314697948 \\ + 0.24302800333333333 0.15815975337140403 \\ + 0.23687660316666667 0.1580818906263962 \\ + 0.230725203 0.15799347431712235 \\ + 0.22457380283333334 0.15789500367297732 \\ + 0.21842240266666665 0.15778714679780784 \\ + 0.2122710025 0.1576701304503246 \\ + 0.20611960233333335 0.15754388480717682 \\ + 0.19996820216666666 0.15740915183117207 \\ + 0.193816802 0.15726777750621487 \\ + 0.18766540183333333 0.15712150120938215 \\ + 0.18151400166666667 0.15697133722994003 \\ + 0.1753626015 0.15681857836445 \\ + 0.16921120133333334 0.15666486336534555 \\ + 0.16305980116666666 0.15651236616271635 \\ + 0.156908401 0.15636407383589124 \\ + 0.15075700083333332 0.15622265571003757 \\ + 0.14460560066666667 0.15609102041875295 \\ + 0.13845420049999999 0.1559729329828782 \\ + 0.13230280033333333 0.1558732022935015 \\ + 0.12615140016666665 0.15579077631842816 \\ + 0.12 0.155720815 \\ + 0.11399279808861612 0.15565969080491326 \\ + 0.10800206150011583 0.15560249443750745 \\ + 0.10204421042707724 0.15555102467759901 \\ + 0.09613557492516646 0.15551295342131385 \\ + 0.09029235015358988 0.15549417513847946 \\ + 0.08453055198528892 0.15550690575697393 \\ + 0.07886597310854516 0.15555806588088175 \\ + 0.07331413974031975 0.15565145553095425 \\ + 0.06789026906997177 0.15579480039342583 \\ + 0.06260922754999998 0.1559972892969931 \\ + 0.05748549014812998 0.15626682407104356 \\ + 0.052533100672433664 0.15660670998792758 \\ + 0.04776563327822751 0.15702395996670845 \\ + 0.04319615526225648 0.15752589111786994 \\ + 0.038837191246141795 0.1581190016491485 \\ + 0.03470068884726381 0.1588032721112729 \\ + 0.030797985931173034 0.15958255369945537 \\ + 0.02713977953528892 0.16046238560820839 \\ + 0.023736096549063807 0.16144508306941582 \\ + 0.020596266230975817 0.16253214292681187 \\ + 0.01772889463767991 0.16372296488091606 \\ + 0.01514184103540476 0.16501480690166814 \\ + 0.012842196358250287 0.16640662505317158 \\ + 0.010836263772430254 0.16789724603614412 \\ + 0.009129541399731704 0.1694852415602899 \\ + 0.007726707247545409 0.1711796485936844 \\ + 0.006631606386772701 0.17300038865420833 \\ + 0.005847240412753437 0.17482944254720592 \\ + 0.005375759218101773 0.1769049528784241 \\ + 0.0052184551 0.17818011312626458 \\ + 0.005375759218101773 0.18111733553290799 \\ + 0.005847240412753437 0.1832370262313411 \\ + 0.006631606386772701 0.18538397929620315 \\ + 0.007726707247545409 0.18749476787817393 \\ + 0.009129541399731704 0.18959413853240056 \\ + 0.010836263772430254 0.19167163675489338 \\ + 0.012842196358250287 0.19371567907762274 \\ + 0.01514184103540476 0.19571723114029266 \\ + 0.01772889463767991 0.19766663307197876 \\ + 0.020596266230975817 0.19955300101177723 \\ + 0.023736096549063807 0.20136450910193648 \\ + 0.02713977953528892 0.20309181071356452 \\ + 0.030797985931173034 0.20472620584894421 \\ + 0.03470068884726381 0.20625768286324309 \\ + 0.038837191246141795 0.2076773483741656 \\ + 0.04319615526225648 0.20897894650873994 \\ + 0.04776563327822751 0.21015543159349476 \\ + 0.052533100672433664 0.21119806292411006 \\ + 0.05748549014812998 0.21210074637335335 \\ + 0.06260922754999998 0.2128591458243588 \\ + 0.06789026906997177 0.21346996882865465 \\ + 0.07331413974031975 0.21393111499918402 \\ + 0.07886597310854516 0.21424145596242564 \\ + 0.08453055198528892 0.2144009116777412 \\ + 0.09029235015358988 0.21441087192011882 \\ + 0.09613557492516646 0.21427256561901806 \\ + 0.10204421042707724 0.2139882937494529 \\ + 0.10800206150011583 0.21356450119740195 \\ + 0.11399279808861612 0.2130063830369111 \\ + 0.12 0.21231528902120386 \\ + 0.12615140016666665 0.21148163030815084 \\ + 0.13230280033333333 0.21054232773485568 \\ + 0.13845420049999999 0.20951351266887752 \\ + 0.14460560066666667 0.20840624793627152 \\ + 0.15075700083333332 0.2072267992995797 \\ + 0.156908401 0.20597836002063233 \\ + 0.16305980116666666 0.2046625102172418 \\ + 0.16921120133333334 0.2032814554715009 \\ + 0.1753626015 0.20183911842645766 \\ + 0.18151400166666667 0.20033903152400717 \\ + 0.18766540183333333 0.198782514933333 \\ + 0.193816802 0.19717035779256822 \\ + 0.19996820216666666 0.19550419230865274 \\ + 0.20611960233333335 0.193785876944981 \\ + 0.2122710025 0.1920164435257992 \\ + 0.21842240266666665 0.1901965719398472 \\ + 0.22457380283333334 0.18832735174399645 \\ + 0.230725203 0.18640963464445282 \\ + 0.23687660316666667 0.18444325695992825 \\ + 0.24302800333333333 0.18242791302049308 \\ + 0.2491794035 0.18036393406872206 \\ + 0.25533080366666666 0.17825155523074446 \\ + 0.2614822038333333 0.1760898628465513 \\ + 0.267633604 0.17387797068935812 \\ + 0.2737850041666667 0.17161626688836612 \\ + 0.27993640433333333 0.16930459165100145 \\ + 0.2860878045 0.1669411898638361 \\ + 0.2922392046666667 0.16452422700875094 \\ + 0.29839060483333335 0.16205211714309609 \\ + 0.304542005 0.15952600512626458 \\ + } + ; + \addplot[color={rgb,1:red,0.7451;green,0.298;blue,0.302}, name path={16eca9c6-fe46-46c3-98a3-038192c88a0a}, draw opacity={1.0}, line width={1.0}, solid, mark={*}, mark size={1.125 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.7451;green,0.298;blue,0.302}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 0.0 0.0 \\ + 0.00016445582945114 0.002740749981173598 \\ + 0.0006573725558072052 0.005643307185909748 \\ + 0.0014773991285834676 0.00831732970954065 \\ + 0.0026222879119433174 0.010982863391086622 \\ + 0.004088900845311803 0.013574999693898887 \\ + 0.005873218044581576 0.01609783096746975 \\ + 0.007970348820335791 0.01854798891045612 \\ + 0.010374545082887895 0.020917835209454175 \\ + 0.013079217097395852 0.023202469121967 \\ + 0.016076951545867354 0.02539710667209484 \\ + 0.019359531846549115 0.0274955317958163 \\ + 0.022917960675006305 0.02949157705815014 \\ + 0.026742484625163505 0.03138038128041586 \\ + 0.03082262094271269 0.033157105979071975 \\ + 0.035147186257614274 0.0348168854917705 \\ + 0.03970432723693701 0.03635670057951697 \\ + 0.0444815530740195 0.037773299047661385 \\ + 0.04946576972490322 0.03906327587476941 \\ + 0.054643315798196736 0.040224241354043955 \\ + 0.059999999999999984 0.04125553477214516 \\ + 0.06552114003125438 0.042158781258759444 \\ + 0.07119160283090395 0.04293422532362003 \\ + 0.07699584605456396 0.043581158174966446 \\ + 0.0829179606750063 0.044101461786900796 \\ + 0.0889417145876975 0.04450114439797895 \\ + 0.09505059710186889 0.044786996687128246 \\ + 0.10122786419517228 0.04495063424158973 \\ + 0.10745658440788158 0.044998666961206364 \\ + 0.11371968525084675 0.044983194126287505 \\ + 0.12 0.04495252299071941 \\ + 0.12615140016666665 0.04494248592934282 \\ + 0.13230280033333333 0.04494776043555422 \\ + 0.13845420049999999 0.044949764153980734 \\ + 0.14460560066666667 0.044942278699579535 \\ + 0.15075700083333332 0.04493204538203043 \\ + 0.156908401 0.044923127246484104 \\ + 0.16305980116666666 0.04491727692121097 \\ + 0.16921120133333334 0.04491196172254526 \\ + 0.1753626015 0.044906620646925216 \\ + 0.18151400166666667 0.04490069966154803 \\ + 0.18766540183333333 0.04489448945657971 \\ + 0.193816802 0.04488823654667903 \\ + 0.19996820216666666 0.04488243703899517 \\ + 0.20611960233333335 0.04487715711766979 \\ + 0.2122710025 0.04487136962829655 \\ + 0.21842240266666665 0.04486309798935874 \\ + 0.22457380283333334 0.04485360527005957 \\ + 0.230725203 0.0448476314166718 \\ + 0.23687660316666667 0.044848601431894536 \\ + 0.24302800333333333 0.04485107224020261 \\ + 0.2491794035 0.04483645969082626 \\ + 0.25533080366666666 0.044774484794636006 \\ + 0.2614822038333333 0.044592370393489775 \\ + 0.267633604 0.04421530669424536 \\ + 0.2737850041666667 0.04362179231228574 \\ + 0.27993640433333333 0.04280470972471024 \\ + 0.2860878045 0.04173197487913953 \\ + 0.2922392046666667 0.040364235789079016 \\ + 0.29839060483333335 0.038669523760712386 \\ + 0.304542005 0.036613858106809886 \\ + 0.30637899 0.03592799979999999 \\ + } + ; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/ductboundaries.tikz b/v0.5.0/DuctAPE/theory_latex/figures/ductboundaries.tikz new file mode 100644 index 00000000..3a83622c --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/ductboundaries.tikz @@ -0,0 +1,412 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{grid style= {/pgfplots/on layer=axis grid},% +% tick style= {/pgfplots/on layer=axis ticks},% +% axis line style= {/pgfplots/on layer=axis lines},% +% label style= {/pgfplots/on layer=axis descriptions},% +% legend style= {/pgfplots/on layer=axis descriptions},% +% title style= {/pgfplots/on layer=axis descriptions},% +% colorbar style= {/pgfplots/on layer=axis descriptions},% +% ticklabel style= {/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={1.0mm}, yshift={-1.0mm}, width={125.0mm}, height={59.329985581352126mm}, scaled x ticks={false}, xlabel={}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorticks={false}, xmajorgrids={false}, xmin={-0.5662644579820196}, xmax={2.0434760875003315}, axis x line*={left}, separate axis lines, x axis line style={{draw opacity = 0}}, scaled y ticks={false}, ylabel={}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, ymajorticks={false}, ymajorgrids={false}, ymin={-0.03566825509408034}, ymax={1.2246100915634206}, axis y line*={left}, y axis line style={{draw opacity = 0}}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, name path={9f9a8286-0d63-4ca5-97b9-68a148e2ec05}, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.984807753012208 0.5763518223330696 \\ + 0.9844351360936109 0.5764585084471965 \\ + 0.9833178488718401 0.5767783398223502 \\ + 0.9814575815137263 0.5773106383664338 \\ + 0.9788571494974746 0.5780542831938278 \\ + 0.9755204913583104 0.5790077241891667 \\ + 0.9714526654250296 0.5801690003308869 \\ + 0.9666598454442763 0.5815357621326276 \\ + 0.9611493149657464 0.5831052974104652 \\ + 0.9549294603420392 0.5848745594575935 \\ + 0.948009762182275 0.586840196609359 \\ + 0.9404007850893823 0.58899858211369 \\ + 0.9321141655075785 0.5913458431872584 \\ + 0.9231625975092368 0.5938778881376279 \\ + 0.9135598163591558 0.596590430466616 \\ + 0.9033205797091218 0.599479008939668 \\ + 0.8924606462963154 0.6025390027087347 \\ + 0.8809967520451464 0.605765640709582 \\ + 0.8689465835029292 0.609154004715372 \\ + 0.8563287485746873 0.6126990256126977 \\ + 0.8431627445605073 0.6163954726692624 \\ + 0.8294689235392595 0.6202379357787597 \\ + 0.8152684551841755 0.624220800892463 \\ + 0.8005832871376403 0.6283382190725214 \\ + 0.7854361031135264 0.6325840698227927 \\ + 0.7698502789343761 0.6369519195630753 \\ + 0.753849836746676 0.6414349763058262 \\ + 0.7374593976893672 0.6460260417652868 \\ + 0.7207041333176776 0.6507174622722015 \\ + 0.703609716105583 0.6555010799785538 \\ + 0.6862022693649913 0.6603681859121878 \\ + 0.6685083169276471 0.6653094764779794 \\ + 0.6505547329363813 0.6703150149984327 \\ + 0.6323686920855524 0.6753741998412959 \\ + 0.6139776206363418 0.6804757405951508 \\ + 0.5954091485112052 0.6856076436271092 \\ + 0.5766910627436074 0.6907572081919976 \\ + 0.5578512625247858 0.6959110340629291 \\ + 0.5389177160493854 0.7010550414231353 \\ + 0.5199184193173085 0.7061745035033224 \\ + 0.5008813570009937 0.7112540921733669 \\ + 0.4818344654367231 0.7162779364081796 \\ + 0.4628055977466275 0.7212296932517661 \\ + 0.44382249104605404 0.7260926306079724 \\ + 0.4249127356401505 0.7308497208982179 \\ + 0.40610374606514005 0.7354837443527922 \\ + 0.38742947828243757 0.7400156503954027 \\ + 0.36892745404996824 0.744487946646726 \\ + 0.3506239757468849 0.7488811106016771 \\ + 0.3325448236433029 0.7531745169696277 \\ + 0.31471538274228167 0.7573474142746007 \\ + 0.29716062509514174 0.7613790785420954 \\ + 0.2799050925695233 0.7652489658999977 \\ + 0.26297287971198097 0.7689368616760865 \\ + 0.2463876163577223 0.7724230236422368 \\ + 0.2301724496596362 0.7756883171730086 \\ + 0.2143500252366077 0.7787143402516679 \\ + 0.19894246717670294 0.7814835364664579 \\ + 0.18397135667335 0.7839792943897093 \\ + 0.16945770912119734 0.7861860320167947 \\ + 0.1554219495518097 0.7880892652547997 \\ + 0.14188388634655563 0.7896756597852037 \\ + 0.1288626832236327 0.7909330659734229 \\ + 0.11637682955681128 0.7918505368529675 \\ + 0.10444410914373474 0.7924183295652271 \\ + 0.09308156760010425 0.7926278909795603 \\ + 0.08230547861142092 0.7924718285446105 \\ + 0.07213130932485697 0.7919438677232176 \\ + 0.06257368520906725 0.7910387976330364 \\ + 0.05364635474825799 0.7897524067468693 \\ + 0.045362154367657864 0.7880814106954419 \\ + 0.03773297400993516 0.7860233743565836 \\ + 0.030769723795505355 0.7835766305052623 \\ + 0.024482302203706625 0.7807401973365964 \\ + 0.018879566206349632 0.7775136971579549 \\ + 0.013969303770230049 0.7738972784769438 \\ + 0.009758209121127863 0.769891543591061 \\ + 0.006251861129095012 0.7654974836149062 \\ + 0.003454705134159128 0.760716422665974 \\ + 0.0013700384838269124 0.7555499726752549 \\ + 0.0 0.75 \\ + -0.0006375497850319564 0.7441643738247978 \\ + -0.0005257251018463557 0.7381422810342595 \\ + 0.00033468913220779115 0.7319395336454086 \\ + 0.0019421192020855358 0.725564294932699 \\ + 0.004294194833831617 0.7190270090631264 \\ + 0.00738773864768258 0.7123403044503047 \\ + 0.011218753077714012 0.7055188723147481 \\ + 0.01578240507339603 0.6985793223117476 \\ + 0.0210730089551451 0.6915400174258863 \\ + 0.027084007845146817 0.6844208906260163 \\ + 0.03380795413540815 0.6772432460209211 \\ + 0.0412364894864125 0.6700295474495197 \\ + 0.04936032487131822 0.6628031975770657 \\ + 0.05816922119201805 0.655588310648338 \\ + 0.06765197099442276 0.6484094820695467 \\ + 0.07779638180114776 0.6412915579530838 \\ + 0.08858926156067704 0.6342594076651004 \\ + 0.10001640668357709 0.6273377022681408 \\ + 0.11206259309916514 0.6205507015537896 \\ + 0.12471157072109404 0.6139220521185893 \\ + 0.13794606165867013 0.6074745986563617 \\ + 0.15174776245355664 0.601230210328257 \\ + 0.16609735056013508 0.595209623735693 \\ + 0.18097449522356257 0.5894323036685798 \\ + 0.19635787284389433 0.5839163224398252 \\ + 0.21222518684893918 0.5786782582551036 \\ + 0.22855319203419183 0.5737331127121212 \\ + 0.2453177232665567 0.5690942471836795 \\ + 0.2624937283909023 0.5647733375207774 \\ + 0.2800553051258893 0.5607803462222158 \\ + 0.29797574168899293 0.5571235109612749 \\ + 0.31622756085101816 0.5538093481427201 \\ + 0.33478256708834075 0.5508426699883461 \\ + 0.35361189647704766 0.5482266135190604 \\ + 0.37268592361783437 0.5459618554561748 \\ + 0.3919635989583371 0.5439858810625509 \\ + 0.4114072686697789 0.542256769266538 \\ + 0.4309856844028238 0.5407699972032414 \\ + 0.4506673190103041 0.5395202655106666 \\ + 0.4704204266371196 0.5385015715920866 \\ + 0.49021310236631277 0.5377072795331588 \\ + 0.5100133411451515 0.5371301855213393 \\ + 0.5297890957562598 0.5367625778495071 \\ + 0.549508333642688 0.5365962908343607 \\ + 0.5691390924410789 0.536622752236264 \\ + 0.5886495341225724 0.5368330240239059 \\ + 0.6080079976856008 0.537217836577587 \\ + 0.6271830503870768 0.5377676166626855 \\ + 0.6461435375376551 0.5384725097237573 \\ + 0.6648586309217178 0.5393223972443574 \\ + 0.6832978759327167 0.5403069100831968 \\ + 0.701431237538749 0.5414154388297767 \\ + 0.7192291452112497 0.5426371423190983 \\ + 0.7366625369610731 0.5439609555034168 \\ + 0.7537029026308318 0.5453755978982587 \\ + 0.7703223265901644 0.5468695838000848 \\ + 0.7864935299718104 0.5484312354151224 \\ + 0.8021899125713137 0.550048699945044 \\ + 0.8173855945124116 0.5517099715483378 \\ + 0.8320554577543503 0.5534029189402244 \\ + 0.8461751874872951 0.5551153192133925 \\ + 0.8597213134286145 0.5568348982618474 \\ + 0.8726712509970781 0.5585493779764641 \\ + 0.8850033423049936 0.5602465301593889 \\ + 0.8966968968710889 0.5619142368814181 \\ + 0.9077322319206202 0.5635405567880621 \\ + 0.9180907121047873 0.5651137966521894 \\ + 0.9277547884401084 0.5666225872796562 \\ + 0.9367080362408157 0.5680559627043997 \\ + 0.9449351917944534 0.5694034414657716 \\ + 0.9524221875133373 0.5706551086473546 \\ + 0.9591561852829503 0.5718016972762836 \\ + 0.9651256077230753 0.5728346676374088 \\ + 0.9703201670787388 0.573746283048821 \\ + 0.9747308914659053 0.5745296806745971 \\ + 0.9783501482112046 0.5751789360164816 \\ + 0.9811716640454997 0.5756891198269687 \\ + 0.9831905419373617 0.5760563463193311 \\ + 0.9844032743839034 0.5762778117121911 \\ + 0.984807753012208 0.5763518223330697 \\ + } + ; + \addplot[color={rgb,1:red,0.6078;green,0.0;blue,0.0}, name path={32559fb9-1c35-411e-b727-c54ccfca8ea0}, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.25 0.0 \\ + 0.2502582728593578 0.0038988302627756813 \\ + 0.25103269319940213 0.007782069045772076 \\ + 0.2523220669200997 0.011646538595019329 \\ + 0.25412440590062885 0.01548797470051084 \\ + 0.25643693106491783 0.019301068008383236 \\ + 0.25925607666677836 0.023079520642880078 \\ + 0.26257749578802814 0.026816117179562147 \\ + 0.26639606704112356 0.03050280877135615 \\ + 0.2707059024659678 0.034130809013564835 \\ + 0.27550035660871897 0.03769069994717307 \\ + 0.28077203676859774 0.04117254644531796 \\ + 0.28651281439689674 0.04456601710856947 \\ + 0.2927138376306129 0.047860509712823684 \\ + 0.29936554494137907 0.05104527921045574 \\ + 0.30645767987864736 0.05410956628136289 \\ + 0.31397930688439263 0.05704272446524951 \\ + 0.32191882815495043 0.05983434397871206 \\ + 0.33026400152398966 0.06247437042831309 \\ + 0.3390019593390453 0.06495321677107439 \\ + 0.3481192283025066 0.06726186704315966 \\ + 0.3576017502464645 0.06939197057185317 \\ + 0.3674349038093884 0.07133592560065934 \\ + 0.37760352698120564 0.0730869514874484 \\ + 0.3880919404820215 0.07463914887577577 \\ + 0.3988839719384333 0.07598754748438447 \\ + 0.40996298082015714 0.07712814140400898 \\ + 0.4213118840985201 0.07805791202859513 \\ + 0.4329131825872518 0.07877483897481213 \\ + 0.4447489879249616 0.07927789955449123 \\ + 0.4568010501576949 0.0795670575550548 \\ + 0.46905078587903987 0.07964324224933027 \\ + 0.4814793068843926 0.07950831869522655 \\ + 0.4940674492952001 0.07916505049514219 \\ + 0.5067958031082717 0.07861705626296862 \\ + 0.5196447421245971 0.07786904147952155 \\ + 0.5325944542115226 0.07694742124890083 \\ + 0.5456249718516244 0.07587178312155074 \\ + 0.5587162029311719 0.07464913509520733 \\ + 0.571847961720712 0.07328685694156663 \\ + 0.585 0.07179264251174938 \\ + 0.5981520382792879 0.07017444537870601 \\ + 0.6112837970688281 0.06844042861863128 \\ + 0.6243750281483755 0.06659891936732618 \\ + 0.6374055457884773 0.06465836861155198 \\ + 0.650355257875403 0.06262731649446585 \\ + 0.6632041968917284 0.06051436323293067 \\ + 0.6759325507048 0.05832814556752331 \\ + 0.6885206931156074 0.05607731849788885 \\ + 0.7009492141209601 0.05377054190087957 \\ + 0.713198949842305 0.051416471490449485 \\ + 0.7252510120750384 0.04902375345983442 \\ + 0.7370868174127482 0.046601022050856845 \\ + 0.74868811590148 0.0441568992243465 \\ + 0.7600370191798429 0.041699995561086334 \\ + 0.7711160280615668 0.039238911505097646 \\ + 0.7819080595179785 0.03678223807048063 \\ + 0.7923964730187943 0.03433855616872576 \\ + 0.8025650961906114 0.031916433774041804 \\ + 0.8123982497535355 0.02952442022778817 \\ + 0.8218807716974934 0.027171037086964545 \\ + 0.8309980406609547 0.024864765042804875 \\ + 0.8397359984760104 0.02261402657031781 \\ + 0.8480811718450496 0.020427164114268356 \\ + 0.8560206931156075 0.018312413767531507 \\ + 0.8635423201213526 0.016277874549771587 \\ + 0.8706344550586209 0.014331473543814652 \\ + 0.8772861623693871 0.012480927289787499 \\ + 0.8834871856031032 0.010733699969197796 \\ + 0.8892279632314023 0.009096959029051124 \\ + 0.8944996433912811 0.007577528996650506 \\ + 0.8992940975340322 0.006181844316203614 \\ + 0.9036039329588765 0.004915902096616329 \\ + 0.9074225042119718 0.003785215694328138 \\ + 0.9107439233332217 0.0027947700648341036 \\ + 0.9135630689350822 0.00194897980139099 \\ + 0.9158755940993711 0.0012516507397446 \\ + 0.9176779330799004 0.0007059459446026405 \\ + 0.9189673068005979 0.00031435680872109786 \\ + 0.9197417271406423 7.867989113094015e-5 \\ + 0.92 -1.8596235662471373e-17 \\ + } + ; + \addplot[color={rgb,1:red,0.6078;green,0.0;blue,0.0}, name path={f26118f9-6f5c-4f8c-8fa7-dc278a70fc8e}, draw opacity={1.0}, line width={1.0}, dotted] + table[row sep={\\}] + { + \\ + 0.25 0.0 \\ + 0.2502582728593578 0.0 \\ + 0.25103269319940213 0.0 \\ + 0.2523220669200997 0.0 \\ + 0.25412440590062885 0.0 \\ + 0.25643693106491783 0.0 \\ + 0.25925607666677836 0.0 \\ + 0.26257749578802814 0.0 \\ + 0.26639606704112356 0.0 \\ + 0.2707059024659678 0.0 \\ + 0.27550035660871897 0.0 \\ + 0.28077203676859774 0.0 \\ + 0.28651281439689674 0.0 \\ + 0.2927138376306129 0.0 \\ + 0.29936554494137907 0.0 \\ + 0.30645767987864736 0.0 \\ + 0.31397930688439263 0.0 \\ + 0.32191882815495043 0.0 \\ + 0.33026400152398966 0.0 \\ + 0.3390019593390453 0.0 \\ + 0.3481192283025066 0.0 \\ + 0.3576017502464645 0.0 \\ + 0.3674349038093884 0.0 \\ + 0.37760352698120564 0.0 \\ + 0.3880919404820215 0.0 \\ + 0.3988839719384333 0.0 \\ + 0.40996298082015714 0.0 \\ + 0.4213118840985201 0.0 \\ + 0.4329131825872518 0.0 \\ + 0.4447489879249616 0.0 \\ + 0.4568010501576949 0.0 \\ + 0.46905078587903987 0.0 \\ + 0.4814793068843926 0.0 \\ + 0.4940674492952001 0.0 \\ + 0.5067958031082717 0.0 \\ + 0.5196447421245971 0.0 \\ + 0.5325944542115226 0.0 \\ + 0.5456249718516244 0.0 \\ + 0.5587162029311719 0.0 \\ + 0.571847961720712 0.0 \\ + 0.585 0.0 \\ + 0.5981520382792879 0.0 \\ + 0.6112837970688281 0.0 \\ + 0.6243750281483755 0.0 \\ + 0.6374055457884773 0.0 \\ + 0.650355257875403 0.0 \\ + 0.6632041968917284 0.0 \\ + 0.6759325507048 0.0 \\ + 0.6885206931156074 0.0 \\ + 0.7009492141209601 0.0 \\ + 0.713198949842305 0.0 \\ + 0.7252510120750384 0.0 \\ + 0.7370868174127482 0.0 \\ + 0.74868811590148 0.0 \\ + 0.7600370191798429 0.0 \\ + 0.7711160280615668 0.0 \\ + 0.7819080595179785 0.0 \\ + 0.7923964730187943 0.0 \\ + 0.8025650961906114 0.0 \\ + 0.8123982497535355 0.0 \\ + 0.8218807716974934 0.0 \\ + 0.8309980406609547 0.0 \\ + 0.8397359984760104 0.0 \\ + 0.8480811718450496 0.0 \\ + 0.8560206931156075 0.0 \\ + 0.8635423201213526 0.0 \\ + 0.8706344550586209 0.0 \\ + 0.8772861623693871 0.0 \\ + 0.8834871856031032 0.0 \\ + 0.8892279632314023 0.0 \\ + 0.8944996433912811 0.0 \\ + 0.8992940975340322 0.0 \\ + 0.9036039329588765 0.0 \\ + 0.9074225042119718 0.0 \\ + 0.9107439233332217 0.0 \\ + 0.9135630689350822 0.0 \\ + 0.9158755940993711 0.0 \\ + 0.9176779330799004 0.0 \\ + 0.9189673068005979 0.0 \\ + 0.9197417271406423 0.0 \\ + 0.92 0.0 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={63d2caf5-65d7-48de-a4f0-16f207df7071}, draw opacity={1.0}, line width={1.0}, dashed] + table[row sep={\\}] + { + \\ + -0.492403876506104 0.0 \\ + -0.492403876506104 1.1889418364693405 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={c9615c30-b65a-44c3-a3e4-2d7a62c2027a}, draw opacity={1.0}, line width={1.0}, dashed] + table[row sep={\\}] + { + \\ + 1.969615506024416 0.0 \\ + 1.969615506024416 1.1889418364693405 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={b52d5f9a-9cc5-404b-a87c-5a3a024dbd07}, draw opacity={1.0}, line width={1.0}, dashed] + table[row sep={\\}] + { + \\ + -0.492403876506104 1.1889418364693405 \\ + 1.969615506024416 1.1889418364693405 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={92dd34ae-e912-4a0b-9e41-c857440f76cf}, draw opacity={1.0}, line width={1.0}, dashed] + table[row sep={\\}] + { + \\ + -0.492403876506104 0.0 \\ + 0.25 0.0 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={d15ae2e1-d79e-44eb-83a6-4a5253739105}, draw opacity={1.0}, line width={1.0}, dashed] + table[row sep={\\}] + { + \\ + 0.92 0.0 \\ + 1.969615506024416 0.0 \\ + } + ; + \node[, color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:0.5,0.825) {Duct Wall}; + \node[, color={rgb,1:red,0.6078;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:0.5,0.15) {Hub}; + \node[right, color={rgb,1:red,0.502;green,0.502;blue,0.502}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:-0.482403876506104,0.5944709182346702) {Inlet}; + \node[left, color={rgb,1:red,0.502;green,0.502;blue,0.502}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:1.959615506024416,0.5944709182346702) {Outlet}; + \node[left, color={rgb,1:red,0.502;green,0.502;blue,0.502}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:1.477211629518312,1.0889418364693404) {Maximum Radial Boundary}; + \node[left, color={rgb,1:red,0.502;green,0.502;blue,0.502}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:1.723413567771364,0.1) {Axis of Rotation}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/ductmove-velocity-comp-160-duct-panels-80-hub-panels.tikz b/v0.5.0/DuctAPE/theory_latex/figures/ductmove-velocity-comp-160-duct-panels-80-hub-panels.tikz new file mode 100644 index 00000000..5f529b0c --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/ductmove-velocity-comp-160-duct-panels-80-hub-panels.tikz @@ -0,0 +1,542 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={71.2mm}, height={57.15mm}, scaled x ticks={false}, xlabel={x}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.03909557716350054}, xmax={1.351217267339686}, xticklabels={{$0.0$,$0.2$,$0.4$,$0.6$,$0.8$,$1.0$,$1.2$}}, xtick={{0.0,0.2,0.4,0.6000000000000001,0.8,1.0,1.2000000000000002}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$\frac{V_s}{V_\infty}$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={-0.020009765066228757}, ymax={2.7210031573201494}, yticklabels={{$0.0$,$0.5$,$1.0$,$1.5$,$2.0$,$2.5$}}, ytick={{0.0,0.5,1.0,1.5,2.0,2.5}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={66e685b6-8fa6-4ad6-91c8-0bdaa8f5a257}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.00025289956772181325 0.061370579861187116 \\ + 0.0012641078858061255 0.18466333822657716 \\ + 0.0032849653120420865 0.3071909535461018 \\ + 0.006312355830753114 0.4276637764974016 \\ + 0.01034161142518903 0.547080375898905 \\ + 0.015366519275269486 0.6645813868858537 \\ + 0.021379331337302188 0.7797449348030994 \\ + 0.02837077629090483 0.8920946368446724 \\ + 0.03633007383470898 1.001102623046927 \\ + 0.0452449513088035 1.106150877108493 \\ + 0.05510166261828654 1.2064710749644871 \\ + 0.06588500942874756 1.3010526362867878 \\ + 0.07757836460099743 1.3884849565898407 \\ + 0.09016369782891179 1.4667935046146379 \\ + 0.10362160344085639 1.5332717693506899 \\ + 0.11793133032182603 1.5832326118103266 \\ + 0.13307081391015993 1.6118486217219858 \\ + 0.14901671021949658 1.5933906564907003 \\ + 0.16574443183350862 1.5240490707456584 \\ + 0.1832281858179166 1.469328846407511 \\ + 0.20144101349132443 1.4513437834143519 \\ + 0.22035483199355174 1.445155552988989 \\ + 0.23994047758736908 1.4451012948499509 \\ + 0.26016775062686665 1.448483772293823 \\ + 0.2810054621231195 1.4537662904275535 \\ + 0.3024214818353479 1.4599408828101321 \\ + 0.32438278781341967 1.4662846981526174 \\ + 0.3468555173153038 1.4722462247654822 \\ + 0.36980501902096435 1.477386818061415 \\ + 0.3931959064621843 1.4813488410669744 \\ + 0.41699211258593455 1.4838383032085494 \\ + 0.4411569453671558 1.4846166474184432 \\ + 0.4656531443852012 1.4834994993584567 \\ + 0.4904429382767051 1.48036187325108 \\ + 0.5154881029762868 1.4751503504885288 \\ + 0.5407500206552893 1.4679035469471213 \\ + 0.566189739267672 1.458783315423687 \\ + 0.591768032611242 1.448121929233693 \\ + 0.6174454608116153 1.4364984872968178 \\ + 0.643182431135644 1.4248817466212818 \\ + 0.6689392590405413 1.4149431332796139 \\ + 0.6946762293645701 1.410053171024706 \\ + 0.7203536575649435 1.4168129468838473 \\ + 0.7459319509085134 1.4978878492152528 \\ + 0.7713716695208961 1.4766147011703445 \\ + 0.7966335871998987 1.3210030688448464 \\ + 0.8216787518994806 1.230399917881058 \\ + 0.8464685457909844 1.1790856884880847 \\ + 0.8709647448090299 1.1378651232539816 \\ + 0.8951295775902509 1.104232531149193 \\ + 0.9189257837140012 1.0760318037865695 \\ + 0.9423166711552211 1.052029682471706 \\ + 0.9652661728608818 1.0314000115706945 \\ + 0.9877389023627661 1.0135414109387852 \\ + 1.0097002083408377 0.9979884736243807 \\ + 1.0311162280530661 0.9843666557457634 \\ + 1.051953939549319 0.9723674570135321 \\ + 1.0721812125888164 0.9617335929993294 \\ + 1.0917668581826336 0.9522492982760471 \\ + 1.110680676684861 0.9437334132840527 \\ + 1.128893504358269 0.9360341196930138 \\ + 1.146377258342677 0.9290247895526076 \\ + 1.163104979956689 0.9226007204759001 \\ + 1.1790508762660257 0.9166767014331705 \\ + 1.1941903598543595 0.9111854805231483 \\ + 1.208500086735329 0.9060773496945441 \\ + 1.2219579923472739 0.9013212865178364 \\ + 1.234543325575188 0.8969084999222674 \\ + 1.246236680747438 0.8928600037919923 \\ + 1.257020027557899 0.889241388527928 \\ + 1.2668767388673823 0.8861911560735101 \\ + 1.2757916163414766 0.8839759102247855 \\ + 1.2837509138852807 0.8831015323217892 \\ + 1.2907423588388833 0.8845476328034673 \\ + 1.2967551709009162 0.890289633496427 \\ + 1.3017800787509965 0.9045520319946362 \\ + 1.3058093343454327 0.9371823781652765 \\ + 1.3088367248641437 1.0155871325492338 \\ + 1.3108575822903794 1.2303975657613115 \\ + 1.3118687906084638 2.596068030727708 \\ + } + ; + \addplot[color={rgb,1:red,0.6137;green,0.2441;blue,0.3275}, name path={15796e04-8e7f-423f-a284-41d0c8f43b9c}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.00025289956772181325 0.06029880984618702 \\ + 0.0012641078858061255 0.1813457171045061 \\ + 0.0032849653120420865 0.30136210613038916 \\ + 0.006312355830753114 0.418890170620603 \\ + 0.01034161142518903 0.5346997371542994 \\ + 0.015366519275269486 0.6477214628868444 \\ + 0.021379331337302188 0.7572953089318198 \\ + 0.02837077629090483 0.8626897742512718 \\ + 0.03633007383470898 0.9631116864796037 \\ + 0.0452449513088035 1.0576825509503736 \\ + 0.05510166261828654 1.1454041256329384 \\ + 0.06588500942874756 1.2251062117156226 \\ + 0.07757836460099743 1.2953475015226903 \\ + 0.09016369782891179 1.3543271120006053 \\ + 0.10362160344085639 1.3998038757082782 \\ + 0.11793133032182603 1.4280565623623789 \\ + 0.13307081391015993 1.4356236835608072 \\ + 0.14901671021949658 1.4012204749272357 \\ + 0.16574443183350862 1.3238324099964467 \\ + 0.1832281858179166 1.2615120580616481 \\ + 0.20144101349132443 1.2323562427914683 \\ + 0.22035483199355174 1.2141789189504484 \\ + 0.23994047758736908 1.2020021498528715 \\ + 0.26016775062686665 1.1935274445992143 \\ + 0.2810054621231195 1.1875115316215523 \\ + 0.3024214818353479 1.1831926139551667 \\ + 0.32438278781341967 1.180066933995765 \\ + 0.3468555173153038 1.177783661741839 \\ + 0.36980501902096435 1.1760906204427353 \\ + 0.3931959064621843 1.174804536894452 \\ + 0.41699211258593455 1.1737943776483903 \\ + 0.4411569453671558 1.17297236516678 \\ + 0.4656531443852012 1.1722900643593572 \\ + 0.4904429382767051 1.1717384497025405 \\ + 0.5154881029762868 1.1713519422950154 \\ + 0.5407500206552893 1.1712175568672445 \\ + 0.566189739267672 1.171492098743316 \\ + 0.591768032611242 1.1724339400766022 \\ + 0.6174454608116153 1.174464177498947 \\ + 0.643182431135644 1.178294248181882 \\ + 0.6689392590405413 1.18521727869212 \\ + 0.6946762293645701 1.198030003232324 \\ + 0.7203536575649435 1.222465450031296 \\ + 0.7459319509085134 1.3148148261071833 \\ + 0.7713716695208961 1.3200665428233538 \\ + 0.7966335871998987 1.2020708672092935 \\ + 0.8216787518994806 1.137257753273151 \\ + 0.8464685457909844 1.1052067132377301 \\ + 0.8709647448090299 1.0800932736062314 \\ + 0.8951295775902509 1.0599470660359134 \\ + 0.9189257837140012 1.0430339626754064 \\ + 0.9423166711552211 1.0284284855879493 \\ + 0.9652661728608818 1.0155625358599767 \\ + 0.9877389023627661 1.004063070424277 \\ + 1.0097002083408377 0.9936703121757623 \\ + 1.0311162280530661 0.9841945982252263 \\ + 1.051953939549319 0.975491984772374 \\ + 1.0721812125888164 0.9674497370284558 \\ + 1.0917668581826336 0.9599773461606442 \\ + 1.110680676684861 0.9530008034365394 \\ + 1.128893504358269 0.9464588952266947 \\ + 1.146377258342677 0.9403008303915473 \\ + 1.163104979956689 0.9344848266085567 \\ + 1.1790508762660257 0.9289774871303144 \\ + 1.1941903598543595 0.9237539641110113 \\ + 1.208500086735329 0.918799082437495 \\ + 1.2219579923472739 0.9141098508975829 \\ + 1.234543325575188 0.9097002165649422 \\ + 1.246236680747438 0.9056097153116961 \\ + 1.257020027557899 0.9019192417543995 \\ + 1.2668767388673823 0.8987803976371753 \\ + 1.2757916163414766 0.896471886592536 \\ + 1.2837509138852807 0.8955124496151078 \\ + 1.2907423588388833 0.8968984518378695 \\ + 1.2967551709009162 0.9026324617539404 \\ + 1.3017800787509965 0.9169917275508432 \\ + 1.3058093343454327 0.9499428484028514 \\ + 1.3088367248641437 1.029221464778956 \\ + 1.3108575822903794 1.2465482123825187 \\ + 1.3118687906084638 2.6285956954292504 \\ + } + ; + \addplot[color={rgb,1:red,0.4745;green,0.1627;blue,0.251}, name path={1c2563a0-a960-49dc-8206-8fad27c130a6}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.00025289956772181325 0.05948869118088222 \\ + 0.0012641078858061255 0.1788825496959928 \\ + 0.0032849653120420865 0.29718011504888053 \\ + 0.006312355830753114 0.41289168026393575 \\ + 0.01034161142518903 0.526723782880306 \\ + 0.015366519275269486 0.6375707213892703 \\ + 0.021379331337302188 0.7447323391228786 \\ + 0.02837077629090483 0.8474415159443942 \\ + 0.03633007383470898 0.9448760234986044 \\ + 0.0452449513088035 1.0361382486801411 \\ + 0.05510166261828654 1.120225367915484 \\ + 0.06588500942874756 1.1959833270951932 \\ + 0.07757836460099743 1.2620165148613598 \\ + 0.09016369782891179 1.3166096802888672 \\ + 0.10362160344085639 1.3576586966300297 \\ + 0.11793133032182603 1.3816763864526767 \\ + 0.13307081391015993 1.385487485154532 \\ + 0.14901671021949658 1.3488534419282447 \\ + 0.16574443183350862 1.2712262872655709 \\ + 0.1832281858179166 1.2085520015117097 \\ + 0.20144101349132443 1.1779796483099232 \\ + 0.22035483199355174 1.1580962455604622 \\ + 0.23994047758736908 1.1441055337503947 \\ + 0.26016775062686665 1.1338064033953987 \\ + 0.2810054621231195 1.1260221235050953 \\ + 0.3024214818353479 1.1200442749153576 \\ + 0.32438278781341967 1.1154154309969886 \\ + 0.3468555173153038 1.1118263546239657 \\ + 0.36980501902096435 1.1090624202089479 \\ + 0.3931959064621843 1.1069738007688321 \\ + 0.41699211258593455 1.105458362498616 \\ + 0.4411569453671558 1.1044520569368532 \\ + 0.4656531443852012 1.1039243144313464 \\ + 0.4904429382767051 1.1038774190359897 \\ + 0.5154881029762868 1.1043498939793805 \\ + 0.5407500206552893 1.1054250448254281 \\ + 0.566189739267672 1.107247555120547 \\ + 0.591768032611242 1.110054513433509 \\ + 0.6174454608116153 1.1142352807924478 \\ + 0.643182431135644 1.120456223103853 \\ + 0.6689392590405413 1.129944748169367 \\ + 0.6946762293645701 1.1453850357778412 \\ + 0.7203536575649435 1.1723127852880486 \\ + 0.7459319509085134 1.265182914542676 \\ + 0.7713716695208961 1.2749177762151116 \\ + 0.7966335871998987 1.16519437953585 \\ + 0.8216787518994806 1.1060287778469662 \\ + 0.8464685457909844 1.0781809079877782 \\ + 0.8709647448090299 1.0567459702636044 \\ + 0.8951295775902509 1.0398546117812177 \\ + 0.9189257837140012 1.025848968997628 \\ + 0.9423166711552211 1.0138482263835655 \\ + 0.9652661728608818 1.003315776558206 \\ + 0.9877389023627661 0.9939035520925859 \\ + 1.0097002083408377 0.9853733225372504 \\ + 1.0311162280530661 0.9775549685461926 \\ + 1.051953939549319 0.9703227341147271 \\ + 1.0721812125888164 0.9635809862476616 \\ + 1.0917668581826336 0.9572553214495666 \\ + 1.110680676684861 0.9512868502268739 \\ + 1.128893504358269 0.9456284755567739 \\ + 1.146377258342677 0.9402425033142465 \\ + 1.163104979956689 0.935099223645477 \\ + 1.1790508762660257 0.930176299659676 \\ + 1.1941903598543595 0.9254589606907506 \\ + 1.208500086735329 0.9209411738174864 \\ + 1.2219579923472739 0.9166282206634595 \\ + 1.234543325575188 0.9125415377938193 \\ + 1.246236680747438 0.908727480890205 \\ + 1.257020027557899 0.9052732528152152 \\ + 1.2668767388673823 0.9023364906159168 \\ + 1.2757916163414766 0.9002020563648678 \\ + 1.2837509138852807 0.8993956955548521 \\ + 1.2907423588388833 0.9009230640028381 \\ + 1.2967551709009162 0.9068014137642232 \\ + 1.3017800787509965 0.9213353937942654 \\ + 1.3058093343454327 0.9545512379227497 \\ + 1.3088367248641437 1.0343451354784774 \\ + 1.3108575822903794 1.2529616499600333 \\ + 1.3118687906084638 2.6429025895766394 \\ + } + ; + \addplot[color={rgb,1:red,0.3353;green,0.0814;blue,0.1745}, name path={b8b08776-0f4b-4351-b7ef-ce91a6bc97c5}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.00025289956772181325 0.058934049244946135 \\ + 0.0012641078858061255 0.17720476465005158 \\ + 0.0032849653120420865 0.29435987375893885 \\ + 0.006312355830753114 0.40890489028023336 \\ + 0.01034161142518903 0.5215211740200131 \\ + 0.015366519275269486 0.6310963884400338 \\ + 0.021379331337302188 0.7369215751650764 \\ + 0.02837077629090483 0.8382237862504545 \\ + 0.03633007383470898 0.9341786017029496 \\ + 0.0452449513088035 1.0238909891940062 \\ + 0.05510166261828654 1.106366920015672 \\ + 0.06588500942874756 1.180469216875585 \\ + 0.07757836460099743 1.2448299732028358 \\ + 0.09016369782891179 1.2977754335524407 \\ + 0.10362160344085639 1.337259807639774 \\ + 0.11793133032182603 1.3598894692953438 \\ + 0.13307081391015993 1.3625937320952755 \\ + 0.14901671021949658 1.3255580580124087 \\ + 0.16574443183350862 1.2483661858195196 \\ + 0.1832281858179166 1.186011023137473 \\ + 0.20144101349132443 1.1552635924908796 \\ + 0.22035483199355174 1.1350627015755343 \\ + 0.23994047758736908 1.1206920030641334 \\ + 0.26016775062686665 1.1099900186219667 \\ + 0.2810054621231195 1.1018043550440904 \\ + 0.3024214818353479 1.0954441642513282 \\ + 0.32438278781341967 1.090465971427773 \\ + 0.3468555173153038 1.086572236540049 \\ + 0.36980501902096435 1.0835583846262848 \\ + 0.3931959064621843 1.081283242402641 \\ + 0.41699211258593455 1.079651997823578 \\ + 0.4411569453671558 1.0786065578733333 \\ + 0.4656531443852012 1.0781208529450865 \\ + 0.4904429382767051 1.0782000907742249 \\ + 0.5154881029762868 1.0788839964106427 \\ + 0.5407500206552893 1.080255176129753 \\ + 0.566189739267672 1.0824554651219678 \\ + 0.591768032611242 1.0857165519770393 \\ + 0.6174454608116153 1.0904190857940157 \\ + 0.643182431135644 1.0972157686555206 \\ + 0.6689392590405413 1.1073114870919516 \\ + 0.6946762293645701 1.1233459656198395 \\ + 0.7203536575649435 1.1507690671028832 \\ + 0.7459319509085134 1.2431796026938156 \\ + 0.7713716695208961 1.25412922013078 \\ + 0.7966335871998987 1.147478347515238 \\ + 0.8216787518994806 1.0903510054866747 \\ + 0.8464685457909844 1.0639609179628087 \\ + 0.8709647448090299 1.043817817420904 \\ + 0.8951295775902509 1.0280903831287835 \\ + 0.9189257837140012 1.0151501185463034 \\ + 0.9423166711552211 1.0041315285708552 \\ + 0.9652661728608818 0.9945073164333932 \\ + 0.9877389023627661 0.9859356770130412 \\ + 1.0097002083408377 0.9781830517138193 \\ + 1.0311162280530661 0.9710831431030242 \\ + 1.051953939549319 0.9645135574878545 \\ + 1.0721812125888164 0.9583817713313252 \\ + 1.0917668581826336 0.9526163441095457 \\ + 1.110680676684861 0.9471612530374458 \\ + 1.128893504358269 0.9419721903486906 \\ + 1.146377258342677 0.9370141754650749 \\ + 1.163104979956689 0.9322601295654476 \\ + 1.1790508762660257 0.927690254053646 \\ + 1.1941903598543595 0.9232922132769061 \\ + 1.208500086735329 0.9190622970758974 \\ + 1.2219579923472739 0.9150079914059756 \\ + 1.234543325575188 0.9111528162903247 \\ + 1.246236680747438 0.9075450923353016 \\ + 1.257020027557899 0.9042738775556818 \\ + 1.2668767388673823 0.9014985725912099 \\ + 1.2757916163414766 0.8995057452392148 \\ + 1.2837509138852807 0.8988228505950419 \\ + 1.2907423588388833 0.900457375335823 \\ + 1.2967551709009162 0.9064287604742538 \\ + 1.3017800787509965 0.9210447220307802 \\ + 1.3058093343454327 0.9543367417161821 \\ + 1.3088367248641437 1.0342128393429664 \\ + 1.3108575822903794 1.2529526595551832 \\ + 1.3118687906084638 2.64342731989412 \\ + } + ; + \addplot[color={rgb,1:red,0.1961;green,0.0;blue,0.098}, name path={9ecee53a-c70e-4ed5-abdc-a6719328810f}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.00025289956772181325 0.058567948005053605 \\ + 0.0012641078858061255 0.17609975472218153 \\ + 0.0032849653120420865 0.2925104657765677 \\ + 0.006312355830753114 0.40630712514421585 \\ + 0.01034161142518903 0.5181592768994765 \\ + 0.015366519275269486 0.6269547824134922 \\ + 0.021379331337302188 0.7319832590403766 \\ + 0.02837077629090483 0.8324719309136215 \\ + 0.03633007383470898 0.9275983743131485 \\ + 0.0452449513088035 1.0164718442367513 \\ + 0.05510166261828654 1.0981054690382357 \\ + 0.06588500942874756 1.171372848462366 \\ + 0.07757836460099743 1.234921638667661 \\ + 0.09016369782891179 1.2870996086286939 \\ + 0.10362160344085639 1.3258896020562805 \\ + 0.11793133032182603 1.3479431194634848 \\ + 0.13307081391015993 1.3502371489487048 \\ + 0.14901671021949658 1.3131696788779208 \\ + 0.16574443183350862 1.2363720762352925 \\ + 0.1832281858179166 1.1743268248540832 \\ + 0.20144101349132443 1.1436178170906985 \\ + 0.22035483199355174 1.1233737511784052 \\ + 0.23994047758736908 1.1089209078396949 \\ + 0.26016775062686665 1.0981181890744685 \\ + 0.2810054621231195 1.0898249954615749 \\ + 0.3024214818353479 1.0833584162199112 \\ + 0.32438278781341967 1.078280849569698 \\ + 0.3468555173153038 1.0742993781148 \\ + 0.36980501902096435 1.0712131971314454 \\ + 0.3931959064621843 1.0688842510551155 \\ + 0.41699211258593455 1.0672202892556355 \\ + 0.4411569453671558 1.066165261365113 \\ + 0.4656531443852012 1.0656946228172401 \\ + 0.4904429382767051 1.0658145636643823 \\ + 0.5154881029762868 1.0665651986771048 \\ + 0.5407500206552893 1.0680288490571679 \\ + 0.566189739267672 1.070346253860478 \\ + 0.591768032611242 1.073746954083612 \\ + 0.6174454608116153 1.078607939560317 \\ + 0.643182431135644 1.0855757673359436 \\ + 0.6689392590405413 1.0958444271506596 \\ + 0.6946762293645701 1.1120306081796723 \\ + 0.7203536575649435 1.1395378485957206 \\ + 0.7459319509085134 1.2314957553051955 \\ + 0.7713716695208961 1.2428485908797033 \\ + 0.7966335871998987 1.1376340821818567 \\ + 0.8216787518994806 1.0814275493338963 \\ + 0.8464685457909844 1.055662567700847 \\ + 0.8709647448090299 1.0360718758196297 \\ + 0.8951295775902509 1.020843010920696 \\ + 0.9189257837140012 1.0083625256185786 \\ + 0.9423166711552211 0.9977725398734462 \\ + 0.9652661728608818 0.9885501297439222 \\ + 0.9877389023627661 0.9803561648066421 \\ + 1.0097002083408377 0.9729588379766855 \\ + 1.0311162280530661 0.9661930863689491 \\ + 1.051953939549319 0.9599374591929734 \\ + 1.0721812125888164 0.9541002132682005 \\ + 1.0917668581826336 0.9486106008742692 \\ + 1.110680676684861 0.943413247709199 \\ + 1.128893504358269 0.9384644741765826 \\ + 1.146377258342677 0.9337299196897987 \\ + 1.163104979956689 0.9291831219560405 \\ + 1.1790508762660257 0.9248048954726892 \\ + 1.1941903598543595 0.9205835112235079 \\ + 1.208500086735329 0.9165158540058068 \\ + 1.2219579923472739 0.9126099857895936 \\ + 1.234543325575188 0.9088899737301226 \\ + 1.246236680747438 0.9054046422104098 \\ + 1.257020027557899 0.9022434865943483 \\ + 1.2668767388673823 0.8995662382452649 \\ + 1.2757916163414766 0.8976596135504128 \\ + 1.2837509138852807 0.897050882841887 \\ + 1.2907423588388833 0.8987466934195225 \\ + 1.2967551709009162 0.904764268445173 \\ + 1.3017800787509965 0.9194059685254564 \\ + 1.3058093343454327 0.9526899983054741 \\ + 1.3088367248641437 1.0324861455021743 \\ + 1.3108575822903794 1.2509456065354276 \\ + 1.3118687906084638 2.639489164017508 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={b590de54-e636-44eb-a36b-06dd4a3d7094}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.00025289956772181325 0.057566072359800644 \\ + 0.0012641078858061255 0.17308299765242838 \\ + 0.0032849653120420865 0.2874851651906823 \\ + 0.006312355830753114 0.3992972398415475 \\ + 0.01034161142518903 0.5091697079725312 \\ + 0.015366519275269486 0.6160029266685382 \\ + 0.021379331337302188 0.7190932446516964 \\ + 0.02837077629090483 0.8176771163604771 \\ + 0.03633007383470898 0.910943916318931 \\ + 0.0452449513088035 0.9980178859379647 \\ + 0.05510166261828654 1.0779311279583004 \\ + 0.06588500942874756 1.1495813120939165 \\ + 0.07757836460099743 1.2116472149575441 \\ + 0.09016369782891179 1.2625165714330846 \\ + 0.10362160344085639 1.3002226796107963 \\ + 0.11793133032182603 1.3214975154780504 \\ + 0.13307081391015993 1.3233965514016046 \\ + 0.14901671021949658 1.286736852001896 \\ + 0.16574443183350862 1.2111954572740529 \\ + 0.1832281858179166 1.1501601510696002 \\ + 0.20144101349132443 1.119853350040543 \\ + 0.22035483199355174 1.0998173257623127 \\ + 0.23994047758736908 1.085470796059159 \\ + 0.26016775062686665 1.0747155635562096 \\ + 0.2810054621231195 1.0664345263962338 \\ + 0.3024214818353479 1.0599594525020812 \\ + 0.32438278781341967 1.0548626964139751 \\ + 0.3468555173153038 1.0508584919478856 \\ + 0.36980501902096435 1.0477513657427364 \\ + 0.3931959064621843 1.045407311521281 \\ + 0.41699211258593455 1.04373714605175 \\ + 0.4411569453671558 1.042687065951403 \\ + 0.4656531443852012 1.0422340235840943 \\ + 0.4904429382767051 1.0423849549638675 \\ + 0.5154881029762868 1.0431798979300375 \\ + 0.5407500206552893 1.0447001104058096 \\ + 0.566189739267672 1.0470839738413837 \\ + 0.591768032611242 1.0505568068752966 \\ + 0.6174454608116153 1.0554884112506442 \\ + 0.643182431135644 1.0625128843211236 \\ + 0.6689392590405413 1.0728011995439501 \\ + 0.6946762293645701 1.088919618195562 \\ + 0.7203536575649435 1.1161679091831007 \\ + 0.7459319509085134 1.2066351452717838 \\ + 0.7713716695208961 1.2182109976365068 \\ + 0.7966335871998987 1.1155157205112456 \\ + 0.8216787518994806 1.0608004560832194 \\ + 0.8464685457909844 1.0359122053335783 \\ + 0.8709647448090299 1.0170670739766887 \\ + 0.8951295775902509 1.0024905182542796 \\ + 0.9189257837140012 0.9906012077105913 \\ + 0.9423166711552211 0.9805578085163171 \\ + 0.9652661728608818 0.9718470466072158 \\ + 0.9877389023627661 0.9641357029251998 \\ + 1.0097002083408377 0.957195741593635 \\ + 1.0311162280530661 0.950864580549694 \\ + 1.051953939549319 0.9450224436408342 \\ + 1.0721812125888164 0.9395787461641965 \\ + 1.0917668581826336 0.934463563086022 \\ + 1.110680676684861 0.9296221220644616 \\ + 1.128893504358269 0.9250111990003453 \\ + 1.146377258342677 0.9205967898449479 \\ + 1.163104979956689 0.9163527187564287 \\ + 1.1790508762660257 0.9122600312963296 \\ + 1.1941903598543595 0.9083071764429679 \\ + 1.208500086735329 0.9044911531388127 \\ + 1.2219579923472739 0.9008200459012162 \\ + 1.234543325575188 0.8973177992326571 \\ + 1.246236680747438 0.8940328722641129 \\ + 1.257020027557899 0.8910539756897706 \\ + 1.2668767388673823 0.8885393085886168 \\ + 1.2757916163414766 0.8867726771854875 \\ + 1.2837509138852807 0.8862758005542067 \\ + 1.2907423588388833 0.8880444718619394 \\ + 1.2967551709009162 0.8940738241138506 \\ + 1.3017800787509965 0.908618626193346 \\ + 1.3058093343454327 0.941585525726707 \\ + 1.3088367248641437 1.0205325780715777 \\ + 1.3108575822903794 1.2365778203956943 \\ + 1.3118687906084638 2.6095617364931343 \\ + } + ; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/ductmove-verification.tikz b/v0.5.0/DuctAPE/theory_latex/figures/ductmove-verification.tikz new file mode 100644 index 00000000..29816ad8 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/ductmove-verification.tikz @@ -0,0 +1,17 @@ +\begin{tikzpicture}[scale=2] + %Airfoil +\definecolor{tempcolor}{rgb}{0.7529411764705882,0.3254901960784314,0.403921568627451}; + \draw[thick,tempcolor] plot[smooth] file{figures/moveduct-coordinates-r-0.5.dat}; + \definecolor{tempcolor}{rgb}{0.6137254901960785,0.24411764705882352,0.32745098039215687}; + \draw[thick,tempcolor] plot[smooth] file{figures/moveduct-coordinates-r-0.875.dat}; + \definecolor{tempcolor}{rgb}{0.4745098039215686,0.1627450980392157,0.25098039215686274}; + \draw[thick,tempcolor] plot[smooth] file{figures/moveduct-coordinates-r-1.25.dat}; + \definecolor{tempcolor}{rgb}{0.3352941176470588,0.08137254901960785,0.17450980392156862}; + \draw[thick,tempcolor] plot[smooth] file{figures/moveduct-coordinates-r-1.625.dat}; + \definecolor{tempcolor}{rgb}{0.19607843137254902,0.0,0.09803921568627451}; + \draw[thick,tempcolor] plot[smooth] file{figures/moveduct-coordinates-r-2.0.dat}; + + \draw[ultra thick,primary] plot[smooth] file{figures/isolated_hub_coordinates.dat}; + \draw[dash pattern=on 6pt off 2pt on 1pt off 2pt on 2.5cm] (-0.2,0) -- (0.65,0); + \draw[dash pattern=on 6pt off 2pt on 1pt off 2pt on 2.5cm ] (1.5,0) -- (0.65,0); +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/ductreferenceframe.tikz b/v0.5.0/DuctAPE/theory_latex/figures/ductreferenceframe.tikz new file mode 100644 index 00000000..bffba074 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/ductreferenceframe.tikz @@ -0,0 +1,287 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{grid style= {/pgfplots/on layer=axis grid},% +% tick style= {/pgfplots/on layer=axis ticks},% +% axis line style= {/pgfplots/on layer=axis lines},% +% label style= {/pgfplots/on layer=axis descriptions},% +% legend style= {/pgfplots/on layer=axis descriptions},% +% title style= {/pgfplots/on layer=axis descriptions},% +% colorbar style= {/pgfplots/on layer=axis descriptions},% +% ticklabel style= {/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={1.0mm}, yshift={-1.0mm}, width={99.6mm}, height={70.57142857142857mm}, scaled x ticks={false}, xlabel={x}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorticks={false}, xmajorgrids={false}, xmin={-0.2}, xmax={1.2}, axis x line={left}, x axis line style={color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={r}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, ymajorticks={false}, ymajorgrids={false}, ymin={0}, ymax={1.0}, axis y line={left}, y axis line style={color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={6491b92b-7195-40d9-8183-5885a76d2ef9}, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.984807753012208 0.5763518223330696 \\ + 0.9844351360936109 0.5764585084471965 \\ + 0.9833178488718401 0.5767783398223502 \\ + 0.9814575815137263 0.5773106383664338 \\ + 0.9788571494974746 0.5780542831938278 \\ + 0.9755204913583104 0.5790077241891667 \\ + 0.9714526654250296 0.5801690003308869 \\ + 0.9666598454442763 0.5815357621326276 \\ + 0.9611493149657464 0.5831052974104652 \\ + 0.9549294603420392 0.5848745594575935 \\ + 0.948009762182275 0.586840196609359 \\ + 0.9404007850893823 0.58899858211369 \\ + 0.9321141655075785 0.5913458431872584 \\ + 0.9231625975092368 0.5938778881376279 \\ + 0.9135598163591558 0.596590430466616 \\ + 0.9033205797091218 0.599479008939668 \\ + 0.8924606462963154 0.6025390027087347 \\ + 0.8809967520451464 0.605765640709582 \\ + 0.8689465835029292 0.609154004715372 \\ + 0.8563287485746873 0.6126990256126977 \\ + 0.8431627445605073 0.6163954726692624 \\ + 0.8294689235392595 0.6202379357787597 \\ + 0.8152684551841755 0.624220800892463 \\ + 0.8005832871376403 0.6283382190725214 \\ + 0.7854361031135264 0.6325840698227927 \\ + 0.7698502789343761 0.6369519195630753 \\ + 0.753849836746676 0.6414349763058262 \\ + 0.7374593976893672 0.6460260417652868 \\ + 0.7207041333176776 0.6507174622722015 \\ + 0.703609716105583 0.6555010799785538 \\ + 0.6862022693649913 0.6603681859121878 \\ + 0.6685083169276471 0.6653094764779794 \\ + 0.6505547329363813 0.6703150149984327 \\ + 0.6323686920855524 0.6753741998412959 \\ + 0.6139776206363418 0.6804757405951508 \\ + 0.5954091485112052 0.6856076436271092 \\ + 0.5766910627436074 0.6907572081919976 \\ + 0.5578512625247858 0.6959110340629291 \\ + 0.5389177160493854 0.7010550414231353 \\ + 0.5199184193173085 0.7061745035033224 \\ + 0.5008813570009937 0.7112540921733669 \\ + 0.4818344654367231 0.7162779364081796 \\ + 0.4628055977466275 0.7212296932517661 \\ + 0.44382249104605404 0.7260926306079724 \\ + 0.4249127356401505 0.7308497208982179 \\ + 0.40610374606514005 0.7354837443527922 \\ + 0.38742947828243757 0.7400156503954027 \\ + 0.36892745404996824 0.744487946646726 \\ + 0.3506239757468849 0.7488811106016771 \\ + 0.3325448236433029 0.7531745169696277 \\ + 0.31471538274228167 0.7573474142746007 \\ + 0.29716062509514174 0.7613790785420954 \\ + 0.2799050925695233 0.7652489658999977 \\ + 0.26297287971198097 0.7689368616760865 \\ + 0.2463876163577223 0.7724230236422368 \\ + 0.2301724496596362 0.7756883171730086 \\ + 0.2143500252366077 0.7787143402516679 \\ + 0.19894246717670294 0.7814835364664579 \\ + 0.18397135667335 0.7839792943897093 \\ + 0.16945770912119734 0.7861860320167947 \\ + 0.1554219495518097 0.7880892652547997 \\ + 0.14188388634655563 0.7896756597852037 \\ + 0.1288626832236327 0.7909330659734229 \\ + 0.11637682955681128 0.7918505368529675 \\ + 0.10444410914373474 0.7924183295652271 \\ + 0.09308156760010425 0.7926278909795603 \\ + 0.08230547861142092 0.7924718285446105 \\ + 0.07213130932485697 0.7919438677232176 \\ + 0.06257368520906725 0.7910387976330364 \\ + 0.05364635474825799 0.7897524067468693 \\ + 0.045362154367657864 0.7880814106954419 \\ + 0.03773297400993516 0.7860233743565836 \\ + 0.030769723795505355 0.7835766305052623 \\ + 0.024482302203706625 0.7807401973365964 \\ + 0.018879566206349632 0.7775136971579549 \\ + 0.013969303770230049 0.7738972784769438 \\ + 0.009758209121127863 0.769891543591061 \\ + 0.006251861129095012 0.7654974836149062 \\ + 0.003454705134159128 0.760716422665974 \\ + 0.0013700384838269124 0.7555499726752549 \\ + 0.0 0.75 \\ + -0.0006375497850319564 0.7441643738247978 \\ + -0.0005257251018463557 0.7381422810342595 \\ + 0.00033468913220779115 0.7319395336454086 \\ + 0.0019421192020855358 0.725564294932699 \\ + 0.004294194833831617 0.7190270090631264 \\ + 0.00738773864768258 0.7123403044503047 \\ + 0.011218753077714012 0.7055188723147481 \\ + 0.01578240507339603 0.6985793223117476 \\ + 0.0210730089551451 0.6915400174258863 \\ + 0.027084007845146817 0.6844208906260163 \\ + 0.03380795413540815 0.6772432460209211 \\ + 0.0412364894864125 0.6700295474495197 \\ + 0.04936032487131822 0.6628031975770657 \\ + 0.05816922119201805 0.655588310648338 \\ + 0.06765197099442276 0.6484094820695467 \\ + 0.07779638180114776 0.6412915579530838 \\ + 0.08858926156067704 0.6342594076651004 \\ + 0.10001640668357709 0.6273377022681408 \\ + 0.11206259309916514 0.6205507015537896 \\ + 0.12471157072109404 0.6139220521185893 \\ + 0.13794606165867013 0.6074745986563617 \\ + 0.15174776245355664 0.601230210328257 \\ + 0.16609735056013508 0.595209623735693 \\ + 0.18097449522356257 0.5894323036685798 \\ + 0.19635787284389433 0.5839163224398252 \\ + 0.21222518684893918 0.5786782582551036 \\ + 0.22855319203419183 0.5737331127121212 \\ + 0.2453177232665567 0.5690942471836795 \\ + 0.2624937283909023 0.5647733375207774 \\ + 0.2800553051258893 0.5607803462222158 \\ + 0.29797574168899293 0.5571235109612749 \\ + 0.31622756085101816 0.5538093481427201 \\ + 0.33478256708834075 0.5508426699883461 \\ + 0.35361189647704766 0.5482266135190604 \\ + 0.37268592361783437 0.5459618554561748 \\ + 0.3919635989583371 0.5439858810625509 \\ + 0.4114072686697789 0.542256769266538 \\ + 0.4309856844028238 0.5407699972032414 \\ + 0.4506673190103041 0.5395202655106666 \\ + 0.4704204266371196 0.5385015715920866 \\ + 0.49021310236631277 0.5377072795331588 \\ + 0.5100133411451515 0.5371301855213393 \\ + 0.5297890957562598 0.5367625778495071 \\ + 0.549508333642688 0.5365962908343607 \\ + 0.5691390924410789 0.536622752236264 \\ + 0.5886495341225724 0.5368330240239059 \\ + 0.6080079976856008 0.537217836577587 \\ + 0.6271830503870768 0.5377676166626855 \\ + 0.6461435375376551 0.5384725097237573 \\ + 0.6648586309217178 0.5393223972443574 \\ + 0.6832978759327167 0.5403069100831968 \\ + 0.701431237538749 0.5414154388297767 \\ + 0.7192291452112497 0.5426371423190983 \\ + 0.7366625369610731 0.5439609555034168 \\ + 0.7537029026308318 0.5453755978982587 \\ + 0.7703223265901644 0.5468695838000848 \\ + 0.7864935299718104 0.5484312354151224 \\ + 0.8021899125713137 0.550048699945044 \\ + 0.8173855945124116 0.5517099715483378 \\ + 0.8320554577543503 0.5534029189402244 \\ + 0.8461751874872951 0.5551153192133925 \\ + 0.8597213134286145 0.5568348982618474 \\ + 0.8726712509970781 0.5585493779764641 \\ + 0.8850033423049936 0.5602465301593889 \\ + 0.8966968968710889 0.5619142368814181 \\ + 0.9077322319206202 0.5635405567880621 \\ + 0.9180907121047873 0.5651137966521894 \\ + 0.9277547884401084 0.5666225872796562 \\ + 0.9367080362408157 0.5680559627043997 \\ + 0.9449351917944534 0.5694034414657716 \\ + 0.9524221875133373 0.5706551086473546 \\ + 0.9591561852829503 0.5718016972762836 \\ + 0.9651256077230753 0.5728346676374088 \\ + 0.9703201670787388 0.573746283048821 \\ + 0.9747308914659053 0.5745296806745971 \\ + 0.9783501482112046 0.5751789360164816 \\ + 0.9811716640454997 0.5756891198269687 \\ + 0.9831905419373617 0.5760563463193311 \\ + 0.9844032743839034 0.5762778117121911 \\ + 0.984807753012208 0.5763518223330697 \\ + } + ; + \addplot[color={rgb,1:red,0.502;green,0.502;blue,0.502}, name path={e518674f-ac64-4d2e-af11-ea1f26d0406a}, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.25 0.0 \\ + 0.2502582728593578 0.0038988302627756813 \\ + 0.25103269319940213 0.007782069045772076 \\ + 0.2523220669200997 0.011646538595019329 \\ + 0.25412440590062885 0.01548797470051084 \\ + 0.25643693106491783 0.019301068008383236 \\ + 0.25925607666677836 0.023079520642880078 \\ + 0.26257749578802814 0.026816117179562147 \\ + 0.26639606704112356 0.03050280877135615 \\ + 0.2707059024659678 0.034130809013564835 \\ + 0.27550035660871897 0.03769069994717307 \\ + 0.28077203676859774 0.04117254644531796 \\ + 0.28651281439689674 0.04456601710856947 \\ + 0.2927138376306129 0.047860509712823684 \\ + 0.29936554494137907 0.05104527921045574 \\ + 0.30645767987864736 0.05410956628136289 \\ + 0.31397930688439263 0.05704272446524951 \\ + 0.32191882815495043 0.05983434397871206 \\ + 0.33026400152398966 0.06247437042831309 \\ + 0.3390019593390453 0.06495321677107439 \\ + 0.3481192283025066 0.06726186704315966 \\ + 0.3576017502464645 0.06939197057185317 \\ + 0.3674349038093884 0.07133592560065934 \\ + 0.37760352698120564 0.0730869514874484 \\ + 0.3880919404820215 0.07463914887577577 \\ + 0.3988839719384333 0.07598754748438447 \\ + 0.40996298082015714 0.07712814140400898 \\ + 0.4213118840985201 0.07805791202859513 \\ + 0.4329131825872518 0.07877483897481213 \\ + 0.4447489879249616 0.07927789955449123 \\ + 0.4568010501576949 0.0795670575550548 \\ + 0.46905078587903987 0.07964324224933027 \\ + 0.4814793068843926 0.07950831869522655 \\ + 0.4940674492952001 0.07916505049514219 \\ + 0.5067958031082717 0.07861705626296862 \\ + 0.5196447421245971 0.07786904147952155 \\ + 0.5325944542115226 0.07694742124890083 \\ + 0.5456249718516244 0.07587178312155074 \\ + 0.5587162029311719 0.07464913509520733 \\ + 0.571847961720712 0.07328685694156663 \\ + 0.585 0.07179264251174938 \\ + 0.5981520382792879 0.07017444537870601 \\ + 0.6112837970688281 0.06844042861863128 \\ + 0.6243750281483755 0.06659891936732618 \\ + 0.6374055457884773 0.06465836861155198 \\ + 0.650355257875403 0.06262731649446585 \\ + 0.6632041968917284 0.06051436323293067 \\ + 0.6759325507048 0.05832814556752331 \\ + 0.6885206931156074 0.05607731849788885 \\ + 0.7009492141209601 0.05377054190087957 \\ + 0.713198949842305 0.051416471490449485 \\ + 0.7252510120750384 0.04902375345983442 \\ + 0.7370868174127482 0.046601022050856845 \\ + 0.74868811590148 0.0441568992243465 \\ + 0.7600370191798429 0.041699995561086334 \\ + 0.7711160280615668 0.039238911505097646 \\ + 0.7819080595179785 0.03678223807048063 \\ + 0.7923964730187943 0.03433855616872576 \\ + 0.8025650961906114 0.031916433774041804 \\ + 0.8123982497535355 0.02952442022778817 \\ + 0.8218807716974934 0.027171037086964545 \\ + 0.8309980406609547 0.024864765042804875 \\ + 0.8397359984760104 0.02261402657031781 \\ + 0.8480811718450496 0.020427164114268356 \\ + 0.8560206931156075 0.018312413767531507 \\ + 0.8635423201213526 0.016277874549771587 \\ + 0.8706344550586209 0.014331473543814652 \\ + 0.8772861623693871 0.012480927289787499 \\ + 0.8834871856031032 0.010733699969197796 \\ + 0.8892279632314023 0.009096959029051124 \\ + 0.8944996433912811 0.007577528996650506 \\ + 0.8992940975340322 0.006181844316203614 \\ + 0.9036039329588765 0.004915902096616329 \\ + 0.9074225042119718 0.003785215694328138 \\ + 0.9107439233332217 0.0027947700648341036 \\ + 0.9135630689350822 0.00194897980139099 \\ + 0.9158755940993711 0.0012516507397446 \\ + 0.9176779330799004 0.0007059459446026405 \\ + 0.9189673068005979 0.00031435680872109786 \\ + 0.9197417271406423 7.867989113094015e-5 \\ + 0.92 -1.8596235662471373e-17 \\ + } + ; + \addplot[color={rgb,1:red,0.6078;green,0.0;blue,0.0}, name path={66fc5496-73a1-4277-a0ca-76c7d975695f}, only marks, draw opacity={1.0}, line width={0}, solid, mark={*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.6078;green,0.0;blue,0.0}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}] + table[row sep={\\}] + { + \\ + -0.0006375497850319564 0.0 \\ + -0.0006375497850319564 0.0 \\ + } + ; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/elliptic-grid.tikz b/v0.5.0/DuctAPE/theory_latex/figures/elliptic-grid.tikz new file mode 100644 index 00000000..0bcff252 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/elliptic-grid.tikz @@ -0,0 +1,46 @@ +\begin{tikzpicture}[scale=1] + + %Airfoil + \draw[ ultra thick, plotsgray, pattern={Hatch[angle=35,distance=2pt,xshift=.1pt, line width=0.25pt]}, pattern color=plotsgray] plot[] file{figures/grid-coord-hub.dat}; + \draw[ ultra thick, plotsgray, pattern={Hatch[angle=35,distance=2pt,xshift=.1pt, line width=0.25pt]}, pattern color=plotsgray] plot[] file{figures/grid-coord-duct.dat}; + + + \draw[secondary] plot[] file{figures/xiline1.dat}; + \draw[secondary] plot[] file{figures/xiline2.dat}; + \draw[secondary] plot[] file{figures/xiline3.dat}; + \draw[secondary] plot[] file{figures/xiline4.dat}; + \draw[secondary] plot[] file{figures/xiline5.dat}; + \draw[secondary] plot[] file{figures/xiline6.dat}; + \draw[secondary] plot[] file{figures/xiline7.dat}; + \draw[secondary] plot[] file{figures/xiline8.dat}; + \draw[primary] plot[] file{figures/etaline1.dat}; + \draw[primary] plot[] file{figures/etaline2.dat}; + \draw[primary] plot[] file{figures/etaline3.dat}; + \draw[primary] plot[] file{figures/etaline4.dat}; + \draw[primary] plot[] file{figures/etaline5.dat}; + \draw[primary] plot[] file{figures/etaline6.dat}; + + \draw[-Stealth, thick, secondary] plot[] file{figures/xiarrow.dat} node[above, secondary]{\(\xi\)}; + \draw[-Stealth, thick, primary] plot[] file{figures/etaarrow.dat} node[right, primary]{\(\eta\)}; + + % % Coordinate system parameters + % \coordinate (csysO) at (-1.5,3.0); + % \coordinate (er) at ($(csysO) +(0,1)$); + % \coordinate (zgap1) at ($(csysO) +(0.065,0)$); + % \coordinate (zgap2) at ($(csysO) +(0.135,0)$); + % \coordinate (ez) at ($(csysO) +(1,0)$); + + % % z-axis + % \draw[] (csysO) -- (zgap1); + % \draw[-Stealth] (zgap2) -- (ez); + % \node[anchor=south,outer sep=0] at (ez) {$\hat{\vect{e}}_z$}; + + % % r-axis + % \draw[-Stealth,] (csysO) -- (er); + % \node[anchor=west,outer sep=0] at (er) {$\hat{\vect{e}}_r$}; + + %%theta direction + %\draw[-Stealth] ($(csysO) + (0.2,0)$) [partial ellipse =7:350:0.1 and 0.5]; + %\node[anchor=north,outer sep=0,shift={(0.0,-0.5)}] at ($(csysO) + (0.2,0)$) {$\hat{\vect{e}}_\theta$}; + +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/equategammakutta.jpeg b/v0.5.0/DuctAPE/theory_latex/figures/equategammakutta.jpeg new file mode 100644 index 00000000..ab2df252 Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/equategammakutta.jpeg differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/equivalent-inviscid.tikz b/v0.5.0/DuctAPE/theory_latex/figures/equivalent-inviscid.tikz new file mode 100644 index 00000000..87e98df2 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/equivalent-inviscid.tikz @@ -0,0 +1,48 @@ +\begin{tikzpicture}[scale=1.0] + + % coordinate system + \coordinate (O) at (-1,-1); + \coordinate (er) at ($(O) +(0,1)$); + \coordinate (ez) at ($(O) +(1,0)$); + \draw[-Stealth,] (O) -- (er); + \draw[-Stealth,] (O) -- (ez); + \node[anchor=west,outer sep=0] at (er) {$\hat{\vect{e}}_r$}; + \node[anchor=south,outer sep=0] at (ez) {$\hat{\vect{e}}_z$}; + + % filament line + \draw[densely dotted] (3,0) -- ++(-3,0) node[pos=0.65,below, secondary] {\(\gamma_\mathrm{visc}=0\)}-- ++(0,2.5) node[pos=0.5,right,shift={(0.2,0)}, primary] {\(\sigma\)} -- ++(3,0) ; + \draw[dashed] (2.25,-0.5) -- +(0,3.5); + \draw[dashed] (2.75,-0.5) -- +(0,3.5) node[pos=0.5,right] {EIF}; + + % vm arrows + \node[above] at (2.5,3) {\(C_m\)}; + \foreach \z in {-0.5,-0.3,...,3.0} + \draw[-{Stealth[length=4pt, width=3pt]}] (2.25,\z) -- (2.75,\z); + + % sigma arrows + \foreach \z in {0.2,0.7,...,2.2} + { + \coordinate (s) at (0,\z); + \coordinate (s11) at ($(s) + (-0.184,0.1)$); + \coordinate (s12) at ($(s) + (0.1,0.184)$); + \coordinate (s21) at ($(s) + (-0.1,-0.184)$); + \coordinate (s22) at ($(s) + (0.184,-0.1)$); + \draw[primary,-{Stealth[length=3.5pt,width=2.5pt]}] (s) -- (s11); + \draw[primary,-{Stealth[length=3.5pt,width=2.5pt]}] (s) -- (s12); + \draw[primary,-{Stealth[length=3.5pt,width=2.5pt]}] (s) -- (s21); + \draw[primary,-{Stealth[length=3.5pt,width=2.5pt]}] (s) -- (s22); + }; + + % entropy jump + \draw[] (-0.25, 2.25) -- ++(0.0,0.5) -- node[above, pos=0.5] {\(\Delta S\)} ++(0.5,0) -- ++(0,-0.5); + \filldraw[] (-0.25,2.25) circle(1pt); + \filldraw[] (0.25,2.25) circle(1pt); + + % static pressure jump + \draw[] (2.95, 2.4) -- ++(0.2,0) -- node[right, pos=0.5] {\(\Delta p_s=0\)} ++(0,0.2) -- ++(-0.2,0); + \filldraw[] (2.95,2.4) circle(1pt); + \filldraw[] (2.95,2.6) circle(1pt); + + % Cf (needed?) + +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/etaarrow.dat b/v0.5.0/DuctAPE/theory_latex/figures/etaarrow.dat new file mode 100644 index 00000000..d383eda2 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/etaarrow.dat @@ -0,0 +1,31 @@ +-0.5666666666666667 0.7654185950155186 +-0.5666666666666667 0.8026899344471797 +-0.5666666666666667 0.8398780493919107 +-0.5666666666666667 0.8769858804699351 +-0.5666666666666667 0.9140162510438854 +-0.5666666666666667 0.9509718585186082 +-0.5666666666666667 0.9878552719043475 +-0.5666666666666667 1.0246689339623496 +-0.5666666666666667 1.061415166581804 +-0.5666666666666667 1.0980961783221364 +-0.5666666666666667 1.134714073295874 +-0.5666666666666667 1.1712708607680906 +-0.5666666666666667 1.2077684650134437 +-0.5666666666666667 1.2442087351060651 +-0.5666666666666667 1.280593454425899 +-0.5666666666666667 1.316924349751991 +-0.5666666666666667 1.3532030998825835 +-0.5666666666666667 1.389431343777044 +-0.5666666666666667 1.4256106882584212 +-0.5666666666666667 1.4617427153501028 +-0.5666666666666667 1.4978289893474412 +-0.5666666666666667 1.5338710637468491 +-0.5666666666666667 1.5698704881718377 +-0.5666666666666667 1.6058288154486715 +-0.5666666666666667 1.6417476089944207 +-0.5666666666666667 1.6776284506876356 +-0.5666666666666667 1.7134729493970386 +-0.5666666666666667 1.7492827503467234 +-0.5666666666666667 1.785059545497515 +-0.5666666666666667 1.820805085123491 +-0.5666666666666667 1.856521190760213 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/etaline1.dat b/v0.5.0/DuctAPE/theory_latex/figures/etaline1.dat new file mode 100644 index 00000000..90fa1c41 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/etaline1.dat @@ -0,0 +1,151 @@ +-1.5 0.0 +-1.4533333333333334 0.0 +-1.4066666666666667 0.0 +-1.36 0.0 +-1.3133333333333332 0.0 +-1.2666666666666666 0.0 +-1.22 0.0 +-1.1733333333333333 0.0 +-1.1266666666666667 0.0 +-1.08 0.0 +-1.0333333333333334 0.0 +-0.9866666666666667 0.0 +-0.94 0.0 +-0.8933333333333333 0.0 +-0.8466666666666667 0.0 +-0.8 0.0 +-0.7533333333333333 0.0 +-0.7066666666666667 0.0 +-0.66 0.0 +-0.6133333333333333 0.0 +-0.5666666666666667 0.0 +-0.52 0.0 +-0.47333333333333333 0.0 +-0.4266666666666667 0.0 +-0.38 0.0 +-0.3333333333333333 0.0 +-0.2866666666666667 0.0 +-0.24 0.0 +-0.19333333333333333 0.0 +-0.14666666666666667 0.0 +-0.1 0.0 +-0.05333333333333334 0.0 +-0.006666666666666667 0.0 +0.04 0.10362635536875944 +0.08666666666666667 0.17496430826259862 +0.13333333333333333 0.22739603360173447 +0.18 0.2694764079292144 +0.22666666666666666 0.30477086854541235 +0.2733333333333333 0.33516748324537426 +0.32 0.3618002192193723 +0.36666666666666664 0.3853978318520127 +0.41333333333333333 0.4064967587260511 +0.46 0.4254814501508215 +0.5066666666666667 0.4426302545268442 +0.5533333333333333 0.45817584966375946 +0.6 0.47230248987400886 +0.6466666666666666 0.48515239089590284 +0.6933333333333334 0.4968444543804308 +0.74 0.5074786516850737 +0.7866666666666666 0.5171395592345931 +0.8333333333333334 0.5258991813103981 +0.88 0.5338194659916095 +0.9266666666666666 0.5409535113018615 +0.9733333333333334 0.5473470239691198 +1.02 0.5530398566604922 +1.0666666666666667 0.5580668400466301 +1.1133333333333333 0.5624584611525454 +1.16 0.5662414173197474 +1.2066666666666668 0.5694390691294088 +1.2533333333333334 0.5720718107594652 +1.3 0.5741573723103648 +1.3466666666666667 0.5757110654664074 +1.3933333333333333 0.576745981305952 +1.44 0.5772731469977821 +1.4866666666666666 0.5773016464066896 +1.5333333333333334 0.576838708180917 +1.58 0.5758897636235485 +1.6266666666666667 0.5744584754851577 +1.6733333333333333 0.5725467376872847 +1.72 0.5701546454409803 +1.7666666666666666 0.5672804395012707 +1.8133333333333332 0.5639202101045957 +1.86 0.5600690151023147 +1.9066666666666667 0.5557301237715704 +1.9533333333333334 0.5509153730317431 +2.0 0.5456378459009782 +2.046666666666667 0.5399123273001082 +2.0933333333333333 0.5337551988537645 +2.14 0.5271844470846133 +2.1866666666666665 0.5202196685111282 +2.2333333333333334 0.5128820612833636 +2.28 0.5051944027050949 +2.3266666666666667 0.4971810122024462 +2.3733333333333335 0.4888676995189939 +2.42 0.4802817443493243 +2.466666666666667 0.47145257883200054 +2.513333333333333 0.4624104994434545 +2.56 0.45318664684769794 +2.6066666666666665 0.4438131480315586 +2.6533333333333333 0.4343229765238765 +2.7 0.42474980301916576 +2.7466666666666666 0.4151271562717329 +2.7933333333333334 0.4054922026077643 +2.84 0.39587790119814803 +2.8866666666666667 0.38632112626444404 +2.933333333333333 0.3768561224435444 +2.98 0.36751714346155606 +3.026666666666667 0.35833791625408323 +3.0733333333333333 0.3493514802547551 +3.12 0.3405900340601157 +3.1666666666666665 0.33208526298823304 +3.2133333333333334 0.3238679241384348 +3.26 0.31596665622232256 +3.3066666666666666 0.30840872448993867 +3.3533333333333335 0.30121994672778635 +3.4 0.29442462103663825 +3.4466666666666668 0.2880454685989371 +3.493333333333333 0.28210359157250353 +3.54 0.2766184460204008 +3.5866666666666664 0.27160782955800544 +3.6333333333333333 0.267087883173439 +3.68 0.26307316746458725 +3.7266666666666666 0.2595765807600698 +3.7733333333333334 0.25660936758001424 +3.82 0.25418127000203083 +3.8666666666666667 0.2523005832972962 +3.9133333333333336 0.25097215856311644 +3.96 0.2502184595996605 +4.006666666666667 0.25 +4.053333333333334 0.25 +4.1 0.25 +4.1466666666666665 0.25 +4.193333333333333 0.25 +4.24 0.25 +4.286666666666667 0.25 +4.333333333333333 0.25 +4.38 0.25 +4.426666666666667 0.25 +4.473333333333334 0.25 +4.52 0.25 +4.566666666666666 0.25 +4.613333333333333 0.25 +4.66 0.25 +4.706666666666667 0.25 +4.753333333333333 0.25 +4.8 0.25 +4.846666666666667 0.25 +4.8933333333333335 0.25 +4.94 0.25 +4.986666666666666 0.25 +5.033333333333333 0.25 +5.08 0.25 +5.126666666666667 0.25 +5.173333333333333 0.25 +5.22 0.25 +5.266666666666667 0.25 +5.3133333333333335 0.25 +5.36 0.25 +5.406666666666666 0.25 +5.453333333333333 0.25 +5.5 0.25 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/etaline2.dat b/v0.5.0/DuctAPE/theory_latex/figures/etaline2.dat new file mode 100644 index 00000000..c1689b84 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/etaline2.dat @@ -0,0 +1,151 @@ +-1.5 0.75 +-1.4533333333333334 0.7503432418324908 +-1.4066666666666667 0.7506920837116038 +-1.36 0.7510520127164083 +-1.3133333333333332 0.7514286112405396 +-1.2666666666666666 0.7518276017564266 +-1.22 0.7522548930881601 +-1.1733333333333333 0.7527166285802572 +-1.1266666666666667 0.753219236531518 +-1.08 0.753769483222248 +-1.0333333333333334 0.7543745287850632 +-0.9866666666666667 0.7550419860346884 +-0.94 0.7557799821541913 +-0.8933333333333333 0.7565972227989654 +-0.8466666666666667 0.7575030576803277 +-0.8 0.758507545971214 +-0.7533333333333333 0.7596215188691788 +-0.7066666666666667 0.7608566352801619 +-0.66 0.7622254247726951 +-0.6133333333333333 0.7637413096337864 +-0.5666666666666667 0.7654185950155186 +-0.52 0.7672724128664334 +-0.47333333333333333 0.76931860182393 +-0.4266666666666667 0.7715735019830634 +-0.38 0.774053641285591 +-0.3333333333333333 0.7767752904571159 +-0.2866666666666667 0.7797538676561393 +-0.24 0.7830031842212906 +-0.19333333333333333 0.7865345407801604 +-0.14666666666666667 0.7903557090163864 +-0.1 0.7944698667022724 +-0.05333333333333334 0.7988745868207867 +-0.006666666666666667 0.8035610066684217 +0.04 0.8085133087396869 +0.08666666666666667 0.8137086230659455 +0.13333333333333333 0.8191174090676154 +0.18 0.8247043033221941 +0.22666666666666666 0.8304293465322437 +0.2733333333333333 0.8362494487279587 +0.32 0.8421199296122617 +0.36666666666666664 0.8479959824705665 +0.41333333333333333 0.8538339464489921 +0.46 0.8595923195875416 +0.5066666666666667 0.8652324909768702 +0.5533333333333333 0.8707192064478345 +0.6 0.8760208051210591 +0.6466666666666666 0.8811092745459457 +0.6933333333333334 0.8859601728272665 +0.74 0.8905524607911445 +0.7866666666666666 0.8948682792129917 +0.8333333333333334 0.8988926976332238 +0.88 0.9026134535564292 +0.9266666666666666 0.906020694427764 +0.9733333333333334 0.9091067298543271 +1.02 0.911865798019225 +1.0666666666666667 0.9142938479575631 +1.1133333333333333 0.9163883380911569 +1.16 0.9181480508717795 +1.2066666666666668 0.9195729232996422 +1.2533333333333334 0.9206638932586486 +1.3 0.9214227618975812 +1.3466666666666667 0.9218520725923163 +1.3933333333333333 0.9219550072917272 +1.44 0.9217353012477674 +1.4866666666666666 0.9211971772405395 +1.5333333333333334 0.9203453004151444 +1.58 0.9191847547183772 +1.6266666666666667 0.9177210415994942 +1.6733333333333333 0.9159601010150371 +1.72 0.9139083537023143 +1.7666666666666666 0.911572762004612 +1.8133333333333332 0.908960904212922 +1.86 0.9060810547715055 +1.9066666666666667 0.9029422607346693 +1.9533333333333334 0.8995544049633692 +2.0 0.8959282494096509 +2.046666666666667 0.8920754561002229 +2.0933333333333333 0.8880085868502693 +2.14 0.8837410843299874 +2.1866666666666665 0.8792872372263416 +2.2333333333333334 0.8746621316712828 +2.28 0.8698815904365593 +2.3266666666666667 0.8649621009025275 +2.3733333333333335 0.8599207325594205 +2.42 0.8547750447690761 +2.466666666666667 0.8495429856602329 +2.513333333333333 0.844242783305373 +2.56 0.838892830652561 +2.6066666666666665 0.8335115659359643 +2.6533333333333333 0.8281173504010522 +2.7 0.8227283451889035 +2.7466666666666666 0.8173623891934056 +2.7933333333333334 0.8120368796810908 +2.84 0.8067686574609548 +2.8866666666666667 0.8015738983780978 +2.933333333333333 0.7964680127860596 +2.98 0.7914655544179938 +3.026666666666667 0.7865801397394842 +3.0733333333333333 0.7818243784675635 +3.12 0.7772098155421345 +3.1666666666666665 0.7727468844799916 +3.2133333333333334 0.7684448717364938 +3.26 0.7643118914277977 +3.3066666666666666 0.7603548695010881 +3.3533333333333335 0.7565795361741019 +3.4 0.7529904252263012 +3.4466666666666668 0.7495908785602475 +3.493333333333333 0.7463830544105889 +3.54 0.7433679377039305 +3.5866666666666664 0.7405453514174131 +3.6333333333333333 0.7379139684158562 +3.68 0.7354713242507802 +3.7266666666666666 0.733213832856297 +3.7733333333333334 0.731136808992174 +3.82 0.7292345035191187 +3.8666666666666667 0.7275001597011803 +3.9133333333333336 0.7259260998391697 +3.96 0.7245038503681037 +4.006666666666667 0.7232243088607105 +4.053333333333334 0.722077947991553 +4.1 0.7210550415189371 +4.1466666666666665 0.7201458900598525 +4.193333333333333 0.7193410238541089 +4.24 0.7186313660651235 +4.286666666666667 0.7180083498326826 +4.333333333333333 0.7174639910086152 +4.38 0.7169909239149439 +4.426666666666667 0.7165824094093614 +4.473333333333334 0.7162323240624456 +4.52 0.715935137572516 +4.566666666666666 0.71568588357795 +4.613333333333333 0.7154801272739549 +4.66 0.7153139318906722 +4.706666666666667 0.7151838251520385 +4.753333333333333 0.7150867662410807 +4.8 0.7150201134584554 +4.846666666666667 0.7149815925961313 +4.8933333333333335 0.7149692659935164 +4.94 0.7149815022531139 +4.986666666666666 0.7150169466357468 +5.033333333333333 0.7150744922113541 +5.08 0.7151532518979299 +5.126666666666667 0.7152525315711978 +5.173333333333333 0.7153718044673776 +5.22 0.7155106871293365 +5.266666666666667 0.715668917162306 +5.3133333333333335 0.7158463330697211 +5.36 0.7160428564335861 +5.406666666666666 0.7162584766882533 +5.453333333333333 0.7164932387129074 +5.5 0.7168657456834133 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/etaline3.dat b/v0.5.0/DuctAPE/theory_latex/figures/etaline3.dat new file mode 100644 index 00000000..80520fc2 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/etaline3.dat @@ -0,0 +1,151 @@ +-1.5 1.5 +-1.4533333333333334 1.4999607959323542 +-1.4066666666666667 1.4999203175695424 +-1.36 1.4998772330051138 +-1.3133333333333332 1.4998302328329738 +-1.2666666666666666 1.4997780456253242 +-1.22 1.4997194539365255 +-1.1733333333333333 1.4996533110659924 +-1.1266666666666667 1.4995785587170418 +-1.08 1.4994942455781153 +-1.0333333333333334 1.4993995467309211 +-0.9866666666666667 1.4992937836603295 +-0.94 1.4991764445074196 +-0.8933333333333333 1.499047204074651 +-0.8466666666666667 1.4989059429659568 +-0.8 1.4987527651303179 +-0.7533333333333333 1.4985880129811275 +-0.7066666666666667 1.4984122791916143 +-0.66 1.4982264142249306 +-0.6133333333333333 1.4980315286521386 +-0.5666666666666667 1.4978289893474412 +-0.52 1.4976204087318437 +-0.47333333333333333 1.4974076263666363 +-0.4266666666666667 1.4971926823774213 +-0.38 1.4969777824160795 +-0.3333333333333333 1.496765254137507 +-0.2866666666666667 1.4965574954723384 +-0.24 1.4963569153051932 +-0.19333333333333333 1.4961658675061658 +-0.14666666666666667 1.4959865795947196 +-0.1 1.4958210776217356 +-0.05333333333333334 1.4956711091187076 +-0.006666666666666667 1.4955380661658668 +0.04 1.4954229107590014 +0.08666666666666667 1.495326104698073 +0.13333333333333333 1.495247546174982 +0.18 1.4951865151045758 +0.22666666666666666 1.4951416290294635 +0.2733333333333333 1.495110811147342 +0.32 1.4950912716743368 +0.36666666666666664 1.4950795033855095 +0.41333333333333333 1.495071291779788 +0.46 1.4950617399148316 +0.5066666666666667 1.4950453075589405 +0.5533333333333333 1.4950158639208238 +0.6 1.4949667528511745 +0.6466666666666666 1.4948908690694254 +0.6933333333333334 1.4947807436624956 +0.74 1.4946286368391624 +0.7866666666666666 1.4944266357149463 +0.8333333333333334 1.4941667547603954 +0.88 1.4938410364823926 +0.9266666666666666 1.4934416499337004 +0.9733333333333334 1.492960984766476 +1.02 1.4923917387613954 +1.0666666666666667 1.4917269970689357 +1.1133333333333333 1.4909603017797601 +1.16 1.4900857108769805 +1.2066666666666668 1.48909784608918 +1.2533333333333334 1.487991929631377 +1.3 1.4867638102631155 +1.3466666666666667 1.4854099794822455 +1.3933333333333333 1.4839275789879434 +1.44 1.4823144007715856 +1.4866666666666666 1.4805688813210862 +1.5333333333333334 1.4786900914527525 +1.58 1.4766777232212265 +1.6266666666666667 1.4745320752153723 +1.6733333333333333 1.4722540373431996 +1.72 1.469845075961911 +1.7666666666666666 1.4673072199405257 +1.8133333333333332 1.4646430479719477 +1.86 1.4618556771960736 +1.9066666666666667 1.458948752969416 +1.9533333333333334 1.4559264394294718 +2.0 1.452793410359217 +2.046666666666667 1.449554839760225 +2.0933333333333333 1.4462163914902102 +2.14 1.4427842073081523 +2.1866666666666665 1.4392648926918592 +2.2333333333333334 1.4356654998426563 +2.28 1.4319935073637098 +2.3266666666666667 1.4282567961867594 +2.3733333333333335 1.4244636214220572 +2.42 1.4206225799141743 +2.466666666666667 1.4167425733989079 +2.513333333333333 1.41283276727115 +2.56 1.4089025450879233 +2.6066666666666665 1.4049614590427055 +2.6533333333333333 1.4010191767544857 +2.7 1.397085424815578 +2.7466666666666666 1.3931699296339384 +2.7933333333333334 1.3892823561865144 +2.84 1.3854322453681496 +2.8866666666666667 1.3816289506741815 +2.933333333333333 1.3778815749929707 +2.98 1.3741989083064898 +3.026666666666667 1.3705893671026999 +3.0733333333333333 1.3670609362931696 +3.12 1.3636211144042212 +3.1666666666666665 1.360276862771205 +3.2133333333333334 1.3570345594150321 +3.26 1.3538999582197124 +3.3066666666666666 1.3508781539612538 +3.3533333333333335 1.347973553663689 +3.4 1.345189854678684 +3.4466666666666668 1.3425300298023344 +3.493333333333333 1.3399963196570386 +3.54 1.337590232478005 +3.5866666666666664 1.3353125513527884 +3.6333333333333333 1.3331633488677381 +3.68 1.3311420090167343 +3.7266666666666666 1.3292472561245436 +3.7733333333333334 1.3274771904294738 +3.82 1.325829329858472 +3.8666666666666667 1.3243006574142338 +3.9133333333333336 1.322887673481388 +3.96 1.3215864522519272 +4.006666666666667 1.3203927013742909 +4.053333333333334 1.319301823852047 +4.1 1.318308981162968 +4.1466666666666665 1.317409156542413 +4.193333333333333 1.3165972173795901 +4.24 1.3158679757123777 +4.286666666666667 1.3152162458744507 +4.333333333333333 1.3146368984437702 +4.38 1.3141249097586756 +4.426666666666667 1.3136754064006313 +4.473333333333334 1.3132837041846095 +4.52 1.3129453413431456 +4.566666666666666 1.3126561057330448 +4.613333333333333 1.3124120560303099 +4.66 1.3122095370059572 +4.706666666666667 1.3120451890906637 +4.753333333333333 1.3119159525381818 +4.8 1.3118190665852631 +4.846666666666667 1.311752064079034 +4.8933333333333335 1.3117127621013476 +4.94 1.3116992491638202 +4.986666666666666 1.3117098695775757 +5.033333333333333 1.311743205618804 +5.08 1.3117980581159956 +5.126666666666667 1.3118734260780371 +5.173333333333333 1.3119684859653276 +5.22 1.3120825711797726 +5.266666666666667 1.3122151523149999 +5.3133333333333335 1.3123658186665232 +5.36 1.3125342614538174 +5.406666666666666 1.3127202591533365 +5.453333333333333 1.3129236652842353 +5.5 1.3132468913799864 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/etaline4.dat b/v0.5.0/DuctAPE/theory_latex/figures/etaline4.dat new file mode 100644 index 00000000..591e4025 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/etaline4.dat @@ -0,0 +1,151 @@ +-1.5 2.25 +-1.4533333333333334 2.2489852438302993 +-1.4066666666666667 2.247958772115159 +-1.36 2.246906249821242 +-1.3133333333333332 2.2458134777985745 +-1.2666666666666666 2.24466641608631 +-1.22 2.243451215567851 +-1.1733333333333333 2.2421542593294133 +-1.1266666666666667 2.2407622148762742 +-1.08 2.2392620980999784 +-1.0333333333333334 2.237641349565494 +-0.9866666666666667 2.2358879232989266 +-0.94 2.233990387805012 +-0.8933333333333333 2.231938038533036 +-0.8466666666666667 2.229721020447539 +-0.8 2.2273304587582414 +-0.7533333333333333 2.2247585952397753 +-0.7066666666666667 2.2219989269501363 +-0.66 2.2190463435679484 +-0.6133333333333333 2.2158972590495964 +-0.5666666666666667 2.212549732899647 +-0.52 2.2090035760955407 +-0.47333333333333333 2.2052604366523596 +-0.4266666666666667 2.2013238599910796 +-0.38 2.197199319707821 +-0.3333333333333333 2.1928942150388817 +-0.2866666666666667 2.188417832262664 +-0.24 2.183781268438341 +-0.19333333333333333 2.1789973171942356 +-0.14666666666666667 2.174080317671604 +-0.1 2.1690459691173394 +-0.05333333333333334 2.1639111149170716 +-0.006666666666666667 2.158693500991883 +0.04 2.1534115143876327 +0.08666666666666667 2.1480839085274708 +0.13333333333333333 2.142729521960343 +0.18 2.1373669975270078 +0.22666666666666666 2.1320145087028264 +0.2733333333333333 2.1266894994964285 +0.32 2.1214084437232974 +0.36666666666666664 2.116186628771262 +0.41333333333333333 2.1110379681656855 +0.46 2.1059748463559145 +0.5066666666666667 2.1010079982071104 +0.5533333333333333 2.09614642471521 +0.6 2.0913973454881183 +0.6466666666666666 2.086766187573616 +0.6933333333333334 2.082256609285331 +0.74 2.077870556805409 +0.7866666666666666 2.073608350550688 +0.8333333333333334 2.0694687976033763 +0.88 2.0654493259517452 +0.9266666666666666 2.061546135882855 +0.9733333333333334 2.0577543636346896 +1.02 2.054068252359288 +1.0666666666666667 2.0504813255730343 +1.1133333333333333 2.0469865585670375 +1.16 2.0435765437017395 +1.2066666666666668 2.0402436460885904 +1.2533333333333334 2.036980146833871 +1.3 2.0337783717467475 +1.3466666666666667 2.030630804155017 +1.3933333333333333 2.027530181188877 +1.44 2.024469573550923 +1.4866666666666666 2.021442449361861 +1.5333333333333334 2.0184427231367286 +1.58 2.0154647912955137 +1.6266666666666667 2.012503555843378 +1.6733333333333333 2.0095544379752632 +1.72 2.0066133833798125 +1.7666666666666666 2.0036768609544193 +1.8133333333333332 2.0007418565153614 +1.86 1.997805862912994 +1.9066666666666667 1.994866867759304 +1.9533333333333334 1.9919233397588072 +2.0 1.988974214415901 +2.046666666666667 1.986018879681248 +2.0933333333333333 1.9830571619025816 +2.14 1.9800893122650765 +2.1866666666666665 1.9771159937449316 +2.2333333333333334 1.9741382684580562 +2.28 1.9711575851643395 +2.3266666666666667 1.9681757665879618 +2.3733333333333335 1.9651949961371191 +2.42 1.962217803554511 +2.466666666666667 1.9592470490053622 +2.513333333333333 1.9562859051145658 +2.56 1.9533378364997285 +2.6066666666666665 1.9504065764117748 +2.6533333333333333 1.9474961001866256 +2.7 1.9446105953256532 +2.7466666666666666 1.9417544281527834 +2.7933333333333334 1.9389321071348973 +2.84 1.9361482430920207 +2.8866666666666667 1.9334075066574719 +2.933333333333333 1.930714583469576 +2.98 1.9280741276809525 +3.026666666666667 1.9254907144554034 +3.0733333333333333 1.9229687921841874 +3.12 1.9205126351921704 +3.1666666666666665 1.9181262977202742 +3.2133333333333334 1.9158135699647443 +3.26 1.9135779369274937 +3.3066666666666666 1.9114225407869803 +3.3533333333333335 1.9093501474377683 +3.4 1.9073631177712753 +3.4466666666666668 1.9054633841824673 +3.493333333333333 1.9036524326896893 +3.54 1.901931290949712 +3.5866666666666664 1.9003005223397307 +3.6333333333333333 1.8987602261647667 +3.68 1.8973100439349861 +3.7266666666666666 1.8959491715451764 +3.7733333333333334 1.8946763770802522 +3.82 1.8934900238684802 +3.8666666666666667 1.8923880983102468 +3.9133333333333336 1.891368241926771 +3.96 1.8904277870020365 +4.006666666666667 1.8895637951341322 +4.053333333333334 1.888773097970511 +4.1 1.8880523393764628 +4.1466666666666665 1.8873980182779775 +4.193333333333333 1.8868065314292963 +4.24 1.8862742153814642 +4.286666666666667 1.885797386970251 +4.333333333333333 1.8853723816985368 +4.38 1.88499558945785 +4.426666666666667 1.884663487113992 +4.473333333333334 1.8843726675701051 +4.52 1.8841198650144122 +4.566666666666666 1.88390197615642 +4.613333333333333 1.88371607735189 +4.66 1.8835594376107232 +4.706666666666667 1.883429527570744 +4.753333333333333 1.8833240246021161 +4.8 1.8832408142801758 +4.846666666666667 1.8831779885274986 +4.8933333333333335 1.8831338407782523 +4.94 1.8831068585588477 +4.986666666666666 1.8830957139085904 +5.033333333333333 1.8830992520826684 +5.08 1.8831164789880157 +5.126666666666667 1.8831465478010658 +5.173333333333333 1.8831887452061071 +5.22 1.883242477674854 +5.266666666666667 1.8833072581829708 +5.3133333333333335 1.8833826937286513 +5.36 1.883468473982906 +5.406666666666666 1.8835643613618267 +5.453333333333333 1.8836701827685358 +5.5 1.8838393986850146 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/etaline5.dat b/v0.5.0/DuctAPE/theory_latex/figures/etaline5.dat new file mode 100644 index 00000000..d086c3a2 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/etaline5.dat @@ -0,0 +1,151 @@ +-1.5 3.0 +-1.4533333333333334 2.998407724044548 +-1.4066666666666667 2.9967900250841804 +-1.36 2.995122831815388 +-1.3133333333333332 2.9933817991562033 +-1.2666666666666666 2.9915421783106377 +-1.22 2.989578694207836 +-1.1733333333333333 2.9874654328920354 +-1.1266666666666667 2.9851757425413257 +-1.08 2.9826821531911714 +-1.0333333333333334 2.979956321997595 +-0.9866666666666667 2.9769690130492132 +-0.94 2.9736901233532986 +-0.8933333333333333 2.9700887696479414 +-0.8466666666666667 2.9661334539993804 +-0.8 2.9617923294393647 +-0.7533333333333333 2.957033589654478 +-0.7066666666666667 2.951826008110052 +-0.66 2.946139650739924 +-0.6133333333333333 2.939946780828186 +-0.5666666666666667 2.933222963046764 +-0.52 2.9259483539712012 +-0.47333333333333333 2.9181091377097954 +-0.4266666666666667 2.909699028259531 +-0.38 2.9007207185605366 +-0.3333333333333333 2.89118711766795 +-0.2866666666666667 2.881122193678975 +-0.24 2.870561244715288 +-0.19333333333333333 2.8595504644832523 +-0.14666666666666667 2.848145754802168 +-0.1 2.8364108522840077 +-0.05333333333333334 2.8244149518488832 +-0.006666666666666667 2.8122300904593405 +0.04 2.799928573700464 +0.08666666666666667 2.7875806832210124 +0.13333333333333333 2.7752528184430014 +0.18 2.763006135596917 +0.22666666666666666 2.7508956747989934 +0.2733333333333333 2.738969918063215 +0.32 2.727270695644084 +0.36666666666666664 2.715833351070239 +0.41333333333333333 2.704687081221253 +0.46 2.693855381237625 +0.5066666666666667 2.683356540292237 +0.5533333333333333 2.67320415007466 +0.6 2.6634076014238453 +0.6466666666666666 2.6539725551484397 +0.6933333333333334 2.644901380668173 +0.74 2.6361935610650016 +0.7866666666666666 2.627846065996798 +0.8333333333333334 2.61985369526953 +0.88 2.6122093961913166 +0.9266666666666666 2.60490455754878 +0.9733333333333334 2.597929282451199 +1.02 2.591272641583527 +1.0666666666666667 2.584922907724829 +1.1133333333333333 2.578867771809818 +1.16 2.573094540398734 +1.2066666666666668 2.5675903142059417 +1.2533333333333334 2.5623421473083092 +1.3 2.557337186766093 +1.3466666666666667 2.5525627925974814 +1.3933333333333333 2.548006638324357 +1.44 2.543656792620994 +1.4866666666666666 2.5395017829096895 +1.5333333333333334 2.535530642029598 +1.58 2.531732939341652 +1.6266666666666667 2.5280987978051632 +1.6733333333333333 2.5246188986625917 +1.72 2.5212844754037844 +1.7666666666666666 2.5180872986574 +1.8133333333333332 2.5150196535893925 +1.86 2.5120743112902915 +1.9066666666666667 2.5092444955201723 +1.9533333333333334 2.5065238460754724 +2.0 2.5039063799679964 +2.046666666666667 2.5013864515906445 +2.0933333333333333 2.4989587131096096 +2.14 2.4966180764890766 +2.1866666666666665 2.494359678827237 +2.2333333333333334 2.4921788530410485 +2.28 2.4900711063082057 +2.3266666666666667 2.4880321089030257 +2.3733333333333335 2.486057695892338 +2.42 2.4841438832785188 +2.466666666666667 2.4822868983921627 +2.513333333333333 2.480483221824179 +2.56 2.478729635627985 +2.6066666666666665 2.4770232708481577 +2.6533333333333333 2.4753616473206486 +2.7 2.4737427002263885 +2.7466666666666666 2.472164790457637 +2.7933333333333334 2.470626698541309 +2.84 2.469127603923572 +2.8866666666666667 2.467667052573108 +2.933333333333333 2.4662449161993005 +2.98 2.4648613461717614 +3.026666666666667 2.463516724742004 +3.0733333333333333 2.462211615607999 +3.12 2.4609467153442477 +3.1666666666666665 2.4597228067939807 +3.2133333333333334 2.458540715194811 +3.26 2.457401267572561 +3.3066666666666666 2.456305255770613 +3.3533333333333335 2.455253403364348 +3.4 2.4542463366254528 +3.4466666666666668 2.4532845596365136 +3.493333333333333 2.4523684336034157 +3.54 2.4514981603658734 +3.5866666666666664 2.450673770061414 +3.6333333333333333 2.449895112853646 +3.68 2.449161854591094 +3.7266666666666666 2.4484734762184965 +3.7733333333333334 2.4478292767191108 +3.82 2.4472283793251313 +3.8666666666666667 2.4466697406951132 +3.9133333333333336 2.4461521627233824 +3.96 2.445674306617927 +4.006666666666667 2.4452347088611535 +4.053333333333334 2.4448317986529187 +4.1 2.444463916427911 +4.1466666666666665 2.4441293330401113 +4.193333333333333 2.4438262692156645 +4.24 2.443552914891912 +4.286666666666667 2.443307448083999 +4.333333333333333 2.4430880529508046 +4.38 2.4428929367679557 +4.426666666666667 2.4427203455564186 +4.473333333333334 2.442568578159385 +4.52 2.4424359986066997 +4.566666666666666 2.4423210466536367 +4.613333333333333 2.4422222464281824 +4.66 2.442138213167 +4.706666666666667 2.4420676580638223 +4.753333333333333 2.442009391294285 +4.8 2.4419623233173615 +4.846666666666667 2.441925464585071 +4.8933333333333335 2.4418979238185328 +4.94 2.441878905029566 +4.986666666666666 2.4418677034828016 +5.033333333333333 2.441863700803751 +5.08 2.441866359443724 +5.126666666666667 2.44187521671317 +5.173333333333333 2.44188987859137 +5.22 2.441910013512829 +5.266666666666667 2.4419353463196796 +5.3133333333333335 2.44196565255541 +5.36 2.442000753258673 +5.406666666666666 2.4420405103972636 +5.453333333333333 2.442084823061993 +5.5 2.4421563181993924 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/etaline6.dat b/v0.5.0/DuctAPE/theory_latex/figures/etaline6.dat new file mode 100644 index 00000000..910ea997 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/etaline6.dat @@ -0,0 +1,151 @@ +-1.5 3.75 +-1.4533333333333334 3.75 +-1.4066666666666667 3.75 +-1.36 3.75 +-1.3133333333333332 3.75 +-1.2666666666666666 3.75 +-1.22 3.75 +-1.1733333333333333 3.75 +-1.1266666666666667 3.75 +-1.08 3.75 +-1.0333333333333334 3.75 +-0.9866666666666667 3.75 +-0.94 3.75 +-0.8933333333333333 3.75 +-0.8466666666666667 3.75 +-0.8 3.75 +-0.7533333333333333 3.75 +-0.7066666666666667 3.75 +-0.66 3.75 +-0.6133333333333333 3.75 +-0.5666666666666667 3.75 +-0.52 3.75 +-0.47333333333333333 3.75 +-0.4266666666666667 3.75 +-0.38 3.75 +-0.3333333333333333 3.75 +-0.2866666666666667 3.75 +-0.24 3.75 +-0.19333333333333333 3.75 +-0.14666666666666667 3.75 +-0.1 3.75 +-0.05333333333333334 3.75 +-0.006666666666666667 3.75 +0.04 3.5884967714504596 +0.08666666666666667 3.5161571765402524 +0.13333333333333333 3.464190232451519 +0.18 3.4224495688886454 +0.22666666666666666 3.387173819483901 +0.2733333333333333 3.356498738860756 +0.32 3.329315155185325 +0.36666666666666664 3.304895726739733 +0.41333333333333333 3.2827562656896885 +0.46 3.2625210874034316 +0.5066666666666667 3.2439292428267987 +0.5533333333333333 3.2267593095552374 +0.6 3.210841560790761 +0.6466666666666666 3.1960402910720633 +0.6933333333333334 3.182242061289719 +0.74 3.1693514965689378 +0.7866666666666666 3.1572877155129047 +0.8333333333333334 3.145981394792367 +0.88 3.135372408569008 +0.9266666666666666 3.125407959036173 +0.9733333333333334 3.116041136708775 +1.02 3.1072336348853717 +1.0666666666666667 3.0989509982667216 +1.1133333333333333 3.091159359643217 +1.16 3.0838272042547525 +1.2066666666666668 3.076928765778158 +1.2533333333333334 3.0704454164504487 +1.3 3.064351640912103 +1.3466666666666667 3.0586246357567535 +1.3933333333333333 3.0532535896065527 +1.44 3.0482177598309406 +1.4866666666666666 3.04349906703321 +1.5333333333333334 3.03909067184574 +1.58 3.0349722487915085 +1.6266666666666667 3.0311358138267046 +1.6733333333333333 3.027570219467572 +1.72 3.024260259101416 +1.7666666666666666 3.02120341474548 +1.8133333333333332 3.018382229013153 +1.86 3.0157961837612244 +1.9066666666666667 3.01342967392651 +1.9533333333333334 3.011281530009862 +2.0 3.0093389592763917 +2.046666666666667 3.0075999194765015 +2.0933333333333333 3.006053681336377 +2.14 3.004698255074148 +2.1866666666666665 3.003523620245453 +2.2333333333333334 3.0025289698181106 +2.28 3.0017038275278742 +2.3266666666666667 3.001040714069598 +2.3733333333333335 3.0005374744623134 +2.42 3.000237933906916 +2.466666666666667 3.0000471614411293 +2.513333333333333 3.0 +2.56 3.0 +2.6066666666666665 3.0 +2.6533333333333333 3.0 +2.7 3.0 +2.7466666666666666 3.0 +2.7933333333333334 3.0 +2.84 3.0 +2.8866666666666667 3.0 +2.933333333333333 3.0 +2.98 3.0 +3.026666666666667 3.0 +3.0733333333333333 3.0 +3.12 3.0 +3.1666666666666665 3.0 +3.2133333333333334 3.0 +3.26 3.0 +3.3066666666666666 3.0 +3.3533333333333335 3.0 +3.4 3.0 +3.4466666666666668 3.0 +3.493333333333333 3.0 +3.54 3.0 +3.5866666666666664 3.0 +3.6333333333333333 3.0 +3.68 3.0 +3.7266666666666666 3.0 +3.7733333333333334 3.0 +3.82 3.0 +3.8666666666666667 3.0 +3.9133333333333336 3.0 +3.96 3.0 +4.006666666666667 3.0 +4.053333333333334 3.0 +4.1 3.0 +4.1466666666666665 3.0 +4.193333333333333 3.0 +4.24 3.0 +4.286666666666667 3.0 +4.333333333333333 3.0 +4.38 3.0 +4.426666666666667 3.0 +4.473333333333334 3.0 +4.52 3.0 +4.566666666666666 3.0 +4.613333333333333 3.0 +4.66 3.0 +4.706666666666667 3.0 +4.753333333333333 3.0 +4.8 3.0 +4.846666666666667 3.0 +4.8933333333333335 3.0 +4.94 3.0 +4.986666666666666 3.0 +5.033333333333333 3.0 +5.08 3.0 +5.126666666666667 3.0 +5.173333333333333 3.0 +5.22 3.0 +5.266666666666667 3.0 +5.3133333333333335 3.0 +5.36 3.0 +5.406666666666666 3.0 +5.453333333333333 3.0 +5.5 3.0 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/extracpkutta.jpeg b/v0.5.0/DuctAPE/theory_latex/figures/extracpkutta.jpeg new file mode 100644 index 00000000..ee063041 Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/extracpkutta.jpeg differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/flatbandgeometry.tikz b/v0.5.0/DuctAPE/theory_latex/figures/flatbandgeometry.tikz new file mode 100644 index 00000000..d5d90c6f --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/flatbandgeometry.tikz @@ -0,0 +1,52 @@ +\begin{tikzpicture} + \coordinate (O) at (0,0); + \coordinate (xo) at ($(O) + (160 : 0.5 and 2)$); + \coordinate (g) at ($(O) + (130 : 0.5 and 2)$); + \coordinate (x) at ($(O) + (4,2)$); + \coordinate (ez) at (2,0); + \coordinate (b1) at ($(O) -(0.2,0) + (263 : 0.5 and 1.9)$); + \coordinate (b2) at ($(O) +(0.2,0) + (263 : 0.5 and 2.1)$); + \coordinate (t1) at ($(O) -(0.2,0) + (97 : 0.5 and 1.9)$); + \coordinate (t2) at ($(O) +(0.2,0) + (97 : 0.5 and 2.1)$); + \coordinate (p1) at ($(O) -(0.2,0) + (160 : 0.5 and 1.9)$); + \coordinate (p2) at ($(O) +(0.2,0) + (160 : 0.5 and 2.1)$); + + %z-axis + \draw[] (-2,0) -- (-0.7,0); + \draw[,plotsgray] (-0.7,0) -- (-0.3,0); + \draw[-Stealth,] (-0.3,0) -- (ez); + \node[anchor=south west,outer sep=1] at (ez) {$\hat{\vect{e}}_z$}; + + %radial direction arrow + \draw[-Stealth, shorten >=2,plotsgray] (O) -- (xo); + \draw[ shorten >=10] (O) -- (xo)node[anchor=north west, shift={(0.25,-0.05)}]{$\hat{\vect{e}}_r$}; + + %vortex band + \draw[thick,secondary] (O) [partial ellipse =1:85:0.5 and 2]; + \draw[thick,secondary] (O) [partial ellipse =97:263:0.5 and 2]; + \draw[thick,secondary] (O) [partial ellipse =275:359:0.5 and 2]; + + \draw[thick,primary] ($(O)+(0.2,0)$) [partial ellipse =1:359:0.5 and 2.1]; + + \draw[thick,primary] ($(O)-(0.2,0)$) [partial ellipse =1:73:0.5 and 1.9]; + \draw[thick,primary] ($(O)-(0.2,0)$) [partial ellipse =97:263:0.5 and 1.9]; + \draw[thick,primary] ($(O)-(0.2,0)$) [partial ellipse =287:359:0.5 and 1.9]; + + \draw[primary, thick] (p1)--(p2); + \draw[thick,primary] (b1)--(b2); + \draw[thick,primary] (t1)--(t2); + + %x_o + \node[fill=secondary, minimum size=3pt, inner sep=0, outer sep=0] at (xo){}; + % \draw (xo)node[anchor=east, secondary, outer sep=4]{$\overline{\vect{p}}$}; + + \filldraw[primary] (p1) circle (0.035); + \filldraw[primary] (p2) circle (0.035); + + %tangential direction arrow + \draw[-Stealth,] (xo) -- (-0.6,-1)node[anchor=east]{$\hat{\vect{e}}_\theta$}; + + % Gamma circle + % \draw[-{Stealth[bend]}, tertiary, thick] (g) [partial ellipse = -55:220:0.35 and 0.25]node[anchor=south east,outer sep=1, tertiary]{$\gamma$}; + +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/flatpanelgeometry.tikz b/v0.5.0/DuctAPE/theory_latex/figures/flatpanelgeometry.tikz new file mode 100644 index 00000000..54b0aefe --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/flatpanelgeometry.tikz @@ -0,0 +1,45 @@ +\begin{tikzpicture}[scale=0.75] + + % Locations of p1 and p2 + \node[outer sep=0, inner sep=0] (p1) at(0,0){}; + \node[outer sep=0, inner sep=0] (p2) at(10:4){}; + + % Draw main line + \draw[primary, thick] (p1)node[anchor=north, primary]{$\vect{p}_j$} -- (p2)node[anchor=north, primary]{$\vect{p}_{j+1}$}; + + \draw[-Stealth, shorten >=2.5pt] (10:2)-- (p2) node[anchor=south, pos=0.5] {$\hat{\vect{t}}_j$}; + + + % Draw circles + \filldraw[outer sep=0, inner sep=0, primary] (p1) circle (3pt); + \filldraw[outer sep=0, inner sep=0, primary] (p2) circle (3pt); + + % Draw normal + \draw[-Stealth] (10:2) -- ++(100:2)node[anchor=west]{$\hat{\vect{n}}_j$}; + + % set location of pbar marker + \node[fill=secondary, minimum size=6pt, inner sep=0, outer sep=0] (p) at (10:2){}; + + % Draw arc + \draw[thick, -{Stealth[bend]}, tertiary] (p1) [partial ellipse = 120:360:0.85 and 0.85]; + \node[anchor=north, shift={(0.5,-0.7)}, tertiary] at (p1) {$\gamma_j$}; + + \draw[thick, -{Stealth[bend]}, tertiary] (p2) [partial ellipse = 220:460:1 and 1]; + \node[anchor=north, shift={(0.5,-0.7)}, tertiary] at (p2) {$\gamma_{j+1}$}; + + % label pbar + \draw (p)node[anchor=north, secondary, outer sep=3]{$\overline{\vect{p}_j}$}; + + + \coordinate (O) at (-0.5,1.75); + \coordinate (er) at ($(O) +(0,1)$); + \coordinate (ez) at ($(O) +(1,0)$); + \draw[-Stealth,] (O) -- (er); + \draw[-Stealth,] (O) -- (ez); + \draw[] (O) circle (3pt); + \filldraw[] (O) circle (1pt); + \node[anchor=north east,outer sep=0] at (O) {$\hat{\vect{e}}_\theta$}; + \node[anchor=west,outer sep=0] at (er) {$\hat{\vect{e}}_r$}; + \node[anchor=south,outer sep=0] at (ez) {$\hat{\vect{e}}_z$}; + +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/gen-vswirl-lines.jl b/v0.5.0/DuctAPE/theory_latex/figures/gen-vswirl-lines.jl new file mode 100644 index 00000000..c1418345 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/gen-vswirl-lines.jl @@ -0,0 +1,163 @@ +hc = [ + 0.0 0.0 + 0.000220493763 0.00327158696 + 0.000818265835 0.0062371837 + 0.00176513905 0.00907455198 + 0.00305903051 0.0118233347 + 0.00469737826 0.0144944247 + 0.00667320006 0.01708664 + 0.00898412429 0.0195938926 + 0.0116183488 0.0220112894 + 0.014565343 0.0243293047 + 0.0178080108 0.0265385918 + 0.0213311911 0.0286334325 + 0.0251127146 0.0306049269 + 0.0291345045 0.0324492492 + 0.0333757736 0.0341628119 + 0.0378172994 0.0357434638 + 0.042441953 0.0371914469 + 0.0472304933 0.0385068245 + 0.0521632098 0.0396893248 + 0.0572345369 0.0407429487 + 0.0624375977 0.0416737311 + 0.0677433684 0.0424805768 + 0.0731483325 0.0431673825 + 0.0786491632 0.0437394157 + 0.0842350498 0.044200331 + 0.0898977965 0.044553142 + 0.0956536308 0.0448064096 + 0.101440892 0.0449600294 + 0.107219525 0.0450017527 + 0.11342375 0.0449719056 + 0.120000005 0.0449555703 + 0.126668498 0.0449563377 + 0.133435443 0.0449485704 + 0.140258059 0.0449409299 + 0.147098973 0.04493507 + 0.153945565 0.0449282154 + 0.160799354 0.0449208207 + 0.167654142 0.0449139029 + 0.174511507 0.0449073091 + 0.181371018 0.0449007712 + 0.188229889 0.0448941104 + 0.195088565 0.0448872671 + 0.20194827 0.0448803529 + 0.208807036 0.0448735543 + 0.21566385 0.0448670611 + 0.22251825 0.0448606126 + 0.229360789 0.0448528677 + 0.236195073 0.0448435619 + 0.242983848 0.0448389612 + 0.249588013 0.0448331758 + 0.25564155 0.0447736457 + 0.26116699 0.0446058325 + 0.266400695 0.0443055779 + 0.271526247 0.0438646637 + 0.276578337 0.0432802737 + 0.281544089 0.0425501764 + 0.286387861 0.0416728891 + 0.291097105 0.040644031 + 0.295679897 0.0394582525 + 0.300161272 0.0381119996 + 0.304465979 0.0366399921 + 0.30637899 0.0359279998 +] + +using FLOWMath +x = range(0, 1, 500) + +scale = maximum(hc[:, 1]) + +hc1 = hc ./ scale +hc1[:, 2] ./= 1.5 +hc1finer = FLOWMath.akima(hc1[:, 1], hc1[:, 2], x) +hc1fine = [x hc1finer] + +hc5 = hc1fine .* 5.0 + +f = open("scaled_dfdc_hub_coordinates.dat", "w") +for (x, z) in zip(eachrow(hc5[:, 1]), eachrow(hc5[:, 2])) + write(f, "$(x[1]) $(z[1])\n") +end +write(f, "$(hc5[end,1]) 0.0\n") +close(f) + +using Plots +using DuctAPE +const dt = DuctAPE + +plot(hc5[:, 1], hc5[:, 2]; aspectratio=1, label="") + +b1 = findfirst(x -> x > 1.3, x * 5) +lower_wall = [hc5[b1:end, :]' [6.0; hc5[end, 2]]] +upper_wall = copy(lower_wall) +upper_wall[2, :] .= 5.0 + +rshift = sort([ + [0.0; 0.22; 0.44] .+ 0.04 + [0.0; 0.22; 0.44] .+ 0.04 * 2 +]) + +grid = similar(lower_wall, 2, size(lower_wall, 2), length(rshift) + 2) .= 0.0 +grid[1, :, 1:end] .= lower_wall[1, :] +grid[2, :, 1] = lower_wall[2, :] +grid[2, :, end] = upper_wall[2, :] +for (i, r) in enumerate(rshift) + grid[2, :, i + 1] = lower_wall[2, :] .+ r +end + +dt.relax_grid!(grid) +zs = grid[1, :, 1] +rs = grid[2, :, 2:(end - 1)] + +s = [0.0; 0.22; 0.44] .+ 0.04 +g = 2 +v1 = 1.35 +v2 = 1.42 +v3 = 2.0 +v4 = 2.05 +v5 = 2.5 + +for (i, r) in enumerate(eachcol(rs)) + if i%2==0 + b = findfirst(x -> x > 2.52, zs) + vi = [zs r][(b + g * i):end, :] + else + vi = [zs r][(1 + g * i):end, :] + end + vi = [[vi[1, 1] v1]; vi] + plot!(vi[:, 1], vi[:, 2]; label="", color=2) + + f = open("swirl-velocity-horseshoe$(i).dat", "w") + for (x, z) in zip(eachrow(vi[:, 1]), eachrow(vi[:, 2])) + write(f, "$(x[1]) $(z[1])\n") + end + close(f) + f = open("swirl-velocity-vert1$(i).dat", "w") + write(f, "$(vi[1,1]) $(v2)\n") + write(f, "$(vi[1,1]) $(v3)\n") + close(f) + f = open("swirl-velocity-vert2$(i).dat", "w") + write(f, "$(vi[1,1]) $(v4)\n") + write(f, "$(vi[1,1]) $(v5)\n") + close(f) + +end +plot!() + +#TODO: need to get another line matching the hub profile but futher up to be the dotted line showing the alingment of the contours to integrate over. need to chop it at the starting horseshoe, and then at the point you want to put the second contour, maybe at 4ish +s = [1.5 - maximum(hc5[:, 2])] +b1 = findfirst(x -> x > 1.05, x * 5) +b2 = findfirst(x -> x > 4.0, x * 5) +for i in 1 + vi = copy(hc5[b1:b2, :]) + vi[:, 2] .+= s[i] + plot!(vi[:, 1], vi[:, 2]; label="", color=4, linestyle=:dash) + f = open("swirl-velocity-radialpos.dat", "w") + for (x, z) in zip(eachrow(vi[:, 1]), eachrow(vi[:, 2])) + write(f, "$(x[1]) $(z[1])\n") + end + close(f) +end +plot!() + diff --git a/v0.5.0/DuctAPE/theory_latex/figures/gen_grid_csys.jl b/v0.5.0/DuctAPE/theory_latex/figures/gen_grid_csys.jl new file mode 100644 index 00000000..6d2239dc --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/gen_grid_csys.jl @@ -0,0 +1,198 @@ +using Splines +using FLOWMath +const fm = FLOWMath +using DuctAPE +const dt = DuctAPE +using Plots + +# generate hub coordinates +cbchord = 4 +Ncb = 101 + +# knot vector +knots3 = [0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0] +knotscb = [0.0, 0.0, 0.0, 0.0, 0.5, 1.0, 1.0, 1.0, 1.0] + +# control points +cb_cps = [ + [0.0, 0.0], [0.125, 0.5], [cbchord / 2, 0.75], [cbchord * 0.8, 0.25], [cbchord, 0.25] +] + +# spline +cb_spline = Splines.NURBS(3, knotscb, ones(length(cb_cps)), cb_cps) + +# - Get cb Points - # +u = range(0.0, 1.0; length=Ncb + 1) +n = length(cb_spline.ctrlpts) - 1 +Cw_cb = [[0.0; 0.0] for i in 1:length(u)] + +#loop through parametric points to get curve points +for i in 1:length(u) + Cw_cb[i] = Splines.curvepoint(cb_spline, u[i]) +end + +# - Respline the whole geometry to make things smooth - # +# assemble array +cb_xs = getindex.(Cw_cb, 1) +cb_rs = getindex.(Cw_cb, 2) + +# generate duct inner coordinates +duct_le_radius = 3.75 +duct_te_radius = 3.0 +chord = 2.5 +N = round(Int, Ncb * chord / cbchord) + +# - Define nacelle spline - # + +# control points +casing_cps = [ + [0.0, duct_le_radius], + [0.0, duct_le_radius - 0.25], + [chord / 9.0, duct_te_radius], + [chord, duct_te_radius], +] + +# spline +casing_spline = Splines.NURBS(3, knots3, ones(length(casing_cps)), casing_cps) + +# - Get casing Points - # +u = range(0.0, 1.0; length=N + 1) +n = length(casing_spline.ctrlpts) - 1 +Cw_casing = [[0.0; 0.0] for i in 1:length(u)] + +#loop through parametric points to get curve points +for i in 1:length(u) + Cw_casing[i] = Splines.curvepoint(casing_spline, u[i]) +end + +# - Respline the whole geometry to make things smooth - # +# assemble array +casing_xs = getindex.(Cw_casing, 1) +casing_rs = getindex.(Cw_casing, 2) + +# control points +nacelle_cps = [ + [0.0, duct_le_radius], + [0.0, duct_le_radius + 0.35], + [chord / 1.75, duct_te_radius + 0.25], + [chord, duct_te_radius], +] + +# spline +nacelle_spline = Splines.NURBS(3, knots3, ones(length(nacelle_cps)), nacelle_cps) + +# - Get nacelle Points - # +u = range(0.0, 1.0; length=N + 1) +n = length(nacelle_spline.ctrlpts) - 1 +Cw_nacelle = [[0.0; 0.0] for i in 1:length(u)] + +#loop through parametric points to get curve points +for i in 1:length(u) + Cw_nacelle[i] = Splines.curvepoint(nacelle_spline, u[i]) +end + +# - Respline the whole geometry to make things smooth - # +# assemble array +nacelle_xs = getindex.(Cw_nacelle, 1) +nacelle_rs = getindex.(Cw_nacelle, 2) + +# extend coordinates +Nex = 50 +lower_wall_x = [ + range(-1.5, 0.0, Nex) + cb_xs[2:(end - 1)] + range(cbchord, cbchord + 1.5, Nex) +] +lower_wall_r = [cb_rs[1] * ones(Nex); cb_rs[2:(end - 1)]; cb_rs[end] * ones(Nex)] +upper_wall_x = [ + range(-1.5, 0.0, Nex) + casing_xs[2:(end - 1)] + range(chord, cbchord + 1.5, Nex + Ncb - N) +] +upper_wall_r = [ + casing_rs[1] * ones(Nex) + casing_rs[2:(end - 1)] + casing_rs[end] * ones(Ncb - N + Nex) +] + +# initialize grid +nr = 101 +nx = 151 +grid = zeros(2, nx, nr) + +# interpolate coordinates +xglob = range(-1.5, cbchord + 1.5, nx) +lrs = fm.akima(lower_wall_x, lower_wall_r, xglob) +urs = fm.akima(upper_wall_x, upper_wall_r, xglob) +grid[1, :, :] .= xglob +grid[2, :, :] .= reduce(hcat, range(lrs, urs, nr)) +# grid[1, :, :] .= reduce(hcat, range(lower_wall_x, upper_wall_x, nr)) +# grid[2, :, :] .= reduce(hcat, range(lower_wall_r, upper_wall_r, nr)) + +# relax grid +dt.relax_grid!(grid; max_iterations=100, tol=1e-9, verbose=false) + +# save duct and centerbody geometry +f = open("grid-coord-hub.dat", "w") +for (x, r) in zip(cb_xs, cb_rs) + write(f, "$(x) $(r)\n") +end +write(f, "$(cb_xs[end]) 0.0") +close(f) + +f = open("grid-coord-duct.dat", "w") +for (x, r) in + zip([reverse(casing_xs); nacelle_xs[2:end]], [reverse(casing_rs); nacelle_rs[2:end]]) + write(f, "$(x) $(r)\n") +end +close(f) + +# save grid vertical lines +xixcoarse = grid[1, 1:20:end, :]' +xircoarse = grid[2, 1:20:end, :]' + +g = open("etaarrow.dat", "w") +for (i, (xix, xir)) in enumerate(zip(eachcol(xixcoarse), eachcol(xircoarse))) + f = open("xiline$(i).dat", "w") + for (x, r) in zip(xix, xir) + write(f, "$(x) $(r)\n") + if i == 2 && r >= etarcoarse[1,2] && r <= sum(etarcoarse[1, 3:4]) / 2.0 + write(g, "$(x) $(r)\n") + end + end + close(f) +end +close(g) + +# save grid horizontal lines +etaxcoarse = grid[1, :, 1:20:end] +etarcoarse = grid[2, :, 1:20:end] + +g = open("xiarrow.dat", "w") +for (i, (etax, etar)) in enumerate(zip(eachcol(etaxcoarse), eachcol(etarcoarse))) + f = open("etaline$(i).dat", "w") + for (x, r) in zip(etax, etar) + write(f, "$(x) $(r)\n") + if i == 2 && x >= xixcoarse[1, 2] && x <= sum(xixcoarse[1, 3:4]) / 2.0 + write(g, "$(x) $(r)\n") + end + end + close(f) +end +close(g) + +# save eta arrow coordinates + +# save xi arrow coordinates + +plot(cb_xs, cb_rs; aspectratio=1, label="") +plot!(nacelle_xs, nacelle_rs; label="") +plot!(casing_xs, casing_rs; label="") +plot!(lower_wall_x, lower_wall_r; label="") +plot!(upper_wall_x, upper_wall_r; label="") +# plot!(grid[1, :, :], grid[2, :, :]; color=1, label="") +# plot!(grid[1, :, :]', grid[2, :, :]'; color=2, label="") + +plot!(xixcoarse, xircoarse; linewidth=3, color=2, label="") + +plot!(etaxcoarse, etarcoarse; linewidth=3, color=1, label="") diff --git a/v0.5.0/DuctAPE/theory_latex/figures/grid-coord-duct.dat b/v0.5.0/DuctAPE/theory_latex/figures/grid-coord-duct.dat new file mode 100644 index 00000000..34856880 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/grid-coord-duct.dat @@ -0,0 +1,127 @@ +2.5 3.0 +2.395642952458271 3.0003749295132516 +2.294185359819021 3.001487720308582 +2.1955872296008345 3.0033203757693556 +2.0998085693223008 3.0058548992789356 +2.0068093865020042 3.0090732942206864 +1.9165496886585323 3.0129575639779724 +1.828989483310471 3.0174897119341564 +1.7440887779764072 3.022651741472603 +1.661807580174927 3.0284256559766765 +1.5821058974246176 3.03479345882974 +1.5049437372440646 3.0417371534151583 +1.4302811071518553 3.049238743116294 +1.3580780146665756 3.057280231316512 +1.288294467306813 3.065843621399177 +1.2208904725911527 3.0749109167476516 +1.155826038038182 3.0844641207452996 +1.0930611711664873 3.0944852367754865 +1.0325558794946552 3.1049562682215743 +0.9742701705412714 3.1158592184669285 +0.9181640518249237 3.1271760908949116 +0.8641975308641975 3.138888888888889 +0.8123306151776799 3.150979615832224 +0.7625233122839572 3.1634302751082792 +0.7147356297016161 3.1762228701004207 +0.6689275749492427 3.1893394041920122 +0.6250591555454241 3.202761880766416 +0.5830903790087463 3.216472303206997 +0.5429812528577962 3.2304526748971196 +0.5046917846111597 3.244684999220147 +0.46818198178742404 3.2591512795594424 +0.43341185190517506 3.273833519298372 +0.40034140248299993 3.288713721820298 +0.36893064103948453 3.3037738905085843 +0.33913957509321574 3.318996028746595 +0.31092821216278005 3.3343621399176957 +0.2842565597667639 3.3498542274052476 +0.25908462542375366 3.3654542945926167 +0.235372416652336 3.3811443448631664 +0.2130799409710974 3.396906381600259 +0.19216720589862443 3.412722408187261 +0.1725942189535034 3.428574428007535 +0.15432098765432095 3.4444444444444438 +0.13730751951966363 3.4603144608813543 +0.12151382206811787 3.4761664807016284 +0.10689990281827016 3.49198250728863 +0.09342576928870704 3.5077445440257224 +0.08105142899801504 3.5234345942962726 +0.06973688946478063 3.539034661483641 +0.05944215820759029 3.5545267489711927 +0.05012724274503058 3.569892860142293 +0.041752150595688 3.5851149983803046 +0.03427688927814904 3.6001751670685915 +0.027661466311000193 3.615055369590517 +0.021865889212827984 3.6297376093294456 +0.016850165502218913 3.6442038896687423 +0.012574302697759488 3.6584362139917697 +0.008998308318036208 3.6724165856818916 +0.006082189881635584 3.686127008122473 +0.0037859549071441235 3.6995494846968775 +0.0020696109131483277 3.7126660187884677 +0.0008931654182347052 3.725458613780609 +0.00021662594098976052 3.7379092730566654 +0.0 3.75 +0.0010726554836262207 3.765766835834863 +0.004262055876352388 3.7797628045927367 +0.009525352090949757 3.7920310981535468 +0.01681969504018959 3.8026149083972216 +0.02610223563684312 3.8115574272036854 +0.03733012479368164 3.818901846452867 +0.05046051342347639 3.8246913580246917 +0.0654505524389986 3.8289691537990858 +0.08225739275301955 3.831778425655976 +0.10083818527831052 3.83316236547529 +0.12115008092764276 3.833164165136955 +0.14315023061378745 3.831827016520894 +0.1667957852495159 3.8291941115070363 +0.1920438957475994 3.825308641975308 +0.21885171302080925 3.8202137998056367 +0.24717638798191655 3.813952776877947 +0.27697507154369255 3.806568765072166 +0.30820491461890875 3.798104956268222 +0.34082306812033625 3.788604542346039 +0.3747866829607462 3.778110715185545 +0.4100529100529099 3.766666666666666 +0.4465789003095989 3.7543155886693302 +0.4843218046435842 3.741100673073462 +0.5232387739676368 3.7270651117589892 +0.5632869591945285 3.7122520966058383 +0.6044235112370302 3.6967048194939354 +0.6466055810079134 3.680466472303207 +0.689790319419949 3.6635802469135803 +0.7339348773859086 3.6460893352049815 +0.7789964058185632 3.628036929057337 +0.8249320556306843 3.6094662203505736 +0.8716989777350428 3.590420400964619 +0.9192543230444106 3.570942662779397 +0.9675552424715581 3.5510761976748375 +1.0165588869292574 3.530864197530864 +1.0662224073302788 3.510349854227405 +1.1165029545873948 3.4895763596443867 +1.1673576796133753 3.4685869056617356 +1.2187437333209927 3.447424684159378 +1.2706182666230177 3.42613288701724 +1.3229384304322216 3.4047547061152503 +1.3756613756613756 3.3833333333333333 +1.4287442532232513 3.3619119605514163 +1.4821442140306194 3.340533779649426 +1.5358184089962517 3.3192419825072883 +1.589723989032919 3.2980797610049315 +1.6438181050533927 3.27709030702228 +1.698057907970444 3.2563168124392616 +1.752400548696845 3.2358024691358027 +1.8068031781453655 3.215590468991829 +1.8612229472287782 3.1957240038872694 +1.9156170068598533 3.1762462657020483 +1.9699425079513624 3.1572004463160925 +2.0241566014160766 3.13862973760933 +2.0782164381667676 3.1205773314616847 +2.1320791691162064 3.1030864197530867 +2.185701945177164 3.08620019436346 +2.2390419172624116 3.0699618471727317 +2.292056236284721 3.0544145700608283 +2.3447020531568636 3.0396015549076774 +2.3969365187916103 3.0255659935932044 +2.4487167841017317 3.0123510779973364 +2.5 3.0 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/grid-coord-hub.dat b/v0.5.0/DuctAPE/theory_latex/figures/grid-coord-hub.dat new file mode 100644 index 00000000..4f3eef0f --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/grid-coord-hub.dat @@ -0,0 +1,103 @@ +0.0 0.0 +0.008373912089767942 0.029263292960018478 +0.01861368667991199 0.05765305478690208 +0.030673608974464747 0.08517802079198215 +0.04450796417745881 0.11184692628659001 +0.060071037492926804 0.13766850658205707 +0.07731711412490136 0.16265149698971462 +0.09620047927741504 0.18680463282089407 +0.1166754181545005 0.21013664938692678 +0.13869621596019024 0.2326562819991439 +0.162217157898517 0.254372265968877 +0.1871925291735134 0.2752933366074575 +0.21357661498921188 0.2954282292262164 +0.24132370054964522 0.31478567913648536 +0.27038807105884594 0.33337442164959563 +0.3007240117208466 0.3512031920768785 +0.33228580773968 0.3682807257296654 +0.36502774431937857 0.3846157579192877 +0.3989041066639748 0.40021702395707653 +0.43386917997750163 0.4150932591543636 +0.4698772494639917 0.4292531988224801 +0.5068826003274771 0.4427055782727572 +0.5448395177719908 0.45545913281652634 +0.5837022870015656 0.4675225977651191 +0.6234251932202337 0.4789047084298666 +0.6639625216320278 0.4896142001221002 +0.7052685574409808 0.49965980815315136 +0.7472975858511252 0.5090502678343514 +0.7900038920664934 0.5177943144770315 +0.8333417612911177 0.5259006833925232 +0.8772654787290315 0.5333781098921576 +0.9217293295842671 0.5402353292872665 +0.9666875990608571 0.5464810768891809 +1.0120945723628338 0.5521240880092323 +1.0579045346942304 0.5571730979587519 +1.1040717712590786 0.5616368420490712 +1.1505505672614118 0.5655240555915213 +1.1972952079052628 0.5688434738974338 +1.2442599783946633 0.57160383227814 +1.2913991639336466 0.5738138660449714 +1.3386670497262452 0.5754823105092589 +1.3860179209764913 0.5766179009823342 +1.4334060628884178 0.5772293727755287 +1.4807857606660575 0.5773254612001735 +1.5281112995134432 0.5769149015676003 +1.575336964634607 0.5760064291891399 +1.6224170412335814 0.5746087793761241 +1.669305814514399 0.5727306874398841 +1.7159575696810931 0.5703808886917513 +1.7623265919376956 0.567568118443057 +1.8083671664882397 0.5643011120051326 +1.854034888833457 0.5605888473368461 +1.8993154912981742 0.5564458832904171 +1.9442248430313087 0.5518923596114146 +1.988780123478479 0.5469486586929451 +2.0329985120853036 0.5416351629281153 +2.0768971882974006 0.5359722547100313 +2.1204933315603887 0.5299803164318001 +2.163804121319886 0.5236797304865277 +2.206846737021511 0.517090879267321 +2.249638358110882 0.5102341451672862 +2.2921961640336175 0.5031299105795298 +2.3345373342353355 0.4957985578971583 +2.376679048161654 0.4882604695132781 +2.418638485258192 0.48053602782099597 +2.460432824970567 0.47264561521341825 +2.5020792467443984 0.4646096140836513 +2.5435949300253036 0.4564484068248017 +2.584997054258902 0.44818237582997583 +2.62630279889081 0.4398319034922804 +2.6675293433666476 0.4314173722048217 +2.708693867132032 0.42295916436070624 +2.749813549632583 0.41447766235304057 +2.790905570313918 0.4059932485749311 +2.831987108621655 0.3975263054194842 +2.8730753440014136 0.3890972152798066 +2.9141874558988103 0.3807263605490046 +2.955340623759464 0.3724341236201848 +2.9965520270289945 0.3642408868864535 +3.037838845153019 0.35616703274091743 +3.0792182575771547 0.34823294357668294 +3.1207074437470217 0.3404590017868564 +3.162323583108238 0.33286558976454445 +3.20408385510642 0.3254730899028536 +3.246005439187189 0.3183018845948903 +3.2881055147961615 0.3113723562337608 +3.3304012613789564 0.3047048872125719 +3.3729098583811914 0.29831985992442983 +3.4156484852484854 0.2922376567624413 +3.458634321426457 0.28647866011971257 +3.5018845463607238 0.2810632523893503 +3.5454163394969047 0.2760118159644609 +3.5892468802806174 0.2713447332381508 +3.6333933481574805 0.2670823866035265 +3.677872922573112 0.26324515845369456 +3.7227027829731307 0.25985343118176146 +3.767900108803156 0.2569275871808336 +3.8134820795088036 0.25448800884401745 +3.859465874535694 0.25255507856441956 +3.9058686733294445 0.25114917873514636 +3.952707655335674 0.25029069174930435 +4.0 0.25 +4.0 0.0 \ No newline at end of file diff --git a/v0.5.0/DuctAPE/theory_latex/figures/grid_generation_figures.jl b/v0.5.0/DuctAPE/theory_latex/figures/grid_generation_figures.jl new file mode 100644 index 00000000..37374f28 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/grid_generation_figures.jl @@ -0,0 +1,116 @@ +#= +Figures for Duct Grid Generation section of dissertation +=# + +include("../../plots_default.jl") + +using FLOWFoil +using DuctTAPE + +# Get duct wall geometry +xwall, ywall = naca4(4, 4, 20) +wallcoords = [xwall -ywall] +wallangle = 10.0 +walllocation = [0.0; 0.75] +FLOWFoil.position_coordinates(wallcoords, 1.0, wallangle, walllocation) +wallx = wallcoords[:, 1] +wallr = wallcoords[:, 2] + +# Get Duct Hub Geometry +_, hubxcoordinates, _, hubrcoordinates = naca4(2, 4, 20; split=true) +hubcoordinates = [hubxcoordinates hubrcoordinates] +position_coordinates(hubcoordinates, 0.67, 0.0, [0.25; 0.0]) +hubx = hubcoordinates[:, 1] +hubr = hubcoordinates[:, 2] + +# Get Boundaries +xinlet = -0.5 * maximum(wallx) +xoutlet = 2.0 * maximum(wallx) +rmax = 1.5 * maximum(wallr) + +#set up plot axis +p = plot(; size=(500, 300), ticks=false, showaxis=false, aspect_ratio=:equal) +#plot wall +plot!(wallx, wallr) +annotate!(0.5, 0.825, text("Duct Wall", 8; color=mycolors[1])) +#plot hub +plot!(hubx, hubr) +plot!(hubx, zeros(length(hubx)); linestyle=:dot, linecolor=2) +annotate!(0.5, 0.15, text("Hub", 8; color=mycolors[2])) +#plot inlet bound +plot!([xinlet; xinlet], [0.0; rmax]; linestyle=:dash, linecolor=3) +annotate!(xinlet + 0.01, rmax / 2.0, text("Inlet", 8, :left; color=mycolors[3])) +#plot outlet bound +plot!([xoutlet; xoutlet], [0.0; rmax]; linestyle=:dash, linecolor=3) +annotate!(xoutlet - 0.01, rmax / 2.0, text("Outlet", 8, :right; color=mycolors[3])) +#plot rmax bound +plot!([xinlet; xoutlet], [rmax; rmax]; linestyle=:dash, linecolor=3) +annotate!( + xoutlet * 3 / 4, + rmax - 0.1, + text("Maximum Radial Boundary", 8, :right; color=mycolors[3]), +) +#plot centerline bounds +plot!([xinlet; minimum(hubx)], [0.0; 0.0]; linestyle=:dash, linecolor=3) +plot!([maximum(hubx); xoutlet], [0.0; 0.0]; linestyle=:dash, linecolor=3) +annotate!(xoutlet * 7 / 8, 0.1, text("Axis of Rotation", 8, :right; color=mycolors[3])) + +savetightplot(p, "ductboundaries.tikz") + +# function plot_test_grid( +# wallloc=0.0, wallscale=1.0, hubloc=0.0, hubscale=1.0, filename="testgrid.pdf" +# ) +# # --- WALL GEOMETRY DEFINITION +# xwall, ywall = naca4(4, 4, 20) +# wallcoords = [xwall -ywall] +# wallangle = 8.0 +# walllocation = [wallloc; 0.75] +# FLOWFoil.position_coordinates(wallcoords, wallscale, wallangle, walllocation) +# wallx = wallcoords[:, 1] +# wallr = wallcoords[:, 2] +# outerwallx, innerwallx, outerwallr, innerwallr = DuctTAPE.split_wall(wallx, wallr) + +# # --- HUB GEOMETRY DEFINITION + +# _, hubxcoordinates, _, hubrcoordinates = naca4(2, 4, 10; split=true) +# hubcoordinates = [hubxcoordinates hubrcoordinates] +# position_coordinates(hubcoordinates, hubscale, 0.0, [hubloc; 0.0]) +# hubx = hubcoordinates[:, 1] +# hubr = hubcoordinates[:, 2] + +# # --- GRID POINTS DEFINITION +# rotors = [] +# grid_options = DuctTAPE.GridOptions(15, 35, 35, 35) +# duct = DuctTAPE.Duct( +# innerwallx, +# innerwallr, +# outerwallx, +# outerwallr, +# hubcoordinates[:, 1], +# hubcoordinates[:, 2], +# ) + +# x_grid_points, r_grid_points = DuctTAPE.generate_grid_points( +# duct, rotors, grid_options; debug=false +# ) + +# # PLOTTING +# figure(1; figsize=(10, 3)) +# clf() + +# plot(innerwallx, innerwallr, "C0"; linewidth=2, label="inner duct wall", zorder=2) +# plot(outerwallx, outerwallr, "--C0"; linewidth=2, label="outer duct wall") + +# plot(hubx, hubr, "C1"; linewidth=2, label="hub", zorder=2) + +# plot(x_grid_points, r_grid_points, "C2"; zorder=1) +# plot(x_grid_points', r_grid_points', "C2"; zorder=1) + +# axis("equal") + +# legend(; loc=1) + +# savefig(filename; bbox_inches="tight") + +# return nothing +# end diff --git a/v0.5.0/DuctAPE/theory_latex/figures/gridcoordinates.png b/v0.5.0/DuctAPE/theory_latex/figures/gridcoordinates.png new file mode 100644 index 00000000..69640e68 Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/gridcoordinates.png differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/gridcoordinates_clean.png b/v0.5.0/DuctAPE/theory_latex/figures/gridcoordinates_clean.png new file mode 100644 index 00000000..47e5d125 Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/gridcoordinates_clean.png differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/hdim.dat b/v0.5.0/DuctAPE/theory_latex/figures/hdim.dat new file mode 100644 index 00000000..514383ae --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/hdim.dat @@ -0,0 +1,20 @@ +1.0 0.0 +1.0272773931945554 0.04865519895527468 +1.1083655165987307 0.16863497993569868 +1.2410524975870219 0.30770148550564885 +1.4217189812072129 0.4226464744858838 +1.6454368567485178 0.48866481391454125 +1.9061036837551462 0.5 +2.196609150694061 0.5 +2.5090290257184016 0.5 +2.834841309055335 0.49641937007986914 +3.1651586909446645 0.4783656394935604 +3.490970974281598 0.44416736913091004 +3.8033908493059387 0.39419747975527936 +4.093896316244854 0.3306886949978892 +4.3545631432514815 0.25793523983299577 +4.5782810187927865 0.18211157644815124 +4.758947502412978 0.110816724020161 +4.891634483401269 0.05217029119150036 +4.972722606805444 0.01350276078908958 +5.0 -1.4013313079375145e-17 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/hub-coordinates-80-panels.dat b/v0.5.0/DuctAPE/theory_latex/figures/hub-coordinates-80-panels.dat new file mode 100644 index 00000000..59557997 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/hub-coordinates-80-panels.dat @@ -0,0 +1,81 @@ +0.0 1.959434878635765e-17 +0.0005269999872914538 0.012990719705626826 +0.002107187353383049 0.025946610216713 +0.004738125563890583 0.03868582925596543 +0.008415757902787625 0.051233368527963744 +0.013134413727567806 0.0635043970814808 +0.018886817212964212 0.07542529030282469 +0.025664098569744866 0.08692119189979677 +0.03345580772128485 0.09791533004652807 +0.042249930416826724 0.10832825092199364 +0.05203290675658483 0.11807783305375455 +0.06278965210012738 0.1270781729528536 +0.07450358032579923 0.13523645180504276 +0.08715662940531875 0.1424521426123305 +0.10072928925411667 0.1486146330598406 +0.11520063181447217 0.15360002703257636 +0.1305483433250609 0.15726685182909014 +0.14674875872715798 0.15945086598137959 +0.16377689815444285 0.16 +0.18160650545014276 0.16 +0.20021008865212353 0.16 +0.2195589623835023 0.16 +0.23962329208341956 0.16 +0.2603721400097699 0.16 +0.28177351294295705 0.16 +0.3037944115171206 0.16 +0.32640088110276594 0.16 +0.3495580641623414 0.16 +0.37323025399803533 0.16 +0.3973809498089156 0.16 +0.42197291297251915 0.16 +0.4469682244641089 0.16 +0.4723283433250609 0.16 +0.49801416609022975 0.16 +0.5239860870826571 0.16 +0.5502040594826553 0.16 +0.5766276570770997 0.16 +0.6032161365937204 0.16 +0.6299285005242742 0.16 +0.656723560339731 0.16 +0.6835599999999998 0.16 +0.7103964396602687 0.16 +0.7371914994757256 0.16 +0.7639038634062794 0.15994198456969833 +0.7904923429228999 0.1525012569029024 +0.8169159405173445 0.14551298328197454 +0.8431339129173425 0.13857909154894119 +0.8691058339097703 0.131710273262276 +0.894791656674939 0.12491711964191528 +0.9201517755358909 0.11821010523836395 +0.9451470870274806 0.1115995717816981 +0.9697390501910842 0.10509571223536704 +0.9938897460019644 0.09870855507938198 +1.0175619358376586 0.09244794884712702 +1.0407191188972338 0.08632354693963469 +1.0633255884828792 0.08034479274074065 +1.0853464870570426 0.07452090505607092 +1.1067478599902298 0.06886086389831148 +1.12749670791658 0.06337339664067958 +1.1475610376164973 0.058066964559946914 +1.1669099113478762 0.05294974978976409 +1.185513494549857 0.048029642704403706 +1.2033431018455572 0.0433142297523749 +1.2203712412728418 0.03881078175866971 +1.236571656674939 0.034526242713677956 +1.2519193681855274 0.03046721906605757 +1.2663907107458832 0.02663996953606907 +1.279963370594681 0.023050395465083313 +1.2926164196742005 0.019704031716140127 +1.3043303478998725 0.016606038139591103 +1.315087093243415 0.013761191616984322 +1.3248700695831732 0.011173878695458972 +1.3336641922787151 0.00884808882400793 +1.341455901430255 0.006787408202036325 +1.3482331827870357 0.004995014249702062 +1.3539855862724322 0.0034736707085643967 +1.3587042420972122 0.0022257233800945706 +1.3623818744361094 0.0012530965086200634 +1.365012812646617 0.0005572898142793036 +1.3665930000127084 0.00013937618056187722 +1.36712 1.1453475307040285e-18 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/hub-grid-refinement.tikz b/v0.5.0/DuctAPE/theory_latex/figures/hub-grid-refinement.tikz new file mode 100644 index 00000000..4a708a32 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/hub-grid-refinement.tikz @@ -0,0 +1,54 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={71.2mm}, height={57.15mm}, scaled x ticks={false}, xlabel={Number of Panels}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmode={log}, log basis x={10}, xmajorgrids={false}, xmin={18.35434345664681}, xmax={381.38111649343875}, xticklabels={{$10^{1.5}$,$10^{1.8}$,$10^{2.1}$,$10^{2.4}$}}, xtick={{31.62277660168381,63.095734448019364,125.89254117941688,251.18864315095823}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$\sum_{i=1}^N \left[c_{p_i} \Delta s_i\right]$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={-0.0422470086301524}, ymax={-0.012908645815785965}, yticklabels={{$-0.040$,$-0.035$,$-0.030$,$-0.025$,$-0.020$,$-0.015$}}, ytick={{-0.04,-0.035,-0.03,-0.025,-0.02,-0.015}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, name path={d0d22537-d0b5-4ac4-881c-1a2b0c6dc546}, draw opacity={1.0}, line width={1.0}, dotted, mark={square*}, mark size={2.25 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.3608;blue,0.6706}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 20.0 -0.013738976838834072 \\ + 25.0 -0.019863048293633737 \\ + 30.0 -0.023131875783828873 \\ + 35.0 -0.025949651757459884 \\ + 40.0 -0.02860009409324626 \\ + 45.0 -0.02986076351023789 \\ + 50.0 -0.030803409933155695 \\ + 80.0 -0.03533212908762764 \\ + 100.0 -0.036860353366413426 \\ + 150.0 -0.03896052773111153 \\ + 200.0 -0.04003567100075188 \\ + 250.0 -0.04067619123892557 \\ + 300.0 -0.0411097130131739 \\ + 350.0 -0.04141667760710429 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={cef2231a-2cf5-4309-a22b-c7e6cc757f07}, only marks, draw opacity={1.0}, line width={0}, solid, mark={square*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 80.0 -0.03533212908762764 \\ + } + ; + \node[right, above, color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{10 pt}{13.0 pt}\selectfont}}] at (axis cs:121,-0.03533212908762764) {80 panels}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/hub-velocity-comp-80-panels.tikz b/v0.5.0/DuctAPE/theory_latex/figures/hub-velocity-comp-80-panels.tikz new file mode 100644 index 00000000..d757f265 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/hub-velocity-comp-80-panels.tikz @@ -0,0 +1,164 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={71.2mm}, height={57.15mm}, scaled x ticks={false}, xlabel={x}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.04100569500019069}, xmax={1.4078621950065449}, xticklabels={{$0.00$,$0.25$,$0.50$,$0.75$,$1.00$,$1.25$}}, xtick={{0.0,0.25,0.5,0.75,1.0,1.25}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$\frac{V_s}{V_\infty}$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={0.020839692832197776}, ymax={1.362691454954613}, yticklabels={{$0.25$,$0.50$,$0.75$,$1.00$,$1.25$}}, ytick={{0.25,0.5,0.75,1.0,1.25}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, name path={8405fa10-aa72-4c5a-8e72-e303475ffc28}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.1804;blue,0.3647}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}] + table[row sep={\\}] + { + \\ + 0.0 0.161290322580645 \\ + 0.0084880636604775 0.4430107526881719 \\ + 0.020159151193634 0.6989247311827955 \\ + 0.0371352785145889 0.918279569892473 \\ + 0.0583554376657825 1.101075268817204 \\ + 0.0859416445623342 1.2494623655913977 \\ + 0.1061007957559682 1.3053763440860213 \\ + 0.1326259946949602 1.3161290322580643 \\ + 0.1464190981432361 1.2709677419354837 \\ + 0.1856763925729443 1.1892473118279567 \\ + 0.2090185676392573 1.0924731182795697 \\ + 0.2344827586206897 1.0752688172043008 \\ + 0.3087533156498673 1.0516129032258061 \\ + 0.3851458885941644 1.0365591397849458 \\ + 0.4594164456233422 1.0193548387096771 \\ + 0.5347480106100796 1.0365591397849458 \\ + 0.6079575596816975 1.0430107526881718 \\ + 0.6843501326259946 1.0666666666666664 \\ + 0.7098143236074269 1.0774193548387094 \\ + 0.7352785145888593 1.0989247311827954 \\ + 0.7851458885941643 1.2236559139784944 \\ + 0.8095490716180371 1.1677419354838707 \\ + 0.8307692307692307 1.0967741935483868 \\ + 0.8572944297082229 1.0494623655913977 \\ + 0.8816976127320953 1.0451612903225804 \\ + 0.906100795755968 1.0150537634408598 \\ + 0.9305039787798407 1.0021505376344084 \\ + 0.9549071618037134 0.9913978494623654 \\ + 0.9782493368700264 0.9870967741935482 \\ + 1.002652519893899 0.9763440860215051 \\ + 1.0281167108753313 0.9655913978494621 \\ + 1.0525198938992042 0.9526881720430106 \\ + 1.0748010610079572 0.9483870967741933 \\ + 1.1002652519893896 0.9569892473118278 \\ + 1.122546419098143 0.9376344086021503 \\ + 1.1490716180371352 0.9290322580645158 \\ + 1.1734748010610077 0.9268817204301073 \\ + 1.1968169761273206 0.9268817204301073 \\ + 1.2137931034482756 0.9268817204301073 \\ + 1.2403183023872677 0.9204301075268815 \\ + 1.262599469496021 0.9139784946236558 \\ + 1.282758620689655 0.9161290322580643 \\ + 1.3039787798408484 0.9075268817204298 \\ + 1.3230769230769228 0.9053763440860213 \\ + } + ; + \addlegendentry {experimental} + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={6d4e87b1-fb51-48da-856b-900b5039a235}, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.0002634999936457269 0.058816629496039746 \\ + 0.0013170936703372513 0.17643199239131901 \\ + 0.0034226564586368156 0.29291626249767244 \\ + 0.006576941733339104 0.4072220431741885 \\ + 0.010775085815177715 0.5191616460136923 \\ + 0.01601061547026601 0.6278845054929989 \\ + 0.022275457891354537 0.7326145502508024 \\ + 0.029559953145514857 0.8325294186065402 \\ + 0.037852869069055786 0.9267387902331958 \\ + 0.04714141858670578 1.0142765865348498 \\ + 0.05741127942835611 1.0941269444630461 \\ + 0.06864661621296331 1.1651327551334862 \\ + 0.080830104865559 1.2258745017029793 \\ + 0.09394295932971772 1.274565593897528 \\ + 0.10796496053429441 1.3087636737276351 \\ + 0.12287448756976654 1.3247145182907711 \\ + 0.13864855102610946 1.3155707955308302 \\ + 0.15526282844080042 1.2584683233236018 \\ + 0.17269170180229282 1.1824326112789698 \\ + 0.19090829705113316 1.1356117370926746 \\ + 0.20988452551781292 1.1100270373661285 \\ + 0.22959112723346092 1.092501008066609 \\ + 0.2499977160465947 1.0797470359628467 \\ + 0.27107282647636344 1.070108823437581 \\ + 0.29278396223003883 1.0626660345683479 \\ + 0.3150976463099433 1.056854009922922 \\ + 0.3379794726325537 1.0523061838025045 \\ + 0.36139415908018835 1.0487764312393852 \\ + 0.38530560190347546 1.0460975440375773 \\ + 0.40967693139071737 1.0441578745635047 \\ + 0.434470568718314 1.0428881443371667 \\ + 0.4596482838945849 1.0422546726075286 \\ + 0.4851712547076453 1.0422574125006876 \\ + 0.5110001265864434 1.0429325469864374 \\ + 0.5370950732826563 1.0443607033087985 \\ + 0.5634158582798775 1.046683757393581 \\ + 0.5899218968354101 1.0501369676731627 \\ + 0.6165723185589973 1.0551118951751977 \\ + 0.6433260304320025 1.0622893001339881 \\ + 0.6701417801698655 1.0729469786372192 \\ + 0.6969782198301342 1.089948204477694 \\ + 0.7237939695679971 1.1195350815454743 \\ + 0.7505476814410025 1.2230590444660994 \\ + 0.7771981031645896 1.203882210151213 \\ + 0.8037041417201223 1.0852311737327047 \\ + 0.8300249267173435 1.051634450551496 \\ + 0.8561198734135564 1.0274595799177124 \\ + 0.8819487452923547 1.009823160281265 \\ + 0.9074717161054149 0.9959136304952534 \\ + 0.9326494312816858 0.9844280593386574 \\ + 0.9574430686092824 0.9746212056937076 \\ + 0.9818143980965244 0.9660323321432733 \\ + 1.0057258409198115 0.958356878223789 \\ + 1.029140527367446 0.9513828967988331 \\ + 1.0520223536900564 0.9449565374903137 \\ + 1.074336037769961 0.9389620225562886 \\ + 1.0960471735236363 0.933309373967807 \\ + 1.117122283953405 0.9279265307156928 \\ + 1.1375288727665387 0.9227540682895766 \\ + 1.1572354744821869 0.9177415153496337 \\ + 1.1762117029488666 0.9128446738041063 \\ + 1.1944282981977072 0.9080235736995057 \\ + 1.2118571715591995 0.9032408207438343 \\ + 1.2284714489738904 0.8984601651001995 \\ + 1.2442455124302332 0.8936451566567908 \\ + 1.2591550394657052 0.8887577645792228 \\ + 1.273177040670282 0.8837568304732393 \\ + 1.2862898951344408 0.8785961922205331 \\ + 1.2984733837870364 0.8732222490757061 \\ + 1.3097087205716438 0.8675706156026324 \\ + 1.3199785814132943 0.8615612858154194 \\ + 1.329267130930944 0.8550913009152714 \\ + 1.337560046854485 0.8480230647709186 \\ + 1.3448445421086452 0.8401646491256162 \\ + 1.351109384529734 0.8312343739379868 \\ + 1.356344914184822 0.8207898911869791 \\ + 1.3605430582666607 0.8080991520244358 \\ + 1.363697343541363 0.7910052016711433 \\ + 1.3658029063296628 0.7779623134292143 \\ + 1.3668565000063542 0.684702875620386 \\ + } + ; + \addlegendentry {DuctAPE} +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/hubshrink-verification.tikz b/v0.5.0/DuctAPE/theory_latex/figures/hubshrink-verification.tikz new file mode 100644 index 00000000..a8707736 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/hubshrink-verification.tikz @@ -0,0 +1,17 @@ +\begin{tikzpicture}[scale=2] + %Airfoil +\definecolor{tempcolor}{rgb}{0.7529411764705882,0.3254901960784314,0.403921568627451}; + \draw[thick,tempcolor] plot[smooth] file{figures/shrinkhub-coordinates-scale-3.0.dat}; + \definecolor{tempcolor}{rgb}{0.6137254901960785,0.24411764705882352,0.32745098039215687}; + \draw[thick,tempcolor] plot[smooth] file{figures/shrinkhub-coordinates-scale-2.275.dat}; + \definecolor{tempcolor}{rgb}{0.4745098039215686,0.1627450980392157,0.25098039215686274}; + \draw[thick,tempcolor] plot[smooth] file{figures/shrinkhub-coordinates-scale-1.55.dat}; + \definecolor{tempcolor}{rgb}{0.3352941176470588,0.08137254901960785,0.17450980392156862}; + \draw[thick,tempcolor] plot[smooth] file{figures/shrinkhub-coordinates-scale-0.825.dat}; + \definecolor{tempcolor}{rgb}{0.19607843137254902,0.0,0.09803921568627451}; + \draw[thick,tempcolor] plot[smooth] file{figures/shrinkhub-coordinates-scale-0.1.dat}; + + \draw[ultra thick,primary] plot[smooth] file{figures/isolated_duct_coordinates.dat}; + \draw[dash pattern=on 6pt off 2pt on 1pt off 2pt on 2.5cm] (-0.2,0) -- (0.65,0); + \draw[dash pattern=on 6pt off 2pt on 1pt off 2pt on 2.5cm ] (1.5,0) -- (0.65,0); +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/integration-split-margin.tikz b/v0.5.0/DuctAPE/theory_latex/figures/integration-split-margin.tikz new file mode 100644 index 00000000..9ef5db95 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/integration-split-margin.tikz @@ -0,0 +1,54 @@ +\begin{tikzpicture}[scale=1] + + % Locations of p1 and p2 + \coordinate (p1) at (0,0); + \coordinate (p2) at (2.5,0); + + \coordinate (p1p) at ($(p1) + (0,0.5)$); + \coordinate (p2p) at ($(p2) + (0,0.75)$); + + \coordinate (p1x) at ($(p1) + (0,1.0)$); + \coordinate (p2x) at ($(p2) + (0,1.0)$); + + \coordinate (p12) at (0.75,0); + \coordinate (p12x) at ($(p12) + (0,1.0)$); + + + % Draw arc + \draw[thick, -{Stealth[bend]}, secondary] (p1) [partial ellipse = 20:340:0.25 and 0.25]; + \node[left, secondary, shift={(-0.25,0)}] at (p1) {$\gamma_j$}; + \node[below, primary, shift={(0,-0.3)}] at (p1) {0}; + + \draw[thick, -{Stealth[bend]}, secondary] (p2) [partial ellipse = 200:520:0.35 and 0.35]; + \node[right, secondary, shift={(0.4,0)}] at (p2) {$\gamma_{j+1}$}; + \node[below, primary, shift={(0,-0.3)}] at (p2) {1}; + + \draw[fill opacity = 0.1, fill=secondary, secondary] (p1) -- (p1p) -- (p2p) -- (p2); + + % label pbar + % \draw (p)node[anchor=north, primary, outer sep=3]{$\overline{\vect{p}_j}$}; + + \draw[primary, |-] (p1x) -- (p12x) node[above, pos=0.5]{\(\xi_k\)}; + \draw[primary, |-|] (p12x) -- (p2x) node[above, pos=0.5]{\(1-\xi_k\)}; + + % Draw main line + \draw[thick] (p1) -- (p2); + + % Draw circles + \filldraw[] (p1) circle (1pt); + \filldraw[] (p2) circle (1pt); + % \filldraw[primary] (p12) circle (1.5pt) node[below,primary,shift={(0.5,0)}, style={font=\tiny}]{\(w_k f(s(\xi_k))\)}; + \node[below,primary,shift={(0.5,0)}, style={font=\tiny}] at (p12) {\(w_k f(s(\xi_k))\)}; + \node[primary, style={font=\tiny}] at (p12){\(\blacklozenge\)}; + + + \draw [ + decoration={ + brace, + mirror, + }, + decorate + ] ($(p1)-(0,0.8)$) -- ($(p2)-(0,0.8)$) + node [pos=0.5,below] {\(\Delta s\)}; + +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/integrationsplitmargin.jpeg b/v0.5.0/DuctAPE/theory_latex/figures/integrationsplitmargin.jpeg new file mode 100644 index 00000000..38b6762f Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/integrationsplitmargin.jpeg differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/internal-controlpoint-placement.tikz b/v0.5.0/DuctAPE/theory_latex/figures/internal-controlpoint-placement.tikz new file mode 100644 index 00000000..dc46f97e --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/internal-controlpoint-placement.tikz @@ -0,0 +1,35 @@ +\begin{tikzpicture} + +\coordinate (tem) at (0,0); +\coordinate (te1) at (250:0.5); +\coordinate (te2) at (70:0.5); + +% te gap line +\draw[densely dotted] (te1) -- (te2)node[pos=0.5, anchor=west,shift={(0.0,0.2)}]{\((\overline{z},\overline{r})_{TE}\)}; + +% bottom line +\draw[] (te1) -- (190:5); +\draw[|-|, secondary] ($(te1)+(270:0.2)$) -- ($(190:5)+(270:0.2)$)node[pos=0.5, secondary, anchor=north] {\(\Delta s_1\)}; + +% middle line +\draw[tertiary, dashed] (tem) -- (170:4.5); +\draw[|-|, primary] ($(tem)+(80:-0.2)$) -- ($(170:1)+(80:-0.2)$); +\draw[primary, line width=0.2pt] (-0.5,-0.1) to [out =270, in =90] (1,-0.5)node[anchor=north,shift={(0,0)}, primary] {\(\epsilon \overline{\Delta s}_{TE}\)}; +\draw[tertiary] ($(tem)+(170:4.3155)$) -- (-4.25,0.35)node[pos=0.5,anchor=east,tertiary]{\(r_\text{diff}\)}; +\draw[tertiary] (-4.25,0.35) -- (-2.1,0.35)node[pos=0.5, anchor=north, shift={(0,0)}, tertiary]{\(z_\text{diff}\)}; +% \draw[thick, tertiary] (tem) [partial ellipse = 170:180:2.25 and 2.25]; + +% upper line +\draw[] (te2) -- (150:4); +\draw[|-|, secondary] ($(te2)+(70:0.2)$) -- ($(150:4)+(70:0.2)$)node[pos=0.5, secondary, anchor=south, shift={(0.1,0)}] {\(\Delta s_N\)}; + +% te gap midpoint +% \node[fill=black, minimum size=2pt] (tem) {}; +\filldraw[] (tem) circle (2pt); + +% internal control point +% \filldraw[outer sep=0, inner sep=0, primary] (170:1) circle (3pt); +\node[fill=primary, minimum size=4pt, inner sep=2pt] (itcp) at (170:1) {}; +\node[anchor=south, primary, shift={(-0.05,-0.05)}] (itcp) at (170:1) {\((z,r)_{cp}\)}; + +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/internal-panel-placement.jpeg b/v0.5.0/DuctAPE/theory_latex/figures/internal-panel-placement.jpeg new file mode 100644 index 00000000..8acd4344 Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/internal-panel-placement.jpeg differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/isolated_dfdc_duct_coordinates.dat b/v0.5.0/DuctAPE/theory_latex/figures/isolated_dfdc_duct_coordinates.dat new file mode 100644 index 00000000..c6a95823 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/isolated_dfdc_duct_coordinates.dat @@ -0,0 +1,107 @@ +0.304466009 0.158438995 +0.301033318 0.158440873 +0.296522439 0.158441603 +0.290923595 0.158439457 +0.284821689 0.158431888 +0.278517991 0.158416152 +0.272183239 0.15839307 +0.26586321 0.158361346 +0.259537727 0.158318475 +0.253221005 0.158266321 +0.24691385 0.158203945 +0.240611374 0.158130422 +0.234308347 0.158046171 +0.227994382 0.15795064 +0.221668571 0.157844812 +0.215337366 0.157729626 +0.209001973 0.157604396 +0.202638432 0.157468677 +0.196235403 0.157324269 +0.18979919 0.15717344 +0.183339119 0.157016635 +0.176843911 0.156855226 +0.170338482 0.156692505 +0.163874 0.156532466 +0.157470226 0.156377792 +0.151135623 0.15623191 +0.144870386 0.156097129 +0.138675809 0.155975714 +0.132556424 0.155873165 +0.126357466 0.155791193 +0.119999997 0.155724257 +0.110962294 0.155632377 +0.10217312 0.155550435 +0.0937081203 0.155501842 +0.0855675265 0.155503631 +0.0777642578 0.155572072 +0.070301868 0.155723557 +0.0631823689 0.15597263 +0.0564219691 0.156331837 +0.0500363261 0.156812847 +0.0440424532 0.157424912 +0.0384522453 0.158176944 +0.0332854725 0.159068495 +0.0285648257 0.160102189 +0.0242893789 0.161274329 +0.0204685237 0.162579626 +0.0170887131 0.164016724 +0.0141356075 0.165586337 +0.0115938121 0.167294964 +0.00945574883 0.169156224 +0.00772566767 0.17117995 +0.00642771274 0.173370793 +0.00558704184 0.175710544 +0.005219338 0.17816323 +0.00530677894 0.180666298 +0.00581929833 0.183155805 +0.00674984325 0.185635045 +0.00808980968 0.188086152 +0.00982890837 0.190498695 +0.0119630843 0.192866579 +0.0144881736 0.195182532 +0.0173980836 0.19743453 +0.0206842516 0.199605882 +0.0243237931 0.20167844 +0.0282965321 0.203631029 +0.0325721502 0.205447927 +0.0371245444 0.207113892 +0.0419291481 0.208620831 +0.0469543822 0.209960788 +0.0521727465 0.211126119 +0.0575689338 0.2121142 +0.0631311685 0.212926075 +0.0688390881 0.213562131 +0.074675113 0.214022145 +0.0806322023 0.214307398 +0.0867024288 0.214421749 +0.0928677842 0.214367405 +0.0991224721 0.21414645 +0.105459511 0.213762313 +0.111879408 0.21321708 +0.118379205 0.212515503 +0.124987386 0.211650848 +0.131840736 0.210614681 +0.138906583 0.209433883 +0.146086738 0.208129138 +0.15334402 0.206709504 +0.160654232 0.205184519 +0.167997807 0.203558639 +0.175399065 0.201830164 +0.18283686 0.200008735 +0.190294877 0.198099628 +0.197773486 0.196104512 +0.20526588 0.194027618 +0.212770045 0.191870376 +0.220288783 0.189634413 +0.227802262 0.187327743 +0.235295296 0.184953645 +0.242791355 0.182505757 +0.250271231 0.179992139 +0.257734329 0.177412391 +0.265159428 0.174774691 +0.272561669 0.172070503 +0.279917717 0.169313252 +0.287155181 0.166525185 +0.294088811 0.163786128 +0.300089538 0.161360323 +0.304542005 0.159526005 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/isolated_dfdc_hub_coordinates.dat b/v0.5.0/DuctAPE/theory_latex/figures/isolated_dfdc_hub_coordinates.dat new file mode 100644 index 00000000..8ca2c5be --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/isolated_dfdc_hub_coordinates.dat @@ -0,0 +1,63 @@ +0.0 0.0 +0.000220493763 0.00327158696 +0.000818265835 0.0062371837 +0.00176513905 0.00907455198 +0.00305903051 0.0118233347 +0.00469737826 0.0144944247 +0.00667320006 0.01708664 +0.00898412429 0.0195938926 +0.0116183488 0.0220112894 +0.014565343 0.0243293047 +0.0178080108 0.0265385918 +0.0213311911 0.0286334325 +0.0251127146 0.0306049269 +0.0291345045 0.0324492492 +0.0333757736 0.0341628119 +0.0378172994 0.0357434638 +0.042441953 0.0371914469 +0.0472304933 0.0385068245 +0.0521632098 0.0396893248 +0.0572345369 0.0407429487 +0.0624375977 0.0416737311 +0.0677433684 0.0424805768 +0.0731483325 0.0431673825 +0.0786491632 0.0437394157 +0.0842350498 0.044200331 +0.0898977965 0.044553142 +0.0956536308 0.0448064096 +0.101440892 0.0449600294 +0.107219525 0.0450017527 +0.11342375 0.0449719056 +0.120000005 0.0449555703 +0.126668498 0.0449563377 +0.133435443 0.0449485704 +0.140258059 0.0449409299 +0.147098973 0.04493507 +0.153945565 0.0449282154 +0.160799354 0.0449208207 +0.167654142 0.0449139029 +0.174511507 0.0449073091 +0.181371018 0.0449007712 +0.188229889 0.0448941104 +0.195088565 0.0448872671 +0.20194827 0.0448803529 +0.208807036 0.0448735543 +0.21566385 0.0448670611 +0.22251825 0.0448606126 +0.229360789 0.0448528677 +0.236195073 0.0448435619 +0.242983848 0.0448389612 +0.249588013 0.0448331758 +0.25564155 0.0447736457 +0.26116699 0.0446058325 +0.266400695 0.0443055779 +0.271526247 0.0438646637 +0.276578337 0.0432802737 +0.281544089 0.0425501764 +0.286387861 0.0416728891 +0.291097105 0.040644031 +0.295679897 0.0394582525 +0.300161272 0.0381119996 +0.304465979 0.0366399921 +0.30637899 0.0359279998 +0.30637899 0.0 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/isolated_duct_coordinates.dat b/v0.5.0/DuctAPE/theory_latex/figures/isolated_duct_coordinates.dat new file mode 100644 index 00000000..a41fe005 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/isolated_duct_coordinates.dat @@ -0,0 +1,151 @@ +1.0 0.8349999999999997 +0.9995614150494292 0.8349856717345706 +0.9982464296247522 0.8349379090516063 +0.9960573506572389 0.8348422311091744 +0.9929980185352525 0.8346748355957414 +0.9890738003669028 0.8344008473063276 +0.9842915805643155 0.8339680726437203 +0.9786597487660336 0.8333693089657991 +0.9721881851187405 0.8325914392236001 +0.9648882429441257 0.8316118399822122 +0.9567727288213004 0.8304186098729389 +0.9478558801197063 0.8290001942726991 +0.9381533400219317 0.8273525323462337 +0.9276821300802534 0.8254751243058591 +0.9164606203550497 0.8233700265635466 +0.9045084971874737 0.8210394976590719 +0.8918467286629199 0.8184967536897476 +0.8784975278258782 0.815753362934124 +0.8644843137107057 0.8128243759587737 +0.8498316702566827 0.8097234299162873 +0.8345653031794291 0.8064669937866736 +0.8187119948743449 0.8030693120349599 +0.8022995574311874 0.7995576131511873 +0.7853567838422157 0.7959667558682455 +0.7679133974894983 0.7923372084042745 +0.7500000000000001 0.7887152493423654 +0.7316480175599307 0.7851345733071893 +0.7128896457825363 0.7816217926048191 +0.6937577932260515 0.7781933944528285 +0.6742860236609075 0.7748867369535021 +0.6545084971874737 0.7717989083914469 +0.6344599103076327 0.769030956948243 +0.6141754350553278 0.7667067139528976 +0.5936906572928623 0.7648427926074802 +0.5730415142812056 0.7633806108348343 +0.5522642316338267 0.7622400525653324 +0.5313952597646566 0.7613529847567974 +0.5104712099416784 0.7606958709159354 +0.48952879005832145 0.7602657760897289 +0.46860474023534326 0.760038422422876 +0.4477357683661732 0.7600152967669409 +0.4269584857187942 0.7601828364585689 +0.40630934270713764 0.7605491218037457 +0.38582456494467204 0.761091293670158 +0.3655400896923672 0.7618184353226363 +0.3454915028125263 0.7627123351826404 +0.3257139763390924 0.7637722402750149 +0.30624220677394853 0.764989502883786 +0.28711035421746367 0.7663603388231238 +0.2683519824400691 0.7678792875815155 +0.25000000000000006 0.7695460388750892 +0.23208660251050173 0.7713444911429606 +0.2146432161577841 0.7732715599283091 +0.19770044256881247 0.7753173667496359 +0.18128800512565513 0.7774745227653337 +0.16543469682057088 0.7797363694167765 +0.15016832974331723 0.7821036243374195 +0.13551568628929422 0.7845697842532289 +0.1215024721741218 0.7871225588026391 +0.10815327133708008 0.7897407056201285 +0.09549150281252627 0.7924085709100757 +0.08353937964495028 0.79510800466781 +0.07231786991974665 0.7978373981735577 +0.06184665997806821 0.8005874794410013 +0.05214411988029355 0.8033667621633396 +0.04322727117869957 0.8061552988709323 +0.03511175705587427 0.808905666441048 +0.027811814881259445 0.8115816704529177 +0.02134025123396638 0.8141542778437145 +0.015708419435684462 0.8166631903595688 +0.010926199633097156 0.8192531454973531 +0.007001981464747509 0.8220201180900762 +0.003942649342761062 0.8250087075586294 +0.001753570375247815 0.8282306943612959 +0.0004385849505708084 0.8315587722118494 +0.0 0.835 +0.0004385849505708084 0.8384412277881504 +0.001753570375247815 0.8417693056387041 +0.003942649342761062 0.8449912924413704 +0.007001981464747509 0.8479798819099237 +0.010926199633097156 0.8507468545026468 +0.015708419435684462 0.853336809640431 +0.02134025123396638 0.8558457221562854 +0.027811814881259445 0.8584183295470824 +0.03511175705587427 0.8610943335589517 +0.04322727117869957 0.8638447011290676 +0.05214411988029355 0.8666332378366604 +0.06184665997806821 0.8694125205589985 +0.07231786991974665 0.8721626018264421 +0.08353937964495028 0.8748919953321898 +0.09549150281252627 0.8775914290899243 +0.10815327133708008 0.8802592943798714 +0.1215024721741218 0.8828774411973607 +0.13551568628929422 0.885430215746771 +0.15016832974331723 0.8878963756625804 +0.16543469682057088 0.8902636305832234 +0.18128800512565513 0.8925254772346662 +0.19770044256881247 0.8946826332503641 +0.2146432161577841 0.8967284400716908 +0.23208660251050173 0.8986555088570395 +0.25000000000000006 0.9004539611249107 +0.2683519824400691 0.9021207124184845 +0.28711035421746367 0.9036396611768761 +0.30624220677394853 0.905010497116214 +0.3257139763390924 0.9062277597249851 +0.3454915028125263 0.9072876648173596 +0.3655400896923672 0.9081815646773636 +0.38582456494467204 0.9089087063298419 +0.40630934270713764 0.9094508781962541 +0.4269584857187942 0.909817163541431 +0.4477357683661732 0.909984703233059 +0.46860474023534326 0.9099615775771239 +0.48952879005832145 0.909734223910271 +0.5104712099416784 0.9093041290840645 +0.5313952597646566 0.9086470152432025 +0.5522642316338267 0.9077599474346675 +0.5730415142812056 0.9066193891651656 +0.5936906572928623 0.9051572073925196 +0.6141754350553278 0.9032932860471022 +0.6344599103076327 0.900969043051757 +0.6545084971874737 0.898201091608553 +0.6742860236609075 0.8951132630464981 +0.6937577932260515 0.8918066055471713 +0.7128896457825363 0.8883782073951808 +0.7316480175599307 0.8848654266928107 +0.7500000000000001 0.8812847506576345 +0.7679133974894983 0.8776627915957255 +0.7853567838422157 0.8740332441317544 +0.8022995574311874 0.8704423868488126 +0.8187119948743449 0.8669306879650399 +0.8345653031794291 0.8635330062133263 +0.8498316702566827 0.8602765700837126 +0.8644843137107057 0.8571756240412265 +0.8784975278258782 0.854246637065876 +0.8918467286629199 0.8515032463102524 +0.9045084971874737 0.8489605023409281 +0.9164606203550497 0.8466299734364534 +0.9276821300802534 0.8445248756941406 +0.9381533400219317 0.8426474676537662 +0.9478558801197063 0.8409998057273009 +0.9567727288213004 0.8395813901270612 +0.9648882429441257 0.8383881600177876 +0.9721881851187405 0.8374085607763997 +0.9786597487660336 0.8366306910342008 +0.9842915805643155 0.8360319273562797 +0.9890738003669028 0.8355991526936724 +0.9929980185352525 0.8353251644042586 +0.9960573506572389 0.8351577688908255 +0.9982464296247522 0.8350620909483937 +0.9995614150494292 0.8350143282654293 +1.0 0.8350000000000002 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/isolated_hub_coordinates.dat b/v0.5.0/DuctAPE/theory_latex/figures/isolated_hub_coordinates.dat new file mode 100644 index 00000000..49419eba --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/isolated_hub_coordinates.dat @@ -0,0 +1,82 @@ +0.0 1.9594348786357648e-17 +0.0005057991354436265 0.012720383652547216 +0.0020224166361686243 0.02548070437183337 +0.004547513987915548 0.037925975425551886 +0.008077197673590681 0.050230130654099245 +0.012606025176787381 0.062275184302111625 +0.018127013373751593 0.07399202405613287 +0.024631649300852786 0.08531010536608098 +0.03210990328095687 0.09615734677284807 +0.04055024438846109 0.10645949728318303 +0.049939658229145915 0.11613937716598989 +0.06026366700742716 0.12511597564938698 +0.07150635185006796 0.13330333355412785 +0.08365037735192689 0.14060911933654865 +0.09667701830589667 0.14693400648466265 +0.1105661885758161 0.15216933262680182 +0.12529647206783595 0.15618944695913575 +0.1408451557524839 0.15887337928573053 +0.1571882646865093 0.15996860867524215 +0.17430059898050793 0.16 +0.1921557726553253 0.16 +0.2107262543273236 0.16 +0.2299834096597799 0.16 +0.24989754551495824 0.16 +0.27043795573877505 0.16 +0.2915729685074639 0.16 +0.31326999516323184 0.16 +0.33549558046360745 0.16 +0.3582154541670001 0.16 +0.3813945838749286 0.16 +0.40499722904943997 0.16 +0.42898699612242913 0.16 +0.45332689461188236 0.16 +0.4779793941585201 0.16 +0.5029064823948901 0.16 +0.5280697235576836 0.16 +0.5534303177528952 0.16 +0.5789491607824487 0.16 +0.6045869044400353 0.16 +0.6303040171831954 0.16 +0.6560608450880927 0.16 +0.6818176729929899 0.16 +0.7075347857361503 0.16 +0.7331725293937368 0.16 +0.7586913724232901 0.16 +0.7840519666185021 0.15444366943151702 +0.8092152077812954 0.14754960328607505 +0.8341422960176657 0.14095711289765836 +0.8587947955643033 0.13443724323736947 +0.8831346940537563 0.12800004747165483 +0.9071244611267455 0.12165545128980788 +0.9307271063012569 0.11541323759927563 +0.9539062360091854 0.10928303144112411 +0.9766261097125782 0.10327428514892308 +0.9988516950129538 0.09739626377393251 +1.0205487216687217 0.09165803079906505 +1.0416837344374104 0.0860684341636526 +1.0622241446612273 0.08063609262056484 +1.0821382805164055 0.07536938244671725 +1.1013954358488618 0.07027642452745922 +1.1199659175208603 0.06536507183475725 +1.1378210911956776 0.060642897318481465 +1.1549334254896764 0.05611718222946601 +1.1712765344237017 0.05179490489234783 +1.1868252181083496 0.04768272994549574 +1.2015555016003694 0.04378699806462153 +1.215444671870289 0.040113716185917005 +1.2284713128242586 0.036668548243794535 +1.2406153383261176 0.03345680643751006 +1.2518580231687584 0.030483443040137174 +1.2621820319470398 0.027753042762520986 +1.2715714457877245 0.025269815683986143 +1.2800117868952288 0.023037590760699948 +1.2874900408753327 0.02105980992169919 +1.293994676802434 0.019339522761685143 +1.2995156649993982 0.01787938183876969 +1.304044492502595 0.016681638584422828 +1.3075741761882702 0.015748139831928607 +1.310099273540017 0.015080324968702045 +1.311615891040742 0.014679223716858036 +1.3121216901761856 0.014545454545454539 +1.3121216901761856 0.0 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/isolated_hub_grid_refinement.tikz b/v0.5.0/DuctAPE/theory_latex/figures/isolated_hub_grid_refinement.tikz new file mode 100644 index 00000000..d82225bd --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/isolated_hub_grid_refinement.tikz @@ -0,0 +1,32 @@ +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={71.2mm}, height={57.15mm}, scaled x ticks={false}, xlabel={Number of Panels}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmode={log}, log basis x={10}, xmajorgrids={false}, xmin={18.158994429369603}, xmax={550.6912862876603}, xticklabels={{$10^{1.50}$,$10^{1.75}$,$10^{2.00}$,$10^{2.25}$,$10^{2.50}$}}, xtick={{31.622776601683793,56.23413251903491,100.0,177.82794100389228,316.22776601683796}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$\sum_{i=1}^N \left[c_{p_i} \Delta s_i\right]$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={-0.10345181966975978}, ymax={-0.06965059359635753}, yticklabels={{$-0.10$,$-0.09$,$-0.08$,$-0.07$}}, ytick={{-0.10000000000000002,-0.09000000000000002,-0.08000000000000002,-0.07}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, name path={3e3374c5-3ac4-4664-adad-93ae1394e12b}, draw opacity={1.0}, line width={1.0}, dotted, mark={square*}, mark size={2.25 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.3608;blue,0.6706}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 20.0 -0.10249518119598425 \\ + 30.0 -0.09372251178250957 \\ + 40.0 -0.08785145529796921 \\ + 50.0 -0.08453995749585516 \\ + 60.0 -0.08171865509308654 \\ + 70.0 -0.07976063623439154 \\ + 80.0 -0.07815112353077351 \\ + 90.0 -0.07699312615578897 \\ + 100.0 -0.07612174067408958 \\ + 150.0 -0.07333052791842663 \\ + 200.0 -0.07210378339252274 \\ + 300.0 -0.07105458801903596 \\ + 400.0 -0.07071329853476489 \\ + 500.0 -0.07060723207013306 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={dadfe013-a21f-4c45-8c75-4931fccac50e}, only marks, draw opacity={1.0}, line width={0}, solid, mark={square*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 80.0 -0.07815112353077351 \\ + } + ; + \node[right, below, color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{10 pt}{13.0 pt}\selectfont}}] at (axis cs:121,-0.07815112353077351) {80 panels}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/isolated_hub_velocity_validation.tikz b/v0.5.0/DuctAPE/theory_latex/figures/isolated_hub_velocity_validation.tikz new file mode 100644 index 00000000..3eabd595 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/isolated_hub_velocity_validation.tikz @@ -0,0 +1,142 @@ +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={71.2mm}, height={57.15mm}, scaled x ticks={false}, xlabel={x}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.03969230769230769}, xmax={1.3627692307692305}, xticklabels={{$0.0$,$0.2$,$0.4$,$0.6$,$0.8$,$1.0$,$1.2$}}, xtick={{0.0,0.2,0.4,0.6000000000000001,0.8,1.0,1.2000000000000002}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$\frac{V_s}{V_\infty}$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={-0.011365278557904035}, ymax={1.3722133682462712}, yticklabels={{$0.0$,$0.2$,$0.4$,$0.6$,$0.8$,$1.0$,$1.2$}}, ytick={{0.0,0.2,0.4,0.6000000000000001,0.8,1.0,1.2000000000000002}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, name path={e540c761-7c5e-4086-b457-4179c165e1a2}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.1804;blue,0.3647}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}] + table[row sep={\\}] + { + \\ + 0.0 0.161290322580645 \\ + 0.0084880636604775 0.4430107526881719 \\ + 0.020159151193634 0.6989247311827955 \\ + 0.0371352785145889 0.918279569892473 \\ + 0.0583554376657825 1.101075268817204 \\ + 0.0859416445623342 1.2494623655913977 \\ + 0.1061007957559682 1.3053763440860213 \\ + 0.1326259946949602 1.3161290322580643 \\ + 0.1464190981432361 1.2709677419354837 \\ + 0.1856763925729443 1.1892473118279567 \\ + 0.2090185676392573 1.0924731182795697 \\ + 0.2344827586206897 1.0752688172043008 \\ + 0.3087533156498673 1.0516129032258061 \\ + 0.3851458885941644 1.0365591397849458 \\ + 0.4594164456233422 1.0193548387096771 \\ + 0.5347480106100796 1.0365591397849458 \\ + 0.6079575596816975 1.0430107526881718 \\ + 0.6843501326259946 1.0666666666666664 \\ + 0.7098143236074269 1.0774193548387094 \\ + 0.7352785145888593 1.0989247311827954 \\ + 0.7851458885941643 1.2236559139784944 \\ + 0.8095490716180371 1.1677419354838707 \\ + 0.8307692307692307 1.0967741935483868 \\ + 0.8572944297082229 1.0494623655913977 \\ + 0.8816976127320953 1.0451612903225804 \\ + 0.906100795755968 1.0150537634408598 \\ + 0.9305039787798407 1.0021505376344084 \\ + 0.9549071618037134 0.9913978494623654 \\ + 0.9782493368700264 0.9870967741935482 \\ + 1.002652519893899 0.9763440860215051 \\ + 1.0281167108753313 0.9655913978494621 \\ + 1.0525198938992042 0.9526881720430106 \\ + 1.0748010610079572 0.9483870967741933 \\ + 1.1002652519893896 0.9569892473118278 \\ + 1.122546419098143 0.9376344086021503 \\ + 1.1490716180371352 0.9290322580645158 \\ + 1.1734748010610077 0.9268817204301073 \\ + 1.1968169761273206 0.9268817204301073 \\ + 1.2137931034482756 0.9268817204301073 \\ + 1.2403183023872677 0.9204301075268815 \\ + 1.262599469496021 0.9139784946236558 \\ + 1.282758620689655 0.9161290322580643 \\ + 1.3039787798408484 0.9075268817204298 \\ + 1.3230769230769228 0.9053763440860213 \\ + } + ; + \addlegendentry {experimental} + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={63cca5be-b7fb-4c64-8d37-fbf485bcc37f}, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.00025289956772181325 0.02779260767240284 \\ + 0.0012641078858061255 0.14338717559357092 \\ + 0.0032849653120420865 0.2839950297147954 \\ + 0.006312355830753114 0.39896079731658995 \\ + 0.01034161142518903 0.5108281076657253 \\ + 0.015366519275269486 0.6189532838540084 \\ + 0.021379331337302188 0.7230600145088584 \\ + 0.02837077629090483 0.8225164137226451 \\ + 0.03633007383470898 0.9165686920142853 \\ + 0.0452449513088035 1.0043665426138135 \\ + 0.05510166261828654 1.0849528844014498 \\ + 0.06588500942874756 1.157227929505574 \\ + 0.07757836460099743 1.2198665839706324 \\ + 0.09016369782891179 1.2712468799996899 \\ + 0.10362160344085639 1.3093865331951473 \\ + 0.11793133032182603 1.330979733780047 \\ + 0.13307081391015993 1.3330554820159644 \\ + 0.14901671021949658 1.2961457471487585 \\ + 0.16574443183350862 1.2198808761106097 \\ + 0.1832281858179166 1.1583154889062872 \\ + 0.20144101349132443 1.1278910522472056 \\ + 0.22035483199355174 1.1078511841430196 \\ + 0.23994047758736908 1.0935595027069098 \\ + 0.26016775062686665 1.0828918896980548 \\ + 0.2810054621231195 1.0747175488060519 \\ + 0.3024214818353479 1.0683600419197616 \\ + 0.32438278781341967 1.0633864501343728 \\ + 0.3468555173153038 1.0595074662675856 \\ + 0.36980501902096435 1.0565251908888746 \\ + 0.3931959064621843 1.054303969219955 \\ + 0.41699211258593455 1.0527535604210236 \\ + 0.4411569453671558 1.0518195988794885 \\ + 0.4656531443852012 1.0514789391525947 \\ + 0.4904429382767051 1.051738909752883 \\ + 0.5154881029762868 1.0526405214215038 \\ + 0.5407500206552893 1.054266765584179 \\ + 0.566189739267672 1.0567588454871122 \\ + 0.591768032611242 1.0603465873952964 \\ + 0.6174454608116153 1.0654071271434034 \\ + 0.643182431135644 1.0725870926583778 \\ + 0.6689392590405413 1.083080486784111 \\ + 0.6946762293645701 1.09950517443154 \\ + 0.7203536575649435 1.1272471283945216 \\ + 0.7459319509085134 1.2196836846522876 \\ + 0.7713716695208961 1.2318604958263828 \\ + 0.7966335871998987 1.1273158018148015 \\ + 0.8216787518994806 1.0718723352858124 \\ + 0.8464685457909844 1.0469038135710667 \\ + 0.8709647448090299 1.0280559011519732 \\ + 0.8951295775902509 1.0135541804022679 \\ + 0.9189257837140012 1.0017864178595945 \\ + 0.9423166711552211 0.991896252754513 \\ + 0.9652661728608818 0.9833604807938805 \\ + 0.9877389023627661 0.9758385668665394 \\ + 1.0097002083408377 0.9690962870840518 \\ + 1.0311162280530661 0.9629651115275139 \\ + 1.051953939549319 0.9573189038307508 \\ + 1.0721812125888164 0.952059725872222 \\ + 1.0917668581826336 0.9471086968820828 \\ + 1.110680676684861 0.9423997717506873 \\ + 1.128893504358269 0.9378752394909196 \\ + 1.146377258342677 0.9334822245740615 \\ + 1.163104979956689 0.9291697315725815 \\ + 1.1790508762660257 0.9248859145808463 \\ + 1.1941903598543595 0.9205753309801488 \\ + 1.208500086735329 0.9161759824446309 \\ + 1.2219579923472739 0.9116159695157785 \\ + 1.234543325575188 0.9068095926838666 \\ + 1.246236680747438 0.9016527037782427 \\ + 1.257020027557899 0.8960169840247716 \\ + 1.2668767388673823 0.8897424274694107 \\ + 1.2757916163414766 0.8826262506411829 \\ + 1.2837509138852807 0.8744039214528263 \\ + 1.2907423588388833 0.8647125904611369 \\ + 1.2967551709009162 0.853017134374314 \\ + 1.3017800787509965 0.8384612151179522 \\ + 1.3058093343454327 0.8195578814261242 \\ + 1.3088367248641437 0.7933334362804767 \\ + 1.3108575822903794 0.7522422421010351 \\ + 1.3118687906084638 0.6284647098964259 \\ + } + ; + \addlegendentry {DuctAPE} +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/kuttatecp.jpeg b/v0.5.0/DuctAPE/theory_latex/figures/kuttatecp.jpeg new file mode 100644 index 00000000..fa950201 Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/kuttatecp.jpeg differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/liftstall-cutoff.tikz b/v0.5.0/DuctAPE/theory_latex/figures/liftstall-cutoff.tikz new file mode 100644 index 00000000..d253fa70 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/liftstall-cutoff.tikz @@ -0,0 +1,446 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={45.8mm}, height={50.8mm}, scaled x ticks={false}, xlabel={Angle of Attack (radians)}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.7853981633974483}, xmax={0.7853981633974483}, xticklabels={{$-0.7$,$0.0$,$0.7$}}, xtick={{-0.7,0.0,0.7}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_\ell$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={-1.5176967357511295}, ymax={2.0405709888787014}, yticklabels={{$-1$,$0$,$1$,$2$}}, ytick={{-1.0,0.0,1.0,2.0}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={9171459e-a13d-49e5-92f5-52e4d505738f}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -0.3490658503988659 -0.5201441118382882 \\ + -0.3316125578789226 -0.3009904795535917 \\ + -0.3141592653589793 -0.2779784053141576 \\ + -0.2792526803190927 -0.8135825414572085 \\ + -0.2617993877991494 -1.1290117188523527 \\ + -0.24434609527920614 -1.042343558618539 \\ + -0.22689280275926285 -0.9311329870526581 \\ + -0.20943951023931953 -0.8182553907504921 \\ + -0.19198621771937624 -0.7003629922793199 \\ + -0.17453292519943295 -0.5891841174576591 \\ + -0.15707963267948966 -0.48953335928919767 \\ + -0.13962634015954636 -0.3847910179920036 \\ + -0.12217304763960307 -0.28163008275874873 \\ + -0.10471975511965977 -0.17689779064109243 \\ + -0.08726646259971647 -0.07238560327726853 \\ + -0.06981317007977318 0.03280051003689001 \\ + -0.05235987755982988 0.13735032221985904 \\ + -0.03490658503988659 0.24218615431637724 \\ + -0.017453292519943295 0.346774152000716 \\ + 0.0 0.4509307006002609 \\ + 0.017453292519943295 0.5529658741865668 \\ + 0.03490658503988659 0.6422769913003485 \\ + 0.05235987755982988 0.8167511813706088 \\ + 0.06981317007977318 0.9318767158290138 \\ + 0.08726646259971647 1.0230377139261682 \\ + 0.10471975511965977 1.1089781698218313 \\ + 0.12217304763960307 1.186140905228946 \\ + 0.13962634015954636 1.2500405013185019 \\ + 0.15707963267948966 1.3052698796338766 \\ + 0.17453292519943295 1.3699631833331694 \\ + 0.19198621771937624 1.434119447651737 \\ + 0.20943951023931953 1.4925656461899794 \\ + 0.22689280275926285 1.5451063002185872 \\ + 0.24434609527920614 1.5906938590534738 \\ + 0.2617993877991494 1.6222318346659939 \\ + 0.2792526803190927 1.6483353638284044 \\ + 0.29670597283903605 1.6516017692844258 \\ + 0.3141592653589793 1.6571219597359075 \\ + 0.3316125578789226 1.6460403304035667 \\ + 0.3490658503988659 1.6181595598688847 \\ + 0.3665191429188092 1.566194508085643 \\ + 0.3839724354387525 1.5270802607938798 \\ + 0.40142572795869574 1.4855879466186925 \\ + 0.41887902047863906 1.443112490399634 \\ + 0.4363323129985824 1.4019277874118095 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={52538775-2d0b-4763-898f-8f7bf95f81c3}, draw opacity={1.0}, line width={2}, dashed, forget plot] + table[row sep={\\}] + { + \\ + -3.141592653589793 -1.4169910454314172 \\ + -3.12413936106985 -1.415245716179423 \\ + -3.1066860685499065 -1.4135003869274285 \\ + -3.0892327760299634 -1.4117550576754343 \\ + -3.07177948351002 -1.4100097284234399 \\ + -3.0543261909900767 -1.4082643991714456 \\ + -3.036872898470133 -1.4065190699194512 \\ + -3.01941960595019 -1.404773740667457 \\ + -3.0019663134302466 -1.4030284114154625 \\ + -2.9845130209103035 -1.4012830821634683 \\ + -2.9670597283903604 -1.3995377529114739 \\ + -2.949606435870417 -1.3977924236594796 \\ + -2.9321531433504737 -1.3960470944074852 \\ + -2.91469985083053 -1.394301765155491 \\ + -2.897246558310587 -1.3925564359034965 \\ + -2.8797932657906435 -1.3908111066515023 \\ + -2.8623399732707004 -1.389065777399508 \\ + -2.844886680750757 -1.3873204481475137 \\ + -2.827433388230814 -1.3855751188955192 \\ + -2.8099800957108707 -1.383829789643525 \\ + -2.792526803190927 -1.3820844603915305 \\ + -2.775073510670984 -1.3803391311395363 \\ + -2.7576202181510405 -1.3785938018875417 \\ + -2.7401669256310974 -1.3768484726355474 \\ + -2.722713633111154 -1.3751031433835532 \\ + -2.705260340591211 -1.3733578141315588 \\ + -2.6878070480712672 -1.3716124848795646 \\ + -2.670353755551324 -1.36986715562757 \\ + -2.652900463031381 -1.368121826375576 \\ + -2.6354471705114375 -1.3663764971235814 \\ + -2.6179938779914944 -1.3646311678715872 \\ + -2.600540585471551 -1.3628858386195928 \\ + -2.5830872929516078 -1.3611405093675986 \\ + -2.5656340004316642 -1.3593951801156041 \\ + -2.548180707911721 -1.35764985086361 \\ + -2.5307274153917776 -1.3559045216116155 \\ + -2.5132741228718345 -1.3541591923596212 \\ + -2.4958208303518914 -1.352413863107627 \\ + -2.478367537831948 -1.3506685338556326 \\ + -2.4609142453120048 -1.3489232046036383 \\ + -2.443460952792061 -1.347177875351644 \\ + -2.426007660272118 -1.3454325460996497 \\ + -2.4085543677521746 -1.3436872168476552 \\ + -2.3911010752322315 -1.341941887595661 \\ + -2.373647782712288 -1.3401965583436666 \\ + -2.356194490192345 -1.3384512290916724 \\ + -2.3387411976724017 -1.336705899839678 \\ + -2.321287905152458 -1.3349605705876837 \\ + -2.303834612632515 -1.3332152413356895 \\ + -2.2863813201125716 -1.331469912083695 \\ + -2.2689280275926285 -1.3297245828317008 \\ + -2.251474735072685 -1.3279792535797064 \\ + -2.234021442552742 -1.326233924327712 \\ + -2.2165681500327983 -1.3244885950757177 \\ + -2.199114857512855 -1.3227432658237233 \\ + -2.181661564992912 -1.320997936571729 \\ + -2.1642082724729685 -1.3192526073197346 \\ + -2.1467549799530254 -1.3175072780677404 \\ + -2.129301687433082 -1.315761948815746 \\ + -2.111848394913139 -1.3140166195637517 \\ + -2.0943951023931953 -1.3122712903117575 \\ + -2.076941809873252 -1.310525961059763 \\ + -2.0594885173533086 -1.3087806318077688 \\ + -2.0420352248333655 -1.3070353025557744 \\ + -2.0245819323134224 -1.3052899733037802 \\ + -2.007128639793479 -1.3035446440517857 \\ + -1.9896753472735356 -1.3017993147997915 \\ + -1.9722220547535922 -1.300053985547797 \\ + -1.9547687622336491 -1.2983086562958028 \\ + -1.9373154697137058 -1.2965633270438084 \\ + -1.9198621771937625 -1.2948179977918142 \\ + -1.9024088846738192 -1.2930726685398197 \\ + -1.8849555921538759 -1.2913273392878255 \\ + -1.8675022996339325 -1.289582010035831 \\ + -1.8500490071139892 -1.2878366807838366 \\ + -1.832595714594046 -1.2860913515318422 \\ + -1.8151424220741026 -1.2843460222798482 \\ + -1.7976891295541595 -1.2826006930278537 \\ + -1.7802358370342162 -1.2808553637758595 \\ + -1.7627825445142729 -1.279110034523865 \\ + -1.7453292519943295 -1.2773647052718706 \\ + -1.7278759594743862 -1.2756193760198764 \\ + -1.710422666954443 -1.273874046767882 \\ + -1.6929693744344996 -1.2721287175158877 \\ + -1.6755160819145563 -1.2703833882638933 \\ + -1.658062789394613 -1.268638059011899 \\ + -1.6406094968746698 -1.2668927297599046 \\ + -1.6231562043547265 -1.2651474005079104 \\ + -1.6057029118347832 -1.263402071255916 \\ + -1.5882496193148399 -1.2616567420039217 \\ + -1.5707963267948966 -1.2599114127519273 \\ + -1.5533430342749532 -1.258166083499933 \\ + -1.53588974175501 -1.2564207542479386 \\ + -1.5184364492350666 -1.2546754249959444 \\ + -1.5009831567151233 -1.25293009574395 \\ + -1.4835298641951802 -1.2511847664919558 \\ + -1.4660765716752369 -1.2494394372399615 \\ + -1.4486232791552935 -1.247694107987967 \\ + -1.4311699866353502 -1.2459487787359729 \\ + -1.413716694115407 -1.2442034494839784 \\ + -1.3962634015954636 -1.2424581202319842 \\ + -1.3788101090755203 -1.2407127909799898 \\ + -1.361356816555577 -1.2389674617279955 \\ + -1.3439035240356336 -1.237222132476001 \\ + -1.3264502315156905 -1.2354768032240069 \\ + -1.3089969389957472 -1.2337314739720124 \\ + -1.2915436464758039 -1.2319861447200182 \\ + -1.2740903539558606 -1.2302408154680238 \\ + -1.2566370614359172 -1.2284954862160296 \\ + -1.239183768915974 -1.226750156964035 \\ + -1.2217304763960306 -1.225004827712041 \\ + -1.2042771838760873 -1.2232594984600467 \\ + -1.186823891356144 -1.2215141692080522 \\ + -1.1693705988362009 -1.219768839956058 \\ + -1.1519173063162575 -1.2180235107040636 \\ + -1.1344640137963142 -1.2162781814520693 \\ + -1.117010721276371 -1.214532852200075 \\ + -1.0995574287564276 -1.2127875229480807 \\ + -1.0821041362364843 -1.2110421936960862 \\ + -1.064650843716541 -1.209296864444092 \\ + -1.0471975511965976 -1.2075515351920976 \\ + -1.0297442586766543 -1.2058062059401033 \\ + -1.0122909661567112 -1.204060876688109 \\ + -0.9948376736367678 -1.2023155474361147 \\ + -0.9773843811168246 -1.2005702181841202 \\ + -0.9599310885968813 -1.198824888932126 \\ + -0.9424777960769379 -1.1970795596801316 \\ + -0.9250245035569946 -1.1953342304281374 \\ + -0.9075712110370513 -1.1935889011761431 \\ + -0.8901179185171081 -1.1918435719241487 \\ + -0.8726646259971648 -1.1900982426721545 \\ + -0.8552113334772214 -1.18835291342016 \\ + -0.8377580409572781 -1.1866075841681658 \\ + -0.8203047484373349 -1.1848622549161714 \\ + -0.8028514559173916 -1.1831169256641771 \\ + -0.7853981633974483 -1.1813715964121825 \\ + -0.767944870877505 -1.1796262671601883 \\ + -0.7504915783575616 -1.177880937908194 \\ + -0.7330382858376184 -1.1761356086561996 \\ + -0.7155849933176751 -1.1743902794042052 \\ + -0.6981317007977318 -1.172644950152211 \\ + -0.6806784082777885 -1.1708996209002165 \\ + -0.6632251157578453 -1.1691542916482223 \\ + -0.6457718232379019 -1.1674089623962278 \\ + -0.6283185307179586 -1.1656636331442336 \\ + -0.6108652381980153 -1.1639183038922394 \\ + -0.593411945678072 -1.162172974640245 \\ + -0.5759586531581288 -1.1604276453882505 \\ + -0.5585053606381855 -1.1586823161362563 \\ + -0.5410520681182421 -1.156936986884262 \\ + -0.5235987755982988 -1.1551916576322676 \\ + -0.5061454830783556 -1.1534463283802732 \\ + -0.4886921905584123 -1.1517009991282787 \\ + -0.47123889803846897 -1.1499556698762843 \\ + -0.45378560551852565 -1.14821034062429 \\ + -0.4363323129985824 -1.1464650113722956 \\ + -0.41887902047863906 -1.1447196821203012 \\ + -0.4014257279586958 -1.1429743528683032 \\ + -0.3839724354387525 -1.1412290236162885 \\ + -0.3665191429188092 -1.1394836943642543 \\ + -0.3490658503988659 -1.1377383651121984 \\ + -0.33161255787892263 -1.1359930358601178 \\ + -0.3141592653589793 -1.1342477066080103 \\ + -0.296705972839036 -1.1325023773558738 \\ + -0.2792526803190927 -1.1307570481037057 \\ + -0.2617993877991494 -1.1290117188515032 \\ + -0.24434609527920614 -1.0673703297654489 \\ + -0.22689280275926282 -0.9600263024640482 \\ + -0.20943951023931953 -0.8390275063155772 \\ + -0.19198621771937624 -0.7128355753988755 \\ + -0.17453292519943295 -0.5958631517799181 \\ + -0.15707963267948966 -0.4928629392470688 \\ + -0.13962634015954636 -0.3864150493039548 \\ + -0.12217304763960307 -0.28240367531486954 \\ + -0.10471975511965977 -0.17726116393609845 \\ + -0.08726646259971647 -0.07255413228679569 \\ + -0.06981317007977318 0.03272308144716237 \\ + -0.05235987755982988 0.13731507045520258 \\ + -0.03490658503988659 0.24217023426102238 \\ + -0.017453292519943295 0.34676705675582137 \\ + 2.524354896707238e-29 0.45092766780971344 \\ + 0.017453292519943295 0.5529648339671895 \\ + 0.03490658503988659 0.6422772150452551 \\ + 0.05235987755982988 0.8167525748675211 \\ + 0.06981317007977318 0.9318800530445993 \\ + 0.08726646259971647 1.0230448926166291 \\ + 0.10471975511965977 1.108993075002632 \\ + 0.12217304763960307 1.1861715124428007 \\ + 0.13962634015954636 1.2501036864275183 \\ + 0.15707963267948966 1.3054003193012897 \\ + 0.17453292519943295 1.3702167676527894 \\ + 0.19198621771937624 1.4345870979114317 \\ + 0.20943951023931953 1.4933812755086455 \\ + 0.22689280275926282 1.5464052450423527 \\ + 0.24434609527920614 1.592452247119527 \\ + 0.2617993877991494 1.6242479988388934 \\ + 0.2792526803190927 1.649122537580502 \\ + 0.296705972839036 1.6527142214500519 \\ + 0.3141592653589793 1.6571219597354827 \\ + 0.33161255787892263 1.6588672889876588 \\ + 0.3490658503988659 1.6606126182397793 \\ + 0.3665191429188092 1.6623579474918544 \\ + 0.3839724354387525 1.6641032767438921 \\ + 0.4014257279586958 1.6658486059959028 \\ + 0.41887902047863906 1.6675939352478955 \\ + 0.4363323129985824 1.6693392644998795 \\ + 0.45378560551852565 1.671084593751864 \\ + 0.47123889803846897 1.6728299230038564 \\ + 0.4886921905584123 1.6745752522558508 \\ + 0.5061454830783556 1.676320581507845 \\ + 0.5235987755982988 1.6780659107598395 \\ + 0.5410520681182421 1.6798112400118337 \\ + 0.5585053606381855 1.6815565692638281 \\ + 0.5759586531581288 1.6833018985158223 \\ + 0.593411945678072 1.6850472277678168 \\ + 0.6108652381980153 1.686792557019811 \\ + 0.6283185307179586 1.6885378862718055 \\ + 0.6457718232379019 1.6902832155237997 \\ + 0.6632251157578453 1.6920285447757941 \\ + 0.6806784082777885 1.6937738740277883 \\ + 0.6981317007977318 1.6955192032797828 \\ + 0.7155849933176751 1.697264532531777 \\ + 0.7330382858376184 1.6990098617837714 \\ + 0.7504915783575616 1.7007551910357657 \\ + 0.767944870877505 1.70250052028776 \\ + 0.7853981633974483 1.7042458495397543 \\ + 0.8028514559173916 1.7059911787917488 \\ + 0.8203047484373349 1.707736508043743 \\ + 0.8377580409572781 1.7094818372957374 \\ + 0.8552113334772214 1.7112271665477317 \\ + 0.8726646259971648 1.712972495799726 \\ + 0.8901179185171081 1.7147178250517203 \\ + 0.9075712110370513 1.7164631543037148 \\ + 0.9250245035569946 1.718208483555709 \\ + 0.9424777960769379 1.7199538128077034 \\ + 0.9599310885968813 1.7216991420596977 \\ + 0.9773843811168246 1.723444471311692 \\ + 0.9948376736367678 1.7251898005636863 \\ + 1.0122909661567112 1.7269351298156808 \\ + 1.0297442586766543 1.728680459067675 \\ + 1.0471975511965976 1.7304257883196692 \\ + 1.064650843716541 1.7321711175716636 \\ + 1.0821041362364843 1.7339164468236579 \\ + 1.0995574287564276 1.7356617760756523 \\ + 1.117010721276371 1.7374071053276465 \\ + 1.1344640137963142 1.739152434579641 \\ + 1.1519173063162575 1.7408977638316352 \\ + 1.1693705988362009 1.7426430930836296 \\ + 1.186823891356144 1.7443884223356239 \\ + 1.2042771838760873 1.7461337515876183 \\ + 1.2217304763960306 1.7478790808396125 \\ + 1.239183768915974 1.749624410091607 \\ + 1.2566370614359172 1.7513697393436012 \\ + 1.2740903539558606 1.7531150685955956 \\ + 1.2915436464758039 1.7548603978475898 \\ + 1.3089969389957472 1.7566057270995843 \\ + 1.3264502315156905 1.7583510563515785 \\ + 1.3439035240356336 1.760096385603573 \\ + 1.361356816555577 1.7618417148555672 \\ + 1.3788101090755203 1.7635870441075616 \\ + 1.3962634015954636 1.7653323733595558 \\ + 1.413716694115407 1.7670777026115503 \\ + 1.4311699866353502 1.7688230318635445 \\ + 1.4486232791552935 1.770568361115539 \\ + 1.4660765716752369 1.7723136903675332 \\ + 1.4835298641951802 1.7740590196195276 \\ + 1.5009831567151233 1.7758043488715218 \\ + 1.5184364492350666 1.7775496781235163 \\ + 1.53588974175501 1.7792950073755105 \\ + 1.5533430342749532 1.781040336627505 \\ + 1.5707963267948966 1.7827856658794992 \\ + 1.5882496193148399 1.7845309951314936 \\ + 1.6057029118347832 1.7862763243834878 \\ + 1.6231562043547265 1.7880216536354823 \\ + 1.6406094968746698 1.7897669828874765 \\ + 1.658062789394613 1.7915123121394707 \\ + 1.6755160819145563 1.7932576413914652 \\ + 1.6929693744344996 1.7950029706434596 \\ + 1.710422666954443 1.7967482998954538 \\ + 1.7278759594743862 1.798493629147448 \\ + 1.7453292519943295 1.8002389583994425 \\ + 1.7627825445142729 1.801984287651437 \\ + 1.7802358370342162 1.8037296169034311 \\ + 1.7976891295541595 1.8054749461554254 \\ + 1.8151424220741026 1.8072202754074198 \\ + 1.832595714594046 1.808965604659414 \\ + 1.8500490071139892 1.8107109339114085 \\ + 1.8675022996339325 1.8124562631634027 \\ + 1.8849555921538759 1.8142015924153971 \\ + 1.9024088846738192 1.8159469216673914 \\ + 1.9198621771937625 1.8176922509193858 \\ + 1.9373154697137058 1.81943758017138 \\ + 1.9547687622336491 1.8211829094233745 \\ + 1.9722220547535922 1.8229282386753687 \\ + 1.9896753472735356 1.8246735679273631 \\ + 2.007128639793479 1.8264188971793573 \\ + 2.0245819323134224 1.8281642264313518 \\ + 2.0420352248333655 1.829909555683346 \\ + 2.0594885173533086 1.8316548849353405 \\ + 2.076941809873252 1.8334002141873347 \\ + 2.0943951023931953 1.8351455434393291 \\ + 2.111848394913139 1.8368908726913233 \\ + 2.129301687433082 1.8386362019433178 \\ + 2.1467549799530254 1.840381531195312 \\ + 2.1642082724729685 1.8421268604473064 \\ + 2.181661564992912 1.8438721896993007 \\ + 2.199114857512855 1.845617518951295 \\ + 2.2165681500327983 1.8473628482032893 \\ + 2.234021442552742 1.8491081774552838 \\ + 2.251474735072685 1.850853506707278 \\ + 2.2689280275926285 1.8525988359592724 \\ + 2.2863813201125716 1.8543441652112667 \\ + 2.303834612632515 1.856089494463261 \\ + 2.321287905152458 1.8578348237152553 \\ + 2.3387411976724017 1.8595801529672498 \\ + 2.356194490192345 1.861325482219244 \\ + 2.373647782712288 1.8630708114712382 \\ + 2.3911010752322315 1.8648161407232327 \\ + 2.4085543677521746 1.8665614699752269 \\ + 2.426007660272118 1.8683067992272213 \\ + 2.443460952792061 1.8700521284792155 \\ + 2.4609142453120048 1.87179745773121 \\ + 2.478367537831948 1.8735427869832042 \\ + 2.4958208303518914 1.8752881162351986 \\ + 2.5132741228718345 1.8770334454871929 \\ + 2.5307274153917776 1.8787787747391873 \\ + 2.548180707911721 1.8805241039911815 \\ + 2.5656340004316642 1.882269433243176 \\ + 2.5830872929516078 1.8840147624951702 \\ + 2.600540585471551 1.8857600917471646 \\ + 2.6179938779914944 1.8875054209991589 \\ + 2.6354471705114375 1.8892507502511533 \\ + 2.652900463031381 1.8909960795031475 \\ + 2.670353755551324 1.892741408755142 \\ + 2.6878070480712672 1.8944867380071362 \\ + 2.705260340591211 1.8962320672591306 \\ + 2.722713633111154 1.8979773965111248 \\ + 2.7401669256310974 1.8997227257631193 \\ + 2.7576202181510405 1.9014680550151135 \\ + 2.775073510670984 1.903213384267108 \\ + 2.792526803190927 1.9049587135191022 \\ + 2.8099800957108707 1.9067040427710966 \\ + 2.827433388230814 1.9084493720230908 \\ + 2.844886680750757 1.9101947012750853 \\ + 2.8623399732707004 1.9119400305270795 \\ + 2.8797932657906435 1.913685359779074 \\ + 2.897246558310587 1.9154306890310682 \\ + 2.91469985083053 1.9171760182830626 \\ + 2.9321531433504737 1.9189213475350568 \\ + 2.949606435870417 1.9206666767870513 \\ + 2.9670597283903604 1.9224120060390455 \\ + 2.9845130209103035 1.92415733529104 \\ + 3.0019663134302466 1.9259026645430342 \\ + 3.01941960595019 1.9276479937950286 \\ + 3.036872898470133 1.9293933230470228 \\ + 3.0543261909900767 1.9311386522990173 \\ + 3.07177948351002 1.9328839815510115 \\ + 3.0892327760299634 1.934629310803006 \\ + 3.1066860685499065 1.9363746400550002 \\ + 3.12413936106985 1.9381199693069946 \\ + 3.141592653589793 1.9398652985589888 \\ + } + ; + \node[, above, color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:0.4,0) {Nominal}; + \node[right, , color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:-0.7,1.9) {Stall Limited}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/margin_doublet_panel.pdf b/v0.5.0/DuctAPE/theory_latex/figures/margin_doublet_panel.pdf new file mode 100644 index 00000000..3cb60512 Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/margin_doublet_panel.pdf differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/margin_doublet_panel.tikz b/v0.5.0/DuctAPE/theory_latex/figures/margin_doublet_panel.tikz new file mode 100644 index 00000000..cca145b5 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/margin_doublet_panel.tikz @@ -0,0 +1,334 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={5.0mm}, yshift={-5.0mm}, width={112.0mm}, height={85.25mm}, scaled x ticks={false}, xlabel={}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.08299174282609018}, xmax={1.0829901166864662}, xticklabels={{}}, xtick={{0.0,0.25,0.5,0.75,1.0}}, xtick style={draw=none}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, separate axis lines, x axis line style={{draw opacity = 0}}, scaled y ticks={false}, ylabel={}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, ymajorgrids={false}, ymin={-0.29639301000959056}, ymax={0.6139329909623029}, yticklabels={{}}, ytick={{-0.2,0.0,0.2,0.4,0.6000000000000001}}, ytick style={draw=none}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={{draw opacity = 0}}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.098;blue,0.1961}, name path={a1fff523-fb97-46de-b4bb-adf8d999b1dc}, draw opacity={1.0}, line width={1.0}, solid, mark={*}, mark size={1.5 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.098;blue,0.1961}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, quiver={u={\thisrow{u}}, v={\thisrow{v}}, every arrow/.append style={-{stealth[length = 0.3pt, width = 0.3pt]}}}, forget plot] + table[row sep={\\}] + { + x y u v \\ + 0.0 0.25 1.0 -0.25 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.098;blue,0.1961}, name path={a1fff523-fb97-46de-b4bb-adf8d999b1dc}, forget plot, draw opacity={1.0}, line width={1.0}, solid, mark={*}, mark size={1.5 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.098;blue,0.1961}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}] + table[row sep={\\}] + { + \\ + 0.0 0.25 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.098;blue,0.1961}, name path={4c02bb7d-bd9a-41be-ab82-ed354c84ef4e}, only marks, draw opacity={1.0}, line width={0}, solid, mark={*}, mark size={1.5 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.098;blue,0.1961}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 1.0 0.0 \\ + } + ; + \addplot[color={rgb,1:red,0.1961;green,0.0;blue,0.098}, name path={afe92204-125b-433e-acbb-8c8157ac3e5f}, draw opacity={1.0}, line width={1.0}, solid, quiver={u={\thisrow{u}}, v={\thisrow{v}}, every arrow/.append style={-{stealth[length = 0.3pt, width = 0.3pt]}}}, forget plot] + table[row sep={\\}] + { + x y u v \\ + 0.5 0.125 0.06063390625908327 0.24253562503633297 \\ + } + ; + \addplot[color={rgb,1:red,0.1961;green,0.0;blue,0.098}, name path={afe92204-125b-433e-acbb-8c8157ac3e5f}, forget plot, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.5 0.125 \\ + } + ; + \addplot[color={rgb,1:red,0.9804;green,0.2941;blue,0.2941}, name path={9cfa6701-28e8-4a1a-8c5e-e873dbce68cb}, only marks, draw opacity={1.0}, line width={0}, solid, mark={square*}, mark size={2.25 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.9804;green,0.2941;blue,0.2941}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 0.5 0.125 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.2941;blue,0.5882}, name path={237a44f2-e95f-4fa5-92ec-9dbaab5c869d}, draw opacity={1.0}, line width={1.0}, solid, quiver={u={\thisrow{u}}, v={\thisrow{v}}, every arrow/.append style={-{stealth[length = 0.3pt, width = 0.3pt]}}}, forget plot] + table[row sep={\\}] + { + x y u v \\ + 0.0433890015432182 0.2748474253209987 -0.0009245364953141752 0.0015489609505222046 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.2941;blue,0.5882}, name path={237a44f2-e95f-4fa5-92ec-9dbaab5c869d}, forget plot, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + -0.04330127018922194 0.275 \\ + -0.04417489151495596 0.27342176252210476 \\ + -0.04499101395802276 0.2718130388306857 \\ + -0.045748575237860065 0.2701759228712309 \\ + -0.04644658929823437 0.268512545545147 \\ + -0.047084147590710584 0.26682507193613697 \\ + -0.04766042025723593 0.26511569849208616 \\ + -0.048174657210299156 0.2633866501661234 \\ + -0.04862618910925872 0.2616401775205797 \\ + -0.04901442823156932 0.2598785537976134 \\ + -0.04933886923777284 0.2581040719603144 \\ + -0.04959908982925782 0.25631904170814 \\ + -0.049794751297931414 0.25452578647056595 \\ + -0.04992559896708827 0.25272664038286585 \\ + -0.04999146252290264 0.2509239452479565 \\ + -0.04999225623611208 0.24912004748826233 \\ + -0.049927979073604314 0.2473172950915671 \\ + -0.04979871469976196 0.24551803455482832 \\ + -0.04960463136756332 0.24372460782993183 \\ + -0.04934598169958118 0.24193934927536245 \\ + -0.049023102359164336 0.2401645826177586 \\ + -0.04863641361223024 0.2384026179273051 \\ + -0.0481864187802388 0.2366557486109018 \\ + -0.047673703585059575 0.23492624842702128 \\ + -0.04709893538658499 0.23321636852614153 \\ + -0.046462862314081935 0.23152833452060523 \\ + -0.045766312292412493 0.22986434358772048 \\ + -0.045010191964391016 0.22822656160987265 \\ + -0.04419548551068061 0.22661712035537068 \\ + -0.043323253368764726 0.22503811470369645 \\ + -0.04239463085266149 0.22349159991876985 \\ + -0.041410826675177335 0.22197958897377804 \\ + -0.04037312137462323 0.22050404993105086 \\ + -0.03928286564804161 0.21906690338039347 \\ + -0.03814147859311334 0.21767001993921004 \\ + -0.03695044586103297 0.21631521781767216 \\ + -0.03571131772275683 0.21500426045210197 \\ + -0.034425707051140744 0.21373885420964972 \\ + -0.03309528722159384 0.21252064616725352 \\ + -0.03172178993398121 0.21135122196777278 \\ + -0.03030700295861029 0.21023210375608503 \\ + -0.028852767809234892 0.20916474819783304 \\ + -0.02736097734610557 0.2081505445834011 \\ + -0.02583357331218679 0.20719081301958805 \\ + -0.024272543805747074 0.2062868027113311 \\ + -0.022679920692612227 0.20543969033571668 \\ + -0.021057776961450166 0.2046505785103953 \\ + -0.019408224025529164 0.2039204943583932 \\ + -0.017733408974461882 0.20325038817118932 \\ + -0.016035511779512766 0.202641132171798 \\ + -0.01431674245610567 0.2020935193794666 \\ + -0.012579338187225448 0.20160826257746667 \\ + -0.010825560411458088 0.20118599338532156 \\ + -0.009057691879458922 0.2008272614366783 \\ + -0.007278033682680648 0.20053253366389415 \\ + -0.005488902258228979 0.2003021936902683 \\ + -0.0036926263737437413 0.2001365413307106 \\ + -0.0018915440962302848 0.2000357922014967 \\ + -8.799974878707586e-5 0.20000007743961784 \\ + 0.001715659140810166 0.20002944353209026 \\ + 0.0035170848956955986 0.2001238522554471 \\ + 0.005313932745694047 0.20028318072549048 \\ + 0.00710386387931879 0.20050722155724018 \\ + 0.008884548488013398 0.20079568313486978 \\ + 0.010653668798674796 0.2011481899912793 \\ + 0.012408922090511143 0.20156428329681056 \\ + 0.01414802369230733 0.20204342145646845 \\ + 0.01586870995619642 0.20258498081487142 \\ + 0.017568741204067127 0.20318825646801314 \\ + 0.019245904642771546 0.20385246318077915 \\ + 0.02089801724433915 0.2045767364090238 \\ + 0.022522928587447446 0.20536013342487747 \\ + 0.02411852365645158 0.20620163454381904 \\ + 0.025682725594329228 0.20710014445191702 \\ + 0.02721349840595711 0.20805449363151077 \\ + 0.028708849608201276 0.20906343988347725 \\ + 0.030166832823371317 0.21012566994410103 \\ + 0.03158555031266254 0.2112398011944435 \\ + 0.032963155446289125 0.2124043834599859 \\ + 0.03429785510709287 0.21361790089820457 \\ + 0.035587912024498534 0.21487877397162006 \\ + 0.03683164703577848 0.21618536150375356 \\ + 0.038027441271683046 0.21753596281531365 \\ + 0.039173738263591544 0.21892881993783267 \\ + 0.04026904596944161 0.2203621199018722 \\ + 0.041311938715799724 0.22183399709681886 \\ + 0.04230105905354487 0.22334253569919843 \\ + 0.043235119524750294 0.22488577216634847 \\ + 0.044112904338463384 0.22646169779220304 \\ + 0.0449332709532023 0.22806826132186264 \\ + 0.045695151564109845 0.22970337162154683 \\ + 0.046397554492828716 0.23136490040045427 \\ + 0.04703956547828891 0.23305068498098608 \\ + 0.047620348866727405 0.23475853111372877 \\ + 0.04813914869939118 0.2364862158335311 \\ + 0.04859528969650737 0.23823149035295785 \\ + 0.04898817813624052 0.23999208298935454 \\ + 0.04931730262749213 0.24176570212171322 \\ + 0.04958223477553714 0.2435500391734898 \\ + 0.04978262973963064 0.24534277161749146 \\ + 0.04991822668185926 0.24714156599892273 \\ + 0.049988849106652675 0.24894408097265436 \\ + 0.04999440509051367 0.2507479703507631 \\ + 0.04993488740166754 0.2525508861563749 \\ + 0.04981037350947502 0.2543504816798361 \\ + 0.049621025483596794 0.25614441453323566 \\ + 0.049367089783040455 0.25793034969930223 \\ + 0.04904889693536475 0.25970596257070705 \\ + 0.04866686110645866 0.26146894197581716 \\ + 0.048221479561455116 0.26321699318696073 \\ + 0.047713332017481166 0.26494784090728846 \\ + 0.0471430798890872 0.26665923223234317 \\ + 0.04651146542733704 0.2683489395824835 \\ + 0.04581931075367979 0.2700147636023442 \\ + 0.0450675167898609 0.2716545360235588 \\ + 0.04425706208526519 0.27326612248701926 \\ + 0.0433890015432182 0.2748474253209987 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.2941;blue,0.5882}, name path={d7ad521f-8420-4562-9bac-963d9bc8bbce}, draw opacity={1.0}, line width={1.0}, solid, quiver={u={\thisrow{u}}, v={\thisrow{v}}, every arrow/.append style={-{stealth[length = 0.3pt, width = 0.3pt]}}}, forget plot] + table[row sep={\\}] + { + x y u v \\ + 0.9699385401643615 0.039953831262474634 0.001641511978200838 0.0011838225814252007 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.2941;blue,0.5882}, name path={d7ad521f-8420-4562-9bac-963d9bc8bbce}, forget plot, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 1.0404508497187475 0.029389262614623615 \\ + 1.0416070620937035 0.027728187534180944 \\ + 1.042695105500084 0.02602168261924483 \\ + 1.0437131972886688 0.024272543805746977 \\ + 1.044659669418899 0.022483636880955532 \\ + 1.0455329711917902 0.020657892788171966 \\ + 1.0463316717905986 0.01879830282467676 \\ + 1.0470544626250686 0.016907913740790797 \\ + 1.0477001594754258 0.014989822748082748 \\ + 1.0482677044326019 0.013047172444900765 \\ + 1.0487561676315114 0.01108314566754255 \\ + 1.0491647487745415 0.009100960275499415 \\ + 1.04949277844276 0.007103863879318786 \\ + 1.0497397191926885 0.005095128519722191 \\ + 1.0499051664368522 0.0030780453066970768 \\ + 1.0499888491066527 0.0010559190273455323 \\ + 1.049990630096488 -0.0009679372686755265 \\ + 1.0499105064883867 -0.00299020769725175 \\ + 1.0497486095567872 -0.0050075789725522795 \\ + 1.0495052045534587 -0.007016745835514083 \\ + 1.0491806902729137 -0.009014416469175035 \\ + 1.048775598399022 -0.0109973178919835 \\ + 1.0482905926339008 -0.012962201320247968 \\ + 1.0477264676105074 -0.014905847490941147 \\ + 1.0470841475907107 -0.016825071936137005 \\ + 1.0463646849509833 -0.01871673020043998 \\ + 1.045569258458189 -0.020577722992857487 \\ + 1.0446991713382912 -0.02240500126467515 \\ + 1.0437558491411496 -0.024195571205015105 \\ + 1.042740837404901 -0.02594649914589289 \\ + 1.0416557991237503 -0.027654916368735846 \\ + 1.040502512023323 -0.029318023804488932 \\ + 1.0392828656480415 -0.030933096619606578 \\ + 1.0379988582652973 -0.032497488680417214 \\ + 1.0366525935914912 -0.03400863688854599 \\ + 1.0352462773453073 -0.035464065380292696 \\ + 1.033782213633865 -0.03686138958308415 \\ + 1.0322628011776727 -0.03819832012235565 \\ + 1.0306905293805664 -0.03947266657245985 \\ + 1.0290679742510729 -0.040682341045458044 \\ + 1.0273977941818802 -0.04182536161191354 \\ + 1.0256827255943293 -0.04289985554808298 \\ + 1.0239255784550643 -0.043904062404184915 \\ + 1.0221292316721864 -0.044836336888718985 \\ + 1.0202966283784531 -0.04569515156410989 \\ + 1.0184307711092526 -0.046479099349259534 \\ + 1.0165347168832535 -0.0471868958249073 \\ + 1.0146115721937872 -0.0478173813380213 \\ + 1.0126644879191735 -0.04836952290177263 \\ + 1.0106966541603248 -0.04884241588798005 \\ + 1.0087112950140869 -0.04923528550925185 \\ + 1.0067116632908828 -0.04954748808839675 \\ + 1.0047010351853112 -0.04977851211302389 \\ + 1.0026827049084328 -0.049927979073604314 \\ + 1.000659979290538 -0.04999564408362053 \\ + 0.9986361723632389 -0.04998139628078838 \\ + 0.9966145999297645 -0.049885259008693644 \\ + 0.9945985741323513 -0.04970738977854597 \\ + 0.9925913980256326 -0.049448080011112665 \\ + 0.9905963601649174 -0.04910775455925518 \\ + 0.9886167292182249 -0.048686971011850655 \\ + 0.9866557486109018 -0.04818641878023879 \\ + 0.9847166312115975 -0.0476069179686911 \\ + 0.9828025540683035 -0.04694941803075281 \\ + 0.9809166532030813 -0.046214996213659196 \\ + 0.9790620184740065 -0.045404855793374756 \\ + 0.977241688512749 -0.044520324103147074 \\ + 0.9754586457460814 -0.043562850358805416 \\ + 0.9737158115094747 -0.04253400328436696 \\ + 0.9720160412607846 -0.04143546854184091 \\ + 0.9703621199018722 -0.04026904596944161 \\ + 0.9687567572158243 -0.03903664663273541 \\ + 0.9672025834272466 -0.03774028969355271 \\ + 0.9657021448929071 -0.03638209910179538 \\ + 0.9642578999297873 -0.03496430011555928 \\ + 0.9628722147873783 -0.033489215655273706 \\ + 0.9615473597708201 -0.031959262497830786 \\ + 0.9602855055212357 -0.03037694731694082 \\ + 0.9590887194593551 -0.0287448625762005 \\ + 0.9579589623982553 -0.027065682281603137 \\ + 0.9568980853307657 -0.02534215760045005 \\ + 0.955907826396804 -0.023577112353840763 \\ + 0.954989808035609 -0.021773438390127322 \\ + 0.9541455343275377 -0.01993409084691297 \\ + 0.9533763885297822 -0.018062083309357636 \\ + 0.9526836308100418 -0.01616048287272298 \\ + 0.9520683961818659 -0.014232405117246737 \\ + 0.9515316926450489 -0.012281009003579119 \\ + 0.9510743995341242 -0.010309491697144827 \\ + 0.9506972660776638 -0.008321083329910564 \\ + 0.9504009101707421 -0.006319041708139995 \\ + 0.9501858173625786 -0.004306646974807282 \\ + 0.9500523400610128 -0.0022871962354140715 \\ + 0.9500006969551212 -0.0002639981560152873 \\ + 0.9500309726569165 0.0017596324576960604 \\ + 0.9501431175627193 0.0037803800913632467 \\ + 0.9503369479344291 0.005794933954101078 \\ + 0.9506121462005602 0.007799993402892402 \\ + 0.9509682614765511 0.009792273350358371 \\ + 0.9514047103034926 0.011768509647042154 \\ + 0.9519207776040668 0.013725464429388183 \\ + 0.952515617854129 0.0156599314246546 \\ + 0.9531882564680132 0.01756874120406716 \\ + 0.9539375913952927 0.019448766375608197 \\ + 0.9547623949263785 0.02129692670793261 \\ + 0.9556613157039969 0.023110194177015684 \\ + 0.9566328809372524 0.024885597927264646 \\ + 0.9576754988146468 0.026620229138965536 \\ + 0.9587874611121009 0.02831124579409038 \\ + 0.959966945991708 0.029955877332656713 \\ + 0.9612120209866309 0.03155142919201031 \\ + 0.9625206461672535 0.033095287221593835 \\ + 0.9638906774833995 0.03458492196596851 \\ + 0.9653198702771423 0.0360178928090714 \\ + 0.9668058829604496 0.03739185197291824 \\ + 0.9683462808516399 0.038704548364200536 \\ + 0.9699385401643615 0.039953831262474634 \\ + } + ; + \node[, color={rgb,1:red,0.0;green,0.098;blue,0.1961}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{12 pt}{15.600000000000001 pt}\selectfont}}] at (axis cs:0.0,0.3) {$p_1$}; + \node[, color={rgb,1:red,0.0;green,0.098;blue,0.1961}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{12 pt}{15.600000000000001 pt}\selectfont}}] at (axis cs:1.0,0.05) {$p_2$}; + \node[, color={rgb,1:red,0.1961;green,0.0;blue,0.098}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{12 pt}{15.600000000000001 pt}\selectfont}}] at (axis cs:0.6106339062590833,0.317535625036333) {$\hat{n}$}; + \node[, color={rgb,1:red,0.9804;green,0.2941;blue,0.2941}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{12 pt}{15.600000000000001 pt}\selectfont}}] at (axis cs:0.5,0.075) {$\bar{p}$}; + \node[right, color={rgb,1:red,0.0;green,0.2941;blue,0.5882}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{12 pt}{15.600000000000001 pt}\selectfont}}] at (axis cs:0.0,0.175) {$\gamma_1=+\mu$}; + \node[left, color={rgb,1:red,0.0;green,0.2941;blue,0.5882}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{12 pt}{15.600000000000001 pt}\selectfont}}] at (axis cs:1.0,-0.07500000000000001) {$\gamma_2=-\mu$}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/margin_plots_default.jl b/v0.5.0/DuctAPE/theory_latex/figures/margin_plots_default.jl new file mode 100644 index 00000000..fa317474 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/margin_plots_default.jl @@ -0,0 +1,238 @@ +#= +Default Plots Settings for creating tikz native figures for dissertation +=# + +using Plots; +pgfplotsx(); +# pythonplot() +using LaTeXStrings +using Measures + +default() +default(; + # #:Plot + # background_color=RGBA(1, 1, 1, 0), + # background_color = nothing, + # background_color_outside = nothing, + # display_type, + # dpi, + # extra_kwargs, + # extra_plot_kwargs, + # fontfamily="Computer Modern", + fontfamily="Garamond", + # foreground_color, + # html_output_format, + # inset_subplots, + # layout, + # link, + # overwrite_figure, + # plot_title, + # plot_title_location, + # plot_titlefontcolor, + # plot_titlefontfamily, + # plot_titlefonthalign, + # plot_titlefontrotation, + # plot_titlefontsize, + # plot_titlefontvalign, + # pos, + # show, + size=(200, 200), #it appears that 100 ≈ 1inch in LaTeX + # tex_output_standalone, + # thickness_scaling, + # warn_on_unsupported, + # window_title, + + ####################### + # :Series + ####################### + # arrow, + # bar_edges, + # bar_position, + # bar_width, + # bins, + # colorbar_entry, + # connections, + # contour_labels, + # contours, + # extra_kwargs, + # fill_z, + fillalpha=0.125, + fillcolor=RGB(128 / 255, 128 / 255, 128 / 255), + # fillrange, + # group, + # hover, + # label, + # levels, + # line_z, + # linealpha, + # linecolor, + # linestyle, + linewidth=1.0, + # marker_z, + # markeralpha, + # markercolor, + # markershape, + # markersize, + markerstrokealpha=0, + # markerstrokecolor, + # markerstrokestyle, + # markerstrokewidth, + # normalize, + # orientation, + # primary, + # quiver, + # ribbon, + # series_annotations, + # seriesalpha, + # seriescolor, + # seriestype, + # show_empty_bins, + # smooth, + # stride, + # subplot, + # weights, + # x, + # xerror, + # y, + # yerror, + # z, + # zerror + + ####################### + # :Subplot + ####################### + # annotationcolor, + # annotationfontfamily="Computer Modern", + annotationfontfamily="Garamond", + annotationfontsize=6, + annotationhalign=:left, + # annotationrotation, + # annotations, + annotationvalign=:bottom, + # aspect_ratio, + background_color_inside=nothing, + background_color_legend=nothing, + background_color_subplot=nothing, + # bottom_margin, + # camera, + # clims, + color_palette=[ + RGB(0.0 / 255, 92.0 / 255, 171.0 / 255) # royal blue + RGB(192.0 / 255, 83.0 / 255, 103.0 / 255) # royal red + RGB(143.0 / 255, 166.0 / 255, 81.0 / 255) # royal green + RGB(130.0 / 255, 130.0 / 255, 130.0 / 255) # royal gray + ], + # colorbar, + # colorbar_continuous_values, + # colorbar_discrete_values, + # colorbar_fontfamily, + # colorbar_formatter, + # colorbar_scale, + # colorbar_tickfontcolor, + # colorbar_tickfontfamily, + # colorbar_tickfonthalign, + # colorbar_tickfontrotation, + # colorbar_tickfontsize, + # colorbar_tickfontvalign, + # colorbar_ticks, + # colorbar_title, + # colorbar_title_location, + # colorbar_titlefontcolor, + # colorbar_titlefontfamily, + # colorbar_titlefonthalign, + # colorbar_titlefontrotation, + # colorbar_titlefontsize, + # colorbar_titlefontvalign, + # extra_kwargs, + # fontfamily_subplot, + foreground_color_legend=nothing, + # foreground_color_subplot, + # foreground_color_title, + # framestyle=:origin, #puts axis at center of plot (or zero,zero I guess) + # left_margin, + # legend=false, # include legend true/false + # legendfontcolor, + # legendfontfamily, + # legendfonthalign, + # legendfontrotation, + # legendfontsize, + # legendfontvalign, + # legendtitle, + # legendtitlefontcolor, + # legendtitlefontfamily, + # legendtitlefonthalign, + # legendtitlefontrotation, + # legendtitlefontsize, + # legendtitlefontvalign, + margin=0mm, + # projection, + # right_margin, + # subplot_index, + # title, + # titlefontcolor, + # titlefontfamily, + # titlefonthalign, + # titlefontrotation, + # titlefontsize, + # titlefontvalign, + # titlelocation, + # top_margin + + ##################### + # :Axis + ##################### + # discrete_values, + # draw_arrow, + # flip, + # foreground_color_axis, + # foreground_color_border, + # foreground_color_grid, + # foreground_color_guide, + # foreground_color_minor_grid, + # foreground_color_text, + # formatter, + grid=false, # background grid true/false + # gridalpha, + # gridlinewidth=0.5, + # gridstyle, + # guide, + # guide_position, + # guidefontcolor, + # guidefontfamily, + # guidefonthalign, + # guidefontrotation, + # guidefontsize, + # guidefontvalign, + # ylims=(0, 3), + # xlims=(0, 2), + # link, + # minorgrid, + # minorgridalpha, + # minorgridlinewidth, + # minorgridstyle, + # minorticks, + # mirror, + # rotation, + # scale, + showaxis=false, #turns off spines and tick labels, but not ticks + # tick_direction, + # tickfontcolor, + # tickfontfamily, + # tickfonthalign, + # tickfontrotation, + # tickfontsize, + # tickfontvalign, + ticks=false, #turns off tick marks + # widen, +) + +byublue = RGB(0.0, 46.0 / 255, 93.0 / 255) #BYU Blue +darkblue = RGB(0 / 255, 25 / 255, 50 / 255) +byured = RGB(155.0 / 255, 0, 0) #"BYU" Red +darkred = RGB(50 / 255, 0 / 255, 25 / 255) +middlegray = RGB(128.0 / 255, 128.0 / 255, 128.0 / 255) #Middle Gray +myblue = RGB(0.0 / 255, 92.0 / 255, 171.0 / 255) # royal blue +myred = RGB(192.0 / 255, 83.0 / 255, 103.0 / 255) # royal red +mygreen = RGB(143.0 / 255, 166.0 / 255, 81.0 / 255) # royal green +mygrey = RGB(130.0 / 255, 130.0 / 255, 130.0 / 255) # royal gray + diff --git a/v0.5.0/DuctAPE/theory_latex/figures/moveduct-coordinates-r-0.5.dat b/v0.5.0/DuctAPE/theory_latex/figures/moveduct-coordinates-r-0.5.dat new file mode 100644 index 00000000..6e191dc1 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/moveduct-coordinates-r-0.5.dat @@ -0,0 +1,161 @@ +1.0 0.5 +0.9996145181203615 0.4999874571948284 +0.998458666866564 0.4999461669092279 +0.9965342284774632 0.4998647578882578 +0.9938441702975689 0.49972483625240327 +0.9903926402016152 0.49950072716086424 +0.9861849601988383 0.4991505994526766 +0.9812276182268236 0.49865154415587076 +0.9755282581475768 0.49800496386099247 +0.9690956679612421 0.4971878697395057 +0.9619397662556434 0.49619020061114927 +0.9540715869125407 0.49499995138134245 +0.9455032620941839 0.49361008898590986 +0.9362480035363985 0.49201760657700533 +0.9263200821770461 0.49022458460926943 +0.9157348061512725 0.4882309153585629 +0.9045084971874737 0.4860394976590722 +0.8926584654403724 0.48366178751351785 +0.8802029828000155 0.4811066564330292 +0.8671612547178428 0.4783869124330361 +0.8535533905932737 0.47551384960525 +0.8394003727664707 0.47250121944206525 +0.8247240241650917 0.4693588366765855 +0.8095469746549169 0.4661062583192169 +0.7938926261462365 0.4627699242429729 +0.7777851165098011 0.4593823839385567 +0.7612492823579744 0.455973973243204 +0.7443106207484775 0.45259109715513124 +0.7269952498697734 0.4492485843756503 +0.709329868768714 0.44597248999158734 +0.6913417161825448 0.442770968564167 +0.6730585285387464 0.4396868294996106 +0.6545084971874737 0.4367989083914472 +0.6357202249325372 0.43419196443858954 +0.6167226819279527 0.4319712537022369 +0.5975451610080641 0.4301608985308173 +0.5782172325201153 0.4287134139550661 +0.5587686987289188 0.4275660912034096 +0.5392295478639224 0.42665736398552256 +0.5196299078795341 0.42595584311062806 +0.49999999999999994 0.42545399550849605 +0.48037009212046566 0.4251413097138338 +0.4607704521360775 0.4250060159264333 +0.4412313012710811 0.42504715108133384 +0.4217827674798845 0.42525630803900594 +0.40245483899193585 0.42563778212402104 +0.38327731807204724 0.42617184007826137 +0.36427977506746284 0.4268694889171172 +0.3454915028125263 0.4277123351826406 +0.3269414714612535 0.4287014199489947 +0.3086582838174551 0.42982879319118084 +0.29067013123128593 0.43109209245174074 +0.27300475013022657 0.43248533697313707 +0.2556893792515225 0.4340105427308687 +0.23875071764202555 0.43565392457229946 +0.22221488349019886 0.4374147237375926 +0.20610737385376343 0.4392788311487157 +0.19045302534508302 0.4412486003627474 +0.17527597583490812 0.4433104636902696 +0.1605996272335291 0.44546496933102564 +0.1464466094067262 0.4477108051845444 +0.13283874528215722 0.4500427482021645 +0.11979701719998453 0.45244651688226645 +0.10734153455962753 0.45490617878338646 +0.09549150281252627 0.4574085709100759 +0.08426519384872738 0.4599381917410533 +0.07367991782295386 0.46249495007427077 +0.06375199646360141 0.46507087713751816 +0.05449673790581605 0.46766906936872665 +0.04592841308745932 0.47028603244047074 +0.03806023374435663 0.4728815734937323 +0.03090433203875792 0.4754223833333907 +0.024471741852423234 0.4778789583545875 +0.01877238177317636 0.4802497608784987 +0.013815039801161721 0.48262488810338 +0.009607359798384785 0.4850999063267488 +0.006155829702431115 0.48773334129555723 +0.0034657715225368535 0.4905957833184573 +0.001541333133436018 0.49367404278621463 +0.0003854818796385495 0.496771636848239 +0.0 0.5000000000000002 +0.0003854818796385495 0.5032283631517613 +0.001541333133436018 0.5063259572137858 +0.0034657715225368535 0.509404216681543 +0.006155829702431115 0.5122666587044433 +0.009607359798384785 0.5149000936732514 +0.013815039801161721 0.5173751118966203 +0.01877238177317636 0.5197502391215019 +0.024471741852423234 0.5221210416454131 +0.03090433203875792 0.5245776166666097 +0.03806023374435663 0.5271184265062681 +0.04592841308745932 0.5297139675595297 +0.05449673790581605 0.5323309306312739 +0.06375199646360141 0.5349291228624822 +0.07367991782295386 0.5375050499257296 +0.08426519384872738 0.540061808258947 +0.09549150281252627 0.5425914290899245 +0.10734153455962753 0.545093821216614 +0.11979701719998453 0.5475534831177339 +0.13283874528215722 0.5499572517978359 +0.1464466094067262 0.552289194815456 +0.1605996272335291 0.5545350306689748 +0.17527597583490812 0.5566895363097308 +0.19045302534508302 0.5587513996372532 +0.20610737385376343 0.5607211688512845 +0.22221488349019886 0.5625852762624078 +0.23875071764202555 0.564346075427701 +0.2556893792515225 0.5659894572691317 +0.27300475013022657 0.5675146630268634 +0.29067013123128593 0.5689079075482597 +0.3086582838174551 0.5701712068088196 +0.3269414714612535 0.5712985800510059 +0.3454915028125263 0.5722876648173598 +0.36427977506746284 0.5731305110828833 +0.38327731807204724 0.5738281599217391 +0.40245483899193585 0.5743622178759793 +0.4217827674798845 0.5747436919609946 +0.4412313012710811 0.5749528489186666 +0.4607704521360775 0.5749939840735672 +0.48037009212046566 0.5748586902861667 +0.49999999999999994 0.5745460044915045 +0.5196299078795341 0.5740441568893722 +0.5392295478639224 0.5733426360144778 +0.5587686987289188 0.572433908796591 +0.5782172325201153 0.5712865860449342 +0.5975451610080641 0.5698391014691832 +0.6167226819279527 0.5680287462977633 +0.6357202249325372 0.5658080355614109 +0.6545084971874737 0.5632010916085533 +0.6730585285387464 0.5603131705003901 +0.6913417161825448 0.5572290314358334 +0.709329868768714 0.5540275100084132 +0.7269952498697734 0.55075141562435 +0.7443106207484775 0.5474089028448689 +0.7612492823579744 0.5440260267567967 +0.7777851165098011 0.5406176160614437 +0.7938926261462365 0.5372300757570276 +0.8095469746549169 0.5338937416807834 +0.8247240241650917 0.5306411633234148 +0.8394003727664707 0.5274987805579353 +0.8535533905932737 0.5244861503947503 +0.8671612547178428 0.5216130875669646 +0.8802029828000155 0.5188933435669714 +0.8926584654403724 0.5163382124864826 +0.9045084971874737 0.5139605023409284 +0.9157348061512725 0.5117690846414378 +0.9263200821770461 0.5097754153907309 +0.9362480035363985 0.507982393422995 +0.9455032620941839 0.5063899110140906 +0.9540715869125407 0.5050000486186581 +0.9619397662556434 0.5038097993888512 +0.9690956679612421 0.5028121302604948 +0.9755282581475768 0.5019950361390079 +0.9812276182268236 0.5013484558441298 +0.9861849601988383 0.5008494005473239 +0.9903926402016152 0.5004992728391361 +0.9938441702975689 0.5002751637475973 +0.9965342284774632 0.5001352421117428 +0.998458666866564 0.5000538330907726 +0.9996145181203615 0.500012542805172 +1.0 0.5000000000000004 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/moveduct-coordinates-r-0.875.dat b/v0.5.0/DuctAPE/theory_latex/figures/moveduct-coordinates-r-0.875.dat new file mode 100644 index 00000000..afb5d535 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/moveduct-coordinates-r-0.875.dat @@ -0,0 +1,161 @@ +1.0 0.875 +0.9996145181203615 0.8749874571948284 +0.998458666866564 0.8749461669092279 +0.9965342284774632 0.8748647578882578 +0.9938441702975689 0.8747248362524033 +0.9903926402016152 0.8745007271608642 +0.9861849601988383 0.8741505994526766 +0.9812276182268236 0.8736515441558708 +0.9755282581475768 0.8730049638609925 +0.9690956679612421 0.8721878697395057 +0.9619397662556434 0.8711902006111493 +0.9540715869125407 0.8699999513813425 +0.9455032620941839 0.8686100889859099 +0.9362480035363985 0.8670176065770053 +0.9263200821770461 0.8652245846092694 +0.9157348061512725 0.8632309153585629 +0.9045084971874737 0.8610394976590722 +0.8926584654403724 0.8586617875135178 +0.8802029828000155 0.8561066564330292 +0.8671612547178428 0.8533869124330361 +0.8535533905932737 0.85051384960525 +0.8394003727664707 0.8475012194420652 +0.8247240241650917 0.8443588366765855 +0.8095469746549169 0.8411062583192169 +0.7938926261462365 0.8377699242429729 +0.7777851165098011 0.8343823839385567 +0.7612492823579744 0.830973973243204 +0.7443106207484775 0.8275910971551312 +0.7269952498697734 0.8242485843756503 +0.709329868768714 0.8209724899915873 +0.6913417161825448 0.817770968564167 +0.6730585285387464 0.8146868294996106 +0.6545084971874737 0.8117989083914472 +0.6357202249325372 0.8091919644385895 +0.6167226819279527 0.8069712537022369 +0.5975451610080641 0.8051608985308173 +0.5782172325201153 0.8037134139550661 +0.5587686987289188 0.8025660912034096 +0.5392295478639224 0.8016573639855226 +0.5196299078795341 0.8009558431106281 +0.49999999999999994 0.800453995508496 +0.48037009212046566 0.8001413097138338 +0.4607704521360775 0.8000060159264333 +0.4412313012710811 0.8000471510813338 +0.4217827674798845 0.8002563080390059 +0.40245483899193585 0.800637782124021 +0.38327731807204724 0.8011718400782614 +0.36427977506746284 0.8018694889171172 +0.3454915028125263 0.8027123351826406 +0.3269414714612535 0.8037014199489947 +0.3086582838174551 0.8048287931911808 +0.29067013123128593 0.8060920924517407 +0.27300475013022657 0.8074853369731371 +0.2556893792515225 0.8090105427308687 +0.23875071764202555 0.8106539245722995 +0.22221488349019886 0.8124147237375926 +0.20610737385376343 0.8142788311487157 +0.19045302534508302 0.8162486003627474 +0.17527597583490812 0.8183104636902696 +0.1605996272335291 0.8204649693310256 +0.1464466094067262 0.8227108051845444 +0.13283874528215722 0.8250427482021645 +0.11979701719998453 0.8274465168822664 +0.10734153455962753 0.8299061787833865 +0.09549150281252627 0.8324085709100759 +0.08426519384872738 0.8349381917410533 +0.07367991782295386 0.8374949500742708 +0.06375199646360141 0.8400708771375182 +0.05449673790581605 0.8426690693687267 +0.04592841308745932 0.8452860324404707 +0.03806023374435663 0.8478815734937323 +0.03090433203875792 0.8504223833333907 +0.024471741852423234 0.8528789583545875 +0.01877238177317636 0.8552497608784987 +0.013815039801161721 0.85762488810338 +0.009607359798384785 0.8600999063267488 +0.006155829702431115 0.8627333412955572 +0.0034657715225368535 0.8655957833184573 +0.001541333133436018 0.8686740427862146 +0.0003854818796385495 0.871771636848239 +0.0 0.8750000000000002 +0.0003854818796385495 0.8782283631517613 +0.001541333133436018 0.8813259572137858 +0.0034657715225368535 0.884404216681543 +0.006155829702431115 0.8872666587044433 +0.009607359798384785 0.8899000936732514 +0.013815039801161721 0.8923751118966203 +0.01877238177317636 0.8947502391215019 +0.024471741852423234 0.8971210416454131 +0.03090433203875792 0.8995776166666097 +0.03806023374435663 0.9021184265062681 +0.04592841308745932 0.9047139675595297 +0.05449673790581605 0.9073309306312739 +0.06375199646360141 0.9099291228624822 +0.07367991782295386 0.9125050499257296 +0.08426519384872738 0.915061808258947 +0.09549150281252627 0.9175914290899245 +0.10734153455962753 0.920093821216614 +0.11979701719998453 0.9225534831177339 +0.13283874528215722 0.9249572517978359 +0.1464466094067262 0.927289194815456 +0.1605996272335291 0.9295350306689748 +0.17527597583490812 0.9316895363097308 +0.19045302534508302 0.9337513996372532 +0.20610737385376343 0.9357211688512845 +0.22221488349019886 0.9375852762624078 +0.23875071764202555 0.939346075427701 +0.2556893792515225 0.9409894572691317 +0.27300475013022657 0.9425146630268634 +0.29067013123128593 0.9439079075482597 +0.3086582838174551 0.9451712068088196 +0.3269414714612535 0.9462985800510059 +0.3454915028125263 0.9472876648173598 +0.36427977506746284 0.9481305110828833 +0.38327731807204724 0.9488281599217391 +0.40245483899193585 0.9493622178759793 +0.4217827674798845 0.9497436919609946 +0.4412313012710811 0.9499528489186666 +0.4607704521360775 0.9499939840735672 +0.48037009212046566 0.9498586902861667 +0.49999999999999994 0.9495460044915045 +0.5196299078795341 0.9490441568893722 +0.5392295478639224 0.9483426360144778 +0.5587686987289188 0.947433908796591 +0.5782172325201153 0.9462865860449342 +0.5975451610080641 0.9448391014691832 +0.6167226819279527 0.9430287462977633 +0.6357202249325372 0.9408080355614109 +0.6545084971874737 0.9382010916085533 +0.6730585285387464 0.9353131705003901 +0.6913417161825448 0.9322290314358334 +0.709329868768714 0.9290275100084132 +0.7269952498697734 0.92575141562435 +0.7443106207484775 0.9224089028448689 +0.7612492823579744 0.9190260267567967 +0.7777851165098011 0.9156176160614437 +0.7938926261462365 0.9122300757570276 +0.8095469746549169 0.9088937416807834 +0.8247240241650917 0.9056411633234148 +0.8394003727664707 0.9024987805579353 +0.8535533905932737 0.8994861503947503 +0.8671612547178428 0.8966130875669646 +0.8802029828000155 0.8938933435669714 +0.8926584654403724 0.8913382124864826 +0.9045084971874737 0.8889605023409284 +0.9157348061512725 0.8867690846414378 +0.9263200821770461 0.8847754153907309 +0.9362480035363985 0.882982393422995 +0.9455032620941839 0.8813899110140906 +0.9540715869125407 0.8800000486186581 +0.9619397662556434 0.8788097993888512 +0.9690956679612421 0.8778121302604948 +0.9755282581475768 0.8769950361390079 +0.9812276182268236 0.8763484558441298 +0.9861849601988383 0.8758494005473239 +0.9903926402016152 0.8754992728391361 +0.9938441702975689 0.8752751637475973 +0.9965342284774632 0.8751352421117428 +0.998458666866564 0.8750538330907726 +0.9996145181203615 0.875012542805172 +1.0 0.8750000000000004 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/moveduct-coordinates-r-1.25.dat b/v0.5.0/DuctAPE/theory_latex/figures/moveduct-coordinates-r-1.25.dat new file mode 100644 index 00000000..2a56cb72 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/moveduct-coordinates-r-1.25.dat @@ -0,0 +1,161 @@ +1.0 1.25 +0.9996145181203615 1.2499874571948284 +0.998458666866564 1.2499461669092278 +0.9965342284774632 1.2498647578882578 +0.9938441702975689 1.2497248362524034 +0.9903926402016152 1.2495007271608642 +0.9861849601988383 1.2491505994526766 +0.9812276182268236 1.2486515441558708 +0.9755282581475768 1.2480049638609925 +0.9690956679612421 1.2471878697395056 +0.9619397662556434 1.2461902006111494 +0.9540715869125407 1.2449999513813426 +0.9455032620941839 1.2436100889859099 +0.9362480035363985 1.2420176065770052 +0.9263200821770461 1.2402245846092694 +0.9157348061512725 1.238230915358563 +0.9045084971874737 1.236039497659072 +0.8926584654403724 1.2336617875135178 +0.8802029828000155 1.2311066564330293 +0.8671612547178428 1.2283869124330362 +0.8535533905932737 1.22551384960525 +0.8394003727664707 1.2225012194420652 +0.8247240241650917 1.2193588366765855 +0.8095469746549169 1.216106258319217 +0.7938926261462365 1.212769924242973 +0.7777851165098011 1.2093823839385567 +0.7612492823579744 1.205973973243204 +0.7443106207484775 1.2025910971551312 +0.7269952498697734 1.1992485843756504 +0.709329868768714 1.1959724899915873 +0.6913417161825448 1.192770968564167 +0.6730585285387464 1.1896868294996106 +0.6545084971874737 1.1867989083914472 +0.6357202249325372 1.1841919644385897 +0.6167226819279527 1.1819712537022369 +0.5975451610080641 1.1801608985308172 +0.5782172325201153 1.1787134139550661 +0.5587686987289188 1.1775660912034096 +0.5392295478639224 1.1766573639855227 +0.5196299078795341 1.175955843110628 +0.49999999999999994 1.1754539955084962 +0.48037009212046566 1.1751413097138337 +0.4607704521360775 1.1750060159264333 +0.4412313012710811 1.1750471510813338 +0.4217827674798845 1.175256308039006 +0.40245483899193585 1.1756377821240211 +0.38327731807204724 1.1761718400782613 +0.36427977506746284 1.1768694889171172 +0.3454915028125263 1.1777123351826406 +0.3269414714612535 1.1787014199489947 +0.3086582838174551 1.1798287931911808 +0.29067013123128593 1.1810920924517407 +0.27300475013022657 1.1824853369731372 +0.2556893792515225 1.1840105427308687 +0.23875071764202555 1.1856539245722995 +0.22221488349019886 1.1874147237375925 +0.20610737385376343 1.1892788311487157 +0.19045302534508302 1.1912486003627474 +0.17527597583490812 1.1933104636902696 +0.1605996272335291 1.1954649693310255 +0.1464466094067262 1.1977108051845444 +0.13283874528215722 1.2000427482021645 +0.11979701719998453 1.2024465168822664 +0.10734153455962753 1.2049061787833866 +0.09549150281252627 1.207408570910076 +0.08426519384872738 1.2099381917410534 +0.07367991782295386 1.2124949500742708 +0.06375199646360141 1.215070877137518 +0.05449673790581605 1.2176690693687267 +0.04592841308745932 1.2202860324404707 +0.03806023374435663 1.2228815734937322 +0.03090433203875792 1.2254223833333908 +0.024471741852423234 1.2278789583545875 +0.01877238177317636 1.2302497608784986 +0.013815039801161721 1.2326248881033801 +0.009607359798384785 1.2350999063267487 +0.006155829702431115 1.2377333412955571 +0.0034657715225368535 1.2405957833184573 +0.001541333133436018 1.2436740427862145 +0.0003854818796385495 1.2467716368482389 +0.0 1.2500000000000002 +0.0003854818796385495 1.2532283631517613 +0.001541333133436018 1.256325957213786 +0.0034657715225368535 1.259404216681543 +0.006155829702431115 1.2622666587044433 +0.009607359798384785 1.2649000936732513 +0.013815039801161721 1.2673751118966203 +0.01877238177317636 1.2697502391215019 +0.024471741852423234 1.2721210416454132 +0.03090433203875792 1.2745776166666096 +0.03806023374435663 1.277118426506268 +0.04592841308745932 1.2797139675595297 +0.05449673790581605 1.2823309306312738 +0.06375199646360141 1.2849291228624822 +0.07367991782295386 1.2875050499257297 +0.08426519384872738 1.290061808258947 +0.09549150281252627 1.2925914290899245 +0.10734153455962753 1.2950938212166139 +0.11979701719998453 1.297553483117734 +0.13283874528215722 1.299957251797836 +0.1464466094067262 1.302289194815456 +0.1605996272335291 1.304535030668975 +0.17527597583490812 1.3066895363097308 +0.19045302534508302 1.308751399637253 +0.20610737385376343 1.3107211688512845 +0.22221488349019886 1.312585276262408 +0.23875071764202555 1.314346075427701 +0.2556893792515225 1.3159894572691317 +0.27300475013022657 1.3175146630268633 +0.29067013123128593 1.3189079075482597 +0.3086582838174551 1.3201712068088196 +0.3269414714612535 1.321298580051006 +0.3454915028125263 1.3222876648173598 +0.36427977506746284 1.3231305110828833 +0.38327731807204724 1.3238281599217392 +0.40245483899193585 1.3243622178759793 +0.4217827674798845 1.3247436919609945 +0.4412313012710811 1.3249528489186666 +0.4607704521360775 1.3249939840735672 +0.48037009212046566 1.3248586902861668 +0.49999999999999994 1.3245460044915045 +0.5196299078795341 1.3240441568893722 +0.5392295478639224 1.3233426360144778 +0.5587686987289188 1.322433908796591 +0.5782172325201153 1.321286586044934 +0.5975451610080641 1.3198391014691833 +0.6167226819279527 1.3180287462977633 +0.6357202249325372 1.3158080355614108 +0.6545084971874737 1.3132010916085533 +0.6730585285387464 1.31031317050039 +0.6913417161825448 1.3072290314358335 +0.709329868768714 1.3040275100084133 +0.7269952498697734 1.30075141562435 +0.7443106207484775 1.297408902844869 +0.7612492823579744 1.2940260267567967 +0.7777851165098011 1.2906176160614438 +0.7938926261462365 1.2872300757570276 +0.8095469746549169 1.2838937416807834 +0.8247240241650917 1.280641163323415 +0.8394003727664707 1.2774987805579352 +0.8535533905932737 1.2744861503947504 +0.8671612547178428 1.2716130875669647 +0.8802029828000155 1.2688933435669714 +0.8926584654403724 1.2663382124864826 +0.9045084971874737 1.2639605023409284 +0.9157348061512725 1.2617690846414378 +0.9263200821770461 1.259775415390731 +0.9362480035363985 1.257982393422995 +0.9455032620941839 1.2563899110140906 +0.9540715869125407 1.255000048618658 +0.9619397662556434 1.253809799388851 +0.9690956679612421 1.2528121302604949 +0.9755282581475768 1.2519950361390078 +0.9812276182268236 1.2513484558441297 +0.9861849601988383 1.2508494005473239 +0.9903926402016152 1.2504992728391362 +0.9938441702975689 1.2502751637475973 +0.9965342284774632 1.2501352421117429 +0.998458666866564 1.2500538330907727 +0.9996145181203615 1.250012542805172 +1.0 1.2500000000000004 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/moveduct-coordinates-r-1.625.dat b/v0.5.0/DuctAPE/theory_latex/figures/moveduct-coordinates-r-1.625.dat new file mode 100644 index 00000000..f6360e96 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/moveduct-coordinates-r-1.625.dat @@ -0,0 +1,161 @@ +1.0 1.625 +0.9996145181203615 1.6249874571948284 +0.998458666866564 1.6249461669092278 +0.9965342284774632 1.6248647578882578 +0.9938441702975689 1.6247248362524034 +0.9903926402016152 1.6245007271608642 +0.9861849601988383 1.6241505994526766 +0.9812276182268236 1.6236515441558708 +0.9755282581475768 1.6230049638609925 +0.9690956679612421 1.6221878697395056 +0.9619397662556434 1.6211902006111494 +0.9540715869125407 1.6199999513813426 +0.9455032620941839 1.6186100889859099 +0.9362480035363985 1.6170176065770052 +0.9263200821770461 1.6152245846092694 +0.9157348061512725 1.613230915358563 +0.9045084971874737 1.611039497659072 +0.8926584654403724 1.6086617875135178 +0.8802029828000155 1.6061066564330293 +0.8671612547178428 1.6033869124330362 +0.8535533905932737 1.60051384960525 +0.8394003727664707 1.5975012194420652 +0.8247240241650917 1.5943588366765855 +0.8095469746549169 1.591106258319217 +0.7938926261462365 1.587769924242973 +0.7777851165098011 1.5843823839385567 +0.7612492823579744 1.580973973243204 +0.7443106207484775 1.5775910971551312 +0.7269952498697734 1.5742485843756504 +0.709329868768714 1.5709724899915873 +0.6913417161825448 1.567770968564167 +0.6730585285387464 1.5646868294996106 +0.6545084971874737 1.5617989083914472 +0.6357202249325372 1.5591919644385897 +0.6167226819279527 1.5569712537022369 +0.5975451610080641 1.5551608985308172 +0.5782172325201153 1.5537134139550661 +0.5587686987289188 1.5525660912034096 +0.5392295478639224 1.5516573639855227 +0.5196299078795341 1.550955843110628 +0.49999999999999994 1.5504539955084962 +0.48037009212046566 1.5501413097138337 +0.4607704521360775 1.5500060159264333 +0.4412313012710811 1.5500471510813338 +0.4217827674798845 1.550256308039006 +0.40245483899193585 1.5506377821240211 +0.38327731807204724 1.5511718400782613 +0.36427977506746284 1.5518694889171172 +0.3454915028125263 1.5527123351826406 +0.3269414714612535 1.5537014199489947 +0.3086582838174551 1.5548287931911808 +0.29067013123128593 1.5560920924517407 +0.27300475013022657 1.5574853369731372 +0.2556893792515225 1.5590105427308687 +0.23875071764202555 1.5606539245722995 +0.22221488349019886 1.5624147237375925 +0.20610737385376343 1.5642788311487157 +0.19045302534508302 1.5662486003627474 +0.17527597583490812 1.5683104636902696 +0.1605996272335291 1.5704649693310255 +0.1464466094067262 1.5727108051845444 +0.13283874528215722 1.5750427482021645 +0.11979701719998453 1.5774465168822664 +0.10734153455962753 1.5799061787833866 +0.09549150281252627 1.582408570910076 +0.08426519384872738 1.5849381917410534 +0.07367991782295386 1.5874949500742708 +0.06375199646360141 1.590070877137518 +0.05449673790581605 1.5926690693687267 +0.04592841308745932 1.5952860324404707 +0.03806023374435663 1.5978815734937322 +0.03090433203875792 1.6004223833333908 +0.024471741852423234 1.6028789583545875 +0.01877238177317636 1.6052497608784986 +0.013815039801161721 1.6076248881033801 +0.009607359798384785 1.6100999063267487 +0.006155829702431115 1.6127333412955571 +0.0034657715225368535 1.6155957833184573 +0.001541333133436018 1.6186740427862145 +0.0003854818796385495 1.6217716368482389 +0.0 1.6250000000000002 +0.0003854818796385495 1.6282283631517613 +0.001541333133436018 1.631325957213786 +0.0034657715225368535 1.634404216681543 +0.006155829702431115 1.6372666587044433 +0.009607359798384785 1.6399000936732513 +0.013815039801161721 1.6423751118966203 +0.01877238177317636 1.6447502391215019 +0.024471741852423234 1.6471210416454132 +0.03090433203875792 1.6495776166666096 +0.03806023374435663 1.652118426506268 +0.04592841308745932 1.6547139675595297 +0.05449673790581605 1.6573309306312738 +0.06375199646360141 1.6599291228624822 +0.07367991782295386 1.6625050499257297 +0.08426519384872738 1.665061808258947 +0.09549150281252627 1.6675914290899245 +0.10734153455962753 1.6700938212166139 +0.11979701719998453 1.672553483117734 +0.13283874528215722 1.674957251797836 +0.1464466094067262 1.677289194815456 +0.1605996272335291 1.679535030668975 +0.17527597583490812 1.6816895363097308 +0.19045302534508302 1.683751399637253 +0.20610737385376343 1.6857211688512845 +0.22221488349019886 1.687585276262408 +0.23875071764202555 1.689346075427701 +0.2556893792515225 1.6909894572691317 +0.27300475013022657 1.6925146630268633 +0.29067013123128593 1.6939079075482597 +0.3086582838174551 1.6951712068088196 +0.3269414714612535 1.696298580051006 +0.3454915028125263 1.6972876648173598 +0.36427977506746284 1.6981305110828833 +0.38327731807204724 1.6988281599217392 +0.40245483899193585 1.6993622178759793 +0.4217827674798845 1.6997436919609945 +0.4412313012710811 1.6999528489186666 +0.4607704521360775 1.6999939840735672 +0.48037009212046566 1.6998586902861668 +0.49999999999999994 1.6995460044915045 +0.5196299078795341 1.6990441568893722 +0.5392295478639224 1.6983426360144778 +0.5587686987289188 1.697433908796591 +0.5782172325201153 1.696286586044934 +0.5975451610080641 1.6948391014691833 +0.6167226819279527 1.6930287462977633 +0.6357202249325372 1.6908080355614108 +0.6545084971874737 1.6882010916085533 +0.6730585285387464 1.68531317050039 +0.6913417161825448 1.6822290314358335 +0.709329868768714 1.6790275100084133 +0.7269952498697734 1.67575141562435 +0.7443106207484775 1.672408902844869 +0.7612492823579744 1.6690260267567967 +0.7777851165098011 1.6656176160614438 +0.7938926261462365 1.6622300757570276 +0.8095469746549169 1.6588937416807834 +0.8247240241650917 1.655641163323415 +0.8394003727664707 1.6524987805579352 +0.8535533905932737 1.6494861503947504 +0.8671612547178428 1.6466130875669647 +0.8802029828000155 1.6438933435669714 +0.8926584654403724 1.6413382124864826 +0.9045084971874737 1.6389605023409284 +0.9157348061512725 1.6367690846414378 +0.9263200821770461 1.634775415390731 +0.9362480035363985 1.632982393422995 +0.9455032620941839 1.6313899110140906 +0.9540715869125407 1.630000048618658 +0.9619397662556434 1.628809799388851 +0.9690956679612421 1.6278121302604949 +0.9755282581475768 1.6269950361390078 +0.9812276182268236 1.6263484558441297 +0.9861849601988383 1.6258494005473239 +0.9903926402016152 1.6254992728391362 +0.9938441702975689 1.6252751637475973 +0.9965342284774632 1.6251352421117429 +0.998458666866564 1.6250538330907727 +0.9996145181203615 1.625012542805172 +1.0 1.6250000000000004 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/moveduct-coordinates-r-2.0.dat b/v0.5.0/DuctAPE/theory_latex/figures/moveduct-coordinates-r-2.0.dat new file mode 100644 index 00000000..d5241b4d --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/moveduct-coordinates-r-2.0.dat @@ -0,0 +1,161 @@ +1.0 2.0 +0.9996145181203615 1.9999874571948284 +0.998458666866564 1.9999461669092278 +0.9965342284774632 1.9998647578882578 +0.9938441702975689 1.9997248362524034 +0.9903926402016152 1.9995007271608642 +0.9861849601988383 1.9991505994526766 +0.9812276182268236 1.9986515441558708 +0.9755282581475768 1.9980049638609925 +0.9690956679612421 1.9971878697395056 +0.9619397662556434 1.9961902006111494 +0.9540715869125407 1.9949999513813426 +0.9455032620941839 1.9936100889859099 +0.9362480035363985 1.9920176065770052 +0.9263200821770461 1.9902245846092694 +0.9157348061512725 1.988230915358563 +0.9045084971874737 1.986039497659072 +0.8926584654403724 1.9836617875135178 +0.8802029828000155 1.9811066564330293 +0.8671612547178428 1.9783869124330362 +0.8535533905932737 1.97551384960525 +0.8394003727664707 1.9725012194420652 +0.8247240241650917 1.9693588366765855 +0.8095469746549169 1.966106258319217 +0.7938926261462365 1.962769924242973 +0.7777851165098011 1.9593823839385567 +0.7612492823579744 1.955973973243204 +0.7443106207484775 1.9525910971551312 +0.7269952498697734 1.9492485843756504 +0.709329868768714 1.9459724899915873 +0.6913417161825448 1.942770968564167 +0.6730585285387464 1.9396868294996106 +0.6545084971874737 1.9367989083914472 +0.6357202249325372 1.9341919644385897 +0.6167226819279527 1.9319712537022369 +0.5975451610080641 1.9301608985308172 +0.5782172325201153 1.9287134139550661 +0.5587686987289188 1.9275660912034096 +0.5392295478639224 1.9266573639855227 +0.5196299078795341 1.925955843110628 +0.49999999999999994 1.9254539955084962 +0.48037009212046566 1.9251413097138337 +0.4607704521360775 1.9250060159264333 +0.4412313012710811 1.9250471510813338 +0.4217827674798845 1.925256308039006 +0.40245483899193585 1.9256377821240211 +0.38327731807204724 1.9261718400782613 +0.36427977506746284 1.9268694889171172 +0.3454915028125263 1.9277123351826406 +0.3269414714612535 1.9287014199489947 +0.3086582838174551 1.9298287931911808 +0.29067013123128593 1.9310920924517407 +0.27300475013022657 1.9324853369731372 +0.2556893792515225 1.9340105427308687 +0.23875071764202555 1.9356539245722995 +0.22221488349019886 1.9374147237375925 +0.20610737385376343 1.9392788311487157 +0.19045302534508302 1.9412486003627474 +0.17527597583490812 1.9433104636902696 +0.1605996272335291 1.9454649693310255 +0.1464466094067262 1.9477108051845444 +0.13283874528215722 1.9500427482021645 +0.11979701719998453 1.9524465168822664 +0.10734153455962753 1.9549061787833866 +0.09549150281252627 1.957408570910076 +0.08426519384872738 1.9599381917410534 +0.07367991782295386 1.9624949500742708 +0.06375199646360141 1.965070877137518 +0.05449673790581605 1.9676690693687267 +0.04592841308745932 1.9702860324404707 +0.03806023374435663 1.9728815734937322 +0.03090433203875792 1.9754223833333908 +0.024471741852423234 1.9778789583545875 +0.01877238177317636 1.9802497608784986 +0.013815039801161721 1.9826248881033801 +0.009607359798384785 1.9850999063267487 +0.006155829702431115 1.9877333412955571 +0.0034657715225368535 1.9905957833184573 +0.001541333133436018 1.9936740427862145 +0.0003854818796385495 1.9967716368482389 +0.0 2.0 +0.0003854818796385495 2.003228363151761 +0.001541333133436018 2.006325957213786 +0.0034657715225368535 2.009404216681543 +0.006155829702431115 2.0122666587044433 +0.009607359798384785 2.0149000936732513 +0.013815039801161721 2.0173751118966203 +0.01877238177317636 2.019750239121502 +0.024471741852423234 2.022121041645413 +0.03090433203875792 2.0245776166666096 +0.03806023374435663 2.0271184265062683 +0.04592841308745932 2.0297139675595295 +0.05449673790581605 2.032330930631274 +0.06375199646360141 2.034929122862482 +0.07367991782295386 2.0375050499257297 +0.08426519384872738 2.040061808258947 +0.09549150281252627 2.0425914290899243 +0.10734153455962753 2.045093821216614 +0.11979701719998453 2.047553483117734 +0.13283874528215722 2.049957251797836 +0.1464466094067262 2.0522891948154562 +0.1605996272335291 2.054535030668975 +0.17527597583490812 2.056689536309731 +0.19045302534508302 2.058751399637253 +0.20610737385376343 2.0607211688512845 +0.22221488349019886 2.062585276262408 +0.23875071764202555 2.064346075427701 +0.2556893792515225 2.065989457269132 +0.27300475013022657 2.0675146630268633 +0.29067013123128593 2.06890790754826 +0.3086582838174551 2.0701712068088196 +0.3269414714612535 2.071298580051006 +0.3454915028125263 2.0722876648173596 +0.36427977506746284 2.0731305110828835 +0.38327731807204724 2.073828159921739 +0.40245483899193585 2.0743622178759793 +0.4217827674798845 2.0747436919609945 +0.4412313012710811 2.0749528489186666 +0.4607704521360775 2.074993984073567 +0.48037009212046566 2.0748586902861668 +0.49999999999999994 2.0745460044915047 +0.5196299078795341 2.0740441568893724 +0.5392295478639224 2.0733426360144778 +0.5587686987289188 2.072433908796591 +0.5782172325201153 2.071286586044934 +0.5975451610080641 2.0698391014691833 +0.6167226819279527 2.068028746297763 +0.6357202249325372 2.065808035561411 +0.6545084971874737 2.063201091608553 +0.6730585285387464 2.06031317050039 +0.6913417161825448 2.0572290314358335 +0.709329868768714 2.0540275100084133 +0.7269952498697734 2.05075141562435 +0.7443106207484775 2.047408902844869 +0.7612492823579744 2.0440260267567965 +0.7777851165098011 2.0406176160614438 +0.7938926261462365 2.0372300757570274 +0.8095469746549169 2.0338937416807834 +0.8247240241650917 2.030641163323415 +0.8394003727664707 2.027498780557935 +0.8535533905932737 2.0244861503947504 +0.8671612547178428 2.0216130875669647 +0.8802029828000155 2.0188933435669716 +0.8926584654403724 2.016338212486483 +0.9045084971874737 2.0139605023409284 +0.9157348061512725 2.011769084641438 +0.9263200821770461 2.009775415390731 +0.9362480035363985 2.007982393422995 +0.9455032620941839 2.0063899110140904 +0.9540715869125407 2.0050000486186583 +0.9619397662556434 2.003809799388851 +0.9690956679612421 2.002812130260495 +0.9755282581475768 2.0019950361390078 +0.9812276182268236 2.0013484558441297 +0.9861849601988383 2.000849400547324 +0.9903926402016152 2.000499272839136 +0.9938441702975689 2.000275163747597 +0.9965342284774632 2.000135242111743 +0.998458666866564 2.0000538330907727 +0.9996145181203615 2.0000125428051723 +1.0 2.0000000000000004 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/naca-651210scaled.dat b/v0.5.0/DuctAPE/theory_latex/figures/naca-651210scaled.dat new file mode 100644 index 00000000..14b3da53 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/naca-651210scaled.dat @@ -0,0 +1,161 @@ +1.0 -0.0014999999999999979 +0.9996145181203615 -0.0013357489044751388 +0.998458666866564 -0.0008451693725859333 +0.9965342284774632 -3.505979468483838e-5 +0.9938441702975689 0.0010823316333064335 +0.9903926402016152 0.0024879522219482192 +0.9861849601988383 0.0041540911217252474 +0.9812276182268236 0.0060420687316846515 +0.9755282581475768 0.008099522062517045 +0.9690956679612421 0.01025734889064359 +0.9619397662556434 0.012426382462733082 +0.9540715869125407 0.01449387624751815 +0.9455032620941839 0.016365723493259345 +0.9362480035363985 0.01818461024993194 +0.9263200821770461 0.019937931000401834 +0.9157348061512725 0.021572115403335604 +0.9045084971874737 0.023028272045910143 +0.8926584654403724 0.024309146099256256 +0.8802029828000155 0.02559145184794057 +0.8671612547178428 0.026774953263210954 +0.8535533905932737 0.027698871642290956 +0.8394003727664707 0.028303292554582575 +0.8247240241650917 0.028798786492765367 +0.8095469746549169 0.02915756340931234 +0.7938926261462365 0.02934102566747955 +0.7777851165098011 0.0293921784102321 +0.7612492823579744 0.029316758529958475 +0.7443106207484775 0.029104276570316476 +0.7269952498697734 0.02876251736727236 +0.709329868768714 0.028268706898748972 +0.6913417161825448 0.027596422158147754 +0.6730585285387464 0.026770637271679727 +0.6545084971874737 0.025790378149747863 +0.6357202249325372 0.024722283623049464 +0.6167226819279527 0.02369104685378018 +0.5975451610080641 0.0226067611046932 +0.5782172325201153 0.02152491094842985 +0.5587686987289188 0.02047600251745836 +0.5392295478639224 0.019421485777389155 +0.5196299078795341 0.018421378959147514 +0.49999999999999994 0.017480000000000002 +0.48037009212046566 0.01660253489338604 +0.4607704521360775 0.015807812790958636 +0.4412313012710811 0.015097938237200563 +0.4217827674798845 0.01441420141592184 +0.40245483899193585 0.013768276286303123 +0.38327731807204724 0.013140622512856234 +0.36427977506746284 0.012483298081587414 +0.3454915028125263 0.011819392007741923 +0.3269414714612535 0.0111287421302326 +0.3086582838174551 0.010419147328001664 +0.29067013123128593 0.009711282580058982 +0.27300475013022657 0.00899089850065729 +0.2556893792515225 0.008251292265890851 +0.23875071764202555 0.007486441991981681 +0.22221488349019886 0.00669350337114831 +0.20610737385376343 0.005889921823389106 +0.19045302534508302 0.0050924142918357465 +0.17527597583490812 0.004304274582742247 +0.1605996272335291 0.0035147043382693505 +0.1464466094067262 0.002715631939031342 +0.13283874528215722 0.0019175744049773347 +0.11979701719998453 0.0011323876873289423 +0.10734153455962753 0.0003670180750342117 +0.09549150281252627 -0.0003696492321136023 +0.08426519384872738 -0.001060962074928281 +0.07367991782295386 -0.0017361433354298357 +0.06375199646360141 -0.002373938924438254 +0.05449673790581605 -0.0029668047947375327 +0.04592841308745932 -0.003514027361371578 +0.03806023374435663 -0.003940468707036128 +0.03090433203875792 -0.004281348176499713 +0.024471741852423234 -0.004573375727256496 +0.01877238177317636 -0.004748567215767399 +0.013815039801161721 -0.004812485544049572 +0.009607359798384785 -0.004762512461571003 +0.006155829702431115 -0.004634668579661225 +0.0034657715225368535 -0.0038456196519045696 +0.001541333133436018 -0.001957359893178279 +0.0003854818796385495 -0.000506525321491635 +0.0 0.0 +0.0003854818796385495 0.001013567363255306 +0.001541333133436018 0.003956139862476688 +0.0034657715225368535 0.008179790902531705 +0.006155829702431115 0.011776204074623065 +0.009607359798384785 0.015074885612148318 +0.013815039801161721 0.018747834498158065 +0.01877238177317636 0.022593055308358066 +0.024471741852423234 0.026530433688664562 +0.03090433203875792 0.030566759004538965 +0.03806023374435663 0.03481387620015293 +0.04592841308745932 0.03912305928062222 +0.05449673790581605 0.04335772865148545 +0.06375199646360141 0.047671227971223924 +0.07367991782295386 0.051984948008078666 +0.08426519384872738 0.056258174142870015 +0.09549150281252627 0.060520360227304615 +0.10734153455962753 0.06466365948143672 +0.11979701719998453 0.0688003869608201 +0.13283874528215722 0.07288886301355932 +0.1464466094067262 0.07685774188125818 +0.1605996272335291 0.0806671833841382 +0.17527597583490812 0.08435309620189729 +0.19045302534508302 0.0878772068925916 +0.20610737385376343 0.09120892696562927 +0.22221488349019886 0.09442444452624454 +0.23875071764202555 0.09748504440279407 +0.2556893792515225 0.10031910883306197 +0.27300475013022657 0.1029638237066742 +0.29067013123128593 0.1053963801022326 +0.3086582838174551 0.10757043743137923 +0.3269414714612535 0.10951956303786706 +0.3454915028125263 0.11124074152714178 +0.36427977506746284 0.11272348443150776 +0.38327731807204724 0.11396127226941481 +0.40245483899193585 0.11493929942074188 +0.4217827674798845 0.11560366365034633 +0.4412313012710811 0.11594002500933862 +0.4607704521360775 0.11595737004085638 +0.48037009212046566 0.11560677360992042 +0.49999999999999994 0.11488000000000001 +0.5196299078795341 0.11378792954415894 +0.5392295478639224 0.11234369705442586 +0.5587686987289188 0.11056196072908085 +0.5782172325201153 0.10849295411783832 +0.5975451610080641 0.1061008146023518 +0.6167226819279527 0.10341084792849087 +0.6357202249325372 0.10048449889004571 +0.6545084971874737 0.09726975538513585 +0.6730585285387464 0.09387766789641994 +0.6913417161825448 0.09039316260123316 +0.709329868768714 0.08683895578354266 +0.7269952498697734 0.08319220484005915 +0.7443106207484775 0.07946612452863634 +0.7612492823579744 0.07565472786481728 +0.7777851165098011 0.07172576948716079 +0.7938926261462365 0.06775782312153886 +0.8095469746549169 0.06380077210454727 +0.8247240241650917 0.059811291922451576 +0.8394003727664707 0.05582822932836525 +0.8535533905932737 0.0518947676976783 +0.8671612547178428 0.04803538956084938 +0.8802029828000155 0.04427907283932106 +0.8926584654403724 0.04065571473374688 +0.9045084971874737 0.03717873352658638 +0.9157348061512725 0.03376096435947947 +0.9263200821770461 0.030410024427774105 +0.9362480035363985 0.02716050504464273 +0.9455032620941839 0.024043486018599108 +0.9540715869125407 0.021061773150899542 +0.9619397662556434 0.018110418137949245 +0.9690956679612421 0.015249723804060592 +0.9755282581475768 0.01255328219511755 +0.9812276182268236 0.010078627037165597 +0.9861849601988383 0.007869731989571001 +0.9903926402016152 0.005959371682961431 +0.9938441702975689 0.004371289823211897 +0.9965342284774632 0.003122124072408725 +0.998458666866564 0.0022230436755584556 +0.9996145181203615 0.0016810627823187884 +1.0 0.001500000000000003 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/naca-651210scaled.tikz b/v0.5.0/DuctAPE/theory_latex/figures/naca-651210scaled.tikz new file mode 100644 index 00000000..65568540 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/naca-651210scaled.tikz @@ -0,0 +1,4 @@ +\begin{tikzpicture}[scale=7] + %Airfoil + \draw[ultra thick,primary] plot[smooth] file{figures/naca651210scaled_coordinates.dat}; +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/naca-65410scaled.dat b/v0.5.0/DuctAPE/theory_latex/figures/naca-65410scaled.dat new file mode 100644 index 00000000..68f2fe18 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/naca-65410scaled.dat @@ -0,0 +1,161 @@ +1.0 -0.0014999999999999996 +0.9996145181203615 -0.001450853530423022 +0.998458666866564 -0.0013044608069101074 +0.9965342284774632 -0.0010640812205928007 +0.9938441702975689 -0.00073554218553301 +0.9903926402016152 -0.00032782241302166393 +0.9861849601988383 0.00014615008462649814 +0.9812276182268236 0.0006685034754012362 +0.9755282581475768 0.0012152539766388474 +0.9690956679612421 0.0017549913257421967 +0.9619397662556434 0.002247448929172307 +0.9540715869125407 0.002641993114712253 +0.9455032620941839 0.0028959869893065266 +0.9362480035363985 0.003069571818407053 +0.9263200821770461 0.003155279191009854 +0.9157348061512725 0.003127755482397244 +0.9045084971874737 0.002959270188411304 +0.8926584654403724 0.002654192488255212 +0.8802029828000155 0.0023012769521866955 +0.8671612547178428 0.0018381723218575102 +0.8535533905932737 0.0011676585289678715 +0.8394003727664707 0.0002594519269332983 +0.8247240241650917 -0.0007379063123069459 +0.8095469746549169 -0.0018285484286408634 +0.7938926261462365 -0.003025257262193253 +0.7777851165098011 -0.004313804222232199 +0.7612492823579744 -0.005673736934966776 +0.7443106207484775 -0.007085857129334461 +0.7269952498697734 -0.008555723368504811 +0.709329868768714 -0.010100513995348233 +0.6913417161825448 -0.011733439428312547 +0.6730585285387464 -0.01344546445102016 +0.6545084971874737 -0.015229666361880036 +0.6357202249325372 -0.017013310547982254 +0.6167226819279527 -0.018676251406976832 +0.5975451610080641 -0.020295764130988464 +0.5782172325201153 -0.02181437740699287 +0.5587686987289188 -0.023203318564721374 +0.5392295478639224 -0.02450024183321585 +0.5196299078795341 -0.025648390541954634 +0.49999999999999994 -0.026639999999999997 +0.48037009212046566 -0.027467234607716107 +0.4607704521360775 -0.02811391481964637 +0.4412313012710811 -0.028581382844979162 +0.4217827674798845 -0.028925086939500882 +0.40245483899193585 -0.029134248949378543 +0.38327731807204724 -0.02922667574790078 +0.36427977506746284 -0.029252296089444307 +0.3454915028125263 -0.029200652503885975 +0.3269414714612535 -0.029087359592467284 +0.3086582838174551 -0.028910714258458634 +0.29067013123128593 -0.028657938314038213 +0.27300475013022657 -0.028327342235119873 +0.2556893792515225 -0.02793884143376009 +0.23875071764202555 -0.027504053472943567 +0.22221488349019886 -0.02701247926131597 +0.20610737385376343 -0.02647636110628368 +0.19045302534508302 -0.025897459436306697 +0.17527597583490812 -0.025248182345470934 +0.1605996272335291 -0.024545924902533163 +0.1464466094067262 -0.023808826001065164 +0.13283874528215722 -0.023017904734534883 +0.11979701719998453 -0.022178537195387402 +0.10734153455962753 -0.021309874443789432 +0.09549150281252627 -0.020419886230510605 +0.08426519384872738 -0.019460032764242192 +0.07367991782295386 -0.018485744892979446 +0.06375199646360141 -0.01747303527336681 +0.05449673790581605 -0.01643044608032017 +0.04592841308745932 -0.01538370466778846 +0.03806023374435663 -0.014231604538075062 +0.03090433203875792 -0.01304315178584613 +0.024471741852423234 -0.011892395047725851 +0.01877238177317636 -0.01069672991329762 +0.013815039801161721 -0.009457601862085736 +0.009607359798384785 -0.008199970178430108 +0.006155829702431115 -0.007015180411315171 +0.0034657715225368535 -0.005290343402113614 +0.001541333133436018 -0.0026236198829444153 +0.0003854818796385495 -0.0006755393354128587 +0.0 0.0 +0.0003854818796385495 0.0008445533493340823 +0.001541333133436018 0.003289879872710552 +0.0034657715225368535 0.0067350671523226605 +0.006155829702431115 0.009395692242969118 +0.009607359798384785 0.011637427895289213 +0.013815039801161721 0.0141027181801219 +0.01877238177317636 0.016644892610827845 +0.024471741852423234 0.019211414368195207 +0.03090433203875792 0.02180495539519255 +0.03806023374435663 0.024522740369113994 +0.04592841308745932 0.02725338197420534 +0.05449673790581605 0.029894087365902808 +0.06375199646360141 0.032572131622295365 +0.07367991782295386 0.03523534645052906 +0.08426519384872738 0.03785910345355611 +0.09549150281252627 0.04047012322890761 +0.10734153455962753 0.04298676696261308 +0.11979701719998453 0.045489462078103754 +0.13283874528215722 0.0479533838740471 +0.1464466094067262 0.05033328394116167 +0.1605996272335291 0.05260655414333568 +0.17527597583490812 0.054800639273684115 +0.19045302534508302 0.05688733316444915 +0.20610737385376343 0.05884264403595647 +0.22221488349019886 0.06071846189378026 +0.23875071764202555 0.062494548937868814 +0.2556893792515225 0.06412897513341104 +0.27300475013022657 0.06564558297089704 +0.29067013123128593 0.0670271592081354 +0.3086582838174551 0.06824057584491894 +0.3269414714612535 0.06930346131516718 +0.3454915028125263 0.0702206970155139 +0.36427977506746284 0.07098789026047603 +0.38327731807204724 0.0715939740086578 +0.40245483899193585 0.07203677418506022 +0.4217827674798845 0.0722643752949236 +0.4412313012710811 0.0722607039271589 +0.4607704521360775 0.07203564243025137 +0.48037009212046566 0.07153700410881826 +0.49999999999999994 0.07076 +0.5196299078795341 0.06971816004305678 +0.5392295478639224 0.06842196944382085 +0.5587686987289188 0.06688263964690111 +0.5782172325201153 0.0651536657624156 +0.5975451610080641 0.06319828936667013 +0.6167226819279527 0.06104354966773386 +0.6357202249325372 0.058748904719013985 +0.6545084971874737 0.05624971087350795 +0.6730585285387464 0.05366156617372006 +0.6913417161825448 0.051063301014772855 +0.709329868768714 0.04846973488944545 +0.7269952498697734 0.04587396410428199 +0.7443106207484775 0.0432759908289854 +0.7612492823579744 0.04066423239989203 +0.7777851165098011 0.038019786854696494 +0.7938926261462365 0.03539154019186605 +0.8095469746549169 0.03281466026659407 +0.8247240241650917 0.03027459911737926 +0.8394003727664707 0.02778438870071598 +0.8535533905932737 0.025363554584355217 +0.8671612547178428 0.02309860861949594 +0.8802029828000155 0.020988897943567182 +0.8926584654403724 0.01900076112274584 +0.9045084971874737 0.017109731669087535 +0.9157348061512725 0.015316604438541114 +0.9263200821770461 0.013627372618382125 +0.9362480035363985 0.012045466613117839 +0.9455032620941839 0.010573749514646291 +0.9540715869125407 0.009209890018093643 +0.9619397662556434 0.007931484604388472 +0.9690956679612421 0.006747366239159199 +0.9755282581475768 0.005669014109239351 +0.9812276182268236 0.00470506178088218 +0.9861849601988383 0.0038617909524722516 +0.9903926402016152 0.003143597047991548 +0.9938441702975689 0.0025534160043724535 +0.9965342284774632 0.0020931026465007625 +0.998458666866564 0.0017637522412342814 +0.9996145181203615 0.0015659581563709053 +1.0 0.0015000000000000013 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/naca-65410scaled.tikz b/v0.5.0/DuctAPE/theory_latex/figures/naca-65410scaled.tikz new file mode 100644 index 00000000..8390c0d4 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/naca-65410scaled.tikz @@ -0,0 +1,4 @@ +\begin{tikzpicture}[scale=7] + %Airfoil + \draw[ultra thick,primary] plot[smooth] file{figures/naca-65410scaled.dat}; +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/naca4412_smoothed_polar.jl b/v0.5.0/DuctAPE/theory_latex/figures/naca4412_smoothed_polar.jl new file mode 100644 index 00000000..95097718 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/naca4412_smoothed_polar.jl @@ -0,0 +1,363 @@ +ald = [ + -17.0 -1.3263761926191644 0.03274774225137401 + -16.9 -1.3284019384451278 0.032078105905770565 + -16.8 -1.3301543349855023 0.0314152645136106 + -16.7 -1.331636378557983 0.0307604786412915 + -16.6 -1.3328510654802654 0.030115008855210748 + -16.5 -1.3338013920700442 0.029480115721765728 + -16.4 -1.3344903546450155 0.0288570598073539 + -16.3 -1.3349209495228738 0.02824710167837272 + -16.2 -1.3350961730213144 0.027651501901219573 + -16.1 -1.335019021458033 0.02707152104229195 + -16.0 -1.334692491150725 0.026508419667987226 + -15.9 -1.3341195784170845 0.025963458344702876 + -15.8 -1.3333032795748079 0.02543789763883633 + -15.7 -1.3322465909415897 0.024932998116785003 + -15.6 -1.3309525088351257 0.02445002034494635 + -15.5 -1.3294240295731108 0.023990224889717793 + -15.4 -1.3276641494732404 0.023554872317496773 + -15.3 -1.3256758648532094 0.023145223194680722 + -15.2 -1.3234621720307134 0.02276253808766707 + -15.1 -1.3210260673234475 0.02240807756285326 + -15.0 -1.3183705470491074 0.02208310218663672 + -14.9 -1.3155885053659153 0.021775799369370918 + -14.8 -1.3127454998545929 0.021473570332794213 + -14.7 -1.3098035219665838 0.021176496360381335 + -14.6 -1.3067245631533313 0.020884658735607062 + -14.5 -1.3034706148662791 0.02059813874194613 + -14.4 -1.3000036685568699 0.020317017662873298 + -14.3 -1.296285715676548 0.020041376781863313 + -14.2 -1.292278747676756 0.01977129738239093 + -14.1 -1.287944756008938 0.019506860747930913 + -14.0 -1.2832457321245372 0.019248148161958002 + -13.9 -1.2781436674749966 0.018995240907946947 + -13.8 -1.2726005535117604 0.018748220269372513 + -13.7 -1.2665783816862708 0.01850716752970944 + -13.6 -1.2600391434499725 0.01827216397243249 + -13.5 -1.252944830254308 0.018043290881016413 + -13.4 -1.2452574335507216 0.017820629538935956 + -13.3 -1.236938944790656 0.017604261229665883 + -13.2 -1.2279513554255543 0.017394267236680933 + -13.1 -1.218256656906861 0.017190728843455867 + -13.0 -1.2078168406860186 0.016993727333465436 + -12.9 -1.1969545268352275 0.016799744583548246 + -12.8 -1.186018188207181 0.016605353818553277 + -12.7 -1.1750085954240634 0.016410773343970862 + -12.6 -1.1639265191080592 0.016216221465291326 + -12.5 -1.1527727298813533 0.016021916488005 + -12.4 -1.1415479983661292 0.015828076717602207 + -12.3 -1.1302530951845715 0.01563492045957328 + -12.2 -1.1188887909588647 0.015442666019408535 + -12.1 -1.1074558563111927 0.015251531702598313 + -12.0 -1.0959550618637404 0.015061735814632937 + -11.9 -1.0843871782386918 0.01487349666100273 + -11.8 -1.072752976058231 0.014687032547198026 + -11.7 -1.0610532259445424 0.014502561778709145 + -11.6 -1.0492886985198109 0.014320302661026421 + -11.5 -1.0374601644062207 0.014140473499640182 + -11.4 -1.0255683942259552 0.013963292600040752 + -11.3 -1.0136141586011995 0.013788978267718457 + -11.2 -1.001598228154138 0.013617748808163627 + -11.1 -0.9895213735069548 0.01344982252686659 + -11.0 -0.9773843652818341 0.013285417729317676 + -10.9 -0.9652104621446128 0.013123256442351834 + -10.8 -0.9530235929458453 0.012961988738554107 + -10.7 -0.9408255335847938 0.012801724992039944 + -10.6 -0.9286180599607206 0.01264257557692481 + -10.5 -0.9164029479728876 0.012484650867324159 + -10.4 -0.9041819735205565 0.012328061237353444 + -10.3 -0.8919569125029898 0.012172917061128125 + -10.2 -0.8797295408194489 0.012019328712763655 + -10.1 -0.8675016343691964 0.011867406566375494 + -10.0 -0.855274969051494 0.011717260996079096 + -9.9 -0.8430513207656039 0.01156900237598992 + -9.8 -0.8308324654107879 0.01142274108022342 + -9.7 -0.818620178886308 0.011278587482895047 + -9.6 -0.8064162370914264 0.01113665195812027 + -9.5 -0.7942224159254052 0.010997044880014536 + -9.4 -0.7820404912875063 0.010859876622693302 + -9.3 -0.7698722390769915 0.01072525756027203 + -9.2 -0.757719435193123 0.010593298066866166 + -9.1 -0.7455838555351627 0.010464108516591176 + -9.0 -0.7334672760023729 0.010337799283562514 + -8.9 -0.7213476671605121 0.010213971815691194 + -8.8 -0.7092064757887554 0.010092188424284365 + -8.7 -0.6970506921064885 0.009972500778551687 + -8.6 -0.6848873063330984 0.00985496054770282 + -8.5 -0.6727233086879707 0.009739619400947424 + -8.4 -0.660565689390492 0.009626529007495154 + -8.3 -0.6484214386600484 0.009515741036555675 + -8.2 -0.6362975467160258 0.009407307157338637 + -8.1 -0.624201003777811 0.009301279039053707 + -8.0 -0.6121388000647897 0.00919770835091054 + -7.9 -0.6001179257963486 0.009096646762118799 + -7.8 -0.5881453711918734 0.008998145941888138 + -7.7 -0.5762281264707507 0.008902257559428221 + -7.6 -0.5643731818523667 0.008809033283948702 + -7.5 -0.5525875275561075 0.00871852478465924 + -7.4 -0.5408781538013594 0.0086307837307695 + -7.3 -0.5292520508075083 0.008545861791489135 + -7.2 -0.517716208793941 0.008463810636027806 + -7.1 -0.5062776179800431 0.00838468193359517 + -7.0 -0.49494326858520143 0.00830852735340089 + -6.9 -0.48371911033487036 0.008234355627174653 + -6.8 -0.4726022124991179 0.008161172967873453 + -6.7 -0.4615862446142507 0.008089027266547895 + -6.6 -0.45066487621657486 0.008017966414248583 + -6.5 -0.43983177684239705 0.007948038302026126 + -6.4 -0.4290806160280234 0.007879290820931133 + -6.3 -0.41840506330976024 0.007811771862014209 + -6.2 -0.4077987882239142 0.00774552931632596 + -6.1 -0.3972554603067914 0.007680611074916994 + -6.0 -0.3867687490946983 0.007617065028837918 + -5.9 -0.3763323241239414 0.007554939069139339 + -5.8 -0.36593985493082676 0.007494281086871864 + -5.7 -0.355585011051661 0.007435138973086099 + -5.6 -0.3452614620227504 0.007377560618832652 + -5.5 -0.3349628773804013 0.007321593915162128 + -5.4 -0.3246829266609202 0.0072672867531251364 + -5.3 -0.31441527940061326 0.007214687023772282 + -5.2 -0.304153605135787 0.007163842618154173 + -5.1 -0.29389157340274763 0.007114801427321416 + -5.0 -0.28362285373780177 0.007067611342324617 + -4.9 -0.27334848544104173 0.0070212995895903435 + -4.8 -0.2630738322468798 0.006974935693871966 + -4.7 -0.2527990503431024 0.0069286309937103 + -4.6 -0.2425242959174956 0.006882496827646157 + -4.5 -0.23224972515784578 0.006836644534220352 + -4.4 -0.2219754942519391 0.006791185451973701 + -4.3 -0.2117017593875617 0.006746230919447015 + -4.2 -0.20142867675249995 0.006701892275181112 + -4.1 -0.19115640253453994 0.006658280857716803 + -4.0 -0.1808850929214681 0.006615508005594903 + -3.9 -0.1706149041010705 0.006573685057356227 + -3.8 -0.16034599226113339 0.006532923351541588 + -3.7 -0.15007851358944305 0.006493334226691801 + -3.6 -0.13981262427378563 0.006455029021347679 + -3.5 -0.12954848050194748 0.006418119074050036 + -3.4 -0.11928623846171468 0.006382715723339688 + -3.3 -0.10902605434087356 0.006348930307757448 + -3.2 -0.09876808432721038 0.006316874165844132 + -3.1 -0.08851248460851127 0.0062866586361405505 + -3.0 -0.07825941137256248 0.006258395057187519 + -2.9 -0.06800815075249923 0.0062312952293119015 + -2.8 -0.05775790171309017 0.006204477971590604 + -2.7 -0.04750868968957163 0.006177915150689514 + -2.6 -0.03726054011717993 0.006151578633274512 + -2.5 -0.02701347843115147 0.0061254402860114856 + -2.4 -0.016767530066722613 0.006099471975566318 + -2.3 -0.006522720459129719 0.006073645568604896 + -2.2 0.003720924956390808 0.0060479329317931 + -2.1 0.013963380744602669 0.006022305931796817 + -2.0 0.024204621470269486 0.005996736435281932 + -1.9 0.034444621698154876 0.005971196308914328 + -1.8 0.044683355993022464 0.0059456574193598915 + -1.7 0.054920798919635916 0.005920091633284505 + -1.6 0.06515692504275884 0.005894470817354054 + -1.5 0.07539170892715487 0.005868766838234422 + -1.4 0.0856251251375877 0.005842951562591497 + -1.3 0.09585714823882088 0.005816996857091157 + -1.2 0.10608775279561815 0.0057908745883992925 + -1.1 0.11631691337274302 0.005764556623181786 + -1.0 0.12654460453495925 0.005738014828104521 + -0.9 0.13675114698078158 0.005711186890429283 + -0.8 0.1469191062590442 0.005684049557190802 + -0.7 0.15705182420998975 0.005656633284714391 + -0.6 0.1671526426738609 0.005628968529325357 + -0.5 0.17722490349090023 0.005601085747349011 + -0.4 0.18727194850135045 0.005573015395110662 + -0.3 0.1972971195454542 0.005544787928935617 + -0.2 0.20730375846345414 0.005516433805149188 + -0.1 0.21729520709559283 0.005487983480076683 + 0.0 0.22727480728211297 0.005459467410043413 + 0.1 0.2372459008632572 0.005430916051374686 + 0.2 0.24721182967926816 0.005402359860395811 + 0.3 0.25717593557038854 0.005373829293432098 + 0.4 0.26714156037686093 0.005345354806808856 + 0.5 0.27711204593892796 0.005316966856851396 + 0.6 0.28709073409683233 0.005288695899885024 + 0.7 0.2970809666908167 0.0052605723922350515 + 0.8 0.3070860855611236 0.00523262679022679 + 0.9 0.31710943254799584 0.005204889550185544 + 1.0 0.32715434949167593 0.005177391128436626 + 1.1 0.3372311618514844 0.005150751995126851 + 1.2 0.34734784498727106 0.0051257346245434775 + 1.3 0.357504215590073 0.005102582479222478 + 1.4 0.36770009035092716 0.005081539021699825 + 1.5 0.37793528596087045 0.005062847714511489 + 1.6 0.38820961911093976 0.005046752020193444 + 1.7 0.39852290649217215 0.005033495401281663 + 1.8 0.40887496479560453 0.005023321320312118 + 1.9 0.4192656107122737 0.00501647323982078 + 2.0 0.4296946609332169 0.005013194622343622 + 2.1 0.4401619321494708 0.005013728930416618 + 2.2 0.45066724105207245 0.005018319626575739 + 2.3 0.46121040433205873 0.005027210173356958 + 2.4 0.4717912386804668 0.0050406440332962455 + 2.5 0.48240956078833336 0.005058864668929577 + 2.6 0.4930651873466955 0.0050821155427929225 + 2.7 0.50375793504659 0.005110640117422256 + 2.8 0.5144876205790542 0.0051446818553535474 + 2.9 0.5252540606351245 0.0051844842191227725 + 3.0 0.5360570719058383 0.005230290671265901 + 3.1 0.5472176917030886 0.0052823010756966925 + 3.2 0.5590142298647537 0.005340369027180724 + 3.3 0.5713824118708475 0.005404218584531699 + 3.4 0.5842579632013845 0.0054735738065633185 + 3.5 0.5975766093363787 0.005548158752089284 + 3.6 0.6112740757558444 0.005627697479923298 + 3.7 0.6252860879397959 0.005711914048879063 + 3.8 0.6395483713682468 0.0058005325177702795 + 3.9 0.653996651521212 0.00589327694541065 + 4.0 0.6685666538787055 0.005989871390613878 + 4.1 0.6831941039207411 0.006090039912193662 + 4.2 0.6978147271273336 0.006193506568963708 + 4.3 0.7123642489784966 0.006299995419737717 + 4.4 0.7267783949542447 0.006409230523329389 + 4.5 0.7409928905345917 0.006520935938552425 + 4.6 0.7549434611995522 0.006634835724220529 + 4.7 0.7685658324291402 0.0067506539391474045 + 4.8 0.7817957297033699 0.006868114642146751 + 4.9 0.7945688785022555 0.0069869418920322736 + 5.0 0.806821004305811 0.007106859747617668 + 5.1 0.818768964189323 0.007227914763315581 + 5.2 0.8306621191887592 0.007350227880041849 + 5.3 0.8424849507251556 0.007473634736364967 + 5.4 0.8542219402195486 0.007597970970853431 + 5.5 0.8658575690929744 0.007723072222075736 + 5.6 0.8773763187664694 0.007848774128600378 + 5.7 0.8887626706610697 0.007974912328995856 + 5.8 0.9000011061978116 0.00810132246183066 + 5.9 0.9110761067977312 0.00822784016567329 + 6.0 0.9219721538818648 0.00835430107909224 + 6.1 0.9326737288712489 0.008480540840656003 + 6.2 0.9431653131869197 0.00860639508893308 + 6.3 0.9534313882499131 0.008731699462491964 + 6.4 0.9634564354812657 0.008856289599901151 + 6.5 0.9732249363020133 0.008980001139729138 + 6.6 0.9827213721331928 0.009102669720544417 + 6.7 0.9919302243958399 0.00922413098091549 + 6.8 1.0008359745109914 0.009344220559410846 + 6.9 1.0094231038996828 0.009462774094598985 + 7.0 1.017676093982951 0.0095796272250484 + 7.1 1.0257363947197207 0.009695121805801218 + 7.2 1.0337563825947784 0.009809767555493974 + 7.3 1.041736928817951 0.009923651908086778 + 7.4 1.0496789045990664 0.010036862297539738 + 7.5 1.057583181147952 0.010149486157812967 + 7.6 1.0654506296744348 0.010261610922866576 + 7.7 1.0732821213883428 0.010373324026660675 + 7.8 1.081078527499503 0.010484712903155372 + 7.9 1.0888407192177432 0.01059586498631078 + 8.0 1.0965695677528906 0.010706867710087008 + 8.1 1.104265944314773 0.010817808508444169 + 8.2 1.1119307201132174 0.01092877481534237 + 8.3 1.1195647663580517 0.01103985406474173 + 8.4 1.127168954259103 0.011151133690602345 + 8.5 1.1347441550261987 0.011262701126884338 + 8.6 1.1422912398691667 0.01137464380754781 + 8.7 1.1498110799978338 0.011487049166552878 + 8.8 1.1573045466220284 0.011600004637859656 + 8.9 1.1647725109515767 0.011713597655428244 + 9.0 1.1722158441963073 0.01182791565321876 + 9.1 1.179650461534768 0.01194349340864211 + 9.2 1.1870895824612524 0.0120607446751984 + 9.3 1.1945300346592058 0.012179575350981542 + 9.4 1.2019686458120726 0.01229989133408544 + 9.5 1.2094022436032983 0.012421598522603999 + 9.6 1.216827655716328 0.012544602814631132 + 9.7 1.224241709834606 0.012668810108260741 + 9.8 1.2316412336415778 0.012794126301586743 + 9.9 1.2390230548206882 0.012920457292703035 + 10.0 1.2463840010553824 0.013047708979703528 + 10.1 1.2537209000291054 0.013175787260682132 + 10.2 1.2610305794253018 0.013304598033732752 + 10.3 1.2683098669274173 0.0134340471969493 + 10.4 1.2755555902188962 0.013564040648425675 + 10.5 1.2827645769831837 0.013694484286255791 + 10.6 1.2899336549037248 0.013825284008533554 + 10.7 1.2970596516639645 0.013956345713352872 + 10.8 1.304139394947348 0.014087575298807654 + 10.9 1.3111697124373198 0.014218878662991801 + 11.0 1.3181474318173256 0.014350161703999229 + 11.1 1.325026174277794 0.014485361106380894 + 11.2 1.3317668927068351 0.014628176014337205 + 11.3 1.338377412334413 0.014778156015436212 + 11.4 1.3448655583904925 0.014934850697245977 + 11.5 1.351239156105038 0.015097809647334563 + 11.6 1.3575060307080147 0.015266582453270025 + 11.7 1.3636740074293865 0.015440718702620426 + 11.8 1.3697509114991193 0.01561976798295383 + 11.9 1.3757445681471765 0.015803279881838286 + 12.0 1.3816628026035231 0.015990803986841867 + 12.1 1.3875134400981242 0.016181889885532617 + 12.2 1.3933043058609442 0.01637608716547861 + 12.3 1.399043225121948 0.016572945414247902 + 12.4 1.4047380231110997 0.016772014219408545 + 12.5 1.4103965250583645 0.016972843168528613 + 12.6 1.4160265561937067 0.01717498184917615 + 12.7 1.4216359417470912 0.01737797984891922 + 12.8 1.4272325069484826 0.017581386755325897 + 12.9 1.4328240770278458 0.01778475215596422 + 13.0 1.438418477215145 0.017987625638402265 + 13.1 1.44397194969458 0.01819853488415434 + 13.2 1.449437093844378 0.018425739152365075 + 13.3 1.454816270685545 0.018668385397047998 + 13.4 1.4601118412390868 0.01892562057221663 + 13.5 1.4653261665260098 0.019196591631884495 + 13.6 1.4704616075673198 0.019480445530065123 + 13.7 1.475520525384023 0.01977632922077204 + 13.8 1.4805052809971249 0.020083389658018775 + 13.9 1.485418235427632 0.020400773795818845 + 14.0 1.49026174969655 0.020727628588185772 + 14.1 1.4950381848248855 0.021063100989133096 + 14.2 1.499749901833644 0.021406337952674333 + 14.3 1.5043992617438318 0.02175648643282302 + 14.4 1.5089886255764546 0.022112693383592664 + 14.5 1.5135203543525189 0.022474105758996797 + 14.6 1.51799680909303 0.02283987051304895 + 14.7 1.5224203508189946 0.02320913459976265 + 14.8 1.5267933405514187 0.023581044973151423 + 14.9 1.5311181393113076 0.02395474858722878 + 15.0 1.5353971081196682 0.024329392396008263 + 15.1 1.539551204323609 0.02471917093040247 + 15.2 1.5435032907074437 0.025138357414664334 + 15.3 1.5472585864479875 0.025586216842817883 + 15.4 1.5508223107220547 0.026062014208887128 + 15.5 1.554199682706459 0.026565014506896086 + 15.6 1.557395921578015 0.027094482730868775 + 15.7 1.5604162465135376 0.027649683874829224 + 15.8 1.5632658766898406 0.02822988293280145 + 15.9 1.5659500312837387 0.02883434489880946 + 16.0 1.5684739294720458 0.029462334766877277 + 16.1 1.5708427904315765 0.030113117531028934 + 16.2 1.573061833339145 0.030785958185288422 + 16.3 1.5751362773715663 0.031480121723679796 + 16.4 1.5770713417056537 0.03219487314022703 + 16.5 1.5788722455182223 0.03292947742895419 + 16.6 1.580544207986086 0.03368319958388527 + 16.7 1.5820924482860599 0.03445530459904428 + 16.8 1.5835221855949575 0.035245057468455264 + 16.9 1.5848386390895934 0.0360517231861422 + 17.0 1.5860470279467822 0.03687456674612916 + 17.1 1.5870871836027531 0.03772901534643799 + 17.2 1.587898652660948 0.03863006485462826 + 17.3 1.5884862270490012 0.03957633326903071 + 17.4 1.588854698694547 0.04056643858797592 + 17.5 1.5890088595252194 0.0415989988097946 + 17.6 1.5889535014686522 0.04267263193281738 + 17.7 1.5886934164524797 0.043785955955374864 + 17.8 1.5882333964043356 0.04493758887579779 + 17.9 1.5875782332518544 0.046126148692416734 + 18.0 1.58673271892267 0.04735025340356243 + 18.1 1.5857016453444164 0.04860852100756548 + 18.2 1.5844898044447273 0.049899569502756494 + 18.3 1.5831019881512376 0.051222016887466235 + 18.4 1.5815429883915808 0.052574481160025235 + 18.5 1.5798175970933912 0.05395558031876427 + 18.6 1.5779306061843026 0.05536393236201392 + 18.7 1.575886807591949 0.0567981552881048 + 18.8 1.5736909932439649 0.05825686709536767 + 18.9 1.571347955067984 0.059738685782133066 + 19.0 1.5688624849916406 0.06124222934673175 +] diff --git a/v0.5.0/DuctAPE/theory_latex/figures/naca_65410_clcd_b30_comp.tikz b/v0.5.0/DuctAPE/theory_latex/figures/naca_65410_clcd_b30_comp.tikz new file mode 100644 index 00000000..c5619be8 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/naca_65410_clcd_b30_comp.tikz @@ -0,0 +1,431 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={58.5mm}, height={50.8mm}, scaled x ticks={false}, xlabel={}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-6.0}, xmax={24.0}, xticklabels={{$-5$,$0$,$5$,$10$,$15$,$20$}}, xtick={{-5.0,0.0,5.0,10.0,15.0,20.0}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_\ell$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={-0.1}, ymax={1.2}, yticklabels={{$0.00$,$0.25$,$0.50$,$0.75$,$1.00$}}, ytick={{0.0,0.25,0.5,0.75,1.0}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={c4f26fc3-4458-43e4-b8fe-5a4ce5189e39}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.3608;blue,0.6706}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + -3.022252591018093 0.0116625546259916 \\ + 0.0034424375571671 0.104580042079042 \\ + 3.025323106929635 0.2047342165751638 \\ + 6.04938341013227 0.3007531413323876 \\ + 7.502654266395366 0.3435753779221256 \\ + 9.076713164080155 0.3905691914812645 \\ + 12.023699193232757 0.4772595861722991 \\ + 15.022027708162602 0.5443196536804025 \\ + 18.02308076538015 0.6062106590148834 \\ + 21.030127815630657 0.6567297275673946 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={6492796e-92f4-49e9-a49c-bb29a5beafc3}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + -3.0084588836107535 -0.0172901516791686 \\ + 0.0007539384368496 0.0730255600412629 \\ + 3.0078272054609574 0.1669173851581106 \\ + 5.978456718584834 0.241722341793915 \\ + 8.009821576393573 0.2864410794564511 \\ + 9.991905350161101 0.3335296290164415 \\ + 13.01752142738885 0.3964284713643483 \\ + 15.995282790591048 0.4593130500120987 \\ + 18.97874963385591 0.5126613262694055 \\ + 22.041451331490936 0.5135742030794309 \\ + } + ; + \addplot[color={rgb,1:red,0.5608;green,0.651;blue,0.3176}, name path={64c2ea61-8afb-4434-86bc-5f489ba96bcb}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.5608;green,0.651;blue,0.3176}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + -5.030781513350483 -0.078608178834383 \\ + -1.9854874478843243 0.0188193027588042 \\ + 1.0325556639758702 0.0942340104674887 \\ + 4.018238268428991 0.1566335491883259 \\ + 7.00108223188149 0.2240317572961943 \\ + 9.001188680919014 0.2719693071941807 \\ + 11.990845382773 0.3273707087731748 \\ + 14.979366628226739 0.3847715781069811 \\ + 18.013306129690417 0.4321937372482923 \\ + 21.01374966734676 0.4686001951565687 \\ + } + ; + \addplot[color={rgb,1:red,0.5098;green,0.5098;blue,0.5098}, name path={8077acad-193d-4dc3-8f00-27fa29d1f54d}, draw opacity={1.0}, line width={1.0}, dashed, forget plot] + table[row sep={\\}] + { + \\ + -15.0 -0.5665510105403683 \\ + -14.505050505050505 -0.5223707485770781 \\ + -14.01010101010101 -0.48288290323857036 \\ + -13.515151515151516 -0.4476923804233114 \\ + -13.02020202020202 -0.41640408602976736 \\ + -12.525252525252526 -0.38862292595640446 \\ + -12.030303030303031 -0.363953806101689 \\ + -11.535353535353535 -0.342001632364087 \\ + -11.04040404040404 -0.3223713106420649 \\ + -10.545454545454545 -0.31264275688078474 \\ + -10.05050505050505 -0.3229772463157242 \\ + -9.555555555555555 -0.37730526563488587 \\ + -9.06060606060606 -0.4398893615283618 \\ + -8.565656565656566 -0.44816433443905423 \\ + -8.070707070707071 -0.44277801246942355 \\ + -7.575757575757576 -0.4298637871228801 \\ + -7.08080808080808 -0.4108534742848187 \\ + -6.585858585858586 -0.38042950578354084 \\ + -6.090909090909091 -0.33981331145726257 \\ + -5.595959595959596 -0.2900177741710254 \\ + -5.101010101010101 -0.23727259949514537 \\ + -4.606060606060606 -0.1815499910867863 \\ + -4.111111111111111 -0.12544341290574643 \\ + -3.6161616161616164 -0.06876672586757099 \\ + -3.121212121212121 -0.012021506605778243 \\ + -2.6262626262626263 0.04483434055713697 \\ + -2.1313131313131315 0.10175187222194775 \\ + -1.6363636363636365 0.15885001136591717 \\ + -1.1414141414141414 0.21614787322246745 \\ + -0.6464646464646465 0.27326335201173685 \\ + -0.15151515151515152 0.33008787367812703 \\ + 0.3434343434343434 0.3867358841059261 \\ + 0.8383838383838383 0.4433265167789935 \\ + 1.3333333333333333 0.4990846154557274 \\ + 1.8282828282828283 0.5514163812619709 \\ + 2.323232323232323 0.5956790139480467 \\ + 2.8181818181818183 0.6300960032070431 \\ + 3.313131313131313 0.6778677494717945 \\ + 3.808080808080808 0.7295565593987938 \\ + 4.303030303030303 0.7780694571148149 \\ + 4.797979797979798 0.8255216383729825 \\ + 5.292929292929293 0.8720063083639519 \\ + 5.787878787878788 0.9167960654895222 \\ + 6.282828282828283 0.957800935223836 \\ + 6.777777777777778 0.995808680488238 \\ + 7.2727272727272725 1.0336100742677 \\ + 7.767676767676767 1.0699644187909074 \\ + 8.262626262626263 1.0992053861622957 \\ + 8.757575757575758 1.1047006399431818 \\ + 9.252525252525253 1.1001338863619823 \\ + 9.747474747474747 1.0881279859286563 \\ + 10.242424242424242 1.0582474472708032 \\ + 10.737373737373737 1.0246110095345213 \\ + 11.232323232323232 0.9907201888390117 \\ + 11.727272727272727 0.9564933909437671 \\ + 12.222222222222221 0.9272047502821661 \\ + 12.717171717171718 0.9210081124572284 \\ + 13.212121212121213 0.9191664492896328 \\ + 13.707070707070708 0.9170774786104494 \\ + 14.202020202020202 0.9180098805020722 \\ + 14.696969696969697 0.9220997625655921 \\ + 15.191919191919192 0.9319796370148837 \\ + 15.686868686868687 0.9447055160240829 \\ + 16.181818181818183 0.9589114265942978 \\ + 16.67676767676768 0.9734513568690647 \\ + 17.171717171717173 0.9887075264975685 \\ + 17.666666666666668 1.0042483369086435 \\ + 18.161616161616163 1.0198102993993334 \\ + 18.656565656565657 1.035398900104723 \\ + 19.151515151515152 1.051295046008166 \\ + 19.646464646464647 1.0691577941475554 \\ + 20.141414141414142 1.0864846355610962 \\ + 20.636363636363637 1.1030653457193929 \\ + 21.13131313131313 1.1194857325791487 \\ + 21.626262626262626 1.135774015505571 \\ + 22.12121212121212 1.1517956055832994 \\ + 22.616161616161616 1.167218420827846 \\ + 23.11111111111111 1.1821984594240826 \\ + 23.606060606060606 1.1966270886411536 \\ + 24.1010101010101 1.2114379401269704 \\ + 24.595959595959595 1.2269249451976803 \\ + 25.09090909090909 1.2422736504402454 \\ + 25.585858585858585 1.2573850331402625 \\ + 26.08080808080808 1.2723818841719159 \\ + 26.575757575757574 1.2872454497362291 \\ + 27.07070707070707 1.3019543464686127 \\ + 27.565656565656564 1.316387026323919 \\ + 28.060606060606062 1.3308240336463104 \\ + 28.555555555555557 1.345627164736373 \\ + 29.050505050505052 1.3603996856804472 \\ + 29.545454545454547 1.3745594103327088 \\ + 30.04040404040404 1.3878745383906563 \\ + 30.535353535353536 1.4003714583324913 \\ + 31.03030303030303 1.412153211455866 \\ + 31.525252525252526 1.423563342761 \\ + 32.02020202020202 1.4349005047644947 \\ + 32.515151515151516 1.446141174796294 \\ + 33.01010101010101 1.4571919141366922 \\ + 33.505050505050505 1.466658196592202 \\ + 34.0 1.4743512710405462 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={05fc8692-f1f2-43e2-997b-e1f3ad292d37}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -3.022252591018093 -0.0031796796074362176 \\ + 0.0034424375571671 0.25339357364752846 \\ + 3.025323106929635 0.46860199543912806 \\ + 6.04938341013227 0.6755392889220804 \\ + 7.502654266395366 0.7504283840183834 \\ + 9.076713164080155 0.7735493735637641 \\ + 12.023699193232757 0.7754022386227456 \\ + 15.022027708162602 0.7790347480558709 \\ + 18.02308076538015 0.7825701741516083 \\ + 21.030127815630657 0.78610645832313 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={d408b04b-37a6-4b6c-88dc-c705a59b15cf}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -3.0084588836107535 -0.0014498313539509197 \\ + 0.0007539384368496 0.20853432736896713 \\ + 3.0078272054609574 0.3844851543193228 \\ + 5.978456718584834 0.5530043217341231 \\ + 8.009821576393573 0.6343605889917966 \\ + 9.991905350161101 0.6403113293097329 \\ + 13.01752142738885 0.6433314453517147 \\ + 15.995282790591048 0.6463191863101216 \\ + 18.97874963385591 0.6493052027751073 \\ + 22.041451331490936 0.6523695447899834 \\ + } + ; + \addplot[color={rgb,1:red,0.5608;green,0.651;blue,0.3176}, name path={44615b86-5340-410c-ab4b-d8d6314e78bb}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -5.030781513350483 -0.12699240113790117 \\ + -1.9854874478843243 0.061686212972750655 \\ + 1.0325556639758702 0.24118803959554475 \\ + 4.018238268428991 0.38604882927975614 \\ + 7.00108223188149 0.520888040896493 \\ + 9.001188680919014 0.5579663158932002 \\ + 11.990845382773 0.5603371667518198 \\ + 14.979366628226739 0.5629511851534315 \\ + 18.013306129690417 0.5656129985473709 \\ + 21.01374966734676 0.5682455923799825 \\ + } + ; +\end{axis} +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={63.5mm}, yshift={-0.0mm}, width={58.5mm}, height={50.8mm}, scaled x ticks={false}, xlabel={}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-6.0}, xmax={24.0}, xticklabels={{$-5$,$0$,$5$,$10$,$15$,$20$}}, xtick={{-5.0,0.0,5.0,10.0,15.0,20.0}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_d$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={0.0}, ymax={0.05}, yticklabels={{$0.00$,$0.01$,$0.02$,$0.03$,$0.04$}}, ytick={{0.0,0.010000000000000002,0.020000000000000004,0.030000000000000006,0.04000000000000001}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={186bdab7-78c6-461c-93f3-93c7fac80a0a}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.3608;blue,0.6706}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + -3.0159617966864865 0.0174737251259478 \\ + -0.0369917919413592 0.0124818019364153 \\ + 2.9962543791456753 0.0125602479580814 \\ + 5.976637825722623 0.0148097406334239 \\ + 9.017233894335131 0.0135435491524397 \\ + 12.026451554281216 0.0105179254712314 \\ + 15.004008117194523 0.013284586416824 \\ + 18.047148381104304 0.0190529434926148 \\ + 21.01509353956123 0.0385779765570576 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={0432f065-4814-41d2-9a71-4935caf86828}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + -3.0559617648107853 0.0184804773284282 \\ + 0.0132681813318136 0.010357537743492 \\ + 2.9939009166458614 0.0090176756225192 \\ + 5.988229839141134 0.0133925068404506 \\ + 8.004422727110608 0.0129763221049735 \\ + 10.009202125762386 0.0144645595870763 \\ + 12.999821664229412 0.0114583280257211 \\ + 16.039947212611906 0.0161916650956134 \\ + 19.054249741413134 0.0172337574327801 \\ + 22.039447872454257 0.0311321264247754 \\ + } + ; + \addplot[color={rgb,1:red,0.5608;green,0.651;blue,0.3176}, name path={dced0768-2b35-4fd0-8bdd-d1b814d20e44}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.5608;green,0.651;blue,0.3176}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + -5.015664845173042 0.0219398907103825 \\ + -1.9168736545785716 0.0147851465474416 \\ + 0.9916873654578584 0.0135214853452558 \\ + 4.012584865043886 0.0135630899155489 \\ + 6.992151018380527 0.0139027570789866 \\ + 8.983474085113427 0.0131961003477397 \\ + 12.045173041894353 0.0130396174863388 \\ + 14.992415962907765 0.0119777694982613 \\ + 18.021791687365457 0.0179197714853452 \\ + 20.973273720814703 0.0235581222056632 \\ + } + ; + \addplot[color={rgb,1:red,0.5098;green,0.5098;blue,0.5098}, name path={6bf8f23f-0a71-4a6d-9bf6-e6bde9043f19}, draw opacity={1.0}, line width={1.0}, dashed, forget plot] + table[row sep={\\}] + { + \\ + -15.0 0.19342858851356226 \\ + -14.505050505050505 0.1825511736008694 \\ + -14.01010101010101 0.17197853129710508 \\ + -13.515151515151516 0.1616563195018482 \\ + -13.02020202020202 0.1515301961146778 \\ + -12.525252525252526 0.14154581903517283 \\ + -12.030303030303031 0.13164884616291223 \\ + -11.535353535353535 0.12178493539747501 \\ + -11.04040404040404 0.11189974463844013 \\ + -10.545454545454545 0.10260591529963403 \\ + -10.05050505050505 0.09471085227657969 \\ + -9.555555555555555 0.09416157778087088 \\ + -9.06060606060606 0.09630965356893784 \\ + -8.565656565656566 0.08894797599132932 \\ + -8.070707070707071 0.07877076441051206 \\ + -7.575757575757576 0.06623868565832924 \\ + -7.08080808080808 0.05357972313981393 \\ + -6.585858585858586 0.04255296615648547 \\ + -6.090909090909091 0.03253944698920481 \\ + -5.595959595959596 0.023406117632169647 \\ + -5.101010101010101 0.016776300040109642 \\ + -4.606060606060606 0.013850321888362755 \\ + -4.111111111111111 0.012656846449273838 \\ + -3.6161616161616164 0.012264738992753578 \\ + -3.121212121212121 0.011948845063480705 \\ + -2.6262626262626263 0.011762030042036908 \\ + -2.1313131313131315 0.011583891345618498 \\ + -1.6363636363636365 0.011413100451654246 \\ + -1.1414141414141414 0.011247243670881814 \\ + -0.6464646464646465 0.011013411470531236 \\ + -0.15151515151515152 0.01060225166893664 \\ + 0.3434343434343434 0.010109225448796005 \\ + 0.8383838383838383 0.009640289631027204 \\ + 1.3333333333333333 0.00933945565625332 \\ + 1.8282828282828283 0.009416855456670179 \\ + 2.323232323232323 0.01071708511846682 \\ + 2.8181818181818183 0.013554397772055355 \\ + 3.313131313131313 0.01435536227855909 \\ + 3.808080808080808 0.01481071236793852 \\ + 4.303030303030303 0.015324584893773962 \\ + 4.797979797979798 0.015858271345099734 \\ + 5.292929292929293 0.016492627038757736 \\ + 5.787878787878788 0.017491751445786515 \\ + 6.282828282828283 0.018897474567010977 \\ + 6.777777777777778 0.021972874142274355 \\ + 7.2727272727272725 0.027241859959554082 \\ + 7.767676767676767 0.03397550640952604 \\ + 8.262626262626263 0.04147859597103443 \\ + 8.757575757575758 0.04945732004721046 \\ + 9.252525252525253 0.05658865265697755 \\ + 9.747474747474747 0.0621346186006454 \\ + 10.242424242424242 0.06893042373082457 \\ + 10.737373737373737 0.0788501395331888 \\ + 11.232323232323232 0.09392029406724697 \\ + 11.727272727272727 0.11195153937922153 \\ + 12.222222222222221 0.1285801129900183 \\ + 12.717171717171718 0.144430224252929 \\ + 13.212121212121213 0.1597092671731783 \\ + 13.707070707070708 0.17408150235480008 \\ + 14.202020202020202 0.18706652054100284 \\ + 14.696969696969697 0.1983850371525059 \\ + 15.191919191919192 0.2082050866621403 \\ + 15.686868686868687 0.21750167082134184 \\ + 16.181818181818183 0.22638212587983422 \\ + 16.67676767676768 0.2350571497121742 \\ + 17.171717171717173 0.2435070367984886 \\ + 17.666666666666668 0.25167944705150597 \\ + 18.161616161616163 0.25906347280265807 \\ + 18.656565656565657 0.26610890999685555 \\ + 19.151515151515152 0.27309670918117884 \\ + 19.646464646464647 0.28007245495534044 \\ + 20.141414141414142 0.28703035106457303 \\ + 20.636363636363637 0.29391654988319665 \\ + 21.13131313131313 0.30070447485248264 \\ + 21.626262626262626 0.30719465460675804 \\ + 22.12121212121212 0.31369383321626276 \\ + 22.616161616161616 0.32049925607999213 \\ + 23.11111111111111 0.32768986260367317 \\ + 23.606060606060606 0.3375489411247478 \\ + 24.1010101010101 0.3453852748283662 \\ + 24.595959595959595 0.35123258565238763 \\ + 25.09090909090909 0.3570556623876905 \\ + 25.585858585858585 0.3628768386138644 \\ + 26.08080808080808 0.3686689132485595 \\ + 26.575757575757574 0.37398501777229176 \\ + 27.07070707070707 0.3788652100429109 \\ + 27.565656565656564 0.38344684577088217 \\ + 28.060606060606062 0.3877560216364902 \\ + 28.555555555555557 0.39152907694958067 \\ + 29.050505050505052 0.39567200457093665 \\ + 29.545454545454547 0.4004694123817664 \\ + 30.04040404040404 0.4052559415557995 \\ + 30.535353535353536 0.4099596549758129 \\ + 31.03030303030303 0.4146334333936847 \\ + 31.525252525252526 0.4192734078645425 \\ + 32.02020202020202 0.42391175269810183 \\ + 32.515151515151516 0.42856171286311906 \\ + 33.01010101010101 0.4332103222552433 \\ + 33.505050505050505 0.43731191674448666 \\ + 34.0 0.4407944528314002 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={ba75a273-2ff7-47e6-8b30-ead0440043e0}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -3.022252591018093 0.01260648400627696 \\ + 0.0034424375571671 0.010509561196732296 \\ + 3.025323106929635 0.014132794880365443 \\ + 6.04938341013227 0.020429947566584058 \\ + 7.502654266395366 0.03450590742113849 \\ + 9.076713164080155 0.05001431988831809 \\ + 12.023699193232757 0.05515778082066728 \\ + 15.022027708162602 0.0603908512855357 \\ + 18.02308076538015 0.06562867697178017 \\ + 21.030127815630657 0.07087696415070674 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={1943bf3b-e066-40ff-8081-8910dabee190}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -3.0084588836107535 0.012594618065409478 \\ + 0.0007539384368496 0.010511789666196765 \\ + 3.0078272054609574 0.014106168006709451 \\ + 5.978456718584834 0.020119725943641895 \\ + 8.009821576393573 0.04112527889118674 \\ + 9.991905350161101 0.05161163158655949 \\ + 13.01752142738885 0.056892327838161706 \\ + 15.995282790591048 0.06208950184993604 \\ + 18.97874963385591 0.06729663380314062 \\ + 22.041451331490936 0.07264205666615683 \\ + } + ; + \addplot[color={rgb,1:red,0.5608;green,0.651;blue,0.3176}, name path={77814fa3-60d1-42a4-ae97-712264eec697}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -5.030781513350483 0.019954173973229156 \\ + -1.9854874478843243 0.011814321028041499 \\ + 1.0325556639758702 0.009536767207884588 \\ + 4.018238268428991 0.01544487399267513 \\ + 7.00108223188149 0.028096753782872696 \\ + 9.001188680919014 0.04988250479798578 \\ + 11.990845382773 0.05510044010416824 \\ + 14.979366628226739 0.06031639365480861 \\ + 18.013306129690417 0.06561161701416485 \\ + 21.01374966734676 0.07084837888939488 \\ + } + ; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/naca_65410_clcd_b45_comp.tikz b/v0.5.0/DuctAPE/theory_latex/figures/naca_65410_clcd_b45_comp.tikz new file mode 100644 index 00000000..198dfa75 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/naca_65410_clcd_b45_comp.tikz @@ -0,0 +1,428 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={58.5mm}, height={50.8mm}, scaled x ticks={false}, xlabel={}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-6.0}, xmax={24.0}, xticklabels={{$-5$,$0$,$5$,$10$,$15$,$20$}}, xtick={{-5.0,0.0,5.0,10.0,15.0,20.0}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_\ell$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={-0.1}, ymax={1.2}, yticklabels={{$0.00$,$0.25$,$0.50$,$0.75$,$1.00$}}, ytick={{0.0,0.25,0.5,0.75,1.0}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={5201e8fe-69f6-4092-b1b5-5c3a84e118c6}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.3608;blue,0.6706}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 0.9715774365763954 0.1238928154630615 \\ + 5.017505514165627 0.282302738393145 \\ + 7.0283426686564265 0.3267014018678255 \\ + 9.037810198567028 0.3812866481577122 \\ + 11.01537688929724 0.4231343858517781 \\ + 14.028550965728002 0.512652192398013 \\ + 17.015074430535776 0.5503839228901362 \\ + 19.535468996550257 0.5549493381574555 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={551c9734-f0e2-4919-b4a7-9600c5124673}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 0.9359379426837711 0.1027775885008912 \\ + 2.9413102184414655 0.1626465451389513 \\ + 4.950813910536186 0.2156857541448649 \\ + 6.961006172020411 0.2675866718787544 \\ + 8.973952711062655 0.3149344245245463 \\ + 11.032258758638495 0.3622972396257338 \\ + 13.001222927926147 0.4073533472720817 \\ + 15.02036659147393 0.4444564784696545 \\ + 17.045707379527247 0.471314988219008 \\ + 19.029820075383995 0.49132868788082 \\ + 22.057890036903007 0.5105505327447021 \\ + } + ; + \addplot[color={rgb,1:red,0.5608;green,0.651;blue,0.3176}, name path={d1d8f2fa-3f64-4c76-ac6b-f6b706a926bd}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.5608;green,0.651;blue,0.3176}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + -3.0963491202232385 -0.024188047438183 \\ + -0.0279048135803421 0.0702271141771955 \\ + 3.0006976203395084 0.14824432214557 \\ + 5.98666770017828 0.21688628788466 \\ + 8.009921711495235 0.258363692736997 \\ + 10.033175722812185 0.299841097589334 \\ + 13.071544841485153 0.35327881559569 \\ + 16.020463529958917 0.3985001162700564 \\ + 19.06673901247965 0.432040151926207 \\ + 22.070847221145648 0.4550344934501199 \\ + } + ; + \addplot[color={rgb,1:red,0.5098;green,0.5098;blue,0.5098}, name path={094adbd8-c202-4325-ba85-f01db0ba642d}, draw opacity={1.0}, line width={1.0}, dashed, forget plot] + table[row sep={\\}] + { + \\ + -15.0 -0.5665510105403683 \\ + -14.505050505050505 -0.5223707485770781 \\ + -14.01010101010101 -0.48288290323857036 \\ + -13.515151515151516 -0.4476923804233114 \\ + -13.02020202020202 -0.41640408602976736 \\ + -12.525252525252526 -0.38862292595640446 \\ + -12.030303030303031 -0.363953806101689 \\ + -11.535353535353535 -0.342001632364087 \\ + -11.04040404040404 -0.3223713106420649 \\ + -10.545454545454545 -0.31264275688078474 \\ + -10.05050505050505 -0.3229772463157242 \\ + -9.555555555555555 -0.37730526563488587 \\ + -9.06060606060606 -0.4398893615283618 \\ + -8.565656565656566 -0.44816433443905423 \\ + -8.070707070707071 -0.44277801246942355 \\ + -7.575757575757576 -0.4298637871228801 \\ + -7.08080808080808 -0.4108534742848187 \\ + -6.585858585858586 -0.38042950578354084 \\ + -6.090909090909091 -0.33981331145726257 \\ + -5.595959595959596 -0.2900177741710254 \\ + -5.101010101010101 -0.23727259949514537 \\ + -4.606060606060606 -0.1815499910867863 \\ + -4.111111111111111 -0.12544341290574643 \\ + -3.6161616161616164 -0.06876672586757099 \\ + -3.121212121212121 -0.012021506605778243 \\ + -2.6262626262626263 0.04483434055713697 \\ + -2.1313131313131315 0.10175187222194775 \\ + -1.6363636363636365 0.15885001136591717 \\ + -1.1414141414141414 0.21614787322246745 \\ + -0.6464646464646465 0.27326335201173685 \\ + -0.15151515151515152 0.33008787367812703 \\ + 0.3434343434343434 0.3867358841059261 \\ + 0.8383838383838383 0.4433265167789935 \\ + 1.3333333333333333 0.4990846154557274 \\ + 1.8282828282828283 0.5514163812619709 \\ + 2.323232323232323 0.5956790139480467 \\ + 2.8181818181818183 0.6300960032070431 \\ + 3.313131313131313 0.6778677494717945 \\ + 3.808080808080808 0.7295565593987938 \\ + 4.303030303030303 0.7780694571148149 \\ + 4.797979797979798 0.8255216383729825 \\ + 5.292929292929293 0.8720063083639519 \\ + 5.787878787878788 0.9167960654895222 \\ + 6.282828282828283 0.957800935223836 \\ + 6.777777777777778 0.995808680488238 \\ + 7.2727272727272725 1.0336100742677 \\ + 7.767676767676767 1.0699644187909074 \\ + 8.262626262626263 1.0992053861622957 \\ + 8.757575757575758 1.1047006399431818 \\ + 9.252525252525253 1.1001338863619823 \\ + 9.747474747474747 1.0881279859286563 \\ + 10.242424242424242 1.0582474472708032 \\ + 10.737373737373737 1.0246110095345213 \\ + 11.232323232323232 0.9907201888390117 \\ + 11.727272727272727 0.9564933909437671 \\ + 12.222222222222221 0.9272047502821661 \\ + 12.717171717171718 0.9210081124572284 \\ + 13.212121212121213 0.9191664492896328 \\ + 13.707070707070708 0.9170774786104494 \\ + 14.202020202020202 0.9180098805020722 \\ + 14.696969696969697 0.9220997625655921 \\ + 15.191919191919192 0.9319796370148837 \\ + 15.686868686868687 0.9447055160240829 \\ + 16.181818181818183 0.9589114265942978 \\ + 16.67676767676768 0.9734513568690647 \\ + 17.171717171717173 0.9887075264975685 \\ + 17.666666666666668 1.0042483369086435 \\ + 18.161616161616163 1.0198102993993334 \\ + 18.656565656565657 1.035398900104723 \\ + 19.151515151515152 1.051295046008166 \\ + 19.646464646464647 1.0691577941475554 \\ + 20.141414141414142 1.0864846355610962 \\ + 20.636363636363637 1.1030653457193929 \\ + 21.13131313131313 1.1194857325791487 \\ + 21.626262626262626 1.135774015505571 \\ + 22.12121212121212 1.1517956055832994 \\ + 22.616161616161616 1.167218420827846 \\ + 23.11111111111111 1.1821984594240826 \\ + 23.606060606060606 1.1966270886411536 \\ + 24.1010101010101 1.2114379401269704 \\ + 24.595959595959595 1.2269249451976803 \\ + 25.09090909090909 1.2422736504402454 \\ + 25.585858585858585 1.2573850331402625 \\ + 26.08080808080808 1.2723818841719159 \\ + 26.575757575757574 1.2872454497362291 \\ + 27.07070707070707 1.3019543464686127 \\ + 27.565656565656564 1.316387026323919 \\ + 28.060606060606062 1.3308240336463104 \\ + 28.555555555555557 1.345627164736373 \\ + 29.050505050505052 1.3603996856804472 \\ + 29.545454545454547 1.3745594103327088 \\ + 30.04040404040404 1.3878745383906563 \\ + 30.535353535353536 1.4003714583324913 \\ + 31.03030303030303 1.412153211455866 \\ + 31.525252525252526 1.423563342761 \\ + 32.02020202020202 1.4349005047644947 \\ + 32.515151515151516 1.446141174796294 \\ + 33.01010101010101 1.4571919141366922 \\ + 33.505050505050505 1.466658196592202 \\ + 34.0 1.4743512710405462 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={28e280ec-6b32-4992-9e7a-34998671cce0}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.9715774365763954 0.3666332489921926 \\ + 5.017505514165627 0.6619368912465308 \\ + 7.0283426686564265 0.7836641410079228 \\ + 9.037810198567028 0.8272798108412613 \\ + 11.01537688929724 0.8202083666761489 \\ + 14.028550965728002 0.8107671011242511 \\ + 17.015074430535776 0.8030476417933076 \\ + 19.535468996550257 0.7978369047484327 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={368065b7-13e0-4017-bbb2-3c84e0cbf11d}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.9359379426837711 0.30658197003398696 \\ + 2.9413102184414655 0.4251797886076548 \\ + 4.950813910536186 0.549538766957086 \\ + 6.961006172020411 0.6513058658015438 \\ + 8.973952711062655 0.689736990159885 \\ + 11.032258758638495 0.6813404004094882 \\ + 13.001222927926147 0.6743777771033937 \\ + 15.02036659147393 0.6683391649852679 \\ + 17.045707379527247 0.6634165521231536 \\ + 19.029820075383995 0.6597087177564925 \\ + 22.057890036903007 0.6561829318012258 \\ + } + ; + \addplot[color={rgb,1:red,0.5608;green,0.651;blue,0.3176}, name path={031f7247-af78-4f7f-b9fe-4675a60961b6}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -3.0963491202232385 -0.00784047098086171 \\ + -0.0279048135803421 0.2053752732385813 \\ + 3.0006976203395084 0.37440987615116605 \\ + 5.98666770017828 0.5289546350699523 \\ + 8.009921711495235 0.5982998628543609 \\ + 10.033175722812185 0.5956996108383177 \\ + 13.071544841485153 0.5853283876436531 \\ + 16.020463529958917 0.5779040939891485 \\ + 19.06673901247965 0.5730108327746676 \\ + 22.070847221145648 0.570980090527877 \\ + } + ; +\end{axis} +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={63.5mm}, yshift={-0.0mm}, width={58.5mm}, height={50.8mm}, scaled x ticks={false}, xlabel={}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-6.0}, xmax={24.0}, xticklabels={{$-5$,$0$,$5$,$10$,$15$,$20$}}, xtick={{-5.0,0.0,5.0,10.0,15.0,20.0}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_d$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={0.0}, ymax={0.05}, yticklabels={{$0.00$,$0.01$,$0.02$,$0.03$,$0.04$}}, ytick={{0.0,0.010000000000000002,0.020000000000000004,0.030000000000000006,0.04000000000000001}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={8b6c5ac7-52a4-4124-be77-123dbf229719}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.3608;blue,0.6706}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 0.973154362416107 0.0141036451271066 \\ + 5.033557046979865 0.0139006791171477 \\ + 7.0134228187919465 0.0140107792755324 \\ + 9.026845637583891 0.0130177413657547 \\ + 11.241610738255034 0.0115179293763745 \\ + 14.060402684563758 0.0146098494775584 \\ + 16.97986577181208 0.0213533061382619 \\ + 19.630872483221477 0.0449014938298333 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={a81cc571-f538-4e61-a557-8a4c1f7cd0b6}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 0.9631656250899976 0.0129756933444691 \\ + 3.0142556806727523 0.0107639028885753 \\ + 5.002102352907294 0.0115267977997293 \\ + 7.022780289721509 0.0143520145148749 \\ + 8.96881029864931 0.014540794286208 \\ + 11.058261094951472 0.0134755061486623 \\ + 13.023644270368344 0.0104589177202431 \\ + 15.05399879042709 0.0116814503355125 \\ + 17.034933617486967 0.0135891196037209 \\ + 19.03349364974224 0.0200776142614405 \\ + 22.08230855628834 0.0251176453647438 \\ + } + ; + \addplot[color={rgb,1:red,0.5608;green,0.651;blue,0.3176}, name path={650fd5ae-f0f9-4361-9a39-1525281c348f}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.5608;green,0.651;blue,0.3176}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + -3.041891444485559 0.0233222973104563 \\ + 0.0107503846378556 0.0148238455995482 \\ + 2.999045708610046 0.0102058542855473 \\ + 6.049506300270707 0.0121779266558903 \\ + 8.02952460708513 0.0150596919002084 \\ + 10.029719360430018 0.0135891093929538 \\ + 13.053459793171946 0.0113251017586227 \\ + 16.015580267591098 0.012353399419635 \\ + 19.044773793989915 0.0189130815821762 \\ + 22.02434416811109 0.0261771865931797 \\ + } + ; + \addplot[color={rgb,1:red,0.5098;green,0.5098;blue,0.5098}, name path={f0a9721d-9888-4635-942a-39584131adc0}, draw opacity={1.0}, line width={1.0}, dashed, forget plot] + table[row sep={\\}] + { + \\ + -15.0 0.19342858851356226 \\ + -14.505050505050505 0.1825511736008694 \\ + -14.01010101010101 0.17197853129710508 \\ + -13.515151515151516 0.1616563195018482 \\ + -13.02020202020202 0.1515301961146778 \\ + -12.525252525252526 0.14154581903517283 \\ + -12.030303030303031 0.13164884616291223 \\ + -11.535353535353535 0.12178493539747501 \\ + -11.04040404040404 0.11189974463844013 \\ + -10.545454545454545 0.10260591529963403 \\ + -10.05050505050505 0.09471085227657969 \\ + -9.555555555555555 0.09416157778087088 \\ + -9.06060606060606 0.09630965356893784 \\ + -8.565656565656566 0.08894797599132932 \\ + -8.070707070707071 0.07877076441051206 \\ + -7.575757575757576 0.06623868565832924 \\ + -7.08080808080808 0.05357972313981393 \\ + -6.585858585858586 0.04255296615648547 \\ + -6.090909090909091 0.03253944698920481 \\ + -5.595959595959596 0.023406117632169647 \\ + -5.101010101010101 0.016776300040109642 \\ + -4.606060606060606 0.013850321888362755 \\ + -4.111111111111111 0.012656846449273838 \\ + -3.6161616161616164 0.012264738992753578 \\ + -3.121212121212121 0.011948845063480705 \\ + -2.6262626262626263 0.011762030042036908 \\ + -2.1313131313131315 0.011583891345618498 \\ + -1.6363636363636365 0.011413100451654246 \\ + -1.1414141414141414 0.011247243670881814 \\ + -0.6464646464646465 0.011013411470531236 \\ + -0.15151515151515152 0.01060225166893664 \\ + 0.3434343434343434 0.010109225448796005 \\ + 0.8383838383838383 0.009640289631027204 \\ + 1.3333333333333333 0.00933945565625332 \\ + 1.8282828282828283 0.009416855456670179 \\ + 2.323232323232323 0.01071708511846682 \\ + 2.8181818181818183 0.013554397772055355 \\ + 3.313131313131313 0.01435536227855909 \\ + 3.808080808080808 0.01481071236793852 \\ + 4.303030303030303 0.015324584893773962 \\ + 4.797979797979798 0.015858271345099734 \\ + 5.292929292929293 0.016492627038757736 \\ + 5.787878787878788 0.017491751445786515 \\ + 6.282828282828283 0.018897474567010977 \\ + 6.777777777777778 0.021972874142274355 \\ + 7.2727272727272725 0.027241859959554082 \\ + 7.767676767676767 0.03397550640952604 \\ + 8.262626262626263 0.04147859597103443 \\ + 8.757575757575758 0.04945732004721046 \\ + 9.252525252525253 0.05658865265697755 \\ + 9.747474747474747 0.0621346186006454 \\ + 10.242424242424242 0.06893042373082457 \\ + 10.737373737373737 0.0788501395331888 \\ + 11.232323232323232 0.09392029406724697 \\ + 11.727272727272727 0.11195153937922153 \\ + 12.222222222222221 0.1285801129900183 \\ + 12.717171717171718 0.144430224252929 \\ + 13.212121212121213 0.1597092671731783 \\ + 13.707070707070708 0.17408150235480008 \\ + 14.202020202020202 0.18706652054100284 \\ + 14.696969696969697 0.1983850371525059 \\ + 15.191919191919192 0.2082050866621403 \\ + 15.686868686868687 0.21750167082134184 \\ + 16.181818181818183 0.22638212587983422 \\ + 16.67676767676768 0.2350571497121742 \\ + 17.171717171717173 0.2435070367984886 \\ + 17.666666666666668 0.25167944705150597 \\ + 18.161616161616163 0.25906347280265807 \\ + 18.656565656565657 0.26610890999685555 \\ + 19.151515151515152 0.27309670918117884 \\ + 19.646464646464647 0.28007245495534044 \\ + 20.141414141414142 0.28703035106457303 \\ + 20.636363636363637 0.29391654988319665 \\ + 21.13131313131313 0.30070447485248264 \\ + 21.626262626262626 0.30719465460675804 \\ + 22.12121212121212 0.31369383321626276 \\ + 22.616161616161616 0.32049925607999213 \\ + 23.11111111111111 0.32768986260367317 \\ + 23.606060606060606 0.3375489411247478 \\ + 24.1010101010101 0.3453852748283662 \\ + 24.595959595959595 0.35123258565238763 \\ + 25.09090909090909 0.3570556623876905 \\ + 25.585858585858585 0.3628768386138644 \\ + 26.08080808080808 0.3686689132485595 \\ + 26.575757575757574 0.37398501777229176 \\ + 27.07070707070707 0.3788652100429109 \\ + 27.565656565656564 0.38344684577088217 \\ + 28.060606060606062 0.3877560216364902 \\ + 28.555555555555557 0.39152907694958067 \\ + 29.050505050505052 0.39567200457093665 \\ + 29.545454545454547 0.4004694123817664 \\ + 30.04040404040404 0.4052559415557995 \\ + 30.535353535353536 0.4099596549758129 \\ + 31.03030303030303 0.4146334333936847 \\ + 31.525252525252526 0.4192734078645425 \\ + 32.02020202020202 0.42391175269810183 \\ + 32.515151515151516 0.42856171286311906 \\ + 33.01010101010101 0.4332103222552433 \\ + 33.505050505050505 0.43731191674448666 \\ + 34.0 0.4407944528314002 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={a7eda40d-9ba9-4dee-85a6-e6e6c98c51d9}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.9715774365763954 0.009591121889139234 \\ + 5.017505514165627 0.01709785014308344 \\ + 7.0283426686564265 0.02839055990104187 \\ + 9.037810198567028 0.04994642140431407 \\ + 11.01537688929724 0.05339792640605925 \\ + 14.028550965728002 0.05865690726619068 \\ + 17.015074430535776 0.06386937402953864 \\ + 19.535468996550257 0.06826829239201485 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={8dfdea52-5273-4772-95fa-1a60317b2aa8}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.9359379426837711 0.009624079210363783 \\ + 2.9413102184414655 0.013975174870431074 \\ + 4.950813910536186 0.016981042572162496 \\ + 6.961006172020411 0.02767495021644838 \\ + 8.973952711062655 0.049827003390487325 \\ + 11.032258758638495 0.05342739082648312 \\ + 13.001222927926147 0.056863881590281974 \\ + 15.02036659147393 0.060387952089980025 \\ + 17.045707379527247 0.0639228386114652 \\ + 19.029820075383995 0.06738576853865276 \\ + 22.057890036903007 0.07267074761957777 \\ + } + ; + \addplot[color={rgb,1:red,0.5608;green,0.651;blue,0.3176}, name path={fa9a0b8e-cd3e-413b-b34f-79a9652f225f}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -3.0963491202232385 0.01267861641785704 \\ + -0.0279048135803421 0.010535545771553285 \\ + 3.0006976203395084 0.014095204206766212 \\ + 5.98666770017828 0.020154178709194066 \\ + 8.009921711495235 0.04112640918763189 \\ + 10.033175722812185 0.05168366197533272 \\ + 13.071544841485153 0.05698661648309254 \\ + 16.020463529958917 0.062133450530920654 \\ + 19.06673901247965 0.06745020423951058 \\ + 22.070847221145648 0.07269336217225228 \\ + } + ; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/naca_65410_clcd_b60_comp.tikz b/v0.5.0/DuctAPE/theory_latex/figures/naca_65410_clcd_b60_comp.tikz new file mode 100644 index 00000000..828c512c --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/naca_65410_clcd_b60_comp.tikz @@ -0,0 +1,409 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={58.5mm}, height={50.8mm}, scaled x ticks={false}, xlabel={}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-6.0}, xmax={24.0}, xticklabels={{$-5$,$0$,$5$,$10$,$15$,$20$}}, xtick={{-5.0,0.0,5.0,10.0,15.0,20.0}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_\ell$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={-0.1}, ymax={1.2}, yticklabels={{$0.00$,$0.25$,$0.50$,$0.75$,$1.00$}}, ytick={{0.0,0.25,0.5,0.75,1.0}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={4174a5ad-5d7b-494c-a586-b6f9b156f561}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.3608;blue,0.6706}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 0.9552621969437096 0.112069690498058 \\ + 3.963837956866696 0.2477105487379803 \\ + 5.996525434044109 0.3395597038873091 \\ + 8.010003208994036 0.3975733365792125 \\ + 10.015690874284893 0.4672112735280124 \\ + 12.042624293191402 0.5051465625034581 \\ + 15.034734594062257 0.5403569729227298 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={2180c97b-4881-41ad-8434-26bcd61117a2}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + -0.0276428947522378 -0.0559556543614345 \\ + 1.9934329842625633 0.0571301117416487 \\ + 4.030304803135785 0.1450476803369801 \\ + 5.946293804481364 0.2255718715263559 \\ + 7.917276077926635 0.2851401158368924 \\ + 9.971260164979816 0.3457921371321594 \\ + 11.945533259228919 0.4001170069619143 \\ + 13.970850640613113 0.4397779792897678 \\ + 15.957628853916804 0.4741780260925526 \\ + 17.958886678757388 0.4855072251798983 \\ + 19.97133329433101 0.4790089510325865 \\ + } + ; + \addplot[color={rgb,1:red,0.5608;green,0.651;blue,0.3176}, name path={d5459804-7162-4a89-9ae2-9d8edb30ebb8}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.5608;green,0.651;blue,0.3176}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 2.97174239465558 0.1350683941267651 \\ + 6.000878122854724 0.216966691975364 \\ + 11.037713193432031 0.3145960028429833 \\ + 13.030275832458038 0.3608369335561792 \\ + 16.07532450520688 0.4106607025467988 \\ + 19.05453822138884 0.4056830558675343 \\ + } + ; + \addplot[color={rgb,1:red,0.5098;green,0.5098;blue,0.5098}, name path={b5c2b1ed-c414-4fd7-9da2-e04325f042e3}, draw opacity={1.0}, line width={1.0}, dashed, forget plot] + table[row sep={\\}] + { + \\ + -15.0 -0.5665510105403683 \\ + -14.505050505050505 -0.5223707485770781 \\ + -14.01010101010101 -0.48288290323857036 \\ + -13.515151515151516 -0.4476923804233114 \\ + -13.02020202020202 -0.41640408602976736 \\ + -12.525252525252526 -0.38862292595640446 \\ + -12.030303030303031 -0.363953806101689 \\ + -11.535353535353535 -0.342001632364087 \\ + -11.04040404040404 -0.3223713106420649 \\ + -10.545454545454545 -0.31264275688078474 \\ + -10.05050505050505 -0.3229772463157242 \\ + -9.555555555555555 -0.37730526563488587 \\ + -9.06060606060606 -0.4398893615283618 \\ + -8.565656565656566 -0.44816433443905423 \\ + -8.070707070707071 -0.44277801246942355 \\ + -7.575757575757576 -0.4298637871228801 \\ + -7.08080808080808 -0.4108534742848187 \\ + -6.585858585858586 -0.38042950578354084 \\ + -6.090909090909091 -0.33981331145726257 \\ + -5.595959595959596 -0.2900177741710254 \\ + -5.101010101010101 -0.23727259949514537 \\ + -4.606060606060606 -0.1815499910867863 \\ + -4.111111111111111 -0.12544341290574643 \\ + -3.6161616161616164 -0.06876672586757099 \\ + -3.121212121212121 -0.012021506605778243 \\ + -2.6262626262626263 0.04483434055713697 \\ + -2.1313131313131315 0.10175187222194775 \\ + -1.6363636363636365 0.15885001136591717 \\ + -1.1414141414141414 0.21614787322246745 \\ + -0.6464646464646465 0.27326335201173685 \\ + -0.15151515151515152 0.33008787367812703 \\ + 0.3434343434343434 0.3867358841059261 \\ + 0.8383838383838383 0.4433265167789935 \\ + 1.3333333333333333 0.4990846154557274 \\ + 1.8282828282828283 0.5514163812619709 \\ + 2.323232323232323 0.5956790139480467 \\ + 2.8181818181818183 0.6300960032070431 \\ + 3.313131313131313 0.6778677494717945 \\ + 3.808080808080808 0.7295565593987938 \\ + 4.303030303030303 0.7780694571148149 \\ + 4.797979797979798 0.8255216383729825 \\ + 5.292929292929293 0.8720063083639519 \\ + 5.787878787878788 0.9167960654895222 \\ + 6.282828282828283 0.957800935223836 \\ + 6.777777777777778 0.995808680488238 \\ + 7.2727272727272725 1.0336100742677 \\ + 7.767676767676767 1.0699644187909074 \\ + 8.262626262626263 1.0992053861622957 \\ + 8.757575757575758 1.1047006399431818 \\ + 9.252525252525253 1.1001338863619823 \\ + 9.747474747474747 1.0881279859286563 \\ + 10.242424242424242 1.0582474472708032 \\ + 10.737373737373737 1.0246110095345213 \\ + 11.232323232323232 0.9907201888390117 \\ + 11.727272727272727 0.9564933909437671 \\ + 12.222222222222221 0.9272047502821661 \\ + 12.717171717171718 0.9210081124572284 \\ + 13.212121212121213 0.9191664492896328 \\ + 13.707070707070708 0.9170774786104494 \\ + 14.202020202020202 0.9180098805020722 \\ + 14.696969696969697 0.9220997625655921 \\ + 15.191919191919192 0.9319796370148837 \\ + 15.686868686868687 0.9447055160240829 \\ + 16.181818181818183 0.9589114265942978 \\ + 16.67676767676768 0.9734513568690647 \\ + 17.171717171717173 0.9887075264975685 \\ + 17.666666666666668 1.0042483369086435 \\ + 18.161616161616163 1.0198102993993334 \\ + 18.656565656565657 1.035398900104723 \\ + 19.151515151515152 1.051295046008166 \\ + 19.646464646464647 1.0691577941475554 \\ + 20.141414141414142 1.0864846355610962 \\ + 20.636363636363637 1.1030653457193929 \\ + 21.13131313131313 1.1194857325791487 \\ + 21.626262626262626 1.135774015505571 \\ + 22.12121212121212 1.1517956055832994 \\ + 22.616161616161616 1.167218420827846 \\ + 23.11111111111111 1.1821984594240826 \\ + 23.606060606060606 1.1966270886411536 \\ + 24.1010101010101 1.2114379401269704 \\ + 24.595959595959595 1.2269249451976803 \\ + 25.09090909090909 1.2422736504402454 \\ + 25.585858585858585 1.2573850331402625 \\ + 26.08080808080808 1.2723818841719159 \\ + 26.575757575757574 1.2872454497362291 \\ + 27.07070707070707 1.3019543464686127 \\ + 27.565656565656564 1.316387026323919 \\ + 28.060606060606062 1.3308240336463104 \\ + 28.555555555555557 1.345627164736373 \\ + 29.050505050505052 1.3603996856804472 \\ + 29.545454545454547 1.3745594103327088 \\ + 30.04040404040404 1.3878745383906563 \\ + 30.535353535353536 1.4003714583324913 \\ + 31.03030303030303 1.412153211455866 \\ + 31.525252525252526 1.423563342761 \\ + 32.02020202020202 1.4349005047644947 \\ + 32.515151515151516 1.446141174796294 \\ + 33.01010101010101 1.4571919141366922 \\ + 33.505050505050505 1.466658196592202 \\ + 34.0 1.4743512710405462 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={e51bc4e7-ac72-460c-b18c-3a9110e94ebe}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.9552621969437096 0.41831279314592795 \\ + 3.963837956866696 0.6656241238276845 \\ + 5.996525434044109 0.820760578243245 \\ + 8.010003208994036 0.9184137389332372 \\ + 10.015690874284893 0.9142798240629044 \\ + 12.042624293191402 0.9027350338781513 \\ + 15.034734594062257 0.8865733259649003 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={245de660-9b8d-4609-8030-6ca474fe1038}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -0.0276428947522378 0.2824203637228194 \\ + 1.9934329842625633 0.45402532505720816 \\ + 4.030304803135785 0.5878720810231691 \\ + 5.946293804481364 0.7135809845482748 \\ + 7.917276077926635 0.8008158569482177 \\ + 9.971260164979816 0.7937871844264768 \\ + 11.945533259228919 0.7784790554879751 \\ + 13.970850640613113 0.7637123725456174 \\ + 15.957628853916804 0.7501864713163902 \\ + 17.958886678757388 0.7375546709419596 \\ + 19.97133329433101 0.7258842098044365 \\ + } + ; + \addplot[color={rgb,1:red,0.5608;green,0.651;blue,0.3176}, name path={5ca30905-9688-4340-98af-1205cc5c8737}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 2.97174239465558 0.454926096065697 \\ + 6.000878122854724 0.6373218854725252 \\ + 11.037713193432031 0.693903455395807 \\ + 13.030275832458038 0.67853175116211 \\ + 16.07532450520688 0.6571557964503238 \\ + 19.05453822138884 0.6387796233637454 \\ + } + ; +\end{axis} +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={63.5mm}, yshift={-0.0mm}, width={58.5mm}, height={50.8mm}, scaled x ticks={false}, xlabel={}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-6.0}, xmax={24.0}, xticklabels={{$-5$,$0$,$5$,$10$,$15$,$20$}}, xtick={{-5.0,0.0,5.0,10.0,15.0,20.0}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_d$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={0.0}, ymax={0.05}, yticklabels={{$0.00$,$0.01$,$0.02$,$0.03$,$0.04$}}, ytick={{0.0,0.010000000000000002,0.020000000000000004,0.030000000000000006,0.04000000000000001}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={9b2ba10b-14c6-406b-a7d1-6dcf27e74306}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.3608;blue,0.6706}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 0.9405786094041284 0.0124244976869433 \\ + 3.9943105710142923 0.0119309535317269 \\ + 5.989035420838222 0.013187323068425 \\ + 7.971166194849133 0.0109510460539943 \\ + 10.02090727059311 0.0106226610508872 \\ + 11.988897327901677 0.0100788510667679 \\ + 14.979879859145202 0.0170956293585583 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={22223243-cf44-4c09-86b7-c8515d2b5d1c}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 0.0583636243957022 0.0160495578845746 \\ + 2.0046954194062705 0.0108762588770488 \\ + 4.016704576205485 0.0100060704020361 \\ + 6.023886666325359 0.0102895508633867 \\ + 8.028435810983769 0.0112023052900263 \\ + 10.03693437383437 0.0111711487687323 \\ + 12.011936019425285 0.009145755472504 \\ + 14.02043458227589 0.0091145989512101 \\ + 15.983149149046653 0.0100258174929971 \\ + 18.015490495798254 0.0142962356193639 \\ + 20.033789466755405 0.0219227815606053 \\ + } + ; + \addplot[color={rgb,1:red,0.5608;green,0.651;blue,0.3176}, name path={949b1ccf-08e3-4dd4-b894-42cac9c5328b}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.5608;green,0.651;blue,0.3176}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 2.9515296274850424 0.0120877967573827 \\ + 5.937922215788459 0.0100133902721482 \\ + 9.009723026442774 0.0095762159814708 \\ + 11.025984365952521 0.0094133613202085 \\ + 12.982049797336426 0.0088592935726694 \\ + 15.988588110403402 0.0091202229299363 \\ + 19.045068519590817 0.0186436016213086 \\ + } + ; + \addplot[color={rgb,1:red,0.5098;green,0.5098;blue,0.5098}, name path={aef06601-d4c7-46a8-b387-fd6f76f334e3}, draw opacity={1.0}, line width={1.0}, dashed, forget plot] + table[row sep={\\}] + { + \\ + -15.0 0.19342858851356226 \\ + -14.505050505050505 0.1825511736008694 \\ + -14.01010101010101 0.17197853129710508 \\ + -13.515151515151516 0.1616563195018482 \\ + -13.02020202020202 0.1515301961146778 \\ + -12.525252525252526 0.14154581903517283 \\ + -12.030303030303031 0.13164884616291223 \\ + -11.535353535353535 0.12178493539747501 \\ + -11.04040404040404 0.11189974463844013 \\ + -10.545454545454545 0.10260591529963403 \\ + -10.05050505050505 0.09471085227657969 \\ + -9.555555555555555 0.09416157778087088 \\ + -9.06060606060606 0.09630965356893784 \\ + -8.565656565656566 0.08894797599132932 \\ + -8.070707070707071 0.07877076441051206 \\ + -7.575757575757576 0.06623868565832924 \\ + -7.08080808080808 0.05357972313981393 \\ + -6.585858585858586 0.04255296615648547 \\ + -6.090909090909091 0.03253944698920481 \\ + -5.595959595959596 0.023406117632169647 \\ + -5.101010101010101 0.016776300040109642 \\ + -4.606060606060606 0.013850321888362755 \\ + -4.111111111111111 0.012656846449273838 \\ + -3.6161616161616164 0.012264738992753578 \\ + -3.121212121212121 0.011948845063480705 \\ + -2.6262626262626263 0.011762030042036908 \\ + -2.1313131313131315 0.011583891345618498 \\ + -1.6363636363636365 0.011413100451654246 \\ + -1.1414141414141414 0.011247243670881814 \\ + -0.6464646464646465 0.011013411470531236 \\ + -0.15151515151515152 0.01060225166893664 \\ + 0.3434343434343434 0.010109225448796005 \\ + 0.8383838383838383 0.009640289631027204 \\ + 1.3333333333333333 0.00933945565625332 \\ + 1.8282828282828283 0.009416855456670179 \\ + 2.323232323232323 0.01071708511846682 \\ + 2.8181818181818183 0.013554397772055355 \\ + 3.313131313131313 0.01435536227855909 \\ + 3.808080808080808 0.01481071236793852 \\ + 4.303030303030303 0.015324584893773962 \\ + 4.797979797979798 0.015858271345099734 \\ + 5.292929292929293 0.016492627038757736 \\ + 5.787878787878788 0.017491751445786515 \\ + 6.282828282828283 0.018897474567010977 \\ + 6.777777777777778 0.021972874142274355 \\ + 7.2727272727272725 0.027241859959554082 \\ + 7.767676767676767 0.03397550640952604 \\ + 8.262626262626263 0.04147859597103443 \\ + 8.757575757575758 0.04945732004721046 \\ + 9.252525252525253 0.05658865265697755 \\ + 9.747474747474747 0.0621346186006454 \\ + 10.242424242424242 0.06893042373082457 \\ + 10.737373737373737 0.0788501395331888 \\ + 11.232323232323232 0.09392029406724697 \\ + 11.727272727272727 0.11195153937922153 \\ + 12.222222222222221 0.1285801129900183 \\ + 12.717171717171718 0.144430224252929 \\ + 13.212121212121213 0.1597092671731783 \\ + 13.707070707070708 0.17408150235480008 \\ + 14.202020202020202 0.18706652054100284 \\ + 14.696969696969697 0.1983850371525059 \\ + 15.191919191919192 0.2082050866621403 \\ + 15.686868686868687 0.21750167082134184 \\ + 16.181818181818183 0.22638212587983422 \\ + 16.67676767676768 0.2350571497121742 \\ + 17.171717171717173 0.2435070367984886 \\ + 17.666666666666668 0.25167944705150597 \\ + 18.161616161616163 0.25906347280265807 \\ + 18.656565656565657 0.26610890999685555 \\ + 19.151515151515152 0.27309670918117884 \\ + 19.646464646464647 0.28007245495534044 \\ + 20.141414141414142 0.28703035106457303 \\ + 20.636363636363637 0.29391654988319665 \\ + 21.13131313131313 0.30070447485248264 \\ + 21.626262626262626 0.30719465460675804 \\ + 22.12121212121212 0.31369383321626276 \\ + 22.616161616161616 0.32049925607999213 \\ + 23.11111111111111 0.32768986260367317 \\ + 23.606060606060606 0.3375489411247478 \\ + 24.1010101010101 0.3453852748283662 \\ + 24.595959595959595 0.35123258565238763 \\ + 25.09090909090909 0.3570556623876905 \\ + 25.585858585858585 0.3628768386138644 \\ + 26.08080808080808 0.3686689132485595 \\ + 26.575757575757574 0.37398501777229176 \\ + 27.07070707070707 0.3788652100429109 \\ + 27.565656565656564 0.38344684577088217 \\ + 28.060606060606062 0.3877560216364902 \\ + 28.555555555555557 0.39152907694958067 \\ + 29.050505050505052 0.39567200457093665 \\ + 29.545454545454547 0.4004694123817664 \\ + 30.04040404040404 0.4052559415557995 \\ + 30.535353535353536 0.4099596549758129 \\ + 31.03030303030303 0.4146334333936847 \\ + 31.525252525252526 0.4192734078645425 \\ + 32.02020202020202 0.42391175269810183 \\ + 32.515151515151516 0.42856171286311906 \\ + 33.01010101010101 0.4332103222552433 \\ + 33.505050505050505 0.43731191674448666 \\ + 34.0 0.4407944528314002 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={4117d232-a3c1-42cf-b749-b92354e50a2c}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.9552621969437096 0.009606153355000535 \\ + 3.963837956866696 0.015361819404820759 \\ + 5.996525434044109 0.020195678951129517 \\ + 8.010003208994036 0.041127329141117226 \\ + 10.015690874284893 0.051653145157693085 \\ + 12.042624293191402 0.05519081135125723 \\ + 15.034734594062257 0.060413028985198354 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={71c57cad-61aa-4fcb-9891-918aa521394d}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -0.0276428947522378 0.010535328346800198 \\ + 1.9934329842625633 0.009752667545764714 \\ + 4.030304803135785 0.015463544173662256 \\ + 5.946293804481364 0.019985797755888844 \\ + 7.917276077926635 0.040047831786895936 \\ + 9.971260164979816 0.051575598940888034 \\ + 11.945533259228919 0.05502135552942963 \\ + 13.970850640613113 0.058556201200930365 \\ + 15.957628853916804 0.062023783332836646 \\ + 17.958886678757388 0.06551663715458902 \\ + 19.97133329433101 0.06902901910082608 \\ + } + ; + \addplot[color={rgb,1:red,0.5608;green,0.651;blue,0.3176}, name path={8c836bfd-9b68-4a72-8965-b81565b34c17}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 2.97174239465558 0.014043797639244446 \\ + 6.000878122854724 0.02021405377278831 \\ + 11.037713193432031 0.05343691061109698 \\ + 13.030275832458038 0.05691458847442883 \\ + 16.07532450520688 0.062229200995788624 \\ + 19.05453822138884 0.06742890984192829 \\ + } + ; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/naca_65410_clcd_b70_comp.tikz b/v0.5.0/DuctAPE/theory_latex/figures/naca_65410_clcd_b70_comp.tikz new file mode 100644 index 00000000..67b298b4 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/naca_65410_clcd_b70_comp.tikz @@ -0,0 +1,425 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={58.5mm}, height={50.8mm}, scaled x ticks={false}, xlabel={$\alpha~\mathrm{(degrees)}$}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-6.0}, xmax={24.0}, xticklabels={{$-5$,$0$,$5$,$10$,$15$,$20$}}, xtick={{-5.0,0.0,5.0,10.0,15.0,20.0}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_\ell$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={-0.1}, ymax={1.2}, yticklabels={{$0.00$,$0.25$,$0.50$,$0.75$,$1.00$}}, ytick={{0.0,0.25,0.5,0.75,1.0}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={3e3e13cf-23a7-4981-8e33-2a6f9a3dfccc}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.3608;blue,0.6706}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + -1.4967175748469774 -0.1015323675291747 \\ + 0.532188254979129 0.0248952099642306 \\ + 2.5066630242703134 0.1840155712444191 \\ + 4.534202955463169 0.3162823653949582 \\ + 6.523702609720075 0.4111713434466746 \\ + 8.52167083550312 0.4698571782241611 \\ + 10.472310673644131 0.5308718701713351 \\ + 12.570672448970882 0.5603752806494849 \\ + 14.539068969344111 0.545480156053919 \\ + 16.511290005890437 0.5142352248183784 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={e490c857-27b2-474a-8fe2-09e5648afd21}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 1.9641713409545245 0.0628069017720242 \\ + 3.968033693690197 0.1857762552646392 \\ + 5.954525163519206 0.2720241445568 \\ + 7.977019971663141 0.3449964093705725 \\ + 10.005919686353666 0.4007821749509928 \\ + 12.006385497738872 0.4495322477340218 \\ + 14.013547347786425 0.4803146167730917 \\ + 16.033519010927154 0.4767239873454575 \\ + 18.03262620577218 0.445786347844652 \\ + } + ; + \addplot[color={rgb,1:red,0.5608;green,0.651;blue,0.3176}, name path={8dbf193d-b8e5-494e-ae61-1548afd3d3bb}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.5608;green,0.651;blue,0.3176}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + -0.0098389717831298 -0.0629398729502143 \\ + 1.9132146550450573 0.0435581326636135 \\ + 3.9597207859358825 0.1350517063081695 \\ + 5.933764219234746 0.1994881075491209 \\ + 7.945235633032944 0.2729457822425764 \\ + 11.98572905894519 0.3537538779731126 \\ + 14.04739252474516 0.3881548234598907 \\ + 15.993049194858916 0.409514699364751 \\ + 17.948278918599495 0.3948160732752253 \\ + } + ; + \addplot[color={rgb,1:red,0.5098;green,0.5098;blue,0.5098}, name path={216217b3-0a2e-4ba9-83c6-dc0c74e922ab}, draw opacity={1.0}, line width={1.0}, dashed, forget plot] + table[row sep={\\}] + { + \\ + -15.0 -0.5665510105403683 \\ + -14.505050505050505 -0.5223707485770781 \\ + -14.01010101010101 -0.48288290323857036 \\ + -13.515151515151516 -0.4476923804233114 \\ + -13.02020202020202 -0.41640408602976736 \\ + -12.525252525252526 -0.38862292595640446 \\ + -12.030303030303031 -0.363953806101689 \\ + -11.535353535353535 -0.342001632364087 \\ + -11.04040404040404 -0.3223713106420649 \\ + -10.545454545454545 -0.31264275688078474 \\ + -10.05050505050505 -0.3229772463157242 \\ + -9.555555555555555 -0.37730526563488587 \\ + -9.06060606060606 -0.4398893615283618 \\ + -8.565656565656566 -0.44816433443905423 \\ + -8.070707070707071 -0.44277801246942355 \\ + -7.575757575757576 -0.4298637871228801 \\ + -7.08080808080808 -0.4108534742848187 \\ + -6.585858585858586 -0.38042950578354084 \\ + -6.090909090909091 -0.33981331145726257 \\ + -5.595959595959596 -0.2900177741710254 \\ + -5.101010101010101 -0.23727259949514537 \\ + -4.606060606060606 -0.1815499910867863 \\ + -4.111111111111111 -0.12544341290574643 \\ + -3.6161616161616164 -0.06876672586757099 \\ + -3.121212121212121 -0.012021506605778243 \\ + -2.6262626262626263 0.04483434055713697 \\ + -2.1313131313131315 0.10175187222194775 \\ + -1.6363636363636365 0.15885001136591717 \\ + -1.1414141414141414 0.21614787322246745 \\ + -0.6464646464646465 0.27326335201173685 \\ + -0.15151515151515152 0.33008787367812703 \\ + 0.3434343434343434 0.3867358841059261 \\ + 0.8383838383838383 0.4433265167789935 \\ + 1.3333333333333333 0.4990846154557274 \\ + 1.8282828282828283 0.5514163812619709 \\ + 2.323232323232323 0.5956790139480467 \\ + 2.8181818181818183 0.6300960032070431 \\ + 3.313131313131313 0.6778677494717945 \\ + 3.808080808080808 0.7295565593987938 \\ + 4.303030303030303 0.7780694571148149 \\ + 4.797979797979798 0.8255216383729825 \\ + 5.292929292929293 0.8720063083639519 \\ + 5.787878787878788 0.9167960654895222 \\ + 6.282828282828283 0.957800935223836 \\ + 6.777777777777778 0.995808680488238 \\ + 7.2727272727272725 1.0336100742677 \\ + 7.767676767676767 1.0699644187909074 \\ + 8.262626262626263 1.0992053861622957 \\ + 8.757575757575758 1.1047006399431818 \\ + 9.252525252525253 1.1001338863619823 \\ + 9.747474747474747 1.0881279859286563 \\ + 10.242424242424242 1.0582474472708032 \\ + 10.737373737373737 1.0246110095345213 \\ + 11.232323232323232 0.9907201888390117 \\ + 11.727272727272727 0.9564933909437671 \\ + 12.222222222222221 0.9272047502821661 \\ + 12.717171717171718 0.9210081124572284 \\ + 13.212121212121213 0.9191664492896328 \\ + 13.707070707070708 0.9170774786104494 \\ + 14.202020202020202 0.9180098805020722 \\ + 14.696969696969697 0.9220997625655921 \\ + 15.191919191919192 0.9319796370148837 \\ + 15.686868686868687 0.9447055160240829 \\ + 16.181818181818183 0.9589114265942978 \\ + 16.67676767676768 0.9734513568690647 \\ + 17.171717171717173 0.9887075264975685 \\ + 17.666666666666668 1.0042483369086435 \\ + 18.161616161616163 1.0198102993993334 \\ + 18.656565656565657 1.035398900104723 \\ + 19.151515151515152 1.051295046008166 \\ + 19.646464646464647 1.0691577941475554 \\ + 20.141414141414142 1.0864846355610962 \\ + 20.636363636363637 1.1030653457193929 \\ + 21.13131313131313 1.1194857325791487 \\ + 21.626262626262626 1.135774015505571 \\ + 22.12121212121212 1.1517956055832994 \\ + 22.616161616161616 1.167218420827846 \\ + 23.11111111111111 1.1821984594240826 \\ + 23.606060606060606 1.1966270886411536 \\ + 24.1010101010101 1.2114379401269704 \\ + 24.595959595959595 1.2269249451976803 \\ + 25.09090909090909 1.2422736504402454 \\ + 25.585858585858585 1.2573850331402625 \\ + 26.08080808080808 1.2723818841719159 \\ + 26.575757575757574 1.2872454497362291 \\ + 27.07070707070707 1.3019543464686127 \\ + 27.565656565656564 1.316387026323919 \\ + 28.060606060606062 1.3308240336463104 \\ + 28.555555555555557 1.345627164736373 \\ + 29.050505050505052 1.3603996856804472 \\ + 29.545454545454547 1.3745594103327088 \\ + 30.04040404040404 1.3878745383906563 \\ + 30.535353535353536 1.4003714583324913 \\ + 31.03030303030303 1.412153211455866 \\ + 31.525252525252526 1.423563342761 \\ + 32.02020202020202 1.4349005047644947 \\ + 32.515151515151516 1.446141174796294 \\ + 33.01010101010101 1.4571919141366922 \\ + 33.505050505050505 1.466658196592202 \\ + 34.0 1.4743512710405462 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={c7179110-cdc8-4e54-969c-c94d24386e96}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -1.4967175748469774 0.17407247017677072 \\ + 0.532188254979129 0.41022029402126386 \\ + 2.5066630242703134 0.6105614188462789 \\ + 4.534202955463169 0.7895041957436538 \\ + 6.523702609720075 0.9327135735019897 \\ + 8.52167083550312 0.9956332479959229 \\ + 10.472310673644131 0.9844403945015514 \\ + 12.570672448970882 0.9715093060510268 \\ + 14.539068969344111 0.9594139156866938 \\ + 16.511290005890437 0.9474157329136081 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={3c8422ca-e3bc-40c5-9584-34412b34a8ee}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 1.9641713409545245 0.5201334002753634 \\ + 3.968033693690197 0.6695769274518379 \\ + 5.954525163519206 0.8148053359782522 \\ + 7.977019971663141 0.9069064953984333 \\ + 10.005919686353666 0.8955247919419036 \\ + 12.006385497738872 0.8762697200831823 \\ + 14.013547347786425 0.8574670865512557 \\ + 16.033519010927154 0.8391912280996394 \\ + 18.03262620577218 0.8218410469896203 \\ + } + ; + \addplot[color={rgb,1:red,0.5608;green,0.651;blue,0.3176}, name path={350071ab-7c4f-482c-95eb-f8877394be1c}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -0.0098389717831298 0.29917382288135164 \\ + 1.9132146550450573 0.46938879278593 \\ + 3.9597207859358825 0.606930126525406 \\ + 5.933764219234746 0.7373658971867093 \\ + 7.945235633032944 0.8229753790072039 \\ + 11.98572905894519 0.7886432117080772 \\ + 14.04739252474516 0.7677539984775523 \\ + 15.993049194858916 0.7489528819958252 \\ + 17.948278918599495 0.7310032635716652 \\ + } + ; +\end{axis} +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={63.5mm}, yshift={-0.0mm}, width={58.5mm}, height={50.8mm}, scaled x ticks={false}, xlabel={$\alpha~\mathrm{(degrees)}$}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-6.0}, xmax={24.0}, xticklabels={{$-5$,$0$,$5$,$10$,$15$,$20$}}, xtick={{-5.0,0.0,5.0,10.0,15.0,20.0}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_d$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={0.0}, ymax={0.05}, yticklabels={{$0.00$,$0.01$,$0.02$,$0.03$,$0.04$}}, ytick={{0.0,0.010000000000000002,0.020000000000000004,0.030000000000000006,0.04000000000000001}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={05e03c07-4fad-458c-ad19-491189eb894d}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.3608;blue,0.6706}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + -1.4956977792346144 0.0143721489251277 \\ + 0.4804283099784197 0.0104382346781757 \\ + 2.4925018438088973 0.012332349968587 \\ + 4.510038515119231 0.0113127919364091 \\ + 6.524297303941651 0.0120414378977847 \\ + 8.495397306673219 0.0107881031076147 \\ + 10.558278019066343 0.0105850564979468 \\ + 12.526318664809192 0.0109633787684267 \\ + 14.533803163156598 0.0153049796498129 \\ + 16.58586686333961 0.0458710062188715 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={1edcfa55-0c9a-4e41-b624-352ae3c25db1}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 1.9572788314346408 0.0097556078530629 \\ + 4.001002684371022 0.0116765272075484 \\ + 6.01391589619783 0.0135184729993161 \\ + 7.9761594754889895 0.0116760404675624 \\ + 9.99905085702743 0.0103050156121851 \\ + 11.98942800750553 0.0094035731582367 \\ + 14.00307132931124 0.0110104235367988 \\ + 16.010873771285745 0.0144980372210067 \\ + 18.0278269249958 0.0250391217263694 \\ + } + ; + \addplot[color={rgb,1:red,0.5608;green,0.651;blue,0.3176}, name path={8b6e56f7-00b0-45f0-b2a7-462fa6a2663c}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.5608;green,0.651;blue,0.3176}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 0.0191039847875674 0.0182305965941545 \\ + 1.9793187572091382 0.0142457353228404 \\ + 4.0457994450115535 0.014168567606511 \\ + 5.956662256731908 0.0130879984669642 \\ + 7.951635668141968 0.0106060282211257 \\ + 9.981036052137958 0.0097271122543365 \\ + 11.96605947147116 0.0102500396157092 \\ + 13.952409556414613 0.010372313962787 \\ + 16.013251915373473 0.0119979215572106 \\ + 17.981692014578584 0.0175290115972685 \\ + } + ; + \addplot[color={rgb,1:red,0.5098;green,0.5098;blue,0.5098}, name path={e0c18771-a880-4905-9763-6686ff7e7275}, draw opacity={1.0}, line width={1.0}, dashed, forget plot] + table[row sep={\\}] + { + \\ + -15.0 0.19342858851356226 \\ + -14.505050505050505 0.1825511736008694 \\ + -14.01010101010101 0.17197853129710508 \\ + -13.515151515151516 0.1616563195018482 \\ + -13.02020202020202 0.1515301961146778 \\ + -12.525252525252526 0.14154581903517283 \\ + -12.030303030303031 0.13164884616291223 \\ + -11.535353535353535 0.12178493539747501 \\ + -11.04040404040404 0.11189974463844013 \\ + -10.545454545454545 0.10260591529963403 \\ + -10.05050505050505 0.09471085227657969 \\ + -9.555555555555555 0.09416157778087088 \\ + -9.06060606060606 0.09630965356893784 \\ + -8.565656565656566 0.08894797599132932 \\ + -8.070707070707071 0.07877076441051206 \\ + -7.575757575757576 0.06623868565832924 \\ + -7.08080808080808 0.05357972313981393 \\ + -6.585858585858586 0.04255296615648547 \\ + -6.090909090909091 0.03253944698920481 \\ + -5.595959595959596 0.023406117632169647 \\ + -5.101010101010101 0.016776300040109642 \\ + -4.606060606060606 0.013850321888362755 \\ + -4.111111111111111 0.012656846449273838 \\ + -3.6161616161616164 0.012264738992753578 \\ + -3.121212121212121 0.011948845063480705 \\ + -2.6262626262626263 0.011762030042036908 \\ + -2.1313131313131315 0.011583891345618498 \\ + -1.6363636363636365 0.011413100451654246 \\ + -1.1414141414141414 0.011247243670881814 \\ + -0.6464646464646465 0.011013411470531236 \\ + -0.15151515151515152 0.01060225166893664 \\ + 0.3434343434343434 0.010109225448796005 \\ + 0.8383838383838383 0.009640289631027204 \\ + 1.3333333333333333 0.00933945565625332 \\ + 1.8282828282828283 0.009416855456670179 \\ + 2.323232323232323 0.01071708511846682 \\ + 2.8181818181818183 0.013554397772055355 \\ + 3.313131313131313 0.01435536227855909 \\ + 3.808080808080808 0.01481071236793852 \\ + 4.303030303030303 0.015324584893773962 \\ + 4.797979797979798 0.015858271345099734 \\ + 5.292929292929293 0.016492627038757736 \\ + 5.787878787878788 0.017491751445786515 \\ + 6.282828282828283 0.018897474567010977 \\ + 6.777777777777778 0.021972874142274355 \\ + 7.2727272727272725 0.027241859959554082 \\ + 7.767676767676767 0.03397550640952604 \\ + 8.262626262626263 0.04147859597103443 \\ + 8.757575757575758 0.04945732004721046 \\ + 9.252525252525253 0.05658865265697755 \\ + 9.747474747474747 0.0621346186006454 \\ + 10.242424242424242 0.06893042373082457 \\ + 10.737373737373737 0.0788501395331888 \\ + 11.232323232323232 0.09392029406724697 \\ + 11.727272727272727 0.11195153937922153 \\ + 12.222222222222221 0.1285801129900183 \\ + 12.717171717171718 0.144430224252929 \\ + 13.212121212121213 0.1597092671731783 \\ + 13.707070707070708 0.17408150235480008 \\ + 14.202020202020202 0.18706652054100284 \\ + 14.696969696969697 0.1983850371525059 \\ + 15.191919191919192 0.2082050866621403 \\ + 15.686868686868687 0.21750167082134184 \\ + 16.181818181818183 0.22638212587983422 \\ + 16.67676767676768 0.2350571497121742 \\ + 17.171717171717173 0.2435070367984886 \\ + 17.666666666666668 0.25167944705150597 \\ + 18.161616161616163 0.25906347280265807 \\ + 18.656565656565657 0.26610890999685555 \\ + 19.151515151515152 0.27309670918117884 \\ + 19.646464646464647 0.28007245495534044 \\ + 20.141414141414142 0.28703035106457303 \\ + 20.636363636363637 0.29391654988319665 \\ + 21.13131313131313 0.30070447485248264 \\ + 21.626262626262626 0.30719465460675804 \\ + 22.12121212121212 0.31369383321626276 \\ + 22.616161616161616 0.32049925607999213 \\ + 23.11111111111111 0.32768986260367317 \\ + 23.606060606060606 0.3375489411247478 \\ + 24.1010101010101 0.3453852748283662 \\ + 24.595959595959595 0.35123258565238763 \\ + 25.09090909090909 0.3570556623876905 \\ + 25.585858585858585 0.3628768386138644 \\ + 26.08080808080808 0.3686689132485595 \\ + 26.575757575757574 0.37398501777229176 \\ + 27.07070707070707 0.3788652100429109 \\ + 27.565656565656564 0.38344684577088217 \\ + 28.060606060606062 0.3877560216364902 \\ + 28.555555555555557 0.39152907694958067 \\ + 29.050505050505052 0.39567200457093665 \\ + 29.545454545454547 0.4004694123817664 \\ + 30.04040404040404 0.4052559415557995 \\ + 30.535353535353536 0.4099596549758129 \\ + 31.03030303030303 0.4146334333936847 \\ + 31.525252525252526 0.4192734078645425 \\ + 32.02020202020202 0.42391175269810183 \\ + 32.515151515151516 0.42856171286311906 \\ + 33.01010101010101 0.4332103222552433 \\ + 33.505050505050505 0.43731191674448666 \\ + 34.0 0.4407944528314002 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={d40f53af-78fd-4a7c-991f-83d72d0455f5}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -1.4967175748469774 0.011579518059453009 \\ + 0.532188254979129 0.010016944200912918 \\ + 2.5066630242703134 0.011940214094511523 \\ + 4.534202955463169 0.016272734955427037 \\ + 6.523702609720075 0.02354536900139248 \\ + 8.52167083550312 0.04685021478371466 \\ + 10.472310673644131 0.05245009705229581 \\ + 12.570672448970882 0.056112429244627636 \\ + 14.539068969344111 0.05954792927141587 \\ + 16.511290005890437 0.06299010433676155 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={ddc52191-54f2-4334-a8fa-1622b9cad4df}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 1.9641713409545245 0.009715059108937335 \\ + 3.968033693690197 0.015368105087339946 \\ + 5.954525163519206 0.020019916035599713 \\ + 7.977019971663141 0.04075332131828034 \\ + 10.005919686353666 0.05163609121753359 \\ + 12.006385497738872 0.055127562721445 \\ + 14.013547347786425 0.05863072101291913 \\ + 16.033519010927154 0.06215623664376715 \\ + 18.03262620577218 0.06564533690812248 \\ + } + ; + \addplot[color={rgb,1:red,0.5608;green,0.651;blue,0.3176}, name path={f62ad62b-35c5-4ff6-9a60-87a9324c86a1}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -0.0098389717831298 0.010520562226905703 \\ + 1.9132146550450573 0.009654347138969496 \\ + 3.9597207859358825 0.01535567232895031 \\ + 5.933764219234746 0.01993407545323115 \\ + 7.945235633032944 0.0403824940798203 \\ + 11.98572905894519 0.05509151043454102 \\ + 14.04739252474516 0.05868979199028788 \\ + 15.993049194858916 0.06208560348997746 \\ + 17.948278918599495 0.06549812312048688 \\ + } + ; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/panel_geom_closeup_m.png b/v0.5.0/DuctAPE/theory_latex/figures/panel_geom_closeup_m.png new file mode 100644 index 00000000..bc72504c Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/panel_geom_closeup_m.png differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/panel_geometry.png b/v0.5.0/DuctAPE/theory_latex/figures/panel_geometry.png new file mode 100644 index 00000000..8d9688ab Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/panel_geometry.png differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/pg-smoothed-margin.tikz b/v0.5.0/DuctAPE/theory_latex/figures/pg-smoothed-margin.tikz new file mode 100644 index 00000000..8a343327 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/pg-smoothed-margin.tikz @@ -0,0 +1,240 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={45.8mm}, height={50.8mm}, scaled x ticks={false}, xlabel={Mach number}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.04500000000000004}, xmax={1.545}, xticklabels={{$0.0$,$0.5$,$1.0$,$1.5$}}, xtick={{0.0,0.5,1.0,1.5}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_{\ell_\text{pg}}$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, ymajorgrids={false}, ymin={0.8173356384974997}, ymax={7.271476411585855}, yticklabels={{$1$,$2$,$3$,$4$,$5$,$6$,$7$}}, ytick={{1.0,2.0,3.0,4.0,5.0,6.0,7.0}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={d890538f-559b-460f-80a1-85c30887408f}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.0 1.0 \\ + 0.015151515151515152 1.0001148039725956 \\ + 0.030303030303030304 1.0004594532748736 \\ + 0.045454545454545456 1.0010346614252381 \\ + 0.06060606060606061 1.0018416221862119 \\ + 0.07575757575757576 1.0028820164664152 \\ + 0.09090909090909091 1.0041580220928046 \\ + 0.10606060606060606 1.005672326565096 \\ + 0.12121212121212122 1.0074281429398948 \\ + 0.13636363636363635 1.0094292290304718 \\ + 0.15151515151515152 1.0116799101501937 \\ + 0.16666666666666666 1.01418510567422 \\ + 0.18181818181818182 1.0169503597462535 \\ + 0.19696969696969696 1.0199818765160997 \\ + 0.21212121212121213 1.0232865603609698 \\ + 0.22727272727272727 1.0268720616205405 \\ + 0.24242424242424243 1.0307468284648 \\ + 0.25757575757575757 1.0349201656170806 \\ + 0.2727272727272727 1.0394023007753748 \\ + 0.2878787878787879 1.0442044597166376 \\ + 0.30303030303030304 1.049338951235674 \\ + 0.3181818181818182 1.0548192632678453 \\ + 0.3333333333333333 1.0606601717798212 \\ + 0.3484848484848485 1.0668778642933074 \\ + 0.36363636363636365 1.0734900802433864 \\ + 0.3787878787878788 1.080516270778858 \\ + 0.3939393939393939 1.0879777811030487 \\ + 0.4090909090909091 1.0958980590507794 \\ + 0.42424242424242425 1.1043028943269202 \\ + 0.4393939393939394 1.113220693728123 \\ + 0.45454545454545453 1.1226827987756234 \\ + 0.4696969696969697 1.1327238535601487 \\ + 0.48484848484848486 1.1433822323141412 \\ + 0.5 1.1547005383792517 \\ + 0.5151515151515151 1.1667261889578033 \\ + 0.5303030303030303 1.1795121034985545 \\ + 0.5454545454545454 1.1931175180026088 \\ + 0.5606060606060606 1.2076089532614942 \\ + 0.5757575757575758 1.223061372490817 \\ + 0.5909090909090909 1.2395595736018243 \\ + 0.6060606060606061 1.257199874303108 \\ + 0.6212121212121212 1.276092165540276 \\ + 0.6363636363636364 1.296362432175337 \\ + 0.6515151515151515 1.3181558717669293 \\ + 0.6666666666666666 1.3416407864998738 \\ + 0.6818181818181818 1.36701348520264 \\ + 0.696969696969697 1.3945045203020525 \\ + 0.7121212121212122 1.424386711357996 \\ + 0.7272727272727273 1.4569855927715483 \\ + 0.7424242424242424 1.492693201005272 \\ + 0.7575757575757576 1.5319865399606778 \\ + 0.7727272727272727 1.575452722886752 \\ + 0.7878787878787878 1.6238238433069057 \\ + 0.803030303030303 1.6780263593970406 \\ + 0.8181818181818182 1.739252713092609 \\ + 0.8333333333333334 1.8090680674665818 \\ + 0.8484848484848485 1.8895745032357651 \\ + 0.8636363636363636 1.9836731962683514 \\ + 0.8787878787878788 2.095502095503143 \\ + 0.8939393939393939 2.2312072324832832 \\ + 0.9090909090909091 2.4003967925959153 \\ + 0.9242424242424242 2.619130107437398 \\ + 0.9393939393939394 2.9168154723945094 \\ + 0.9545454545454546 3.354968547317305 \\ + 0.9696969696969697 4.093146241443883 \\ + 0.9848484848484849 5.7664467739628495 \\ + 1.0 7.088812050083354 \\ + 1.0151515151515151 7.088812050083354 \\ + 1.0303030303030303 7.088812050083354 \\ + 1.0454545454545454 7.088812050083354 \\ + 1.0606060606060606 7.088812050083354 \\ + 1.0757575757575757 7.088812050083354 \\ + 1.0909090909090908 7.088812050083354 \\ + 1.106060606060606 7.088812050083354 \\ + 1.121212121212121 7.088812050083354 \\ + 1.1363636363636365 7.088812050083354 \\ + 1.1515151515151516 7.088812050083354 \\ + 1.1666666666666667 7.088812050083354 \\ + 1.1818181818181819 7.088812050083354 \\ + 1.196969696969697 7.088812050083354 \\ + 1.2121212121212122 7.088812050083354 \\ + 1.2272727272727273 7.088812050083354 \\ + 1.2424242424242424 7.088812050083354 \\ + 1.2575757575757576 7.088812050083354 \\ + 1.2727272727272727 7.088812050083354 \\ + 1.2878787878787878 7.088812050083354 \\ + 1.303030303030303 7.088812050083354 \\ + 1.3181818181818181 7.088812050083354 \\ + 1.3333333333333333 7.088812050083354 \\ + 1.3484848484848484 7.088812050083354 \\ + 1.3636363636363635 7.088812050083354 \\ + 1.378787878787879 7.088812050083354 \\ + 1.393939393939394 7.088812050083354 \\ + 1.4090909090909092 7.088812050083354 \\ + 1.4242424242424243 7.088812050083354 \\ + 1.4393939393939394 7.088812050083354 \\ + 1.4545454545454546 7.088812050083354 \\ + 1.4696969696969697 7.088812050083354 \\ + 1.4848484848484849 7.088812050083354 \\ + 1.5 7.088812050083354 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={72119b9c-9c0e-4c13-8257-7438b4d2c36f}, draw opacity={1.0}, line width={2}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.0 1.0 \\ + 0.015151515151515152 1.0001148039725956 \\ + 0.030303030303030304 1.0004594532748736 \\ + 0.045454545454545456 1.0010346614252381 \\ + 0.06060606060606061 1.0018416221862119 \\ + 0.07575757575757576 1.0028820164664152 \\ + 0.09090909090909091 1.0041580220928046 \\ + 0.10606060606060606 1.005672326565096 \\ + 0.12121212121212122 1.0074281429398948 \\ + 0.13636363636363635 1.0094292290304718 \\ + 0.15151515151515152 1.0116799101501937 \\ + 0.16666666666666666 1.01418510567422 \\ + 0.18181818181818182 1.0169503597462535 \\ + 0.19696969696969696 1.0199818765160997 \\ + 0.21212121212121213 1.0232865603609698 \\ + 0.22727272727272727 1.0268720616205405 \\ + 0.24242424242424243 1.0307468284648 \\ + 0.25757575757575757 1.0349201656170806 \\ + 0.2727272727272727 1.0394023007753748 \\ + 0.2878787878787879 1.0442044597166376 \\ + 0.30303030303030304 1.049338951235674 \\ + 0.3181818181818182 1.0548192632678453 \\ + 0.3333333333333333 1.0606601717798212 \\ + 0.3484848484848485 1.0668778642933074 \\ + 0.36363636363636365 1.0734900802433864 \\ + 0.3787878787878788 1.080516270778858 \\ + 0.3939393939393939 1.0879777811030487 \\ + 0.4090909090909091 1.0958980590507794 \\ + 0.42424242424242425 1.1043028943269202 \\ + 0.4393939393939394 1.113220693728123 \\ + 0.45454545454545453 1.1226827987756234 \\ + 0.4696969696969697 1.1327238535601487 \\ + 0.48484848484848486 1.1433822323141412 \\ + 0.5 1.1547005383792517 \\ + 0.5151515151515151 1.1667261889578033 \\ + 0.5303030303030303 1.1795121034985545 \\ + 0.5454545454545454 1.1931175180026088 \\ + 0.5606060606060606 1.2076089532614942 \\ + 0.5757575757575758 1.223061372490817 \\ + 0.5909090909090909 1.2395595736018243 \\ + 0.6060606060606061 1.257199874303108 \\ + 0.6212121212121212 1.276092165540276 \\ + 0.6363636363636364 1.296362432175337 \\ + 0.6515151515151515 1.3181558717669293 \\ + 0.6666666666666666 1.3416407864998738 \\ + 0.6818181818181818 1.36701348520264 \\ + 0.696969696969697 1.3945045203020525 \\ + 0.7121212121212122 1.424386711357996 \\ + 0.7272727272727273 1.4569855927715483 \\ + 0.7424242424242424 1.492693201005272 \\ + 0.7575757575757576 1.5319865399606778 \\ + 0.7727272727272727 1.575452722886752 \\ + 0.7878787878787878 1.6238238433069057 \\ + 0.803030303030303 1.6780263593970406 \\ + 0.8181818181818182 1.739252713092609 \\ + 0.8333333333333334 1.8090680674665818 \\ + 0.8484848484848485 1.8895745032357651 \\ + 0.8636363636363636 1.9836731962683514 \\ + 0.8787878787878788 2.095502095503143 \\ + 0.8939393939393939 2.2312072324832832 \\ + 0.9090909090909091 2.4003967925959153 \\ + 0.9242424242424242 2.619130107437398 \\ + 0.9393939393939394 2.9168154723945094 \\ + 0.9545454545454546 3.354968547317305 \\ + 0.9696969696969697 4.8804841869986735 \\ + 0.9848484848484849 6.946590424580144 \\ + 1.0 7.088812050083354 \\ + 1.0151515151515151 7.088812050083354 \\ + 1.0303030303030303 7.088812050083354 \\ + 1.0454545454545454 7.088812050083354 \\ + 1.0606060606060606 7.088812050083354 \\ + 1.0757575757575757 7.088812050083354 \\ + 1.0909090909090908 7.088812050083354 \\ + 1.106060606060606 7.088812050083354 \\ + 1.121212121212121 7.088812050083354 \\ + 1.1363636363636365 7.088812050083354 \\ + 1.1515151515151516 7.088812050083354 \\ + 1.1666666666666667 7.088812050083354 \\ + 1.1818181818181819 7.088812050083354 \\ + 1.196969696969697 7.088812050083354 \\ + 1.2121212121212122 7.088812050083354 \\ + 1.2272727272727273 7.088812050083354 \\ + 1.2424242424242424 7.088812050083354 \\ + 1.2575757575757576 7.088812050083354 \\ + 1.2727272727272727 7.088812050083354 \\ + 1.2878787878787878 7.088812050083354 \\ + 1.303030303030303 7.088812050083354 \\ + 1.3181818181818181 7.088812050083354 \\ + 1.3333333333333333 7.088812050083354 \\ + 1.3484848484848484 7.088812050083354 \\ + 1.3636363636363635 7.088812050083354 \\ + 1.378787878787879 7.088812050083354 \\ + 1.393939393939394 7.088812050083354 \\ + 1.4090909090909092 7.088812050083354 \\ + 1.4242424242424243 7.088812050083354 \\ + 1.4393939393939394 7.088812050083354 \\ + 1.4545454545454546 7.088812050083354 \\ + 1.4696969696969697 7.088812050083354 \\ + 1.4848484848484849 7.088812050083354 \\ + 1.5 7.088812050083354 \\ + } + ; + \node[, above, color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{6 pt}{7.800000000000001 pt}\selectfont}}] at (axis cs:0.5,6) {Nominal}; + \node[, below, color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{6 pt}{7.800000000000001 pt}\selectfont}}] at (axis cs:0.5,6) {Smoothed}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/prandtlglauert-correction-margin.tikz b/v0.5.0/DuctAPE/theory_latex/figures/prandtlglauert-correction-margin.tikz new file mode 100644 index 00000000..05cdb123 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/prandtlglauert-correction-margin.tikz @@ -0,0 +1,778 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={45.8mm}, height={50.8mm}, scaled x ticks={false}, xlabel={}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorticks={false}, xmajorgrids={false}, xmin={-18.080000000000002}, xmax={20.080000000000002}, axis x line*={left}, separate axis lines, x axis line style={{draw opacity = 0}}, scaled y ticks={false}, ylabel={}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, ymajorticks={false}, ymajorgrids={false}, ymin={-1.5416362697757904}, ymax={2.201795262699806}, axis y line*={left}, y axis line style={{draw opacity = 0}}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={2cab6e4e-e498-4976-991f-c278d890d435}, draw opacity={1.0}, line width={0.25}, solid, forget plot] + table[row sep={\\}] + { + \\ + -17.0 0.0 \\ + 19.0 0.0 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={fa9a4f84-1564-4c28-bc6d-addb4faba393}, draw opacity={1.0}, line width={0.25}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.0 -1.3350961730213144 \\ + 0.0 1.5890088595252194 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={bf2a32ed-db82-45fb-a157-136b106574bf}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -17.0 -1.3263761926191644 \\ + -16.9 -1.3284019384451278 \\ + -16.8 -1.3301543349855023 \\ + -16.7 -1.331636378557983 \\ + -16.6 -1.3328510654802654 \\ + -16.5 -1.3338013920700442 \\ + -16.4 -1.3344903546450155 \\ + -16.3 -1.3349209495228738 \\ + -16.2 -1.3350961730213144 \\ + -16.1 -1.335019021458033 \\ + -16.0 -1.334692491150725 \\ + -15.9 -1.3341195784170845 \\ + -15.8 -1.3333032795748079 \\ + -15.7 -1.3322465909415897 \\ + -15.6 -1.3309525088351257 \\ + -15.5 -1.3294240295731108 \\ + -15.4 -1.3276641494732404 \\ + -15.3 -1.3256758648532094 \\ + -15.2 -1.3234621720307134 \\ + -15.1 -1.3210260673234475 \\ + -15.0 -1.3183705470491074 \\ + -14.9 -1.3155885053659153 \\ + -14.8 -1.3127454998545929 \\ + -14.7 -1.3098035219665838 \\ + -14.6 -1.3067245631533313 \\ + -14.5 -1.3034706148662791 \\ + -14.4 -1.3000036685568699 \\ + -14.3 -1.296285715676548 \\ + -14.2 -1.292278747676756 \\ + -14.1 -1.287944756008938 \\ + -14.0 -1.2832457321245372 \\ + -13.9 -1.2781436674749966 \\ + -13.8 -1.2726005535117604 \\ + -13.7 -1.2665783816862708 \\ + -13.6 -1.2600391434499725 \\ + -13.5 -1.252944830254308 \\ + -13.4 -1.2452574335507216 \\ + -13.3 -1.236938944790656 \\ + -13.2 -1.2279513554255543 \\ + -13.1 -1.218256656906861 \\ + -13.0 -1.2078168406860186 \\ + -12.9 -1.1969545268352275 \\ + -12.8 -1.186018188207181 \\ + -12.7 -1.1750085954240634 \\ + -12.6 -1.1639265191080592 \\ + -12.5 -1.1527727298813533 \\ + -12.4 -1.1415479983661292 \\ + -12.3 -1.1302530951845715 \\ + -12.2 -1.1188887909588647 \\ + -12.1 -1.1074558563111927 \\ + -12.0 -1.0959550618637404 \\ + -11.9 -1.0843871782386918 \\ + -11.8 -1.072752976058231 \\ + -11.7 -1.0610532259445424 \\ + -11.6 -1.0492886985198109 \\ + -11.5 -1.0374601644062207 \\ + -11.4 -1.0255683942259552 \\ + -11.3 -1.0136141586011995 \\ + -11.2 -1.001598228154138 \\ + -11.1 -0.9895213735069548 \\ + -11.0 -0.9773843652818341 \\ + -10.9 -0.9652104621446128 \\ + -10.8 -0.9530235929458453 \\ + -10.7 -0.9408255335847938 \\ + -10.6 -0.9286180599607206 \\ + -10.5 -0.9164029479728876 \\ + -10.4 -0.9041819735205565 \\ + -10.3 -0.8919569125029898 \\ + -10.2 -0.8797295408194489 \\ + -10.1 -0.8675016343691964 \\ + -10.0 -0.855274969051494 \\ + -9.9 -0.8430513207656039 \\ + -9.8 -0.8308324654107879 \\ + -9.7 -0.818620178886308 \\ + -9.6 -0.8064162370914264 \\ + -9.5 -0.7942224159254052 \\ + -9.4 -0.7820404912875063 \\ + -9.3 -0.7698722390769915 \\ + -9.2 -0.757719435193123 \\ + -9.1 -0.7455838555351627 \\ + -9.0 -0.7334672760023729 \\ + -8.9 -0.7213476671605121 \\ + -8.8 -0.7092064757887554 \\ + -8.7 -0.6970506921064885 \\ + -8.6 -0.6848873063330984 \\ + -8.5 -0.6727233086879707 \\ + -8.4 -0.660565689390492 \\ + -8.3 -0.6484214386600484 \\ + -8.2 -0.6362975467160258 \\ + -8.1 -0.624201003777811 \\ + -8.0 -0.6121388000647897 \\ + -7.9 -0.6001179257963486 \\ + -7.8 -0.5881453711918734 \\ + -7.7 -0.5762281264707507 \\ + -7.6 -0.5643731818523667 \\ + -7.5 -0.5525875275561075 \\ + -7.4 -0.5408781538013594 \\ + -7.3 -0.5292520508075083 \\ + -7.2 -0.517716208793941 \\ + -7.1 -0.5062776179800431 \\ + -7.0 -0.49494326858520143 \\ + -6.9 -0.48371911033487036 \\ + -6.8 -0.4726022124991179 \\ + -6.7 -0.4615862446142507 \\ + -6.6 -0.45066487621657486 \\ + -6.5 -0.43983177684239705 \\ + -6.4 -0.4290806160280234 \\ + -6.3 -0.41840506330976024 \\ + -6.2 -0.4077987882239142 \\ + -6.1 -0.3972554603067914 \\ + -6.0 -0.3867687490946983 \\ + -5.9 -0.3763323241239414 \\ + -5.8 -0.36593985493082676 \\ + -5.7 -0.355585011051661 \\ + -5.6 -0.3452614620227504 \\ + -5.5 -0.3349628773804013 \\ + -5.4 -0.3246829266609202 \\ + -5.3 -0.31441527940061326 \\ + -5.2 -0.304153605135787 \\ + -5.1 -0.29389157340274763 \\ + -5.0 -0.28362285373780177 \\ + -4.9 -0.27334848544104173 \\ + -4.8 -0.2630738322468798 \\ + -4.7 -0.2527990503431024 \\ + -4.6 -0.2425242959174956 \\ + -4.5 -0.23224972515784578 \\ + -4.4 -0.2219754942519391 \\ + -4.3 -0.2117017593875617 \\ + -4.2 -0.20142867675249995 \\ + -4.1 -0.19115640253453994 \\ + -4.0 -0.1808850929214681 \\ + -3.9 -0.1706149041010705 \\ + -3.8 -0.16034599226113339 \\ + -3.7 -0.15007851358944305 \\ + -3.6 -0.13981262427378563 \\ + -3.5 -0.12954848050194748 \\ + -3.4 -0.11928623846171468 \\ + -3.3 -0.10902605434087356 \\ + -3.2 -0.09876808432721038 \\ + -3.1 -0.08851248460851127 \\ + -3.0 -0.07825941137256248 \\ + -2.9 -0.06800815075249923 \\ + -2.8 -0.05775790171309017 \\ + -2.7 -0.04750868968957163 \\ + -2.6 -0.03726054011717993 \\ + -2.5 -0.02701347843115147 \\ + -2.4 -0.016767530066722613 \\ + -2.3 -0.006522720459129719 \\ + -2.2 0.003720924956390808 \\ + -2.1 0.013963380744602669 \\ + -2.0 0.024204621470269486 \\ + -1.9 0.034444621698154876 \\ + -1.8 0.044683355993022464 \\ + -1.7 0.054920798919635916 \\ + -1.6 0.06515692504275884 \\ + -1.5 0.07539170892715487 \\ + -1.4 0.0856251251375877 \\ + -1.3 0.09585714823882088 \\ + -1.2 0.10608775279561815 \\ + -1.1 0.11631691337274302 \\ + -1.0 0.12654460453495925 \\ + -0.9 0.13675114698078158 \\ + -0.8 0.1469191062590442 \\ + -0.7 0.15705182420998975 \\ + -0.6 0.1671526426738609 \\ + -0.5 0.17722490349090023 \\ + -0.4 0.18727194850135045 \\ + -0.3 0.1972971195454542 \\ + -0.2 0.20730375846345414 \\ + -0.1 0.21729520709559283 \\ + 0.0 0.22727480728211297 \\ + 0.1 0.2372459008632572 \\ + 0.2 0.24721182967926816 \\ + 0.3 0.25717593557038854 \\ + 0.4 0.26714156037686093 \\ + 0.5 0.27711204593892796 \\ + 0.6 0.28709073409683233 \\ + 0.7 0.2970809666908167 \\ + 0.8 0.3070860855611236 \\ + 0.9 0.31710943254799584 \\ + 1.0 0.32715434949167593 \\ + 1.1 0.3372311618514844 \\ + 1.2 0.34734784498727106 \\ + 1.3 0.357504215590073 \\ + 1.4 0.36770009035092716 \\ + 1.5 0.37793528596087045 \\ + 1.6 0.38820961911093976 \\ + 1.7 0.39852290649217215 \\ + 1.8 0.40887496479560453 \\ + 1.9 0.4192656107122737 \\ + 2.0 0.4296946609332169 \\ + 2.1 0.4401619321494708 \\ + 2.2 0.45066724105207245 \\ + 2.3 0.46121040433205873 \\ + 2.4 0.4717912386804668 \\ + 2.5 0.48240956078833336 \\ + 2.6 0.4930651873466955 \\ + 2.7 0.50375793504659 \\ + 2.8 0.5144876205790542 \\ + 2.9 0.5252540606351245 \\ + 3.0 0.5360570719058383 \\ + 3.1 0.5472176917030886 \\ + 3.2 0.5590142298647537 \\ + 3.3 0.5713824118708475 \\ + 3.4 0.5842579632013845 \\ + 3.5 0.5975766093363787 \\ + 3.6 0.6112740757558444 \\ + 3.7 0.6252860879397959 \\ + 3.8 0.6395483713682468 \\ + 3.9 0.653996651521212 \\ + 4.0 0.6685666538787055 \\ + 4.1 0.6831941039207411 \\ + 4.2 0.6978147271273336 \\ + 4.3 0.7123642489784966 \\ + 4.4 0.7267783949542447 \\ + 4.5 0.7409928905345917 \\ + 4.6 0.7549434611995522 \\ + 4.7 0.7685658324291402 \\ + 4.8 0.7817957297033699 \\ + 4.9 0.7945688785022555 \\ + 5.0 0.806821004305811 \\ + 5.1 0.818768964189323 \\ + 5.2 0.8306621191887592 \\ + 5.3 0.8424849507251556 \\ + 5.4 0.8542219402195486 \\ + 5.5 0.8658575690929744 \\ + 5.6 0.8773763187664694 \\ + 5.7 0.8887626706610697 \\ + 5.8 0.9000011061978116 \\ + 5.9 0.9110761067977312 \\ + 6.0 0.9219721538818648 \\ + 6.1 0.9326737288712489 \\ + 6.2 0.9431653131869197 \\ + 6.3 0.9534313882499131 \\ + 6.4 0.9634564354812657 \\ + 6.5 0.9732249363020133 \\ + 6.6 0.9827213721331928 \\ + 6.7 0.9919302243958399 \\ + 6.8 1.0008359745109914 \\ + 6.9 1.0094231038996828 \\ + 7.0 1.017676093982951 \\ + 7.1 1.0257363947197207 \\ + 7.2 1.0337563825947784 \\ + 7.3 1.041736928817951 \\ + 7.4 1.0496789045990664 \\ + 7.5 1.057583181147952 \\ + 7.6 1.0654506296744348 \\ + 7.7 1.0732821213883428 \\ + 7.8 1.081078527499503 \\ + 7.9 1.0888407192177432 \\ + 8.0 1.0965695677528906 \\ + 8.1 1.104265944314773 \\ + 8.2 1.1119307201132174 \\ + 8.3 1.1195647663580517 \\ + 8.4 1.127168954259103 \\ + 8.5 1.1347441550261987 \\ + 8.6 1.1422912398691667 \\ + 8.7 1.1498110799978338 \\ + 8.8 1.1573045466220284 \\ + 8.9 1.1647725109515767 \\ + 9.0 1.1722158441963073 \\ + 9.1 1.179650461534768 \\ + 9.2 1.1870895824612524 \\ + 9.3 1.1945300346592058 \\ + 9.4 1.2019686458120726 \\ + 9.5 1.2094022436032983 \\ + 9.6 1.216827655716328 \\ + 9.7 1.224241709834606 \\ + 9.8 1.2316412336415778 \\ + 9.9 1.2390230548206882 \\ + 10.0 1.2463840010553824 \\ + 10.1 1.2537209000291054 \\ + 10.2 1.2610305794253018 \\ + 10.3 1.2683098669274173 \\ + 10.4 1.2755555902188962 \\ + 10.5 1.2827645769831837 \\ + 10.6 1.2899336549037248 \\ + 10.7 1.2970596516639645 \\ + 10.8 1.304139394947348 \\ + 10.9 1.3111697124373198 \\ + 11.0 1.3181474318173256 \\ + 11.1 1.325026174277794 \\ + 11.2 1.3317668927068351 \\ + 11.3 1.338377412334413 \\ + 11.4 1.3448655583904925 \\ + 11.5 1.351239156105038 \\ + 11.6 1.3575060307080147 \\ + 11.7 1.3636740074293865 \\ + 11.8 1.3697509114991193 \\ + 11.9 1.3757445681471765 \\ + 12.0 1.3816628026035231 \\ + 12.1 1.3875134400981242 \\ + 12.2 1.3933043058609442 \\ + 12.3 1.399043225121948 \\ + 12.4 1.4047380231110997 \\ + 12.5 1.4103965250583645 \\ + 12.6 1.4160265561937067 \\ + 12.7 1.4216359417470912 \\ + 12.8 1.4272325069484826 \\ + 12.9 1.4328240770278458 \\ + 13.0 1.438418477215145 \\ + 13.1 1.44397194969458 \\ + 13.2 1.449437093844378 \\ + 13.3 1.454816270685545 \\ + 13.4 1.4601118412390868 \\ + 13.5 1.4653261665260098 \\ + 13.6 1.4704616075673198 \\ + 13.7 1.475520525384023 \\ + 13.8 1.4805052809971249 \\ + 13.9 1.485418235427632 \\ + 14.0 1.49026174969655 \\ + 14.1 1.4950381848248855 \\ + 14.2 1.499749901833644 \\ + 14.3 1.5043992617438318 \\ + 14.4 1.5089886255764546 \\ + 14.5 1.5135203543525189 \\ + 14.6 1.51799680909303 \\ + 14.7 1.5224203508189946 \\ + 14.8 1.5267933405514187 \\ + 14.9 1.5311181393113076 \\ + 15.0 1.5353971081196682 \\ + 15.1 1.539551204323609 \\ + 15.2 1.5435032907074437 \\ + 15.3 1.5472585864479875 \\ + 15.4 1.5508223107220547 \\ + 15.5 1.554199682706459 \\ + 15.6 1.557395921578015 \\ + 15.7 1.5604162465135376 \\ + 15.8 1.5632658766898406 \\ + 15.9 1.5659500312837387 \\ + 16.0 1.5684739294720458 \\ + 16.1 1.5708427904315765 \\ + 16.2 1.573061833339145 \\ + 16.3 1.5751362773715663 \\ + 16.4 1.5770713417056537 \\ + 16.5 1.5788722455182223 \\ + 16.6 1.580544207986086 \\ + 16.7 1.5820924482860599 \\ + 16.8 1.5835221855949575 \\ + 16.9 1.5848386390895934 \\ + 17.0 1.5860470279467822 \\ + 17.1 1.5870871836027531 \\ + 17.2 1.587898652660948 \\ + 17.3 1.5884862270490012 \\ + 17.4 1.588854698694547 \\ + 17.5 1.5890088595252194 \\ + 17.6 1.5889535014686522 \\ + 17.7 1.5886934164524797 \\ + 17.8 1.5882333964043356 \\ + 17.9 1.5875782332518544 \\ + 18.0 1.58673271892267 \\ + 18.1 1.5857016453444164 \\ + 18.2 1.5844898044447273 \\ + 18.3 1.5831019881512376 \\ + 18.4 1.5815429883915808 \\ + 18.5 1.5798175970933912 \\ + 18.6 1.5779306061843026 \\ + 18.7 1.575886807591949 \\ + 18.8 1.5736909932439649 \\ + 18.9 1.571347955067984 \\ + 19.0 1.5688624849916406 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={459b75dc-3534-46fa-8962-fb009290776d}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -17.0 -1.531567303710771 \\ + -16.9 -1.5339064335066306 \\ + -16.8 -1.535929926735255 \\ + -16.7 -1.5376412432463 \\ + -16.6 -1.5390438428894218 \\ + -16.5 -1.5401411855142755 \\ + -16.4 -1.540936730970518 \\ + -16.3 -1.5414339391078042 \\ + -16.2 -1.5416362697757904 \\ + -16.1 -1.5415471828241325 \\ + -16.0 -1.5411701381024867 \\ + -15.9 -1.5405085954605078 \\ + -15.8 -1.5395660147478525 \\ + -15.7 -1.5383458558141763 \\ + -15.6 -1.5368515785091355 \\ + -15.5 -1.5350866426823853 \\ + -15.4 -1.533054508183582 \\ + -15.3 -1.530758634862381 \\ + -15.2 -1.5282024825684386 \\ + -15.1 -1.5253895111514104 \\ + -15.0 -1.522323180460953 \\ + -14.9 -1.5191107554315775 \\ + -14.8 -1.5158279354370383 \\ + -14.7 -1.5124308319858544 \\ + -14.6 -1.5088755565865442 \\ + -14.5 -1.5051182207476268 \\ + -14.4 -1.50111493597762 \\ + -14.3 -1.4968218137850435 \\ + -14.2 -1.4921949656784155 \\ + -14.1 -1.4871905031662547 \\ + -14.0 -1.48176453775708 \\ + -13.9 -1.47587318095941 \\ + -13.8 -1.4694725442817633 \\ + -13.7 -1.4625187392326582 \\ + -13.6 -1.4549678773206143 \\ + -13.5 -1.4467760700541497 \\ + -13.4 -1.4378994289417835 \\ + -13.3 -1.428294065492034 \\ + -13.2 -1.4179160912134194 \\ + -13.1 -1.4067216176144597 \\ + -13.0 -1.3946667562036725 \\ + -12.9 -1.3821240365521197 \\ + -12.8 -1.3694958404504165 \\ + -12.7 -1.3567830577364144 \\ + -12.6 -1.3439865782479643 \\ + -12.5 -1.3311072918229183 \\ + -12.4 -1.3181460882991265 \\ + -12.3 -1.3051038575144402 \\ + -12.2 -1.2919814893067112 \\ + -12.1 -1.2787798735137894 \\ + -12.0 -1.2654998999735272 \\ + -11.9 -1.252142458523775 \\ + -11.8 -1.238708439002384 \\ + -11.7 -1.225198731247205 \\ + -11.6 -1.21161422509609 \\ + -11.5 -1.19795581038689 \\ + -11.4 -1.1842243769574552 \\ + -11.3 -1.1704208146456372 \\ + -11.2 -1.1565460132892877 \\ + -11.1 -1.1426008627262574 \\ + -11.0 -1.128586252794397 \\ + -10.9 -1.1145290402876706 \\ + -10.8 -1.1004568558626964 \\ + -10.7 -1.0863717501513082 \\ + -10.6 -1.0722757737853403 \\ + -10.5 -1.0581709773966266 \\ + -10.4 -1.044059411617001 \\ + -10.3 -1.0299431270782975 \\ + -10.2 -1.0158241744123495 \\ + -10.1 -1.0017046042509918 \\ + -10.0 -0.987586467226058 \\ + -9.9 -0.973471813969382 \\ + -9.8 -0.9593626951127978 \\ + -9.7 -0.9452611612881392 \\ + -9.6 -0.9311692631272404 \\ + -9.5 -0.9170890512619354 \\ + -9.4 -0.903022576324058 \\ + -9.3 -0.8889718889454421 \\ + -9.2 -0.8749390397579216 \\ + -9.1 -0.8609260793933305 \\ + -9.0 -0.8469350584835033 \\ + -8.9 -0.8329405396288606 \\ + -8.8 -0.8189210994153275 \\ + -8.7 -0.8048848094529922 \\ + -8.6 -0.7908397413519441 \\ + -8.5 -0.7767939667222713 \\ + -8.4 -0.7627555571740626 \\ + -8.3 -0.7487325843174069 \\ + -8.2 -0.734733119762392 \\ + -8.1 -0.7207652351191076 \\ + -8.0 -0.7068370019976418 \\ + -7.9 -0.6929564920080835 \\ + -7.8 -0.679131776760521 \\ + -7.7 -0.6653709278650434 \\ + -7.6 -0.6516820169317392 \\ + -7.5 -0.6380731155706969 \\ + -7.4 -0.6245522953920054 \\ + -7.3 -0.6111276280057528 \\ + -7.2 -0.5978071850220287 \\ + -7.1 -0.584599038050921 \\ + -7.0 -0.5715112587025186 \\ + -6.9 -0.5585507171280074 \\ + -6.8 -0.5457140292119569 \\ + -6.7 -0.5329938851645323 \\ + -6.6 -0.5203829751958978 \\ + -6.5 -0.5078739895162188 \\ + -6.4 -0.4954596183356596 \\ + -6.3 -0.48313255186438503 \\ + -6.2 -0.47088548031256017 \\ + -6.1 -0.4587110938903495 \\ + -6.0 -0.44660208280791786 \\ + -5.9 -0.4345511372754302 \\ + -5.8 -0.4225509475030509 \\ + -5.7 -0.4105942037009451 \\ + -5.6 -0.39867359607927744 \\ + -5.5 -0.38678181484821267 \\ + -5.4 -0.3749115502179156 \\ + -5.3 -0.36305549239855095 \\ + -5.2 -0.3512063316002836 \\ + -5.1 -0.339356758033278 \\ + -5.0 -0.32749946190769946 \\ + -4.9 -0.3156356433039239 \\ + -4.8 -0.30377149572896506 \\ + -4.7 -0.2919071995329439 \\ + -4.6 -0.2800429350659811 \\ + -4.5 -0.2681788826781978 \\ + -4.4 -0.2563152227197146 \\ + -4.3 -0.2444521355406523 \\ + -4.2 -0.23258980149113195 \\ + -4.1 -0.22072840092127421 \\ + -4.0 -0.2088681141812002 \\ + -3.9 -0.1970091216210305 \\ + -3.8 -0.18515160359088603 \\ + -3.7 -0.17329574044088772 \\ + -3.6 -0.1614417125211563 \\ + -3.5 -0.14958970018181275 \\ + -3.4 -0.13773988377297774 \\ + -3.3 -0.12589244364477226 \\ + -3.2 -0.11404756014731715 \\ + -3.1 -0.1022054136307332 \\ + -3.0 -0.09036618444514123 \\ + -2.9 -0.07852904828808817 \\ + -2.8 -0.06669308020376112 \\ + -2.7 -0.054858309562241164 \\ + -2.6 -0.04302476573360937 \\ + -2.5 -0.031192478087946906 \\ + -2.4 -0.01936147599533489 \\ + -2.3 -0.007531788825854446 \\ + -2.2 0.00429655405041326 \\ + -2.1 0.016123523263387177 \\ + -2.0 0.02794908944298617 \\ + -1.9 0.039773223219129086 \\ + -1.8 0.0515958952217348 \\ + -1.7 0.06341707608072221 \\ + -1.6 0.07523673642601018 \\ + -1.5 0.08705484688751756 \\ + -1.4 0.09887137809516332 \\ + -1.3 0.11068630067886621 \\ + -1.2 0.12249958526854524 \\ + -1.1 0.13431120249411915 \\ + -1.0 0.14612112298550695 \\ + -0.9 0.15790662304268868 \\ + -0.8 0.1696475710955168 \\ + -0.7 0.18134782596871876 \\ + -0.6 0.19301124648702186 \\ + -0.5 0.2046416914751534 \\ + -0.4 0.21624301975784085 \\ + -0.3 0.22781909015981155 \\ + -0.2 0.23937376150579284 \\ + -0.1 0.250910892620512 \\ + 0.0 0.2624343423286965 \\ + 0.1 0.27394796945507366 \\ + 0.2 0.2854556328243708 \\ + 0.3 0.29696119126131537 \\ + 0.4 0.3084685035906347 \\ + 0.5 0.31998142863705603 \\ + 0.6 0.33150382522530686 \\ + 0.7 0.34303955218011456 \\ + 0.8 0.3545924683262064 \\ + 0.9 0.36616643248830977 \\ + 1.0 0.37776530349115206 \\ + 1.1 0.3894010041481696 \\ + 1.2 0.40108274361167473 \\ + 1.3 0.4128103102147094 \\ + 1.4 0.42458349229031506 \\ + 1.5 0.43640207817153354 \\ + 1.6 0.44826585619140635 \\ + 1.7 0.4601746146829754 \\ + 1.8 0.47212814197928216 \\ + 1.9 0.48412622641336817 \\ + 2.0 0.49616865631827556 \\ + 2.1 0.5082552200270456 \\ + 2.2 0.52038570587272 \\ + 2.3 0.5325599021883406 \\ + 2.4 0.5447775973069491 \\ + 2.5 0.5570385795615869 \\ + 2.6 0.5693426372852959 \\ + 2.7 0.5816895588111176 \\ + 2.8 0.594079132472094 \\ + 2.9 0.6065111466012664 \\ + 3.0 0.6189853895316767 \\ + 3.1 0.6318725632202078 \\ + 3.2 0.6454940321864938 \\ + 3.3 0.659775578607703 \\ + 3.4 0.6746429846610037 \\ + 3.5 0.6900220325235642 \\ + 3.6 0.7058385043725529 \\ + 3.7 0.7220181823851385 \\ + 3.8 0.7384868487384882 \\ + 3.9 0.7551702856097714 \\ + 4.0 0.771994275176156 \\ + 4.1 0.7888845996148102 \\ + 4.2 0.8057670411029028 \\ + 4.3 0.8225673818176014 \\ + 4.4 0.8392114039360747 \\ + 4.5 0.855624889635491 \\ + 4.6 0.8717336210930187 \\ + 4.7 0.887463380485826 \\ + 4.8 0.9027399499910811 \\ + 4.9 0.9174891117859527 \\ + 5.0 0.9316366480476086 \\ + 5.1 0.9454329637576335 \\ + 5.2 0.9591659962385104 \\ + 5.3 0.9728178261787546 \\ + 5.4 0.9863705342668817 \\ + 5.5 0.9998062011914076 \\ + 5.6 1.013106907640848 \\ + 5.7 1.0262547343037187 \\ + 5.8 1.0392317618685352 \\ + 5.9 1.0520200710238128 \\ + 6.0 1.0646017424580676 \\ + 6.1 1.0769588568598154 \\ + 6.2 1.0890734949175715 \\ + 6.3 1.100927737319852 \\ + 6.4 1.1125036647551723 \\ + 6.5 1.1237833579120478 \\ + 6.6 1.1347488974789945 \\ + 6.7 1.1453823641445282 \\ + 6.8 1.1556658385971648 \\ + 6.9 1.1655814015254191 \\ + 7.0 1.1751111336178075 \\ + 7.1 1.1844183672180542 \\ + 7.2 1.1936790515351783 \\ + 7.3 1.2028941925556362 \\ + 7.4 1.2120647962658853 \\ + 7.5 1.2211918686523817 \\ + 7.6 1.2302764157015826 \\ + 7.7 1.2393194433999448 \\ + 7.8 1.2483219577339246 \\ + 7.9 1.2572849646899797 \\ + 8.0 1.266209470254566 \\ + 8.1 1.2750964804141414 \\ + 8.2 1.283947001155161 \\ + 8.3 1.2927620384640834 \\ + 8.4 1.3015425983273643 \\ + 8.5 1.3102896867314606 \\ + 8.6 1.3190043096628297 \\ + 8.7 1.3276874731079276 \\ + 8.8 1.336340183053212 \\ + 8.9 1.3449634454851385 \\ + 9.0 1.353558266390165 \\ + 9.1 1.3621430230335294 \\ + 9.2 1.3707329799724093 \\ + 9.3 1.3793244741311712 \\ + 9.4 1.3879138424341804 \\ + 9.5 1.3964974218058035 \\ + 9.6 1.4050715491704067 \\ + 9.7 1.413632561452355 \\ + 9.8 1.4221767955760156 \\ + 9.9 1.4307005884657538 \\ + 10.0 1.4392002770459358 \\ + 10.1 1.447672198240928 \\ + 10.2 1.4561126889750957 \\ + 10.3 1.4645180861728058 \\ + 10.4 1.4728847267584235 \\ + 10.5 1.4812089476563153 \\ + 10.6 1.4894870857908469 \\ + 10.7 1.4977154780863844 \\ + 10.8 1.5058904614672943 \\ + 10.9 1.5140083728579419 \\ + 11.0 1.5220655491826938 \\ + 11.1 1.530008436805169 \\ + 11.2 1.5377919480042457 \\ + 11.3 1.5454251185771763 \\ + 11.4 1.5529169843212147 \\ + 11.5 1.5602765810336132 \\ + 11.6 1.5675129445116256 \\ + 11.7 1.5746351105525043 \\ + 11.8 1.5816521149535039 \\ + 11.9 1.5885729935118758 \\ + 12.0 1.5954067820248738 \\ + 12.1 1.6021625162897515 \\ + 12.2 1.608849232103762 \\ + 12.3 1.615475965264158 \\ + 12.4 1.6220517515681925 \\ + 12.5 1.6285856268131194 \\ + 12.6 1.6350866267961908 \\ + 12.7 1.6415637873146607 \\ + 12.8 1.648026144165782 \\ + 12.9 1.654482733146808 \\ + 13.0 1.6609425900549912 \\ + 13.1 1.6673551877168693 \\ + 13.2 1.673665792608961 \\ + 13.3 1.679877131003494 \\ + 13.4 1.685991929172694 \\ + 13.5 1.6920129133887885 \\ + 13.6 1.6979428099240041 \\ + 13.7 1.7037843450505676 \\ + 13.8 1.7095402450407053 \\ + 13.9 1.7152132361666446 \\ + 14.0 1.720806044700612 \\ + 14.1 1.7263213969148345 \\ + 14.2 1.7317620190815386 \\ + 14.3 1.7371306374729514 \\ + 14.4 1.7424299783612993 \\ + 14.5 1.7476627680188093 \\ + 14.6 1.7528317327177079 \\ + 14.7 1.7579395987302224 \\ + 14.8 1.7629890923285794 \\ + 14.9 1.7679829397850049 \\ + 15.0 1.772923867371727 \\ + 15.1 1.7777206044948968 \\ + 15.2 1.782284080770032 \\ + 15.3 1.7866203227834112 \\ + 15.4 1.7907353571213116 \\ + 15.5 1.7946352103700103 \\ + 15.6 1.7983259091157848 \\ + 15.7 1.801813479944913 \\ + 15.8 1.8051039494436718 \\ + 15.9 1.808203344198339 \\ + 16.0 1.8111176907951918 \\ + 16.1 1.8138530158205073 \\ + 16.2 1.8164153458605634 \\ + 16.3 1.8188107075016378 \\ + 16.4 1.821045127330007 \\ + 16.5 1.8231246319319492 \\ + 16.6 1.8250552478937416 \\ + 16.7 1.8268430018016617 \\ + 16.8 1.8284939202419868 \\ + 16.9 1.8300140298009941 \\ + 17.0 1.8314093570649614 \\ + 17.1 1.8326104253609092 \\ + 17.2 1.833547429119285 \\ + 17.3 1.834225901581508 \\ + 17.4 1.8346513759889973 \\ + 17.5 1.8348293855831717 \\ + 17.6 1.8347654636054498 \\ + 17.7 1.834465143297251 \\ + 17.8 1.8339339578999938 \\ + 17.9 1.8331774406550976 \\ + 18.0 1.832201124803981 \\ + 18.1 1.8310105435880628 \\ + 18.2 1.829611230248762 \\ + 18.3 1.8280087180274978 \\ + 18.4 1.826208540165689 \\ + 18.5 1.8242162299047546 \\ + 18.6 1.822037320486113 \\ + 18.7 1.8196773451511836 \\ + 18.8 1.8171418371413857 \\ + 18.9 1.8144363296981374 \\ + 19.0 1.811566356062858 \\ + } + ; + \node[right, , color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{6 pt}{7.800000000000001 pt}\selectfont}}] at (axis cs:5.8,0.7945044297626097) {Nominal}; + \node[left, , color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{6 pt}{7.800000000000001 pt}\selectfont}}] at (axis cs:12.6,1.7890088595252194) {Corrected}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/real-viscous.tikz b/v0.5.0/DuctAPE/theory_latex/figures/real-viscous.tikz new file mode 100644 index 00000000..79069125 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/real-viscous.tikz @@ -0,0 +1,62 @@ +\begin{tikzpicture}[scale=1.0] + + % coordinate system + \coordinate (O) at (-1,-1); + \coordinate (er) at ($(O) +(0,1)$); + \coordinate (ez) at ($(O) +(1,0)$); + \draw[-Stealth,] (O) -- (er); + \draw[-Stealth,] (O) -- (ez); + \node[anchor=west,outer sep=0] at (er) {$\hat{\vect{e}}_r$}; + \node[anchor=south,outer sep=0] at (ez) {$\hat{\vect{e}}_z$}; + + % filament line + \draw[] (3,0) -- ++(-3,0) node[pos=0.5,below, secondary, shift={(0.0,-0.2)}] {\(\gamma_\mathrm{visc}\)}; + \draw[densely dotted] (0,0) -- ++(0,2.5) node[pos=0.5,right,shift={(0,0)}, primary] {\(\sigma=0\)}; + \draw[] (0,2.5) -- ++(3,0) node[pos=0.5,above, secondary, shift={(0.0,0.2)}] {\(\gamma_\mathrm{visc}\)}; + + \draw[dashed] (2.25,-0.5) -- +(0,3.5); + \draw[dashed] (2.75,-0.5) -- +(0,0.5); + \draw[dashed] (2.5,0) -- +(0,2.5) node[pos=0.5,right] {RVF}; + \draw[dashed] (2.75,2.5) -- +(0,0.5); + + % vm arrows + \foreach \z in {-0.5,-0.3,-0.1} + \draw[-{Stealth[length=4pt, width=3pt]}] (2.25,\z) -- (2.75,\z); + + % vm arrows + \foreach \z in {0.1,0.3,...,2.4} + \draw[-{Stealth[length=4pt, width=3pt]}] (2.25,\z) -- (2.5,\z); + + % vm arrows + \node[above] at (2.5,3) {\(C_m\)}; + \foreach \z in {2.6,2.8,3.0} + \draw[-{Stealth[length=4pt, width=3pt]}] (2.25,\z) -- (2.75,\z); + + % entropy jump + \draw[] (-0.25, 2.25) -- ++(0.0,0.5) -- node[above, pos=0.5] {\(\Delta S\)} ++(0.5,0) -- ++(0,-0.5); + \filldraw[] (-0.25,2.25) circle(1pt); + \filldraw[] (0.25,2.25) circle(1pt); + + % static pressure jump + \draw[] (2.95, 2.4) -- ++(0.2,0) -- node[right, pos=0.5] {\(\Delta p_s=0\)} ++(0,0.2) -- ++(-0.2,0); + \filldraw[] (2.95,2.4) circle(1pt); + \filldraw[] (2.95,2.6) circle(1pt); + + % Cf (needed?) + + % gamma_v's + \coordinate (g1) at (0.75,0); + \coordinate (g2) at (1.25,0); + \coordinate (g3) at (1.75,0); + \draw[-{Stealth[length=4,width=3,bend]},secondary] (g1) [partial ellipse =200:510:0.15 and 0.15]; + \draw[-{Stealth[length=4,width=3,bend]},secondary] (g2) [partial ellipse =200:510:0.15 and 0.15]; + \draw[-{Stealth[length=4,width=3,bend]},secondary] (g3) [partial ellipse =200:510:0.15 and 0.15]; + \coordinate (g1) at (0.75,2.5); + \coordinate (g2) at (1.25,2.5); + \coordinate (g3) at (1.75,2.5); + \draw[{Stealth[length=4,width=3,bend]}-,secondary] (g1) [partial ellipse =200:510:0.15 and 0.15]; + \draw[{Stealth[length=4,width=3,bend]}-,secondary] (g2) [partial ellipse =200:510:0.15 and 0.15]; + \draw[{Stealth[length=4,width=3,bend]}-,secondary] (g3) [partial ellipse =200:510:0.15 and 0.15]; + + +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/redrag-correction-margin.tikz b/v0.5.0/DuctAPE/theory_latex/figures/redrag-correction-margin.tikz new file mode 100644 index 00000000..74cabd85 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/redrag-correction-margin.tikz @@ -0,0 +1,778 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={45.8mm}, height={50.8mm}, scaled x ticks={false}, xlabel={}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorticks={false}, xmajorgrids={false}, xmin={-18.080000000000002}, xmax={20.080000000000002}, axis x line*={left}, separate axis lines, x axis line style={{draw opacity = 0}}, scaled y ticks={false}, ylabel={}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, ymajorticks={false}, ymajorgrids={false}, ymin={-0.0018372668804019568}, ymax={0.06307949622713371}, axis y line*={left}, y axis line style={{draw opacity = 0}}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={fad1d026-ce77-4fb1-92d6-e7157c036095}, draw opacity={1.0}, line width={0.25}, solid, forget plot] + table[row sep={\\}] + { + \\ + -17.0 0.0 \\ + 19.0 0.0 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={6f5691ad-e4db-484e-bc8e-9ad6ca9be59f}, draw opacity={1.0}, line width={0.25}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.0 0.0 \\ + 0.0 0.06124222934673175 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={bb79e361-34d3-4aa9-974d-211f829d6c53}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -17.0 0.03274774225137401 \\ + -16.9 0.032078105905770565 \\ + -16.8 0.0314152645136106 \\ + -16.7 0.0307604786412915 \\ + -16.6 0.030115008855210748 \\ + -16.5 0.029480115721765728 \\ + -16.4 0.0288570598073539 \\ + -16.3 0.02824710167837272 \\ + -16.2 0.027651501901219573 \\ + -16.1 0.02707152104229195 \\ + -16.0 0.026508419667987226 \\ + -15.9 0.025963458344702876 \\ + -15.8 0.02543789763883633 \\ + -15.7 0.024932998116785003 \\ + -15.6 0.02445002034494635 \\ + -15.5 0.023990224889717793 \\ + -15.4 0.023554872317496773 \\ + -15.3 0.023145223194680722 \\ + -15.2 0.02276253808766707 \\ + -15.1 0.02240807756285326 \\ + -15.0 0.02208310218663672 \\ + -14.9 0.021775799369370918 \\ + -14.8 0.021473570332794213 \\ + -14.7 0.021176496360381335 \\ + -14.6 0.020884658735607062 \\ + -14.5 0.02059813874194613 \\ + -14.4 0.020317017662873298 \\ + -14.3 0.020041376781863313 \\ + -14.2 0.01977129738239093 \\ + -14.1 0.019506860747930913 \\ + -14.0 0.019248148161958002 \\ + -13.9 0.018995240907946947 \\ + -13.8 0.018748220269372513 \\ + -13.7 0.01850716752970944 \\ + -13.6 0.01827216397243249 \\ + -13.5 0.018043290881016413 \\ + -13.4 0.017820629538935956 \\ + -13.3 0.017604261229665883 \\ + -13.2 0.017394267236680933 \\ + -13.1 0.017190728843455867 \\ + -13.0 0.016993727333465436 \\ + -12.9 0.016799744583548246 \\ + -12.8 0.016605353818553277 \\ + -12.7 0.016410773343970862 \\ + -12.6 0.016216221465291326 \\ + -12.5 0.016021916488005 \\ + -12.4 0.015828076717602207 \\ + -12.3 0.01563492045957328 \\ + -12.2 0.015442666019408535 \\ + -12.1 0.015251531702598313 \\ + -12.0 0.015061735814632937 \\ + -11.9 0.01487349666100273 \\ + -11.8 0.014687032547198026 \\ + -11.7 0.014502561778709145 \\ + -11.6 0.014320302661026421 \\ + -11.5 0.014140473499640182 \\ + -11.4 0.013963292600040752 \\ + -11.3 0.013788978267718457 \\ + -11.2 0.013617748808163627 \\ + -11.1 0.01344982252686659 \\ + -11.0 0.013285417729317676 \\ + -10.9 0.013123256442351834 \\ + -10.8 0.012961988738554107 \\ + -10.7 0.012801724992039944 \\ + -10.6 0.01264257557692481 \\ + -10.5 0.012484650867324159 \\ + -10.4 0.012328061237353444 \\ + -10.3 0.012172917061128125 \\ + -10.2 0.012019328712763655 \\ + -10.1 0.011867406566375494 \\ + -10.0 0.011717260996079096 \\ + -9.9 0.01156900237598992 \\ + -9.8 0.01142274108022342 \\ + -9.7 0.011278587482895047 \\ + -9.6 0.01113665195812027 \\ + -9.5 0.010997044880014536 \\ + -9.4 0.010859876622693302 \\ + -9.3 0.01072525756027203 \\ + -9.2 0.010593298066866166 \\ + -9.1 0.010464108516591176 \\ + -9.0 0.010337799283562514 \\ + -8.9 0.010213971815691194 \\ + -8.8 0.010092188424284365 \\ + -8.7 0.009972500778551687 \\ + -8.6 0.00985496054770282 \\ + -8.5 0.009739619400947424 \\ + -8.4 0.009626529007495154 \\ + -8.3 0.009515741036555675 \\ + -8.2 0.009407307157338637 \\ + -8.1 0.009301279039053707 \\ + -8.0 0.00919770835091054 \\ + -7.9 0.009096646762118799 \\ + -7.8 0.008998145941888138 \\ + -7.7 0.008902257559428221 \\ + -7.6 0.008809033283948702 \\ + -7.5 0.00871852478465924 \\ + -7.4 0.0086307837307695 \\ + -7.3 0.008545861791489135 \\ + -7.2 0.008463810636027806 \\ + -7.1 0.00838468193359517 \\ + -7.0 0.00830852735340089 \\ + -6.9 0.008234355627174653 \\ + -6.8 0.008161172967873453 \\ + -6.7 0.008089027266547895 \\ + -6.6 0.008017966414248583 \\ + -6.5 0.007948038302026126 \\ + -6.4 0.007879290820931133 \\ + -6.3 0.007811771862014209 \\ + -6.2 0.00774552931632596 \\ + -6.1 0.007680611074916994 \\ + -6.0 0.007617065028837918 \\ + -5.9 0.007554939069139339 \\ + -5.8 0.007494281086871864 \\ + -5.7 0.007435138973086099 \\ + -5.6 0.007377560618832652 \\ + -5.5 0.007321593915162128 \\ + -5.4 0.0072672867531251364 \\ + -5.3 0.007214687023772282 \\ + -5.2 0.007163842618154173 \\ + -5.1 0.007114801427321416 \\ + -5.0 0.007067611342324617 \\ + -4.9 0.0070212995895903435 \\ + -4.8 0.006974935693871966 \\ + -4.7 0.0069286309937103 \\ + -4.6 0.006882496827646157 \\ + -4.5 0.006836644534220352 \\ + -4.4 0.006791185451973701 \\ + -4.3 0.006746230919447015 \\ + -4.2 0.006701892275181112 \\ + -4.1 0.006658280857716803 \\ + -4.0 0.006615508005594903 \\ + -3.9 0.006573685057356227 \\ + -3.8 0.006532923351541588 \\ + -3.7 0.006493334226691801 \\ + -3.6 0.006455029021347679 \\ + -3.5 0.006418119074050036 \\ + -3.4 0.006382715723339688 \\ + -3.3 0.006348930307757448 \\ + -3.2 0.006316874165844132 \\ + -3.1 0.0062866586361405505 \\ + -3.0 0.006258395057187519 \\ + -2.9 0.0062312952293119015 \\ + -2.8 0.006204477971590604 \\ + -2.7 0.006177915150689514 \\ + -2.6 0.006151578633274512 \\ + -2.5 0.0061254402860114856 \\ + -2.4 0.006099471975566318 \\ + -2.3 0.006073645568604896 \\ + -2.2 0.0060479329317931 \\ + -2.1 0.006022305931796817 \\ + -2.0 0.005996736435281932 \\ + -1.9 0.005971196308914328 \\ + -1.8 0.0059456574193598915 \\ + -1.7 0.005920091633284505 \\ + -1.6 0.005894470817354054 \\ + -1.5 0.005868766838234422 \\ + -1.4 0.005842951562591497 \\ + -1.3 0.005816996857091157 \\ + -1.2 0.0057908745883992925 \\ + -1.1 0.005764556623181786 \\ + -1.0 0.005738014828104521 \\ + -0.9 0.005711186890429283 \\ + -0.8 0.005684049557190802 \\ + -0.7 0.005656633284714391 \\ + -0.6 0.005628968529325357 \\ + -0.5 0.005601085747349011 \\ + -0.4 0.005573015395110662 \\ + -0.3 0.005544787928935617 \\ + -0.2 0.005516433805149188 \\ + -0.1 0.005487983480076683 \\ + 0.0 0.005459467410043413 \\ + 0.1 0.005430916051374686 \\ + 0.2 0.005402359860395811 \\ + 0.3 0.005373829293432098 \\ + 0.4 0.005345354806808856 \\ + 0.5 0.005316966856851396 \\ + 0.6 0.005288695899885024 \\ + 0.7 0.0052605723922350515 \\ + 0.8 0.00523262679022679 \\ + 0.9 0.005204889550185544 \\ + 1.0 0.005177391128436626 \\ + 1.1 0.005150751995126851 \\ + 1.2 0.0051257346245434775 \\ + 1.3 0.005102582479222478 \\ + 1.4 0.005081539021699825 \\ + 1.5 0.005062847714511489 \\ + 1.6 0.005046752020193444 \\ + 1.7 0.005033495401281663 \\ + 1.8 0.005023321320312118 \\ + 1.9 0.00501647323982078 \\ + 2.0 0.005013194622343622 \\ + 2.1 0.005013728930416618 \\ + 2.2 0.005018319626575739 \\ + 2.3 0.005027210173356958 \\ + 2.4 0.0050406440332962455 \\ + 2.5 0.005058864668929577 \\ + 2.6 0.0050821155427929225 \\ + 2.7 0.005110640117422256 \\ + 2.8 0.0051446818553535474 \\ + 2.9 0.0051844842191227725 \\ + 3.0 0.005230290671265901 \\ + 3.1 0.0052823010756966925 \\ + 3.2 0.005340369027180724 \\ + 3.3 0.005404218584531699 \\ + 3.4 0.0054735738065633185 \\ + 3.5 0.005548158752089284 \\ + 3.6 0.005627697479923298 \\ + 3.7 0.005711914048879063 \\ + 3.8 0.0058005325177702795 \\ + 3.9 0.00589327694541065 \\ + 4.0 0.005989871390613878 \\ + 4.1 0.006090039912193662 \\ + 4.2 0.006193506568963708 \\ + 4.3 0.006299995419737717 \\ + 4.4 0.006409230523329389 \\ + 4.5 0.006520935938552425 \\ + 4.6 0.006634835724220529 \\ + 4.7 0.0067506539391474045 \\ + 4.8 0.006868114642146751 \\ + 4.9 0.0069869418920322736 \\ + 5.0 0.007106859747617668 \\ + 5.1 0.007227914763315581 \\ + 5.2 0.007350227880041849 \\ + 5.3 0.007473634736364967 \\ + 5.4 0.007597970970853431 \\ + 5.5 0.007723072222075736 \\ + 5.6 0.007848774128600378 \\ + 5.7 0.007974912328995856 \\ + 5.8 0.00810132246183066 \\ + 5.9 0.00822784016567329 \\ + 6.0 0.00835430107909224 \\ + 6.1 0.008480540840656003 \\ + 6.2 0.00860639508893308 \\ + 6.3 0.008731699462491964 \\ + 6.4 0.008856289599901151 \\ + 6.5 0.008980001139729138 \\ + 6.6 0.009102669720544417 \\ + 6.7 0.00922413098091549 \\ + 6.8 0.009344220559410846 \\ + 6.9 0.009462774094598985 \\ + 7.0 0.0095796272250484 \\ + 7.1 0.009695121805801218 \\ + 7.2 0.009809767555493974 \\ + 7.3 0.009923651908086778 \\ + 7.4 0.010036862297539738 \\ + 7.5 0.010149486157812967 \\ + 7.6 0.010261610922866576 \\ + 7.7 0.010373324026660675 \\ + 7.8 0.010484712903155372 \\ + 7.9 0.01059586498631078 \\ + 8.0 0.010706867710087008 \\ + 8.1 0.010817808508444169 \\ + 8.2 0.01092877481534237 \\ + 8.3 0.01103985406474173 \\ + 8.4 0.011151133690602345 \\ + 8.5 0.011262701126884338 \\ + 8.6 0.01137464380754781 \\ + 8.7 0.011487049166552878 \\ + 8.8 0.011600004637859656 \\ + 8.9 0.011713597655428244 \\ + 9.0 0.01182791565321876 \\ + 9.1 0.01194349340864211 \\ + 9.2 0.0120607446751984 \\ + 9.3 0.012179575350981542 \\ + 9.4 0.01229989133408544 \\ + 9.5 0.012421598522603999 \\ + 9.6 0.012544602814631132 \\ + 9.7 0.012668810108260741 \\ + 9.8 0.012794126301586743 \\ + 9.9 0.012920457292703035 \\ + 10.0 0.013047708979703528 \\ + 10.1 0.013175787260682132 \\ + 10.2 0.013304598033732752 \\ + 10.3 0.0134340471969493 \\ + 10.4 0.013564040648425675 \\ + 10.5 0.013694484286255791 \\ + 10.6 0.013825284008533554 \\ + 10.7 0.013956345713352872 \\ + 10.8 0.014087575298807654 \\ + 10.9 0.014218878662991801 \\ + 11.0 0.014350161703999229 \\ + 11.1 0.014485361106380894 \\ + 11.2 0.014628176014337205 \\ + 11.3 0.014778156015436212 \\ + 11.4 0.014934850697245977 \\ + 11.5 0.015097809647334563 \\ + 11.6 0.015266582453270025 \\ + 11.7 0.015440718702620426 \\ + 11.8 0.01561976798295383 \\ + 11.9 0.015803279881838286 \\ + 12.0 0.015990803986841867 \\ + 12.1 0.016181889885532617 \\ + 12.2 0.01637608716547861 \\ + 12.3 0.016572945414247902 \\ + 12.4 0.016772014219408545 \\ + 12.5 0.016972843168528613 \\ + 12.6 0.01717498184917615 \\ + 12.7 0.01737797984891922 \\ + 12.8 0.017581386755325897 \\ + 12.9 0.01778475215596422 \\ + 13.0 0.017987625638402265 \\ + 13.1 0.01819853488415434 \\ + 13.2 0.018425739152365075 \\ + 13.3 0.018668385397047998 \\ + 13.4 0.01892562057221663 \\ + 13.5 0.019196591631884495 \\ + 13.6 0.019480445530065123 \\ + 13.7 0.01977632922077204 \\ + 13.8 0.020083389658018775 \\ + 13.9 0.020400773795818845 \\ + 14.0 0.020727628588185772 \\ + 14.1 0.021063100989133096 \\ + 14.2 0.021406337952674333 \\ + 14.3 0.02175648643282302 \\ + 14.4 0.022112693383592664 \\ + 14.5 0.022474105758996797 \\ + 14.6 0.02283987051304895 \\ + 14.7 0.02320913459976265 \\ + 14.8 0.023581044973151423 \\ + 14.9 0.02395474858722878 \\ + 15.0 0.024329392396008263 \\ + 15.1 0.02471917093040247 \\ + 15.2 0.025138357414664334 \\ + 15.3 0.025586216842817883 \\ + 15.4 0.026062014208887128 \\ + 15.5 0.026565014506896086 \\ + 15.6 0.027094482730868775 \\ + 15.7 0.027649683874829224 \\ + 15.8 0.02822988293280145 \\ + 15.9 0.02883434489880946 \\ + 16.0 0.029462334766877277 \\ + 16.1 0.030113117531028934 \\ + 16.2 0.030785958185288422 \\ + 16.3 0.031480121723679796 \\ + 16.4 0.03219487314022703 \\ + 16.5 0.03292947742895419 \\ + 16.6 0.03368319958388527 \\ + 16.7 0.03445530459904428 \\ + 16.8 0.035245057468455264 \\ + 16.9 0.0360517231861422 \\ + 17.0 0.03687456674612916 \\ + 17.1 0.03772901534643799 \\ + 17.2 0.03863006485462826 \\ + 17.3 0.03957633326903071 \\ + 17.4 0.04056643858797592 \\ + 17.5 0.0415989988097946 \\ + 17.6 0.04267263193281738 \\ + 17.7 0.043785955955374864 \\ + 17.8 0.04493758887579779 \\ + 17.9 0.046126148692416734 \\ + 18.0 0.04735025340356243 \\ + 18.1 0.04860852100756548 \\ + 18.2 0.049899569502756494 \\ + 18.3 0.051222016887466235 \\ + 18.4 0.052574481160025235 \\ + 18.5 0.05395558031876427 \\ + 18.6 0.05536393236201392 \\ + 18.7 0.0567981552881048 \\ + 18.8 0.05825686709536767 \\ + 18.9 0.059738685782133066 \\ + 19.0 0.06124222934673175 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={e6530695-eeb3-4c87-a96f-50b636e03f8c}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -17.0 0.020711490748494436 \\ + -16.9 0.020287975537266724 \\ + -16.8 0.019868757831934248 \\ + -16.7 0.01945463488468854 \\ + -16.6 0.019046403947721176 \\ + -16.5 0.018644862273223678 \\ + -16.4 0.018250807113387616 \\ + -16.3 0.017865035720404557 \\ + -16.2 0.017488345346466025 \\ + -16.1 0.017121533243763608 \\ + -16.0 0.01676539666448882 \\ + -15.9 0.01642073286083324 \\ + -15.8 0.01608833908498842 \\ + -15.7 0.015769012589145898 \\ + -15.6 0.015463550625497242 \\ + -15.5 0.015172750446234 \\ + -15.4 0.014897409303547725 \\ + -15.3 0.014638324449629972 \\ + -15.2 0.014396293136672287 \\ + -15.1 0.014172112616866232 \\ + -15.0 0.013966580142403357 \\ + -14.9 0.013772224775614067 \\ + -14.8 0.013581078349489923 \\ + -14.7 0.013393192272214178 \\ + -14.6 0.013208617951970121 \\ + -14.5 0.013027406796941012 \\ + -14.4 0.012849610215310121 \\ + -14.3 0.01267527961526072 \\ + -14.2 0.01250446640497608 \\ + -14.1 0.012337221992639475 \\ + -14.0 0.012173597786434169 \\ + -13.9 0.012013645194543432 \\ + -13.8 0.011857415625150539 \\ + -13.7 0.011704960486438756 \\ + -13.6 0.011556331186591355 \\ + -13.5 0.011411579133791608 \\ + -13.4 0.01127075573622278 \\ + -13.3 0.011133912402068149 \\ + -13.2 0.011001100539510977 \\ + -13.1 0.010872371556734537 \\ + -13.0 0.010747776861922102 \\ + -12.9 0.010625091398617871 \\ + -12.8 0.010502147883920544 \\ + -12.7 0.010379084386345157 \\ + -12.6 0.010256038974406741 \\ + -12.5 0.010133149716620327 \\ + -12.4 0.010010554681500942 \\ + -12.3 0.009888391937563622 \\ + -12.2 0.009766799553323392 \\ + -12.1 0.009645915597295291 \\ + -12.0 0.009525878137994345 \\ + -11.9 0.009406825243935584 \\ + -11.8 0.009288894983634041 \\ + -11.7 0.009172225425604745 \\ + -11.6 0.00905695463836273 \\ + -11.5 0.008943220690423026 \\ + -11.4 0.008831161650300663 \\ + -11.3 0.00872091558651067 \\ + -11.2 0.008612620567568082 \\ + -11.1 0.008506414661987928 \\ + -11.0 0.008402435938285241 \\ + -10.9 0.008299876135261994 \\ + -10.8 0.008197881483856754 \\ + -10.7 0.008096521790789428 \\ + -10.6 0.007995866862779937 \\ + -10.5 0.007895986506548193 \\ + -10.4 0.007796950528814109 \\ + -10.3 0.007698828736297599 \\ + -10.2 0.007601690935718574 \\ + -10.1 0.007505606933796952 \\ + -10.0 0.007410646537252644 \\ + -9.9 0.007316879552805565 \\ + -9.8 0.007224375787175628 \\ + -9.7 0.007133205047082744 \\ + -9.6 0.007043437139246833 \\ + -9.5 0.006955141870387805 \\ + -9.4 0.0068683890472255715 \\ + -9.3 0.006783248476480051 \\ + -9.2 0.006699789964871151 \\ + -9.1 0.006618083319118791 \\ + -9.0 0.006538198345942883 \\ + -8.9 0.006459882978869944 \\ + -8.8 0.006382860399264873 \\ + -8.7 0.006307163285605154 \\ + -8.6 0.006232824316368273 \\ + -8.5 0.006159876170031715 \\ + -8.4 0.006088351525072961 \\ + -8.3 0.006018283059969502 \\ + -8.2 0.005949703453198815 \\ + -8.1 0.00588264538323839 \\ + -8.0 0.00581714152856571 \\ + -7.9 0.00575322456765826 \\ + -7.8 0.005690927178993524 \\ + -7.7 0.005630282041048988 \\ + -7.6 0.005571321832302136 \\ + -7.5 0.00551407923123045 \\ + -7.4 0.005458586916311418 \\ + -7.3 0.005404877566022523 \\ + -7.2 0.00535298385884125 \\ + -7.1 0.005302938473245083 \\ + -7.0 0.0052547740877115084 \\ + -6.9 0.005207863769139238 \\ + -6.8 0.005161578991415258 \\ + -6.7 0.00511595004349946 \\ + -6.6 0.005071007214351732 \\ + -6.5 0.005026780792931967 \\ + -6.4 0.004983301068200058 \\ + -6.3 0.004940598329115895 \\ + -6.2 0.004898702864639369 \\ + -6.1 0.004857644963730371 \\ + -6.0 0.004817454915348792 \\ + -5.9 0.004778163008454525 \\ + -5.8 0.004739799532007459 \\ + -5.7 0.004702394774967487 \\ + -5.6 0.0046659790262945 \\ + -5.5 0.004630582574948388 \\ + -5.4 0.004596235709889043 \\ + -5.3 0.004562968720076356 \\ + -5.2 0.004530811894470219 \\ + -5.1 0.004499795522030522 \\ + -5.0 0.0044699498917171576 \\ + -4.9 0.004440659767502191 \\ + -4.8 0.004411336665168471 \\ + -4.7 0.004382051001392064 \\ + -4.6 0.004352873192849036 \\ + -4.5 0.004323873656215455 \\ + -4.4 0.0042951228081673865 \\ + -4.3 0.004266691065380896 \\ + -4.2 0.004238648844532053 \\ + -4.1 0.00421106656229692 \\ + -4.0 0.004184014635351566 \\ + -3.9 0.004157563480372058 \\ + -3.8 0.00413178351403446 \\ + -3.7 0.004106745153014841 \\ + -3.6 0.004082518813989264 \\ + -3.5 0.004059174913633798 \\ + -3.4 0.004036783868624511 \\ + -3.3 0.004015416095637467 \\ + -3.2 0.003995142011348733 \\ + -3.1 0.003976032032434375 \\ + -3.0 0.00395815657557046 \\ + -2.9 0.003941017139513365 \\ + -2.8 0.003924056416513558 \\ + -2.7 0.003907256613488243 \\ + -2.6 0.0038905999373546243 \\ + -2.5 0.003874068595029906 \\ + -2.4 0.003857644793431292 \\ + -2.3 0.003841310739475987 \\ + -2.2 0.0038250486400811944 \\ + -2.1 0.003808840702164118 \\ + -2.0 0.003792669132641963 \\ + -1.9 0.0037765161384319327 \\ + -1.8 0.0037603639264512326 \\ + -1.7 0.003744194703617065 \\ + -1.6 0.0037279906768466343 \\ + -1.5 0.0037117340530571454 \\ + -1.4 0.003695407039165803 \\ + -1.3 0.0036789918420898084 \\ + -1.2 0.0036624706687463683 \\ + -1.1 0.003645825726052687 \\ + -1.0 0.003629039220925966 \\ + -0.9 0.0036120717433302074 \\ + -0.8 0.0035949085867988885 \\ + -0.7 0.00357756901360344 \\ + -0.6 0.0035600722860152866 \\ + -0.5 0.003542437666305858 \\ + -0.4 0.00352468441674658 \\ + -0.3 0.0035068317996088793 \\ + -0.2 0.003488899077164185 \\ + -0.1 0.003470905511683923 \\ + 0.0 0.0034528703654395213 \\ + 0.1 0.003434812900702407 \\ + 0.2 0.0034167523797440074 \\ + 0.3 0.0033987080648357503 \\ + 0.4 0.0033806992182490616 \\ + 0.5 0.0033627451022553707 \\ + 0.6 0.003344864979126103 \\ + 0.7 0.0033270781111326866 \\ + 0.8 0.00330940376054655 \\ + 0.9 0.003291861189639118 \\ + 1.0 0.00327446966068182 \\ + 1.1 0.00325762159345147 \\ + 1.2 0.003241799219029079 \\ + 1.3 0.0032271565166423653 \\ + 1.4 0.0032138474655190475 \\ + 1.5 0.0032020260448868436 \\ + 1.6 0.0031918462339734733 \\ + 1.7 0.003183462012006655 \\ + 1.8 0.0031770273582141075 \\ + 1.9 0.003172696251823549 \\ + 2.0 0.0031706226720626986 \\ + 2.1 0.003170960598159275 \\ + 2.2 0.0031738640093409965 \\ + 2.3 0.003179486884835583 \\ + 2.4 0.0031879832038707507 \\ + 2.5 0.003199506945674221 \\ + 2.6 0.003214212089473711 \\ + 2.7 0.0032322526144969404 \\ + 2.8 0.003253782499971627 \\ + 2.9 0.0032789557251254897 \\ + 3.0 0.003307926269186247 \\ + 3.1 0.00334082053719181 \\ + 3.2 0.003377545934341749 \\ + 3.3 0.0034179279401062744 \\ + 3.4 0.003461792033955596 \\ + 3.5 0.0035089636953599236 \\ + 3.6 0.0035592684037894667 \\ + 3.7 0.003612531638714436 \\ + 3.8 0.0036685788796050394 \\ + 3.9 0.003727235605931489 \\ + 4.0 0.003788327297163994 \\ + 4.1 0.003851679432772763 \\ + 4.2 0.003917117492228009 \\ + 4.3 0.003984466954999939 \\ + 4.4 0.004053553300558763 \\ + 4.5 0.004124202008374692 \\ + 4.6 0.004196238557917934 \\ + 4.7 0.0042694884286587015 \\ + 4.8 0.004343777100067203 \\ + 4.9 0.00441893005161365 \\ + 5.0 0.004494772762768248 \\ + 5.1 0.004571334677126816 \\ + 5.2 0.004648692284440625 \\ + 5.3 0.004726741633413066 \\ + 5.4 0.004805378772747532 \\ + 5.5 0.004884499751147413 \\ + 5.6 0.004964000617316102 \\ + 5.7 0.005043777419956995 \\ + 5.8 0.005123726207773478 \\ + 5.9 0.005203743029468948 \\ + 6.0 0.005283723933746795 \\ + 6.1 0.005363564969310409 \\ + 6.2 0.005443162184863187 \\ + 6.3 0.005522411629108517 \\ + 6.4 0.005601209350749793 \\ + 6.5 0.005679451398490408 \\ + 6.6 0.0057570338210337505 \\ + 6.7 0.005833852667083219 \\ + 6.8 0.005909803985342199 \\ + 6.9 0.005984783824514087 \\ + 7.0 0.006058688233302272 \\ + 7.1 0.006131733419819302 \\ + 7.2 0.006204241758436634 \\ + 7.3 0.006276268547246026 \\ + 7.4 0.006347869084339238 \\ + 7.5 0.006419098667808029 \\ + 7.6 0.00649001259574416 \\ + 7.7 0.00656066616623939 \\ + 7.8 0.006631114677385477 \\ + 7.9 0.006701413427274182 \\ + 8.0 0.006771617713997264 \\ + 8.1 0.006841782835646483 \\ + 8.2 0.0069119640903135965 \\ + 8.3 0.006982216776090369 \\ + 8.4 0.007052596191068554 \\ + 8.5 0.007123157633339915 \\ + 8.6 0.007193956400996207 \\ + 8.7 0.007265047792129194 \\ + 8.8 0.007336487104830636 \\ + 8.9 0.0074083296371922885 \\ + 9.0 0.007480630687305914 \\ + 9.1 0.007553728478103447 \\ + 9.2 0.007627884690274928 \\ + 9.3 0.007703039808549276 \\ + 9.4 0.007779134317655406 \\ + 9.5 0.007856108702322234 \\ + 9.6 0.00793390344727868 \\ + 9.7 0.008012459037253658 \\ + 9.8 0.00809171595697609 \\ + 9.9 0.008171614691174885 \\ + 10.0 0.008252095724578965 \\ + 10.1 0.008333099541917247 \\ + 10.2 0.008414566627918646 \\ + 10.3 0.008496437467312082 \\ + 10.4 0.008578652544826466 \\ + 10.5 0.008661152345190722 \\ + 10.6 0.00874387735313376 \\ + 10.7 0.008826768053384502 \\ + 10.8 0.008909764930671865 \\ + 10.9 0.008992808469724762 \\ + 11.0 0.009075839155272113 \\ + 11.1 0.009161346765236044 \\ + 11.2 0.009251670843829893 \\ + 11.3 0.009346526525219378 \\ + 11.4 0.00944562894357022 \\ + 11.5 0.009548693233048145 \\ + 11.6 0.009655434527818875 \\ + 11.7 0.009765567962048131 \\ + 11.8 0.009878808669901642 \\ + 11.9 0.00999487178554512 \\ + 12.0 0.010113472443144297 \\ + 12.1 0.01023432577686489 \\ + 12.2 0.010357146920872626 \\ + 12.3 0.010481651009333225 \\ + 12.4 0.010607553176412408 \\ + 12.5 0.010734568556275905 \\ + 12.6 0.010862412283089427 \\ + 12.7 0.010990799491018704 \\ + 12.8 0.011119445314229462 \\ + 12.9 0.011248064886887416 \\ + 13.0 0.011376373343158294 \\ + 13.1 0.011509764062391242 \\ + 13.2 0.011653460658722786 \\ + 13.3 0.011806923618499696 \\ + 13.4 0.01196961342806875 \\ + 13.5 0.012140990573776718 \\ + 13.6 0.01232051554197038 \\ + 13.7 0.012507648818996511 \\ + 13.8 0.012701850891201889 \\ + 13.9 0.012902582244933281 \\ + 14.0 0.013109303366537463 \\ + 14.1 0.013321474742361217 \\ + 14.2 0.013538556858751313 \\ + 14.3 0.013760010202054534 \\ + 14.4 0.013985295258617643 \\ + 14.5 0.014213872514787418 \\ + 14.6 0.014445202456910639 \\ + 14.7 0.01467874557133408 \\ + 14.8 0.014913962344404522 \\ + 14.9 0.015150313262468724 \\ + 15.0 0.015387258811873474 \\ + 15.1 0.01563377640221907 \\ + 15.2 0.015898893213144232 \\ + 15.3 0.016182144386053383 \\ + 15.4 0.016483065062350928 \\ + 15.5 0.016801190383441283 \\ + 15.6 0.017136055490728854 \\ + 15.7 0.017487195525618067 \\ + 15.8 0.017854145629513325 \\ + 15.9 0.018236440943819043 \\ + 16.0 0.018633616609939636 \\ + 16.1 0.019045207769279517 \\ + 16.2 0.019470749563243087 \\ + 16.3 0.019909777133234784 \\ + 16.4 0.020361825620658986 \\ + 16.5 0.020826430166920144 \\ + 16.6 0.02130312591342265 \\ + 16.7 0.021791448001570908 \\ + 16.8 0.022290931572769356 \\ + 16.9 0.022801111768422373 \\ + 17.0 0.023321523729934412 \\ + 17.1 0.02386192447403816 \\ + 17.2 0.024431798220129322 \\ + 17.3 0.025030270913606885 \\ + 17.4 0.02565646849986975 \\ + 17.5 0.026309516924316892 \\ + 17.6 0.026988542132347245 \\ + 17.7 0.027692670069359708 \\ + 17.8 0.028421026680753286 \\ + 17.9 0.029172737911926868 \\ + 18.0 0.02994692970827945 \\ + 18.1 0.030742728015209934 \\ + 18.2 0.031559258778117244 \\ + 18.3 0.03239564794240039 \\ + 18.4 0.03325102145345823 \\ + 18.5 0.03412450525668979 \\ + 18.6 0.035015225297493964 \\ + 18.7 0.03592230752126966 \\ + 18.8 0.03684487787341591 \\ + 18.9 0.03778206229933156 \\ + 19.0 0.03873298674441563 \\ + } + ; + \node[left, , color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{6 pt}{7.800000000000001 pt}\selectfont}}] at (axis cs:19.0,0.05501319462234362) {Nominal}; + \node[left, , color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{6 pt}{7.800000000000001 pt}\selectfont}}] at (axis cs:19.0,0.0031706226720626986) {Adjusted}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/reference_frame_figures.jl b/v0.5.0/DuctAPE/theory_latex/figures/reference_frame_figures.jl new file mode 100644 index 00000000..6792c7b0 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/reference_frame_figures.jl @@ -0,0 +1,51 @@ +#= +Figures for reference frame section of duct solver chapter +=# + + +using FLOWFoil + +# Get duct wall geometry +xwall, ywall = naca4(4, 4, 20) +wallcoords = [xwall ywall] +wallangle = -30.0 +walllocation = [0.0; 0.1] +FLOWFoil.position_coordinates(wallcoords, 1.5, wallangle, walllocation) +wallx = wallcoords[:, 1] +wallr = wallcoords[:, 2] + +f = open("relative-frame-airfoil.dat", "w") +for (z,r) in zip(eachrow(wallx), eachrow(wallr)) + write(f,"$(z[1]) $(r[1])\n") +end +close(f) + +xwall, ywall = naca4(6, 4, 20) +wallcoords = [xwall ywall] +wallangle = 55.0 +walllocation = [0.0; 0.0] +FLOWFoil.position_coordinates(wallcoords, 1.5, wallangle, walllocation) +wallx = wallcoords[:, 1] +wallr = wallcoords[:, 2] + +f = open("bladeelement-angles.dat", "w") +for (z,r) in zip(eachrow(wallx), eachrow(wallr)) + write(f,"$(z[1]) $(r[1])\n") +end +close(f) + +xwall, ywall = naca4(10, 5, 12) +wallcoords = [xwall ywall] +wallangle = -45.0 +walllocation = [0.0; 0.0] +wallscale = 1.0 +FLOWFoil.position_coordinates(wallcoords, wallscale, wallangle, walllocation) +wallx = wallcoords[:, 1] +wallr = wallcoords[:, 2] + +f = open("wake-screw-airfoil.dat", "w") +for (z,r) in zip(eachrow(wallx), eachrow(wallr)) + write(f,"$(z[1]) $(r[1])\n") +end +close(f) + diff --git a/v0.5.0/DuctAPE/theory_latex/figures/relative-frame-airfoil.dat b/v0.5.0/DuctAPE/theory_latex/figures/relative-frame-airfoil.dat new file mode 100644 index 00000000..d879d764 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/relative-frame-airfoil.dat @@ -0,0 +1,161 @@ +1.299038105676658 0.85 +1.2985676208235462 0.8496584580308657 +1.2971568441463066 0.8486344411525852 +1.2948078101191534 0.8469297722690203 +1.2915239122200357 0.8445474757374779 +1.2873099067116665 0.8414917570934874 +1.2821719174420958 0.8377679755487967 +1.2761174411900773 0.8333826101144679 +1.2691553529701627 0.8283432204003963 +1.2612959106201838 0.8226584033107143 +1.252550757922549 0.8163377469861696 +1.2429329254629837 0.8093917834355137 +1.232456828407769 0.8018319413450977 +1.22113826038426 0.7936705005573835 +1.2089943826798368 0.7849205496642906 +1.1960437080311013 0.7755959480708735 +1.1823060783569483 0.7657112937506763 +1.1678026358942728 0.7552818977393781 +1.152555787321101 0.7443237662023507 +1.136589160595649 0.732853590669802 +1.1199275543977278 0.7208887467665983 +1.1025968802268347 0.7084473014795986 +1.0846240973849235 0.6955480287110533 +1.0660371412465413 0.6822104325702613 +1.046864845390043 0.6684547775654172 +1.0271368583263167 0.654302124581547 +1.006883555711216 0.6397743712764887 +0.9861359490605178 0.6248942953024614 +0.964925592097691 0.609685598572637 +0.9432844859517424 0.5941729506462329 +0.9212449844819601 0.5783820292068775 +0.898839701036385 0.5623395555612003 +0.8761014179497877 0.5460733230902528 +0.8530630000541357 0.5296122166467166 +0.8297573134101041 0.5129862210057052 +0.8062171503730005 0.496226416644758 +0.7824751619822482 0.4793649613464048 +0.7585637985127642 0.46243505638020754 +0.7345152588523123 0.44547089632495673 +0.7103614491750543 0.4285076019291514 +0.6861339511723767 0.41158113577146005 +0.6618639998824497 0.39472820086423266 +0.6375824709350443 0.3779861227334286 +0.6133198768031939 0.3613927158982271 +0.5891063714338273 0.3449861360537223 +0.5649717624208745 0.3288047196211198 +0.5409746597012445 0.3128363580063026 +0.517189759347273 0.2970403848585911 +0.4936441199513776 0.2814578118241675 +0.4703634984106572 0.26613093711065927 +0.44737302974101034 0.2511020340049128 +0.424697280995871 0.23641312517265303 +0.4023603052659946 0.22210575872105376 +0.38038569401514344 0.20822078924799048 +0.3587966260564405 0.19479816701203026 +0.3376159115620256 0.18187673820148748 +0.31686602962273636 0.16949405906208592 +0.2965691580323211 0.15768622636534535 +0.2767471941587893 0.14648772636957258 +0.2574217659798681 0.1359313040493502 +0.23861423259541698 0.1260478539558587 +0.220345673781841 0.1168663336283256 +0.2026368684163633 0.10841370001616318 +0.1855082618665546 0.10071486890221794 +0.16897992270669 0.09379269685052997 +0.15307148938125428 0.08766798474760985 +0.13780210768130335 0.0823595015747667 +0.12319036012578244 0.07788402665024194 +0.10925418854205757 0.07425640822289496 +0.09601081131315843 0.0714896359920788 +0.08347663689950709 0.0695949248781447 +0.07166717534693322 0.06858180718043776 +0.0605969495580897 0.06845823013896993 +0.05027940812939361 0.06923065586492771 +0.04072684153969283 0.0709041606249305 +0.03195030342026949 0.07348253055400591 +0.0239595385397896 0.07696835103047313 +0.01676291900451938 0.08136308716862109 +0.010367390006573092 0.08666715316704163 +0.004778426254933672 0.09287996858514946 +0.0 0.1 +-0.0038925037938237366 0.10789845997847297 +-0.006824398108417527 0.11644420365516416 +-0.008793807574999266 0.12562863607949334 +-0.009798762399743498 0.13543944343494463 +-0.009837245402828371 0.14586068823937648 +-0.008907256466978455 0.15687294016033831 +-0.0070068932769752346 0.16845344047846297 +-0.004134446950672166 0.1805762977370321 +-0.00028851090886384406 0.1932127116689638 +0.004531898889198777 0.20633122210221266 +0.01032721440161475 0.2198979792181242 +0.01709717885154552 0.2338770312804792 +0.02484070526841131 0.24823062577007196 +0.03355573258099306 0.26291951975338723 +0.04323908163296823 0.2779032952852629 +0.05388631345917791 0.29314067569370006 +0.06549159208569116 0.3085898387178897 +0.07804755400076016 0.32420872266416134 +0.09154518629015876 0.3399553220035589 +0.10597371524305357 0.35578796915237343 +0.12132050701804595 0.3716655995453152 +0.1375709817184815 0.3875479975211852 +0.15470854196714492 0.4033960209832521 +0.17271451679893735 0.4191718032608224 +0.19156812141216006 0.4348389310742119 +0.21124643304069907 0.45036259798188893 +0.2317243829367374 0.4657097331555917 +0.2529747641923604 0.48084910577675544 +0.2749682548839486 0.4957514057663097 +0.2976734558004495 0.5103893019413781 +0.32105694181976707 0.5247374790292388 +0.345083325830168 0.5387726552548824 +0.3697153339586006 0.5524735824487971 +0.39491389076711364 0.5658210307927951 +0.42063758528051554 0.5787988476968681 +0.4467964846076083 0.5914740904561103 +0.47331600743442115 0.6038865309011774 +0.5001497876296807 0.6160265128388414 +0.5272506677192417 0.6278853315470545 +0.5545708211709477 0.6394551613367243 +0.5820618723376891 0.650728987601055 +0.6096750130781474 0.6617005448351961 +0.6373611152530329 0.6723642617997402 +0.6650708384840004 0.6827152146736225 +0.6927547327576217 0.692749088704192 +0.7203633356526014 0.7024621485237595 +0.7478472641596426 0.711851216971727 +0.7751573012450341 0.7209136619480482 +0.8022444774765565 0.7296473905352976 +0.8290601481794504 0.7380508493702442 +0.8555560667173674 0.746123030027873 +0.8816844545953928 0.7538634780064448 +0.9073980691570884 0.7612723037754575 +0.9326502696935125 0.7683501942719434 +0.9573950827985188 0.7750984232057566 +0.9815872677913682 0.7815188585613418 +1.0051823829856097 0.7876139657605167 +1.0281368535138096 0.7933868050753562 +1.050408041323391 0.7988410220483902 +1.071954317842397 0.8039808298839519 +1.0927351396789966 0.8088109830136324 +1.1127111275688568 0.8133367413035322 +1.1318441486245252 0.8175638246539001 +1.1500974017751584 0.8214983580348902 +1.1674355061180746 0.825146807297425 +1.1838245917403374 0.8285159063873903 +1.1992323924134873 0.8316125768666577 +1.2136283394219884 0.8344438408982205 +1.2269836556598925 0.8370167290780918 +1.239271449024248 0.839338184687428 +1.2504668040508462 0.8414149660893848 +1.2605468706803902 0.8432535491023392 +1.2694909490128439 0.8448600312413937 +1.2772805689054747 0.8462400397317522 +1.2838995632962593 0.8473986451602308 +1.2893341341883198 0.8483402825457081 +1.2935729103116742 0.8490686814778313 +1.296606995583876 0.8495868067991837 +1.298430007618492 0.8498968110938118 +1.299038105676658 0.85 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/relative-reference-frame.tikz b/v0.5.0/DuctAPE/theory_latex/figures/relative-reference-frame.tikz new file mode 100644 index 00000000..47f954f0 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/relative-reference-frame.tikz @@ -0,0 +1,42 @@ +\begin{tikzpicture}[scale=1.0] + + % Triangle 1 + \coordinate (O11) at (0.0,0.0); + \coordinate (O12) at ($(O11) + (0.0,-2.0)$); + \coordinate (O13) at ($(O11) + (-1.0,-1.5)$); + % Triangle 2 + \coordinate (O21) at ($(O11) + (2.0,-0.5)$); + \coordinate (O22) at ($(O21) + (1.5,0.0)$); + \coordinate (O23) at ($(O21) + (2.0,-1.0)$); + % Triangle 3 + \coordinate (O31) at ($(O21) + (3.0,0.0)$); + \coordinate (O32) at ($(O31) + (2.0,0.0)$); + \coordinate (O33) at ($(O31) + (2.0,-1.0)$); + + \draw [-Stealth,thick,shorten >=2pt] (O11) -- (O12) node [midway, right] {\(\vect{U}\)}; + \draw [-Stealth,thick,shorten >=2pt] (O13) -- (O11) node [midway, above left, shift={(0.1,-0.05)}] {\(\vect{W}\)}; + \draw [-Stealth,thick,shorten >=1pt] (O13) -- (O12) node [midway, below left, shift={(0.1,0.05)}] {\(\vect{C}\)}; + + \draw [-Stealth,thick,shorten >=1pt] (O21) -- (O22) node [midway, above] {\(C_\infty\)}; + \draw [-Stealth,thick,shorten >=4pt] (O21) -- (O23) node [midway, below left, shift={(0.1,0.05)}] {\(\vect{C}\)}; + \draw [-Stealth,thick,shorten >=4pt] (O22) -- (O23) node [midway, above right, shift={(-0.05,0.0)}] {\(\vect{V}\)}; + + \draw [-Stealth,thick,shorten >=1pt] (O31) -- (O32) node [midway, above] {\(C_m\)}; + \draw [-Stealth,thick,shorten >=2pt] (O31) -- (O33) node [midway, below left, shift={(0.1,0.05)}] {\(\vect{C}\)}; + \draw [-Stealth,thick,shorten >=2pt] (O32) -- (O33) node [midway, right] {\(C_\theta\)}; + + % Coordinate system parameters + \coordinate (csysO) at ($(O11) + (-2.0,1.0)$); + \coordinate (et) at ($(csysO) +(0,-1)$); + \coordinate (em) at ($(csysO) +(1,0)$); + % z-axis + \draw[-Stealth,] (csysO) -- (em); + \node[anchor=south,outer sep=0] at (em) {$\hat{\vect{e}}_m$}; + % r-axis + \draw[-Stealth,] (csysO) -- (et); + \node[anchor=west,outer sep=0] at (et) {$\hat{\vect{e}}_\theta$}; + + %Duct + \draw[primary, pattern={Hatch[angle=80,distance=1.5pt,xshift=.1pt]}, pattern color=plotsgray] plot[smooth] file{figures/relative-frame-airfoil.dat}; + +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/rotor-only-efficiency-validation.tikz b/v0.5.0/DuctAPE/theory_latex/figures/rotor-only-efficiency-validation.tikz new file mode 100644 index 00000000..c573d62b --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/rotor-only-efficiency-validation.tikz @@ -0,0 +1,106 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={71.2mm}, height={57.15mm}, scaled x ticks={false}, xlabel={$\mathrm{Advance~Ratio~}(J)$}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={0.08499999999999996}, xmax={0.615}, xticklabels={{$0.1$,$0.2$,$0.3$,$0.4$,$0.5$,$0.6$}}, xtick={{0.1,0.2,0.30000000000000004,0.4,0.5,0.6000000000000001}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$\eta$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={0.0}, ymax={1.0}, yticklabels={{$0.0$,$0.2$,$0.4$,$0.6$,$0.8$,$1.0$}}, ytick={{0.0,0.2,0.4,0.6000000000000001,0.8,1.0}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={195bc127-74d8-48e2-b136-fc5c9eda7010}, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.1 0.23167985134372798 \\ + 0.125 0.2837539323533829 \\ + 0.15 0.3333433229436858 \\ + 0.175 0.38066119196114906 \\ + 0.2 0.4250395818135024 \\ + 0.225 0.46637991118943645 \\ + 0.25 0.5048962957935361 \\ + 0.275 0.5398358327882157 \\ + 0.3 0.571427122591643 \\ + 0.325 0.5997213972797436 \\ + 0.35 0.6241626939255898 \\ + 0.375 0.6447326395179428 \\ + 0.4 0.66128804083612 \\ + 0.425 0.6733390976158747 \\ + 0.45 0.6799055562918556 \\ + 0.475 0.6805553568510411 \\ + 0.5 0.6733071740582663 \\ + 0.525 0.6538351248817569 \\ + 0.55 0.6148554394630119 \\ + 0.575 0.5489717528686263 \\ + 0.6 0.42695634435811314 \\ + } + ; + \addlegendentry {DuctAPE} + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={92f02dc2-8821-4820-a264-49dae01c581a}, draw opacity={1.0}, line width={1.0}, dashed] + table[row sep={\\}] + { + \\ + 0.1 0.2602307762316737 \\ + 0.125 0.3151954022437814 \\ + 0.15 0.3658865920600644 \\ + 0.175 0.4127459436755114 \\ + 0.2 0.45602590031484636 \\ + 0.225 0.49524036705472335 \\ + 0.25 0.5310288154753181 \\ + 0.275 0.5633863477691136 \\ + 0.3 0.5922130591966439 \\ + 0.325 0.6176863332283544 \\ + 0.35 0.6395461528232622 \\ + 0.375 0.6577542482733669 \\ + 0.4 0.6723345656052155 \\ + 0.425 0.6822520074613325 \\ + 0.45 0.6878455531238223 \\ + 0.475 0.6874251287143536 \\ + 0.5 0.6802099221150993 \\ + 0.525 0.6606759086095003 \\ + 0.55 0.6239536681792458 \\ + 0.575 0.5588451508446017 \\ + 0.6 0.44052001589769135 \\ + } + ; + \addlegendentry {BEMT} + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={ba3d6bb7-a2fc-4168-b9e4-ef2fc9bda690}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.3608;blue,0.6706}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}] + table[row sep={\\}] + { + \\ + 0.113 0.271 \\ + 0.145 0.335 \\ + 0.174 0.387 \\ + 0.2 0.429 \\ + 0.233 0.474 \\ + 0.26 0.505 \\ + 0.291 0.536 \\ + 0.316 0.557 \\ + 0.346 0.58 \\ + 0.375 0.603 \\ + 0.401 0.62 \\ + 0.432 0.635 \\ + 0.466 0.644 \\ + 0.493 0.64 \\ + 0.519 0.63 \\ + 0.548 0.595 \\ + 0.581 0.52 \\ + } + ; + \addlegendentry {UIUC} +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/rotor-only-thrust-and-power-validation.tikz b/v0.5.0/DuctAPE/theory_latex/figures/rotor-only-thrust-and-power-validation.tikz new file mode 100644 index 00000000..7c2d9f0a --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/rotor-only-thrust-and-power-validation.tikz @@ -0,0 +1,182 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={71.2mm}, height={57.15mm}, scaled x ticks={false}, xlabel={$\mathrm{Advance~Ratio~}(J)$}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={0.08499999999999996}, xmax={0.615}, xticklabels={{$0.1$,$0.2$,$0.3$,$0.4$,$0.5$,$0.6$}}, xtick={{0.1,0.2,0.30000000000000004,0.4,0.5,0.6000000000000001}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, ymajorgrids={false}, ymin={0.006397158663923326}, ymax={0.09366998566998283}, yticklabels={{$0.02$,$0.04$,$0.06$,$0.08$}}, ytick={{0.020000000000000004,0.04000000000000001,0.06000000000000001,0.08000000000000002}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={2ee404a6-256b-437e-a0be-92dc7777b426}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.1 0.08318794613859697 \\ + 0.125 0.0813837983952188 \\ + 0.15 0.07948150748022566 \\ + 0.175 0.07757151171541177 \\ + 0.2 0.07535143549939632 \\ + 0.225 0.07286731845303243 \\ + 0.25 0.07028813934248195 \\ + 0.275 0.06730683247844192 \\ + 0.3 0.06417712965118678 \\ + 0.325 0.06088367396158909 \\ + 0.35 0.057348796714192594 \\ + 0.375 0.05349608238740071 \\ + 0.4 0.04952269067843864 \\ + 0.425 0.04527161044598138 \\ + 0.45 0.040761788984436595 \\ + 0.475 0.0360667510830284 \\ + 0.5 0.031128182841465672 \\ + 0.525 0.02585908855196791 \\ + 0.55 0.020367970011482443 \\ + 0.575 0.014836256561046885 \\ + 0.6 0.008867144333906143 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={ab951dfc-e4ce-4acb-b4b5-1f65d3bbb58c}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.1 0.035906422442915226 \\ + 0.125 0.03585139671908786 \\ + 0.15 0.0357656065126823 \\ + 0.175 0.03566167194575103 \\ + 0.2 0.03545619689248556 \\ + 0.225 0.03515405843729155 \\ + 0.25 0.034803255603218175 \\ + 0.275 0.03428705137258458 \\ + 0.3 0.03369307849448169 \\ + 0.325 0.03299397708213936 \\ + 0.35 0.032158408449128366 \\ + 0.375 0.031115271145997207 \\ + 0.4 0.02995529186695897 \\ + 0.425 0.028574658010603653 \\ + 0.45 0.026978460277683997 \\ + 0.475 0.025173127493562954 \\ + 0.5 0.023115885320101993 \\ + 0.525 0.020763677222508218 \\ + 0.55 0.018219540378627892 \\ + 0.575 0.015539683923670777 \\ + 0.6 0.012460961572879809 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={ea21f74e-1281-4579-8958-4cb3647f09f6}, draw opacity={1.0}, line width={1.0}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.1 0.09075900683998461 \\ + 0.125 0.08860070464850453 \\ + 0.15 0.08603319941539597 \\ + 0.175 0.08329237034443555 \\ + 0.2 0.08053330956668808 \\ + 0.225 0.0773123495654154 \\ + 0.25 0.0739918857993044 \\ + 0.275 0.07049926408392371 \\ + 0.3 0.06676972557967546 \\ + 0.325 0.0629456660415371 \\ + 0.35 0.058874851800045 \\ + 0.375 0.054650826667863715 \\ + 0.4 0.05036052146422132 \\ + 0.425 0.045768880531953264 \\ + 0.45 0.04116759882014475 \\ + 0.475 0.03631709643475088 \\ + 0.5 0.03134818735814302 \\ + 0.525 0.025972759382944376 \\ + 0.55 0.020603281145088203 \\ + 0.575 0.014964791151112333 \\ + 0.6 0.009069688613803124 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={a67f9d22-7126-4348-9d04-b6a381e25a4c}, draw opacity={1.0}, line width={1.0}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.1 0.03487635404014831 \\ + 0.125 0.03513721330394682 \\ + 0.15 0.035270436775641394 \\ + 0.175 0.03531510129566668 \\ + 0.2 0.035319620886044775 \\ + 0.225 0.03512492076457957 \\ + 0.25 0.03483421409677884 \\ + 0.275 0.03441208275608465 \\ + 0.3 0.0338238364771544 \\ + 0.325 0.03311930402697872 \\ + 0.35 0.032220032970333955 \\ + 0.375 0.031157624681629463 \\ + 0.4 0.029961584033025748 \\ + 0.425 0.02851112787261765 \\ + 0.45 0.026932527781756678 \\ + 0.475 0.02509454497069285 \\ + 0.5 0.023043024174556625 \\ + 0.525 0.02063901301433003 \\ + 0.55 0.01816129178768315 \\ + 0.575 0.015397386733847348 \\ + 0.6 0.01235315756809041 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={bf9f936c-917a-4192-ba12-c3ac6561b6b7}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.3608;blue,0.6706}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 0.113 0.0912 \\ + 0.145 0.089 \\ + 0.174 0.0864 \\ + 0.2 0.0834 \\ + 0.233 0.0786 \\ + 0.26 0.0734 \\ + 0.291 0.0662 \\ + 0.316 0.0612 \\ + 0.346 0.0543 \\ + 0.375 0.0489 \\ + 0.401 0.0451 \\ + 0.432 0.0401 \\ + 0.466 0.0345 \\ + 0.493 0.0297 \\ + 0.519 0.0254 \\ + 0.548 0.0204 \\ + 0.581 0.0145 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={098f5cc3-33ac-4eef-a2a4-231cc8df1c92}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 0.113 0.0381 \\ + 0.145 0.0386 \\ + 0.174 0.0389 \\ + 0.2 0.0389 \\ + 0.233 0.0387 \\ + 0.26 0.0378 \\ + 0.291 0.036 \\ + 0.316 0.0347 \\ + 0.346 0.0323 \\ + 0.375 0.0305 \\ + 0.401 0.0291 \\ + 0.432 0.0272 \\ + 0.466 0.025 \\ + 0.493 0.0229 \\ + 0.519 0.021 \\ + 0.548 0.0188 \\ + 0.581 0.0162 \\ + } + ; + \node[left, , color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:0.4,0.07) {$C_T$}; + \node[left, , color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:0.4,0.0225) {$C_P$}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/rvf_eif.png b/v0.5.0/DuctAPE/theory_latex/figures/rvf_eif.png new file mode 100644 index 00000000..21049d72 Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/rvf_eif.png differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/rvf_eif_clean.png b/v0.5.0/DuctAPE/theory_latex/figures/rvf_eif_clean.png new file mode 100644 index 00000000..aad82d17 Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/rvf_eif_clean.png differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/scaled_dfdc_hub_coordinates.dat b/v0.5.0/DuctAPE/theory_latex/figures/scaled_dfdc_hub_coordinates.dat new file mode 100644 index 00000000..b68303a6 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/scaled_dfdc_hub_coordinates.dat @@ -0,0 +1,501 @@ +0.0 0.0 +0.01002004008016032 0.05939067113377612 +0.02004008016032064 0.08220753064912265 +0.03006012024048096 0.10065108381284307 +0.04008016032064128 0.11565895933003534 +0.0501002004008016 0.12884413866280525 +0.06012024048096192 0.14041299881067326 +0.07014028056112225 0.15125817488583665 +0.08016032064128256 0.1609774199097853 +0.09018036072144289 0.17015318675970287 +0.1002004008016032 0.1788607808435069 +0.11022044088176353 0.186917709894012 +0.12024048096192384 0.19455573153707018 +0.13026052104208416 0.20192592955175906 +0.1402805611222445 0.20894953322767496 +0.1503006012024048 0.2155713383133463 +0.16032064128256512 0.22197963012095367 +0.17034068136272545 0.22819984292163897 +0.18036072144288579 0.2341900870732365 +0.19038076152304612 0.23990908473730754 +0.2004008016032064 0.24543612398665532 +0.21042084168336672 0.2508337654685928 +0.22044088176352705 0.25607989918492763 +0.23046092184368736 0.26115241513746695 +0.24048096192384769 0.2660342010884455 +0.25050100200400804 0.27079653394287906 +0.2605210420841683 0.2754592801935836 +0.27054108216432865 0.2800091626990826 +0.280561122244489 0.28443290431789914 +0.2905811623246493 0.2887172279085566 +0.3006012024048096 0.2928923017682274 +0.3106212424849699 0.29699221980884916 +0.32064128256513025 0.3010085814202238 +0.3306613226452906 0.30493298532549673 +0.3406813627254509 0.3087570302478133 +0.35070140280561124 0.3124743050493236 +0.36072144288577157 0.3161185579453721 +0.3707414829659319 0.31970049460775257 +0.38076152304609223 0.3232145991930192 +0.39078156312625245 0.3266553558577262 +0.4008016032064128 0.33001724875842775 +0.4108216432865731 0.3332949726220616 +0.42084168336673344 0.33650873029448725 +0.4308617234468938 0.3396719678527221 +0.4408817635270541 0.3427808727048826 +0.45090180360721444 0.3458316322590855 +0.4609218436873747 0.3488204339234473 +0.47094188376753504 0.3517434651060847 +0.48096192384769537 0.35460173939968287 +0.4909819639278557 0.35741583964639645 +0.5010020040080161 0.360186225986795 +0.5110220440881764 0.36291012589212945 +0.5210420841683366 0.3655847668336503 +0.531062124248497 0.3682073762826083 +0.5410821643286573 0.37077518171025414 +0.5511022044088176 0.3732904474175203 +0.561122244488978 0.3757686501598153 +0.5711422845691383 0.37820933560361714 +0.5811623246492986 0.38061048319291224 +0.5911823647294588 0.3829700723716873 +0.6012024048096192 0.3852860825839284 +0.6112224448897795 0.38755649327362207 +0.6212424849699398 0.3897808589073234 +0.6312625250501002 0.3919714290830193 +0.6412825651302605 0.3941300022449041 +0.6513026052104208 0.396255059896616 +0.6613226452905812 0.3983450835417933 +0.6713426853707415 0.40039855468407387 +0.6813627254509018 0.4024139548270961 +0.6913827655310621 0.404389765474498 +0.7014028056112225 0.4063301692847085 +0.7114228456913828 0.40824292302124743 +0.7214428857715431 0.4101269501918008 +0.7314629258517035 0.41198105820234504 +0.7414829659318638 0.41380405445885665 +0.7515030060120241 0.4155947463673121 +0.7615230460921845 0.4173519413336878 +0.7715430861723447 0.4190744813213605 +0.7815631262525049 0.42076809832857376 +0.7915831663326653 0.4224369213400752 +0.8016032064128256 0.4240799404539186 +0.811623246492986 0.4256961457681579 +0.8216432865731462 0.4272845273808467 +0.8316633266533067 0.42884407539003905 +0.8416833667334669 0.4303737798937885 +0.8517034068136273 0.43187264007170545 +0.8617234468937875 0.4333453397711774 +0.871743486973948 0.4347959054758542 +0.8817635270541082 0.43622360767617135 +0.8917835671342687 0.43762771686256413 +0.9018036072144289 0.43900750352546813 +0.9118236472945891 0.4403622381553188 +0.9218436873747494 0.4416911912425514 +0.9318637274549098 0.4429936332776018 +0.9418837675350701 0.44427144727114876 +0.9519038076152304 0.44552966322669 +0.9619238476953907 0.4467678126495893 +0.9719438877755511 0.44798522450038025 +0.9819639278557114 0.44918122773959673 +0.9919839679358717 0.4503551513277723 +1.0020040080160322 0.45150632422544085 +1.0120240480961924 0.452634075393136 +1.0220440881763528 0.45373805859606486 +1.032064128256513 0.4548225325794867 +1.0420841683366733 0.4558885978905931 +1.0521042084168335 0.4569357231818012 +1.062124248496994 0.45796337710552826 +1.0721442885771544 0.45897102831419134 +1.0821643286573146 0.4599581454602078 +1.0921843687374748 0.4609241971959948 +1.1022044088176353 0.4618686521739695 +1.1122244488977957 0.4627923264582382 +1.122244488977956 0.46369911596367785 +1.1322645290581161 0.464588916425147 +1.1422845691382766 0.4654612871629863 +1.152304609218437 0.4663157874975369 +1.1623246492985972 0.46715197674913966 +1.1723446893787575 0.46796941423813565 +1.1823647294589177 0.46876765928486563 +1.1923847695390781 0.46954627120967085 +1.2024048096192383 0.4703068268841804 +1.2124248496993988 0.4710522611957871 +1.222444889779559 0.4717822326860657 +1.2324649298597194 0.47249634936049617 +1.2424849699398797 0.4731942192245582 +1.2525050100200399 0.47387545028373174 +1.2625250501002003 0.47453965054349656 +1.2725450901803605 0.4751864280093324 +1.282565130260521 0.4758153906867192 +1.2925851703406812 0.47642811156856896 +1.3026052104208417 0.4770269986843535 +1.3126252505010019 0.4776116456651712 +1.3226452905811623 0.47818162391052027 +1.3326653306613225 0.47873650481989877 +1.342685370741483 0.4792758597928044 +1.3527054108216432 0.4797992602287357 +1.3627254509018036 0.48030627752719024 +1.3727454909819639 0.4807964830876663 +1.3827655310621243 0.4812709618976129 +1.3927855711422845 0.48173244110403224 +1.402805611222445 0.48218076153593914 +1.4128256513026052 0.48261567773372877 +1.4228456913827656 0.48303694423779636 +1.4328657314629258 0.4834443155885371 +1.4428857715430863 0.48383754632634635 +1.4529058116232465 0.4842163909916192 +1.462925851703407 0.48458060412475107 +1.4729458917835672 0.4849304423288261 +1.4829659318637276 0.48526795385360805 +1.4929859719438878 0.4855933836614123 +1.5030060120240483 0.4859067274709412 +1.5130260521042085 0.48620798100089735 +1.523046092184369 0.4864971399699832 +1.533066132264529 0.48677420009690103 +1.5430861723446894 0.4870391571003535 +1.5531062124248496 0.48729200669904316 +1.5631262525050098 0.4875328064211809 +1.5731462925851702 0.4877631679753633 +1.5831663326653307 0.4879829790742452 +1.593186372745491 0.48819112351801197 +1.6032064128256511 0.48838648510684857 +1.6132264529058116 0.48856794764093997 +1.623246492985972 0.48873439492047155 +1.6332665330661322 0.488884710745628 +1.6432865731462925 0.4890177789165946 +1.653306613226453 0.48913248323355635 +1.6633266533066133 0.48923155077954467 +1.6733466933867736 0.4893221703476531 +1.6833667334669338 0.48940334699924837 +1.6933867735470942 0.4894737893753536 +1.7034068136272547 0.48953220611699205 +1.7134268537074149 0.4895773058651872 +1.723446893787575 0.4896077972609624 +1.7334669338677355 0.48962238894534094 +1.743486973947896 0.48961978955934615 +1.7535070140280562 0.48959964978927734 +1.7635270541082164 0.48957149734082356 +1.7735470941883769 0.4895391221234585 +1.7835671342685373 0.48950378273365724 +1.7935871743486975 0.4894667377678945 +1.8036072144288577 0.48942924582264535 +1.813627254509018 0.4893925654943846 +1.8236472945891782 0.48935795537958715 +1.8336673346693386 0.4893266740747281 +1.8436873747494988 0.4892999801762821 +1.8537074148296593 0.4892788512466511 +1.8637274549098195 0.48925882560916784 +1.87374749498998 0.4892382923486082 +1.8837675350701402 0.4892176956278485 +1.8937875751503006 0.4891974796097651 +1.9038076152304608 0.4891780884572345 +1.9138276553106213 0.489159966333133 +1.9238476953907815 0.4891435574003371 +1.933867735470942 0.4891293058217232 +1.9438877755511021 0.48911765576016764 +1.9539078156312626 0.4891090513785469 +1.9639278557114228 0.4891039184446182 +1.9739478957915833 0.4891021363886667 +1.9839679358717435 0.4891029970232352 +1.993987975951904 0.48910576512406295 +2.0040080160320644 0.4891097054668897 +2.0140280561122244 0.48911408282745505 +2.024048096192385 0.4891181619814984 +2.0340681362725452 0.48912120770475953 +2.0440881763527057 0.48912248477297776 +2.0541082164328657 0.4891212579618928 +2.064128256513026 0.4891167920472442 +2.0741482965931866 0.4891093923925363 +2.0841683366733466 0.48910175131381267 +2.094188376753507 0.489094070068921 +2.104208416833667 0.48908636072340084 +2.1142284569138274 0.4890786353427916 +2.124248496993988 0.48907090599263287 +2.1342685370741483 0.48906318473846405 +2.1442885771543088 0.48905548364582474 +2.1543086172344688 0.4890478147802544 +2.164328657314629 0.4890401902072923 +2.1743486973947896 0.4890326219924784 +2.1843687374749496 0.4890250968015142 +2.19438877755511 0.48901754616641085 +2.2044088176352705 0.4890099763924283 +2.214428857715431 0.4890023997601435 +2.2244488977955914 0.48899482855013343 +2.2344689378757514 0.48898727504297496 +2.244488977955912 0.4889797515192449 +2.2545090180360723 0.48897227025952 +2.2645290581162323 0.4889648435443774 +2.2745490981963927 0.48895748365439384 +2.284569138276553 0.4889502028701462 +2.2945891783567136 0.4889430991817966 +2.304609218436874 0.488936542081575 +2.314629258517034 0.48893048042580245 +2.3246492985971945 0.4889248069466594 +2.334669338677355 0.48891941437632563 +2.344689378757515 0.48891419544698167 +2.3547094188376754 0.4889090428908074 +2.3647294589178354 0.48890384943998305 +2.374749498997996 0.4888985078266888 +2.3847695390781563 0.48889291078310476 +2.3947895791583167 0.48888695104141117 +2.4048096192384767 0.48888056801888563 +2.414829659318637 0.48887408260092013 +2.4248496993987976 0.48886757212638976 +2.434869739478958 0.4888610303124524 +2.444889779559118 0.48885445087626556 +2.4549098196392785 0.4888478275349867 +2.464929859719439 0.4888411540057733 +2.4749498997995993 0.48883442400578336 +2.4849699398797593 0.488827631252174 +2.49498997995992 0.48882076946210284 +2.5050100200400798 0.48881383235272774 +2.51503006012024 0.48880681279083654 +2.5250501002004007 0.48879969567257575 +2.5350701402805607 0.4887924942119276 +2.545090180360721 0.48878523045478744 +2.5551102204408815 0.4887779264470507 +2.565130260521042 0.4887706042346129 +2.5751503006012024 0.4887632858633694 +2.5851703406813624 0.4887559933792158 +2.595190380761523 0.4887487488280476 +2.6052104208416833 0.4887415742557602 +2.6152304609218433 0.4887344917082491 +2.6252505010020037 0.48872752254948576 +2.635270541082164 0.4887206129445344 +2.6452905811623246 0.48871372158609655 +2.655310621242485 0.48870685361650223 +2.665330661322645 0.48870001417808123 +2.6753507014028055 0.4886932084131637 +2.685370741482966 0.4886864414640795 +2.695390781563126 0.48867971847315866 +2.7054108216432864 0.4886730445827312 +2.715430861723447 0.48866642493512713 +2.7254509018036073 0.48865986467267614 +2.7354709418837677 0.4886533689377085 +2.7454909819639277 0.488646913403028 +2.755511022044088 0.48864046325845634 +2.7655310621242486 0.4886340187087138 +2.7755511022044086 0.48862758006993 +2.785571142284569 0.48862114765823467 +2.7955911823647295 0.4886147217897574 +2.80561122244489 0.48860830278062817 +2.8156312625250504 0.4886018909469764 +2.8256513026052104 0.4885954866049321 +2.835671342685371 0.4885890900706248 +2.8456913827655312 0.48858270166018425 +2.8557114228456912 0.488576322163668 +2.8657314629258517 0.4885699516844264 +2.875751503006012 0.4885635881474566 +2.8857715430861726 0.48855722941568835 +2.895791583166333 0.4885508733520508 +2.905811623246493 0.4885445178194736 +2.9158316633266534 0.4885381606808862 +2.925851703406814 0.48853179979921807 +2.935871743486974 0.48852543303739865 +2.9458917835671343 0.4885190582583574 +2.9559118236472948 0.48851267332502385 +2.965931863727455 0.48850627628175924 +2.9759519038076157 0.4884998661896991 +2.9859719438877756 0.4884934420272905 +2.995991983967936 0.48848700272107964 +3.0060120240480965 0.48848054719761247 +3.0160320641282565 0.4884740743834349 +3.026052104208417 0.48846758320509304 +3.0360721442885774 0.4884610725891328 +3.046092184368738 0.48845454146210027 +3.0561122244488974 0.4884479887505414 +3.066132264529058 0.4884414133810022 +3.0761523046092183 0.48843481512162024 +3.0861723446893787 0.4884282004262452 +3.0961923847695387 0.4884215717419743 +3.106212424849699 0.488414930149641 +3.1162324649298596 0.4884082767300784 +3.1262525050100196 0.48840161256412024 +3.13627254509018 0.48839493873259965 +3.1462925851703405 0.4883882563163501 +3.156312625250501 0.488381566396205 +3.1663326653306614 0.4883748700529978 +3.1763527054108214 0.4883681683675617 +3.186372745490982 0.48836146209994485 +3.1963927855711423 0.4883547460221335 +3.2064128256513023 0.4883480196629131 +3.2164328657314627 0.48834128528767456 +3.226452905811623 0.48833454516180863 +3.2364729458917836 0.4883278015507062 +3.246492985971944 0.4883210567197583 +3.256513026052104 0.48831431293435545 +3.2665330661322645 0.4883075724598889 +3.276553106212425 0.4883008375617492 +3.286573146292585 0.48829411050532734 +3.2965931863727453 0.4882873934879459 +3.306613226452906 0.4882806789761484 +3.3166332665330662 0.4882739648670847 +3.3266533066132267 0.48826725717073516 +3.3366733466933867 0.48826056189708006 +3.346693386773547 0.48825388505609996 +3.3567134268537075 0.48824723265777514 +3.3667334669338675 0.488240610712086 +3.376753507014028 0.4882340252290129 +3.3867735470941884 0.4882274822185362 +3.396793587174349 0.48822098769063615 +3.4068136272545093 0.48821454765529326 +3.4168336673346693 0.488208152744355 +3.4268537074148298 0.48820178199276026 +3.43687374749499 0.48819543181259295 +3.44689378757515 0.4881890987353132 +3.4569138276553106 0.4881827792923812 +3.466933867735471 0.4881764700152571 +3.4769539078156315 0.48817016743540104 +3.486973947895792 0.48816386808427314 +3.496993987975952 0.4881575684933337 +3.5070140280561124 0.4881512651940426 +3.517034068136273 0.48814495471786035 +3.527054108216433 0.4881386418756225 +3.5370741482965933 0.48813234370424197 +3.5470941883767537 0.48812605791436653 +3.557114228456914 0.48811978127856803 +3.5671342685370746 0.488113510569418 +3.5771543086172346 0.488107242559488 +3.587174348697395 0.48810097402134983 +3.5971943887775555 0.488094701727575 +3.6072144288577155 0.48808842245073514 +3.6172344689378755 0.4880821329634021 +3.627254509018036 0.48807583003814725 +3.637274549098196 0.48806944922970835 +3.6472945891783564 0.48806274042577846 +3.657314629258517 0.48805571509893997 +3.6673346693386772 0.4880484171072002 +3.6773547094188377 0.48804089030856634 +3.6873747494989977 0.4880331785610458 +3.697394789579158 0.48802532572264573 +3.7074148296593186 0.4880173756513736 +3.7174348697394786 0.48800937220523655 +3.727454909819639 0.48800135924224197 +3.7374749498997994 0.4879933806203972 +3.74749498997996 0.4879853878917485 +3.7575150300601203 0.48797675810330465 +3.7675350701402803 0.4879675112261237 +3.7775551102204408 0.4879578240996767 +3.787575150300601 0.48794787356343483 +3.797595190380761 0.4879378364568692 +3.8076152304609217 0.48792788961945105 +3.817635270541082 0.4879182098906515 +3.8276553106212425 0.4879089741099417 +3.837675350701403 0.4879003591167925 +3.847695390781563 0.4878925417506755 +3.8577154308617234 0.48788568249476405 +3.867735470941884 0.4878796318056454 +3.877755511022044 0.4878742218698159 +3.8877755511022043 0.48786934419367106 +3.8977955911823647 0.4878648902836068 +3.907815631262525 0.4878607516460188 +3.9178356713426856 0.4878568197873026 +3.9278557114228456 0.4878529862138541 +3.937875751503006 0.4878491424320689 +3.9478957915831665 0.48784517994834287 +3.9579158316633265 0.4878409902690716 +3.967935871743487 0.4878364673579004 +3.9779559118236474 0.48783159334096327 +3.987975951903808 0.4878264107602395 +3.9979959919839683 0.4878209537668249 +4.008016032064129 0.48781525651181523 +4.018036072144289 0.48780935314630613 +4.028056112224449 0.4878032778213933 +4.038076152304609 0.4877970646881724 +4.04809619238477 0.48779074789773946 +4.05811623246493 0.4877843616011899 +4.0681362725450905 0.48777793994961954 +4.078156312625251 0.48776944467194944 +4.088176352705411 0.48774681666333963 +4.098196392785571 0.48770939296473415 +4.108216432865731 0.48765872213011013 +4.118236472945892 0.48759635271344515 +4.128256513026052 0.487523833268716 +4.138276553106213 0.4874427123499004 +4.148296593186373 0.48735453851097515 +4.158316633266534 0.487260860305918 +4.168336673346693 0.4871632262887057 +4.1783567134268536 0.4870577011381976 +4.188376753507014 0.486926235117187 +4.198396793587174 0.4867690764361799 +4.208416833667334 0.4865882782810005 +4.218436873747494 0.4863858938374727 +4.228456913827655 0.4861639762914208 +4.238476953907815 0.48592457882866896 +4.248496993987976 0.48566975463504114 +4.258517034068136 0.48540155689636166 +4.268537074148297 0.48511848735101104 +4.278557114228457 0.48480938617627334 +4.2885771543086175 0.4844742608374541 +4.298597194388777 0.48411425342714975 +4.3086172344689375 0.4837305060379565 +4.318637274549098 0.4833241607624706 +4.328657314629258 0.48289635969328837 +4.338677354709419 0.4824482449230062 +4.348697394789579 0.48198091273150634 +4.35871743486974 0.4814910422185464 +4.368737474949899 0.4809763639948529 +4.37875751503006 0.480437360798911 +4.38877755511022 0.4798745153692058 +4.398797595190381 0.47928831044422254 +4.408817635270541 0.47867922876244634 +4.4188376753507015 0.47804775306236225 +4.428857715430862 0.4773943660824556 +4.438877755511022 0.4767180012764832 +4.448897795591183 0.4760155670627425 +4.458917835671342 0.47528745342724 +4.468937875751503 0.47453419750642034 +4.478957915831663 0.473756336436728 +4.488977955911824 0.4729544073546074 +4.498997995991984 0.47212894739650313 +4.509018036072145 0.4712804936988597 +4.519038076152305 0.47040851020152014 +4.529058116232465 0.46950802974779304 +4.539078156312625 0.4685789867797623 +4.5490981963927855 0.4676221249498463 +4.559118236472946 0.4666381879104639 +4.569138276553106 0.4656279193140337 +4.579158316633267 0.4645920628129744 +4.589178356713427 0.46353136205970474 +4.599198396793588 0.4624455485340738 +4.609218436873748 0.46132790644887206 +4.619238476953908 0.46017780526902224 +4.629258517034068 0.4589961513404606 +4.6392785571142285 0.45778385100912355 +4.649298597194389 0.45654181062094706 +4.659318637274549 0.4552709365218676 +4.66933867735471 0.4539721350578213 +4.67935871743487 0.4526446345193218 +4.68937875751503 0.4512813034873711 +4.69939879759519 0.44988191924569076 +4.709418837675351 0.4484472955041941 +4.719438877755511 0.44697824597279456 +4.729458917835671 0.44547558436140566 +4.739478957915831 0.4439401243799407 +4.749498997995992 0.4423726797383129 +4.759519038076152 0.4407707780917973 +4.7695390781563125 0.4391300913181367 +4.779559118236473 0.4374510898557093 +4.789579158316633 0.43573429412197057 +4.799599198396793 0.43398022453437635 +4.809619238476953 0.432189401510382 +4.819639278557114 0.43036234546744323 +4.829659318637274 0.4284997257224886 +4.839679358717435 0.42660236654391015 +4.849699398797595 0.42466849306938526 +4.859719438877756 0.4226959099680314 +4.869739478957916 0.4206824219089662 +4.8797595190380765 0.4186258335613072 +4.889779559118236 0.41652394959417194 +4.8997995991983965 0.41437470549262495 +4.909819639278557 0.4121863020794603 +4.919839679358717 0.4099646419211192 +4.929859719438878 0.40770970071240725 +4.939879759519038 0.40542145414813 +4.949899799599199 0.40309987792309326 +4.959919839679358 0.40074494773210245 +4.969939879759519 0.39835656317419643 +4.979959919839679 0.39592581939879457 +4.98997995991984 0.3934397167381673 +5.0 0.3908884200360257 +5.0 0.0 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/sheets.png b/v0.5.0/DuctAPE/theory_latex/figures/sheets.png new file mode 100644 index 00000000..9bf65b7c Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/sheets.png differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/shiftedcpkutta.jpeg b/v0.5.0/DuctAPE/theory_latex/figures/shiftedcpkutta.jpeg new file mode 100644 index 00000000..4f4d380f Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/shiftedcpkutta.jpeg differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/shrinkhub-coordinates-scale-0.1.dat b/v0.5.0/DuctAPE/theory_latex/figures/shrinkhub-coordinates-scale-0.1.dat new file mode 100644 index 00000000..deeed5d1 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/shrinkhub-coordinates-scale-0.1.dat @@ -0,0 +1,81 @@ +0.0 1.959434878635765e-18 +0.0005057991354436265 0.0012720383652547217 +0.0020224166361686243 0.002548070437183337 +0.004547513987915548 0.0037925975425551887 +0.008077197673590681 0.005023013065409925 +0.012606025176787381 0.006227518430211163 +0.018127013373751593 0.007399202405613287 +0.024631649300852786 0.008531010536608099 +0.03210990328095687 0.009615734677284807 +0.04055024438846109 0.010645949728318303 +0.049939658229145915 0.01161393771659899 +0.06026366700742716 0.0125115975649387 +0.07150635185006796 0.013330333355412786 +0.08365037735192689 0.014060911933654866 +0.09667701830589667 0.014693400648466266 +0.1105661885758161 0.015216933262680183 +0.12529647206783595 0.015618944695913576 +0.1408451557524839 0.015887337928573053 +0.1571882646865093 0.015996860867524217 +0.17430059898050793 0.016 +0.1921557726553253 0.016 +0.2107262543273236 0.016 +0.2299834096597799 0.016 +0.24989754551495824 0.016 +0.27043795573877505 0.016 +0.2915729685074639 0.016 +0.31326999516323184 0.016 +0.33549558046360745 0.016 +0.3582154541670001 0.016 +0.3813945838749286 0.016 +0.40499722904943997 0.016 +0.42898699612242913 0.016 +0.45332689461188236 0.016 +0.4779793941585201 0.016 +0.5029064823948901 0.016 +0.5280697235576836 0.016 +0.5534303177528952 0.016 +0.5789491607824487 0.016 +0.6045869044400353 0.016 +0.6303040171831954 0.016 +0.6560608450880927 0.016 +0.6818176729929899 0.016 +0.7075347857361503 0.016 +0.7331725293937368 0.016 +0.7586913724232901 0.016 +0.7840519666185021 0.015444366943151704 +0.8092152077812954 0.014754960328607507 +0.8341422960176657 0.014095711289765837 +0.8587947955643033 0.013443724323736948 +0.8831346940537563 0.012800004747165484 +0.9071244611267455 0.01216554512898079 +0.9307271063012569 0.011541323759927564 +0.9539062360091854 0.010928303144112412 +0.9766261097125782 0.010327428514892309 +0.9988516950129538 0.009739626377393252 +1.0205487216687217 0.009165803079906505 +1.0416837344374104 0.008606843416365261 +1.0622241446612273 0.008063609262056485 +1.0821382805164055 0.007536938244671725 +1.1013954358488618 0.007027642452745922 +1.1199659175208603 0.006536507183475725 +1.1378210911956776 0.006064289731848147 +1.1549334254896764 0.005611718222946601 +1.1712765344237017 0.005179490489234783 +1.1868252181083496 0.004768272994549574 +1.2015555016003694 0.004378699806462153 +1.215444671870289 0.004011371618591701 +1.2284713128242586 0.003666854824379454 +1.2406153383261176 0.0033456806437510062 +1.2518580231687584 0.0030483443040137176 +1.2621820319470398 0.0027753042762520986 +1.2715714457877245 0.0025269815683986144 +1.2800117868952288 0.0023037590760699948 +1.2874900408753327 0.002105980992169919 +1.293994676802434 0.0019339522761685143 +1.2995156649993982 0.001787938183876969 +1.304044492502595 0.0016681638584422828 +1.3075741761882702 0.0015748139831928609 +1.310099273540017 0.0015080324968702046 +1.311615891040742 0.0014679223716858036 +1.3121216901761856 0.001454545454545454 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/shrinkhub-coordinates-scale-0.825.dat b/v0.5.0/DuctAPE/theory_latex/figures/shrinkhub-coordinates-scale-0.825.dat new file mode 100644 index 00000000..e8aa40f2 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/shrinkhub-coordinates-scale-0.825.dat @@ -0,0 +1,81 @@ +0.0 1.6165337748745057e-17 +0.0005057991354436265 0.010494316513351453 +0.0020224166361686243 0.02102158110676253 +0.004547513987915548 0.03128892972608031 +0.008077197673590681 0.04143985778963188 +0.012606025176787381 0.05137702704924209 +0.018127013373751593 0.061043419846309614 +0.024631649300852786 0.07038083692701681 +0.03210990328095687 0.07932981108759965 +0.04055024438846109 0.087829085258626 +0.049939658229145915 0.09581498616194166 +0.06026366700742716 0.10322067991074425 +0.07150635185006796 0.10997525018215547 +0.08365037735192689 0.11600252345265263 +0.09667701830589667 0.12122055534984667 +0.1105661885758161 0.1255396994171115 +0.12529647206783595 0.128856293741287 +0.1408451557524839 0.13107053791072767 +0.1571882646865093 0.13197410215707478 +0.17430059898050793 0.132 +0.1921557726553253 0.132 +0.2107262543273236 0.132 +0.2299834096597799 0.132 +0.24989754551495824 0.132 +0.27043795573877505 0.132 +0.2915729685074639 0.132 +0.31326999516323184 0.132 +0.33549558046360745 0.132 +0.3582154541670001 0.132 +0.3813945838749286 0.132 +0.40499722904943997 0.132 +0.42898699612242913 0.132 +0.45332689461188236 0.132 +0.4779793941585201 0.132 +0.5029064823948901 0.132 +0.5280697235576836 0.132 +0.5534303177528952 0.132 +0.5789491607824487 0.132 +0.6045869044400353 0.132 +0.6303040171831954 0.132 +0.6560608450880927 0.132 +0.6818176729929899 0.132 +0.7075347857361503 0.132 +0.7331725293937368 0.132 +0.7586913724232901 0.132 +0.7840519666185021 0.12741602728100154 +0.8092152077812954 0.12172842271101192 +0.8341422960176657 0.11628961814056814 +0.8587947955643033 0.11091072567082981 +0.8831346940537563 0.10560003916411523 +0.9071244611267455 0.1003657473140915 +0.9307271063012569 0.09521592101940239 +0.9539062360091854 0.09015850093892738 +0.9766261097125782 0.08520128524786154 +0.9988516950129538 0.08035191761349432 +1.0205487216687217 0.07561787540922867 +1.0416837344374104 0.07100645818501339 +1.0622241446612273 0.066524776411966 +1.0821382805164055 0.06217974051854172 +1.1013954358488618 0.05797805023515385 +1.1199659175208603 0.05392618426367472 +1.1378210911956776 0.05003039028774721 +1.1549334254896764 0.04629667533930946 +1.1712765344237017 0.04273079653618696 +1.1868252181083496 0.03933825220503398 +1.2015555016003694 0.036124273403312764 +1.215444671870289 0.033093815853381524 +1.2284713128242586 0.03025155230113049 +1.2406153383261176 0.0276018653109458 +1.2518580231687584 0.02514884050811317 +1.2621820319470398 0.022896260279079813 +1.2715714457877245 0.020847597939288566 +1.2800117868952288 0.019006012377577455 +1.2874900408753327 0.017374343185401833 +1.293994676802434 0.01595510627839024 +1.2995156649993982 0.014750490016984993 +1.304044492502595 0.013762351832148833 +1.3075741761882702 0.0129922153613411 +1.310099273540017 0.012441268099179186 +1.311615891040742 0.01211035956640788 +1.3121216901761856 0.011999999999999993 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/shrinkhub-coordinates-scale-1.55.dat b/v0.5.0/DuctAPE/theory_latex/figures/shrinkhub-coordinates-scale-1.55.dat new file mode 100644 index 00000000..eb55ee9e --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/shrinkhub-coordinates-scale-1.55.dat @@ -0,0 +1,81 @@ +0.0 3.0371240618854354e-17 +0.0005057991354436265 0.019716594661448185 +0.0020224166361686243 0.03949509177634172 +0.004547513987915548 0.058785261909605424 +0.008077197673590681 0.07785670251385383 +0.012606025176787381 0.09652653566827302 +0.018127013373751593 0.11468763728700594 +0.024631649300852786 0.13223066331742553 +0.03210990328095687 0.1490438874979145 +0.04055024438846109 0.1650122207889337 +0.049939658229145915 0.18001603460728433 +0.06026366700742716 0.19392976225654981 +0.07150635185006796 0.20662016700889818 +0.08365037735192689 0.2179441349716504 +0.09667701830589667 0.22774771005122713 +0.1105661885758161 0.23586246557154283 +0.12529647206783595 0.24209364278666043 +0.1408451557524839 0.24625373789288232 +0.1571882646865093 0.24795134344662534 +0.17430059898050793 0.24800000000000003 +0.1921557726553253 0.24800000000000003 +0.2107262543273236 0.24800000000000003 +0.2299834096597799 0.24800000000000003 +0.24989754551495824 0.24800000000000003 +0.27043795573877505 0.24800000000000003 +0.2915729685074639 0.24800000000000003 +0.31326999516323184 0.24800000000000003 +0.33549558046360745 0.24800000000000003 +0.3582154541670001 0.24800000000000003 +0.3813945838749286 0.24800000000000003 +0.40499722904943997 0.24800000000000003 +0.42898699612242913 0.24800000000000003 +0.45332689461188236 0.24800000000000003 +0.4779793941585201 0.24800000000000003 +0.5029064823948901 0.24800000000000003 +0.5280697235576836 0.24800000000000003 +0.5534303177528952 0.24800000000000003 +0.5789491607824487 0.24800000000000003 +0.6045869044400353 0.24800000000000003 +0.6303040171831954 0.24800000000000003 +0.6560608450880927 0.24800000000000003 +0.6818176729929899 0.24800000000000003 +0.7075347857361503 0.24800000000000003 +0.7331725293937368 0.24800000000000003 +0.7586913724232901 0.24800000000000003 +0.7840519666185021 0.2393876876188514 +0.8092152077812954 0.22870188509341635 +0.8341422960176657 0.21848352499137047 +0.8587947955643033 0.20837772701792268 +0.8831346940537563 0.19840007358106498 +0.9071244611267455 0.18856594949920222 +0.9307271063012569 0.17889051827887723 +0.9539062360091854 0.16938869873374238 +0.9766261097125782 0.16007514198083078 +0.9988516950129538 0.1509642088495954 +1.0205487216687217 0.14206994773855083 +1.0416837344374104 0.13340607295366155 +1.0622241446612273 0.1249859435618755 +1.0821382805164055 0.11682254279241173 +1.1013954358488618 0.10892845801756179 +1.1199659175208603 0.10131586134387373 +1.1378210911956776 0.09399649084364627 +1.1549334254896764 0.08698163245567232 +1.1712765344237017 0.08028210258313914 +1.1868252181083496 0.07390823141551839 +1.2015555016003694 0.06786984700016338 +1.215444671870289 0.062176260088171356 +1.2284713128242586 0.05683624977788153 +1.2406153383261176 0.0518580499781406 +1.2518580231687584 0.04724933671221262 +1.2621820319470398 0.04301721628190753 +1.2715714457877245 0.03916821431017852 +1.2800117868952288 0.03570826567908492 +1.2874900408753327 0.03264270537863375 +1.293994676802434 0.029976260280611972 +1.2995156649993982 0.027713041850093018 +1.304044492502595 0.025856539805855384 +1.3075741761882702 0.024409616739489343 +1.310099273540017 0.02337450370148817 +1.311615891040742 0.022752796761129956 +1.3121216901761856 0.022545454545454535 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/shrinkhub-coordinates-scale-2.275.dat b/v0.5.0/DuctAPE/theory_latex/figures/shrinkhub-coordinates-scale-2.275.dat new file mode 100644 index 00000000..d4492b50 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/shrinkhub-coordinates-scale-2.275.dat @@ -0,0 +1,81 @@ +0.0 4.457714348896365e-17 +0.0005057991354436265 0.028938872809544915 +0.0020224166361686243 0.05796860244592091 +0.004547513987915548 0.08628159409313053 +0.008077197673590681 0.11427354723807578 +0.012606025176787381 0.14167604428730393 +0.018127013373751593 0.16833185472770226 +0.024631649300852786 0.19408048970783423 +0.03210990328095687 0.21875796390822935 +0.04055024438846109 0.24219535631924138 +0.049939658229145915 0.264217083052627 +0.06026366700742716 0.2846388446023554 +0.07150635185006796 0.3032650838356408 +0.08365037735192689 0.31988574649064816 +0.09667701830589667 0.33427486475260754 +0.1105661885758161 0.34618523172597415 +0.12529647206783595 0.3553309918320338 +0.1408451557524839 0.36143693787503695 +0.1571882646865093 0.3639285847361759 +0.17430059898050793 0.364 +0.1921557726553253 0.364 +0.2107262543273236 0.364 +0.2299834096597799 0.364 +0.24989754551495824 0.364 +0.27043795573877505 0.364 +0.2915729685074639 0.364 +0.31326999516323184 0.364 +0.33549558046360745 0.364 +0.3582154541670001 0.364 +0.3813945838749286 0.364 +0.40499722904943997 0.364 +0.42898699612242913 0.364 +0.45332689461188236 0.364 +0.4779793941585201 0.364 +0.5029064823948901 0.364 +0.5280697235576836 0.364 +0.5534303177528952 0.364 +0.5789491607824487 0.364 +0.6045869044400353 0.364 +0.6303040171831954 0.364 +0.6560608450880927 0.364 +0.6818176729929899 0.364 +0.7075347857361503 0.364 +0.7331725293937368 0.364 +0.7586913724232901 0.364 +0.7840519666185021 0.3513593479567012 +0.8092152077812954 0.33567534747582073 +0.8341422960176657 0.32067743184217273 +0.8587947955643033 0.30584472836501553 +0.8831346940537563 0.2912001079980147 +0.9071244611267455 0.2767661516843129 +0.9307271063012569 0.26256511553835205 +0.9539062360091854 0.24861889652855734 +0.9766261097125782 0.23494899871379998 +0.9988516950129538 0.22157650008569646 +1.0205487216687217 0.208522020067873 +1.0416837344374104 0.19580568772230966 +1.0622241446612273 0.18344711071178502 +1.0821382805164055 0.17146534506628172 +1.1013954358488618 0.1598788657999697 +1.1199659175208603 0.14870553842407272 +1.1378210911956776 0.13796259139954534 +1.1549334254896764 0.12766658957203517 +1.1712765344237017 0.11783340863009131 +1.1868252181083496 0.1084782106260028 +1.2015555016003694 0.09961542059701398 +1.215444671870289 0.09125870432296118 +1.2284713128242586 0.08342094725463256 +1.2406153383261176 0.07611423464533539 +1.2518580231687584 0.06934983291631207 +1.2621820319470398 0.06313817228473524 +1.2715714457877245 0.05748883068106847 +1.2800117868952288 0.05241051898059238 +1.2874900408753327 0.04791106757186566 +1.293994676802434 0.0439974142828337 +1.2995156649993982 0.04067559368320104 +1.304044492502595 0.03795072777956193 +1.3075741761882702 0.03582701811763758 +1.310099273540017 0.03430773930379715 +1.311615891040742 0.03339523395585203 +1.3121216901761856 0.033090909090909074 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/shrinkhub-coordinates-scale-3.0.dat b/v0.5.0/DuctAPE/theory_latex/figures/shrinkhub-coordinates-scale-3.0.dat new file mode 100644 index 00000000..2b15acd7 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/shrinkhub-coordinates-scale-3.0.dat @@ -0,0 +1,81 @@ +0.0 5.878304635907295e-17 +0.0005057991354436265 0.03816115095764165 +0.0020224166361686243 0.07644211311550012 +0.004547513987915548 0.11377792627665566 +0.008077197673590681 0.15069039196229772 +0.012606025176787381 0.18682555290633487 +0.018127013373751593 0.2219760721683986 +0.024631649300852786 0.25593031609824296 +0.03210990328095687 0.28847204031854423 +0.04055024438846109 0.3193784918495491 +0.049939658229145915 0.3484181314979697 +0.06026366700742716 0.37534792694816094 +0.07150635185006796 0.3999100006623836 +0.08365037735192689 0.421827358009646 +0.09667701830589667 0.44080201945398795 +0.1105661885758161 0.45650799788040547 +0.12529647206783595 0.4685683408774073 +0.1408451557524839 0.4766201378571916 +0.1571882646865093 0.47990582602572646 +0.17430059898050793 0.48 +0.1921557726553253 0.48 +0.2107262543273236 0.48 +0.2299834096597799 0.48 +0.24989754551495824 0.48 +0.27043795573877505 0.48 +0.2915729685074639 0.48 +0.31326999516323184 0.48 +0.33549558046360745 0.48 +0.3582154541670001 0.48 +0.3813945838749286 0.48 +0.40499722904943997 0.48 +0.42898699612242913 0.48 +0.45332689461188236 0.48 +0.4779793941585201 0.48 +0.5029064823948901 0.48 +0.5280697235576836 0.48 +0.5534303177528952 0.48 +0.5789491607824487 0.48 +0.6045869044400353 0.48 +0.6303040171831954 0.48 +0.6560608450880927 0.48 +0.6818176729929899 0.48 +0.7075347857361503 0.48 +0.7331725293937368 0.48 +0.7586913724232901 0.48 +0.7840519666185021 0.4633310082945511 +0.8092152077812954 0.4426488098582252 +0.8341422960176657 0.4228713386929751 +0.8587947955643033 0.4033117297121084 +0.8831346940537563 0.3840001424149645 +0.9071244611267455 0.36496635386942367 +0.9307271063012569 0.3462397127978269 +0.9539062360091854 0.32784909432337234 +0.9766261097125782 0.30982285544676924 +0.9988516950129538 0.29218879132179754 +1.0205487216687217 0.27497409239719517 +1.0416837344374104 0.2582053024909578 +1.0622241446612273 0.24190827786169453 +1.0821382805164055 0.22610814734015172 +1.1013954358488618 0.21082927358237766 +1.1199659175208603 0.19609521550427172 +1.1378210911956776 0.1819286919554444 +1.1549334254896764 0.16835154668839802 +1.1712765344237017 0.15538471467704348 +1.1868252181083496 0.1430481898364872 +1.2015555016003694 0.1313609941938646 +1.215444671870289 0.12034114855775102 +1.2284713128242586 0.1100056447313836 +1.2406153383261176 0.10037041931253018 +1.2518580231687584 0.09145032912041152 +1.2621820319470398 0.08325912828756296 +1.2715714457877245 0.07580944705195843 +1.2800117868952288 0.06911277228209985 +1.2874900408753327 0.06317942976509758 +1.293994676802434 0.05801856828505543 +1.2995156649993982 0.05363814551630906 +1.304044492502595 0.050044915753268485 +1.3075741761882702 0.047244419495785825 +1.310099273540017 0.04524097490610614 +1.311615891040742 0.04403767115057411 +1.3121216901761856 0.04363636363636361 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/shrinkhub-pressure-comp-160-duct-panels-80-hub-panels.tikz b/v0.5.0/DuctAPE/theory_latex/figures/shrinkhub-pressure-comp-160-duct-panels-80-hub-panels.tikz new file mode 100644 index 00000000..e6716c1e --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/shrinkhub-pressure-comp-160-duct-panels-80-hub-panels.tikz @@ -0,0 +1,1022 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={71.2mm}, height={57.15mm}, scaled x ticks={false}, xlabel={x}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.02979569460379161}, xmax={1.0297956946037916}, xticklabels={{$0.00$,$0.25$,$0.50$,$0.75$,$1.00$}}, xtick={{0.0,0.25,0.5,0.75,1.0}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_p$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, y dir={reverse}, ymajorgrids={false}, ymin={-2.458553403814545}, ymax={1.0840795233085543}, yticklabels={{$-2$,$-1$,$0$,$1$}}, ytick={{-2.0,-1.0,0.0,1.0}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={fbd76ba6-4dcf-4656-af44-d85cb71cc2eb}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.9998072590601808 0.9130244476271289 \\ + 0.9990365924934628 0.23862745524586448 \\ + 0.9974964476720136 0.23122359547322913 \\ + 0.995189199387516 0.2220514706034128 \\ + 0.992118405249592 0.21443456708545916 \\ + 0.9882888002002268 0.20235908936224534 \\ + 0.983706289212831 0.18160527057543463 \\ + 0.9783779381872002 0.15744576452474845 \\ + 0.9723119630544095 0.1316966082809673 \\ + 0.9655177171084428 0.10225107145205026 \\ + 0.9580056765840921 0.06936389319148428 \\ + 0.9497874245033623 0.032388217257348195 \\ + 0.9408756328152912 -0.0088273538032142 \\ + 0.9312840428567223 -0.05403329662910039 \\ + 0.9210274441641593 -0.10337035320020083 \\ + 0.9101216516693731 -0.1578061207517989 \\ + 0.8985834813139231 -0.21731459039418355 \\ + 0.886430724120194 -0.2818128278286345 \\ + 0.8736821187589292 -0.35163749777714726 \\ + 0.8603573226555583 -0.42708514936092157 \\ + 0.8464768816798722 -0.5085871105301976 \\ + 0.8320621984657812 -0.597309739524714 \\ + 0.8171354994100043 -0.694602491225411 \\ + 0.8017198004005767 -0.8005246456168971 \\ + 0.7858388713280188 -0.9142578195349009 \\ + 0.7695171994338877 -1.035550007267644 \\ + 0.752779951553226 -1.1612193238633157 \\ + 0.7356529353091255 -1.2897959793397633 \\ + 0.7181625593192437 -1.4223201121436504 \\ + 0.7003357924756294 -1.5615572500627186 \\ + 0.6822001223606455 -1.71177750297681 \\ + 0.66378351286311 -1.8675816869996935 \\ + 0.6451143610600054 -2.0193085073127106 \\ + 0.6262214534302449 -2.147505805923821 \\ + 0.6071339214680084 -2.2341617396799447 \\ + 0.5878811967640897 -2.2842054630221402 \\ + 0.568492965624517 -2.3113482580065634 \\ + 0.5489991232964206 -2.3283091078056306 \\ + 0.5294297278717283 -2.342765736404308 \\ + 0.5098149539397671 -2.353488471316277 \\ + 0.49018504606023283 -2.3582179852558944 \\ + 0.47057027212827157 -2.358290207763891 \\ + 0.4510008767035793 -2.3531968452821923 \\ + 0.4315070343754828 -2.3427903690881635 \\ + 0.4121188032359102 -2.3253054144823584 \\ + 0.3928660785319915 -2.3024738841320147 \\ + 0.37377854656975507 -2.273764713027108 \\ + 0.3548856389399946 -2.238175997559461 \\ + 0.3362164871368899 -2.1977801138196487 \\ + 0.3177998776393543 -2.1514310358278195 \\ + 0.2996642075243705 -2.0996294987338024 \\ + 0.2818374406807562 -2.0425778544536537 \\ + 0.26434706469087454 -1.979134315460196 \\ + 0.24722004844677403 -1.9101992237671648 \\ + 0.2304828005661122 -1.83680797861 \\ + 0.21416112867198114 -1.76019359421326 \\ + 0.19828019959942322 -1.6808758698748179 \\ + 0.18286450058999557 -1.5995055799933904 \\ + 0.1679378015342186 -1.5178589572403824 \\ + 0.15352311832012766 -1.434356870681774 \\ + 0.13964267734444172 -1.3484717712797134 \\ + 0.12631788124107088 -1.2613134832116493 \\ + 0.11356927587980603 -1.1752932308893822 \\ + 0.1014165186860769 -1.0916349774867156 \\ + 0.08987834833062683 -1.0122739796729636 \\ + 0.07897255583584062 -0.9365668564287764 \\ + 0.06871595714327763 -0.8632295373824319 \\ + 0.05912436718470873 -0.7905417116705269 \\ + 0.050212575496637685 -0.7124890386306906 \\ + 0.041994323415907975 -0.6315254183453993 \\ + 0.034482282891557275 -0.5552000596807105 \\ + 0.027688036945590577 -0.4899657285582162 \\ + 0.021622061812799798 -0.44586477661319335 \\ + 0.01629371078716904 -0.4092589765549439 \\ + 0.011711199799773253 -0.33763233304037876 \\ + 0.00788159475040795 -0.19223524225339483 \\ + 0.004810800612483984 0.0630761590117187 \\ + 0.002503552327986436 0.4111353836894761 \\ + 0.0009634075065372838 0.7412586407710007 \\ + 0.00019274093981927476 0.9594193676289355 \\ + 0.00019274093981927476 0.9838163272579001 \\ + 0.0009634075065372838 0.8161479671372525 \\ + 0.002503552327986436 0.5412894955016277 \\ + 0.004810800612483984 0.25260023866854786 \\ + 0.00788159475040795 0.047768238939045804 \\ + 0.011711199799773253 -0.05919661731495829 \\ + 0.01629371078716904 -0.10062476608641702 \\ + 0.021622061812799798 -0.11010557879243721 \\ + 0.027688036945590577 -0.1217415527728607 \\ + 0.034482282891557275 -0.14556054567633359 \\ + 0.041994323415907975 -0.17354694167260876 \\ + 0.050212575496637685 -0.20085513765375063 \\ + 0.05912436718470873 -0.2223995656320683 \\ + 0.06871595714327763 -0.23701910573909224 \\ + 0.07897255583584062 -0.24914199270906612 \\ + 0.08987834833062683 -0.2600648485823496 \\ + 0.1014165186860769 -0.27070900033309075 \\ + 0.11356927587980603 -0.281581098984687 \\ + 0.12631788124107088 -0.29173486935433024 \\ + 0.13964267734444172 -0.3008156068270793 \\ + 0.15352311832012766 -0.30795987562681115 \\ + 0.1679378015342186 -0.31314207828775453 \\ + 0.18286450058999557 -0.3171989986645438 \\ + 0.19828019959942322 -0.321400086788181 \\ + 0.21416112867198114 -0.3253070404414822 \\ + 0.2304828005661122 -0.3290375326959616 \\ + 0.24722004844677403 -0.33274364061856754 \\ + 0.26434706469087454 -0.33620164534872066 \\ + 0.2818374406807562 -0.3392521642048698 \\ + 0.2996642075243705 -0.34173857372471006 \\ + 0.3177998776393543 -0.3443169395633132 \\ + 0.3362164871368899 -0.3469940953359003 \\ + 0.3548856389399946 -0.34962332006278896 \\ + 0.37377854656975507 -0.3527089550228213 \\ + 0.3928660785319915 -0.35542832974321925 \\ + 0.4121188032359102 -0.35820776980473856 \\ + 0.4315070343754828 -0.3612796021412894 \\ + 0.4510008767035793 -0.3639724815754821 \\ + 0.47057027212827157 -0.3670318159170327 \\ + 0.49018504606023283 -0.370569355939419 \\ + 0.5098149539397671 -0.37487135828015616 \\ + 0.5294297278717283 -0.37950695670867707 \\ + 0.5489991232964206 -0.38553834827380307 \\ + 0.568492965624517 -0.3936886594940827 \\ + 0.5878811967640897 -0.4010243978684438 \\ + 0.6071339214680084 -0.40226832161026693 \\ + 0.6262214534302449 -0.391140348675606 \\ + 0.6451143610600054 -0.36435438385920205 \\ + 0.66378351286311 -0.3283559496131925 \\ + 0.6822001223606455 -0.2906963738385038 \\ + 0.7003357924756294 -0.25509381370928974 \\ + 0.7181625593192437 -0.2237332097207474 \\ + 0.7356529353091255 -0.19424503635184553 \\ + 0.752779951553226 -0.16484441067289013 \\ + 0.7695171994338877 -0.1345034699516463 \\ + 0.7858388713280188 -0.10358852588968115 \\ + 0.8017198004005767 -0.07363817191646183 \\ + 0.8171354994100043 -0.04476687374312749 \\ + 0.8320621984657812 -0.017563830676974534 \\ + 0.8464768816798722 0.007783388660145496 \\ + 0.8603573226555583 0.03187865337903106 \\ + 0.8736821187589292 0.05524920784273146 \\ + 0.886430724120194 0.0779521503121694 \\ + 0.8985834813139231 0.09993927349456477 \\ + 0.9101216516693731 0.1211872144406958 \\ + 0.9210274441641593 0.14134653255906926 \\ + 0.9312840428567223 0.1600870175239555 \\ + 0.9408756328152912 0.17786784577647818 \\ + 0.9497874245033623 0.19453078758070697 \\ + 0.9580056765840921 0.20959429622316839 \\ + 0.9655177171084428 0.22290019717314857 \\ + 0.9723119630544095 0.23473813321205195 \\ + 0.9783779381872002 0.24463732679507244 \\ + 0.983706289212831 0.2542653306787591 \\ + 0.9882888002002268 0.26179986734074223 \\ + 0.992118405249592 0.26209683906002057 \\ + 0.995189199387516 0.2586779383288449 \\ + 0.9974964476720136 0.257040655604976 \\ + 0.9990365924934628 0.25383093291360104 \\ + 0.9998072590601808 0.9147116635175986 \\ + } + ; + \addplot[color={rgb,1:red,0.6137;green,0.2441;blue,0.3275}, name path={fa2f1379-8e17-4e6d-9b85-5a93b1afd7b3}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.9998072590601808 0.9119516222342985 \\ + 0.9990365924934628 0.28760160723604233 \\ + 0.9974964476720136 0.28324883948525414 \\ + 0.995189199387516 0.2775766525914132 \\ + 0.992118405249592 0.27357721684099245 \\ + 0.9882888002002268 0.26572179037770405 \\ + 0.983706289212831 0.25023824297564146 \\ + 0.9783779381872002 0.23207693982377597 \\ + 0.9723119630544095 0.21296916254362586 \\ + 0.9655177171084428 0.1910813341288854 \\ + 0.9580056765840921 0.1667479791434734 \\ + 0.9497874245033623 0.13950492304829054 \\ + 0.9408756328152912 0.10935100353587446 \\ + 0.9312840428567223 0.07664812590197045 \\ + 0.9210274441641593 0.04141964556480904 \\ + 0.9101216516693731 0.00298837457627954 \\ + 0.8985834813139231 -0.03844070104599728 \\ + 0.886430724120194 -0.08261435046041976 \\ + 0.8736821187589292 -0.12963811090178545 \\ + 0.8603573226555583 -0.1795817163860094 \\ + 0.8464768816798722 -0.23263230453517547 \\ + 0.8320621984657812 -0.28957668540051995 \\ + 0.8171354994100043 -0.35133477423819226 \\ + 0.8017198004005767 -0.41780279202577764 \\ + 0.7858388713280188 -0.4882578083392546 \\ + 0.7695171994338877 -0.5625173099497209 \\ + 0.752779951553226 -0.6382794809576773 \\ + 0.7356529353091255 -0.7147201068992242 \\ + 0.7181625593192437 -0.7929828124759544 \\ + 0.7003357924756294 -0.8754534580877569 \\ + 0.6822001223606455 -0.9655284383249803 \\ + 0.66378351286311 -1.0595530112741645 \\ + 0.6451143610600054 -1.1509792586157737 \\ + 0.6262214534302449 -1.226508870714635 \\ + 0.6071339214680084 -1.274083485841306 \\ + 0.5878811967640897 -1.2977265357823269 \\ + 0.568492965624517 -1.3072451188784524 \\ + 0.5489991232964206 -1.3114465981418229 \\ + 0.5294297278717283 -1.3154862616288643 \\ + 0.5098149539397671 -1.3183269829396793 \\ + 0.49018504606023283 -1.318266741670885 \\ + 0.47057027212827157 -1.3161287304686478 \\ + 0.4510008767035793 -1.311499275261737 \\ + 0.4315070343754828 -1.3042524480455921 \\ + 0.4121188032359102 -1.2931824874468933 \\ + 0.3928660785319915 -1.279525817846586 \\ + 0.37377854656975507 -1.2629845627029885 \\ + 0.3548856389399946 -1.2429522920816503 \\ + 0.3362164871368899 -1.220957674260751 \\ + 0.3177998776393543 -1.1962996766016447 \\ + 0.2996642075243705 -1.1693972347372608 \\ + 0.2818374406807562 -1.1404280931861508 \\ + 0.26434706469087454 -1.1085625565466546 \\ + 0.24722004844677403 -1.0743312692936287 \\ + 0.2304828005661122 -1.0382896959049512 \\ + 0.21416112867198114 -1.0010772829093235 \\ + 0.19828019959942322 -0.9627593621497077 \\ + 0.18286450058999557 -0.9234511730636792 \\ + 0.1679378015342186 -0.8840807854045054 \\ + 0.15352311832012766 -0.8430739512010013 \\ + 0.13964267734444172 -0.7995927467201069 \\ + 0.12631788124107088 -0.7540620024728679 \\ + 0.11356927587980603 -0.7080080065636079 \\ + 0.1014165186860769 -0.6621598779244877 \\ + 0.08987834833062683 -0.61792726914963 \\ + 0.07897255583584062 -0.5747474960853736 \\ + 0.06871595714327763 -0.5315533925821292 \\ + 0.05912436718470873 -0.4868999232909914 \\ + 0.050212575496637685 -0.4357043980928439 \\ + 0.041994323415907975 -0.37988562996263475 \\ + 0.034482282891557275 -0.3258265482171212 \\ + 0.027688036945590577 -0.27920489315170394 \\ + 0.021622061812799798 -0.24893426111668582 \\ + 0.01629371078716904 -0.2234504013950298 \\ + 0.011711199799773253 -0.165552330552738 \\ + 0.00788159475040795 -0.04063411050601906 \\ + 0.004810800612483984 0.18359497209021047 \\ + 0.002503552327986436 0.4913682624646859 \\ + 0.0009634075065372838 0.7827673054961557 \\ + 0.00019274093981927476 0.9705836421835851 \\ + 0.00019274093981927476 0.9791442413215508 \\ + 0.0009634075065372838 0.8109183454472622 \\ + 0.002503552327986436 0.5449991619773225 \\ + 0.004810800612483984 0.26814101681809 \\ + 0.00788159475040795 0.07269512673074419 \\ + 0.011711199799773253 -0.028955163001790796 \\ + 0.01629371078716904 -0.06818317837834997 \\ + 0.021622061812799798 -0.0772138276703882 \\ + 0.027688036945590577 -0.08882532308371682 \\ + 0.034482282891557275 -0.11257627704972939 \\ + 0.041994323415907975 -0.14059558341741862 \\ + 0.050212575496637685 -0.1681125872963638 \\ + 0.05912436718470873 -0.1901251532873649 \\ + 0.06871595714327763 -0.2054495663389757 \\ + 0.07897255583584062 -0.21835999859552846 \\ + 0.08987834833062683 -0.23009748272099628 \\ + 0.1014165186860769 -0.24154670818241164 \\ + 0.11356927587980603 -0.25319359422429555 \\ + 0.12631788124107088 -0.264106343023063 \\ + 0.13964267734444172 -0.27393124264800806 \\ + 0.15352311832012766 -0.2818164813001154 \\ + 0.1679378015342186 -0.28773098105749084 \\ + 0.18286450058999557 -0.29249130359633235 \\ + 0.19828019959942322 -0.29734209510703713 \\ + 0.21416112867198114 -0.30185362688360273 \\ + 0.2304828005661122 -0.3061419830292573 \\ + 0.24722004844677403 -0.3103573148251888 \\ + 0.26434706469087454 -0.31428059270769104 \\ + 0.2818374406807562 -0.3177555968661392 \\ + 0.2996642075243705 -0.32062872171031076 \\ + 0.3177998776393543 -0.32354630353766867 \\ + 0.3362164871368899 -0.32651607399909 \\ + 0.3548856389399946 -0.3293943005076243 \\ + 0.37377854656975507 -0.3326784474039899 \\ + 0.3928660785319915 -0.33555848255979215 \\ + 0.4121188032359102 -0.33845460982119224 \\ + 0.4315070343754828 -0.341595820673821 \\ + 0.4510008767035793 -0.3443203294343813 \\ + 0.47057027212827157 -0.34736236079926486 \\ + 0.49018504606023283 -0.3508314258042877 \\ + 0.5098149539397671 -0.3550086372534331 \\ + 0.5294297278717283 -0.35946791005574164 \\ + 0.5489991232964206 -0.36525402522410744 \\ + 0.568492965624517 -0.3730764923692753 \\ + 0.5878811967640897 -0.3800416522914436 \\ + 0.6071339214680084 -0.38094978097363863 \\ + 0.6262214534302449 -0.36962022464224 \\ + 0.6451143610600054 -0.34282945058427083 \\ + 0.66378351286311 -0.3069369477852948 \\ + 0.6822001223606455 -0.2693832980680113 \\ + 0.7003357924756294 -0.2338291991624779 \\ + 0.7181625593192437 -0.2024215283862445 \\ + 0.7356529353091255 -0.17282903512716286 \\ + 0.752779951553226 -0.14329874447390645 \\ + 0.7695171994338877 -0.11282476316941814 \\ + 0.7858388713280188 -0.08177066244412368 \\ + 0.8017198004005767 -0.051647689428272026 \\ + 0.8171354994100043 -0.022568365437504845 \\ + 0.8320621984657812 0.004891171416777196 \\ + 0.8464768816798722 0.030549825882731807 \\ + 0.8603573226555583 0.05500022881207611 \\ + 0.8736821187589292 0.07875829819023505 \\ + 0.886430724120194 0.10187985757886431 \\ + 0.8985834813139231 0.1243181851810512 \\ + 0.9101216516693731 0.14605096085770586 \\ + 0.9210274441641593 0.16673986557936815 \\ + 0.9312840428567223 0.18606745028026772 \\ + 0.9408756328152912 0.20448245756139272 \\ + 0.9497874245033623 0.221834817476652 \\ + 0.9580056765840921 0.23766418454980476 \\ + 0.9655177171084428 0.251825804719811 \\ + 0.9723119630544095 0.26460748676980717 \\ + 0.9783779381872002 0.2755663215154325 \\ + 0.983706289212831 0.2863107198990602 \\ + 0.9882888002002268 0.29510393866948115 \\ + 0.992118405249592 0.2970554796925784 \\ + 0.995189199387516 0.2955717203684959 \\ + 0.9974964476720136 0.2959069926028588 \\ + 0.9990365924934628 0.2950368148969772 \\ + 0.9998072590601808 0.912806227649998 \\ + } + ; + \addplot[color={rgb,1:red,0.4745;green,0.1627;blue,0.251}, name path={25fa81f5-f7d5-4cb7-b2a2-5345e5429d0c}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.9998072590601808 0.9128384572231958 \\ + 0.9990365924934628 0.31569178863190206 \\ + 0.9974964476720136 0.3129242580280507 \\ + 0.995189199387516 0.3090305568294285 \\ + 0.992118405249592 0.3068395867209003 \\ + 0.9882888002002268 0.30108889811576844 \\ + 0.983706289212831 0.28824186266205687 \\ + 0.9783779381872002 0.27305388042542833 \\ + 0.9723119630544095 0.25719523861526394 \\ + 0.9655177171084428 0.23896491319024027 \\ + 0.9580056765840921 0.21871989630788513 \\ + 0.9497874245033623 0.19606977678604998 \\ + 0.9408756328152912 0.17106463385927928 \\ + 0.9312840428567223 0.14409333081181852 \\ + 0.9210274441641593 0.11522873961032298 \\ + 0.9101216516693731 0.08390171702748273 \\ + 0.8985834813139231 0.05036218690905814 \\ + 0.886430724120194 0.01490010189433788 \\ + 0.8736821187589292 -0.022526290263070514 \\ + 0.8603573226555583 -0.06192746448896291 \\ + 0.8464768816798722 -0.10342301501601492 \\ + 0.8320621984657812 -0.14766784021193824 \\ + 0.8171354994100043 -0.19542561678949055 \\ + 0.8017198004005767 -0.24655085397837495 \\ + 0.7858388713280188 -0.3003756740189183 \\ + 0.7695171994338877 -0.3567348376170456 \\ + 0.752779951553226 -0.413663461860708 \\ + 0.7356529353091255 -0.4705336545388472 \\ + 0.7181625593192437 -0.5284305201531341 \\ + 0.7003357924756294 -0.5894750586641817 \\ + 0.6822001223606455 -0.6566027925290876 \\ + 0.66378351286311 -0.7267940143415419 \\ + 0.6451143610600054 -0.7947025694112051 \\ + 0.6262214534302449 -0.8494967160128593 \\ + 0.6071339214680084 -0.8815397900409736 \\ + 0.5878811967640897 -0.8945284955422366 \\ + 0.568492965624517 -0.8967634819561945 \\ + 0.5489991232964206 -0.8955559643155371 \\ + 0.5294297278717283 -0.8951246083005218 \\ + 0.5098149539397671 -0.8945903901781438 \\ + 0.49018504606023283 -0.8925412490423752 \\ + 0.47057027212827157 -0.8896333132056433 \\ + 0.4510008767035793 -0.8855150824628193 \\ + 0.4315070343754828 -0.8800738753690149 \\ + 0.4121188032359102 -0.8723177069217567 \\ + 0.3928660785319915 -0.8632478653945042 \\ + 0.37377854656975507 -0.8526117475216943 \\ + 0.3548856389399946 -0.8398986217381834 \\ + 0.3362164871368899 -0.8263402086850131 \\ + 0.3177998776393543 -0.8113329672404301 \\ + 0.2996642075243705 -0.7951794499752409 \\ + 0.2818374406807562 -0.7779718439476213 \\ + 0.26434706469087454 -0.7589455909671858 \\ + 0.24722004844677403 -0.7384460689757744 \\ + 0.2304828005661122 -0.7168283794294958 \\ + 0.21416112867198114 -0.6945159839729793 \\ + 0.19828019959942322 -0.6714422101509332 \\ + 0.18286450058999557 -0.6475797987951357 \\ + 0.1679378015342186 -0.6236004341017358 \\ + 0.15352311832012766 -0.5980280569754617 \\ + 0.13964267734444172 -0.569995980458587 \\ + 0.12631788124107088 -0.53973489624996 \\ + 0.11356927587980603 -0.5084707332441116 \\ + 0.1014165186860769 -0.4767705545345753 \\ + 0.08987834833062683 -0.4458430552385093 \\ + 0.07897255583584062 -0.4151671331789195 \\ + 0.06871595714327763 -0.38376648150177695 \\ + 0.05912436718470873 -0.3503075986113784 \\ + 0.050212575496637685 -0.3101147880066366 \\ + 0.041994323415907975 -0.2648507497390076 \\ + 0.034482282891557275 -0.22033805386586414 \\ + 0.027688036945590577 -0.18186130431363212 \\ + 0.021622061812799798 -0.15778233562171273 \\ + 0.01629371078716904 -0.13749382763482387 \\ + 0.011711199799773253 -0.08628635508516824 \\ + 0.00788159475040795 0.02851653635716278 \\ + 0.004810800612483984 0.23754626182169902 \\ + 0.002503552327986436 0.5260600623414262 \\ + 0.0009634075065372838 0.7995521668849559 \\ + 0.00019274093981927476 0.9743902004623878 \\ + 0.00019274093981927476 0.9777761582866221 \\ + 0.0009634075065372838 0.8119387878416203 \\ + 0.002503552327986436 0.5525857517062301 \\ + 0.004810800612483984 0.2829891579842835 \\ + 0.00788159475040795 0.0926211185640291 \\ + 0.011711199799773253 -0.006619983096291637 \\ + 0.01629371078716904 -0.04524962121163889 \\ + 0.021622061812799798 -0.05458731654700588 \\ + 0.027688036945590577 -0.06659270728553257 \\ + 0.034482282891557275 -0.09058393587220381 \\ + 0.041994323415907975 -0.1188311396833972 \\ + 0.050212575496637685 -0.14663645699061156 \\ + 0.05912436718470873 -0.1690663010313478 \\ + 0.06871595714327763 -0.18493136604711724 \\ + 0.07897255583584062 -0.19841286303050665 \\ + 0.08987834833062683 -0.2107217057274844 \\ + 0.1014165186860769 -0.22272334838764563 \\ + 0.11356927587980603 -0.23489364766064158 \\ + 0.12631788124107088 -0.24631259222406032 \\ + 0.13964267734444172 -0.25662890965841156 \\ + 0.15352311832012766 -0.26499962114254694 \\ + 0.1679378015342186 -0.2713911483329783 \\ + 0.18286450058999557 -0.2766078432430106 \\ + 0.19828019959942322 -0.2818790245469336 \\ + 0.21416112867198114 -0.28678094730968495 \\ + 0.2304828005661122 -0.29142903298837064 \\ + 0.24722004844677403 -0.2959724694072303 \\ + 0.26434706469087454 -0.3001954509325 \\ + 0.2818374406807562 -0.3039439528281651 \\ + 0.2996642075243705 -0.3070664357270283 \\ + 0.3177998776393543 -0.31020308672355745 \\ + 0.3362164871368899 -0.3133622984311921 \\ + 0.3548856389399946 -0.31640232910530264 \\ + 0.37377854656975507 -0.31981629090820185 \\ + 0.3928660785319915 -0.32280232715275603 \\ + 0.4121188032359102 -0.3257767690324842 \\ + 0.4315070343754828 -0.32896652814106986 \\ + 0.4510008767035793 -0.3317160171848488 \\ + 0.47057027212827157 -0.3347523567410928 \\ + 0.49018504606023283 -0.3381837066713518 \\ + 0.5098149539397671 -0.3422879831744452 \\ + 0.5294297278717283 -0.3466422788663943 \\ + 0.5489991232964206 -0.3522803658177147 \\ + 0.568492965624517 -0.3599032300412157 \\ + 0.5878811967640897 -0.36664287459616096 \\ + 0.6071339214680084 -0.3673492025207705 \\ + 0.6262214534302449 -0.3559049364440885 \\ + 0.6451143610600054 -0.32912612050867884 \\ + 0.66378351286311 -0.29331708322723715 \\ + 0.6822001223606455 -0.25584778069976744 \\ + 0.7003357924756294 -0.22034245680243436 \\ + 0.7181625593192437 -0.18892404855269995 \\ + 0.7356529353091255 -0.15928581218345772 \\ + 0.752779951553226 -0.1296951305129148 \\ + 0.7695171994338877 -0.09916006803880051 \\ + 0.7858388713280188 -0.06804251578947729 \\ + 0.8017198004005767 -0.0378366003170707 \\ + 0.8171354994100043 -0.008653796997827312 \\ + 0.8320621984657812 0.018937729234532186 \\ + 0.8464768816798722 0.04476064712639549 \\ + 0.8603573226555583 0.06940026149090617 \\ + 0.8736821187589292 0.09336515398952461 \\ + 0.886430724120194 0.11671009803111776 \\ + 0.8985834813139231 0.139389017551385 \\ + 0.9101216516693731 0.1613799416287871 \\ + 0.9210274441641593 0.1823510633664821 \\ + 0.9312840428567223 0.20199234379661835 \\ + 0.9408756328152912 0.22074563454094298 \\ + 0.9497874245033623 0.23846534855997548 \\ + 0.9580056765840921 0.2547034353595726 \\ + 0.9655177171084428 0.2693224888532054 \\ + 0.9723119630544095 0.2826082859142902 \\ + 0.9783779381872002 0.2941336992297906 \\ + 0.983706289212831 0.305470608605916 \\ + 0.9882888002002268 0.31493227242943167 \\ + 0.992118405249592 0.3177774005248376 \\ + 0.995189199387516 0.31734060765201044 \\ + 0.9974964476720136 0.3187294331796757 \\ + 0.9990365924934628 0.31907699789098887 \\ + 0.9998072590601808 0.9132292267046669 \\ + } + ; + \addplot[color={rgb,1:red,0.3353;green,0.0814;blue,0.1745}, name path={80698304-cfbb-424f-95cb-ea276eb98513}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.9998072590601808 0.9136418435487556 \\ + 0.9990365924934628 0.33009019440154175 \\ + 0.9974964476720136 0.32808229318466686 \\ + 0.995189199387516 0.3250314169355356 \\ + 0.992118405249592 0.3236887387165178 \\ + 0.9882888002002268 0.3189251800403321 \\ + 0.983706289212831 0.3073192183481488 \\ + 0.9783779381872002 0.29352425418211026 \\ + 0.9723119630544095 0.27917678104287524 \\ + 0.9655177171084428 0.2626380999053062 \\ + 0.9580056765840921 0.24427176872811063 \\ + 0.9497874245033623 0.22371854737728025 \\ + 0.9408756328152912 0.2010476650834604 \\ + 0.9312840428567223 0.1766546514211791 \\ + 0.9210274441641593 0.15062942660902168 \\ + 0.9101216516693731 0.12244708336851928 \\ + 0.8985834813139231 0.09237060798880814 \\ + 0.886430724120194 0.06069883578609825 \\ + 0.8736821187589292 0.027411559705156963 \\ + 0.8603573226555583 -0.0074823594715736075 \\ + 0.8464768816798722 -0.04407905702923687 \\ + 0.8320621984657812 -0.08298018400386442 \\ + 0.8171354994100043 -0.12488516047308584 \\ + 0.8017198004005767 -0.1696354215417828 \\ + 0.7858388713280188 -0.21659064785166637 \\ + 0.7695171994338877 -0.2655924414017756 \\ + 0.752779951553226 -0.3148194264727169 \\ + 0.7356529353091255 -0.3637188899154633 \\ + 0.7181625593192437 -0.41333605901531634 \\ + 0.7003357924756294 -0.4656626431933979 \\ + 0.6822001223606455 -0.5234223689369903 \\ + 0.66378351286311 -0.5838576612266502 \\ + 0.6451143610600054 -0.6421245066753665 \\ + 0.6262214534302449 -0.6884316307666904 \\ + 0.6071339214680084 -0.714162257810588 \\ + 0.5878811967640897 -0.7228669966879124 \\ + 0.568492965624517 -0.7222100426817437 \\ + 0.5489991232964206 -0.7188791449123904 \\ + 0.5294297278717283 -0.7167108092078021 \\ + 0.5098149539397671 -0.714908268571891 \\ + 0.49018504606023283 -0.7121946523913056 \\ + 0.47057027212827157 -0.7091637614637298 \\ + 0.4510008767035793 -0.7054946723002071 \\ + 0.4315070343754828 -0.7010799238449643 \\ + 0.4121188032359102 -0.6950125508771232 \\ + 0.3928660785319915 -0.688185386047748 \\ + 0.37377854656975507 -0.6803523148833464 \\ + 0.3548856389399946 -0.6710278699252252 \\ + 0.3362164871368899 -0.6613034105681674 \\ + 0.3177998776393543 -0.6506010308878216 \\ + 0.2996642075243705 -0.6391610589172692 \\ + 0.2818374406807562 -0.6270294408261037 \\ + 0.26434706469087454 -0.6134619509286452 \\ + 0.24722004844677403 -0.5987245171325111 \\ + 0.2304828005661122 -0.583091267924917 \\ + 0.21416112867198114 -0.566902490195631 \\ + 0.19828019959942322 -0.5500467726404819 \\ + 0.18286450058999557 -0.5324502583832416 \\ + 0.1679378015342186 -0.5146918651480035 \\ + 0.15352311832012766 -0.4953512646863638 \\ + 0.13964267734444172 -0.473564527157863 \\ + 0.12631788124107088 -0.44949453245912396 \\ + 0.11356927587980603 -0.42425216225964735 \\ + 0.1014165186860769 -0.3983446526700254 \\ + 0.08987834833062683 -0.3729016318052585 \\ + 0.07897255583584062 -0.3474234769582809 \\ + 0.06871595714327763 -0.3209750795168793 \\ + 0.05912436718470873 -0.2922721361813385 \\ + 0.050212575496637685 -0.256812737206797 \\ + 0.041994323415907975 -0.21615024730908705 \\ + 0.034482282891557275 -0.17586954550086964 \\ + 0.027688036945590577 -0.1410939577691137 \\ + 0.021622061812799798 -0.11997147436959832 \\ + 0.01629371078716904 -0.10232820095383954 \\ + 0.011711199799773253 -0.05450954384449247 \\ + 0.00788159475040795 0.055400129991551195 \\ + 0.004810800612483984 0.2575171585753546 \\ + 0.002503552327986436 0.5378469695188368 \\ + 0.0009634075065372838 0.8043448787414031 \\ + 0.00019274093981927476 0.9750278752271093 \\ + 0.00019274093981927476 0.9781371494654846 \\ + 0.0009634075065372838 0.8152551679278246 \\ + 0.002503552327986436 0.5602107302368521 \\ + 0.004810800612483984 0.29463588032184107 \\ + 0.00788159475040795 0.10662916982419768 \\ + 0.011711199799773253 0.008149240861788365 \\ + 0.01629371078716904 -0.030662370475591505 \\ + 0.021622061812799798 -0.04057466118715136 \\ + 0.027688036945590577 -0.0530897144006246 \\ + 0.034482282891557275 -0.07742376856943989 \\ + 0.041994323415907975 -0.10595815367484085 \\ + 0.050212575496637685 -0.13405165630855853 \\ + 0.05912436718470873 -0.1568186486944878 \\ + 0.06871595714327763 -0.17307153344933357 \\ + 0.07897255583584062 -0.18694182316270713 \\ + 0.08987834833062683 -0.19962672335900122 \\ + 0.1014165186860769 -0.21198352708812052 \\ + 0.11356927587980603 -0.22448456622970236 \\ + 0.12631788124107088 -0.23621822524108715 \\ + 0.13964267734444172 -0.24683587055826162 \\ + 0.15352311832012766 -0.25550048363228406 \\ + 0.1679378015342186 -0.26217781598803747 \\ + 0.18286450058999557 -0.2676659463450617 \\ + 0.19828019959942322 -0.27318609372473057 \\ + 0.21416112867198114 -0.2783183214722551 \\ + 0.2304828005661122 -0.2831780331344995 \\ + 0.24722004844677403 -0.28791416579274487 \\ + 0.26434706469087454 -0.292312960379439 \\ + 0.2818374406807562 -0.296221814241562 \\ + 0.2996642075243705 -0.2994905041297604 \\ + 0.3177998776393543 -0.3027559194424392 \\ + 0.3362164871368899 -0.3060269466274206 \\ + 0.3548856389399946 -0.3091630608118945 \\ + 0.37377854656975507 -0.31265504494192853 \\ + 0.3928660785319915 -0.31570567890890877 \\ + 0.4121188032359102 -0.3187292129865851 \\ + 0.4315070343754828 -0.3219514737720661 \\ + 0.4510008767035793 -0.3247203848455258 \\ + 0.47057027212827157 -0.32775918569301443 \\ + 0.49018504606023283 -0.3311753564315931 \\ + 0.5098149539397671 -0.3352451142106334 \\ + 0.5294297278717283 -0.33954738632887427 \\ + 0.5489991232964206 -0.3451099362780774 \\ + 0.568492965624517 -0.35262914269784673 \\ + 0.5878811967640897 -0.3592512829345471 \\ + 0.6071339214680084 -0.3598536848593741 \\ + 0.6262214534302449 -0.34835394077933657 \\ + 0.6451143610600054 -0.3215897055334873 \\ + 0.66378351286311 -0.28583476239109484 \\ + 0.6822001223606455 -0.24842016985050597 \\ + 0.7003357924756294 -0.2129501941020444 \\ + 0.7181625593192437 -0.18153475044293388 \\ + 0.7356529353091255 -0.15188063515901384 \\ + 0.752779951553226 -0.12226644014496335 \\ + 0.7695171994338877 -0.09170788547329534 \\ + 0.7858388713280188 -0.06056596092651678 \\ + 0.8017198004005767 -0.0303254994055957 \\ + 0.8171354994100043 -0.0010974731028803308 \\ + 0.8320621984657812 0.026554204531895942 \\ + 0.8464768816798722 0.05245413963916434 \\ + 0.8603573226555583 0.0771835610328363 \\ + 0.8736821187589292 0.10124699037155538 \\ + 0.886430724120194 0.1246985523531311 \\ + 0.8985834813139231 0.1474924333789449 \\ + 0.9101216516693731 0.16960676037238476 \\ + 0.9210274441641593 0.19071311686326764 \\ + 0.9312840428567223 0.2105052991941304 \\ + 0.9408756328152912 0.22942132420485029 \\ + 0.9497874245033623 0.24731784806052526 \\ + 0.9580056765840921 0.26375318111900947 \\ + 0.9655177171084428 0.27859357930936157 \\ + 0.9723119630544095 0.29212346695883173 \\ + 0.9783779381872002 0.30392376009047206 \\ + 0.983706289212831 0.3155467719214615 \\ + 0.9882888002002268 0.3253317410100425 \\ + 0.992118405249592 0.32861510168587915 \\ + 0.995189199387516 0.3286928348650049 \\ + 0.9974964476720136 0.33059497669852655 \\ + 0.9990365924934628 0.331528453830926 \\ + 0.9998072590601808 0.913804344435638 \\ + } + ; + \addplot[color={rgb,1:red,0.1961;green,0.0;blue,0.098}, name path={16b9b989-0c02-4274-a48e-9a4b61932432}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.9998072590601808 0.9139737152862292 \\ + 0.9990365924934628 0.3349627877414413 \\ + 0.9974964476720136 0.33320201219497236 \\ + 0.995189199387516 0.33042374280228815 \\ + 0.992118405249592 0.3293538707537772 \\ + 0.9882888002002268 0.32490792392323997 \\ + 0.983706289212831 0.3137023777822394 \\ + 0.9783779381872002 0.3003558256436425 \\ + 0.9723119630544095 0.28649296561989646 \\ + 0.9655177171084428 0.27049530075024264 \\ + 0.9580056765840921 0.25272787271906316 \\ + 0.9497874245033623 0.23284098807691211 \\ + 0.9408756328152912 0.21090931185679207 \\ + 0.9312840428567223 0.1873296186781439 \\ + 0.9210274441641593 0.162196424157253 \\ + 0.9101216516693731 0.13499818380261475 \\ + 0.8985834813139231 0.1060009415170533 \\ + 0.886430724120194 0.07550521087526496 \\ + 0.8736821187589292 0.04349656316101891 \\ + 0.8603573226555583 0.009988908158487964 \\ + 0.8464768816798722 -0.02510749254203115 \\ + 0.8320621984657812 -0.06237838245656224 \\ + 0.8171354994100043 -0.10250386137739587 \\ + 0.8017198004005767 -0.14532230111296895 \\ + 0.7858388713280188 -0.19020287248620016 \\ + 0.7695171994338877 -0.23698972770693816 \\ + 0.752779951553226 -0.28390637221833726 \\ + 0.7356529353091255 -0.3304227864467879 \\ + 0.7181625593192437 -0.377570648789995 \\ + 0.7003357924756294 -0.4273005920203852 \\ + 0.6822001223606455 -0.48227029573081115 \\ + 0.66378351286311 -0.5398029427551834 \\ + 0.6451143610600054 -0.5952083660086698 \\ + 0.6262214534302449 -0.6390131549362785 \\ + 0.6071339214680084 -0.6629100808334865 \\ + 0.5878811967640897 -0.6704016270855966 \\ + 0.568492965624517 -0.6689557925199769 \\ + 0.5489991232964206 -0.6650702023603197 \\ + 0.5294297278717283 -0.6624661566758276 \\ + 0.5098149539397671 -0.6603733316553149 \\ + 0.49018504606023283 -0.6575568346826188 \\ + 0.47057027212827157 -0.6545919786579688 \\ + 0.4510008767035793 -0.6511670084391761 \\ + 0.4315070343754828 -0.6471753636978024 \\ + 0.4121188032359102 -0.641734341213327 \\ + 0.3928660785319915 -0.635702322475195 \\ + 0.37377854656975507 -0.6288329777186115 \\ + 0.3548856389399946 -0.6206459711109271 \\ + 0.3362164871368899 -0.6121882768457294 \\ + 0.3177998776393543 -0.6028873816274127 \\ + 0.2996642075243705 -0.5929630697015456 \\ + 0.2818374406807562 -0.5824459690409387 \\ + 0.26434706469087454 -0.5705966393551414 \\ + 0.24722004844677403 -0.5576568368754162 \\ + 0.2304828005661122 -0.5438767046487569 \\ + 0.21416112867198114 -0.529572536767507 \\ + 0.19828019959942322 -0.5146206577344592 \\ + 0.18286450058999557 -0.49893476312542506 \\ + 0.1679378015342186 -0.48306815238120926 \\ + 0.15352311832012766 -0.4656181952587015 \\ + 0.13964267734444172 -0.4457230779610075 \\ + 0.12631788124107088 -0.4235272913277779 \\ + 0.11356927587980603 -0.40010981940547885 \\ + 0.1014165186860769 -0.3759620687433698 \\ + 0.08987834833062683 -0.35219257278530947 \\ + 0.07897255583584062 -0.32830947072091377 \\ + 0.06871595714327763 -0.3033909316857699 \\ + 0.05912436718470873 -0.2761679423285577 \\ + 0.050212575496637685 -0.24218759873417728 \\ + 0.041994323415907975 -0.20297304902537183 \\ + 0.034482282891557275 -0.16404638532568905 \\ + 0.027688036945590577 -0.13049429849979077 \\ + 0.021622061812799798 -0.11042402750312785 \\ + 0.01629371078716904 -0.09379684440259672 \\ + 0.011711199799773253 -0.047235118330920534 \\ + 0.00788159475040795 0.06101542279791172 \\ + 0.004810800612483984 0.2610507661197501 \\ + 0.002503552327986436 0.5392502367592592 \\ + 0.0009634075065372838 0.804288945849411 \\ + 0.00019274093981927476 0.9746630202254714 \\ + 0.00019274093981927476 0.9787582421416429 \\ + 0.0009634075065372838 0.8176784242273953 \\ + 0.002503552327986436 0.564531136994624 \\ + 0.004810800612483984 0.3004515674224538 \\ + 0.00788159475040795 0.11312093709944582 \\ + 0.011711199799773253 0.014665907462115158 \\ + 0.01629371078716904 -0.024445861293519666 \\ + 0.021622061812799798 -0.03475613754899687 \\ + 0.027688036945590577 -0.04759540523821726 \\ + 0.034482282891557275 -0.07215601967174412 \\ + 0.041994323415907975 -0.10087474131478857 \\ + 0.050212575496637685 -0.12913826772029569 \\ + 0.05912436718470873 -0.15208281090132236 \\ + 0.06871595714327763 -0.1685233668511097 \\ + 0.07897255583584062 -0.18257401095973935 \\ + 0.08987834833062683 -0.19542827180291367 \\ + 0.1014165186860769 -0.20794161119569576 \\ + 0.11356927587980603 -0.22058603696340517 \\ + 0.12631788124107088 -0.2324538579609059 \\ + 0.13964267734444172 -0.24319800721985785 \\ + 0.15352311832012766 -0.2519841311176747 \\ + 0.1679378015342186 -0.2587780848868977 \\ + 0.18286450058999557 -0.26437593131262616 \\ + 0.19828019959942322 -0.269996181054337 \\ + 0.21416112867198114 -0.2752205315877345 \\ + 0.2304828005661122 -0.28016457199365896 \\ + 0.24722004844677403 -0.284977308427387 \\ + 0.26434706469087454 -0.2894458643386557 \\ + 0.2818374406807562 -0.29341826561372497 \\ + 0.2996642075243705 -0.29674486078879814 \\ + 0.3177998776393543 -0.3000614256288503 \\ + 0.3362164871368899 -0.30337710102385973 \\ + 0.3548856389399946 -0.30655186643793764 \\ + 0.37377854656975507 -0.3100757227649735 \\ + 0.3928660785319915 -0.31315317064862924 \\ + 0.4121188032359102 -0.3161977549087578 \\ + 0.4315070343754828 -0.31943495302046565 \\ + 0.4510008767035793 -0.32221398539684687 \\ + 0.47057027212827157 -0.3252567332378795 \\ + 0.49018504606023283 -0.3286704681572683 \\ + 0.5098149539397671 -0.33273083387292623 \\ + 0.5294297278717283 -0.3370174456032107 \\ + 0.5489991232964206 -0.342555957357064 \\ + 0.568492965624517 -0.3500411468062232 \\ + 0.5878811967640897 -0.3566244066430704 \\ + 0.6071339214680084 -0.3571928220059113 \\ + 0.6262214534302449 -0.3456763332430155 \\ + 0.6451143610600054 -0.31892018699521407 \\ + 0.66378351286311 -0.2831872718118993 \\ + 0.6822001223606455 -0.24579485275934276 \\ + 0.7003357924756294 -0.21034014853454863 \\ + 0.7181625593192437 -0.17892851294067036 \\ + 0.7356529353091255 -0.14927155874029263 \\ + 0.752779951553226 -0.11965185167617731 \\ + 0.7695171994338877 -0.08908781665988363 \\ + 0.7858388713280188 -0.057940131429308206 \\ + 0.8017198004005767 -0.027690373715896888 \\ + 0.8171354994100043 0.001550643063083612 \\ + 0.8320621984657812 0.029220475267670465 \\ + 0.8464768816798722 0.055144381778770124 \\ + 0.8603573226555583 0.07990214026686027 \\ + 0.8736821187589292 0.10399683317904973 \\ + 0.886430724120194 0.12748234157417515 \\ + 0.8985834813139231 0.1503129258611683 \\ + 0.9101216516693731 0.17246672912134708 \\ + 0.9210274441641593 0.1936164929863532 \\ + 0.9312840428567223 0.2134573191136191 \\ + 0.9408756328152912 0.23242586531030018 \\ + 0.9497874245033623 0.2503795369145615 \\ + 0.9580056765840921 0.26687880982761303 \\ + 0.9655177171084428 0.28179115951832145 \\ + 0.9723119630544095 0.2954004925728212 \\ + 0.9783779381872002 0.30729044041991904 \\ + 0.983706289212831 0.31900653257252276 \\ + 0.9882888002002268 0.32889687368520193 \\ + 0.992118405249592 0.33232444560191343 \\ + 0.995189199387516 0.33257179691293326 \\ + 0.9974964476720136 0.3346423119573241 \\ + 0.9990365924934628 0.3357667269453678 \\ + 0.9998072590601808 0.9140612263636053 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={60e4a466-b3da-400f-b57c-464ecf07b784}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.9998072590601808 0.9139787493185914 \\ + 0.9990365924934628 0.3350308611962586 \\ + 0.9974964476720136 0.33327348593683603 \\ + 0.995189199387516 0.33049895771267346 \\ + 0.992118405249592 0.32943282147137354 \\ + 0.9882888002002268 0.32499122558429605 \\ + 0.983706289212831 0.3137911714646998 \\ + 0.9783779381872002 0.3004507648265302 \\ + 0.9723119630544095 0.286594537331177 \\ + 0.9655177171084428 0.2706042698570025 \\ + 0.9580056765840921 0.25284502127652375 \\ + 0.9497874245033623 0.23296722666205116 \\ + 0.9408756328152912 0.2110456219798158 \\ + 0.9312840428567223 0.18747699445925592 \\ + 0.9210274441641593 0.16235591833269913 \\ + 0.9101216516693731 0.13517102803154168 \\ + 0.8985834813139231 0.10618840366398796 \\ + 0.886430724120194 0.07570857586711066 \\ + 0.8736821187589292 0.04371718922629475 \\ + 0.8603573226555583 0.010228216558278325 \\ + 0.8464768816798722 -0.024847999187633585 \\ + 0.8320621984657812 -0.06209699051491713 \\ + 0.8171354994100043 -0.10219860057710961 \\ + 0.8017198004005767 -0.1449911670440518 \\ + 0.7858388713280188 -0.18984399692233933 \\ + 0.7695171994338877 -0.23660128308279305 \\ + 0.752779951553226 -0.28348714470354586 \\ + 0.7356529353091255 -0.32997187178683074 \\ + 0.7181625593192437 -0.3770869605805336 \\ + 0.7003357924756294 -0.4267824922228374 \\ + 0.6822001223606455 -0.4817152625714949 \\ + 0.66378351286311 -0.539209554575012 \\ + 0.6451143610600054 -0.5945772802655254 \\ + 0.6262214534302449 -0.6383493014535375 \\ + 0.6071339214680084 -0.6622225282915233 \\ + 0.5878811967640897 -0.6696987703741986 \\ + 0.568492965624517 -0.6682433775250436 \\ + 0.5489991232964206 -0.6643514233735064 \\ + 0.5294297278717283 -0.6617426707549083 \\ + 0.5098149539397671 -0.6596471532817318 \\ + 0.49018504606023283 -0.6568305376666148 \\ + 0.47057027212827157 -0.6538678870481391 \\ + 0.4510008767035793 -0.6504475612803851 \\ + 0.4315070343754828 -0.6464630014347288 \\ + 0.4121188032359102 -0.641031809519488 \\ + 0.3928660785319915 -0.6350118939127991 \\ + 0.37377854656975507 -0.6281569017820552 \\ + 0.3548856389399946 -0.6199865422927875 \\ + 0.3362164871368899 -0.6115471853037084 \\ + 0.3177998776393543 -0.602266367043558 \\ + 0.2996642075243705 -0.5923635831983323 \\ + 0.2818374406807562 -0.5818692445069138 \\ + 0.26434706469087454 -0.5700439553574101 \\ + 0.24722004844677403 -0.5571291446752593 \\ + 0.2304828005661122 -0.5433746354271214 \\ + 0.21416112867198114 -0.5290964074703306 \\ + 0.19828019959942322 -0.5141706251258982 \\ + 0.18286450058999557 -0.4985108250186616 \\ + 0.1679378015342186 -0.48266998457772603 \\ + 0.15352311832012766 -0.4652457006456705 \\ + 0.13964267734444172 -0.44537618658468303 \\ + 0.12631788124107088 -0.4232057042652737 \\ + 0.11356927587980603 -0.3998128468703759 \\ + 0.1014165186860769 -0.37568883683314613 \\ + 0.08987834833062683 -0.351941967331723 \\ + 0.07897255583584062 -0.32808049524948624 \\ + 0.06871595714327763 -0.3031827740256616 \\ + 0.05912436718470873 -0.2759799950942996 \\ + 0.050212575496637685 -0.24201983841607966 \\ + 0.041994323415907975 -0.20282510161910472 \\ + 0.034482282891557275 -0.16391720020598521 \\ + 0.027688036945590577 -0.13038253409090306 \\ + 0.021622061812799798 -0.11032816675008927 \\ + 0.01629371078716904 -0.09371716772165262 \\ + 0.011711199799773253 -0.04717485534129229 \\ + 0.00788159475040795 0.06105195853762946 \\ + 0.004810800612483984 0.26106090094760603 \\ + 0.002503552327986436 0.5392380931830363 \\ + 0.0009634075065372838 0.8042673939496611 \\ + 0.00019274093981927476 0.974650648105796 \\ + 0.00019274093981927476 0.9787730395586061 \\ + 0.0009634075065372838 0.8177283829194804 \\ + 0.002503552327986436 0.5646130478027167 \\ + 0.004810800612483984 0.30055598532226446 \\ + 0.00788159475040795 0.11323319930883224 \\ + 0.011711199799773253 0.014775557633217695 \\ + 0.01629371078716904 -0.024343424002630565 \\ + 0.021622061812799798 -0.03466183178406168 \\ + 0.027688036945590577 -0.047507552690318366 \\ + 0.034482282891557275 -0.072072744444039 \\ + 0.041994323415907975 -0.1007951609664215 \\ + 0.050212575496637685 -0.12906199663078244 \\ + 0.05912436718470873 -0.15200983611296182 \\ + 0.06871595714327763 -0.16845373612411985 \\ + 0.07897255583584062 -0.18250752287503058 \\ + 0.08987834833062683 -0.19536468643165095 \\ + 0.1014165186860769 -0.20788067535661203 \\ + 0.11356927587980603 -0.22052750431009494 \\ + 0.12631788124107088 -0.23239755028925235 \\ + 0.13964267734444172 -0.24314377668745846 \\ + 0.15352311832012766 -0.25193187500945147 \\ + 0.1679378015342186 -0.2587277062705633 \\ + 0.18286450058999557 -0.26432730703847707 \\ + 0.19828019959942322 -0.2699491513331784 \\ + 0.21416112867198114 -0.27517496371561867 \\ + 0.2304828005661122 -0.280120338443971 \\ + 0.24722004844677403 -0.2849342847529992 \\ + 0.26434706469087454 -0.28940394079321474 \\ + 0.2818374406807562 -0.29337734309210317 \\ + 0.2996642075243705 -0.2967048497642284 \\ + 0.3177998776393543 -0.300022221421157 \\ + 0.3362164871368899 -0.30333860366080767 \\ + 0.3548856389399946 -0.3065139841348692 \\ + 0.37377854656975507 -0.3100383531633155 \\ + 0.3928660785319915 -0.31311623699265945 \\ + 0.4121188032359102 -0.3161611708009693 \\ + 0.4315070343754828 -0.3193986275478824 \\ + 0.4510008767035793 -0.3221778468480687 \\ + 0.47057027212827157 -0.3252206907252708 \\ + 0.49018504606023283 -0.32863442822258104 \\ + 0.5098149539397671 -0.33269469521777384 \\ + 0.5294297278717283 -0.3369811172044266 \\ + 0.5489991232964206 -0.3425193182760915 \\ + 0.568492965624517 -0.35000405357965536 \\ + 0.5878811967640897 -0.3565867895096544 \\ + 0.6071339214680084 -0.3571547510045223 \\ + 0.6262214534302449 -0.3456380547056759 \\ + 0.6451143610600054 -0.3188820549922191 \\ + 0.66378351286311 -0.2831494840085973 \\ + 0.6822001223606455 -0.2457574096704913 \\ + 0.7003357924756294 -0.21030295034016921 \\ + 0.7181625593192437 -0.1788913951984903 \\ + 0.7356529353091255 -0.1492344260159515 \\ + 0.752779951553226 -0.11961466533435017 \\ + 0.7695171994338877 -0.08905057664203686 \\ + 0.7858388713280188 -0.05790283329754642 \\ + 0.8017198004005767 -0.027652966883505714 \\ + 0.8171354994100043 0.001588211278120033 \\ + 0.8320621984657812 0.029258278229125634 \\ + 0.8464768816798722 0.055182501901625436 \\ + 0.8603573226555583 0.0799406392066867 \\ + 0.8736821187589292 0.10403575205645432 \\ + 0.886430724120194 0.1275217179411562 \\ + 0.8985834813139231 0.15035279819942582 \\ + 0.9101216516693731 0.17250713602471557 \\ + 0.9210274441641593 0.1936574892806836 \\ + 0.9312840428567223 0.21349897789220695 \\ + 0.9408756328152912 0.232468240310446 \\ + 0.9497874245033623 0.2504226922779489 \\ + 0.9580056765840921 0.2669228400212573 \\ + 0.9655177171084428 0.281836175929452 \\ + 0.9723119630544095 0.29544659901250625 \\ + 0.9783779381872002 0.30733777860310896 \\ + 0.983706289212831 0.31905514853920935 \\ + 0.9882888002002268 0.32894693777897743 \\ + 0.992118405249592 0.33237650043012357 \\ + 0.995189199387516 0.33262619545499517 \\ + 0.9974964476720136 0.3346990325346496 \\ + 0.9990365924934628 0.3358260728998983 \\ + 0.9998072590601808 0.9140652266331516 \\ + } + ; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/simply_connected_airfoil.tikz b/v0.5.0/DuctAPE/theory_latex/figures/simply_connected_airfoil.tikz new file mode 100644 index 00000000..d40c9072 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/simply_connected_airfoil.tikz @@ -0,0 +1,34 @@ +\begin{tikzpicture}[scale=0.9] + %Circle + \draw[ultra thick, primary, fill=secondary!5] (5,0) arc (0:360:5); + %Cut + % \draw[ultra thick] (1,0) -- (4.999,0.08726); + \draw[primary, ultra thick] (1,0) -- (4.972456811318398,-0.5240927967195059); + %Axes + % \draw[thick,-{Stealth[length=1.5mm,width=1mm]}] (-1.5,0) -- (-0.5,0) node[anchor=south west,yshift=-1.75mm,xshift=-1mm] {x}; + % \draw[thick,-{Stealth[length=1.5mm,width=1mm]}] (-1.5,0) -- (-1.5,1) node[anchor=west,xshift=-0.75mm] {z}; + % \draw[thick, densely dashed] (-1.5,0) -- (-3,0); + %U infinity + \draw[thick,-{Stealth[length=3mm,width=2mm]}] (-5.25,-1.25) -- node[below,yshift=-1mm] {$\vect{U}_{\infty}$} (-2,-0.25); + %aoa angle and label + % \draw (-2.75,0.0) arc (180:200:1.25) node[anchor=south east, yshift=-1mm] {$\alpha$}; + %Normal + % \draw[thick,-{Stealth[length=2.5mm,width=1.75mm]}] (3.5355,3.5355) -- (3,3) node[below] {$\hat{\vect{n}}$}; + \draw[thick,-{Stealth[length=2.5mm,width=1.75mm]}] (-0.75,0.0) -- (-0.65,-1) node[below] {$\hat{\vect{n}}$}; + %outer boundary orientation + % \draw[thick,dashed,-{Stealth[length=3mm,width=2mm]}] (2.25,3.897) arc (60:120:4.5cm); + %Airfoil + \draw[primary,ultra thick, fill=white] plot[smooth] file{figures/airfoil.dat}; + %body boundary orientation + \draw[thick,dashed,{Stealth[length=2mm,width=1.5mm]}-] (0.25,0.35) arc (70:100:2.5cm); + %body boundary label + \draw[thick,{Stealth[length=2mm,width=1.5mm]}-] (0.0,-0.1) arc (190:220:1) node[anchor=west,xshift=-2, primary] {$\mathcal{S}$}; + % \draw[thick,{Stealth[length=2mm,width=1.5mm]}-] (0.0,-0.1) arc (190:220:1) node[anchor=west,xshift=-2] {$\mathcal{S}_{B}$}; + %upper wake boundary label + % \draw[thick,{Stealth[length=2mm,width=1.5mm]}-] (3.25,-0.26204639835975296) arc (0:30:1) node[anchor=east,xshift=2] {$\mathcal{S}_{w}$}; + %lower wake boundary label + % \draw[thick,{Stealth[length=2mm,width=1.5mm]}-] (2.74958,-0.04799) arc (180:210:1) node[anchor=west,xshift=-2] {$\mathcal{S}_{w^-}$}; + %outer boundary label + \draw[thick,{Stealth[length=2mm,width=1.5mm]}-] (4.69846310393,-1.71010071663) arc (60:100:1) node[anchor=east, primary] {$\mathcal{S}_{\infty}$}; + \draw (1.0,2.5) node[secondary] {\large$\mathcal{V}$}; +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_J0_verification_table_CSOR.tex b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_J0_verification_table_CSOR.tex new file mode 100644 index 00000000..7c8af030 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_J0_verification_table_CSOR.tex @@ -0,0 +1,7 @@ + \begin{tabular}{ r | c | c | c } + Output Value & DFDC & CSOR & \% Error \\ + \hline + Rotor Thrust (N) & 91.8 & 91.82 & 0.03 \\ + Body Thrust (N) & 106.45 & 106.96 & 0.48 \\ + Torque (N\(\cdot\)m) & 6.58 & 6.58 & 0.04 \\ + \end{tabular} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_J0_verification_table_DuctAPE.tex b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_J0_verification_table_DuctAPE.tex new file mode 100644 index 00000000..4eb3864b --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_J0_verification_table_DuctAPE.tex @@ -0,0 +1,7 @@ + \begin{tabular}{ r | c | c | c } + Output Value & DFDC & Alternate & \% Error \\ + \hline + Rotor Thrust (N) & 91.8 & 91.82 & 0.02 \\ + Body Thrust (N) & 106.45 & 106.95 & 0.47 \\ + Torque (N\(\cdot\)m) & 6.58 & 6.58 & 0.04 \\ + \end{tabular} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_J1_verification_table_CSOR.tex b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_J1_verification_table_CSOR.tex new file mode 100644 index 00000000..3be58602 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_J1_verification_table_CSOR.tex @@ -0,0 +1,9 @@ + \begin{tabular}{ r | c | c | c } + Output Value & DFDC & CSOR & \% Error \\ + \hline + Rotor Thrust (N) & 70.0 & 70.19 & 0.27 \\ + Body Thrust (N) & 6.99 & 6.95 & -0.43 \\ + Torque (N\(\cdot\)m) & 5.5 & 5.52 & 0.3 \\ + Rotor Efficiency & 0.63 & 0.63 & 0.09 \\ + Total Efficiency & 0.69 & 0.69 & 0.02 \\ + \end{tabular} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_J1_verification_table_DuctAPE.tex b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_J1_verification_table_DuctAPE.tex new file mode 100644 index 00000000..81c1c005 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_J1_verification_table_DuctAPE.tex @@ -0,0 +1,9 @@ + \begin{tabular}{ r | c | c | c } + Output Value & DFDC & Alternate & \% Error \\ + \hline + Rotor Thrust (N) & 70.0 & 70.19 & 0.27 \\ + Body Thrust (N) & 6.99 & 6.95 & -0.47 \\ + Torque (N\(\cdot\)m) & 5.5 & 5.52 & 0.3 \\ + Rotor Efficiency & 0.63 & 0.63 & 0.09 \\ + Total Efficiency & 0.69 & 0.69 & 0.02 \\ + \end{tabular} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_bodycp_comparison_J0-0_CSORsolver.tikz b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_bodycp_comparison_J0-0_CSORsolver.tikz new file mode 100644 index 00000000..be41752c --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_bodycp_comparison_J0-0_CSORsolver.tikz @@ -0,0 +1,264 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, draw opacity={0.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={5.0mm}, yshift={-5.0mm}, width={58.152mm}, height={38.768mm}, scaled x ticks={false}, xlabel={$z$}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.0036647000000000207}, xmax={0.3116747}, xticklabels={{$0.0$,$0.1$,$0.2$,$0.3$}}, xtick={{0.0,0.1,0.2,0.30000000000000004}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_p$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, y dir={reverse}, ymajorgrids={false}, ymin={-2.5156515189167354}, ymax={0.07323023841505072}, yticklabels={{$-2.5$,$-2.0$,$-1.5$,$-1.0$,$-0.5$,$0.0$}}, ytick={{-2.5,-2.0,-1.5,-1.0,-0.5,0.0}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.7451;green,0.298;blue,0.302}, name path={b875fdc6-b0de-4d69-8e0f-8fad8853b1b0}, draw opacity={1.0}, line width={2}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.30232 -4.0e-5 \\ + 0.2971 -0.0001 \\ + 0.29064 -0.00015 \\ + 0.28357 -0.0002 \\ + 0.27627 -0.00025 \\ + 0.26889 -0.0003 \\ + 0.26147 -0.00036 \\ + 0.25404 -0.00041 \\ + 0.24657 -0.00048 \\ + 0.23909 -0.00054 \\ + 0.2316 -0.00062 \\ + 0.22409 -0.0007 \\ + 0.21658 -0.00079 \\ + 0.20907 -0.00089 \\ + 0.20158 -0.001 \\ + 0.19409 -0.00113 \\ + 0.18663 -0.00128 \\ + 0.17918 -0.00145 \\ + 0.17177 -0.00165 \\ + 0.1644 -0.00188 \\ + 0.15707 -0.00215 \\ + 0.14979 -0.00247 \\ + 0.14257 -0.00284 \\ + 0.13545 -0.0033 \\ + 0.1285 -0.00384 \\ + 0.12176 -0.00448 \\ + 0.1152 -0.00522 \\ + 0.10875 -0.00608 \\ + 0.10237 -0.00712 \\ + 0.09608 -0.00835 \\ + 0.08987 -0.00984 \\ + 0.08375 -0.01166 \\ + 0.07774 -0.01388 \\ + 0.07184 -0.01662 \\ + 0.06607 -0.02003 \\ + 0.06044 -0.02426 \\ + 0.05496 -0.0296 \\ + 0.04965 -0.03641 \\ + 0.04452 -0.04511 \\ + 0.03961 -0.0564 \\ + 0.03492 -0.07121 \\ + 0.03051 -0.09067 \\ + 0.02638 -0.11654 \\ + 0.02257 -0.15117 \\ + 0.0191 -0.19795 \\ + 0.01599 -0.26089 \\ + 0.01327 -0.34628 \\ + 0.01093 -0.4605 \\ + 0.00899 -0.61177 \\ + 0.00744 -0.81331 \\ + 0.0063 -1.05532 \\ + 0.00557 -1.34311 \\ + 0.00526 -1.66256 \\ + 0.0054 -1.9894 \\ + 0.00601 -2.26174 \\ + 0.00708 -2.41214 \\ + 0.00859 -2.42341 \\ + 0.01053 -2.35326 \\ + 0.01287 -2.23615 \\ + 0.01562 -2.09478 \\ + 0.01879 -1.95871 \\ + 0.0224 -1.83318 \\ + 0.02645 -1.72265 \\ + 0.03094 -1.62787 \\ + 0.03588 -1.54406 \\ + 0.04126 -1.47223 \\ + 0.04706 -1.41054 \\ + 0.05324 -1.35702 \\ + 0.05981 -1.31049 \\ + 0.06675 -1.26926 \\ + 0.07404 -1.23294 \\ + 0.08167 -1.20112 \\ + 0.08963 -1.17288 \\ + 0.09793 -1.1476 \\ + 0.10658 -1.12683 \\ + 0.1155 -1.11291 \\ + 0.12317 -0.17155 \\ + 0.12946 -0.16745 \\ + 0.13567 -0.16207 \\ + 0.14185 -0.15494 \\ + 0.14807 -0.14649 \\ + 0.15436 -0.13755 \\ + 0.16072 -0.12861 \\ + 0.16715 -0.11942 \\ + 0.17363 -0.11051 \\ + 0.18013 -0.10178 \\ + 0.18662 -0.09382 \\ + 0.19307 -0.08625 \\ + 0.19949 -0.07865 \\ + 0.20587 -0.07152 \\ + 0.21222 -0.06521 \\ + 0.21855 -0.05901 \\ + 0.22488 -0.0539 \\ + 0.23119 -0.04869 \\ + 0.2375 -0.0438 \\ + 0.2438 -0.03922 \\ + 0.25011 -0.03518 \\ + 0.25642 -0.0311 \\ + 0.26274 -0.02762 \\ + 0.26905 -0.02375 \\ + 0.27538 -0.0206 \\ + 0.28169 -0.01777 \\ + 0.2879 -0.01465 \\ + 0.29375 -0.01147 \\ + 0.29879 -0.00855 \\ + 0.30275 -0.00433 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={a8f3c8f6-57ba-4b55-abdd-41a18c170510}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.30146629999999996 -0.006272866178775094 \\ + 0.2953149 -0.010906271312126625 \\ + 0.2891635 -0.01428783428674918 \\ + 0.2830121 -0.01715155393778456 \\ + 0.27686069999999996 -0.019867512987386093 \\ + 0.27070930000000004 -0.02305648225399537 \\ + 0.2645579 -0.02628060788827169 \\ + 0.2584065 -0.029871309901127296 \\ + 0.2522551 -0.03382959743182168 \\ + 0.24610369999999998 -0.037790672499997124 \\ + 0.2399523 -0.04206447791316237 \\ + 0.23380089999999998 -0.04668147899094599 \\ + 0.2276495 -0.05163606345278626 \\ + 0.22149809999999998 -0.056959697995458636 \\ + 0.2153467 -0.06232318139781656 \\ + 0.20919529999999997 -0.0683494019054739 \\ + 0.2030439 -0.07493048964329763 \\ + 0.19689250000000003 -0.08166477231344704 \\ + 0.1907411 -0.0892459867438028 \\ + 0.18458970000000002 -0.09689537090247202 \\ + 0.1784383 -0.10430033454931542 \\ + 0.17228690000000002 -0.11232268575222237 \\ + 0.1661355 -0.12115848939706197 \\ + 0.15998410000000002 -0.12986724012238116 \\ + 0.1538327 -0.138192293679259 \\ + 0.14768130000000002 -0.14756565596054683 \\ + 0.1415299 -0.15666272758155952 \\ + 0.1353785 -0.1633843534915661 \\ + 0.12922709999999998 -0.16830695847619248 \\ + 0.1230757 -0.18033655644842062 \\ + 0.11699701516673613 -1.1024602138943091 \\ + 0.11099927647290145 -1.1178097962317683 \\ + 0.10502620813662189 -1.1290057566561438 \\ + 0.09909418192302438 -1.1427653623559078 \\ + 0.09321945710363025 -1.16154127778572 \\ + 0.08741813589082234 -1.1809175893434039 \\ + 0.0817061193028001 -1.2012189306232117 \\ + 0.07609906357999385 -1.2246232856534496 \\ + 0.07061233727239818 -1.249699665867979 \\ + 0.06526097911544454 -1.2786372678772553 \\ + 0.06005965680987275 -1.309460504833586 \\ + 0.05502262681858294 -1.3451965430969945 \\ + 0.05016369529066156 -1.3837077743522634 \\ + 0.04549618021968645 -1.4281780904504462 \\ + 0.04103287494003215 -1.4768757333003881 \\ + 0.03678601306122967 -1.533784341350427 \\ + 0.03276723493649307 -1.5974700415217824 \\ + 0.028987555757320364 -1.6707373720464487 \\ + 0.025457335361619406 -1.7524335288412818 \\ + 0.022186249838112206 -1.843935667332879 \\ + 0.01918326500484833 -1.9511070514443773 \\ + 0.016456611834520844 -2.058370726693924 \\ + 0.014013763893942266 -2.1924308009655773 \\ + 0.011861416859517446 -2.284034749948985 \\ + 0.010005470164859935 -2.422263208342508 \\ + 0.008451010830854512 -2.4029354454232035 \\ + 0.007202299522486553 -2.4423812805016847 \\ + 0.006262758870655437 -2.4359348767562197 \\ + 0.005634964090981155 -2.110239722512418 \\ + 0.005320635925317308 -1.779348581386403 \\ + 0.005320635925317308 -1.6120409972630794 \\ + 0.005634964090981155 -1.2838501410276861 \\ + 0.006262758870655437 -1.0768825608148784 \\ + 0.007202299522486553 -0.8685946758097493 \\ + 0.008451010830854512 -0.6727779840073135 \\ + 0.010005470164859935 -0.5211995604453357 \\ + 0.011861416859517446 -0.41252305073256257 \\ + 0.014013763893942266 -0.31899854274944933 \\ + 0.016456611834520844 -0.2512752830436193 \\ + 0.01918326500484833 -0.1968041718137162 \\ + 0.022186249838112206 -0.15611596093582727 \\ + 0.025457335361619406 -0.12410181725027947 \\ + 0.028987555757320364 -0.09950490010966424 \\ + 0.03276723493649307 -0.08018077469627095 \\ + 0.03678601306122967 -0.06497659590222968 \\ + 0.04103287494003215 -0.05298677601833895 \\ + 0.04549618021968645 -0.0434396333743486 \\ + 0.05016369529066156 -0.035847031441243064 \\ + 0.05502262681858294 -0.029685249278654856 \\ + 0.06005965680987275 -0.024736219380148024 \\ + 0.06526097911544454 -0.02068259030201093 \\ + 0.07061233727239818 -0.017396586648305096 \\ + 0.07609906357999385 -0.01469090358725798 \\ + 0.0817061193028001 -0.012464744954253468 \\ + 0.08741813589082234 -0.010625249019369272 \\ + 0.09321945710363025 -0.009092231564703103 \\ + 0.09909418192302438 -0.007815451105405645 \\ + 0.10502620813662189 -0.006739178704597542 \\ + 0.11099927647290145 -0.00584273820388294 \\ + 0.11699701516673613 -0.0050762475773588785 \\ + 0.1230757 -0.004411119723675774 \\ + 0.12922709999999998 -0.0038405089547596297 \\ + 0.1353785 -0.0033622708948298197 \\ + 0.1415299 -0.002964073084145861 \\ + 0.14768130000000002 -0.002626715754056367 \\ + 0.1538327 -0.0023401000166852724 \\ + 0.15998410000000002 -0.002091835434377423 \\ + 0.1661355 -0.0018757086167905366 \\ + 0.17228690000000002 -0.0016861374222058604 \\ + 0.1784383 -0.001520001949068877 \\ + 0.18458970000000002 -0.0013736321801816717 \\ + 0.1907411 -0.0012436656759153729 \\ + 0.19689250000000003 -0.0011275066504386718 \\ + 0.2030439 -0.0010234578364833604 \\ + 0.20919529999999997 -0.0009298374770862869 \\ + 0.2153467 -0.0008451374895819684 \\ + 0.22149809999999998 -0.0007681785073308259 \\ + 0.2276495 -0.0006979695165230826 \\ + 0.23380089999999998 -0.0006335088319452759 \\ + 0.2399523 -0.0005738748994584511 \\ + 0.24610369999999998 -0.0005183303840936313 \\ + 0.2522551 -0.00046627815484055166 \\ + 0.2584065 -0.000417019411850369 \\ + 0.2645579 -0.00036982321643431624 \\ + 0.27070930000000004 -0.0003240167385741434 \\ + 0.27686069999999996 -0.000278979934549968 \\ + 0.2830121 -0.0002335625521714126 \\ + 0.2891635 -0.00018614805191791183 \\ + 0.2953149 -0.0001349307503996605 \\ + 0.30146629999999996 -6.540872972236934e-5 \\ + } + ; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_bodycp_comparison_J0-0_DuctAPE.tikz b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_bodycp_comparison_J0-0_DuctAPE.tikz new file mode 100644 index 00000000..bf513179 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_bodycp_comparison_J0-0_DuctAPE.tikz @@ -0,0 +1,264 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, draw opacity={0.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={5.0mm}, yshift={-5.0mm}, width={58.152mm}, height={38.768mm}, scaled x ticks={false}, xlabel={$z$}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.0036647000000000207}, xmax={0.3116747}, xticklabels={{$0.0$,$0.1$,$0.2$,$0.3$}}, xtick={{0.0,0.1,0.2,0.30000000000000004}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_p$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, y dir={reverse}, ymajorgrids={false}, ymin={-2.515500643368247}, ymax={0.07322584398159959}, yticklabels={{$-2.5$,$-2.0$,$-1.5$,$-1.0$,$-0.5$,$0.0$}}, ytick={{-2.5,-2.0,-1.5,-1.0,-0.5,0.0}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.7451;green,0.298;blue,0.302}, name path={6b1c8a0a-1080-4592-bad9-07d9f37c4d6b}, draw opacity={1.0}, line width={2}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.30232 -4.0e-5 \\ + 0.2971 -0.0001 \\ + 0.29064 -0.00015 \\ + 0.28357 -0.0002 \\ + 0.27627 -0.00025 \\ + 0.26889 -0.0003 \\ + 0.26147 -0.00036 \\ + 0.25404 -0.00041 \\ + 0.24657 -0.00048 \\ + 0.23909 -0.00054 \\ + 0.2316 -0.00062 \\ + 0.22409 -0.0007 \\ + 0.21658 -0.00079 \\ + 0.20907 -0.00089 \\ + 0.20158 -0.001 \\ + 0.19409 -0.00113 \\ + 0.18663 -0.00128 \\ + 0.17918 -0.00145 \\ + 0.17177 -0.00165 \\ + 0.1644 -0.00188 \\ + 0.15707 -0.00215 \\ + 0.14979 -0.00247 \\ + 0.14257 -0.00284 \\ + 0.13545 -0.0033 \\ + 0.1285 -0.00384 \\ + 0.12176 -0.00448 \\ + 0.1152 -0.00522 \\ + 0.10875 -0.00608 \\ + 0.10237 -0.00712 \\ + 0.09608 -0.00835 \\ + 0.08987 -0.00984 \\ + 0.08375 -0.01166 \\ + 0.07774 -0.01388 \\ + 0.07184 -0.01662 \\ + 0.06607 -0.02003 \\ + 0.06044 -0.02426 \\ + 0.05496 -0.0296 \\ + 0.04965 -0.03641 \\ + 0.04452 -0.04511 \\ + 0.03961 -0.0564 \\ + 0.03492 -0.07121 \\ + 0.03051 -0.09067 \\ + 0.02638 -0.11654 \\ + 0.02257 -0.15117 \\ + 0.0191 -0.19795 \\ + 0.01599 -0.26089 \\ + 0.01327 -0.34628 \\ + 0.01093 -0.4605 \\ + 0.00899 -0.61177 \\ + 0.00744 -0.81331 \\ + 0.0063 -1.05532 \\ + 0.00557 -1.34311 \\ + 0.00526 -1.66256 \\ + 0.0054 -1.9894 \\ + 0.00601 -2.26174 \\ + 0.00708 -2.41214 \\ + 0.00859 -2.42341 \\ + 0.01053 -2.35326 \\ + 0.01287 -2.23615 \\ + 0.01562 -2.09478 \\ + 0.01879 -1.95871 \\ + 0.0224 -1.83318 \\ + 0.02645 -1.72265 \\ + 0.03094 -1.62787 \\ + 0.03588 -1.54406 \\ + 0.04126 -1.47223 \\ + 0.04706 -1.41054 \\ + 0.05324 -1.35702 \\ + 0.05981 -1.31049 \\ + 0.06675 -1.26926 \\ + 0.07404 -1.23294 \\ + 0.08167 -1.20112 \\ + 0.08963 -1.17288 \\ + 0.09793 -1.1476 \\ + 0.10658 -1.12683 \\ + 0.1155 -1.11291 \\ + 0.12317 -0.17155 \\ + 0.12946 -0.16745 \\ + 0.13567 -0.16207 \\ + 0.14185 -0.15494 \\ + 0.14807 -0.14649 \\ + 0.15436 -0.13755 \\ + 0.16072 -0.12861 \\ + 0.16715 -0.11942 \\ + 0.17363 -0.11051 \\ + 0.18013 -0.10178 \\ + 0.18662 -0.09382 \\ + 0.19307 -0.08625 \\ + 0.19949 -0.07865 \\ + 0.20587 -0.07152 \\ + 0.21222 -0.06521 \\ + 0.21855 -0.05901 \\ + 0.22488 -0.0539 \\ + 0.23119 -0.04869 \\ + 0.2375 -0.0438 \\ + 0.2438 -0.03922 \\ + 0.25011 -0.03518 \\ + 0.25642 -0.0311 \\ + 0.26274 -0.02762 \\ + 0.26905 -0.02375 \\ + 0.27538 -0.0206 \\ + 0.28169 -0.01777 \\ + 0.2879 -0.01465 \\ + 0.29375 -0.01147 \\ + 0.29879 -0.00855 \\ + 0.30275 -0.00433 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={ca436fcd-db7b-48bb-b5a5-3af6994ef308}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.30146629999999996 -0.00626799818235757 \\ + 0.2953149 -0.010900867997726715 \\ + 0.2891635 -0.014281821128330652 \\ + 0.2830121 -0.01714490959310322 \\ + 0.27686069999999996 -0.01986021637140767 \\ + 0.27070930000000004 -0.023048513294381845 \\ + 0.2645579 -0.02627195152410422 \\ + 0.2584065 -0.029861945902346365 \\ + 0.2522551 -0.033819509432404304 \\ + 0.24610369999999998 -0.037779845251451394 \\ + 0.2399523 -0.04205289297503645 \\ + 0.23380089999999998 -0.0466691180190163 \\ + 0.2276495 -0.05162290731355923 \\ + 0.22149809999999998 -0.056945726855262335 \\ + 0.2153467 -0.06230837934869815 \\ + 0.20919529999999997 -0.06833373857617742 \\ + 0.2030439 -0.07491394055632072 \\ + 0.19689250000000003 -0.08164730891135008 \\ + 0.1907411 -0.08922756545747645 \\ + 0.18458970000000002 -0.09687595442945551 \\ + 0.1784383 -0.10427987060041544 \\ + 0.17228690000000002 -0.11230108422421547 \\ + 0.1661355 -0.12113562329567262 \\ + 0.15998410000000002 -0.12984294978942212 \\ + 0.1538327 -0.13816633997174677 \\ + 0.14768130000000002 -0.14753764725610574 \\ + 0.1415299 -0.15663213201415804 \\ + 0.1353785 -0.1633504149948416 \\ + 0.12922709999999998 -0.16826851377207563 \\ + 0.1230757 -0.1802918092482827 \\ + 0.11699701516673613 -1.1024129510760414 \\ + 0.11099927647290145 -1.1177564656299233 \\ + 0.10502620813662189 -1.128947940384613 \\ + 0.09909418192302438 -1.1427041081085108 \\ + 0.09321945710363025 -1.1614770992163277 \\ + 0.08741813589082234 -1.1808510157065502 \\ + 0.0817061193028001 -1.2011502638742466 \\ + 0.07609906357999385 -1.2245526122128605 \\ + 0.07061233727239818 -1.249627053235368 \\ + 0.06526097911544454 -1.2785626113960256 \\ + 0.06005965680987275 -1.3093837723824628 \\ + 0.05502262681858294 -1.3451174951100018 \\ + 0.05016369529066156 -1.3836262874893184 \\ + 0.04549618021968645 -1.4280938268301884 \\ + 0.04103287494003215 -1.4767884652416912 \\ + 0.03678601306122967 -1.53369357732348 \\ + 0.03276723493649307 -1.597375392761904 \\ + 0.028987555757320364 -1.6706382557806552 \\ + 0.025457335361619406 -1.7523294500472304 \\ + 0.022186249838112206 -1.843826023969023 \\ + 0.01918326500484833 -1.95099089897973 \\ + 0.016456611834520844 -2.0582480499088693 \\ + 0.014013763893942266 -2.1922999572330886 \\ + 0.011861416859517446 -2.283898290264721 \\ + 0.010005470164859935 -2.4221182687624796 \\ + 0.008451010830854512 -2.4027914749665045 \\ + 0.007202299522486553 -2.4422347993866476 \\ + 0.006262758870655437 -2.435788355189456 \\ + 0.005634964090981155 -2.110112626670887 \\ + 0.005320635925317308 -1.779241223607698 \\ + 0.005320635925317308 -1.611943234501178 \\ + 0.005634964090981155 -1.2837723729386217 \\ + 0.006262758870655437 -1.076817074781576 \\ + 0.007202299522486553 -0.8685416861467357 \\ + 0.008451010830854512 -0.6727367066062154 \\ + 0.010005470164859935 -0.5211675216690008 \\ + 0.011861416859517446 -0.4124975255597654 \\ + 0.014013763893942266 -0.31897871934696914 \\ + 0.016456611834520844 -0.2512595636272532 \\ + 0.01918326500484833 -0.196791781662499 \\ + 0.022186249838112206 -0.15610605970155428 \\ + 0.025457335361619406 -0.12409388076565815 \\ + 0.028987555757320364 -0.09949848140542185 \\ + 0.03276723493649307 -0.08017554879448635 \\ + 0.03678601306122967 -0.06497231657280446 \\ + 0.04103287494003215 -0.05298324301911204 \\ + 0.04549618021968645 -0.04343670071879086 \\ + 0.05016369529066156 -0.035844576153087636 \\ + 0.05502262681858294 -0.029683185450574474 \\ + 0.06005965680987275 -0.024734471028918806 \\ + 0.06526097911544454 -0.020681102714254863 \\ + 0.07061233727239818 -0.017395312299073578 \\ + 0.07609906357999385 -0.014689805996217805 \\ + 0.0817061193028001 -0.012463794856861008 \\ + 0.08741813589082234 -0.010624421671412723 \\ + 0.09321945710363025 -0.009091508238571615 \\ + 0.09909418192302438 -0.007814815387400684 \\ + 0.10502620813662189 -0.006738618189775251 \\ + 0.11099927647290145 -0.0058422416404656325 \\ + 0.11699701516673613 -0.005075806160995382 \\ + 0.1230757 -0.004410727923871287 \\ + 0.12922709999999998 -0.003840160680881967 \\ + 0.1353785 -0.0033619610428130583 \\ + 0.1415299 -0.0029637959155183495 \\ + 0.14768130000000002 -0.002626467450898752 \\ + 0.1538327 -0.0023398767128813176 \\ + 0.15998410000000002 -0.002091634437240318 \\ + 0.1661355 -0.0018755274300016947 \\ + 0.17228690000000002 -0.0016859741141037308 \\ + 0.1784383 -0.0015198546885543684 \\ + 0.18458970000000002 -0.001373499401443209 \\ + 0.1907411 -0.001243545991198133 \\ + 0.19689250000000003 -0.0011273989433764995 \\ + 0.2030439 -0.0010233610980743824 \\ + 0.20919529999999997 -0.0009297508413725944 \\ + 0.2153467 -0.0008450601942870007 \\ + 0.22149809999999998 -0.0007681099184387982 \\ + 0.2276495 -0.0006979090550503171 \\ + 0.23380089999999998 -0.0006334560050150084 \\ + 0.2399523 -0.0005738292716033909 \\ + 0.24610369999999998 -0.0005182916029360526 \\ + 0.2522551 -0.0004662458941444596 \\ + 0.2584065 -0.0004169933768372444 \\ + 0.2645579 -0.00036980313946438946 \\ + 0.27070930000000004 -0.0003240023843324055 \\ + 0.27686069999999996 -0.00027897105575026935 \\ + 0.2830121 -0.00023355879774703946 \\ + 0.2891635 -0.0001861490317706948 \\ + 0.2953149 -0.00013493581426438813 \\ + 0.30146629999999996 -6.541580162368876e-5 \\ + } + ; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_bodycp_comparison_J1-0_CSORsolver.tikz b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_bodycp_comparison_J1-0_CSORsolver.tikz new file mode 100644 index 00000000..c97453b9 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_bodycp_comparison_J1-0_CSORsolver.tikz @@ -0,0 +1,264 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, draw opacity={0.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={5.0mm}, yshift={-5.0mm}, width={58.152mm}, height={38.768mm}, scaled x ticks={false}, xlabel={$z$}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.0036647000000000207}, xmax={0.3116747}, xticklabels={{$0.0$,$0.1$,$0.2$,$0.3$}}, xtick={{0.0,0.1,0.2,0.30000000000000004}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_p$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, y dir={reverse}, ymajorgrids={false}, ymin={-0.8418419196872992}, ymax={0.7330216093112806}, yticklabels={{$-0.6$,$-0.3$,$0.0$,$0.3$,$0.6$}}, ytick={{-0.6000000000000001,-0.30000000000000004,0.0,0.30000000000000004,0.6000000000000001}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.7451;green,0.298;blue,0.302}, name path={9a0e403d-3e9e-4c55-b03c-b2af88da9e86}, draw opacity={1.0}, line width={2}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.30232 0.34415 \\ + 0.2971 0.24323 \\ + 0.29064 0.1824 \\ + 0.28357 0.13489 \\ + 0.27627 0.09616 \\ + 0.26889 0.06353 \\ + 0.26147 0.03422 \\ + 0.25404 0.00783 \\ + 0.24657 -0.01638 \\ + 0.23909 -0.03961 \\ + 0.2316 -0.06159 \\ + 0.22409 -0.08275 \\ + 0.21658 -0.10353 \\ + 0.20907 -0.12412 \\ + 0.20158 -0.14451 \\ + 0.19409 -0.16507 \\ + 0.18663 -0.18567 \\ + 0.17918 -0.20619 \\ + 0.17177 -0.22806 \\ + 0.1644 -0.25032 \\ + 0.15707 -0.27306 \\ + 0.14979 -0.29604 \\ + 0.14257 -0.32119 \\ + 0.13545 -0.34872 \\ + 0.1285 -0.37892 \\ + 0.12176 -0.40992 \\ + 0.1152 -0.43719 \\ + 0.10875 -0.46052 \\ + 0.10237 -0.48153 \\ + 0.09608 -0.50005 \\ + 0.08987 -0.51584 \\ + 0.08375 -0.52975 \\ + 0.07774 -0.54071 \\ + 0.07184 -0.54856 \\ + 0.06607 -0.5538 \\ + 0.06044 -0.55277 \\ + 0.05496 -0.54741 \\ + 0.04965 -0.5374 \\ + 0.04452 -0.5202 \\ + 0.03961 -0.49622 \\ + 0.03492 -0.46489 \\ + 0.03051 -0.42328 \\ + 0.02638 -0.37064 \\ + 0.02257 -0.30548 \\ + 0.0191 -0.22673 \\ + 0.01599 -0.131 \\ + 0.01327 -0.01861 \\ + 0.01093 0.11257 \\ + 0.00899 0.25909 \\ + 0.00744 0.41079 \\ + 0.0063 0.55413 \\ + 0.00557 0.65776 \\ + 0.00526 0.68845 \\ + 0.0054 0.61747 \\ + 0.00601 0.43972 \\ + 0.00708 0.19231 \\ + 0.00859 -0.06349 \\ + 0.01053 -0.28869 \\ + 0.01287 -0.46532 \\ + 0.01562 -0.58997 \\ + 0.01879 -0.67684 \\ + 0.0224 -0.73359 \\ + 0.02645 -0.76905 \\ + 0.03094 -0.78971 \\ + 0.03588 -0.79665 \\ + 0.04126 -0.79535 \\ + 0.04706 -0.78802 \\ + 0.05324 -0.77602 \\ + 0.05981 -0.76088 \\ + 0.06675 -0.74305 \\ + 0.07404 -0.72389 \\ + 0.08167 -0.70443 \\ + 0.08963 -0.68482 \\ + 0.09793 -0.66533 \\ + 0.10658 -0.64865 \\ + 0.1155 -0.63828 \\ + 0.12317 0.06601 \\ + 0.12946 0.06826 \\ + 0.13567 0.07271 \\ + 0.14185 0.07978 \\ + 0.14807 0.08883 \\ + 0.15436 0.09876 \\ + 0.16072 0.10893 \\ + 0.16715 0.11958 \\ + 0.17363 0.13004 \\ + 0.18013 0.14042 \\ + 0.18662 0.14998 \\ + 0.19307 0.15917 \\ + 0.19949 0.1685 \\ + 0.20587 0.17736 \\ + 0.21222 0.18535 \\ + 0.21855 0.19332 \\ + 0.22488 0.20012 \\ + 0.23119 0.20721 \\ + 0.2375 0.21414 \\ + 0.2438 0.22095 \\ + 0.25011 0.22745 \\ + 0.25642 0.23445 \\ + 0.26274 0.24132 \\ + 0.26905 0.24949 \\ + 0.27538 0.25802 \\ + 0.28169 0.26806 \\ + 0.2879 0.28152 \\ + 0.29375 0.30024 \\ + 0.29879 0.32907 \\ + 0.30275 0.38467 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={9ef7bf12-1ff3-4a12-8721-3ddeb23cd01f}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.30146629999999996 0.3719051805609885 \\ + 0.2953149 0.31431331568708376 \\ + 0.2891635 0.2905552850109901 \\ + 0.2830121 0.27601091409950945 \\ + 0.27686069999999996 0.2653672395905998 \\ + 0.27070930000000004 0.2563052866069534 \\ + 0.2645579 0.2485530281687955 \\ + 0.2584065 0.24128291347994135 \\ + 0.2522551 0.23422902536353374 \\ + 0.24610369999999998 0.22765697369277893 \\ + 0.2399523 0.22108090908371125 \\ + 0.23380089999999998 0.21438238816227972 \\ + 0.2276495 0.20750886468461893 \\ + 0.22149809999999998 0.20037891641865224 \\ + 0.2153467 0.19335600063450242 \\ + 0.20919529999999997 0.18566783549103894 \\ + 0.2030439 0.17742659009512685 \\ + 0.19689250000000003 0.16910395360726438 \\ + 0.1907411 0.15985900051961388 \\ + 0.18458970000000002 0.15062730512249622 \\ + 0.1784383 0.1417892813386007 \\ + 0.17228690000000002 0.13231845699340639 \\ + 0.1661355 0.1219971143350348 \\ + 0.15998410000000002 0.11198423083981657 \\ + 0.1538327 0.1026284119834927 \\ + 0.14768130000000002 0.09226754421335381 \\ + 0.1415299 0.08257944274117712 \\ + 0.1353785 0.07623207473339322 \\ + 0.12922709999999998 0.07250603888906793 \\ + 0.1230757 0.06615620303394776 \\ + 0.11699701516673613 -0.6308853989342225 \\ + 0.11099927647290145 -0.6399234245497821 \\ + 0.10502620813662189 -0.6485285481189575 \\ + 0.09909418192302438 -0.659155635691953 \\ + 0.09321945710363025 -0.6745165501869513 \\ + 0.08741813589082234 -0.6890025003767494 \\ + 0.0817061193028001 -0.7026135155098563 \\ + 0.07609906357999385 -0.717438826364977 \\ + 0.07061233727239818 -0.7312832701970724 \\ + 0.06526097911544454 -0.7460131785090508 \\ + 0.06005965680987275 -0.7586372243666897 \\ + 0.05502262681858294 -0.7716116107349521 \\ + 0.05016369529066156 -0.7815075683906524 \\ + 0.04549618021968645 -0.7904147022013194 \\ + 0.04103287494003215 -0.7949725023834192 \\ + 0.03678601306122967 -0.7972703103760186 \\ + 0.03276723493649307 -0.7936162288220002 \\ + 0.028987555757320364 -0.7838398113586268 \\ + 0.025457335361619406 -0.763871606997385 \\ + 0.022186249838112206 -0.7313672455128363 \\ + 0.01918326500484833 -0.686858009971497 \\ + 0.016456611834520844 -0.6155286145405977 \\ + 0.014013763893942266 -0.5308628705621184 \\ + 0.011861416859517446 -0.3937560331621228 \\ + 0.010005470164859935 -0.2505272355913249 \\ + 0.008451010830854512 -0.03180445762380914 \\ + 0.007202299522486553 0.16303580172592128 \\ + 0.006262758870655437 0.35640419433493664 \\ + 0.005634964090981155 0.5542395813894678 \\ + 0.005320635925317308 0.6745194483590897 \\ + 0.005320635925317308 0.6864843281152228 \\ + 0.005634964090981155 0.6537563820931748 \\ + 0.006262758870655437 0.558911553988193 \\ + 0.007202299522486553 0.43085369802689993 \\ + 0.008451010830854512 0.3040827420646474 \\ + 0.010005470164859935 0.1795983329239598 \\ + 0.011861416859517446 0.049487265995396594 \\ + 0.014013763893942266 -0.05303658304717083 \\ + 0.016456611834520844 -0.15238705474336703 \\ + 0.01918326500484833 -0.22987481202773516 \\ + 0.022186249838112206 -0.30147315888093024 \\ + 0.025457335361619406 -0.358361769312058 \\ + 0.028987555757320364 -0.40826108630714614 \\ + 0.03276723493649307 -0.4482325449913865 \\ + 0.03678601306122967 -0.4803406435841817 \\ + 0.04103287494003215 -0.5059700058580592 \\ + 0.04549618021968645 -0.5253372414376084 \\ + 0.05016369529066156 -0.5405586704091888 \\ + 0.05502262681858294 -0.5488528569468318 \\ + 0.06005965680987275 -0.5540815920991943 \\ + 0.06526097911544454 -0.5534566478069963 \\ + 0.07061233727239818 -0.5507040125617322 \\ + 0.07609906357999385 -0.543890524194839 \\ + 0.0817061193028001 -0.534469620123974 \\ + 0.08741813589082234 -0.5227452081888522 \\ + 0.09321945710363025 -0.5082183630039993 \\ + 0.09909418192302438 -0.49197343252662457 \\ + 0.10502620813662189 -0.47277644093076443 \\ + 0.11099927647290145 -0.4536227988822905 \\ + 0.11699701516673613 -0.43096657526854953 \\ + 0.1230757 -0.4044643037765155 \\ + 0.12922709999999998 -0.37629910371996894 \\ + 0.1353785 -0.34940660414467156 \\ + 0.1415299 -0.3256262084028941 \\ + 0.14768130000000002 -0.3036160786371002 \\ + 0.1538327 -0.28372280105452274 \\ + 0.15998410000000002 -0.2643948163327058 \\ + 0.1661355 -0.24559575184711838 \\ + 0.17228690000000002 -0.22701941052498723 \\ + 0.1784383 -0.20916051333664282 \\ + 0.18458970000000002 -0.19191747908554344 \\ + 0.1907411 -0.1749405253249105 \\ + 0.19689250000000003 -0.15798377654046916 \\ + 0.2030439 -0.14115773947171065 \\ + 0.20919529999999997 -0.12439003766440519 \\ + 0.2153467 -0.10752809369751276 \\ + 0.22149809999999998 -0.09051786305565429 \\ + 0.2276495 -0.07333468993484257 \\ + 0.23380089999999998 -0.05579858516518579 \\ + 0.2399523 -0.037650872334833545 \\ + 0.24610369999999998 -0.018707071364777856 \\ + 0.2522551 0.0011354337367114567 \\ + 0.2584065 0.022209069491274932 \\ + 0.2645579 0.04502587520789339 \\ + 0.27070930000000004 0.07012921096023292 \\ + 0.27686069999999996 0.09800565100881795 \\ + 0.2830121 0.13026780574335162 \\ + 0.2891635 0.1697993168559012 \\ + 0.2953149 0.2208911855023205 \\ + 0.30146629999999996 0.3199799510883136 \\ + } + ; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_bodycp_comparison_J1-0_DuctAPE.tikz b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_bodycp_comparison_J1-0_DuctAPE.tikz new file mode 100644 index 00000000..66ca8a43 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_bodycp_comparison_J1-0_DuctAPE.tikz @@ -0,0 +1,264 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, draw opacity={0.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={5.0mm}, yshift={-5.0mm}, width={58.152mm}, height={38.768mm}, scaled x ticks={false}, xlabel={$z$}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.0036647000000000207}, xmax={0.3116747}, xticklabels={{$0.0$,$0.1$,$0.2$,$0.3$}}, xtick={{0.0,0.1,0.2,0.30000000000000004}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_p$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, y dir={reverse}, ymajorgrids={false}, ymin={-0.8416569172810244}, ymax={0.7330162208916804}, yticklabels={{$-0.6$,$-0.3$,$0.0$,$0.3$,$0.6$}}, ytick={{-0.6000000000000001,-0.30000000000000004,0.0,0.30000000000000004,0.6000000000000001}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.7451;green,0.298;blue,0.302}, name path={727a9e9a-5919-425b-84b0-1563571d0e21}, draw opacity={1.0}, line width={2}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.30232 0.34415 \\ + 0.2971 0.24323 \\ + 0.29064 0.1824 \\ + 0.28357 0.13489 \\ + 0.27627 0.09616 \\ + 0.26889 0.06353 \\ + 0.26147 0.03422 \\ + 0.25404 0.00783 \\ + 0.24657 -0.01638 \\ + 0.23909 -0.03961 \\ + 0.2316 -0.06159 \\ + 0.22409 -0.08275 \\ + 0.21658 -0.10353 \\ + 0.20907 -0.12412 \\ + 0.20158 -0.14451 \\ + 0.19409 -0.16507 \\ + 0.18663 -0.18567 \\ + 0.17918 -0.20619 \\ + 0.17177 -0.22806 \\ + 0.1644 -0.25032 \\ + 0.15707 -0.27306 \\ + 0.14979 -0.29604 \\ + 0.14257 -0.32119 \\ + 0.13545 -0.34872 \\ + 0.1285 -0.37892 \\ + 0.12176 -0.40992 \\ + 0.1152 -0.43719 \\ + 0.10875 -0.46052 \\ + 0.10237 -0.48153 \\ + 0.09608 -0.50005 \\ + 0.08987 -0.51584 \\ + 0.08375 -0.52975 \\ + 0.07774 -0.54071 \\ + 0.07184 -0.54856 \\ + 0.06607 -0.5538 \\ + 0.06044 -0.55277 \\ + 0.05496 -0.54741 \\ + 0.04965 -0.5374 \\ + 0.04452 -0.5202 \\ + 0.03961 -0.49622 \\ + 0.03492 -0.46489 \\ + 0.03051 -0.42328 \\ + 0.02638 -0.37064 \\ + 0.02257 -0.30548 \\ + 0.0191 -0.22673 \\ + 0.01599 -0.131 \\ + 0.01327 -0.01861 \\ + 0.01093 0.11257 \\ + 0.00899 0.25909 \\ + 0.00744 0.41079 \\ + 0.0063 0.55413 \\ + 0.00557 0.65776 \\ + 0.00526 0.68845 \\ + 0.0054 0.61747 \\ + 0.00601 0.43972 \\ + 0.00708 0.19231 \\ + 0.00859 -0.06349 \\ + 0.01053 -0.28869 \\ + 0.01287 -0.46532 \\ + 0.01562 -0.58997 \\ + 0.01879 -0.67684 \\ + 0.0224 -0.73359 \\ + 0.02645 -0.76905 \\ + 0.03094 -0.78971 \\ + 0.03588 -0.79665 \\ + 0.04126 -0.79535 \\ + 0.04706 -0.78802 \\ + 0.05324 -0.77602 \\ + 0.05981 -0.76088 \\ + 0.06675 -0.74305 \\ + 0.07404 -0.72389 \\ + 0.08167 -0.70443 \\ + 0.08963 -0.68482 \\ + 0.09793 -0.66533 \\ + 0.10658 -0.64865 \\ + 0.1155 -0.63828 \\ + 0.12317 0.06601 \\ + 0.12946 0.06826 \\ + 0.13567 0.07271 \\ + 0.14185 0.07978 \\ + 0.14807 0.08883 \\ + 0.15436 0.09876 \\ + 0.16072 0.10893 \\ + 0.16715 0.11958 \\ + 0.17363 0.13004 \\ + 0.18013 0.14042 \\ + 0.18662 0.14998 \\ + 0.19307 0.15917 \\ + 0.19949 0.1685 \\ + 0.20587 0.17736 \\ + 0.21222 0.18535 \\ + 0.21855 0.19332 \\ + 0.22488 0.20012 \\ + 0.23119 0.20721 \\ + 0.2375 0.21414 \\ + 0.2438 0.22095 \\ + 0.25011 0.22745 \\ + 0.25642 0.23445 \\ + 0.26274 0.24132 \\ + 0.26905 0.24949 \\ + 0.27538 0.25802 \\ + 0.28169 0.26806 \\ + 0.2879 0.28152 \\ + 0.29375 0.30024 \\ + 0.29879 0.32907 \\ + 0.30275 0.38467 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={58c480af-c54e-456b-954f-1bd0b6be43f6}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.30146629999999996 0.3719238604303491 \\ + 0.2953149 0.31433537674291245 \\ + 0.2891635 0.2905790877205692 \\ + 0.2830121 0.27603621014911656 \\ + 0.27686069999999996 0.2653938997526796 \\ + 0.27070930000000004 0.25633324617474973 \\ + 0.2645579 0.2485822546500997 \\ + 0.2584065 0.24131339904496246 \\ + 0.2522551 0.23426076991051537 \\ + 0.24610369999999998 0.2276899904132369 \\ + 0.2399523 0.22111522216430046 \\ + 0.23380089999999998 0.214418030590107 \\ + 0.2276495 0.20754588030968024 \\ + 0.22149809999999998 0.2004173600312441 \\ + 0.2153467 0.19339593531816734 \\ + 0.20919529999999997 0.18570935428423085 \\ + 0.2030439 0.17746979137136876 \\ + 0.19689250000000003 0.16914896359916298 \\ + 0.1907411 0.1599059819159272 \\ + 0.18458970000000002 0.15067643795740193 \\ + 0.1784383 0.14184079729166765 \\ + 0.17228690000000002 0.13237266934144376 \\ + 0.1661355 0.12205442441251102 \\ + 0.15998410000000002 0.11204512637968966 \\ + 0.1538327 0.10269353842283446 \\ + 0.14768130000000002 0.09233781083041503 \\ + 0.1415299 0.08265597808356373 \\ + 0.1353785 0.07631632005237732 \\ + 0.12922709999999998 0.07259998187259775 \\ + 0.1230757 0.06626239114804966 \\ + 0.11699701516673613 -0.6307940011164891 \\ + 0.11099927647290145 -0.6398198561509837 \\ + 0.10502620813662189 -0.6484149487300187 \\ + 0.09909418192302438 -0.6590337699955953 \\ + 0.09321945710363025 -0.6743873548993307 \\ + 0.08741813589082234 -0.6888671358453353 \\ + 0.0817061193028001 -0.7024727486491994 \\ + 0.07609906357999385 -0.7172930888327718 \\ + 0.07061233727239818 -0.7311329748126568 \\ + 0.06526097911544454 -0.7458584405839966 \\ + 0.06005965680987275 -0.7584783384028548 \\ + 0.05502262681858294 -0.7714484876714529 \\ + 0.05016369529066156 -0.781340424419877 \\ + 0.04549618021968645 -0.7902433704424423 \\ + 0.04103287494003215 -0.7947971581939666 \\ + 0.03678601306122967 -0.797090696389344 \\ + 0.03276723493649307 -0.7934324901175089 \\ + 0.028987555757320364 -0.7836518941788541 \\ + 0.025457335361619406 -0.7636799253747881 \\ + 0.022186249838112206 -0.7311723105742058 \\ + 0.01918326500484833 -0.6866601840143534 \\ + 0.016456611834520844 -0.6153303324417764 \\ + 0.014013763893942266 -0.5306645289632332 \\ + 0.011861416859517446 -0.3935649858955451 \\ + 0.010005470164859935 -0.2503435271450401 \\ + 0.008451010830854512 -0.031643953990918634 \\ + 0.007202299522486553 0.16317428924358218 \\ + 0.006262758870655437 0.3565145680444259 \\ + 0.005634964090981155 0.5543051561756894 \\ + 0.005320635925317308 0.6745396658286548 \\ + 0.005320635925317308 0.6864753580027501 \\ + 0.005634964090981155 0.6537298686481565 \\ + 0.006262758870655437 0.5588650716261735 \\ + 0.007202299522486553 0.43079479834403356 \\ + 0.008451010830854512 0.3040191117737403 \\ + 0.010005470164859935 0.17953386140517277 \\ + 0.011861416859517446 0.04942258690539475 \\ + 0.014013763893942266 -0.05309804803794969 \\ + 0.016456611834520844 -0.15244549490478668 \\ + 0.01918326500484833 -0.2299291427689098 \\ + 0.022186249838112206 -0.30152371021096525 \\ + 0.025457335361619406 -0.3584084383267594 \\ + 0.028987555757320364 -0.4083041549510831 \\ + 0.03276723493649307 -0.44827224011690514 \\ + 0.03678601306122967 -0.4803771703450192 \\ + 0.04103287494003215 -0.5060036795927056 \\ + 0.04549618021968645 -0.5253682619701874 \\ + 0.05016369529066156 -0.5405873413649696 \\ + 0.05502262681858294 -0.5488793197010814 \\ + 0.06005965680987275 -0.5541060900695816 \\ + 0.06526097911544454 -0.553479317300725 \\ + 0.07061233727239818 -0.5507250369274151 \\ + 0.07609906357999385 -0.5439100442588141 \\ + 0.0817061193028001 -0.5344877540436836 \\ + 0.08741813589082234 -0.5227620873057021 \\ + 0.09321945710363025 -0.508234070090966 \\ + 0.09909418192302438 -0.4919880688466551 \\ + 0.10502620813662189 -0.4727900680857635 \\ + 0.11099927647290145 -0.45363549680920795 \\ + 0.11699701516673613 -0.43097840660250814 \\ + 0.1230757 -0.40447526848417303 \\ + 0.12922709999999998 -0.37630924625628603 \\ + 0.1353785 -0.3494159514629201 \\ + 0.1415299 -0.3256348417960068 \\ + 0.14768130000000002 -0.303624034717793 \\ + 0.1538327 -0.2837301404468527 \\ + 0.15998410000000002 -0.2644015711840931 \\ + 0.1661355 -0.24560196044248378 \\ + 0.17228690000000002 -0.22702509872589188 \\ + 0.1784383 -0.2091657124061846 \\ + 0.18458970000000002 -0.19192221739831922 \\ + 0.1907411 -0.17494483115659887 \\ + 0.19689250000000003 -0.15798767175953643 \\ + 0.2030439 -0.14116124601904093 \\ + 0.20919529999999997 -0.12439317492925893 \\ + 0.2153467 -0.10753087964863507 \\ + 0.22149809999999998 -0.09052031186435225 \\ + 0.2276495 -0.07333681505950235 \\ + 0.23380089999999998 -0.05580039699598201 \\ + 0.2399523 -0.03765237904447995 \\ + 0.24610369999999998 -0.018708276377409856 \\ + 0.2522551 0.0011345296134763884 \\ + 0.2584065 0.022208469445444006 \\ + 0.2645579 0.04502558782659789 \\ + 0.27070930000000004 0.07012925358377624 \\ + 0.27686069999999996 0.09800605230949014 \\ + 0.2830121 0.1302686063322404 \\ + 0.2891635 0.16980059251010135 \\ + 0.2953149 0.22089306038519826 \\ + 0.30146629999999996 0.3199828954558872 \\ + } + ; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_cpct_comparison_CSOR.tikz b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_cpct_comparison_CSOR.tikz new file mode 100644 index 00000000..0a75e33a --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_cpct_comparison_CSOR.tikz @@ -0,0 +1,136 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, draw opacity={0.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={5.0mm}, yshift={-5.0mm}, width={58.152mm}, height={38.768mm}, scaled x ticks={false}, xlabel={$\mathrm{Advance~Ratio}~\left(\frac{V_\infty}{nD}\right)$}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.06000000000000005}, xmax={2.06}, xticklabels={{$0.0$,$0.5$,$1.0$,$1.5$,$2.0$}}, xtick={{0.0,0.5,1.0,1.5,2.0}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, ymajorgrids={false}, ymin={-0.023334378635239017}, ymax={0.9983069998098729}, yticklabels={{$0.0$,$0.2$,$0.4$,$0.6$,$0.8$}}, ytick={{0.0,0.2,0.4,0.6000000000000001,0.8}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={2cd8dbc9-072e-40a3-9058-02be8c252044}, draw opacity={1.0}, line width={2}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.0 0.64763 \\ + 0.1 0.64716 \\ + 0.2 0.6448 \\ + 0.3 0.64044 \\ + 0.4 0.63401 \\ + 0.5 0.62534 \\ + 0.6 0.61428 \\ + 0.7 0.6006 \\ + 0.8 0.58411 \\ + 0.9 0.56452 \\ + 1.0 0.54158 \\ + 1.1 0.51499 \\ + 1.2 0.48446 \\ + 1.3 0.44966 \\ + 1.4 0.41031 \\ + 1.5 0.36604 \\ + 1.6 0.31654 \\ + 1.7 0.26153 \\ + 1.8 0.20061 \\ + 1.9 0.13355 \\ + 2.0 0.05993 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={84ad8b86-7401-46a7-944f-903148769e13}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.0 0.6476287159264367 \\ + 0.1 0.647371654647963 \\ + 0.2 0.6451967601427122 \\ + 0.3 0.6410289875627373 \\ + 0.4 0.634733091191257 \\ + 0.5 0.6261957084095594 \\ + 0.6 0.6152237993524527 \\ + 0.7 0.6016475568072619 \\ + 0.8 0.5851987856786138 \\ + 0.9 0.5656912239188161 \\ + 1.0 0.542763840922332 \\ + 1.1 0.5162261680256004 \\ + 1.2 0.4856810471236084 \\ + 1.3 0.4507698669583917 \\ + 1.4 0.4112445001146267 \\ + 1.5 0.366778019697278 \\ + 1.6 0.31714318825852233 \\ + 1.7 0.2619153144006484 \\ + 1.8 0.20081207639130014 \\ + 1.9 0.1334344960580589 \\ + 2.0 0.059482538174002134 \\ + } + ; + \addplot[color={rgb,1:red,0.7451;green,0.298;blue,0.302}, name path={bbc1084a-5e34-4ea9-b5c3-aa08f30e8334}, draw opacity={1.0}, line width={2}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.0 0.96692 \\ + 0.1 0.88394 \\ + 0.2 0.80785 \\ + 0.3 0.73801 \\ + 0.4 0.67382 \\ + 0.5 0.61468 \\ + 0.6 0.56001 \\ + 0.7 0.50925 \\ + 0.8 0.46187 \\ + 0.9 0.41738 \\ + 1.0 0.37531 \\ + 1.1 0.33522 \\ + 1.2 0.2967 \\ + 1.3 0.25937 \\ + 1.4 0.2229 \\ + 1.5 0.18694 \\ + 1.6 0.15121 \\ + 1.7 0.11547 \\ + 1.8 0.07941 \\ + 1.9 0.04287 \\ + 2.0 0.00558 \\ + } + ; + \addplot[color={rgb,1:red,0.7451;green,0.298;blue,0.302}, name path={bceee90d-cf57-4883-8d32-12463597d281}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.0 0.9693926211746339 \\ + 0.1 0.886050766590429 \\ + 0.2 0.8096645784047114 \\ + 0.3 0.7396058808831841 \\ + 0.4 0.6752194147096086 \\ + 0.5 0.6159320016219962 \\ + 0.6 0.5611321135172642 \\ + 0.7 0.5102921432534201 \\ + 0.8 0.46283933323260534 \\ + 0.9 0.41832198129927645 \\ + 1.0 0.3762063720769762 \\ + 1.1 0.3361152863457382 \\ + 1.2 0.2975871663012331 \\ + 1.3 0.26021185781075223 \\ + 1.4 0.2236799208927465 \\ + 1.5 0.18766608187458816 \\ + 1.6 0.15193143672519627 \\ + 1.7 0.11614908894182809 \\ + 1.8 0.08009197157348306 \\ + 1.9 0.04348298870741282 \\ + 2.0 0.006139971961726203 \\ + } + ; + \node[left, , color={rgb,1:red,0.7451;green,0.298;blue,0.302}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:1.0,0.3) {$C_T$}; + \node[left, , color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:1.0,0.7) {$C_P$}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_cpct_comparison_DuctAPE.tikz b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_cpct_comparison_DuctAPE.tikz new file mode 100644 index 00000000..3343f7e2 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_cpct_comparison_DuctAPE.tikz @@ -0,0 +1,136 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, draw opacity={0.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={5.0mm}, yshift={-5.0mm}, width={58.152mm}, height={38.768mm}, scaled x ticks={false}, xlabel={$\mathrm{Advance~Ratio}~\left(\frac{V_\infty}{nD}\right)$}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.06000000000000005}, xmax={2.06}, xticklabels={{$0.0$,$0.5$,$1.0$,$1.5$,$2.0$}}, xtick={{0.0,0.5,1.0,1.5,2.0}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, ymajorgrids={false}, ymin={-0.02333312710793245}, ymax={0.9982640307056823}, yticklabels={{$0.0$,$0.2$,$0.4$,$0.6$,$0.8$}}, ytick={{0.0,0.2,0.4,0.6000000000000001,0.8}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={5431e7a8-21dd-4c52-986c-5b8f7136f93b}, draw opacity={1.0}, line width={2}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.0 0.64763 \\ + 0.1 0.64716 \\ + 0.2 0.6448 \\ + 0.3 0.64044 \\ + 0.4 0.63401 \\ + 0.5 0.62534 \\ + 0.6 0.61428 \\ + 0.7 0.6006 \\ + 0.8 0.58411 \\ + 0.9 0.56452 \\ + 1.0 0.54158 \\ + 1.1 0.51499 \\ + 1.2 0.48446 \\ + 1.3 0.44966 \\ + 1.4 0.41031 \\ + 1.5 0.36604 \\ + 1.6 0.31654 \\ + 1.7 0.26153 \\ + 1.8 0.20061 \\ + 1.9 0.13355 \\ + 2.0 0.05993 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={9451e800-433f-4761-b194-b43981a0b2f7}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.0 0.6476006934803172 \\ + 0.1 0.6473639113933127 \\ + 0.2 0.6451964053543922 \\ + 0.3 0.6410232737381847 \\ + 0.4 0.6347375855003032 \\ + 0.5 0.6261995580747164 \\ + 0.6 0.6152374983752142 \\ + 0.7 0.6016498966512803 \\ + 0.8 0.585208234983065 \\ + 0.9 0.565660191565568 \\ + 1.0 0.5427330158319916 \\ + 1.1 0.5161369255543797 \\ + 1.2 0.4855684352854993 \\ + 1.3 0.45071356586707495 \\ + 1.4 0.4112509102403113 \\ + 1.5 0.3668545470038746 \\ + 1.6 0.3171968062700479 \\ + 1.7 0.2619509075965668 \\ + 1.8 0.20079351077297322 \\ + 1.9 0.13340724930972941 \\ + 2.0 0.059483355514814915 \\ + } + ; + \addplot[color={rgb,1:red,0.7451;green,0.298;blue,0.302}, name path={3d38da6c-fc9c-4595-bb68-1ba0d27abcb6}, draw opacity={1.0}, line width={2}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.0 0.96692 \\ + 0.1 0.88394 \\ + 0.2 0.80785 \\ + 0.3 0.73801 \\ + 0.4 0.67382 \\ + 0.5 0.61468 \\ + 0.6 0.56001 \\ + 0.7 0.50925 \\ + 0.8 0.46187 \\ + 0.9 0.41738 \\ + 1.0 0.37531 \\ + 1.1 0.33522 \\ + 1.2 0.2967 \\ + 1.3 0.25937 \\ + 1.4 0.2229 \\ + 1.5 0.18694 \\ + 1.6 0.15121 \\ + 1.7 0.11547 \\ + 1.8 0.07941 \\ + 1.9 0.04287 \\ + 2.0 0.00558 \\ + } + ; + \addplot[color={rgb,1:red,0.7451;green,0.298;blue,0.302}, name path={8e33f02b-d58d-4a00-b45d-e74817037597}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.0 0.9693509035977498 \\ + 0.1 0.8860318441412766 \\ + 0.2 0.8096555611526135 \\ + 0.3 0.7395906519727339 \\ + 0.4 0.6752158810904156 \\ + 0.5 0.6159258131332127 \\ + 0.6 0.5611355675205223 \\ + 0.7 0.5102847110084315 \\ + 0.8 0.46284024810561747 \\ + 0.9 0.418298699267034 \\ + 1.0 0.37618731497340446 \\ + 1.1 0.3360645256196932 \\ + 1.2 0.2975197576810866 \\ + 1.3 0.26017275495468734 \\ + 1.4 0.2236725361390593 \\ + 1.5 0.18769610478799587 \\ + 1.6 0.151947011482736 \\ + 1.7 0.11615385507052457 \\ + 1.8 0.08006880197265562 \\ + 1.9 0.043466200480338876 \\ + 2.0 0.006141370893629546 \\ + } + ; + \node[left, , color={rgb,1:red,0.7451;green,0.298;blue,0.302}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:1.0,0.3) {$C_T$}; + \node[left, , color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:1.0,0.7) {$C_P$}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_efficiency_comparison_CSOR.tikz b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_efficiency_comparison_CSOR.tikz new file mode 100644 index 00000000..a75b5887 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_efficiency_comparison_CSOR.tikz @@ -0,0 +1,80 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, draw opacity={0.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={5.0mm}, yshift={-5.0mm}, width={58.152mm}, height={38.768mm}, scaled x ticks={false}, xlabel={$\mathrm{Advance~Ratio}~\left(\frac{V_\infty}{nD}\right)$}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.06000000000000005}, xmax={2.06}, xticklabels={{$0.0$,$0.5$,$1.0$,$1.5$,$2.0$}}, xtick={{0.0,0.5,1.0,1.5,2.0}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$\eta$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={-0.02302475402241}, ymax={0.7905165547694095}, yticklabels={{$0.0$,$0.2$,$0.4$,$0.6$}}, ytick={{0.0,0.2,0.4,0.6000000000000001}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.7451;green,0.298;blue,0.302}, name path={00dc078f-ed87-49f9-9e7e-1aea920bf252}, draw opacity={1.0}, line width={2}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.0 0.0 \\ + 0.1 0.1366 \\ + 0.2 0.2506 \\ + 0.3 0.3457 \\ + 0.4 0.4251 \\ + 0.5 0.4915 \\ + 0.6 0.547 \\ + 0.7 0.5935 \\ + 0.8 0.6326 \\ + 0.9 0.6654 \\ + 1.0 0.693 \\ + 1.1 0.716 \\ + 1.2 0.7349 \\ + 1.3 0.7499 \\ + 1.4 0.7606 \\ + 1.5 0.7661 \\ + 1.6 0.7643 \\ + 1.7 0.7506 \\ + 1.8 0.7126 \\ + 1.9 0.61 \\ + 2.0 0.1861 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={6088c822-7a73-4822-8111-b5cbad1f4b72}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.0 0.0 \\ + 0.1 0.13686894695323948 \\ + 0.2 0.25098222074941 \\ + 0.3 0.34613374522823714 \\ + 0.4 0.42551392015334677 \\ + 0.5 0.4918047132472121 \\ + 0.6 0.5472468205305563 \\ + 0.7 0.5937105473725457 \\ + 0.8 0.632727674164099 \\ + 0.9 0.6655393742211919 \\ + 1.0 0.6931308678147748 \\ + 1.1 0.7162109127369477 \\ + 1.2 0.7352656680271793 \\ + 1.3 0.7504392816594427 \\ + 1.4 0.7614737441170885 \\ + 1.5 0.7674918007469995 \\ + 1.6 0.7665001417661118 \\ + 1.7 0.7538828023590322 \\ + 1.8 0.7179127442084221 \\ + 1.9 0.6191628175980557 \\ + 2.0 0.20644619917748516 \\ + } + ; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_efficiency_comparison_DuctAPE.tikz b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_efficiency_comparison_DuctAPE.tikz new file mode 100644 index 00000000..1d59b55d --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/single_rotor_efficiency_comparison_DuctAPE.tikz @@ -0,0 +1,80 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, draw opacity={0.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={5.0mm}, yshift={-5.0mm}, width={58.152mm}, height={38.768mm}, scaled x ticks={false}, xlabel={$\mathrm{Advance~Ratio}~\left(\frac{V_\infty}{nD}\right)$}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.06000000000000005}, xmax={2.06}, xticklabels={{$0.0$,$0.5$,$1.0$,$1.5$,$2.0$}}, xtick={{0.0,0.5,1.0,1.5,2.0}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$\eta$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={-0.02302363371107574}, ymax={0.7904780907469331}, yticklabels={{$0.0$,$0.2$,$0.4$,$0.6$}}, ytick={{0.0,0.2,0.4,0.6000000000000001}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.7451;green,0.298;blue,0.302}, name path={c25a651e-505b-406a-b637-fc137ad46bdf}, draw opacity={1.0}, line width={2}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.0 0.0 \\ + 0.1 0.1366 \\ + 0.2 0.2506 \\ + 0.3 0.3457 \\ + 0.4 0.4251 \\ + 0.5 0.4915 \\ + 0.6 0.547 \\ + 0.7 0.5935 \\ + 0.8 0.6326 \\ + 0.9 0.6654 \\ + 1.0 0.693 \\ + 1.1 0.716 \\ + 1.2 0.7349 \\ + 1.3 0.7499 \\ + 1.4 0.7606 \\ + 1.5 0.7661 \\ + 1.6 0.7643 \\ + 1.7 0.7506 \\ + 1.8 0.7126 \\ + 1.9 0.61 \\ + 2.0 0.1861 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={2268dd9f-67d3-4604-8ea6-0652c4984ffa}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.0 0.0 \\ + 0.1 0.13686766107092413 \\ + 0.2 0.25097956356650436 \\ + 0.3 0.3461297033693075 \\ + 0.4 0.4255086804467124 \\ + 0.5 0.49179674848933885 \\ + 0.6 0.5472380038626676 \\ + 0.7 0.5936995912307734 \\ + 0.8 0.6327187082307706 \\ + 0.9 0.6655388428490688 \\ + 1.0 0.693135121689109 \\ + 1.1 0.716226566786713 \\ + 1.2 0.7352696000665389 \\ + 1.3 0.750420238162619 \\ + 1.4 0.7614367355726976 \\ + 1.5 0.7674544570358574 \\ + 1.6 0.7664491368346241 \\ + 1.7 0.7538112978176978 \\ + 1.8 0.7177714209785072 \\ + 1.9 0.6190501741093984 \\ + 2.0 0.20649039854854792 \\ + } + ; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/smeared-cylinder.tikz b/v0.5.0/DuctAPE/theory_latex/figures/smeared-cylinder.tikz new file mode 100644 index 00000000..7e6743e1 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/smeared-cylinder.tikz @@ -0,0 +1,90 @@ +\begin{tikzpicture}[scale=1.0] + + \coordinate (s0) at (0.0,0.05); + \coordinate (s1) at (0.0,1.25); + \coordinate (s2) at (0.0,2.5); + \coordinate (s3) at (0.0,3.75); + \coordinate (ds) at (55:0.25cm); + + %airfoil + \draw[shift={(s3)},plotsgray, pattern={Hatch[angle=80,distance=1.5pt,xshift=.1pt]}, pattern color=plotsgray] plot[smooth] file{figures/wake-screw-airfoil.dat}; + + %airfoil + \draw[shift={(s2)},plotsgray, pattern={Hatch[angle=80,distance=1.5pt,xshift=.1pt]}, pattern color=plotsgray] plot[smooth] file{figures/wake-screw-airfoil.dat}; + + %airfoil + \draw[shift={(s1)},plotsgray, pattern={Hatch[angle=80,distance=1.5pt,xshift=.1pt]}, pattern color=plotsgray] plot[smooth] file{figures/wake-screw-airfoil.dat}; + + %airfoil + \draw[plotsgray, pattern={Hatch[angle=80,distance=1.5pt,xshift=.1pt]}, pattern color=plotsgray] plot[smooth] file{figures/wake-screw-airfoil.dat}; + + \filldraw[shift={($(s3)+(s0)+(ds)$)},thick] (0,0) circle (1pt); + \filldraw[shift={($(s2)+(s0)+(ds)$)},thick] (0,0) circle (1pt); + \filldraw[shift={($(s1)+(s0)+(ds)$)},thick] (0,0) circle (1pt); + \filldraw[shift={($(s0)+(ds)$)},thick] (0,0) circle (1pt); + + + + \draw[shift={($(s3)+(s0)+(ds)$)},dashed] (0,0) -- (55:1.25cm); + \draw[shift={($(s2)+(s0)+(ds)$)},dashed] (0,0) -- (55:2.75cm); + \draw[shift={($(s1)+(s0)+(ds)$)},dashed] (0,0) -- (55:3.25cm); + \draw[shift={($(s0)+(ds)$)},dashed] (0,0) -- (55:3.25cm); + + % gamma theta lines + \coordinate (x1) at (1,0.0); + \coordinate (x2) at ($(x1)+(0.4376,0.0)$); + \coordinate (x3) at ($(x2)+(0.4376,0.0)$); + + \coordinate (gt1) at (0.0,0.0); + \coordinate (gt2) at (0.0,1.025); + \draw[primary,thick] ($(gt1)+(x1)$) -- ($(gt2)+(x1)$); + \draw[primary,thick] ($(gt1)+(x2)$) -- ($(gt2)+(x2)$); + \draw[primary,thick] ($(gt1)+(x3)$) -- ($(gt2)+(x3)$); + + \coordinate (gt1) at (0.0,1.075); + \coordinate (gt2) at (0.0,5.0); + \draw[primary,thick] ($(gt1)+(x1)$) -- ($(gt2)+(x1)$); + \draw[primary,thick] ($(gt1)+(x2)$) -- ($(gt2)+(x2)$); + \draw[primary,thick] ($(gt1)+(x3)$) -- ($(gt2)+(x3)$); + + % \draw[-Stealth, primary] ($(s0)+(ds)$) [partial ellipse =75:380:0.4 and 0.4] node[pos=0.5,left,shift={(-0.05,0.0)}] {\(\gamma_m\)}; + \draw[{Stealth[length=4pt,width=3pt]}-, primary] ($(gt1)+(x1)+(0.0,0.025)$) [partial ellipse =-160:82:0.2 and 0.05]; + \draw[primary] ($(gt1)+(x1)+(0.0,0.025)$) [partial ellipse =98:190:0.2 and 0.05]; + + \draw[{Stealth[length=4pt,width=3pt]}-, primary] ($(gt1)+(x2)+(0.0,0.025)$) [partial ellipse =-160:82:0.2 and 0.05]; + \draw[primary] ($(gt1)+(x2)+(0.0,0.025)$) [partial ellipse =98:190:0.2 and 0.05]; + + \draw[{Stealth[length=4pt,width=3pt]}-, primary] ($(gt1)+(x3)+(0.0,0.025)$) [partial ellipse =-160:82:0.2 and 0.05]; + \draw[primary] ($(gt1)+(x3)+(0.0,0.025)$) [partial ellipse =98:190:0.2 and 0.05]; + + \node[primary] at ($(gt1)+(x3)+(0.5,0.025)$) {\(\gamma_\theta\)}; + + % gamma m lines + \coordinate (y1) at (0.75,2.75); + \coordinate (y2) at ($(y1)+(0,0.625)$); + \coordinate (y3) at ($(y2)+(0,0.625)$); + \coordinate (gm1) at (0.0,0.0); + \coordinate (gm2) at (2.025,0); + \draw[secondary,thick] ($(gm1)+(y1)$) -- ($(gm2)+(y1)$); + \draw[secondary,thick] ($(gm1)+(y2)$) -- ($(gm2)+(y2)$); + \draw[secondary,thick] ($(gm1)+(y3)$) -- ($(gm2)+(y3)$); + + % gamma m lines + \coordinate (gm1) at (2.075,0.0); + \coordinate (gm2) at (3,0); + \draw[secondary,thick] ($(gm1)+(y1)$) -- ($(gm2)+(y1)$); + \draw[secondary,thick] ($(gm1)+(y2)$) -- ($(gm2)+(y2)$); + \draw[secondary,thick] ($(gm1)+(y3)$) -- ($(gm2)+(y3)$); + + \draw[-{Stealth[length=4pt,width=3pt]}, secondary] ($(gm1)+(y1)+(0.025,0.0)$) [partial ellipse =7:240:0.05 and 0.2]; + \draw[secondary] ($(gm1)+(y1)+(0.025,0.0)$) [partial ellipse =270:353:0.05 and 0.2]; + + \draw[-{Stealth[length=4pt,width=3pt]}, secondary] ($(gm1)+(y2)+(0.025,0.0)$) [partial ellipse =7:250:0.05 and 0.2]; + \draw[secondary] ($(gm1)+(y2)+(0.025,0.0)$) [partial ellipse =270:353:0.05 and 0.2]; + + \draw[-{Stealth[length=4pt,width=3pt]}, secondary] ($(gm1)+(y3)+(0.025,0.0)$) [partial ellipse =7:250:0.05 and 0.2]; + \draw[secondary] ($(gm1)+(y3)+(0.025,0.0)$) [partial ellipse =270:353:0.05 and 0.2]; + + \node[secondary,below] at ($(gm1)+(y1)-(0.0,0.1)$) {\(\gamma_m\)}; + +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/smokeringequivalentvortex.tikz b/v0.5.0/DuctAPE/theory_latex/figures/smokeringequivalentvortex.tikz new file mode 100644 index 00000000..12ef20c1 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/smokeringequivalentvortex.tikz @@ -0,0 +1,89 @@ +\begin{tikzpicture} + \coordinate (a11) at (0.0,0.0); + \coordinate (a21) at (1.0,0.0); + \coordinate (ro1) at (1.0,3.0); + \coordinate (rx1) at (2.0,3.0); + \coordinate (a31) at (2.0,0.0); + + \coordinate (a12) at ($(a11)+(4,0)$); + \coordinate (a22) at ($(a21)+(4,0)$); + \coordinate (ro2) at ($(ro1)+(4,0)$); + \coordinate (rx2) at ($(rx1)+(4,0)$); + \coordinate (a32) at ($(a31)+(4,0)$); + + \coordinate (a13) at ($(a12)+(4,0)$); + \coordinate (a23) at ($(a22)+(4,0)$); + \coordinate (ro3) at ($(ro2)+(4,0)$); + \coordinate (rx3) at ($(rx2)+(4,0)$); + \coordinate (a33) at ($(a32)+(4,0)$); + +% - Panel - % + + % axis of symmetry + \draw[dash pattern=on 12pt off 2pt on 1pt off 2pt ] (a21) -- (a31); + \draw[dash pattern=on 12pt off 2pt on 1pt off 2pt ] (a21) -- (a11); + + % radius + \draw[-Stealth] (a21) -- (ro1) node[anchor=west,pos=0.5]{$r_o$}; + + % velocity direction + \draw[-Stealth] (ro1) -- (rx1) node[anchor=north,pos=1.0]{$v_z$}; + + % surface section + % \draw[thick] ($(ro1)-(0.75,0.25)$) -- ($(ro1)+(0.75,0.25)$); + \draw[ thick, primary] (ro1)--+(30:0.75); + \draw[ thick, primary] (ro1)--+(210:0.75); + + % dimension surface section + \draw[->|] ($(ro1)+(-0.0625,0.125)$) -- ++(30:0.75) node[pos=0,anchor=south ]{$\Delta s$}; + \draw[->|] ($(ro1)+(-0.0625,0.125)$) -- ++(210:0.75); + + % gamma + \draw[primary, thick, -{Stealth[bend]}] (ro1) [partial ellipse = 60:300:1 and 1]node[primary, anchor=south east, pos=0.5] {$\gamma$}; + +% - Flat Circle - % + + % big right arrow + \draw[ double distance=1.5pt, + arrows = {-implies}] (2.5,1.5) -- (3.5,1.5); + + % axis of symmetry + \draw[dash pattern=on 12pt off 2pt on 1pt off 2pt ] (a22) -- (a32); + \draw[dash pattern=on 12pt off 2pt on 1pt off 2pt ] (a22) -- (a12); + + % radius + \draw[-Stealth] (a22) -- (ro2) node[anchor=west,pos=0.5]{$r_o$}; + + % velocity direction + \draw[-Stealth] (ro2) -- (rx2) node[anchor=north,pos=1.0]{$v_z$}; + + % dimension surface section + + % rounded rectangle with arrows + \draw[rounded corners=0.05cm, rotate=30, thick, primary] ($(ro2)-(0.75,0.05)$) rectangle ($(ro2)+(0.75,0.05)$); + \draw[arrows={-Stealth[width=3pt, reversed]},primary, thick] ($(ro2)+(0.0,0.0577)$)--+(30:0.5)node[pos=0,anchor=south east, shift={(0.25,0.0)}, primary]{$\frac{1}{2}\gamma \Delta s$}; + \draw[arrows={-Stealth[width=3pt,reversed]},primary, thick] ($(ro2)-(0.0,0.0577)$)--+(210:0.5); + +% - Circle - % + + % big right arrow + \draw[ double distance=1.5pt, + arrows = {-implies}] (6.5,1.5) -- (7.5,1.5); + + % axis of symmetry + \draw[dash pattern=on 12pt off 2pt on 1pt off 2pt ] (a23) -- (a33); + \draw[dash pattern=on 12pt off 2pt on 1pt off 2pt ] (a23) -- (a13); + + % radius + \draw[-Stealth] (a23) -- (ro3) node[anchor=west,pos=0.5]{$r_o$}; + + % velocity direction + \draw[-Stealth] (ro3) -- (rx3) node[anchor=north,pos=1.0]{$v_z$}; + + % circle + \draw[primary, -{Stealth[bend]}, thick] (ro3) [partial ellipse = 200:560:0.75 and 0.75]node[anchor=south east, shift={(-0.,0.)}]{$\frac{1}{2}\primary{\gamma} \Delta s$}; + + % dimension surface section + \draw[-Stealth] (ro3) -- ++(45:0.75) node[pos=0,anchor=south east, shift={(0.25,0.0)}]{$R$}; + +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/smokeringselfinduction.png b/v0.5.0/DuctAPE/theory_latex/figures/smokeringselfinduction.png new file mode 100644 index 00000000..c55434de Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/smokeringselfinduction.png differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/smoothing_plots_default.jl b/v0.5.0/DuctAPE/theory_latex/figures/smoothing_plots_default.jl new file mode 100644 index 00000000..c82fe59e --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/smoothing_plots_default.jl @@ -0,0 +1,238 @@ +#= +Default Plots Settings for creating tikz native figures for dissertation +=# + +using Plots; +pgfplotsx(); +# pythonplot() +using LaTeXStrings +using Measures + +default() +default(; + # #:Plot + # background_color=RGBA(1, 1, 1, 0), + # background_color = nothing, + # background_color_outside = nothing, + # display_type, + # dpi, + # extra_kwargs, + # extra_plot_kwargs, + # fontfamily="Computer Modern", + fontfamily="Garamond", + # foreground_color, + # html_output_format, + # inset_subplots, + # layout, + # link, + # overwrite_figure, + # plot_title, + # plot_title_location, + # plot_titlefontcolor, + # plot_titlefontfamily, + # plot_titlefonthalign, + # plot_titlefontrotation, + # plot_titlefontsize, + # plot_titlefontvalign, + # pos, + # show, + size=(200, 200), #it appears that 100 ≈ 1inch in LaTeX + # tex_output_standalone, + # thickness_scaling, + # warn_on_unsupported, + # window_title, + + ####################### + # :Series + ####################### + # arrow, + # bar_edges, + # bar_position, + # bar_width, + # bins, + # colorbar_entry, + # connections, + # contour_labels, + # contours, + # extra_kwargs, + # fill_z, + fillalpha=0.125, + fillcolor=RGB(128 / 255, 128 / 255, 128 / 255), + # fillrange, + # group, + # hover, + # label, + # levels, + # line_z, + # linealpha, + # linecolor, + # linestyle, + linewidth=1.0, + # marker_z, + # markeralpha, + # markercolor, + # markershape, + # markersize, + markerstrokealpha=0, + # markerstrokecolor, + # markerstrokestyle, + # markerstrokewidth, + # normalize, + # orientation, + # primary, + # quiver, + # ribbon, + # series_annotations, + # seriesalpha, + # seriescolor, + # seriestype, + # show_empty_bins, + # smooth, + # stride, + # subplot, + # weights, + # x, + # xerror, + # y, + # yerror, + # z, + # zerror + + ####################### + # :Subplot + ####################### + # annotationcolor, + # annotationfontfamily="Computer Modern", + annotationfontfamily="Garamond", + annotationfontsize=6, + annotationhalign=:left, + # annotationrotation, + # annotations, + annotationvalign=:bottom, + # aspect_ratio, + background_color_inside=nothing, + background_color_legend=nothing, + background_color_subplot=nothing, + # bottom_margin, + # camera, + # clims, + color_palette=[ + RGB(0.0 / 255, 92.0 / 255, 171.0 / 255) # royal blue + RGB(192.0 / 255, 83.0 / 255, 103.0 / 255) # royal red + RGB(143.0 / 255, 166.0 / 255, 81.0 / 255) # royal green + RGB(130.0 / 255, 130.0 / 255, 130.0 / 255) # royal gray + ], + # colorbar, + # colorbar_continuous_values, + # colorbar_discrete_values, + # colorbar_fontfamily, + # colorbar_formatter, + # colorbar_scale, + # colorbar_tickfontcolor, + # colorbar_tickfontfamily, + # colorbar_tickfonthalign, + # colorbar_tickfontrotation, + # colorbar_tickfontsize, + # colorbar_tickfontvalign, + # colorbar_ticks, + # colorbar_title, + # colorbar_title_location, + # colorbar_titlefontcolor, + # colorbar_titlefontfamily, + # colorbar_titlefonthalign, + # colorbar_titlefontrotation, + # colorbar_titlefontsize, + # colorbar_titlefontvalign, + # extra_kwargs, + # fontfamily_subplot, + foreground_color_legend=nothing, + # foreground_color_subplot, + # foreground_color_title, + # framestyle=:origin, #puts axis at center of plot (or zero,zero I guess) + # left_margin, + # legend=false, # include legend true/false + # legendfontcolor, + # legendfontfamily, + # legendfonthalign, + # legendfontrotation, + # legendfontsize, + # legendfontvalign, + # legendtitle, + # legendtitlefontcolor, + # legendtitlefontfamily, + # legendtitlefonthalign, + # legendtitlefontrotation, + # legendtitlefontsize, + # legendtitlefontvalign, + margin=0mm, + # projection, + # right_margin, + # subplot_index, + # title, + # titlefontcolor, + # titlefontfamily, + # titlefonthalign, + # titlefontrotation, + # titlefontsize, + # titlefontvalign, + # titlelocation, + # top_margin + + ##################### + # :Axis + ##################### + # discrete_values, + # draw_arrow, + # flip, + # foreground_color_axis, + # foreground_color_border, + # foreground_color_grid, + # foreground_color_guide, + # foreground_color_minor_grid, + # foreground_color_text, + # formatter, + grid=false, # background grid true/false + # gridalpha, + # gridlinewidth=0.5, + # gridstyle, + # guide, + # guide_position, + # guidefontcolor, + # guidefontfamily, + # guidefonthalign, + # guidefontrotation, + # guidefontsize, + # guidefontvalign, + # ylims=(0, 3), + # xlims=(0, 2), + # link, + # minorgrid, + # minorgridalpha, + # minorgridlinewidth, + # minorgridstyle, + # minorticks, + # mirror, + # rotation, + # scale, + # showaxis=false, #turns off spines and tick labels, but not ticks + # tick_direction, + # tickfontcolor, + # tickfontfamily, + # tickfonthalign, + # tickfontrotation, + # tickfontsize, + # tickfontvalign, + # ticks=false, #turns off tick marks + # widen, +) + +byublue = RGB(0.0, 46.0 / 255, 93.0 / 255) #BYU Blue +darkblue = RGB(0 / 255, 25 / 255, 50 / 255) +byured = RGB(155.0 / 255, 0, 0) #"BYU" Red +darkred = RGB(50 / 255, 0 / 255, 25 / 255) +middlegray = RGB(128.0 / 255, 128.0 / 255, 128.0 / 255) #Middle Gray +myblue = RGB(0.0 / 255, 92.0 / 255, 171.0 / 255) # royal blue +myred = RGB(192.0 / 255, 83.0 / 255, 103.0 / 255) # royal red +mygreen = RGB(143.0 / 255, 166.0 / 255, 81.0 / 255) # royal green +mygrey = RGB(130.0 / 255, 130.0 / 255, 130.0 / 255) # royal gray + diff --git a/v0.5.0/DuctAPE/theory_latex/figures/solidity-smoothed.tikz b/v0.5.0/DuctAPE/theory_latex/figures/solidity-smoothed.tikz new file mode 100644 index 00000000..ed2b43d6 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/solidity-smoothed.tikz @@ -0,0 +1,238 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={45.8mm}, height={50.8mm}, scaled x ticks={false}, xlabel={Solidity}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.09000000000000008}, xmax={3.09}, xticklabels={{$0$,$1$,$2$,$3$}}, xtick={{0.0,1.0,2.0,3.0}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_{\ell_\mathrm{ss}}$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, ymajorgrids={false}, ymin={0.2903697512727046}, ymax={1.0214225391507328}, yticklabels={{$0.4$,$0.6$,$0.8$,$1.0$}}, ytick={{0.4,0.6000000000000001,0.8,1.0}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={9b84746f-50be-4224-b746-5f30b8b6b4df}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.030303030303030304 1.0 \\ + 0.06060606060606061 1.0 \\ + 0.09090909090909091 1.0 \\ + 0.12121212121212122 1.0 \\ + 0.15151515151515152 1.0 \\ + 0.18181818181818182 1.0 \\ + 0.21212121212121213 1.0 \\ + 0.24242424242424243 1.0 \\ + 0.2727272727272727 1.0 \\ + 0.30303030303030304 1.0 \\ + 0.3333333333333333 1.0 \\ + 0.36363636363636365 1.0 \\ + 0.3939393939393939 1.0 \\ + 0.42424242424242425 1.000000000000031 \\ + 0.45454545454545453 1.000000000008658 \\ + 0.48484848484848486 1.0000000011321493 \\ + 0.5151515151515151 1.0000000778635134 \\ + 0.5454545454545454 1.0000030314595953 \\ + 0.5757575757575758 1.0000679042742788 \\ + 0.6060606060606061 1.0007323659089018 \\ + 0.6363636363636364 0.9984568021146492 \\ + 0.6666666666666666 0.9724965708391975 \\ + 0.696969696969697 0.945379359428743 \\ + 0.7272727272727273 0.9185979355561048 \\ + 0.7575757575757576 0.8893094001743276 \\ + 0.7878787878787878 0.8603956688887157 \\ + 0.8181818181818182 0.832466667413929 \\ + 0.8484848484848485 0.806403449739479 \\ + 0.8787878787878788 0.7820127710636436 \\ + 0.9090909090909091 0.7592481391855712 \\ + 0.9393939393939394 0.7379534532295529 \\ + 0.9696969696969697 0.7179896851619572 \\ + 1.0 0.6992358424338074 \\ + 1.0303030303030303 0.6821546599372428 \\ + 1.0606060606060606 0.6660495450119536 \\ + 1.0909090909090908 0.6508391586936328 \\ + 1.121212121212121 0.6359803791819263 \\ + 1.1515151515151516 0.620987255392311 \\ + 1.1818181818181819 0.6067630097457533 \\ + 1.2121212121212122 0.5932499763815233 \\ + 1.2424242424242424 0.5803961153765241 \\ + 1.2727272727272727 0.569477161793638 \\ + 1.303030303030303 0.5594967517085511 \\ + 1.3333333333333333 0.5499699966273316 \\ + 1.3636363636363635 0.5408666528830552 \\ + 1.393939393939394 0.5321591066928779 \\ + 1.4242424242424243 0.5238220943831335 \\ + 1.4545454545454546 0.515369974042599 \\ + 1.4848484848484849 0.5071873306884214 \\ + 1.5151515151515151 0.49933199306841114 \\ + 1.5454545454545454 0.4917847079040875 \\ + 1.5757575757575757 0.48452770293839176 \\ + 1.606060606060606 0.4775445472166845 \\ + 1.6363636363636365 0.4708200268920773 \\ + 1.6666666666666667 0.46434003457927414 \\ + 1.696969696969697 0.4581814587284587 \\ + 1.7272727272727273 0.4522389732583737 \\ + 1.7575757575757576 0.4465014010803607 \\ + 1.7878787878787878 0.4409583228744835 \\ + 1.8181818181818181 0.4356000139421357 \\ + 1.8484848484848484 0.43041738726986484 \\ + 1.878787878787879 0.425401942103151 \\ + 1.9090909090909092 0.42054571741792035 \\ + 1.9393939393939394 0.4158412497541031 \\ + 1.9696969696969697 0.41128153494148006 \\ + 2.0 0.4068599933049973 \\ + 2.0303030303030303 0.4025704379860213 \\ + 2.0606060606060606 0.39840704605878 \\ + 2.090909090909091 0.39436433215841527 \\ + 2.121212121212121 0.3904371243694897 \\ + 2.1515151515151514 0.38662054215208286 \\ + 2.1818181818181817 0.382909976107382 \\ + 2.212121212121212 0.37930106940637126 \\ + 2.242424242424242 0.37578970072430706 \\ + 2.272727272727273 0.3723719685404311 \\ + 2.303030303030303 0.3690441766771835 \\ + 2.3333333333333335 0.365802820966228 \\ + 2.3636363636363638 0.36264457694016883 \\ + 2.393939393939394 0.3595662884590732 \\ + 2.4242424242424243 0.35656495719000497 \\ + 2.4545454545454546 0.35363773286585204 \\ + 2.484848484848485 0.35078190425692224 \\ + 2.515151515151515 0.3479948907951956 \\ + 2.5454545454545454 0.34527423479684355 \\ + 2.5757575757575757 0.34261759423374677 \\ + 2.606060606060606 0.3400227360093265 \\ + 2.6363636363636362 0.3374875296981113 \\ + 2.6666666666666665 0.335009941712151 \\ + 2.696969696969697 0.332588029860707 \\ + 2.727272727272727 0.3302199382726279 \\ + 2.757575757575758 0.3279038926535179 \\ + 2.787878787878788 0.32563819585221454 \\ + 2.8181818181818183 0.3234212237133049 \\ + 2.8484848484848486 0.3212514211943721 \\ + 2.878787878787879 0.31912729872846923 \\ + 2.909090909090909 0.3170474288139396 \\ + 2.9393939393939394 0.31501044281517354 \\ + 2.9696969696969697 0.31301502795923913 \\ + 3.0 0.31105992451453557 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={2bed704e-652e-45db-a856-393b6dfcd944}, draw opacity={1.0}, line width={2}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.030303030303030304 1.0 \\ + 0.06060606060606061 1.0 \\ + 0.09090909090909091 1.0 \\ + 0.12121212121212122 1.0 \\ + 0.15151515151515152 1.0 \\ + 0.18181818181818182 1.0 \\ + 0.21212121212121213 1.0 \\ + 0.24242424242424243 1.0 \\ + 0.2727272727272727 1.0 \\ + 0.30303030303030304 1.0 \\ + 0.3333333333333333 1.0 \\ + 0.36363636363636365 1.0 \\ + 0.3939393939393939 1.0 \\ + 0.42424242424242425 1.0 \\ + 0.45454545454545453 1.0 \\ + 0.48484848484848486 1.0 \\ + 0.5151515151515151 1.0 \\ + 0.5454545454545454 1.0 \\ + 0.5757575757575758 1.0 \\ + 0.6060606060606061 1.0 \\ + 0.6363636363636364 0.9957220048705054 \\ + 0.6666666666666666 0.9690960827710882 \\ + 0.696969696969697 0.9447854582455333 \\ + 0.7272727272727273 0.9185338294984133 \\ + 0.7575757575757576 0.8893047123647337 \\ + 0.7878787878787878 0.8603953406120209 \\ + 0.8181818181818182 0.8324666432863096 \\ + 0.8484848484848485 0.8064034476816908 \\ + 0.8787878787878788 0.7820127708614998 \\ + 0.9090909090909091 0.759248139162655 \\ + 0.9393939393939394 0.7379534532265871 \\ + 0.9696969696969697 0.7179896851615236 \\ + 1.0 0.6992358424337366 \\ + 1.0303030303030303 0.6821546599372292 \\ + 1.0606060606060606 0.6660495450119507 \\ + 1.0909090909090908 0.6508391586936322 \\ + 1.121212121212121 0.6359803791819262 \\ + 1.1515151515151516 0.620987255392311 \\ + 1.1818181818181819 0.6067630097457533 \\ + 1.2121212121212122 0.5932499763815233 \\ + 1.2424242424242424 0.5803961153765241 \\ + 1.2727272727272727 0.569477161793638 \\ + 1.303030303030303 0.5594967517085511 \\ + 1.3333333333333333 0.5499699966273316 \\ + 1.3636363636363635 0.5408666528830552 \\ + 1.393939393939394 0.5321591066928779 \\ + 1.4242424242424243 0.5238220943831335 \\ + 1.4545454545454546 0.515369974042599 \\ + 1.4848484848484849 0.5071873306884214 \\ + 1.5151515151515151 0.4993319930684111 \\ + 1.5454545454545454 0.49178470790408746 \\ + 1.5757575757575757 0.4845277029383917 \\ + 1.606060606060606 0.47754454721668443 \\ + 1.6363636363636365 0.47082002689207725 \\ + 1.6666666666666667 0.4643400345792741 \\ + 1.696969696969697 0.45818145872845867 \\ + 1.7272727272727273 0.45223897325837364 \\ + 1.7575757575757576 0.4465014010803606 \\ + 1.7878787878787878 0.44095832287448344 \\ + 1.8181818181818181 0.43560001394213566 \\ + 1.8484848484848484 0.4304173872698648 \\ + 1.878787878787879 0.42540194210315097 \\ + 1.9090909090909092 0.4205457174179203 \\ + 1.9393939393939394 0.41584124975410297 \\ + 1.9696969696969697 0.41128153494148 \\ + 2.0 0.4068599933049972 \\ + 2.0303030303030303 0.40257043798602127 \\ + 2.0606060606060606 0.39840704605877997 \\ + 2.090909090909091 0.3943643321584152 \\ + 2.121212121212121 0.39043712436948963 \\ + 2.1515151515151514 0.3866205421520828 \\ + 2.1818181818181817 0.38290997610738187 \\ + 2.212121212121212 0.3793010694063712 \\ + 2.242424242424242 0.375789700724307 \\ + 2.272727272727273 0.37237196854043103 \\ + 2.303030303030303 0.3690441766771834 \\ + 2.3333333333333335 0.36580282096622796 \\ + 2.3636363636363638 0.3626445769401688 \\ + 2.393939393939394 0.3595662884590731 \\ + 2.4242424242424243 0.3565649571900049 \\ + 2.4545454545454546 0.353637732865852 \\ + 2.484848484848485 0.35078190425692213 \\ + 2.515151515151515 0.3479948907951955 \\ + 2.5454545454545454 0.3452742347968435 \\ + 2.5757575757575757 0.3426175942337467 \\ + 2.606060606060606 0.3400227360093264 \\ + 2.6363636363636362 0.33748752969811124 \\ + 2.6666666666666665 0.3350099417121509 \\ + 2.696969696969697 0.33258802986070696 \\ + 2.727272727272727 0.33021993827262786 \\ + 2.757575757575758 0.3279038926535178 \\ + 2.787878787878788 0.3256381958522145 \\ + 2.8181818181818183 0.32342122371330484 \\ + 2.8484848484848486 0.32125142119437206 \\ + 2.878787878787879 0.3191272987284691 \\ + 2.909090909090909 0.31704742881393955 \\ + 2.9393939393939394 0.3150104428151735 \\ + 2.9696969696969697 0.3130150279592391 \\ + 3.0 0.3110599245145355 \\ + } + ; + \node[right, , color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:1.5,0.9) {Nominal}; + \node[right, , color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:1.5,0.8) {Smoothed}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/soliditystagger-correction-margin.pdf b/v0.5.0/DuctAPE/theory_latex/figures/soliditystagger-correction-margin.pdf new file mode 100644 index 00000000..3c548548 Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/soliditystagger-correction-margin.pdf differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/soliditystagger-correction-margin.tikz b/v0.5.0/DuctAPE/theory_latex/figures/soliditystagger-correction-margin.tikz new file mode 100644 index 00000000..5af4e9f0 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/soliditystagger-correction-margin.tikz @@ -0,0 +1,778 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={45.8mm}, height={50.8mm}, scaled x ticks={false}, xlabel={}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorticks={false}, xmajorgrids={false}, xmin={-18.080000000000002}, xmax={20.080000000000002}, axis x line*={left}, separate axis lines, x axis line style={{draw opacity = 0}}, scaled y ticks={false}, ylabel={}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, ymajorticks={false}, ymajorgrids={false}, ymin={-1.4228193239977105}, ymax={1.6767320105016155}, axis y line*={left}, y axis line style={{draw opacity = 0}}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={c37b5ee6-e462-4939-b378-50da5a1dcce9}, draw opacity={1.0}, line width={0.25}, solid, forget plot] + table[row sep={\\}] + { + \\ + -17.0 0.0 \\ + 19.0 0.0 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={22e71cf3-ce75-43a9-8fa8-06348b08d8f4}, draw opacity={1.0}, line width={0.25}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.0 -1.3350961730213144 \\ + 0.0 1.5890088595252194 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={06fd42f4-9da8-4a8a-9dcb-705cdc8b1f07}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -17.0 -1.3263761926191644 \\ + -16.9 -1.3284019384451278 \\ + -16.8 -1.3301543349855023 \\ + -16.7 -1.331636378557983 \\ + -16.6 -1.3328510654802654 \\ + -16.5 -1.3338013920700442 \\ + -16.4 -1.3344903546450155 \\ + -16.3 -1.3349209495228738 \\ + -16.2 -1.3350961730213144 \\ + -16.1 -1.335019021458033 \\ + -16.0 -1.334692491150725 \\ + -15.9 -1.3341195784170845 \\ + -15.8 -1.3333032795748079 \\ + -15.7 -1.3322465909415897 \\ + -15.6 -1.3309525088351257 \\ + -15.5 -1.3294240295731108 \\ + -15.4 -1.3276641494732404 \\ + -15.3 -1.3256758648532094 \\ + -15.2 -1.3234621720307134 \\ + -15.1 -1.3210260673234475 \\ + -15.0 -1.3183705470491074 \\ + -14.9 -1.3155885053659153 \\ + -14.8 -1.3127454998545929 \\ + -14.7 -1.3098035219665838 \\ + -14.6 -1.3067245631533313 \\ + -14.5 -1.3034706148662791 \\ + -14.4 -1.3000036685568699 \\ + -14.3 -1.296285715676548 \\ + -14.2 -1.292278747676756 \\ + -14.1 -1.287944756008938 \\ + -14.0 -1.2832457321245372 \\ + -13.9 -1.2781436674749966 \\ + -13.8 -1.2726005535117604 \\ + -13.7 -1.2665783816862708 \\ + -13.6 -1.2600391434499725 \\ + -13.5 -1.252944830254308 \\ + -13.4 -1.2452574335507216 \\ + -13.3 -1.236938944790656 \\ + -13.2 -1.2279513554255543 \\ + -13.1 -1.218256656906861 \\ + -13.0 -1.2078168406860186 \\ + -12.9 -1.1969545268352275 \\ + -12.8 -1.186018188207181 \\ + -12.7 -1.1750085954240634 \\ + -12.6 -1.1639265191080592 \\ + -12.5 -1.1527727298813533 \\ + -12.4 -1.1415479983661292 \\ + -12.3 -1.1302530951845715 \\ + -12.2 -1.1188887909588647 \\ + -12.1 -1.1074558563111927 \\ + -12.0 -1.0959550618637404 \\ + -11.9 -1.0843871782386918 \\ + -11.8 -1.072752976058231 \\ + -11.7 -1.0610532259445424 \\ + -11.6 -1.0492886985198109 \\ + -11.5 -1.0374601644062207 \\ + -11.4 -1.0255683942259552 \\ + -11.3 -1.0136141586011995 \\ + -11.2 -1.001598228154138 \\ + -11.1 -0.9895213735069548 \\ + -11.0 -0.9773843652818341 \\ + -10.9 -0.9652104621446128 \\ + -10.8 -0.9530235929458453 \\ + -10.7 -0.9408255335847938 \\ + -10.6 -0.9286180599607206 \\ + -10.5 -0.9164029479728876 \\ + -10.4 -0.9041819735205565 \\ + -10.3 -0.8919569125029898 \\ + -10.2 -0.8797295408194489 \\ + -10.1 -0.8675016343691964 \\ + -10.0 -0.855274969051494 \\ + -9.9 -0.8430513207656039 \\ + -9.8 -0.8308324654107879 \\ + -9.7 -0.818620178886308 \\ + -9.6 -0.8064162370914264 \\ + -9.5 -0.7942224159254052 \\ + -9.4 -0.7820404912875063 \\ + -9.3 -0.7698722390769915 \\ + -9.2 -0.757719435193123 \\ + -9.1 -0.7455838555351627 \\ + -9.0 -0.7334672760023729 \\ + -8.9 -0.7213476671605121 \\ + -8.8 -0.7092064757887554 \\ + -8.7 -0.6970506921064885 \\ + -8.6 -0.6848873063330984 \\ + -8.5 -0.6727233086879707 \\ + -8.4 -0.660565689390492 \\ + -8.3 -0.6484214386600484 \\ + -8.2 -0.6362975467160258 \\ + -8.1 -0.624201003777811 \\ + -8.0 -0.6121388000647897 \\ + -7.9 -0.6001179257963486 \\ + -7.8 -0.5881453711918734 \\ + -7.7 -0.5762281264707507 \\ + -7.6 -0.5643731818523667 \\ + -7.5 -0.5525875275561075 \\ + -7.4 -0.5408781538013594 \\ + -7.3 -0.5292520508075083 \\ + -7.2 -0.517716208793941 \\ + -7.1 -0.5062776179800431 \\ + -7.0 -0.49494326858520143 \\ + -6.9 -0.48371911033487036 \\ + -6.8 -0.4726022124991179 \\ + -6.7 -0.4615862446142507 \\ + -6.6 -0.45066487621657486 \\ + -6.5 -0.43983177684239705 \\ + -6.4 -0.4290806160280234 \\ + -6.3 -0.41840506330976024 \\ + -6.2 -0.4077987882239142 \\ + -6.1 -0.3972554603067914 \\ + -6.0 -0.3867687490946983 \\ + -5.9 -0.3763323241239414 \\ + -5.8 -0.36593985493082676 \\ + -5.7 -0.355585011051661 \\ + -5.6 -0.3452614620227504 \\ + -5.5 -0.3349628773804013 \\ + -5.4 -0.3246829266609202 \\ + -5.3 -0.31441527940061326 \\ + -5.2 -0.304153605135787 \\ + -5.1 -0.29389157340274763 \\ + -5.0 -0.28362285373780177 \\ + -4.9 -0.27334848544104173 \\ + -4.8 -0.2630738322468798 \\ + -4.7 -0.2527990503431024 \\ + -4.6 -0.2425242959174956 \\ + -4.5 -0.23224972515784578 \\ + -4.4 -0.2219754942519391 \\ + -4.3 -0.2117017593875617 \\ + -4.2 -0.20142867675249995 \\ + -4.1 -0.19115640253453994 \\ + -4.0 -0.1808850929214681 \\ + -3.9 -0.1706149041010705 \\ + -3.8 -0.16034599226113339 \\ + -3.7 -0.15007851358944305 \\ + -3.6 -0.13981262427378563 \\ + -3.5 -0.12954848050194748 \\ + -3.4 -0.11928623846171468 \\ + -3.3 -0.10902605434087356 \\ + -3.2 -0.09876808432721038 \\ + -3.1 -0.08851248460851127 \\ + -3.0 -0.07825941137256248 \\ + -2.9 -0.06800815075249923 \\ + -2.8 -0.05775790171309017 \\ + -2.7 -0.04750868968957163 \\ + -2.6 -0.03726054011717993 \\ + -2.5 -0.02701347843115147 \\ + -2.4 -0.016767530066722613 \\ + -2.3 -0.006522720459129719 \\ + -2.2 0.003720924956390808 \\ + -2.1 0.013963380744602669 \\ + -2.0 0.024204621470269486 \\ + -1.9 0.034444621698154876 \\ + -1.8 0.044683355993022464 \\ + -1.7 0.054920798919635916 \\ + -1.6 0.06515692504275884 \\ + -1.5 0.07539170892715487 \\ + -1.4 0.0856251251375877 \\ + -1.3 0.09585714823882088 \\ + -1.2 0.10608775279561815 \\ + -1.1 0.11631691337274302 \\ + -1.0 0.12654460453495925 \\ + -0.9 0.13675114698078158 \\ + -0.8 0.1469191062590442 \\ + -0.7 0.15705182420998975 \\ + -0.6 0.1671526426738609 \\ + -0.5 0.17722490349090023 \\ + -0.4 0.18727194850135045 \\ + -0.3 0.1972971195454542 \\ + -0.2 0.20730375846345414 \\ + -0.1 0.21729520709559283 \\ + 0.0 0.22727480728211297 \\ + 0.1 0.2372459008632572 \\ + 0.2 0.24721182967926816 \\ + 0.3 0.25717593557038854 \\ + 0.4 0.26714156037686093 \\ + 0.5 0.27711204593892796 \\ + 0.6 0.28709073409683233 \\ + 0.7 0.2970809666908167 \\ + 0.8 0.3070860855611236 \\ + 0.9 0.31710943254799584 \\ + 1.0 0.32715434949167593 \\ + 1.1 0.3372311618514844 \\ + 1.2 0.34734784498727106 \\ + 1.3 0.357504215590073 \\ + 1.4 0.36770009035092716 \\ + 1.5 0.37793528596087045 \\ + 1.6 0.38820961911093976 \\ + 1.7 0.39852290649217215 \\ + 1.8 0.40887496479560453 \\ + 1.9 0.4192656107122737 \\ + 2.0 0.4296946609332169 \\ + 2.1 0.4401619321494708 \\ + 2.2 0.45066724105207245 \\ + 2.3 0.46121040433205873 \\ + 2.4 0.4717912386804668 \\ + 2.5 0.48240956078833336 \\ + 2.6 0.4930651873466955 \\ + 2.7 0.50375793504659 \\ + 2.8 0.5144876205790542 \\ + 2.9 0.5252540606351245 \\ + 3.0 0.5360570719058383 \\ + 3.1 0.5472176917030886 \\ + 3.2 0.5590142298647537 \\ + 3.3 0.5713824118708475 \\ + 3.4 0.5842579632013845 \\ + 3.5 0.5975766093363787 \\ + 3.6 0.6112740757558444 \\ + 3.7 0.6252860879397959 \\ + 3.8 0.6395483713682468 \\ + 3.9 0.653996651521212 \\ + 4.0 0.6685666538787055 \\ + 4.1 0.6831941039207411 \\ + 4.2 0.6978147271273336 \\ + 4.3 0.7123642489784966 \\ + 4.4 0.7267783949542447 \\ + 4.5 0.7409928905345917 \\ + 4.6 0.7549434611995522 \\ + 4.7 0.7685658324291402 \\ + 4.8 0.7817957297033699 \\ + 4.9 0.7945688785022555 \\ + 5.0 0.806821004305811 \\ + 5.1 0.818768964189323 \\ + 5.2 0.8306621191887592 \\ + 5.3 0.8424849507251556 \\ + 5.4 0.8542219402195486 \\ + 5.5 0.8658575690929744 \\ + 5.6 0.8773763187664694 \\ + 5.7 0.8887626706610697 \\ + 5.8 0.9000011061978116 \\ + 5.9 0.9110761067977312 \\ + 6.0 0.9219721538818648 \\ + 6.1 0.9326737288712489 \\ + 6.2 0.9431653131869197 \\ + 6.3 0.9534313882499131 \\ + 6.4 0.9634564354812657 \\ + 6.5 0.9732249363020133 \\ + 6.6 0.9827213721331928 \\ + 6.7 0.9919302243958399 \\ + 6.8 1.0008359745109914 \\ + 6.9 1.0094231038996828 \\ + 7.0 1.017676093982951 \\ + 7.1 1.0257363947197207 \\ + 7.2 1.0337563825947784 \\ + 7.3 1.041736928817951 \\ + 7.4 1.0496789045990664 \\ + 7.5 1.057583181147952 \\ + 7.6 1.0654506296744348 \\ + 7.7 1.0732821213883428 \\ + 7.8 1.081078527499503 \\ + 7.9 1.0888407192177432 \\ + 8.0 1.0965695677528906 \\ + 8.1 1.104265944314773 \\ + 8.2 1.1119307201132174 \\ + 8.3 1.1195647663580517 \\ + 8.4 1.127168954259103 \\ + 8.5 1.1347441550261987 \\ + 8.6 1.1422912398691667 \\ + 8.7 1.1498110799978338 \\ + 8.8 1.1573045466220284 \\ + 8.9 1.1647725109515767 \\ + 9.0 1.1722158441963073 \\ + 9.1 1.179650461534768 \\ + 9.2 1.1870895824612524 \\ + 9.3 1.1945300346592058 \\ + 9.4 1.2019686458120726 \\ + 9.5 1.2094022436032983 \\ + 9.6 1.216827655716328 \\ + 9.7 1.224241709834606 \\ + 9.8 1.2316412336415778 \\ + 9.9 1.2390230548206882 \\ + 10.0 1.2463840010553824 \\ + 10.1 1.2537209000291054 \\ + 10.2 1.2610305794253018 \\ + 10.3 1.2683098669274173 \\ + 10.4 1.2755555902188962 \\ + 10.5 1.2827645769831837 \\ + 10.6 1.2899336549037248 \\ + 10.7 1.2970596516639645 \\ + 10.8 1.304139394947348 \\ + 10.9 1.3111697124373198 \\ + 11.0 1.3181474318173256 \\ + 11.1 1.325026174277794 \\ + 11.2 1.3317668927068351 \\ + 11.3 1.338377412334413 \\ + 11.4 1.3448655583904925 \\ + 11.5 1.351239156105038 \\ + 11.6 1.3575060307080147 \\ + 11.7 1.3636740074293865 \\ + 11.8 1.3697509114991193 \\ + 11.9 1.3757445681471765 \\ + 12.0 1.3816628026035231 \\ + 12.1 1.3875134400981242 \\ + 12.2 1.3933043058609442 \\ + 12.3 1.399043225121948 \\ + 12.4 1.4047380231110997 \\ + 12.5 1.4103965250583645 \\ + 12.6 1.4160265561937067 \\ + 12.7 1.4216359417470912 \\ + 12.8 1.4272325069484826 \\ + 12.9 1.4328240770278458 \\ + 13.0 1.438418477215145 \\ + 13.1 1.44397194969458 \\ + 13.2 1.449437093844378 \\ + 13.3 1.454816270685545 \\ + 13.4 1.4601118412390868 \\ + 13.5 1.4653261665260098 \\ + 13.6 1.4704616075673198 \\ + 13.7 1.475520525384023 \\ + 13.8 1.4805052809971249 \\ + 13.9 1.485418235427632 \\ + 14.0 1.49026174969655 \\ + 14.1 1.4950381848248855 \\ + 14.2 1.499749901833644 \\ + 14.3 1.5043992617438318 \\ + 14.4 1.5089886255764546 \\ + 14.5 1.5135203543525189 \\ + 14.6 1.51799680909303 \\ + 14.7 1.5224203508189946 \\ + 14.8 1.5267933405514187 \\ + 14.9 1.5311181393113076 \\ + 15.0 1.5353971081196682 \\ + 15.1 1.539551204323609 \\ + 15.2 1.5435032907074437 \\ + 15.3 1.5472585864479875 \\ + 15.4 1.5508223107220547 \\ + 15.5 1.554199682706459 \\ + 15.6 1.557395921578015 \\ + 15.7 1.5604162465135376 \\ + 15.8 1.5632658766898406 \\ + 15.9 1.5659500312837387 \\ + 16.0 1.5684739294720458 \\ + 16.1 1.5708427904315765 \\ + 16.2 1.573061833339145 \\ + 16.3 1.5751362773715663 \\ + 16.4 1.5770713417056537 \\ + 16.5 1.5788722455182223 \\ + 16.6 1.580544207986086 \\ + 16.7 1.5820924482860599 \\ + 16.8 1.5835221855949575 \\ + 16.9 1.5848386390895934 \\ + 17.0 1.5860470279467822 \\ + 17.1 1.5870871836027531 \\ + 17.2 1.587898652660948 \\ + 17.3 1.5884862270490012 \\ + 17.4 1.588854698694547 \\ + 17.5 1.5890088595252194 \\ + 17.6 1.5889535014686522 \\ + 17.7 1.5886934164524797 \\ + 17.8 1.5882333964043356 \\ + 17.9 1.5875782332518544 \\ + 18.0 1.58673271892267 \\ + 18.1 1.5857016453444164 \\ + 18.2 1.5844898044447273 \\ + 18.3 1.5831019881512376 \\ + 18.4 1.5815429883915808 \\ + 18.5 1.5798175970933912 \\ + 18.6 1.5779306061843026 \\ + 18.7 1.575886807591949 \\ + 18.8 1.5736909932439649 \\ + 18.9 1.571347955067984 \\ + 19.0 1.5688624849916406 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={d8b7a671-3991-4e01-a52f-ed49d8c39773}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -17.0 -1.0644508048104238 \\ + -16.9 -1.0660765176261295 \\ + -16.8 -1.067482860651682 \\ + -16.7 -1.0686722385086351 \\ + -16.6 -1.069647055818544 \\ + -16.5 -1.0704097172029627 \\ + -16.4 -1.0709626272834463 \\ + -16.3 -1.0713081906815485 \\ + -16.2 -1.0714488120188244 \\ + -16.1 -1.0713868959168282 \\ + -16.0 -1.071124846997115 \\ + -15.9 -1.0706650698812386 \\ + -15.8 -1.070009969190754 \\ + -15.7 -1.0691619495472153 \\ + -15.6 -1.0681234155721775 \\ + -15.5 -1.0668967718871947 \\ + -15.4 -1.0654844231138216 \\ + -15.3 -1.0638887738736125 \\ + -15.2 -1.0621122287881222 \\ + -15.1 -1.060157192478905 \\ + -15.0 -1.0580260695675159 \\ + -14.9 -1.0557934099908672 \\ + -14.8 -1.0535118253835383 \\ + -14.7 -1.051150812913583 \\ + -14.6 -1.0486798697490551 \\ + -14.5 -1.0460684930580089 \\ + -14.4 -1.0432861800084978 \\ + -14.3 -1.0403024277685764 \\ + -14.2 -1.037086733506298 \\ + -14.1 -1.033608594389717 \\ + -14.0 -1.029837507586887 \\ + -13.9 -1.025742970265862 \\ + -13.8 -1.0212944795946963 \\ + -13.7 -1.0164615327414428 \\ + -13.6 -1.0112136268741567 \\ + -13.5 -1.005520259160891 \\ + -13.4 -0.9993509267697003 \\ + -13.3 -0.992675126868638 \\ + -13.2 -0.985462356625758 \\ + -13.1 -0.9776821132091147 \\ + -13.0 -0.9693038937867616 \\ + -12.9 -0.9605866092147686 \\ + -12.8 -0.9518099178665049 \\ + -12.7 -0.9429744381859756 \\ + -12.6 -0.9340807886171852 \\ + -12.5 -0.9251295876041391 \\ + -12.4 -0.9161214535908413 \\ + -12.3 -0.9070570050212966 \\ + -12.2 -0.8979368603395099 \\ + -12.1 -0.8887616379894857 \\ + -12.0 -0.879531956415229 \\ + -11.9 -0.8702484340607443 \\ + -11.8 -0.8609116893700361 \\ + -11.7 -0.8515223407871093 \\ + -11.6 -0.8420810067559689 \\ + -11.5 -0.8325883057206195 \\ + -11.4 -0.8230448561250653 \\ + -11.3 -0.8134512764133113 \\ + -11.2 -0.8038081850293625 \\ + -11.1 -0.7941162004172233 \\ + -11.0 -0.7843759410208985 \\ + -10.9 -0.7746060725143548 \\ + -10.8 -0.7648257984119288 \\ + -10.7 -0.7550365439181815 \\ + -10.6 -0.7452397342376735 \\ + -10.5 -0.7354367945749654 \\ + -10.4 -0.7256291501346173 \\ + -10.3 -0.7158182261211902 \\ + -10.2 -0.706005447739244 \\ + -10.1 -0.6961922401933399 \\ + -10.0 -0.6863800286880383 \\ + -9.9 -0.6765702384278997 \\ + -9.8 -0.6667642946174844 \\ + -9.7 -0.6569636224613531 \\ + -9.6 -0.6471696471640663 \\ + -9.5 -0.6373837939301848 \\ + -9.4 -0.6276074879642691 \\ + -9.3 -0.6178421544708794 \\ + -9.2 -0.6080892186545763 \\ + -9.1 -0.5983501057199205 \\ + -9.0 -0.5886262408714726 \\ + -8.9 -0.5788999449250478 \\ + -8.8 -0.5691563284466008 \\ + -8.7 -0.5594010012659013 \\ + -8.6 -0.5496395732127198 \\ + -8.5 -0.5398776541168258 \\ + -8.4 -0.5301208538079893 \\ + -8.3 -0.5203747821159804 \\ + -8.2 -0.5106450488705686 \\ + -8.1 -0.5009372639015242 \\ + -8.0 -0.4912570370386169 \\ + -7.9 -0.4816099781116168 \\ + -7.8 -0.4720016969502936 \\ + -7.7 -0.46243780338441737 \\ + -7.6 -0.4529239072437581 \\ + -7.5 -0.4434656183580855 \\ + -7.4 -0.43406854655716964 \\ + -7.3 -0.42473830167078014 \\ + -7.2 -0.4154804935286875 \\ + -7.1 -0.40630073196066097 \\ + -7.0 -0.39720462679647106 \\ + -6.9 -0.38819695284290595 \\ + -6.8 -0.37927535811426805 \\ + -6.7 -0.37043476225159827 \\ + -6.6 -0.36167008489593716 \\ + -6.5 -0.35297624568832575 \\ + -6.4 -0.3443481642698045 \\ + -6.3 -0.3357807602814143 \\ + -6.2 -0.32726895336419587 \\ + -6.1 -0.31880766315918996 \\ + -6.0 -0.31039180930743737 \\ + -5.9 -0.30201631144997887 \\ + -5.8 -0.293676089227855 \\ + -5.7 -0.2853660622821067 \\ + -5.6 -0.2770811502537746 \\ + -5.5 -0.26881627278389963 \\ + -5.4 -0.2605663495135224 \\ + -5.3 -0.2523263000836836 \\ + -5.2 -0.24409104413542415 \\ + -5.1 -0.2358555013097846 \\ + -5.0 -0.22761459124780592 \\ + -4.9 -0.219369148014383 \\ + -4.8 -0.21112347614351137 \\ + -4.7 -0.20287770097988275 \\ + -4.6 -0.19463194786818852 \\ + -4.5 -0.18638634215312036 \\ + -4.4 -0.17814100917936984 \\ + -4.3 -0.16989607429162837 \\ + -4.2 -0.16165166283458768 \\ + -4.1 -0.15340790015293918 \\ + -4.0 -0.14516491159137457 \\ + -3.9 -0.13692282249458532 \\ + -3.8 -0.128681758207263 \\ + -3.7 -0.1204418440740992 \\ + -3.6 -0.11220320543978542 \\ + -3.5 -0.10396596764901331 \\ + -3.4 -0.0957302560464743 \\ + -3.3 -0.08749619597686004 \\ + -3.2 -0.07926391278486208 \\ + -3.1 -0.07103353181517197 \\ + -3.0 -0.0628051784124812 \\ + -2.9 -0.05457827968038008 \\ + -2.8 -0.04635219276761608 \\ + -2.7 -0.03812693808661665 \\ + -2.6 -0.029902536049809216 \\ + -2.5 -0.021679007069621267 \\ + -2.4 -0.013456371558480264 \\ + -2.3 -0.005234649928813662 \\ + -2.2 0.0029861374069510417 \\ + -2.1 0.01120597003638644 \\ + -2.0 0.01942482754706506 \\ + -1.9 0.027642689526559426 \\ + -1.8 0.03585953556244206 \\ + -1.7 0.04407534524228555 \\ + -1.6 0.05229009815366238 \\ + -1.5 0.0605037738841451 \\ + -1.4 0.0687163520213063 \\ + -1.3 0.07692781215271845 \\ + -1.2 0.08513813386595416 \\ + -1.1 0.09334729674858588 \\ + -1.0 0.10155528038818624 \\ + -0.9 0.10974629164219084 \\ + -0.8 0.11790633891780859 \\ + -0.7 0.12603810412727198 \\ + -0.6 0.13414426918281347 \\ + -0.5 0.14222751599666544 \\ + -0.4 0.1502905264810605 \\ + -0.3 0.15833598254823103 \\ + -0.2 0.1663665661104095 \\ + -0.1 0.17438495907982834 \\ + 0.0 0.18239384336872003 \\ + 0.1 0.19039590088931707 \\ + 0.2 0.19839381355385186 \\ + 0.3 0.20639026327455692 \\ + 0.4 0.21438793196366468 \\ + 0.5 0.2223895015334076 \\ + 0.6 0.23039765389601816 \\ + 0.7 0.23841507096372883 \\ + 0.8 0.246444434648772 \\ + 0.9 0.25448842686338025 \\ + 1.0 0.26254972951978595 \\ + 1.1 0.27063662906307523 \\ + 1.2 0.27875552592342634 \\ + 1.3 0.2869062729907099 \\ + 1.4 0.29508872315479673 \\ + 1.5 0.30330272930555735 \\ + 1.6 0.3115481443328624 \\ + 1.7 0.31982482112658256 \\ + 1.8 0.3281326125765886 \\ + 1.9 0.336471371572751 \\ + 2.0 0.34484095100494055 \\ + 2.1 0.35324120376302787 \\ + 2.2 0.36167198273688356 \\ + 2.3 0.37013314081637827 \\ + 2.4 0.37862453089138287 \\ + 2.5 0.3871460058517678 \\ + 2.6 0.3956974185874038 \\ + 2.7 0.40427862198816145 \\ + 2.8 0.4128894689439116 \\ + 2.9 0.4215298123445246 \\ + 3.0 0.4301995050798715 \\ + 3.1 0.4391561878004104 \\ + 3.2 0.44862321126632887 \\ + 3.3 0.45854899353209094 \\ + 3.4 0.46888195265216104 \\ + 3.5 0.47957050668100315 \\ + 3.6 0.4905630736730815 \\ + 3.7 0.5018080716828605 \\ + 3.8 0.5132539187648036 \\ + 3.9 0.5248490329733757 \\ + 4.0 0.5365418323630409 \\ + 4.1 0.5482807349882628 \\ + 4.2 0.5600141589035064 \\ + 4.3 0.5716905221632351 \\ + 4.4 0.5832582428219135 \\ + 4.5 0.5946657389340056 \\ + 4.6 0.6058614285539758 \\ + 4.7 0.616793729736288 \\ + 4.8 0.6274110605354065 \\ + 4.9 0.6376618390057956 \\ + 5.0 0.647494483201919 \\ + 5.1 0.6570830264708788 \\ + 5.2 0.666627587419222 \\ + 5.3 0.6761157119905808 \\ + 5.4 0.6855349461285877 \\ + 5.5 0.6948728357768753 \\ + 5.6 0.7041169268790759 \\ + 5.7 0.7132547653788219 \\ + 5.8 0.7222738972197459 \\ + 5.9 0.73116186834548 \\ + 6.0 0.739906224699657 \\ + 6.1 0.748494512225909 \\ + 6.2 0.7569142768678689 \\ + 6.3 0.7651530645691688 \\ + 6.4 0.773198421273441 \\ + 6.5 0.781037892924318 \\ + 6.6 0.7886590254654325 \\ + 6.7 0.7960493648404167 \\ + 6.8 0.8031964569929033 \\ + 6.9 0.8100878478665243 \\ + 7.0 0.8167110834049125 \\ + 7.1 0.8231796808164253 \\ + 7.2 0.8296159261257726 \\ + 7.3 0.8360205185011138 \\ + 7.4 0.8423941571106094 \\ + 7.5 0.8487375411224191 \\ + 7.6 0.8550513697047025 \\ + 7.7 0.8613363420256201 \\ + 7.8 0.8675931572533314 \\ + 7.9 0.8738225145559968 \\ + 8.0 0.8800251131017758 \\ + 8.1 0.8862016520588288 \\ + 8.2 0.8923528305953151 \\ + 8.3 0.8984793478793954 \\ + 8.4 0.9045819030792291 \\ + 8.5 0.9106611953629763 \\ + 8.6 0.916717923898797 \\ + 8.7 0.9227527878548509 \\ + 8.8 0.9287664863992987 \\ + 8.9 0.9347597187002992 \\ + 9.0 0.9407331839260133 \\ + 9.1 0.9466996544141143 \\ + 9.2 0.9526697391467434 \\ + 9.3 0.9586408922587618 \\ + 9.4 0.9646105678850299 \\ + 9.5 0.9705762201604089 \\ + 9.6 0.9765353032197601 \\ + 9.7 0.9824852711979435 \\ + 9.8 0.988423578229821 \\ + 9.9 0.9943476784502527 \\ + 10.0 1.0002550259941 \\ + 10.1 1.0061430749962241 \\ + 10.2 1.0120092795914852 \\ + 10.3 1.017851093914745 \\ + 10.4 1.0236659721008636 \\ + 10.5 1.0294513682847024 \\ + 10.6 1.035204736601122 \\ + 10.7 1.0409235311849838 \\ + 10.8 1.0466052061711486 \\ + 10.9 1.0522472156944769 \\ + 11.0 1.0578470138898304 \\ + 11.1 1.0633673805768036 \\ + 11.2 1.0687769794498236 \\ + 11.3 1.0740820904559971 \\ + 11.4 1.079288993542431 \\ + 11.5 1.0844039686562328 \\ + 11.6 1.089433295744509 \\ + 11.7 1.094383254754367 \\ + 11.8 1.0992601256329142 \\ + 11.9 1.104070188327257 \\ + 12.0 1.1088197227845027 \\ + 12.1 1.1135150089517583 \\ + 12.2 1.1181623267761314 \\ + 12.3 1.1227679562047284 \\ + 12.4 1.1273381771846567 \\ + 12.5 1.131879269663023 \\ + 12.6 1.1363975135869349 \\ + 12.7 1.1408991889034992 \\ + 12.8 1.1453905755598228 \\ + 12.9 1.149877953503013 \\ + 13.0 1.1543676026801768 \\ + 13.1 1.1588244063254187 \\ + 13.2 1.1632103242279181 \\ + 13.3 1.1675272511673946 \\ + 13.4 1.171777081923567 \\ + 13.5 1.1759617112761553 \\ + 13.6 1.180083034004879 \\ + 13.7 1.1841429448894567 \\ + 13.8 1.188143338709608 \\ + 13.9 1.1920861102450526 \\ + 14.0 1.1959731542755097 \\ + 14.1 1.1998063655806988 \\ + 14.2 1.203587638940339 \\ + 14.3 1.20731886913415 \\ + 14.4 1.211001950941851 \\ + 14.5 1.2146387791431614 \\ + 14.6 1.2182312485178004 \\ + 14.7 1.2217812538454875 \\ + 14.8 1.2252906899059424 \\ + 14.9 1.2287614514788838 \\ + 15.0 1.2321954333440317 \\ + 15.1 1.2355292017516304 \\ + 15.2 1.2387008521139955 \\ + 15.3 1.2417145729539554 \\ + 15.4 1.2445745527943373 \\ + 15.5 1.247284980157968 \\ + 15.6 1.2498500435676752 \\ + 15.7 1.2522739315462865 \\ + 15.8 1.2545608326166293 \\ + 15.9 1.2567149353015308 \\ + 16.0 1.2587404281238181 \\ + 16.1 1.260641499606319 \\ + 16.2 1.262422338271861 \\ + 16.3 1.2640871326432712 \\ + 16.4 1.2656400712433766 \\ + 16.5 1.2670853425950053 \\ + 16.6 1.2684271352209844 \\ + 16.7 1.2696696376441412 \\ + 16.8 1.2708170383873032 \\ + 16.9 1.2718735259732976 \\ + 17.0 1.2728432889249521 \\ + 17.1 1.2736780404315666 \\ + 17.2 1.274329265096847 \\ + 17.3 1.2748008085652307 \\ + 17.4 1.275096516481155 \\ + 17.5 1.275220234489057 \\ + 17.6 1.2751758082333735 \\ + 17.7 1.274967083358542 \\ + 17.8 1.274597905508999 \\ + 17.9 1.2740721203291827 \\ + 18.0 1.2733935734635293 \\ + 18.1 1.2725661105564758 \\ + 18.2 1.2715935772524598 \\ + 18.3 1.2704798191959186 \\ + 18.4 1.2692286820312888 \\ + 18.5 1.2678440114030078 \\ + 18.6 1.2663296529555128 \\ + 18.7 1.2646894523332404 \\ + 18.8 1.2629272551806283 \\ + 18.9 1.2610469071421133 \\ + 19.0 1.2590522538621327 \\ + } + ; + \node[left, , color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{6 pt}{7.800000000000001 pt}\selectfont}}] at (axis cs:15.0,1.5890088595252194) {Nominal}; + \node[left, , color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{6 pt}{7.800000000000001 pt}\selectfont}}] at (axis cs:21.0,0.6376101172445285) {Corrected}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/stagger-smoothed.tikz b/v0.5.0/DuctAPE/theory_latex/figures/stagger-smoothed.tikz new file mode 100644 index 00000000..77d7c0f6 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/stagger-smoothed.tikz @@ -0,0 +1,240 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={45.8mm}, height={50.8mm}, scaled x ticks={false}, xlabel={Stagger (degrees)}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-1.970000000000006}, xmax={102.97}, xticklabels={{$0$,$25$,$50$,$75$,$100$}}, xtick={{0.0,25.0,50.0,75.0,100.0}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_{\ell_\mathrm{ss}}$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, ymajorgrids={false}, ymin={0.38871965277900666}, ymax={1.01895092559128}, yticklabels={{$0.4$,$0.5$,$0.6$,$0.7$,$0.8$,$0.9$,$1.0$}}, ytick={{0.4,0.5,0.6000000000000001,0.7000000000000001,0.8,0.9,1.0}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={fb0ed5e4-35ab-434d-930f-5830a4134cf8}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 1.0 0.4068599933049972 \\ + 2.0 0.4068599933049972 \\ + 3.0 0.4068599933049972 \\ + 4.0 0.4068599933049972 \\ + 5.0 0.4068599933049972 \\ + 6.0 0.4068599933049972 \\ + 7.0 0.4068599933049972 \\ + 8.0 0.4068599933049972 \\ + 9.0 0.4068599933049972 \\ + 10.0 0.4068599933049972 \\ + 11.0 0.4068599933049972 \\ + 12.0 0.4068599933049972 \\ + 13.0 0.4068599933049972 \\ + 14.0 0.4068599933049972 \\ + 15.0 0.4068599933049972 \\ + 16.0 0.4068599933049972 \\ + 17.0 0.4068599933049972 \\ + 18.0 0.4068599933049972 \\ + 19.0 0.4068599933049972 \\ + 20.0 0.4068599933049972 \\ + 21.0 0.40655909024010684 \\ + 22.0 0.406556386915203 \\ + 23.0 0.4068518833302859 \\ + 24.0 0.4074455794853555 \\ + 25.0 0.40833747538041165 \\ + 26.0 0.40952757101545445 \\ + 27.0 0.41101586639048393 \\ + 28.0 0.41280236150550004 \\ + 29.0 0.41488705636050277 \\ + 30.0 0.41726995095549213 \\ + 31.0 0.41995104529046823 \\ + 32.0 0.4229303393654308 \\ + 33.0 0.42620783318038014 \\ + 34.0 0.4297835267353161 \\ + 35.0 0.43365742003023866 \\ + 36.0 0.43782951306514795 \\ + 37.0 0.4422998058400438 \\ + 38.0 0.44706829835492634 \\ + 39.0 0.45213499060979545 \\ + 40.0 0.4574998826046513 \\ + 41.0 0.4631629743394937 \\ + 42.0 0.46912426581432287 \\ + 43.0 0.47538375702913854 \\ + 44.0 0.4819414479839409 \\ + 45.0 0.48879733867873 \\ + 46.0 0.49595142911350565 \\ + 47.0 0.5034037192882679 \\ + 48.0 0.5111542092030168 \\ + 49.0 0.5192028988577524 \\ + 50.0 0.5275497882524747 \\ + 51.0 0.5361948773871836 \\ + 52.0 0.545138166261879 \\ + 53.0 0.5543796548765612 \\ + 54.0 0.5639193432312299 \\ + 55.0 0.5737572313258854 \\ + 56.0 0.5838933191605276 \\ + 57.0 0.5943276067351562 \\ + 58.0 0.6050600940497717 \\ + 59.0 0.6160907811043737 \\ + 60.0 0.6274196678989623 \\ + 61.0 0.6390467544335374 \\ + 62.0 0.6509720407080996 \\ + 63.0 0.663195526722648 \\ + 64.0 0.6757172124771833 \\ + 65.0 0.6885370979717051 \\ + 66.0 0.7016551832062137 \\ + 67.0 0.7150714681807089 \\ + 68.0 0.7287859528951905 \\ + 69.0 0.742798637349659 \\ + 70.0 0.7571095215441139 \\ + 71.0 0.7717186054785556 \\ + 72.0 0.7866258891529841 \\ + 73.0 0.8018313725673992 \\ + 74.0 0.8173350557218009 \\ + 75.0 0.8331369386161891 \\ + 76.0 0.849237021250564 \\ + 77.0 0.8656353036249254 \\ + 78.0 0.8823317857392736 \\ + 79.0 0.8993264675936086 \\ + 80.0 0.9166193491879302 \\ + 81.0 0.9342104305222383 \\ + 82.0 0.9520997115965331 \\ + 83.0 0.9702871924108143 \\ + 84.0 0.9887728729650826 \\ + 85.0 1.0 \\ + 86.0 1.0 \\ + 87.0 1.0 \\ + 88.0 1.0 \\ + 89.0 1.0 \\ + 90.0 1.0 \\ + 91.0 1.0 \\ + 92.0 1.0 \\ + 93.0 1.0 \\ + 94.0 1.0 \\ + 95.0 1.0 \\ + 96.0 1.0 \\ + 97.0 1.0 \\ + 98.0 1.0 \\ + 99.0 1.0 \\ + 100.0 1.0 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={072b17de-446a-455c-a5bc-605b488bc77d}, draw opacity={1.0}, line width={2}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 1.0 0.40685999330499745 \\ + 2.0 0.4068599933049985 \\ + 3.0 0.40685999330500383 \\ + 4.0 0.40685999330503103 \\ + 5.0 0.4068599933051692 \\ + 6.0 0.4068599933058656 \\ + 7.0 0.40685999330934436 \\ + 8.0 0.4068599933265465 \\ + 9.0 0.40685999341060713 \\ + 10.0 0.4068599938156871 \\ + 11.0 0.40685999573538106 \\ + 12.0 0.4068600046493546 \\ + 13.0 0.4068600450003877 \\ + 14.0 0.4068602217657351 \\ + 15.0 0.40686096273322053 \\ + 16.0 0.4068638784565553 \\ + 17.0 0.4068742426389738 \\ + 18.0 0.40690425577280304 \\ + 19.0 0.4069490423192419 \\ + 20.0 0.4068599933049972 \\ + 21.0 0.406603815654666 \\ + 22.0 0.4065653673482496 \\ + 23.0 0.4068519262595962 \\ + 24.0 0.4074450359346553 \\ + 25.0 0.4083372357635006 \\ + 26.0 0.4095274954743027 \\ + 27.0 0.4110158458433105 \\ + 28.0 0.4128023563761271 \\ + 29.0 0.4148870551508107 \\ + 30.0 0.4172699506815995 \\ + 31.0 0.41995104523033433 \\ + 32.0 0.4229303393525429 \\ + 33.0 0.4262078331776712 \\ + 34.0 0.4297835267347557 \\ + 35.0 0.4336574200301243 \\ + 36.0 0.43782951306512485 \\ + 37.0 0.4422998058400392 \\ + 38.0 0.44706829835492545 \\ + 39.0 0.4521349906097953 \\ + 40.0 0.45749988260465124 \\ + 41.0 0.4631629743394937 \\ + 42.0 0.4691242658143228 \\ + 43.0 0.47538375702913854 \\ + 44.0 0.48194144798394095 \\ + 45.0 0.48879733867873 \\ + 46.0 0.4959514291135056 \\ + 47.0 0.5034037192882679 \\ + 48.0 0.5111542092030168 \\ + 49.0 0.5192028988577524 \\ + 50.0 0.5275497882524747 \\ + 51.0 0.5361948773871836 \\ + 52.0 0.545138166261879 \\ + 53.0 0.5543796548765612 \\ + 54.0 0.5639193432312299 \\ + 55.0 0.5737572313258854 \\ + 56.0 0.5838933191605276 \\ + 57.0 0.5943276067351562 \\ + 58.0 0.6050600940497717 \\ + 59.0 0.6160907811043737 \\ + 60.0 0.6274196678989624 \\ + 61.0 0.6390467544335376 \\ + 62.0 0.6509720407081001 \\ + 63.0 0.6631955267226501 \\ + 64.0 0.6757172124771906 \\ + 65.0 0.6885370979717303 \\ + 66.0 0.7016551832063033 \\ + 67.0 0.7150714681810361 \\ + 68.0 0.7287859528964178 \\ + 69.0 0.7427986373543845 \\ + 70.0 0.7571095215627827 \\ + 71.0 0.7717186055541758 \\ + 72.0 0.7866258894668372 \\ + 73.0 0.8018313739008841 \\ + 74.0 0.8173350615151281 \\ + 75.0 0.8331369643144433 \\ + 76.0 0.8492371374112971 \\ + 77.0 0.8656358372309199 \\ + 78.0 0.88233426721634 \\ + 79.0 0.8993380820598444 \\ + 80.0 0.9166735420249442 \\ + 81.0 0.9344579766627344 \\ + 82.0 0.9531582455614829 \\ + 83.0 0.9739204269430451 \\ + 84.0 0.9940451286417074 \\ + 85.0 1.0011141914550836 \\ + 86.0 1.0006628266944737 \\ + 87.0 1.0001650879107247 \\ + 88.0 1.0000306153011447 \\ + 89.0 1.0000045907307484 \\ + 90.0 1.0000009760809583 \\ + 91.0 1.0000007396734782 \\ + 92.0 1.0000008734593988 \\ + 93.0 1.0000009472142009 \\ + 94.0 1.0000009692061975 \\ + 95.0 1.000000974564723 \\ + 96.0 1.000000975760825 \\ + 97.0 1.0000009760152857 \\ + 98.0 1.0000009760677633 \\ + 99.0 1.0000009760783488 \\ + 100.0 1.0000009760804485 \\ + } + ; + \node[right, , color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:5,1.0) {Nominal}; + \node[right, , color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:5,0.9) {Smoothed}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-from-circulation.tikz b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-from-circulation.tikz new file mode 100644 index 00000000..2a322f3f --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-from-circulation.tikz @@ -0,0 +1,78 @@ +\begin{tikzpicture}[scale=1] + %Airfoil + \draw[dash pattern=on 1cm off 0.1cm on 0.05cm off 0.1cm on 6.5cm off 0.1cm on 0.05cm off 0.1cm on 1cm] (-2,0) -- (7,0); + \draw[ thick, plotsgray, pattern={Hatch[angle=35,distance=2pt,xshift=.1pt, line width=0.25pt]}, pattern color=plotsgray] plot[] file{figures/scaled_dfdc_hub_coordinates.dat}; + + \draw[] plot[] file{figures/swirl-velocity-horseshoe1.dat}; + \draw[] plot[] file{figures/swirl-velocity-horseshoe2.dat}; + \draw[] plot[] file{figures/swirl-velocity-horseshoe3.dat}; + \draw[] plot[] file{figures/swirl-velocity-horseshoe4.dat}; + \draw[] plot[] file{figures/swirl-velocity-horseshoe5.dat}; + \draw[] plot[] file{figures/swirl-velocity-horseshoe6.dat}; + \draw[] plot[] file{figures/swirl-velocity-vert11.dat}; + \draw[] plot[] file{figures/swirl-velocity-vert12.dat}; + \draw[] plot[] file{figures/swirl-velocity-vert13.dat}; + \draw[] plot[] file{figures/swirl-velocity-vert14.dat}; + \draw[] plot[] file{figures/swirl-velocity-vert15.dat}; + \draw[] plot[] file{figures/swirl-velocity-vert16.dat}; + \draw[] plot[] file{figures/swirl-velocity-vert21.dat}; + \draw[] plot[] file{figures/swirl-velocity-vert22.dat}; + \draw[] plot[] file{figures/swirl-velocity-vert23.dat}; + \draw[] plot[] file{figures/swirl-velocity-vert24.dat}; + \draw[] plot[] file{figures/swirl-velocity-vert25.dat}; + \draw[] plot[] file{figures/swirl-velocity-vert26.dat}; + \draw[secondary,thick, densely dotted] plot[] file{figures/swirl-velocity-radialpos.dat}; + + % Coordinate system parameters + \coordinate (csysO) at (-1.5,3.0); + \coordinate (er) at ($(csysO) +(0,1)$); + \coordinate (zgap1) at ($(csysO) +(0.065,0)$); + \coordinate (zgap2) at ($(csysO) +(0.135,0)$); + \coordinate (ez) at ($(csysO) +(1,0)$); + + % z-axis + \draw[] (csysO) -- (zgap1); + \draw[-Stealth] (zgap2) -- (ez); + \node[anchor=south,outer sep=0] at (ez) {$\hat{\vect{e}}_z$}; + + % r-axis + \draw[-Stealth,] (csysO) -- (er); + \node[anchor=west,outer sep=0] at (er) {$\hat{\vect{e}}_r$}; + + %theta direction + \draw[-Stealth] ($(csysO) + (0.2,0)$) [partial ellipse =7:350:0.1 and 0.5]; + \node[anchor=north,outer sep=0,shift={(0.0,-0.5)}] at ($(csysO) + (0.2,0)$) {$\hat{\vect{e}}_\theta$}; + + % bGamma contours + \coordinate (bg1) at (1.35, 2.075); + \draw[primary] (bg1) [partial ellipse =105:205:0.25 and 0.05]; + \draw[primary, -{Stealth[length=3pt,width=2pt]}] (bg1) [partial ellipse =70:-155:0.25 and 0.05]; + \draw[line width=0.2pt] ($(bg1)-(0.5,-0.2)$) to [out =0, in =180] ($(bg1)-(0.3,0)$); + \node[left, primary, shift={(0.1,0.0)}, style={font=\tiny}] at ($(bg1)-(0.5,-0.2)$) {\(B_1\Gamma_1\)}; + + \coordinate (bg2) at (2.6, 2.075); + \draw[primary] (bg2) [partial ellipse =105:205:0.25 and 0.05]; + \draw[primary, -{Stealth[length=3pt,width=2pt]}] (bg2) [partial ellipse =70:-155:0.25 and 0.05]; + \draw[line width=0.2pt] ($(bg2)-(0.5,-0.4)$) to [out =270, in =180] ($(bg2)-(0.3,0)$); + \node[above, primary, shift={(0.1,0.0)}, style={font=\tiny}] at ($(bg2)-(0.5,-0.4)$) {\(B_2\Gamma_2\)}; + + + % Gamma tilde contours + \coordinate (g1) at (2.0, 1.5); + \draw[primary, dashed] (g1) [partial ellipse =1:45:1 and 0.15]; + \draw[primary, dashed, -Stealth] (g1) [partial ellipse =60:90:1 and 0.15]; + \draw[primary, dashed] (g1) [partial ellipse =92:123:1 and 0.15]; + \draw[primary, dashed] (g1) [partial ellipse =140:360:1 and 0.15]; + + \coordinate (g2) at (4.0, 0.0); + \draw[primary,thick, densely dotted] (g2) [partial ellipse =-10:-1:0.1 and 1.5]; + \draw[primary,thick] (g2) [partial ellipse =23:28:0.1 and 1.5]; + \draw[primary,thick] (g2) [partial ellipse =32:38:0.1 and 1.5]; + \draw[primary,thick] (g2) [partial ellipse =43:47:0.1 and 1.5]; + \draw[primary,thick, densely dotted] (g2) [partial ellipse =180:190:0.1 and 1.5]; + \draw[primary,-Stealth,bend right, thick] (g2) [partial ellipse =180:48:0.1 and 1.5]; + + \draw[line width=0.2pt] (4.0,1.55) to [out =90, in =200] (3.5,2) node[above right,shift={(-0.1, -0.1)}, primary] {\(\widetilde{\Gamma}\)}; + \draw[line width=0.2pt] (3.0,1.55) to [out =90, in =200] (3.5,2); + +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-horseshoe1.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-horseshoe1.dat new file mode 100644 index 00000000..b8057378 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-horseshoe1.dat @@ -0,0 +1,370 @@ +1.3226452905811623 1.35 +1.3226452905811623 0.5179159116284398 +1.3326653306613225 0.5183525328608061 +1.342685370741483 0.5187822537686517 +1.3527054108216432 0.5192041632020655 +1.3627254509018036 0.5196175736413049 +1.3727454909819639 0.5200220044904662 +1.3827655310621243 0.5204171793463808 +1.3927855711422845 0.5208029424791316 +1.402805611222445 0.5211791049683395 +1.4128256513026052 0.5215454714424007 +1.4228456913827656 0.5219018536806456 +1.4328657314629258 0.5222480819912985 +1.4428857715430863 0.5225840165039306 +1.4529058116232465 0.5229095600577355 +1.462925851703407 0.5232246745829401 +1.4729458917835672 0.5235294013630404 +1.4829659318637276 0.5238238509909937 +1.4929859719438878 0.5241080944982333 +1.5030060120240483 0.5243821716325197 +1.5130260521042085 0.5246461028336952 +1.523046092184369 0.5248998969261992 +1.533066132264529 0.5251435566430739 +1.5430861723446894 0.5253770828159695 +1.5531062124248496 0.5256004778705485 +1.5631262525050098 0.5258137489895801 +1.5731462925851702 0.5260169033669135 +1.5831663326653307 0.5262098462293773 +1.593186372745491 0.5263923841808763 +1.6032064128256511 0.5265642756584495 +1.6132264529058116 0.5267252716902486 +1.623246492985972 0.5268751547880317 +1.6332665330661322 0.5270137808135902 +1.6432865731462925 0.5271411290917672 +1.653306613226453 0.527257367247408 +1.6633266533066133 0.5273629338309977 +1.6733466933867736 0.527458396857622 +1.6833667334669338 0.5275440507374677 +1.6933867735470942 0.5276200201075844 +1.7034068136272547 0.5276863468306158 +1.7134268537074149 0.5277430637779148 +1.723446893787575 0.5277902654272633 +1.7334669338677355 0.5278281843803372 +1.743486973947896 0.5278572837034423 +1.7535070140280562 0.5278783769225663 +1.7635270541082164 0.5278927280991705 +1.7735470941883769 0.52790156546867 +1.7835671342685373 0.5279059700553468 +1.7935871743486975 0.5279069077682932 +1.8036072144288577 0.5279052457893021 +1.813627254509018 0.5279017568208694 +1.8236472945891782 0.5278971123816453 +1.8336673346693386 0.5278918647373935 +1.8436873747494988 0.5278864154128374 +1.8537074148296593 0.5278809662768594 +1.8637274549098195 0.5278754645182429 +1.87374749498998 0.527869868035619 +1.8837675350701402 0.527864229983405 +1.8937875751503006 0.5278586645860343 +1.9038076152304608 0.5278533223740011 +1.9138276553106213 0.5278483715093235 +1.9238476953907815 0.527843982646615 +1.933867735470942 0.5278403153211145 +1.9438877755511021 0.5278375041038967 +1.9539078156312626 0.5278356427551945 +1.9639278557114228 0.5278347643385294 +1.9739478957915833 0.5278348158734592 +1.9839679358717435 0.5278356580890067 +1.993987975951904 0.5278370927814118 +2.0040080160320644 0.5278388851681756 +2.0140280561122244 0.5278407822130641 +2.024048096192385 0.5278425290668294 +2.0340681362725452 0.5278438854996736 +2.0440881763527057 0.5278446442018635 +2.0541082164328657 0.5278446530977935 +2.064128256513026 0.5278438443949225 +2.0741482965931866 0.5278422740719689 +2.0841683366733466 0.5278401102010218 +2.094188376753507 0.527837482110086 +2.104208416833667 0.5278344839082653 +2.1142284569138274 0.527831185216976 +2.124248496993988 0.5278276384898 +2.1342685370741483 0.5278238839823349 +2.1442885771543088 0.527819953092459 +2.1543086172344688 0.5278158705525708 +2.164328657314629 0.52781165578773 +2.1743486973947896 0.5278073236323888 +2.1843687374749496 0.5278028845041856 +2.19438877755511 0.5277983456829849 +2.2044088176352705 0.5277937157722252 +2.214428857715431 0.5277890045963252 +2.2244488977955914 0.5277842229166607 +2.2344689378757514 0.5277793823108543 +2.244488977955912 0.5277744951978603 +2.2545090180360723 0.5277695750127066 +2.2645290581162323 0.5277646365570406 +2.2745490981963927 0.5277596965777672 +2.284569138276553 0.5277547746599062 +2.2945891783567136 0.5277498945717588 +2.304609218436874 0.5277450807867154 +2.314629258517034 0.5277403378107011 +2.3246492985971945 0.5277356539165522 +2.334669338677355 0.5277310064978978 +2.344689378757515 0.5277263661236203 +2.3547094188376754 0.5277216997992502 +2.3647294589178354 0.5277169738314187 +2.374749498997996 0.5277121566348362 +2.3847695390781563 0.5277072218133287 +2.3947895791583167 0.5277021518860352 +2.4048096192384767 0.5276969431258347 +2.414829659318637 0.5276916091703883 +2.4248496993987976 0.527686162425861 +2.434869739478958 0.5276806107924878 +2.444889779559118 0.5276749591135939 +2.4549098196392785 0.5276692101950022 +2.464929859719439 0.5276633655329257 +2.4749498997995993 0.5276574258512289 +2.4849699398797593 0.527651391520839 +2.49498997995992 0.5276452629166 +2.5050100200400798 0.5276390407574318 +2.51503006012024 0.5276327264727928 +2.5250501002004007 0.5276263226957368 +2.5350701402805607 0.5276198344046973 +2.545090180360721 0.5276132685439331 +2.5551102204408815 0.5276066333173403 +2.565130260521042 0.5275999376333524 +2.5751503006012024 0.527593190634754 +2.5851703406813624 0.5275864012586657 +2.595190380761523 0.5275795777763035 +2.6052104208416833 0.5275727272592601 +2.6152304609218433 0.527565854908611 +2.6252505010020037 0.5275589631634923 +2.635270541082164 0.5275520505112365 +2.6452905811623246 0.5275451146122481 +2.655310621242485 0.527538154550466 +2.665330661322645 0.5275311703216681 +2.6753507014028055 0.5275241624545138 +2.685370741482966 0.5275171317165309 +2.695390781563126 0.5275100788657009 +2.7054108216432864 0.5275030044151375 +2.715430861723447 0.5274959083804768 +2.7254509018036073 0.5274887899773144 +2.7354709418837677 0.5274816472290071 +2.7454909819639277 0.5274744764296664 +2.755511022044088 0.527467273275038 +2.7655310621242486 0.5274600346003239 +2.7755511022044086 0.5274527580367411 +2.785571142284569 0.5274454417655645 +2.7955911823647295 0.5274380843456197 +2.80561122244489 0.5274306845905221 +2.8156312625250504 0.5274232414791412 +2.8256513026052104 0.5274157540875545 +2.835671342685371 0.5274082215338386 +2.8456913827655312 0.5274006429288841 +2.8557114228456912 0.527393017327307 +2.8657314629258517 0.5273853436420647 +2.875751503006012 0.5273776205859525 +2.8857715430861726 0.5273698467282475 +2.895791583166333 0.5273620205387926 +2.905811623246493 0.5273541404209954 +2.9158316633266534 0.5273462047377846 +2.925851703406814 0.5273382118335533 +2.935871743486974 0.5273301600545285 +2.9458917835671343 0.5273220477697712 +2.9559118236472948 0.527313873395077 +2.965931863727455 0.5273056354224647 +2.9759519038076157 0.5272973324471656 +2.9859719438877756 0.5272889631416592 +2.995991983967936 0.5272805262432817 +3.0060120240480965 0.527272020551633 +3.0160320641282565 0.5272634449318476 +3.026052104208417 0.5272547983238973 +3.0360721442885774 0.5272460797589038 +3.046092184368738 0.5272372883843769 +3.0561122244488974 0.5272284235015098 +3.066132264529058 0.527219484619329 +3.0761523046092183 0.5272104715329612 +3.0861723446893787 0.5272013843833313 +3.0961923847695387 0.527192223330704 +3.106212424849699 0.5271829884845541 +3.1162324649298596 0.5271736799134756 +3.1262525050100196 0.5271642976492755 +3.13627254509018 0.5271548416862313 +3.1462925851703405 0.52714531197591 +3.156312625250501 0.5271357084172739 +3.1663326653306614 0.5271260308410833 +3.1763527054108214 0.527116278986762 +3.186372745490982 0.5271064524687289 +3.1963927855711423 0.527096550747567 +3.2064128256513023 0.5270865734673031 +3.2164328657314627 0.5270765205139374 +3.226452905811623 0.5270663919307427 +3.2364729458917836 0.5270561878552009 +3.246492985971944 0.5270459084699547 +3.256513026052104 0.5270355539618139 +3.2665330661322645 0.5270251244840187 +3.276553106212425 0.52701462011741 +3.286573146292585 0.5270040408259997 +3.2965931863727453 0.5269933864016076 +3.306613226452906 0.5269826563936936 +3.3166332665330662 0.5269718506391458 +3.3266533066132267 0.5269609694892545 +3.3366733466933867 0.5269500135886808 +3.346693386773547 0.526938983699976 +3.3567134268537075 0.5269278805534864 +3.3667334669338675 0.5269167047051331 +3.376753507014028 0.5269054563858332 +3.3867735470941884 0.5268941353252538 +3.396793587174349 0.5268827405290384 +3.4068136272545093 0.5268712699820634 +3.4168336673346693 0.5268597202374261 +3.4268537074148298 0.5268480868293257 +3.43687374749499 0.5268363653276523 +3.44689378757515 0.5268245513009898 +3.4569138276553106 0.5268126402903711 +3.466933867735471 0.5268006277995804 +3.4769539078156315 0.52678850930019 +3.486973947895792 0.5267762802518747 +3.496993987975952 0.5267639361409777 +3.5070140280561124 0.5267514725431907 +3.517034068136273 0.5267388852199555 +3.527054108216433 0.5267261702647359 +3.5370741482965933 0.5267133237863405 +3.5470941883767537 0.5267003408278135 +3.557114228456914 0.5266872154248866 +3.5671342685370746 0.5266739406309224 +3.5771543086172346 0.5266605084506766 +3.587174348697395 0.5266469096758464 +3.5971943887775555 0.5266331336015582 +3.6072144288577155 0.5266191675858923 +3.6172344689378755 0.5266049963918499 +3.627254509018036 0.5265906012194403 +3.637274549098196 0.5265759582785491 +3.6472945891783564 0.526561040651322 +3.657314629258517 0.5265458318691618 +3.6673346693386772 0.5265303239212342 +3.6773547094188377 0.5265145142137823 +3.6873747494989977 0.5264984032222332 +3.697394789579158 0.5264819925375264 +3.7074148296593186 0.5264652830589301 +3.7174348697394786 0.5264482731063338 +3.727454909819639 0.5264309562123951 +3.7374749498997994 0.5264133183069797 +3.74749498997996 0.5263953338943984 +3.7575150300601203 0.5263769666092459 +3.7675350701402803 0.5263582060255199 +3.7775551102204408 0.5263390661513621 +3.787575150300601 0.526319576798626 +3.797595190380761 0.5262997770548345 +3.8076152304609217 0.5262797100755877 +3.817635270541082 0.5262594185735594 +3.8276553106212425 0.5262389404844176 +3.837675350701403 0.5262183043186598 +3.847695390781563 0.526197523665532 +3.8577154308617234 0.5261765901897527 +3.867735470941884 0.5261554652422142 +3.877755511022044 0.5261340883987812 +3.8877755511022043 0.5261123850786235 +3.8977955911823647 0.5260902690961012 +3.907815631262525 0.5260676443861135 +3.9178356713426856 0.5260444061721598 +3.9278557114228456 0.5260204417604711 +3.937875751503006 0.5259956311016778 +3.9478957915831665 0.5259698472413208 +3.9579158316633265 0.5259429567794041 +3.967935871743487 0.5259148204782187 +3.9779559118236474 0.5258852940667932 +3.987975951903808 0.5258542237665349 +3.9979959919839683 0.5258214378311679 +4.008016032064129 0.5257867376790109 +4.018036072144289 0.5257498870398606 +4.028056112224449 0.525710597790722 +4.038076152304609 0.5256685106799065 +4.04809619238477 0.5256231683849573 +4.05811623246493 0.525573977199955 +4.0681362725450905 0.5255201519186159 +4.078156312625251 0.5254606343456896 +4.088176352705411 0.5253941063503484 +4.098196392785571 0.5253196564528118 +4.108216432865731 0.5252367445198087 +4.118236472945892 0.5251450589942264 +4.128256513026052 0.5250444028519707 +4.138276553106213 0.5249345947220292 +4.148296593186373 0.5248153719481543 +4.158316633266534 0.5246862825592531 +4.168336673346693 0.5245465512988374 +4.1783567134268536 0.5243948900991972 +4.188376753507014 0.5242295814023631 +4.198396793587174 0.5240495186315052 +4.208416833667334 0.5238541101844411 +4.218436873747494 0.5236430938980114 +4.228456913827655 0.5234163911667093 +4.238476953907815 0.523173984445585 +4.248496993987976 0.5229158015170113 +4.258517034068136 0.5226415908459837 +4.268537074148297 0.5223507575037428 +4.278557114228457 0.522042355156527 +4.2885771543086175 0.5217157496824969 +4.298597194388777 0.5213705976872266 +4.3086172344689375 0.5210067444980624 +4.318637274549098 0.5206241426780388 +4.328657314629258 0.5202227842673937 +4.338677354709419 0.5198026375380587 +4.348697394789579 0.5193635794915487 +4.35871743486974 0.518905291998689 +4.368737474949899 0.518427437681252 +4.37875751503006 0.5179298018088063 +4.38877755511022 0.5174122573303395 +4.398797595190381 0.5168747254315794 +4.408817635270541 0.5163171425373112 +4.4188376753507015 0.5157394292878782 +4.428857715430862 0.5151414573609349 +4.438877755511022 0.5145229973106134 +4.448897795591183 0.5138837393887362 +4.458917835671342 0.5132234786252565 +4.468937875751503 0.5125420982114635 +4.478957915831663 0.5118395275954956 +4.488977955911824 0.5111157060001448 +4.498997995991984 0.510370547691037 +4.509018036072145 0.5096039044484909 +4.519038076152305 0.5088155095236824 +4.529058116232465 0.5080049301306339 +4.539078156312625 0.5071718457643438 +4.5490981963927855 0.5063160745890879 +4.559118236472946 0.5054375172078046 +4.569138276553106 0.5045361036976193 +4.579158316633267 0.5036117452432338 +4.589178356713427 0.5026642841388441 +4.599198396793588 0.5016934234718555 +4.609218436873748 0.5006986223981039 +4.619238476953908 0.4996794481831985 +4.629258517034068 0.4986356568742785 +4.6392785571142285 0.4975671292227267 +4.649298597194389 0.49647380412093034 +4.659318637274549 0.49535562002192 +4.66933867735471 0.49421245699135746 +4.67935871743487 0.4930440482547385 +4.68937875751503 0.49184988060850643 +4.69939879759519 0.49062956124221935 +4.709418837675351 0.4893828919299921 +4.719438877755511 0.4881098073855156 +4.729458917835671 0.48681031471471653 +4.739478957915831 0.4854844413991088 +4.749498997995992 0.48413218550787623 +4.759519038076152 0.4827534084634328 +4.7695390781563125 0.48134786166933696 +4.779559118236473 0.4799154284657062 +4.789579158316633 0.47845614376660817 +4.799599198396793 0.4769701488853874 +4.809619238476953 0.4754576560225933 +4.819639278557114 0.4739189188435052 +4.829659318637274 0.47235420832284025 +4.839679358717435 0.47076378368105465 +4.849699398797595 0.46914780238065007 +4.859719438877756 0.4675063362126879 +4.869739478957916 0.46583943821937607 +4.8797595190380765 0.4641472070397298 +4.889779559118236 0.4624298471817879 +4.8997995991983965 0.46068773291217724 +4.909819639278557 0.4589216696248396 +4.919839679358717 0.4571326739003572 +4.929859719438878 0.4553215818345484 +4.939879759519038 0.45348895077647006 +4.949899799599199 0.45163504049776426 +4.959919839679358 0.4497597605556244 +4.969939879759519 0.4478625788652359 +4.979959919839679 0.445942215820965 +4.98997995991984 0.44399654087244855 +5.0 0.44202276207235863 +6.0 0.34402133126250095 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-horseshoe2.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-horseshoe2.dat new file mode 100644 index 00000000..90d17c68 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-horseshoe2.dat @@ -0,0 +1,246 @@ +2.565130260521042 1.35 +2.565130260521042 0.5665720535398885 +2.5751503006012024 0.566565675637154 +2.5851703406813624 0.5665592012544304 +2.595190380761523 0.5665526336512419 +2.6052104208416833 0.5665459757638721 +2.6152304609218433 0.5665392301199065 +2.6252505010020037 0.56653239878632 +2.635270541082164 0.566525483371225 +2.6452905811623246 0.5665184851084653 +2.655310621242485 0.5665114049516358 +2.665330661322645 0.5665042436254794 +2.6753507014028055 0.5664970016486344 +2.685370741482966 0.5664896793376774 +2.695390781563126 0.5664822767997445 +2.7054108216432864 0.5664747939195532 +2.715430861723447 0.5664672303461447 +2.7254509018036073 0.5664595854850807 +2.7354709418837677 0.5664518585032091 +2.7454909819639277 0.5664440483556814 +2.755511022044088 0.5664361538491884 +2.7655310621242486 0.5664281737158752 +2.7755511022044086 0.5664201066577904 +2.785571142284569 0.5664119513715268 +2.7955911823647295 0.5664037065597995 +2.80561122244489 0.5663953709345108 +2.8156312625250504 0.5663869432143785 +2.8256513026052104 0.5663784221192258 +2.835671342685371 0.5663698063624026 +2.8456913827655312 0.5663610946424439 +2.8557114228456912 0.5663522856348945 +2.8657314629258517 0.5663433779852372 +2.875751503006012 0.5663343703047794 +2.8857715430861726 0.5663252611707981 +2.895791583166333 0.5663160491295655 +2.905811623246493 0.5663067327012677 +2.9158316633266534 0.5662973103861596 +2.925851703406814 0.5662877806715052 +2.935871743486974 0.566278142038984 +2.9458917835671343 0.5662683929722857 +2.9559118236472948 0.5662585319646194 +2.965931863727455 0.566248557525778 +2.9759519038076157 0.5662384681882614 +2.9859719438877756 0.5662282625119802 +2.995991983967936 0.5662179390883215 +3.0060120240480965 0.5662074965440034 +3.0160320641282565 0.5661969335449062 +3.026052104208417 0.5661862487999226 +3.0360721442885774 0.5661754410647231 +3.046092184368738 0.5661645091451633 +3.0561122244488974 0.5661534518998295 +3.066132264529058 0.5661422682409023 +3.0761523046092183 0.5661309571320526 +3.0861723446893787 0.5661195175814051 +3.0961923847695387 0.5661079486278832 +3.106212424849699 0.5660962493284927 +3.1162324649298596 0.5660844187479009 +3.1262525050100196 0.5660724559497665 +3.13627254509018 0.56606035998947 +3.1462925851703405 0.5660481299080604 +3.156312625250501 0.5660357647273756 +3.1663326653306614 0.5660232634464518 +3.1763527054108214 0.5660106250395138 +3.186372745490982 0.5659978484560749 +3.1963927855711423 0.5659849326240008 +3.2064128256513023 0.565971876456389 +3.2164328657314627 0.5659586788542594 +3.226452905811623 0.5659453387037136 +3.2364729458917836 0.565931854869567 +3.246492985971944 0.5659182261868394 +3.256513026052104 0.5659044514510727 +3.2665330661322645 0.5658905294082225 +3.276553106212425 0.5658764587447729 +3.286573146292585 0.5658622380787635 +3.2965931863727453 0.5658478659525841 +3.306613226452906 0.5658333408287186 +3.3166332665330662 0.5658186610901206 +3.3266533066132267 0.5658038250323214 +3.3366733466933867 0.5657888308414631 +3.346693386773547 0.5657736765630168 +3.3567134268537075 0.5657583600645787 +3.3667334669338675 0.5657428789953346 +3.376753507014028 0.5657272307444846 +3.3867735470941884 0.5657114124010986 +3.396793587174349 0.5656954207185476 +3.4068136272545093 0.5656792520879442 +3.4168336673346693 0.5656629025271199 +3.4268537074148298 0.5656463676950418 +3.43687374749499 0.5656296429221874 +3.44689378757515 0.5656127232319699 +3.4569138276553106 0.5655956033547902 +3.466933867735471 0.5655782777358894 +3.4769539078156315 0.5655607405375761 +3.486973947895792 0.5655429856358726 +3.496993987975952 0.5655250066110835 +3.5070140280561124 0.5655067967311507 +3.517034068136273 0.565488348925853 +3.527054108216433 0.5654696557487939 +3.5370741482965933 0.5654507093224734 +3.5470941883767537 0.5654315012725437 +3.557114228456914 0.5654120226760111 +3.5671342685370746 0.5653922640205851 +3.5771543086172346 0.5653722151734519 +3.587174348697395 0.5653518653602904 +3.5971943887775555 0.5653312031580973 +3.6072144288577155 0.5653102165087674 +3.6172344689378755 0.5652888927649095 +3.627254509018036 0.5652672187857728 +3.637274549098196 0.5652451811104057 +3.6472945891783564 0.5652227662493714 +3.657314629258517 0.5651999610601116 +3.6673346693386772 0.5651767528819083 +3.6773547094188377 0.5651531294822582 +3.6873747494989977 0.5651290788882746 +3.697394789579158 0.5651045891562653 +3.7074148296593186 0.5650796481210066 +3.7174348697394786 0.5650542431620196 +3.727454909819639 0.5650283610267358 +3.7374749498997994 0.5650019877602191 +3.74749498997996 0.5649751088095857 +3.7575150300601203 0.5649477094025755 +3.7675350701402803 0.5649197752047348 +3.7775551102204408 0.5648912923625362 +3.787575150300601 0.5648622469653558 +3.797595190380761 0.5648326241230878 +3.8076152304609217 0.5648024067932816 +3.817635270541082 0.564771574451083 +3.8276553106212425 0.5647401016730395 +3.837675350701403 0.5647079566987513 +3.847695390781563 0.5646751000414616 +3.8577154308617234 0.5646414832413418 +3.867735470941884 0.5646070478974333 +3.877755511022044 0.5645717251609211 +3.8877755511022043 0.5645354354649219 +3.8977955911823647 0.5644980882924902 +3.907815631262525 0.5644595819118265 +3.9178356713426856 0.5644198030277613 +3.9278557114228456 0.5643786263097478 +3.937875751503006 0.5643359137619208 +3.9478957915831665 0.5642915139014669 +3.9579158316633265 0.5642452607081256 +3.967935871743487 0.5641969722999998 +3.9779559118236474 0.5641464492782373 +3.987975951903808 0.5640934726660631 +3.9979959919839683 0.5640378014858264 +4.008016032064129 0.5639791701072021 +4.018036072144289 0.5639172855030083 +4.028056112224449 0.5638518245952209 +4.038076152304609 0.5637824319589061 +4.04809619238477 0.5637087182903806 +4.05811623246493 0.5636302602611676 +4.0681362725450905 0.5635466027067372 +4.078156312625251 0.563457264591348 +4.088176352705411 0.5633617510249217 +4.098196392785571 0.5632595717337219 +4.108216432865731 0.5631502497170653 +4.118236472945892 0.5630333209067612 +4.128256513026052 0.5629083283608189 +4.138276553106213 0.5627748136824128 +4.148296593186373 0.5626323078759693 +4.158316633266534 0.5624803237723648 +4.168336673346693 0.5623183524658819 +4.1783567134268536 0.5621458669503313 +4.188376753507014 0.5619623380175108 +4.198396793587174 0.5617672618673448 +4.208416833667334 0.5615601738163777 +4.218436873747494 0.5613406500122127 +4.228456913827655 0.5611083018296859 +4.238476953907815 0.560862766485245 +4.248496993987976 0.5606036966658584 +4.258517034068136 0.56033075172839 +4.268537074148297 0.5600435932322598 +4.278557114228457 0.5597418889121707 +4.2885771543086175 0.559425326545175 +4.298597194388777 0.5590936213718577 +4.3086172344689375 0.5587465168739677 +4.318637274549098 0.5583837814180431 +4.328657314629258 0.558005202748896 +4.338677354709419 0.5576105818744629 +4.348697394789579 0.5571997277131894 +4.35871743486974 0.5567724539151891 +4.368737474949899 0.5563285808087955 +4.37875751503006 0.5558679385957712 +4.38877755511022 0.5553903679599345 +4.398797595190381 0.5548957186401471 +4.408817635270541 0.5543838469092021 +4.4188376753507015 0.5538546127111483 +4.428857715430862 0.5533078771231287 +4.438877755511022 0.5527435008082372 +4.448897795591183 0.5521613448109844 +4.458917835671342 0.5515612738154602 +4.468937875751503 0.5509431573220968 +4.478957915831663 0.5503068686253328 +4.488977955911824 0.5496522825387643 +4.498997995991984 0.5489792727010526 +4.509018036072145 0.5482877092037506 +4.519038076152305 0.5475774572799699 +4.529058116232465 0.5468483782869501 +4.539078156312625 0.5461003352196004 +4.5490981963927855 0.5453331964688191 +4.559118236472946 0.5445468362730462 +4.569138276553106 0.543741132979474 +4.579158316633267 0.5429159663470156 +4.589178356713427 0.5420712149436642 +4.599198396793588 0.5412067546112859 +4.609218436873748 0.5403224593127441 +4.619238476953908 0.5394182084248614 +4.629258517034068 0.5384938931961898 +4.6392785571142285 0.5375494191450366 +4.649298597194389 0.536584705412988 +4.659318637274549 0.5355996826165145 +4.66933867735471 0.5345942904878511 +4.67935871743487 0.5335684763672538 +4.68937875751503 0.5325221962162948 +4.69939879759519 0.5314554223989342 +4.709418837675351 0.5303681510072161 +4.719438877755511 0.5292604054330996 +4.729458917835671 0.5281322370901258 +4.739478957915831 0.5269837246989088 +4.749498997995992 0.525814973288928 +4.759519038076152 0.5246261136375097 +4.7695390781563125 0.5234173047396525 +4.779559118236473 0.5221887405090603 +4.789579158316633 0.5209406557104422 +4.799599198396793 0.5196733294619726 +4.809619238476953 0.5183870871051189 +4.819639278557114 0.517082301326321 +4.829659318637274 0.5157593932197994 +4.839679358717435 0.5144188337868351 +4.849699398797595 0.5130611460759449 +4.859719438877756 0.5116869099934424 +4.869739478957916 0.5102967703501753 +4.8797595190380765 0.5088914472114164 +4.889779559118236 0.5074717474673095 +4.8997995991983965 0.5060385767334118 +4.909819639278557 0.5045929518726004 +4.919839679358717 0.5031360079110614 +4.929859719438878 0.5016689999767552 +4.939879759519038 0.5001933082668087 +4.949899799599199 0.49871044988204705 +4.959919839679358 0.49722209805666406 +4.969939879759519 0.4957301093438676 +4.979959919839679 0.4942365590250183 +4.98997995991984 0.49274379024970805 +5.0 0.4912544818543955 +6.0 0.4173072031528441 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-horseshoe3.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-horseshoe3.dat new file mode 100644 index 00000000..e4d377d3 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-horseshoe3.dat @@ -0,0 +1,366 @@ +1.3627254509018036 1.35 +1.3627254509018036 0.7379852875557055 +1.3727454909819639 0.7381413039641624 +1.3827655310621243 0.7382958178283547 +1.3927855711422845 0.7384486758403472 +1.402805611222445 0.7385997319400803 +1.4128256513026052 0.7387488475866002 +1.4228456913827656 0.7388958919339803 +1.4328657314629258 0.7390407419286117 +1.4428857715430863 0.7391832823397565 +1.4529058116232465 0.7393234057321726 +1.462925851703407 0.7394610123881663 +1.4729458917835672 0.7395960101868049 +1.4829659318637276 0.739728314450641 +1.4929859719438878 0.7398578477750211 +1.5030060120240483 0.7399845398572201 +1.5130260521042085 0.7401083273352803 +1.523046092184369 0.740229153642936 +1.533066132264529 0.7403469688849559 +1.5430861723446894 0.7404617297360842 +1.5531062124248496 0.7405733993662875 +1.5631262525050098 0.7406819473951054 +1.5731462925851702 0.7407873498784833 +1.5831663326653307 0.7408895893324147 +1.593186372745491 0.7409886547968453 +1.6032064128256511 0.7410845419321654 +1.6132264529058116 0.7411772531317332 +1.623246492985972 0.7412667976296144 +1.6332665330661322 0.7413531915811564 +1.6432865731462925 0.7414364580950917 +1.653306613226453 0.7415166272001399 +1.6633266533066133 0.7415937357378053 +1.6733466933867736 0.7416678271883963 +1.6833667334669338 0.7417389514594713 +1.6933867735470942 0.7418071646700384 +1.7034068136272547 0.7418725289301945 +1.7134268537074149 0.7419351120986674 +1.723446893787575 0.741994987490999 +1.7334669338677355 0.7420522335072525 +1.743486973947896 0.7421069331498255 +1.7535070140280562 0.7421591734101277 +1.7635270541082164 0.7422090445198577 +1.7735470941883769 0.7422566390920715 +1.7835671342685373 0.7423020512150915 +1.7935871743486975 0.7423453755509881 +1.8036072144288577 0.742386706474363 +1.813627254509018 0.742426137277708 +1.8236472945891782 0.7424637594634249 +1.8336673346693386 0.7424996621380829 +1.8436873747494988 0.7425339315202464 +1.8537074148296593 0.742566650567759 +1.8637274549098195 0.7425978987219557 +1.87374749498998 0.7426277517525497 +1.8837675350701402 0.7426562816676437 +1.8937875751503006 0.7426835566607299 +1.9038076152304608 0.7427096410800202 +1.9138276553106213 0.7427345954140143 +1.9238476953907815 0.7427584762928597 +1.933867735470942 0.7427813365087556 +1.9438877755511021 0.7428032250609448 +1.9539078156312626 0.7428241872320269 +1.9639278557114228 0.7428442647024237 +1.9739478957915833 0.7428634957086223 +1.9839679358717435 0.7428819152477913 +1.993987975951904 0.7428995553258151 +2.0040080160320644 0.7429164452401034 +2.0140280561122244 0.7429326118852376 +2.024048096192385 0.7429480800677662 +2.0340681362725452 0.7429628728157589 +2.0440881763527057 0.7429770116688207 +2.0541082164328657 0.7429905169351778 +2.064128256513026 0.7430034079044271 +2.0741482965931866 0.7430157030081663 +2.0841683366733466 0.7430274199269119 +2.094188376753507 0.7430385756518867 +2.104208416833667 0.743049186519406 +2.1142284569138274 0.7430592682297854 +2.124248496993988 0.74306883585822 +2.1342685370741483 0.7430779038621808 +2.1442885771543088 0.7430864860880035 +2.1543086172344688 0.7430945957781552 +2.164328657314629 0.7431022455799051 +2.1743486973947896 0.7431094475556462 +2.1843687374749496 0.7431162131947798 +2.19438877755511 0.7431225534268199 +2.2044088176352705 0.7431284786351047 +2.214428857715431 0.7431339986703411 +2.2244488977955914 0.743139122863462 +2.2344689378757514 0.743143860037486 +2.244488977955912 0.7431482185182283 +2.2545090180360723 0.7431522061438416 +2.2645290581162323 0.7431558302732988 +2.2745490981963927 0.7431590977940888 +2.284569138276553 0.7431620151295948 +2.2945891783567136 0.7431645882469264 +2.304609218436874 0.7431668226664028 +2.314629258517034 0.7431687234745255 +2.3246492985971945 0.7431702953426579 +2.334669338677355 0.7431715425519433 +2.344689378757515 0.7431724690237439 +2.3547094188376754 0.7431730783541485 +2.3647294589178354 0.7431733738506955 +2.374749498997996 0.7431733585692838 +2.3847695390781563 0.7431730353492446 +2.3947895791583167 0.7431724068447123 +2.4048096192384767 0.7431714755508059 +2.414829659318637 0.7431702438238044 +2.4248496993987976 0.743168713895621 +2.434869739478958 0.7431668878844079 +2.444889779559118 0.7431647678027838 +2.4549098196392785 0.7431623555645867 +2.464929859719439 0.7431596529906459 +2.4749498997995993 0.7431566618138222 +2.4849699398797593 0.743153383683383 +2.49498997995992 0.7431498201686757 +2.5050100200400798 0.743145972761992 +2.51503006012024 0.7431418428804745 +2.5250501002004007 0.7431374318669091 +2.5350701402805607 0.7431327409892584 +2.545090180360721 0.7431277714388561 +2.5551102204408815 0.7431225243273524 +2.565130260521042 0.7431170006826491 +2.5751503006012024 0.7431112014441414 +2.5851703406813624 0.7431051274576317 +2.595190380761523 0.7430987794702945 +2.6052104208416833 0.7430921581260693 +2.6152304609218433 0.7430852639618273 +2.6252505010020037 0.7430780974045909 +2.635270541082164 0.7430706587699708 +2.6452905811623246 0.7430629482617827 +2.655310621242485 0.7430549659724717 +2.665330661322645 0.7430467118839522 +2.6753507014028055 0.7430381858686516 +2.685370741482966 0.7430293876906797 +2.695390781563126 0.7430203170071253 +2.7054108216432864 0.7430109733695283 +2.715430861723447 0.7430013562256033 +2.7254509018036073 0.7429914649212999 +2.7354709418837677 0.74298129870326 +2.7454909819639277 0.742970856721694 +2.755511022044088 0.7429601380336092 +2.7655310621242486 0.7429491416061731 +2.7755511022044086 0.7429378663199522 +2.785571142284569 0.7429263109718816 +2.7955911823647295 0.7429144742779094 +2.80561122244489 0.742902354875302 +2.8156312625250504 0.742889951324629 +2.8256513026052104 0.7428772621114624 +2.835671342685371 0.7428642856478347 +2.8456913827655312 0.7428510202735016 +2.8557114228456912 0.7428374642570583 +2.8657314629258517 0.7428236157969527 +2.875751503006012 0.742809473022436 +2.8857715430861726 0.7427950339944783 +2.895791583166333 0.7427802967066549 +2.905811623246493 0.7427652590860071 +2.9158316633266534 0.7427499189938619 +2.925851703406814 0.7427342742266018 +2.935871743486974 0.7427183225163646 +2.9458917835671343 0.7427020615316559 +2.9559118236472948 0.742685488877855 +2.965931863727455 0.7426686020975942 +2.9759519038076157 0.7426513986709916 +2.9859719438877756 0.7426338760157232 +2.995991983967936 0.7426160314869228 +3.0060120240480965 0.7425978623768978 +3.0160320641282565 0.7425793659146522 +3.026052104208417 0.7425605392652039 +3.0360721442885774 0.7425413795286807 +3.046092184368738 0.742521883739179 +3.0561122244488974 0.7425020488633693 +3.066132264529058 0.7424818717988272 +3.0761523046092183 0.742461349372082 +3.0861723446893787 0.7424404783363742 +3.0961923847695387 0.7424192553691382 +3.106212424849699 0.742397677069247 +3.1162324649298596 0.7423757399540536 +3.1262525050100196 0.7423534404562518 +3.13627254509018 0.7423307749205696 +3.1462925851703405 0.7423077396003028 +3.156312625250501 0.7422843306536925 +3.1663326653306614 0.7422605441401408 +3.1763527054108214 0.7422363760162602 +3.186372745490982 0.7422118221317382 +3.1963927855711423 0.7421868782249947 +3.2064128256513023 0.7421615399185952 +3.2164328657314627 0.7421358027143617 +3.226452905811623 0.7421096619881415 +3.2364729458917836 0.7420831129842114 +3.246492985971944 0.7420561508093083 +3.256513026052104 0.7420287704262836 +3.2665330661322645 0.7420009666473767 +3.276553106212425 0.7419727341271085 +3.286573146292585 0.7419440673547838 +3.2965931863727453 0.7419149606465895 +3.306613226452906 0.7418854081372639 +3.3166332665330662 0.7418554037712947 +3.3266533066132267 0.741824941293577 +3.3366733466933867 0.7417940142394921 +3.346693386773547 0.7417626159244164 +3.3567134268537075 0.74173073943271 +3.3667334669338675 0.7416983776062508 +3.376753507014028 0.7416655230325954 +3.3867735470941884 0.7416321680328474 +3.396793587174349 0.741598304649314 +3.4068136272545093 0.7415639246330136 +3.4168336673346693 0.7415290194310634 +3.4268537074148298 0.741493580173925 +3.43687374749499 0.7414575976623706 +3.44689378757515 0.7414210623539738 +3.4569138276553106 0.7413839643489535 +3.466933867735471 0.7413462933752358 +3.4769539078156315 0.7413080387726138 +3.486973947895792 0.7412691894759048 +3.496993987975952 0.7412297339970213 +3.5070140280561124 0.7411896604058797 +3.517034068136273 0.7411489563101016 +3.527054108216433 0.741107608833479 +3.5370741482965933 0.7410656045932257 +3.5470941883767537 0.741022929676094 +3.557114228456914 0.7409795696134917 +3.5671342685370746 0.740935509355673 +3.5771543086172346 0.740890733245034 +3.587174348697395 0.7408452249885087 +3.5971943887775555 0.7407989676290302 +3.6072144288577155 0.7407519435159724 +3.6172344689378755 0.7407041342744171 +3.627254509018036 0.740655520772971 +3.637274549098196 0.7406060830896594 +3.6472945891783564 0.7405558004751045 +3.657314629258517 0.7405046513116716 +3.6673346693386772 0.7404526130667703 +3.6773547094188377 0.7403996622394017 +3.6873747494989977 0.7403457742997913 +3.697394789579158 0.740290923622373 +3.7074148296593186 0.7402350834125896 +3.7174348697394786 0.740178225628009 +3.727454909819639 0.7401203208941376 +3.7374749498997994 0.7400613384150415 +3.74749498997996 0.7400012458784051 +3.7575150300601203 0.7399400093538916 +3.7675350701402803 0.7398775931824143 +3.7775551102204408 0.7398139598522991 +3.787575150300601 0.7397490698605034 +3.797595190380761 0.7396828815593403 +3.8076152304609217 0.7396153509906149 +3.817635270541082 0.7395464317099657 +3.8276553106212425 0.7394760746047182 +3.837675350701403 0.7394042277088346 +3.847695390781563 0.7393308360186044 +3.8577154308617234 0.7392558413125615 +3.867735470941884 0.7391791819786441 +3.877755511022044 0.7391007928506279 +3.8877755511022043 0.7390206050539897 +3.8977955911823647 0.7389385458603127 +3.907815631262525 0.7388545385491704 +3.9178356713426856 0.7387685022765652 +3.9278557114228456 0.7386803519493143 +3.937875751503006 0.7385899981052351 +3.9478957915831665 0.7384973467995632 +3.9579158316633265 0.7384022994987386 +3.967935871743487 0.7383047529835548 +3.9779559118236474 0.7382045992647296 +3.987975951903808 0.7381017255152885 +3.9979959919839683 0.7379960140259363 +4.008016032064129 0.7378873421914064 +4.018036072144289 0.7377755825372198 +4.028056112224449 0.7376606027973901 +4.038076152304609 0.7375422660542386 +4.04809619238477 0.737420430951363 +4.05811623246493 0.7372949519894202 +4.0681362725450905 0.7371656799109177 +4.078156312625251 0.7370324621733613 +4.088176352705411 0.7368951434979473 +4.098196392785571 0.7367535664581131 +4.108216432865731 0.7366075720345377 +4.118236472945892 0.7364570000953023 +4.128256513026052 0.7363016897992981 +4.138276553106213 0.7361414799462969 +4.148296593186373 0.7359762093107496 +4.158316633266534 0.7358057170013047 +4.168336673346693 0.735629842885306 +4.1783567134268536 0.7354484281064733 +4.188376753507014 0.7352613157025627 +4.198396793587174 0.7350683512839431 +4.208416833667334 0.7348693836624915 +4.218436873747494 0.734664265359801 +4.228456913827655 0.7344528529776899 +4.238476953907815 0.7342350074490294 +4.248496993987976 0.7340105942058838 +4.258517034068136 0.7337794833093781 +4.268537074148297 0.7335415495837384 +4.278557114228457 0.7332966727864952 +4.2885771543086175 0.7330447378187198 +4.298597194388777 0.7327856349215166 +4.3086172344689375 0.73251925981491 +4.318637274549098 0.7322455137647892 +4.328657314629258 0.7319643035844824 +4.338677354709419 0.7316755415891943 +4.348697394789579 0.7313791455266069 +4.35871743486974 0.7310750385068651 +4.368737474949899 0.7307631489522958 +4.37875751503006 0.7304434105649197 +4.38877755511022 0.7301157622945915 +4.398797595190381 0.7297801482970906 +4.408817635270541 0.7294365178817895 +4.4188376753507015 0.7290848254551625 +4.428857715430862 0.728725030469705 +4.438877755511022 0.7283570973885806 +4.448897795591183 0.7279809956758814 +4.458917835671342 0.7275966998158201 +4.468937875751503 0.7272041893470479 +4.478957915831663 0.7268034488994001 +4.488977955911824 0.7263944682305924 +4.498997995991984 0.7259772422682425 +4.509018036072145 0.7255517711668691 +4.519038076152305 0.7251180603909838 +4.529058116232465 0.7246761208352982 +4.539078156312625 0.7242259689915858 +4.5490981963927855 0.7237676271462585 +4.559118236472946 0.7233011235851564 +4.569138276553106 0.7228264927943637 +4.579158316633267 0.7223437756588165 +4.589178356713427 0.7218530196684543 +4.599198396793588 0.7213542791453335 +4.609218436873748 0.7208476155061202 +4.619238476953908 0.7203330975780576 +4.629258517034068 0.7198108019550687 +4.6392785571142285 0.7192808133617066 +4.649298597194389 0.7187432250037107 +4.659318637274549 0.7181981389009886 +4.66933867735471 0.7176456662104199 +4.67935871743487 0.7170859275516657 +4.68937875751503 0.7165190533524223 +4.69939879759519 0.715945184235298 +4.709418837675351 0.7153644714365434 +4.719438877755511 0.7147770772240165 +4.729458917835671 0.7141831752903551 +4.739478957915831 0.7135829511133489 +4.749498997995992 0.7129766022865944 +4.759519038076152 0.7123643388286501 +4.7695390781563125 0.7117463834856576 +4.779559118236473 0.711122972041518 +4.789579158316633 0.7104943536249435 +4.799599198396793 0.7098607909886352 +4.809619238476953 0.7092225607423773 +4.819639278557114 0.7085799535316204 +4.829659318637274 0.7079332741591621 +4.839679358717435 0.7072828416499949 +4.849699398797595 0.7066289892588079 +4.859719438877756 0.7059720644226838 +4.869739478957916 0.7053124286586694 +4.8797595190380765 0.7046504573932574 +4.889779559118236 0.7039865396968547 +4.8997995991983965 0.7033210778857572 +4.909819639278557 0.7026544869496036 +4.919839679358717 0.7019871937408803 +4.929859719438878 0.7013196358618566 +4.939879759519038 0.7006522602179531 +4.949899799599199 0.6999855212208117 +4.959919839679358 0.6993198786048258 +4.969939879759519 0.6986557947900576 +4.979959919839679 0.6979937316898315 +4.98997995991984 0.6973341468368561 +5.0 0.6966774886691991 +6.0 0.6640712608624503 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-horseshoe4.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-horseshoe4.dat new file mode 100644 index 00000000..a9402ffa --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-horseshoe4.dat @@ -0,0 +1,242 @@ +2.6052104208416833 1.35 +2.6052104208416833 0.7825093434889954 +2.6152304609218433 0.78250235114518 +2.6252505010020037 0.7824950538775856 +2.635270541082164 0.7824874517774145 +2.6452905811623246 0.7824795448375604 +2.655310621242485 0.7824713329526313 +2.665330661322645 0.7824628159191672 +2.6753507014028055 0.7824539934360369 +2.685370741482966 0.7824448651050044 +2.695390781563126 0.7824354304314529 +2.7054108216432864 0.7824256888252615 +2.715430861723447 0.7824156396018247 +2.7254509018036073 0.7824052819832051 +2.7354709418837677 0.7823946150994081 +2.7454909819639277 0.782383637989757 +2.755511022044088 0.7823723496043439 +2.7655310621242486 0.7823607488055229 +2.7755511022044086 0.7823488343694126 +2.785571142284569 0.7823366049873751 +2.7955911823647295 0.7823240592674487 +2.80561122244489 0.7823111957357125 +2.8156312625250504 0.7822980128375718 +2.8256513026052104 0.7822845089389574 +2.835671342685371 0.7822706823274329 +2.8456913827655312 0.7822565312132134 +2.8557114228456912 0.7822420537300946 +2.8657314629258517 0.7822272479362967 +2.875751503006012 0.7822121118152258 +2.8857715430861726 0.7821966432761542 +2.895791583166333 0.7821808401548219 +2.905811623246493 0.7821647002139558 +2.9158316633266534 0.7821482211437057 +2.925851703406814 0.7821314005619934 +2.935871743486974 0.782114236014767 +2.9458917835671343 0.7820967249761585 +2.9559118236472948 0.7820788648485314 +2.965931863727455 0.7820606529624184 +2.9759519038076157 0.7820420865763338 +2.9859719438877756 0.782023162876458 +2.995991983967936 0.7820038789761852 +3.0060120240480965 0.7819842319155246 +3.0160320641282565 0.7819642186603515 +3.026052104208417 0.7819438361014979 +3.0360721442885774 0.781923081053678 +3.046092184368738 0.781901950254242 +3.0561122244488974 0.7818804403617515 +3.066132264529058 0.7818585479543738 +3.0761523046092183 0.78183626952809 +3.0861723446893787 0.7818136014947166 +3.0961923847695387 0.7817905401797391 +3.106212424849699 0.7817670818199589 +3.1162324649298596 0.7817432225609541 +3.1262525050100196 0.7817189584543558 +3.13627254509018 0.7816942854549387 +3.1462925851703405 0.7816691994175241 +3.156312625250501 0.7816436960936924 +3.1663326653306614 0.7816177711283006 +3.1763527054108214 0.7815914200557956 +3.186372745490982 0.7815646382963186 +3.1963927855711423 0.7815374211515852 +3.2064128256513023 0.7815097638005334 +3.2164328657314627 0.7814816612947245 +3.226452905811623 0.7814531085534844 +3.2364729458917836 0.7814241003587731 +3.246492985971944 0.7813946313497714 +3.256513026052104 0.7813646960171735 +3.2665330661322645 0.7813342886971745 +3.276553106212425 0.7813034035651445 +3.286573146292585 0.7812720346289765 +3.2965931863727453 0.7812401757221005 +3.306613226452906 0.7812078204961501 +3.3166332665330662 0.7811749624132738 +3.3266533066132267 0.7811415947380794 +3.3366733466933867 0.7811077105292047 +3.346693386773547 0.7810733026305102 +3.3567134268537075 0.7810383636618909 +3.3667334669338675 0.7810028860097064 +3.376753507014028 0.7809668618168276 +3.3867735470941884 0.7809302829722997 +3.396793587174349 0.7808931411006078 +3.4068136272545093 0.7808554275505373 +3.4168336673346693 0.7808171333836013 +3.4268537074148298 0.7807782493620065 +3.43687374749499 0.7807387659361115 +3.44689378757515 0.78069867323133 +3.4569138276553106 0.7806579610344195 +3.466933867735471 0.7806166187790992 +3.4769539078156315 0.7805746355309359 +3.486973947895792 0.7805319999714393 +3.496993987975952 0.780488700381305 +3.5070140280561124 0.7804447246227488 +3.517034068136273 0.7804000601208735 +3.527054108216433 0.7803546938440115 +3.5370741482965933 0.7803086122829831 +3.5470941883767537 0.7802618014292134 +3.557114228456914 0.7802142467516352 +3.5671342685370746 0.7801659331723023 +3.5771543086172346 0.7801168450406157 +3.587174348697395 0.7800669661060483 +3.5971943887775555 0.7800162794892296 +3.6072144288577155 0.7799647676512264 +3.6172344689378755 0.779912412360826 +3.627254509018036 0.7798591946595971 +3.637274549098196 0.779805094824471 +3.6472945891783564 0.7797500923275611 +3.657314629258517 0.7796941657929154 +3.6673346693386772 0.7796372929499074 +3.6773547094188377 0.7795794505830042 +3.6873747494989977 0.7795206144777075 +3.697394789579158 0.7794607593625152 +3.7074148296593186 0.7793998588467882 +3.7174348697394786 0.7793378853544372 +3.727454909819639 0.7792748100533542 +3.7374749498997994 0.7792106027805114 +3.74749498997996 0.7791452319626468 +3.7575150300601203 0.7790786645324561 +3.7675350701402803 0.7790108658402303 +3.7775551102204408 0.7789417995609639 +3.787575150300601 0.778871427597127 +3.797595190380761 0.7787997099775277 +3.8076152304609217 0.7787266047529149 +3.817635270541082 0.7786520678891806 +3.8276553106212425 0.778576053159181 +3.837675350701403 0.7784985120343063 +3.847695390781563 0.7784193935769967 +3.8577154308617234 0.778338644335403 +3.867735470941884 0.7782562082413541 +3.877755511022044 0.7781720265127156 +3.8877755511022043 0.7780860375611199 +3.8977955911823647 0.7779981769059828 +3.907815631262525 0.7779083770956882 +3.9178356713426856 0.7778165676368504 +3.9278557114228456 0.7777226749326394 +3.937875751503006 0.7776266222312668 +3.9478957915831665 0.7775283295858882 +3.9579158316633265 0.7774277138273564 +3.967935871743487 0.7773246885514561 +3.9779559118236474 0.7772191641224503 +3.987975951903808 0.7771110476949444 +3.9979959919839683 0.7770002432562131 +4.008016032064129 0.7768866516911821 +4.018036072144289 0.77677017087219 +4.028056112224449 0.7766506957754125 +4.038076152304609 0.7765281186254062 +4.04809619238477 0.7764023290685717 +4.05811623246493 0.7762732143754361 +4.0681362725450905 0.7761406596705237 +4.078156312625251 0.7760045481872571 +4.088176352705411 0.7758647615439355 +4.098196392785571 0.7757211800356113 +4.108216432865731 0.7755736829361267 +4.118236472945892 0.7754221488056011 +4.128256513026052 0.7752664558005918 +4.138276553106213 0.7751064819860831 +4.148296593186373 0.7749421056498257 +4.158316633266534 0.7747732056200679 +4.168336673346693 0.7745996615872518 +4.1783567134268536 0.7744213544288596 +4.188376753507014 0.7742381665344887 +4.198396793587174 0.774049982125819 +4.208416833667334 0.7738566875644262 +4.218436873747494 0.773658171641082 +4.228456913827655 0.7734543258424764 +4.238476953907815 0.7732450445939306 +4.248496993987976 0.7730302254788776 +4.258517034068136 0.7728097694372583 +4.268537074148297 0.772583580945349 +4.278557114228457 0.7723515681789661 +4.2885771543086175 0.7721136431606831 +4.298597194388777 0.7718697218902216 +4.3086172344689375 0.7716197244569274 +4.318637274549098 0.7713635751340332 +4.328657314629258 0.7711012024555914 +4.338677354709419 0.7708325392780283 +4.348697394789579 0.7705575228289919 +4.35871743486974 0.7702760947464027 +4.368737474949899 0.7699882011103968 +4.37875751503006 0.7696937924701918 +4.38877755511022 0.7693928238673106 +4.398797595190381 0.7690852548564441 +4.408817635270541 0.7687710495253853 +4.4188376753507015 0.7684501765156907 +4.428857715430862 0.7681226090458634 +4.438877755511022 0.7677883249388183 +4.448897795591183 0.7674473066551701 +4.458917835671342 0.7670995413334691 +4.468937875751503 0.7667450208380154 +4.478957915831663 0.7663837418147106 +4.488977955911824 0.7660157057555558 +4.498997995991984 0.765640919072659 +4.509018036072145 0.7652593931827872 +4.519038076152305 0.7648711446034806 +4.529058116232465 0.7644761950615101 +4.539078156312625 0.7640745716139926 +4.5490981963927855 0.7636663067817565 +4.559118236472946 0.7632514386941373 +4.569138276553106 0.7628300112444956 +4.579158316633267 0.7624020742561447 +4.589178356713427 0.7619676836587458 +4.599198396793588 0.7615269016754118 +4.609218436873748 0.7610797970206417 +4.619238476953908 0.7606264451087917 +4.629258517034068 0.760166928271901 +4.6392785571142285 0.7597013359849928 +4.649298597194389 0.7592297650969347 +4.659318637274549 0.7587523200653915 +4.66933867735471 0.7582691131949505 +4.67935871743487 0.7577802648778954 +4.68937875751503 0.7572859038371996 +4.69939879759519 0.756786167371058 +4.709418837675351 0.7562812015974687 +4.719438877755511 0.7557711616966335 +4.729458917835671 0.7552562121488501 +4.739478957915831 0.7547365269659907 +4.749498997995992 0.7542122899152586 +4.759519038076152 0.753683694734438 +4.7695390781563125 0.7531509453382036 +4.779559118236473 0.7526142560150733 +4.789579158316633 0.7520738516142492 +4.799599198396793 0.7515299677213719 +4.809619238476953 0.750982850822498 +4.819639278557114 0.7504327584562948 +4.829659318637274 0.7498799593553458 +4.839679358717435 0.7493247335784352 +4.849699398797595 0.7487673726366995 +4.859719438877756 0.748208179617634 +4.869739478957916 0.7476474693120824 +4.8797595190380765 0.7470855683505647 +4.889779559118236 0.7465228153568978 +4.8997995991983965 0.7459595611293397 +4.909819639278557 0.7453961688627543 +4.919839679358717 0.7448330144296524 +4.929859719438878 0.7442704867439827 +4.939879759519038 0.7437089882394736 +4.949899799599199 0.7431489355036969 +4.959919839679358 0.7425907601196177 +4.969939879759519 0.7420349097787685 +4.979959919839679 0.7414818497452048 +4.98997995991984 0.7409320647681121 +5.0 0.7403860615642683 +6.0 0.713274095406441 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-horseshoe5.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-horseshoe5.dat new file mode 100644 index 00000000..b49c7a93 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-horseshoe5.dat @@ -0,0 +1,362 @@ +1.402805611222445 1.35 +1.402805611222445 0.9576340170991967 +1.4128256513026052 0.9576932578572841 +1.4228456913827656 0.9577521116403189 +1.4328657314629258 0.9578105502926887 +1.4428857715430863 0.9578685465431436 +1.4529058116232465 0.9579260740586913 +1.462925851703407 0.9579831074913283 +1.4729458917835672 0.9580396225182924 +1.4829659318637276 0.9580955958764663 +1.4929859719438878 0.9581510053914972 +1.5030060120240483 0.9582058300021445 +1.5130260521042085 0.9582600497803082 +1.523046092184369 0.958313645947133 +1.533066132264529 0.958366600885522 +1.5430861723446894 0.9584188981493371 +1.5531062124248496 0.9584705224694977 +1.5631262525050098 0.9585214597571348 +1.5731462925851702 0.9585716971038971 +1.5831663326653307 0.9586212227794518 +1.593186372745491 0.9586700262261687 +1.6032064128256511 0.9587180980509368 +1.6132264529058116 0.9587654300140219 +1.623246492985972 0.9588120150148556 +1.6332665330661322 0.9588578470746337 +1.6432865731462925 0.9589029213156084 +1.653306613226453 0.9589472339369756 +1.6633266533066133 0.9589907821872874 +1.6733466933867736 0.9590335643333534 +1.6833667334669338 0.9590755796256317 +1.6933867735470942 0.9591168282601487 +1.7034068136272547 0.9591573113370242 +1.7134268537074149 0.9591970308157207 +1.723446893787575 0.959235989467185 +1.7334669338677355 0.9592741908231149 +1.743486973947896 0.9593116391226482 +1.7535070140280562 0.9593483392568571 +1.7635270541082164 0.9593842967115042 +1.7735470941883769 0.9594195175085897 +1.7835671342685373 0.9594540081472791 +1.7935871743486975 0.9594877755448264 +1.8036072144288577 0.959520826978121 +1.813627254509018 0.9595531700264613 +1.8236472945891782 0.959584812516123 +1.8336673346693386 0.9596157624672251 +1.8436873747494988 0.9596460280433302 +1.8537074148296593 0.9596756175041264 +1.8637274549098195 0.9597045391614607 +1.87374749498998 0.9597328013389057 +1.8837675350701402 0.9597604123349688 +1.8937875751503006 0.9597873803899906 +1.9038076152304608 0.9598137136567239 +1.9138276553106213 0.9598394201745463 +1.9238476953907815 0.9598645078472253 +1.933867735470942 0.9598889844241227 +1.9438877755511021 0.959912857484702 +1.9539078156312626 0.9599361344261751 +1.9639278557114228 0.9599588224541006 +1.9739478957915833 0.9599809285757162 +1.9839679358717435 0.9600024595957686 +1.993987975951904 0.960023422114575 +2.0040080160320644 0.9600438225280343 +2.0140280561122244 0.9600636670292927 +2.024048096192385 0.9600829616117612 +2.0340681362725452 0.9601017120731908 +2.0440881763527057 0.9601199240205179 +2.0541082164328657 0.9601376028752207 +2.064128256513026 0.9601547538789539 +2.0741482965931866 0.9601713820992677 +2.0841683366733466 0.9601874924352524 +2.094188376753507 0.9602030896229932 +2.104208416833667 0.960218178240755 +2.1142284569138274 0.9602327627138454 +2.124248496993988 0.9602468473191329 +2.1342685370741483 0.9602604361892124 +2.1442885771543088 0.9602735333162278 +2.1543086172344688 0.9602861425553663 +2.164328657314629 0.9602982676280508 +2.1743486973947896 0.9603099121248546 +2.1843687374749496 0.960321079508168 +2.19438877755511 0.9603317731146465 +2.2044088176352705 0.9603419961574658 +2.214428857715431 0.9603517517284152 +2.2244488977955914 0.9603610427998502 +2.2344689378757514 0.9603698722265331 +2.244488977955912 0.9603782427473827 +2.2545090180360723 0.960386156987155 +2.2645290581162323 0.9603936174580762 +2.2745490981963927 0.9604006265614445 +2.284569138276553 0.9604071865892204 +2.2945891783567136 0.9604132997256153 +2.304609218436874 0.9604189680486928 +2.314629258517034 0.9604241935319885 +2.3246492985971945 0.9604289780461516 +2.334669338677355 0.9604333233606076 +2.344689378757515 0.9604372311452355 +2.3547094188376754 0.9604407029720501 +2.3647294589178354 0.9604437403168761 +2.374749498997996 0.960446344560998 +2.3847695390781563 0.9604485169927697 +2.3947895791583167 0.9604502588091681 +2.4048096192384767 0.960451571117274 +2.414829659318637 0.960452454935669 +2.4248496993987976 0.9604529111957391 +2.434869739478958 0.9604529407428744 +2.444889779559118 0.9604525443375652 +2.4549098196392785 0.9604517226563881 +2.464929859719439 0.9604504762928842 +2.4749498997995993 0.9604488057583284 +2.4849699398797593 0.9604467114823946 +2.49498997995992 0.960444193813717 +2.5050100200400798 0.9604412530203544 +2.51503006012024 0.9604378892901593 +2.5250501002004007 0.9604341027310594 +2.5350701402805607 0.960429893371258 +2.545090180360721 0.9604252611593567 +2.5551102204408815 0.9604202059644127 +2.565130260521042 0.9604147275759335 +2.5751503006012024 0.9604088257038221 +2.5851703406813624 0.9604024999782762 +2.595190380761523 0.960395749949653 +2.6052104208416833 0.9603885750883062 +2.6152304609218433 0.9603809747844023 +2.6252505010020037 0.9603729483477225 +2.635270541082164 0.9603644950074561 +2.6452905811623246 0.9603556139119901 +2.655310621242485 0.9603463041286979 +2.665330661322645 0.9603365646437303 +2.6753507014028055 0.9603263943618102 +2.685370741482966 0.9603157921060328 +2.695390781563126 0.9603047566176717 +2.7054108216432864 0.9602932865559903 +2.715430861723447 0.9602813804980597 +2.7254509018036073 0.9602690369385808 +2.7354709418837677 0.9602562542897101 +2.7454909819639277 0.960243030880888 +2.755511022044088 0.9602293649586676 +2.7655310621242486 0.9602152546865411 +2.7755511022044086 0.960200698144763 +2.785571142284569 0.9601856933301671 +2.7955911823647295 0.9601702381559752 +2.80561122244489 0.9601543304515957 +2.8156312625250504 0.9601379679624097 +2.8256513026052104 0.9601211483495443 +2.835671342685371 0.9601038691896304 +2.8456913827655312 0.9600861279745431 +2.8557114228456912 0.9600679221111253 +2.8657314629258517 0.9600492489208935 +2.875751503006012 0.9600301056397216 +2.8857715430861726 0.9600104894175062 +2.895791583166333 0.9599903973178094 +2.905811623246493 0.9599698263174797 +2.9158316633266534 0.9599487733062488 +2.925851703406814 0.959927235086305 +2.935871743486974 0.959905208371841 +2.9458917835671343 0.9598826897885756 +2.9559118236472948 0.959859675873248 +2.965931863727455 0.9598361630730838 +2.9759519038076157 0.9598121477452326 +2.9859719438877756 0.9597876261561744 +2.995991983967936 0.9597625944810955 +3.0060120240480965 0.959737048803232 +3.0160320641282565 0.9597109851131809 +3.026052104208417 0.9596843993081767 +3.0360721442885774 0.959657287191334 +3.046092184368738 0.959629644470855 +3.0561122244488974 0.9596014667592001 +3.066132264529058 0.9595727495722239 +3.0761523046092183 0.9595434883282727 +3.0861723446893787 0.9595136783472453 +3.0961923847695387 0.9594833148496166 +3.106212424849699 0.9594523929554228 +3.1162324649298596 0.9594209076832088 +3.1262525050100196 0.9593888539489368 +3.13627254509018 0.9593562265648572 +3.1462925851703405 0.9593230202383395 +3.156312625250501 0.9592892295706649 +3.1663326653306614 0.9592548490557786 +3.1763527054108214 0.9592198730790032 +3.186372745490982 0.9591842959157102 +3.1963927855711423 0.9591481117299516 +3.2064128256513023 0.9591113145730497 +3.2164328657314627 0.9590738983821439 +3.226452905811623 0.9590358569786965 +3.2364729458917836 0.9589971840669537 +3.246492985971944 0.9589578732323627 +3.256513026052104 0.9589179179399457 +3.2665330661322645 0.9588773115326276 +3.276553106212425 0.958836047229519 +3.286573146292585 0.9587941181241535 +3.2965931863727453 0.9587515171826787 +3.306613226452906 0.9587082372420006 +3.3166332665330662 0.9586642710078811 +3.3266533066132267 0.9586196110529887 +3.3366733466933867 0.9585742498149011 +3.346693386773547 0.9585281795940604 +3.3567134268537075 0.9584813925516804 +3.3667334669338675 0.958433880707604 +3.376753507014028 0.9583856359381129 +3.3867735470941884 0.9583366499736855 +3.396793587174349 0.9582869143967043 +3.4068136272545093 0.9582364206391096 +3.4168336673346693 0.9581851599799983 +3.4268537074148298 0.9581331235431646 +3.43687374749499 0.9580803022945797 +3.44689378757515 0.9580266870398083 +3.4569138276553106 0.9579722684213544 +3.466933867735471 0.9579170369159367 +3.4769539078156315 0.9578609828316853 +3.486973947895792 0.9578040963052563 +3.496993987975952 0.957746367298858 +3.5070140280561124 0.9576877855971849 +3.517034068136273 0.9576283408042512 +3.527054108216433 0.9575680223401193 +3.5370741482965933 0.9575068194375165 +3.5470941883767537 0.9574447211383316 +3.557114228456914 0.9573817162899847 +3.5671342685370746 0.957317793541663 +3.5771543086172346 0.9572529413404107 +3.587174348697395 0.9571871479270666 +3.5971943887775555 0.9571204013320361 +3.6072144288577155 0.9570526893708902 +3.6172344689378755 0.9569839996397762 +3.627254509018036 0.9569143195106331 +3.637274549098196 0.9568436361261964 +3.6472945891783564 0.9567719363947869 +3.657314629258517 0.9566992069848703 +3.6673346693386772 0.9566254343193866 +3.6773547094188377 0.9565506045698423 +3.6873747494989977 0.9564747036501695 +3.697394789579158 0.9563977172103567 +3.7074148296593186 0.9563196306298638 +3.7174348697394786 0.9562404290108366 +3.727454909819639 0.9561600971711453 +3.7374749498997994 0.956078619637275 +3.74749498997996 0.955995980637108 +3.7575150300601203 0.9559121640926392 +3.7675350701402803 0.955827153612682 +3.7775551102204408 0.9557409324856284 +3.787575150300601 0.9556534836723413 +3.797595190380761 0.9555647897992667 +3.8076152304609217 0.9554748331518704 +3.817635270541082 0.9553835956685133 +3.8276553106212425 0.9552910589348902 +3.837675350701403 0.9551972041791716 +3.847695390781563 0.955102012267988 +3.8577154308617234 0.9550054637034096 +3.867735470941884 0.9549075386210755 +3.877755511022044 0.9548082167896276 +3.8877755511022043 0.9547074776116082 +3.8977955911823647 0.9546053001259813 +3.907815631262525 0.9545016630124356 +3.9178356713426856 0.9543965445976315 +3.9278557114228456 0.9542899228635526 +3.937875751503006 0.9541817754581227 +3.9478957915831665 0.9540720797082497 +3.9579158316633265 0.9539608126354591 +3.967935871743487 0.9538479509742689 +3.9779559118236474 0.9537334711934619 +3.987975951903808 0.9536173495203909 +3.9979959919839683 0.9534995619684457 +4.008016032064129 0.9533800843677838 +4.018036072144289 0.9532588923994054 +4.028056112224449 0.953135961632611 +4.038076152304609 0.9530112675658466 +4.04809619238477 0.9528847856708861 +4.05811623246493 0.9527564914402532 +4.0681362725450905 0.9526263604377242 +4.078156312625251 0.9524943683517032 +4.088176352705411 0.9523604910512052 +4.098196392785571 0.9522247046441497 +4.108216432865731 0.9520869855376353 +4.118236472945892 0.9519473104998647 +4.128256513026052 0.9518056567233947 +4.138276553106213 0.951662001889402 +4.148296593186373 0.9515163242326689 +4.158316633266534 0.951368602607004 +4.168336673346693 0.9512188165508008 +4.1783567134268536 0.9510669463524307 +4.188376753507014 0.9509129731151416 +4.198396793587174 0.9507568788211151 +4.208416833667334 0.9505986463943376 +4.218436873747494 0.9504382597619464 +4.228456913827655 0.950275703913766 +4.238476953907815 0.9501109649597929 +4.248496993987976 0.9499440301854546 +4.258517034068136 0.9497748881045229 +4.268537074148297 0.9496035285096014 +4.278557114228457 0.9494299425201459 +4.2885771543086175 0.9492541226279955 +4.298597194388777 0.9490760627404083 +4.3086172344689375 0.9488957582206194 +4.318637274549098 0.9487132059259625 +4.328657314629258 0.948528404243631 +4.338677354709419 0.9483413531241826 +4.348697394789579 0.9481520541129248 +4.35871743486974 0.9479605103793339 +4.368737474949899 0.9477667267446792 +4.37875751503006 0.947570709708024 +4.38877755511022 0.9473724674707806 +4.398797595190381 0.9471720099599915 +4.408817635270541 0.9469693488505094 +4.4188376753507015 0.9467644975862438 +4.428857715430862 0.9465574714006396 +4.438877755511022 0.9463482873365437 +4.448897795591183 0.9461369642656039 +4.458917835671342 0.9459235229073316 +4.468937875751503 0.9457079858479454 +4.478957915831663 0.9454903775590909 +4.488977955911824 0.9452707244165274 +4.498997995991984 0.9450490547188474 +4.509018036072145 0.94482539870629 +4.519038076152305 0.9445997885796855 +4.529058116232465 0.9443722585195528 +4.539078156312625 0.9441428447053475 +4.5490981963927855 0.9439115853348358 +4.559118236472946 0.9436785206435435 +4.569138276553106 0.9434436929242149 +4.579158316633267 0.943207146546191 +4.589178356713427 0.9429689279746096 +4.599198396793588 0.9427290857893025 +4.609218436873748 0.9424876707032532 +4.619238476953908 0.9422447355804472 +4.629258517034068 0.9420003354529257 +4.6392785571142285 0.9417545275368218 +4.649298597194389 0.9415073712471348 +4.659318637274549 0.9412589282109783 +4.66933867735471 0.9410092622790168 +4.67935871743487 0.9407584395347831 +4.68937875751503 0.9405065283015487 +4.69939879759519 0.9402535991463834 +4.709418837675351 0.9399997248810091 +4.719438877755511 0.9397449805590068 +4.729458917835671 0.9394894434688975 +4.739478957915831 0.939233193122571 +4.749498997995992 0.9389763112384926 +4.759519038076152 0.9387188817190598 +4.7695390781563125 0.938460990621423 +4.779559118236473 0.9382027261210004 +4.789579158316633 0.9379441784668262 +4.799599198396793 0.9376854399277549 +4.809619238476953 0.9374266047284157 +4.819639278557114 0.9371677689736546 +4.829659318637274 0.9369090305600181 +4.839679358717435 0.9366504890726147 +4.849699398797595 0.9363922456654301 +4.859719438877756 0.9361344029228463 +4.869739478957916 0.93587706469974 +4.8797595190380765 0.9356203359370638 +4.889779559118236 0.9353643224492639 +4.8997995991983965 0.93510913067921 +4.909819639278557 0.9348548674155186 +4.919839679358717 0.9346016394661784 +4.929859719438878 0.9343495532812242 +4.939879759519038 0.9340987145157987 +4.949899799599199 0.933849227523231 +4.959919839679358 0.9336011947656739 +4.969939879759519 0.9333547161273066 +4.979959919839679 0.9331098881120079 +4.98997995991984 0.9328668029036348 +5.0 0.9326255472624518 +6.0 0.92064474497014 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-horseshoe6.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-horseshoe6.dat new file mode 100644 index 00000000..6d27bf02 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-horseshoe6.dat @@ -0,0 +1,238 @@ +2.6452905811623246 1.35 +2.6452905811623246 0.9999762534809282 +2.655310621242485 0.999966732046913 +2.665330661322645 0.9999567579861735 +2.6753507014028055 0.9999463300515126 +2.685370741482966 0.9999354469164783 +2.695390781563126 0.9999241071749845 +2.7054108216432864 0.9999123093409297 +2.715430861723447 0.9999000518478124 +2.7254509018036073 0.9998873330483438 +2.7354709418837677 0.999874151214057 +2.7454909819639277 0.9998605045349122 +2.755511022044088 0.9998463911188968 +2.7655310621242486 0.9998318089916225 +2.7755511022044086 0.9998167560959145 +2.785571142284569 0.9998012302913973 +2.7955911823647295 0.9997852293540732 +2.80561122244489 0.9997687509758942 +2.8156312625250504 0.9997517927643267 +2.8256513026052104 0.9997343522419091 +2.835671342685371 0.9997164268458015 +2.8456913827655312 0.9996980139273262 +2.8557114228456912 0.9996791107515002 +2.8657314629258517 0.9996597144965581 +2.875751503006012 0.9996398222534664 +2.8857715430861726 0.9996194310254262 +2.895791583166333 0.9995985377273672 +2.905811623246493 0.9995771391854308 +2.9158316633266534 0.999555232136442 +2.925851703406814 0.9995328132273709 +2.935871743486974 0.9995098790147815 +2.9458917835671343 0.9994864259642714 +2.9559118236472948 0.999462450449897 +2.965931863727455 0.9994379487535892 +2.9759519038076157 0.9994129170645552 +2.9859719438877756 0.9993873514786691 +2.995991983967936 0.9993612479978509 +3.0060120240480965 0.9993346025294314 +3.0160320641282565 0.9993074108855068 +3.026052104208417 0.9992796687822798 +3.0360721442885774 0.9992513718393894 +3.046092184368738 0.9992225155792275 +3.0561122244488974 0.9991930954262453 +3.066132264529058 0.9991631067062465 +3.0761523046092183 0.9991325446456697 +3.0861723446893787 0.9991014043708594 +3.0961923847695387 0.9990696809073268 +3.106212424849699 0.9990373691789993 +3.1162324649298596 0.9990044640074605 +3.1262525050100196 0.9989709601111803 +3.13627254509018 0.998936852104736 +3.1462925851703405 0.9989021344980263 +3.156312625250501 0.9988668016954748 +3.1663326653306614 0.9988308479952289 +3.1763527054108214 0.9987942675883514 +3.186372745490982 0.9987570545580065 +3.1963927855711423 0.9987192028786409 +3.2064128256513023 0.9986807064151625 +3.2164328657314627 0.9986415589221146 +3.226452905811623 0.99860175404285 +3.2364729458917836 0.9985612853087039 +3.246492985971944 0.9985201461381676 +3.256513026052104 0.9984783298360652 +3.2665330661322645 0.9984358295927321 +3.276553106212425 0.9983926384832006 +3.286573146292585 0.9983487494663904 +3.2965931863727453 0.9983041553843085 +3.306613226452906 0.9982588489612584 +3.3166332665330662 0.9982128228030619 +3.3266533066132267 0.9981660693962945 +3.3366733466933867 0.9981185811075367 +3.346693386773547 0.9980703501826437 +3.3567134268537075 0.9980213687460362 +3.3667334669338675 0.9979716288000136 +3.376753507014028 0.9979211222240927 +3.3867735470941884 0.9978698407743759 +3.396793587174349 0.9978177760829495 +3.4068136272545093 0.9977649196573172 +3.4168336673346693 0.99771126287987 +3.4268537074148298 0.9976567970073987 +3.43687374749499 0.9976015131706493 +3.44689378757515 0.9975454023739266 +3.4569138276553106 0.9974884554947514 +3.466933867735471 0.997430663283572 +3.4769539078156315 0.997372016363538 +3.486973947895792 0.9973125052303383 +3.496993987975952 0.99725212025211 +3.5070140280561124 0.9971908516694225 +3.517034068136273 0.9971286895953424 +3.527054108216433 0.9970656240155862 +3.5370741482965933 0.9970016447887649 +3.5470941883767537 0.9969367416467287 +3.557114228456914 0.9968709041950188 +3.5671342685370746 0.9968041219134325 +3.5771543086172346 0.9967363841567112 +3.587174348697395 0.9966676801553572 +3.5971943887775555 0.996597999016592 +3.6072144288577155 0.9965273297254605 +3.6172344689378755 0.9964556611460967 +3.627254509018036 0.996382982023156 +3.637274549098196 0.9963092809834305 +3.6472945891783564 0.9962345465376555 +3.657314629258517 0.9961587670825226 +3.6673346693386772 0.9960819309029109 +3.6773547094188377 0.9960040261743524 +3.6873747494989977 0.9959250409657466 +3.697394789579158 0.9958449632423391 +3.7074148296593186 0.9957637808689828 +3.7174348697394786 0.9956814816136995 +3.727454909819639 0.99559805315156 +3.7374749498997994 0.9955134830689029 +3.74749498997996 0.9954277588679128 +3.7575150300601203 0.9953408679715804 +3.7675350701402803 0.9952527977290648 +3.7775551102204408 0.9951635354214832 +3.787575150300601 0.99507306826815 +3.797595190380761 0.9949813834332923 +3.8076152304609217 0.9948884680332637 +3.817635270541082 0.9947943091442831 +3.8276553106212425 0.994698893810725 +3.837675350701403 0.994602209053984 +3.847695390781563 0.9945042418819422 +3.8577154308617234 0.9944049792990596 +3.867735470941884 0.9943044083171172 +3.877755511022044 0.9942025159666312 +3.8877755511022043 0.9940992893089635 +3.8977955911823647 0.9939947154491472 +3.907815631262525 0.9938887815494483 +3.9178356713426856 0.9937814748436787 +3.9278557114228456 0.9936727826522775 +3.937875751503006 0.9935626923981724 +3.9478957915831665 0.9934511916234307 +3.9579158316633265 0.9933382680067087 +3.967935871743487 0.9932239093815023 +3.9779559118236474 0.9931081037551994 +3.987975951903808 0.9929908393289308 +3.9979959919839683 0.992872104518213 +4.008016032064129 0.99275188797437 +4.018036072144289 0.9926301786067204 +4.028056112224449 0.9925069656055061 +4.038076152304609 0.9923822384655404 +4.04809619238477 0.9922559870105432 +4.05811623246493 0.9921282014181292 +4.0681362725450905 0.9919988722454105 +4.078156312625251 0.9918679904551679 +4.088176352705411 0.9917355474425442 +4.098196392785571 0.9916015350622079 +4.108216432865731 0.9914659456559312 +4.118236472945892 0.9913287720805251 +4.128256513026052 0.9911900077360725 +4.138276553106213 0.9910496465943955 +4.148296593186373 0.990907683227695 +4.158316633266534 0.9907641128372975 +4.168336673346693 0.9906189312824465 +4.1783567134268536 0.99047213510907 +4.188376753507014 0.9903237215784628 +4.198396793587174 0.9901736886958195 +4.208416833667334 0.9900220352385524 +4.218436873747494 0.9898687607843387 +4.228456913827655 0.9897138657388352 +4.238476953907815 0.9895573513630053 +4.248496993987976 0.9893992198000062 +4.258517034068136 0.9892394741015885 +4.268537074148297 0.9890781182539579 +4.278557114228457 0.9889151572030614 +4.2885771543086175 0.9887505968792565 +4.298597194388777 0.9885844442213267 +4.3086172344689375 0.9884167071998142 +4.318637274549098 0.9882473948396375 +4.328657314629258 0.9880765172419704 +4.338677354709419 0.9879040856053576 +4.348697394789579 0.987730112246049 +4.35871743486974 0.987554610617532 +4.368737474949899 0.9873775953292491 +4.37875751503006 0.9871990821644843 +4.38877755511022 0.9870190880974082 +4.398797595190381 0.9868376313092696 +4.408817635270541 0.9866547312037216 +4.4188376753507015 0.9864704084212755 +4.428857715430862 0.9862846848528697 +4.438877755511022 0.9860975836525439 +4.448897795591183 0.9859091292492105 +4.458917835671342 0.9857193473575082 +4.468937875751503 0.9855282649877284 +4.478957915831663 0.9853359104547996 +4.488977955911824 0.9851423133863143 +4.498997995991984 0.9849475047295835 +4.509018036072145 0.984751516757698 +4.519038076152305 0.9845543830745791 +4.529058116232465 0.9843561386189925 +4.539078156312625 0.9841568196675052 +4.5490981963927855 0.9839564638363559 +4.559118236472946 0.9837551100822102 +4.569138276553106 0.9835527987017721 +4.579158316633267 0.9833495713302163 +4.589178356713427 0.983145470938408 +4.599198396793588 0.9829405418288727 +4.609218436873748 0.9827348296304785 +4.619238476953908 0.9825283812917909 +4.629258517034068 0.9823212450730572 +4.6392785571142285 0.9821134705367823 +4.649298597194389 0.9819051085368489 +4.659318637274549 0.9816962112061408 +4.66933867735471 0.9814868319426273 +4.67935871743487 0.9812770253938639 +4.68937875751503 0.9810668474398679 +4.69939879759519 0.980856355174331 +4.709418837675351 0.9806456068841263 +4.719438877755511 0.9804346620270786 +4.729458917835671 0.9802235812079616 +4.739478957915831 0.9800124261526961 +4.749498997995992 0.9798012596807255 +4.759519038076152 0.9795901456755496 +4.7695390781563125 0.9793791490534082 +4.779559118236473 0.9791683357301109 +4.789579158316633 0.9789577725860206 +4.799599198396793 0.9787475274292078 +4.809619238476953 0.9785376689568087 +4.819639278557114 0.9783282667146299 +4.829659318637274 0.9781193910550638 +4.839679358717435 0.9779111130933962 +4.849699398797595 0.9777035046626104 +4.859719438877756 0.9774966382668195 +4.869739478957916 0.9772905870334864 +4.8797595190380765 0.977085424664629 +4.889779559118236 0.9768812253872478 +4.8997995991983965 0.976678063903259 +4.909819639278557 0.9764760153392761 +4.919839679358717 0.9762751551966438 +4.929859719438878 0.9760755593022076 +4.939879759519038 0.9758773037603911 +4.949899799599199 0.9756804649072606 +4.959919839679358 0.9754851192673804 +4.969939879759519 0.9752913435144128 +4.979959919839679 0.975099214436593 +4.98997995991984 0.9749088089084174 +5.0 0.9747202038701385 +6.0 0.9653538151406065 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-radialpos.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-radialpos.dat new file mode 100644 index 00000000..7de38a42 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-radialpos.dat @@ -0,0 +1,296 @@ +1.0521042084168335 1.4673133342364602 +1.062124248496994 1.4683409881601872 +1.0721442885771544 1.4693486393688504 +1.0821643286573146 1.4703357565148667 +1.0921843687374748 1.4713018082506537 +1.1022044088176353 1.4722462632286284 +1.1122244488977957 1.473169937512897 +1.122244488977956 1.4740767270183368 +1.1322645290581161 1.4749665274798058 +1.1422845691382766 1.4758388982176451 +1.152304609218437 1.4766933985521957 +1.1623246492985972 1.4775295878037986 +1.1723446893787575 1.4783470252927946 +1.1823647294589177 1.4791452703395245 +1.1923847695390781 1.47992388226433 +1.2024048096192383 1.4806844379388393 +1.2124248496993988 1.481429872250446 +1.222444889779559 1.4821598437407246 +1.2324649298597194 1.482873960415155 +1.2424849699398797 1.4835718302792171 +1.2525050100200399 1.4842530613383906 +1.2625250501002003 1.4849172615981554 +1.2725450901803605 1.4855640390639913 +1.282565130260521 1.4861930017413783 +1.2925851703406812 1.4868057226232279 +1.3026052104208417 1.4874046097390123 +1.3126252505010019 1.48798925671983 +1.3226452905811623 1.4885592349651793 +1.3326653306613225 1.4891141158745578 +1.342685370741483 1.4896534708474634 +1.3527054108216432 1.4901768712833947 +1.3627254509018036 1.4906838885818492 +1.3727454909819639 1.4911740941423253 +1.3827655310621243 1.491648572952272 +1.3927855711422845 1.4921100521586912 +1.402805611222445 1.4925583725905982 +1.4128256513026052 1.4929932887883877 +1.4228456913827656 1.4934145552924554 +1.4328657314629258 1.493821926643196 +1.4428857715430863 1.4942151573810052 +1.4529058116232465 1.4945940020462782 +1.462925851703407 1.49495821517941 +1.4729458917835672 1.495308053383485 +1.4829659318637276 1.495645564908267 +1.4929859719438878 1.4959709947160713 +1.5030060120240483 1.4962843385256002 +1.5130260521042085 1.4965855920555562 +1.523046092184369 1.496874751024642 +1.533066132264529 1.49715181115156 +1.5430861723446894 1.4974167681550123 +1.5531062124248496 1.497669617753702 +1.5631262525050098 1.4979104174758398 +1.5731462925851702 1.4981407790300223 +1.5831663326653307 1.498360590128904 +1.593186372745491 1.4985687345726708 +1.6032064128256511 1.4987640961615076 +1.6132264529058116 1.4989455586955989 +1.623246492985972 1.4991120059751304 +1.6332665330661322 1.499262321800287 +1.6432865731462925 1.4993953899712535 +1.653306613226453 1.4995100942882154 +1.6633266533066133 1.4996091618342036 +1.6733466933867736 1.499699781402312 +1.6833667334669338 1.4997809580539072 +1.6933867735470942 1.4998514004300125 +1.7034068136272547 1.499909817171651 +1.7134268537074149 1.499954916919846 +1.723446893787575 1.4999854083156214 +1.7334669338677355 1.5 +1.743486973947896 1.499997400614005 +1.7535070140280562 1.4999772608439363 +1.7635270541082164 1.4999491083954826 +1.7735470941883769 1.4999167331781176 +1.7835671342685373 1.4998813937883162 +1.7935871743486975 1.4998443488225535 +1.8036072144288577 1.4998068568773042 +1.813627254509018 1.4997701765490437 +1.8236472945891782 1.499735566434246 +1.8336673346693386 1.4997042851293871 +1.8436873747494988 1.499677591230941 +1.8537074148296593 1.49965646230131 +1.8637274549098195 1.4996364366638268 +1.87374749498998 1.4996159034032672 +1.8837675350701402 1.4995953066825074 +1.8937875751503006 1.499575090664424 +1.9038076152304608 1.4995556995118935 +1.9138276553106213 1.499537577387792 +1.9238476953907815 1.499521168454996 +1.933867735470942 1.4995069168763822 +1.9438877755511021 1.4994952668148267 +1.9539078156312626 1.4994866624332057 +1.9639278557114228 1.4994815294992772 +1.9739478957915833 1.4994797474433257 +1.9839679358717435 1.4994806080778942 +1.993987975951904 1.4994833761787218 +2.0040080160320644 1.4994873165215488 +2.0140280561122244 1.499491693882114 +2.024048096192385 1.4994957730361573 +2.0340681362725452 1.4994988187594185 +2.0440881763527057 1.4995000958276368 +2.0541082164328657 1.4994988690165518 +2.064128256513026 1.499494403101903 +2.0741482965931866 1.4994870034471952 +2.0841683366733466 1.4994793623684717 +2.094188376753507 1.49947168112358 +2.104208416833667 1.4994639717780598 +2.1142284569138274 1.4994562463974506 +2.124248496993988 1.4994485170472918 +2.1342685370741483 1.499440795793123 +2.1442885771543088 1.4994330947004837 +2.1543086172344688 1.4994254258349133 +2.164328657314629 1.4994178012619512 +2.1743486973947896 1.4994102330471373 +2.1843687374749496 1.4994027078561731 +2.19438877755511 1.4993951572210698 +2.2044088176352705 1.4993875874470872 +2.214428857715431 1.4993800108148023 +2.2244488977955914 1.4993724396047923 +2.2344689378757514 1.4993648860976339 +2.244488977955912 1.4993573625739038 +2.2545090180360723 1.499349881314179 +2.2645290581162323 1.4993424545990364 +2.2745490981963927 1.499335094709053 +2.284569138276553 1.4993278139248052 +2.2945891783567136 1.4993207102364556 +2.304609218436874 1.499314153136234 +2.314629258517034 1.4993080914804615 +2.3246492985971945 1.4993024180013184 +2.334669338677355 1.4992970254309845 +2.344689378757515 1.4992918065016405 +2.3547094188376754 1.4992866539454663 +2.3647294589178354 1.499281460494642 +2.374749498997996 1.4992761188813477 +2.3847695390781563 1.4992705218377638 +2.3947895791583167 1.49926456209607 +2.4048096192384767 1.4992581790735446 +2.414829659318637 1.499251693655579 +2.4248496993987976 1.4992451831810487 +2.434869739478958 1.4992386413671115 +2.444889779559118 1.4992320619309245 +2.4549098196392785 1.4992254385896455 +2.464929859719439 1.4992187650604323 +2.4749498997995993 1.4992120350604423 +2.4849699398797593 1.499205242306833 +2.49498997995992 1.499198380516762 +2.5050100200400798 1.4991914434073867 +2.51503006012024 1.4991844238454954 +2.5250501002004007 1.4991773067272347 +2.5350701402805607 1.4991701052665865 +2.545090180360721 1.4991628415094465 +2.5551102204408815 1.4991555375017096 +2.565130260521042 1.499148215289272 +2.5751503006012024 1.4991408969180284 +2.5851703406813624 1.4991336044338748 +2.595190380761523 1.4991263598827065 +2.6052104208416833 1.499119185310419 +2.6152304609218433 1.4991121027629082 +2.6252505010020037 1.4991051336041448 +2.635270541082164 1.4990982239991935 +2.6452905811623246 1.4990913326407556 +2.655310621242485 1.4990844646711612 +2.665330661322645 1.4990776252327402 +2.6753507014028055 1.4990708194678226 +2.685370741482966 1.4990640525187384 +2.695390781563126 1.4990573295278176 +2.7054108216432864 1.4990506556373902 +2.715430861723447 1.499044035989786 +2.7254509018036073 1.499037475727335 +2.7354709418837677 1.4990309799923676 +2.7454909819639277 1.499024524457687 +2.755511022044088 1.4990180743131152 +2.7655310621242486 1.4990116297633729 +2.7755511022044086 1.499005191124589 +2.785571142284569 1.4989987587128937 +2.7955911823647295 1.4989923328444164 +2.80561122244489 1.4989859138352872 +2.8156312625250504 1.4989795020016354 +2.8256513026052104 1.498973097659591 +2.835671342685371 1.4989667011252839 +2.8456913827655312 1.4989603127148432 +2.8557114228456912 1.4989539332183268 +2.8657314629258517 1.4989475627390854 +2.875751503006012 1.4989411992021155 +2.8857715430861726 1.4989348404703473 +2.895791583166333 1.4989284844067097 +2.905811623246493 1.4989221288741326 +2.9158316633266534 1.498915771735545 +2.925851703406814 1.498909410853877 +2.935871743486974 1.4989030440920577 +2.9458917835671343 1.4988966693130163 +2.9559118236472948 1.4988902843796827 +2.965931863727455 1.4988838873364183 +2.9759519038076157 1.498877477244358 +2.9859719438877756 1.4988710530819493 +2.995991983967936 1.4988646137757387 +3.0060120240480965 1.4988581582522715 +3.0160320641282565 1.4988516854380938 +3.026052104208417 1.498845194259752 +3.0360721442885774 1.4988386836437917 +3.046092184368738 1.4988321525167592 +3.0561122244488974 1.4988255998052002 +3.066132264529058 1.4988190244356612 +3.0761523046092183 1.4988124261762792 +3.0861723446893787 1.4988058114809042 +3.0961923847695387 1.4987991827966334 +3.106212424849699 1.4987925412043 +3.1162324649298596 1.4987858877847373 +3.1262525050100196 1.4987792236187791 +3.13627254509018 1.4987725497872586 +3.1462925851703405 1.498765867371009 +3.156312625250501 1.498759177450864 +3.1663326653306614 1.4987524811076567 +3.1763527054108214 1.4987457794222205 +3.186372745490982 1.4987390731546038 +3.1963927855711423 1.4987323570767925 +3.2064128256513023 1.498725630717572 +3.2164328657314627 1.4987188963423335 +3.226452905811623 1.4987121562164676 +3.2364729458917836 1.4987054126053652 +3.246492985971944 1.4986986677744172 +3.256513026052104 1.4986919239890144 +3.2665330661322645 1.4986851835145478 +3.276553106212425 1.4986784486164082 +3.286573146292585 1.4986717215599863 +3.2965931863727453 1.4986650045426049 +3.306613226452906 1.4986582900308074 +3.3166332665330662 1.4986515759217436 +3.3266533066132267 1.4986448682253941 +3.3366733466933867 1.498638172951739 +3.346693386773547 1.498631496110759 +3.3567134268537075 1.498624843712434 +3.3667334669338675 1.498618221766745 +3.376753507014028 1.4986116362836719 +3.3867735470941884 1.4986050932731951 +3.396793587174349 1.498598598745295 +3.4068136272545093 1.4985921587099522 +3.4168336673346693 1.4985857637990139 +3.4268537074148298 1.4985793930474192 +3.43687374749499 1.498573042867252 +3.44689378757515 1.4985667097899722 +3.4569138276553106 1.4985603903470401 +3.466933867735471 1.498554081069916 +3.4769539078156315 1.49854777849006 +3.486973947895792 1.498541479138932 +3.496993987975952 1.4985351795479926 +3.5070140280561124 1.4985288762487015 +3.517034068136273 1.4985225657725194 +3.527054108216433 1.4985162529302816 +3.5370741482965933 1.498509954758901 +3.5470941883767537 1.4985036689690254 +3.557114228456914 1.498497392333227 +3.5671342685370746 1.498491121624077 +3.5771543086172346 1.4984848536141469 +3.587174348697395 1.4984785850760087 +3.5971943887775555 1.498472312782234 +3.6072144288577155 1.498466033505394 +3.6172344689378755 1.498459744018061 +3.627254509018036 1.4984534410928063 +3.637274549098196 1.4984470602843674 +3.6472945891783564 1.4984403514804374 +3.657314629258517 1.498433326153599 +3.6673346693386772 1.498426028161859 +3.6773547094188377 1.4984185013632252 +3.6873747494989977 1.4984107896157046 +3.697394789579158 1.4984029367773046 +3.7074148296593186 1.4983949867060327 +3.7174348697394786 1.4983869832598955 +3.727454909819639 1.4983789702969008 +3.7374749498997994 1.4983709916750563 +3.74749498997996 1.4983629989464076 +3.7575150300601203 1.4983543691579637 +3.7675350701402803 1.4983451222807826 +3.7775551102204408 1.4983354351543356 +3.787575150300601 1.4983254846180938 +3.797595190380761 1.4983154475115281 +3.8076152304609217 1.49830550067411 +3.817635270541082 1.4982958209453106 +3.8276553106212425 1.4982865851646006 +3.837675350701403 1.4982779701714515 +3.847695390781563 1.4982701528053344 +3.8577154308617234 1.4982632935494231 +3.867735470941884 1.4982572428603045 +3.877755511022044 1.498251832924475 +3.8877755511022043 1.49824695524833 +3.8977955911823647 1.4982425013382659 +3.907815631262525 1.4982383627006777 +3.9178356713426856 1.4982344308419615 +3.9278557114228456 1.498230597268513 +3.937875751503006 1.498226753486728 +3.9478957915831665 1.498222791003002 +3.9579158316633265 1.4982186013237304 +3.967935871743487 1.4982140784125595 +3.9779559118236474 1.4982092043956223 +3.987975951903808 1.4982040218148984 +3.9979959919839683 1.4981985648214837 +4.008016032064129 1.4981928675664742 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert1.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert1.dat new file mode 100644 index 00000000..e523e7e2 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert1.dat @@ -0,0 +1,2 @@ +1.3026052104208417 1.42 +1.3026052104208417 2.5 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert11.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert11.dat new file mode 100644 index 00000000..9649ab5b --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert11.dat @@ -0,0 +1,2 @@ +1.3226452905811623 1.42 +1.3226452905811623 2.0 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert12.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert12.dat new file mode 100644 index 00000000..3d8120d5 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert12.dat @@ -0,0 +1,2 @@ +2.565130260521042 1.42 +2.565130260521042 2.0 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert13.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert13.dat new file mode 100644 index 00000000..314ad884 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert13.dat @@ -0,0 +1,2 @@ +1.3627254509018036 1.42 +1.3627254509018036 2.0 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert14.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert14.dat new file mode 100644 index 00000000..7f90c049 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert14.dat @@ -0,0 +1,2 @@ +2.6052104208416833 1.42 +2.6052104208416833 2.0 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert15.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert15.dat new file mode 100644 index 00000000..a97c46bd --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert15.dat @@ -0,0 +1,2 @@ +1.402805611222445 1.42 +1.402805611222445 2.0 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert16.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert16.dat new file mode 100644 index 00000000..420d526e --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert16.dat @@ -0,0 +1,2 @@ +2.6452905811623246 1.42 +2.6452905811623246 2.0 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert2.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert2.dat new file mode 100644 index 00000000..bfac9849 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert2.dat @@ -0,0 +1,2 @@ +1.3527054108216432 1.42 +1.3527054108216432 2.5 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert21.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert21.dat new file mode 100644 index 00000000..6c197212 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert21.dat @@ -0,0 +1,2 @@ +1.3226452905811623 2.05 +1.3226452905811623 2.5 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert22.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert22.dat new file mode 100644 index 00000000..67c82688 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert22.dat @@ -0,0 +1,2 @@ +2.565130260521042 2.05 +2.565130260521042 2.5 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert23.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert23.dat new file mode 100644 index 00000000..f965b546 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert23.dat @@ -0,0 +1,2 @@ +1.3627254509018036 2.05 +1.3627254509018036 2.5 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert24.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert24.dat new file mode 100644 index 00000000..b11a44f6 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert24.dat @@ -0,0 +1,2 @@ +2.6052104208416833 2.05 +2.6052104208416833 2.5 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert25.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert25.dat new file mode 100644 index 00000000..821a5ac8 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert25.dat @@ -0,0 +1,2 @@ +1.402805611222445 2.05 +1.402805611222445 2.5 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert26.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert26.dat new file mode 100644 index 00000000..cd01618b --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert26.dat @@ -0,0 +1,2 @@ +2.6452905811623246 2.05 +2.6452905811623246 2.5 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert3.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert3.dat new file mode 100644 index 00000000..46556234 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert3.dat @@ -0,0 +1,2 @@ +1.402805611222445 1.42 +1.402805611222445 2.5 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert4.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert4.dat new file mode 100644 index 00000000..684d9f10 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert4.dat @@ -0,0 +1,2 @@ +2.5551102204408815 1.42 +2.5551102204408815 2.5 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert5.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert5.dat new file mode 100644 index 00000000..ea5e6e52 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert5.dat @@ -0,0 +1,2 @@ +2.6052104208416833 1.42 +2.6052104208416833 2.5 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert6.dat b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert6.dat new file mode 100644 index 00000000..9f7e8acb --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/swirl-velocity-vert6.dat @@ -0,0 +1,2 @@ +2.655310621242485 1.42 +2.655310621242485 2.5 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/system-pressure-comp-160-duct-panels-80-hub-panels.tikz b/v0.5.0/DuctAPE/theory_latex/figures/system-pressure-comp-160-duct-panels-80-hub-panels.tikz new file mode 100644 index 00000000..bbd7195d --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/system-pressure-comp-160-duct-panels-80-hub-panels.tikz @@ -0,0 +1,406 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={71.2mm}, height={57.15mm}, scaled x ticks={false}, xlabel={x}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.02979569460379161}, xmax={1.0297956946037916}, xticklabels={{$0.00$,$0.25$,$0.50$,$0.75$,$1.00$}}, xtick={{0.0,0.25,0.5,0.75,1.0}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_p$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, y dir={reverse}, ymajorgrids={false}, ymin={-0.8026844176938722}, ymax={1.0306601499640182}, yticklabels={{$-0.5$,$0.0$,$0.5$,$1.0$}}, ytick={{-0.5,0.0,0.5,1.0}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, name path={753e1602-769c-48a7-ae61-f0f008e19ca7}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.1804;blue,0.3647}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}] + table[row sep={\\}] + { + \\ + 0.0022988505747127 0.6630265210608424 \\ + 0.0206896551724138 -0.0273010920436818 \\ + 0.0471264367816092 -0.125585023400936 \\ + 0.0816091954022989 -0.1723868954758191 \\ + 0.1264367816091954 -0.2355694227769111 \\ + 0.1816091954022989 -0.2566302652106085 \\ + 0.2413793103448276 -0.2917316692667706 \\ + 0.310344827586207 -0.3104524180967239 \\ + 0.3850574712643678 -0.3244929797191888 \\ + 0.4528735632183909 -0.3338533541341654 \\ + 0.5298850574712645 -0.3361934477379096 \\ + 0.6034482758620691 -0.3315132605304213 \\ + 0.6770114942528737 -0.2730109204368175 \\ + 0.7494252873563219 -0.2145085803432137 \\ + 0.8241379310344829 0.0522620904836194 \\ + 0.881609195402299 0.1271450858034321 \\ + } + ; + \addlegendentry {Experimental Nacelle} + \addplot[color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, name path={c65aa2ec-1439-45e4-b383-ac4b956292e6}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.1804;blue,0.3647}, fill opacity={1.0}, line width={0.75}, rotate={180}, solid}] + table[row sep={\\}] + { + \\ + 0.0011494252873563 0.4804992199687987 \\ + 0.0172413793103448 -0.0998439937597504 \\ + 0.0459770114942529 -0.2472698907956319 \\ + 0.0827586206896552 -0.3221528861154447 \\ + 0.1264367816091954 -0.4297971918876756 \\ + 0.1747126436781609 -0.4719188767550703 \\ + 0.235632183908046 -0.5514820592823714 \\ + 0.3045977011494253 -0.5959438377535102 \\ + 0.374712643678161 -0.6240249609984401 \\ + 0.4471264367816092 -0.6427457098283932 \\ + 0.5264367816091955 -0.654446177847114 \\ + 0.6000000000000001 -0.6193447737909517 \\ + 0.674712643678161 -0.5374414976599065 \\ + 0.745977011494253 -0.3806552262090484 \\ + 0.8241379310344829 -0.0507020280811233 \\ + 0.8839080459770116 0.0709828393135725 \\ + } + ; + \addlegendentry {Experimental Casing} + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={6ecdca2c-de9a-42a2-8cb0-b716c759e1a6}, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.9998072590601808 0.9139787493185914 \\ + 0.9990365924934628 0.3350308611962586 \\ + 0.9974964476720136 0.33327348593683603 \\ + 0.995189199387516 0.33049895771267346 \\ + 0.992118405249592 0.32943282147137354 \\ + 0.9882888002002268 0.32499122558429605 \\ + 0.983706289212831 0.3137911714646998 \\ + 0.9783779381872002 0.3004507648265302 \\ + 0.9723119630544095 0.286594537331177 \\ + 0.9655177171084428 0.2706042698570025 \\ + 0.9580056765840921 0.25284502127652375 \\ + 0.9497874245033623 0.23296722666205116 \\ + 0.9408756328152912 0.2110456219798158 \\ + 0.9312840428567223 0.18747699445925592 \\ + 0.9210274441641593 0.16235591833269913 \\ + 0.9101216516693731 0.13517102803154168 \\ + 0.8985834813139231 0.10618840366398796 \\ + 0.886430724120194 0.07570857586711066 \\ + 0.8736821187589292 0.04371718922629475 \\ + 0.8603573226555583 0.010228216558278325 \\ + 0.8464768816798722 -0.024847999187633585 \\ + 0.8320621984657812 -0.06209699051491713 \\ + 0.8171354994100043 -0.10219860057710961 \\ + 0.8017198004005767 -0.1449911670440518 \\ + 0.7858388713280188 -0.18984399692233933 \\ + 0.7695171994338877 -0.23660128308279305 \\ + 0.752779951553226 -0.28348714470354586 \\ + 0.7356529353091255 -0.32997187178683074 \\ + 0.7181625593192437 -0.3770869605805336 \\ + 0.7003357924756294 -0.4267824922228374 \\ + 0.6822001223606455 -0.4817152625714949 \\ + 0.66378351286311 -0.539209554575012 \\ + 0.6451143610600054 -0.5945772802655254 \\ + 0.6262214534302449 -0.6383493014535375 \\ + 0.6071339214680084 -0.6622225282915233 \\ + 0.5878811967640897 -0.6696987703741986 \\ + 0.568492965624517 -0.6682433775250436 \\ + 0.5489991232964206 -0.6643514233735064 \\ + 0.5294297278717283 -0.6617426707549083 \\ + 0.5098149539397671 -0.6596471532817318 \\ + 0.49018504606023283 -0.6568305376666148 \\ + 0.47057027212827157 -0.6538678870481391 \\ + 0.4510008767035793 -0.6504475612803851 \\ + 0.4315070343754828 -0.6464630014347288 \\ + 0.4121188032359102 -0.641031809519488 \\ + 0.3928660785319915 -0.6350118939127991 \\ + 0.37377854656975507 -0.6281569017820552 \\ + 0.3548856389399946 -0.6199865422927875 \\ + 0.3362164871368899 -0.6115471853037084 \\ + 0.3177998776393543 -0.602266367043558 \\ + 0.2996642075243705 -0.5923635831983323 \\ + 0.2818374406807562 -0.5818692445069138 \\ + 0.26434706469087454 -0.5700439553574101 \\ + 0.24722004844677403 -0.5571291446752593 \\ + 0.2304828005661122 -0.5433746354271214 \\ + 0.21416112867198114 -0.5290964074703306 \\ + 0.19828019959942322 -0.5141706251258982 \\ + 0.18286450058999557 -0.4985108250186616 \\ + 0.1679378015342186 -0.48266998457772603 \\ + 0.15352311832012766 -0.4652457006456705 \\ + 0.13964267734444172 -0.44537618658468303 \\ + 0.12631788124107088 -0.4232057042652737 \\ + 0.11356927587980603 -0.3998128468703759 \\ + 0.1014165186860769 -0.37568883683314613 \\ + 0.08987834833062683 -0.351941967331723 \\ + 0.07897255583584062 -0.32808049524948624 \\ + 0.06871595714327763 -0.3031827740256616 \\ + 0.05912436718470873 -0.2759799950942996 \\ + 0.050212575496637685 -0.24201983841607966 \\ + 0.041994323415907975 -0.20282510161910472 \\ + 0.034482282891557275 -0.16391720020598521 \\ + 0.027688036945590577 -0.13038253409090306 \\ + 0.021622061812799798 -0.11032816675008927 \\ + 0.01629371078716904 -0.09371716772165262 \\ + 0.011711199799773253 -0.04717485534129229 \\ + 0.00788159475040795 0.06105195853762946 \\ + 0.004810800612483984 0.26106090094760603 \\ + 0.002503552327986436 0.5392380931830363 \\ + 0.0009634075065372838 0.8042673939496611 \\ + 0.00019274093981927476 0.974650648105796 \\ + 0.00019274093981927476 0.9787730395586061 \\ + 0.0009634075065372838 0.8177283829194804 \\ + 0.002503552327986436 0.5646130478027167 \\ + 0.004810800612483984 0.30055598532226446 \\ + 0.00788159475040795 0.11323319930883224 \\ + 0.011711199799773253 0.014775557633217695 \\ + 0.01629371078716904 -0.024343424002630565 \\ + 0.021622061812799798 -0.03466183178406168 \\ + 0.027688036945590577 -0.047507552690318366 \\ + 0.034482282891557275 -0.072072744444039 \\ + 0.041994323415907975 -0.1007951609664215 \\ + 0.050212575496637685 -0.12906199663078244 \\ + 0.05912436718470873 -0.15200983611296182 \\ + 0.06871595714327763 -0.16845373612411985 \\ + 0.07897255583584062 -0.18250752287503058 \\ + 0.08987834833062683 -0.19536468643165095 \\ + 0.1014165186860769 -0.20788067535661203 \\ + 0.11356927587980603 -0.22052750431009494 \\ + 0.12631788124107088 -0.23239755028925235 \\ + 0.13964267734444172 -0.24314377668745846 \\ + 0.15352311832012766 -0.25193187500945147 \\ + 0.1679378015342186 -0.2587277062705633 \\ + 0.18286450058999557 -0.26432730703847707 \\ + 0.19828019959942322 -0.2699491513331784 \\ + 0.21416112867198114 -0.27517496371561867 \\ + 0.2304828005661122 -0.280120338443971 \\ + 0.24722004844677403 -0.2849342847529992 \\ + 0.26434706469087454 -0.28940394079321474 \\ + 0.2818374406807562 -0.29337734309210317 \\ + 0.2996642075243705 -0.2967048497642284 \\ + 0.3177998776393543 -0.300022221421157 \\ + 0.3362164871368899 -0.30333860366080767 \\ + 0.3548856389399946 -0.3065139841348692 \\ + 0.37377854656975507 -0.3100383531633155 \\ + 0.3928660785319915 -0.31311623699265945 \\ + 0.4121188032359102 -0.3161611708009693 \\ + 0.4315070343754828 -0.3193986275478824 \\ + 0.4510008767035793 -0.3221778468480687 \\ + 0.47057027212827157 -0.3252206907252708 \\ + 0.49018504606023283 -0.32863442822258104 \\ + 0.5098149539397671 -0.33269469521777384 \\ + 0.5294297278717283 -0.3369811172044266 \\ + 0.5489991232964206 -0.3425193182760915 \\ + 0.568492965624517 -0.35000405357965536 \\ + 0.5878811967640897 -0.3565867895096544 \\ + 0.6071339214680084 -0.3571547510045223 \\ + 0.6262214534302449 -0.3456380547056759 \\ + 0.6451143610600054 -0.3188820549922191 \\ + 0.66378351286311 -0.2831494840085973 \\ + 0.6822001223606455 -0.2457574096704913 \\ + 0.7003357924756294 -0.21030295034016921 \\ + 0.7181625593192437 -0.1788913951984903 \\ + 0.7356529353091255 -0.1492344260159515 \\ + 0.752779951553226 -0.11961466533435017 \\ + 0.7695171994338877 -0.08905057664203686 \\ + 0.7858388713280188 -0.05790283329754642 \\ + 0.8017198004005767 -0.027652966883505714 \\ + 0.8171354994100043 0.001588211278120033 \\ + 0.8320621984657812 0.029258278229125634 \\ + 0.8464768816798722 0.055182501901625436 \\ + 0.8603573226555583 0.0799406392066867 \\ + 0.8736821187589292 0.10403575205645432 \\ + 0.886430724120194 0.1275217179411562 \\ + 0.8985834813139231 0.15035279819942582 \\ + 0.9101216516693731 0.17250713602471557 \\ + 0.9210274441641593 0.1936574892806836 \\ + 0.9312840428567223 0.21349897789220695 \\ + 0.9408756328152912 0.232468240310446 \\ + 0.9497874245033623 0.2504226922779489 \\ + 0.9580056765840921 0.2669228400212573 \\ + 0.9655177171084428 0.281836175929452 \\ + 0.9723119630544095 0.29544659901250625 \\ + 0.9783779381872002 0.30733777860310896 \\ + 0.983706289212831 0.31905514853920935 \\ + 0.9882888002002268 0.32894693777897743 \\ + 0.992118405249592 0.33237650043012357 \\ + 0.995189199387516 0.33262619545499517 \\ + 0.9974964476720136 0.3346990325346496 \\ + 0.9990365924934628 0.3358260728998983 \\ + 0.9998072590601808 0.9140652266331516 \\ + } + ; + \addlegendentry {DuctAPE Isolated Duct} + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={ec518d23-3534-4f4a-8f49-02367dbdd687}, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.9998072590601808 0.9134863880278252 \\ + 0.9990365924934628 0.32760818474764175 \\ + 0.9974964476720136 0.32547223220035326 \\ + 0.995189199387516 0.3222797430761143 \\ + 0.992118405249592 0.32079500180206844 \\ + 0.9882888002002268 0.3158660956865653 \\ + 0.983706289212831 0.3040519422960034 \\ + 0.9783779381872002 0.29002361407197585 \\ + 0.9723119630544095 0.27542354007704073 \\ + 0.9655177171084428 0.2586025442033757 \\ + 0.9580056765840921 0.23992327636139044 \\ + 0.9497874245033623 0.21902142590676443 \\ + 0.9408756328152912 0.19596323811481986 \\ + 0.9312840428567223 0.17114340213847434 \\ + 0.9210274441641593 0.1446492576423215 \\ + 0.9101216516693731 0.11594875979401487 \\ + 0.8985834813139231 0.08530305993301435 \\ + 0.886430724120194 0.05300986865638391 \\ + 0.8736821187589292 0.01904572554567896 \\ + 0.8603573226555583 -0.01658338851176988 \\ + 0.8464768816798722 -0.0539771889540368 \\ + 0.8320621984657812 -0.09374587707723592 \\ + 0.8171354994100043 -0.1365992347046825 \\ + 0.8017198004005767 -0.18238056434034622 \\ + 0.7858388713280188 -0.23044478294514859 \\ + 0.7695171994338877 -0.2806322971399273 \\ + 0.752779951553226 -0.3310981715770911 \\ + 0.7356529353091255 -0.38127765218138143 \\ + 0.7181625593192437 -0.4322229698999629 \\ + 0.7003357924756294 -0.4859474516088387 \\ + 0.6822001223606455 -0.5452098029680192 \\ + 0.66378351286311 -0.6072098073633496 \\ + 0.6451143610600054 -0.6670218495439255 \\ + 0.6262214534302449 -0.7146855909125522 \\ + 0.6071339214680084 -0.7414189914666403 \\ + 0.5878811967640897 -0.7507973072884602 \\ + 0.568492965624517 -0.7505885979937825 \\ + 0.5489991232964206 -0.7475817887207541 \\ + 0.5294297278717283 -0.7456750062282893 \\ + 0.5098149539397671 -0.7440576170476585 \\ + 0.49018504606023283 -0.7414304402853373 \\ + 0.47057027212827157 -0.7383971634615349 \\ + 0.4510008767035793 -0.7346318482558201 \\ + 0.4315070343754828 -0.7300263146082901 \\ + 0.4121188032359102 -0.7236601769578257 \\ + 0.3928660785319915 -0.716444284860899 \\ + 0.37377854656975507 -0.7081320750189732 \\ + 0.3548856389399946 -0.6982346860673414 \\ + 0.3362164871368899 -0.6878667960444029 \\ + 0.3177998776393543 -0.6764470073409454 \\ + 0.2996642075243705 -0.6642262224057178 \\ + 0.2818374406807562 -0.6512582451588396 \\ + 0.26434706469087454 -0.6367958708244166 \\ + 0.24722004844677403 -0.6211178928878349 \\ + 0.2304828005661122 -0.6045113575039229 \\ + 0.21416112867198114 -0.5873296414573301 \\ + 0.19828019959942322 -0.5694681319772517 \\ + 0.18286450058999557 -0.550859967878482 \\ + 0.1679378015342186 -0.5320983807155959 \\ + 0.15352311832012766 -0.5117535893826513 \\ + 0.13964267734444172 -0.48896070774663425 \\ + 0.12631788124107088 -0.4638929689244522 \\ + 0.11356927587980603 -0.4376791802824431 \\ + 0.1014165186860769 -0.41083572256164924 \\ + 0.08987834833062683 -0.3845044490079681 \\ + 0.07897255583584062 -0.3581819592788109 \\ + 0.06871595714327763 -0.3309262638183541 \\ + 0.05912436718470873 -0.30144496104697294 \\ + 0.050212575496637685 -0.26520851150184743 \\ + 0.041994323415907975 -0.22378753864371692 \\ + 0.034482282891557275 -0.18280393874862022 \\ + 0.027688036945590577 -0.1474050292910214 \\ + 0.021622061812799798 -0.12576901008407226 \\ + 0.01629371078716904 -0.10765035447687654 \\ + 0.011711199799773253 -0.05923043514387705 \\ + 0.00788159475040795 0.05151696944005568 \\ + 0.004810800612483984 0.2547646898219462 \\ + 0.002503552327986436 0.5363647070917512 \\ + 0.0009634075065372838 0.80387321698079 \\ + 0.00019274093981927476 0.9750397035027092 \\ + 0.00019274093981927476 0.9779693173378775 \\ + 0.0009634075065372838 0.8144096015122828 \\ + 0.002503552327986436 0.5585303029327524 \\ + 0.004810800612483984 0.29223362170807266 \\ + 0.00788159475040795 0.1038450477302757 \\ + 0.011711199799773253 0.00528208332411495 \\ + 0.01629371078716904 -0.033448653973367826 \\ + 0.021622061812799798 -0.043219636782274806 \\ + 0.027688036945590577 -0.05561541252278723 \\ + 0.034482282891557275 -0.07986760007181393 \\ + 0.041994323415907975 -0.10833460269885231 \\ + 0.050212575496637685 -0.13636358855584918 \\ + 0.05912436718470873 -0.15905946175839913 \\ + 0.06871595714327763 -0.17523390053723586 \\ + 0.07897255583584062 -0.18902713559573647 \\ + 0.08987834833062683 -0.20163854276928728 \\ + 0.1014165186860769 -0.21392663463037764 \\ + 0.11356927587980603 -0.22636417435628808 \\ + 0.12631788124107088 -0.23803787038976587 \\ + 0.13964267734444172 -0.24859849410785384 \\ + 0.15352311832012766 -0.2572078619824978 \\ + 0.1679378015342186 -0.2638317741750418 \\ + 0.18286450058999557 -0.26926937499407155 \\ + 0.19828019959942322 -0.274743281410603 \\ + 0.21416112867198114 -0.2798328275529198 \\ + 0.2304828005661122 -0.28465338214713576 \\ + 0.24722004844677403 -0.28935389545937906 \\ + 0.26434706469087454 -0.2937202159872745 \\ + 0.2818374406807562 -0.29759946542716853 \\ + 0.2996642075243705 -0.3008411674108469 \\ + 0.3177998776393543 -0.3040827834225077 \\ + 0.3362164871368899 -0.3073330972607158 \\ + 0.3548856389399946 -0.31045135484014796 \\ + 0.37377854656975507 -0.3139287423570527 \\ + 0.3928660785319915 -0.31696720517756094 \\ + 0.4121188032359102 -0.3199813550800936 \\ + 0.4315070343754828 -0.32319720344540914 \\ + 0.4510008767035793 -0.32596204297587184 \\ + 0.47057027212827157 -0.32899979552809855 \\ + 0.49018504606023283 -0.3324180547347997 \\ + 0.5098149539397671 -0.33649333200439857 \\ + 0.5294297278717283 -0.3408042225110621 \\ + 0.5489991232964206 -0.3463795469996218 \\ + 0.568492965624517 -0.35391649110391854 \\ + 0.5878811967640897 -0.3605587976352047 \\ + 0.6071339214680084 -0.3611789403475185 \\ + 0.6262214534302449 -0.3496883525583203 \\ + 0.6451143610600054 -0.322920885669846 \\ + 0.66378351286311 -0.28715573523038285 \\ + 0.6822001223606455 -0.24973083418187936 \\ + 0.7003357924756294 -0.21425397121333933 \\ + 0.7181625593192437 -0.18283735015763747 \\ + 0.7356529353091255 -0.15318537099704455 \\ + 0.752779951553226 -0.12357464493245374 \\ + 0.7695171994338877 -0.09301954147020708 \\ + 0.7858388713280188 -0.061881207956830275 \\ + 0.8017198004005767 -0.031646110116892334 \\ + 0.8171354994100043 -0.0024253042475674835 \\ + 0.8320621984657812 0.025216554166711647 \\ + 0.8464768816798722 0.05110373753810604 \\ + 0.8603573226555583 0.07581819686080271 \\ + 0.8736821187589292 0.09986517161026365 \\ + 0.886430724120194 0.12329890488688822 \\ + 0.8985834813139231 0.14607354187155352 \\ + 0.9101216516693731 0.16816719729185559 \\ + 0.9210274441641593 0.18925086711168482 \\ + 0.9312840428567223 0.2090176843426642 \\ + 0.9408756328152912 0.22790634415229638 \\ + 0.9497874245033623 0.24577311885132525 \\ + 0.9580056765840921 0.26217521863893645 \\ + 0.9655177171084428 0.2769782738078491 \\ + 0.9723119630544095 0.29046695902263475 \\ + 0.9783779381872002 0.3022208057965998 \\ + 0.983706289212831 0.3137955468810084 \\ + 0.9882888002002268 0.32352592149595605 \\ + 0.992118405249592 0.3267348957269569 \\ + 0.995189199387516 0.3267252133612766 \\ + 0.9974964476720136 0.32854039327067885 \\ + 0.9990365924934628 0.32937497157881745 \\ + 0.9998072590601808 0.9136876136995079 \\ + } + ; + \addlegendentry {DuctAPE Duct with Center Body} +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/system-velocity-comp-160-duct-panels-80-hub-panels.tikz b/v0.5.0/DuctAPE/theory_latex/figures/system-velocity-comp-160-duct-panels-80-hub-panels.tikz new file mode 100644 index 00000000..374f1a15 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/system-velocity-comp-160-duct-panels-80-hub-panels.tikz @@ -0,0 +1,251 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={71.2mm}, height={57.15mm}, scaled x ticks={false}, xlabel={x}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.03969230769230769}, xmax={1.3627692307692305}, xticklabels={{$0.0$,$0.2$,$0.4$,$0.6$,$0.8$,$1.0$,$1.2$}}, xtick={{0.0,0.2,0.4,0.6000000000000001,0.8,1.0,1.2000000000000002}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$\frac{V_s}{V_\infty}$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={-0.01947869614834663}, ymax={2.7027697911395254}, yticklabels={{$0.0$,$0.5$,$1.0$,$1.5$,$2.0$,$2.5$}}, ytick={{0.0,0.5,1.0,1.5,2.0,2.5}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, name path={c3308803-1b06-4add-a325-8d8d85e2236f}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.1804;blue,0.3647}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}] + table[row sep={\\}] + { + \\ + 0.0 0.161290322580645 \\ + 0.0084880636604775 0.4430107526881719 \\ + 0.020159151193634 0.6989247311827955 \\ + 0.0371352785145889 0.918279569892473 \\ + 0.0583554376657825 1.101075268817204 \\ + 0.0859416445623342 1.2494623655913977 \\ + 0.1061007957559682 1.3053763440860213 \\ + 0.1326259946949602 1.3161290322580643 \\ + 0.1464190981432361 1.2709677419354837 \\ + 0.1856763925729443 1.1892473118279567 \\ + 0.2090185676392573 1.0924731182795697 \\ + 0.2344827586206897 1.0752688172043008 \\ + 0.3087533156498673 1.0516129032258061 \\ + 0.3851458885941644 1.0365591397849458 \\ + 0.4594164456233422 1.0193548387096771 \\ + 0.5347480106100796 1.0365591397849458 \\ + 0.6079575596816975 1.0430107526881718 \\ + 0.6843501326259946 1.0666666666666664 \\ + 0.7098143236074269 1.0774193548387094 \\ + 0.7352785145888593 1.0989247311827954 \\ + 0.7851458885941643 1.2236559139784944 \\ + 0.8095490716180371 1.1677419354838707 \\ + 0.8307692307692307 1.0967741935483868 \\ + 0.8572944297082229 1.0494623655913977 \\ + 0.8816976127320953 1.0451612903225804 \\ + 0.906100795755968 1.0150537634408598 \\ + 0.9305039787798407 1.0021505376344084 \\ + 0.9549071618037134 0.9913978494623654 \\ + 0.9782493368700264 0.9870967741935482 \\ + 1.002652519893899 0.9763440860215051 \\ + 1.0281167108753313 0.9655913978494621 \\ + 1.0525198938992042 0.9526881720430106 \\ + 1.0748010610079572 0.9483870967741933 \\ + 1.1002652519893896 0.9569892473118278 \\ + 1.122546419098143 0.9376344086021503 \\ + 1.1490716180371352 0.9290322580645158 \\ + 1.1734748010610077 0.9268817204301073 \\ + 1.1968169761273206 0.9268817204301073 \\ + 1.2137931034482756 0.9268817204301073 \\ + 1.2403183023872677 0.9204301075268815 \\ + 1.262599469496021 0.9139784946236558 \\ + 1.282758620689655 0.9161290322580643 \\ + 1.3039787798408484 0.9075268817204298 \\ + 1.3230769230769228 0.9053763440860213 \\ + } + ; + \addlegendentry {Experimental Center Body} + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={6262f3be-033b-413e-bf63-ca313b306318}, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.00025289956772181325 0.057566072359800644 \\ + 0.0012641078858061255 0.17308299765242838 \\ + 0.0032849653120420865 0.2874851651906823 \\ + 0.006312355830753114 0.3992972398415475 \\ + 0.01034161142518903 0.5091697079725312 \\ + 0.015366519275269486 0.6160029266685382 \\ + 0.021379331337302188 0.7190932446516964 \\ + 0.02837077629090483 0.8176771163604771 \\ + 0.03633007383470898 0.910943916318931 \\ + 0.0452449513088035 0.9980178859379647 \\ + 0.05510166261828654 1.0779311279583004 \\ + 0.06588500942874756 1.1495813120939165 \\ + 0.07757836460099743 1.2116472149575441 \\ + 0.09016369782891179 1.2625165714330846 \\ + 0.10362160344085639 1.3002226796107963 \\ + 0.11793133032182603 1.3214975154780504 \\ + 0.13307081391015993 1.3233965514016046 \\ + 0.14901671021949658 1.286736852001896 \\ + 0.16574443183350862 1.2111954572740529 \\ + 0.1832281858179166 1.1501601510696002 \\ + 0.20144101349132443 1.119853350040543 \\ + 0.22035483199355174 1.0998173257623127 \\ + 0.23994047758736908 1.085470796059159 \\ + 0.26016775062686665 1.0747155635562096 \\ + 0.2810054621231195 1.0664345263962338 \\ + 0.3024214818353479 1.0599594525020812 \\ + 0.32438278781341967 1.0548626964139751 \\ + 0.3468555173153038 1.0508584919478856 \\ + 0.36980501902096435 1.0477513657427364 \\ + 0.3931959064621843 1.045407311521281 \\ + 0.41699211258593455 1.04373714605175 \\ + 0.4411569453671558 1.042687065951403 \\ + 0.4656531443852012 1.0422340235840943 \\ + 0.4904429382767051 1.0423849549638675 \\ + 0.5154881029762868 1.0431798979300375 \\ + 0.5407500206552893 1.0447001104058096 \\ + 0.566189739267672 1.0470839738413837 \\ + 0.591768032611242 1.0505568068752966 \\ + 0.6174454608116153 1.0554884112506442 \\ + 0.643182431135644 1.0625128843211236 \\ + 0.6689392590405413 1.0728011995439501 \\ + 0.6946762293645701 1.088919618195562 \\ + 0.7203536575649435 1.1161679091831007 \\ + 0.7459319509085134 1.2066351452717838 \\ + 0.7713716695208961 1.2182109976365068 \\ + 0.7966335871998987 1.1155157205112456 \\ + 0.8216787518994806 1.0608004560832194 \\ + 0.8464685457909844 1.0359122053335783 \\ + 0.8709647448090299 1.0170670739766887 \\ + 0.8951295775902509 1.0024905182542796 \\ + 0.9189257837140012 0.9906012077105913 \\ + 0.9423166711552211 0.9805578085163171 \\ + 0.9652661728608818 0.9718470466072158 \\ + 0.9877389023627661 0.9641357029251998 \\ + 1.0097002083408377 0.957195741593635 \\ + 1.0311162280530661 0.950864580549694 \\ + 1.051953939549319 0.9450224436408342 \\ + 1.0721812125888164 0.9395787461641965 \\ + 1.0917668581826336 0.934463563086022 \\ + 1.110680676684861 0.9296221220644616 \\ + 1.128893504358269 0.9250111990003453 \\ + 1.146377258342677 0.9205967898449479 \\ + 1.163104979956689 0.9163527187564287 \\ + 1.1790508762660257 0.9122600312963296 \\ + 1.1941903598543595 0.9083071764429679 \\ + 1.208500086735329 0.9044911531388127 \\ + 1.2219579923472739 0.9008200459012162 \\ + 1.234543325575188 0.8973177992326571 \\ + 1.246236680747438 0.8940328722641129 \\ + 1.257020027557899 0.8910539756897706 \\ + 1.2668767388673823 0.8885393085886168 \\ + 1.2757916163414766 0.8867726771854875 \\ + 1.2837509138852807 0.8862758005542067 \\ + 1.2907423588388833 0.8880444718619394 \\ + 1.2967551709009162 0.8940738241138506 \\ + 1.3017800787509965 0.908618626193346 \\ + 1.3058093343454327 0.941585525726707 \\ + 1.3088367248641437 1.0205325780715777 \\ + 1.3108575822903794 1.2365778203956943 \\ + 1.3118687906084638 2.6095617364931343 \\ + } + ; + \addlegendentry {DuctAPE Isolated Center Body} + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={fa68ff2d-4204-4fc9-a9b9-cdc7b2026a92}, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.00025289956772181325 0.06040050130760381 \\ + 0.0012641078858061255 0.18165658945985097 \\ + 0.0032849653120420865 0.3018954585625553 \\ + 0.006312355830753114 0.4196667291020205 \\ + 0.01034161142518903 0.535751922505949 \\ + 0.015366519275269486 0.6490901869623108 \\ + 0.021379331337302188 0.7590307176544191 \\ + 0.02837077629090483 0.8648508769962111 \\ + 0.03633007383470898 0.9657655828826128 \\ + 0.0452449513088035 1.0609029780909425 \\ + 0.05510166261828654 1.1492690257206517 \\ + 0.06588500942874756 1.2296939365959685 \\ + 0.07757836460099743 1.300731073315346 \\ + 0.09016369782891179 1.3605661040145314 \\ + 0.10362160344085639 1.406933583954626 \\ + 0.11793133032182603 1.436068369625778 \\ + 0.13307081391015993 1.444452219306777 \\ + 0.14901671021949658 1.4106021502754118 \\ + 0.16574443183350862 1.3333996783490256 \\ + 0.1832281858179166 1.2712697958600452 \\ + 0.20144101349132443 1.2424900945429853 \\ + 0.22035483199355174 1.2247378322511842 \\ + 0.23994047758736908 1.2130020564057271 \\ + 0.26016775062686665 1.2049656641121413 \\ + 0.2810054621231195 1.1993719153455924 \\ + 0.3024214818353479 1.1954476954805773 \\ + 0.32438278781341967 1.192679093882452 \\ + 0.3468555173153038 1.190705960391544 \\ + 0.36980501902096435 1.1892675739436007 \\ + 0.3931959064621843 1.1881729643277112 \\ + 0.41699211258593455 1.187284384001779 \\ + 0.4411569453671558 1.1865084916098882 \\ + 0.4656531443852012 1.1857926189676935 \\ + 0.4904429382767051 1.1851250193139626 \\ + 0.5154881029762868 1.1845390771667614 \\ + 0.5407500206552893 1.184122614239795 \\ + 0.566189739267672 1.1840352326649568 \\ + 0.591768032611242 1.184540242343856 \\ + 0.6174454608116153 1.186066032472234 \\ + 0.643182431135644 1.189334134313449 \\ + 0.6689392590405413 1.1956517230429973 \\ + 0.6946762293645701 1.2078378653343522 \\ + 0.7203536575649435 1.2316623493231735 \\ + 0.7459319509085134 1.3237367675144505 \\ + 0.7713716695208961 1.327984621255586 \\ + 0.7966335871998987 1.2083552120641126 \\ + 0.8216787518994806 1.1424178183759521 \\ + 0.8464685457909844 1.1095215478377534 \\ + 0.8709647448090299 1.0836778097925293 \\ + 0.8951295775902509 1.062895744275853 \\ + 0.9189257837140012 1.0454256996770257 \\ + 0.9423166711552211 1.0303323152026684 \\ + 0.9652661728608818 1.0170399411965607 \\ + 0.9877389023627661 1.0051691561944769 \\ + 1.0097002083408377 0.9944544711348358 \\ + 1.0311162280530661 0.9847009667947073 \\ + 1.051953939549319 0.9757598183640335 \\ + 1.0721812125888164 0.967513761635368 \\ + 1.0917668581826336 0.959868107558768 \\ + 1.110680676684861 0.9527450185676858 \\ + 1.128893504358269 0.9460798028189339 \\ + 1.146377258342677 0.9398185351151309 \\ + 1.163104979956689 0.9339166307064216 \\ + 1.1790508762660257 0.9283382042063492 \\ + 1.1941903598543595 0.9230562108694969 \\ + 1.208500086735329 0.9180535452027732 \\ + 1.2219579923472739 0.9133255244001014 \\ + 1.234543325575188 0.9088846124610027 \\ + 1.246236680747438 0.9047690367655286 \\ + 1.257020027557899 0.9010585172933272 \\ + 1.2668767388673823 0.8979035605563466 \\ + 1.2757916163414766 0.8955817712562035 \\ + 1.2837509138852807 0.8946106430615375 \\ + 1.2907423588388833 0.8959848630394017 \\ + 1.2967551709009162 0.9017042855047052 \\ + 1.3017800787509965 0.9160409806548387 \\ + 1.3058093343454327 0.9489500931621637 \\ + 1.3088367248641437 1.0281360908944794 \\ + 1.3108575822903794 1.2452173317160153 \\ + 1.3118687906084638 2.6257250226313777 \\ + } + ; + \addlegendentry {DuctAPE Center Body with Duct} +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/system_duct_pressure_validation.tikz b/v0.5.0/DuctAPE/theory_latex/figures/system_duct_pressure_validation.tikz new file mode 100644 index 00000000..a2679fee --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/system_duct_pressure_validation.tikz @@ -0,0 +1,406 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={71.2mm}, height={57.15mm}, scaled x ticks={false}, xlabel={x}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.02979569460379161}, xmax={1.0297956946037916}, xticklabels={{$0.00$,$0.25$,$0.50$,$0.75$,$1.00$}}, xtick={{0.0,0.25,0.5,0.75,1.0}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$c_p$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, y dir={reverse}, ymajorgrids={false}, ymin={-0.7968924920807503}, ymax={1.0304796690223077}, yticklabels={{$-0.5$,$0.0$,$0.5$,$1.0$}}, ytick={{-0.5,0.0,0.5,1.0}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, name path={acf30773-7dcb-4f15-84a7-8267b8ba8bb3}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.1804;blue,0.3647}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}] + table[row sep={\\}] + { + \\ + 0.0022988505747127 0.6630265210608424 \\ + 0.0206896551724138 -0.0273010920436818 \\ + 0.0471264367816092 -0.125585023400936 \\ + 0.0816091954022989 -0.1723868954758191 \\ + 0.1264367816091954 -0.2355694227769111 \\ + 0.1816091954022989 -0.2566302652106085 \\ + 0.2413793103448276 -0.2917316692667706 \\ + 0.310344827586207 -0.3104524180967239 \\ + 0.3850574712643678 -0.3244929797191888 \\ + 0.4528735632183909 -0.3338533541341654 \\ + 0.5298850574712645 -0.3361934477379096 \\ + 0.6034482758620691 -0.3315132605304213 \\ + 0.6770114942528737 -0.2730109204368175 \\ + 0.7494252873563219 -0.2145085803432137 \\ + 0.8241379310344829 0.0522620904836194 \\ + 0.881609195402299 0.1271450858034321 \\ + } + ; + \addlegendentry {Experimental Nacelle} + \addplot[color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, name path={fe2f5e3e-e6cc-452e-83f1-ca75012366c3}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.1804;blue,0.3647}, fill opacity={1.0}, line width={0.75}, rotate={180}, solid}] + table[row sep={\\}] + { + \\ + 0.0011494252873563 0.4804992199687987 \\ + 0.0172413793103448 -0.0998439937597504 \\ + 0.0459770114942529 -0.2472698907956319 \\ + 0.0827586206896552 -0.3221528861154447 \\ + 0.1264367816091954 -0.4297971918876756 \\ + 0.1747126436781609 -0.4719188767550703 \\ + 0.235632183908046 -0.5514820592823714 \\ + 0.3045977011494253 -0.5959438377535102 \\ + 0.374712643678161 -0.6240249609984401 \\ + 0.4471264367816092 -0.6427457098283932 \\ + 0.5264367816091955 -0.654446177847114 \\ + 0.6000000000000001 -0.6193447737909517 \\ + 0.674712643678161 -0.5374414976599065 \\ + 0.745977011494253 -0.3806552262090484 \\ + 0.8241379310344829 -0.0507020280811233 \\ + 0.8839080459770116 0.0709828393135725 \\ + } + ; + \addlegendentry {Experimental Casing} + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={c27fdc39-9eef-4982-bd2b-97bb8d7cd777}, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.9998072590601808 0.8917892815502525 \\ + 0.9990365924934628 0.3353514487022301 \\ + 0.9974964476720136 0.3333251808399238 \\ + 0.995189199387516 0.3306537363867392 \\ + 0.992118405249592 0.3296735335056665 \\ + 0.9882888002002268 0.3253062755464874 \\ + 0.983706289212831 0.31418312783455715 \\ + 0.9783779381872002 0.30091970263894385 \\ + 0.9723119630544095 0.28714064695507635 \\ + 0.9655177171084428 0.27123216533797323 \\ + 0.9580056765840921 0.25356003953927586 \\ + 0.9497874245033623 0.2337763673334039 \\ + 0.9408756328152912 0.21195677451014028 \\ + 0.9312840428567223 0.18849805422048282 \\ + 0.9210274441641593 0.16349528463260632 \\ + 0.9101216516693731 0.13643905120061084 \\ + 0.8985834813139231 0.10759542666960653 \\ + 0.886430724120194 0.07726486500852348 \\ + 0.8736821187589292 0.045433476146972906 \\ + 0.8603573226555583 0.012115694538551436 \\ + 0.8464768816798722 -0.02277760185590072 \\ + 0.8320621984657812 -0.05982941457960722 \\ + 0.8171354994100043 -0.09971660485516098 \\ + 0.8017198004005767 -0.1422772364315119 \\ + 0.7858388713280188 -0.18688254111917013 \\ + 0.7695171994338877 -0.2333764808114609 \\ + 0.752779951553226 -0.27999141647712755 \\ + 0.7356529353091255 -0.3261999656036041 \\ + 0.7181625593192437 -0.37303082322820624 \\ + 0.7003357924756294 -0.42242511397050064 \\ + 0.6822001223606455 -0.4770267340788663 \\ + 0.66378351286311 -0.5341727128252394 \\ + 0.6451143610600054 -0.5891977387896279 \\ + 0.6262214534302449 -0.6326844744283764 \\ + 0.6071339214680084 -0.6563777038305072 \\ + 0.5878811967640897 -0.6637651420546953 \\ + 0.568492965624517 -0.6622758237912225 \\ + 0.5489991232964206 -0.6583717121693535 \\ + 0.5294297278717283 -0.655753161939105 \\ + 0.5098149539397671 -0.6536548403885152 \\ + 0.49018504606023283 -0.6508491651927557 \\ + 0.47057027212827157 -0.647907686501318 \\ + 0.4510008767035793 -0.6445204159517925 \\ + 0.4315070343754828 -0.6405810328825243 \\ + 0.4121188032359102 -0.6352117836001927 \\ + 0.3928660785319915 -0.6292654801573776 \\ + 0.37377854656975507 -0.6224966155543941 \\ + 0.3548856389399946 -0.6144273458962435 \\ + 0.3362164871368899 -0.6060976457722684 \\ + 0.3177998776393543 -0.5969378937833854 \\ + 0.2996642075243705 -0.587165717911935 \\ + 0.2818374406807562 -0.576810842253993 \\ + 0.26434706469087454 -0.5651367126022155 \\ + 0.24722004844677403 -0.5523829491358905 \\ + 0.2304828005661122 -0.5387971302179553 \\ + 0.21416112867198114 -0.5246934067666034 \\ + 0.19828019959942322 -0.5099473991559247 \\ + 0.18286450058999557 -0.4944727045553874 \\ + 0.1679378015342186 -0.478818733335278 \\ + 0.15352311832012766 -0.4615880620039281 \\ + 0.13964267734444172 -0.4419207070343849 \\ + 0.12631788124107088 -0.4199588524184312 \\ + 0.11356927587980603 -0.396775822812625 \\ + 0.1014165186860769 -0.37286021784325674 \\ + 0.08987834833062683 -0.3493162842831947 \\ + 0.07897255583584062 -0.3256529489954738 \\ + 0.06871595714327763 -0.30095079050493423 \\ + 0.05912436718470873 -0.27394244247114874 \\ + 0.050212575496637685 -0.24018427507908213 \\ + 0.041994323415907975 -0.20119259731048023 \\ + 0.034482282891557275 -0.16247425557451467 \\ + 0.027688036945590577 -0.12910671243917005 \\ + 0.021622061812799798 -0.10918533384880647 \\ + 0.01629371078716904 -0.0926893934375983 \\ + 0.011711199799773253 -0.04628558721661635 \\ + 0.00788159475040795 0.06176039108286535 \\ + 0.004810800612483984 0.261545610770471 \\ + 0.002503552327986436 0.5394925506177837 \\ + 0.0009634075065372838 0.8043616443561634 \\ + 0.00019274093981927476 0.9746683925553418 \\ + 0.00019274093981927476 0.9787615889910889 \\ + 0.0009634075065372838 0.8176780034063637 \\ + 0.002503552327986436 0.5644656378688621 \\ + 0.004810800612483984 0.3002524466130053 \\ + 0.00788159475040795 0.1127689573577404 \\ + 0.011711199799773253 0.014176077452024316 \\ + 0.01629371078716904 -0.02504869900364337 \\ + 0.021622061812799798 -0.03545512189483757 \\ + 0.027688036945590577 -0.04840106325748539 \\ + 0.034482282891557275 -0.073089813147037 \\ + 0.041994323415907975 -0.10194949558594457 \\ + 0.050212575496637685 -0.13036009926497139 \\ + 0.05912436718470873 -0.1534470161926602 \\ + 0.06871595714327763 -0.17002059410983494 \\ + 0.07897255583584062 -0.18420121629130626 \\ + 0.08987834833062683 -0.19718339870337442 \\ + 0.1014165186860769 -0.20982423761690772 \\ + 0.11356927587980603 -0.2225962625938609 \\ + 0.12631788124107088 -0.23458913712688445 \\ + 0.13964267734444172 -0.2454543008814276 \\ + 0.15352311832012766 -0.25435421601243147 \\ + 0.1679378015342186 -0.261253833209119 \\ + 0.18286450058999557 -0.26695088632302366 \\ + 0.19828019959942322 -0.2726675908082017 \\ + 0.21416112867198114 -0.27798363899506073 \\ + 0.2304828005661122 -0.28301510231239857 \\ + 0.24722004844677403 -0.28791106278979495 \\ + 0.26434706469087454 -0.2924579370708007 \\ + 0.2818374406807562 -0.2965028020039975 \\ + 0.2996642075243705 -0.2998953382385121 \\ + 0.3177998776393543 -0.3032735371572579 \\ + 0.3362164871368899 -0.30664649787764264 \\ + 0.3548856389399946 -0.3098734217353163 \\ + 0.37377854656975507 -0.31344645647925184 \\ + 0.3928660785319915 -0.31656651855896456 \\ + 0.4121188032359102 -0.3196490078353511 \\ + 0.4315070343754828 -0.32292021706834073 \\ + 0.4510008767035793 -0.3257265067306394 \\ + 0.47057027212827157 -0.32879281726401444 \\ + 0.49018504606023283 -0.3322267372965484 \\ + 0.5098149539397671 -0.336305124782329 \\ + 0.5294297278717283 -0.340605631711675 \\ + 0.5489991232964206 -0.3461583261708121 \\ + 0.568492965624517 -0.3536613695068711 \\ + 0.5878811967640897 -0.3602548204130802 \\ + 0.6071339214680084 -0.36080545062098923 \\ + 0.6262214534302449 -0.3492194136139024 \\ + 0.6451143610600054 -0.3223300504571138 \\ + 0.66378351286311 -0.2864271504428475 \\ + 0.6822001223606455 -0.24885861045971125 \\ + 0.7003357924756294 -0.21323488409053581 \\ + 0.7181625593192437 -0.18166932164329386 \\ + 0.7356529353091255 -0.15186454731847587 \\ + 0.752779951553226 -0.1220966367564491 \\ + 0.7695171994338877 -0.09138166508226386 \\ + 0.7858388713280188 -0.060081633882826724 \\ + 0.8017198004005767 -0.029684185795430418 \\ + 0.8171354994100043 -0.0003002063307255831 \\ + 0.8320621984657812 0.02750593268811985 \\ + 0.8464768816798722 0.05355908907345519 \\ + 0.8603573226555583 0.07844073658651107 \\ + 0.8736821187589292 0.10265537865882801 \\ + 0.886430724120194 0.12625673828792072 \\ + 0.8985834813139231 0.14919886970222562 \\ + 0.9101216516693731 0.1714597043945454 \\ + 0.9210274441641593 0.19271133750708347 \\ + 0.9312840428567223 0.21264825802558562 \\ + 0.9408756328152912 0.23170818374247415 \\ + 0.9497874245033623 0.2497483906685709 \\ + 0.9580056765840921 0.26632877812820643 \\ + 0.9655177171084428 0.2813169525100817 \\ + 0.9723119630544095 0.29499735651637193 \\ + 0.9783779381872002 0.30695324606489105 \\ + 0.983706289212831 0.3187302698881622 \\ + 0.9882888002002268 0.3286751192592162 \\ + 0.992118405249592 0.33214825748691845 \\ + 0.995189199387516 0.33242874328243477 \\ + 0.9974964476720136 0.3345249516884926 \\ + 0.9990365924934628 0.33607925395087024 \\ + 0.9998072590601808 0.8922927443536816 \\ + } + ; + \addlegendentry {DuctAPE Isolated Duct} + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={59bdf1b2-3ff6-4881-9427-8ea080c85da8}, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.9998072590601808 0.8782006248125827 \\ + 0.9990365924934628 0.3280314851138306 \\ + 0.9974964476720136 0.3254323007580774 \\ + 0.995189199387516 0.3223627311378561 \\ + 0.992118405249592 0.32097710283692205 \\ + 0.9882888002002268 0.3161285165047413 \\ + 0.983706289212831 0.3043944437540117 \\ + 0.9783779381872002 0.29044387601534805 \\ + 0.9723119630544095 0.2759198695571936 \\ + 0.9655177171084428 0.25917855968476833 \\ + 0.9580056765840921 0.24058353332152305 \\ + 0.9497874245033623 0.21977225891916252 \\ + 0.9408756328152912 0.19681192086728938 \\ + 0.9312840428567223 0.17209725098793027 \\ + 0.9210274441641593 0.1457160950412455 \\ + 0.9101216516693731 0.11713831773989136 \\ + 0.8985834813139231 0.08662505692822065 \\ + 0.886430724120194 0.05447394757108559 \\ + 0.8736821187589292 0.020661975771089858 \\ + 0.8603573226555583 -0.014804429128384866 \\ + 0.8464768816798722 -0.05202446929002624 \\ + 0.8320621984657812 -0.09160586580625774 \\ + 0.8171354994100043 -0.13425548248744623 \\ + 0.8017198004005767 -0.1798163360578766 \\ + 0.7858388713280188 -0.22764520631225693 \\ + 0.7695171994338877 -0.2775822052814316 \\ + 0.752779951553226 -0.32779046151351454 \\ + 0.7356529353091255 -0.37770739864588854 \\ + 0.7181625593192437 -0.4283824913639649 \\ + 0.7003357924756294 -0.481820196232956 \\ + 0.6822001223606455 -0.5407665009072855 \\ + 0.66378351286311 -0.602433630771209 \\ + 0.6451143610600054 -0.6619181430206975 \\ + 0.6262214534302449 -0.709310488077026 \\ + 0.6071339214680084 -0.7358754904168978 \\ + 0.5878811967640897 -0.7451744120495316 \\ + 0.568492965624517 -0.7449396260974692 \\ + 0.5489991232964206 -0.7419275857411478 \\ + 0.5294297278717283 -0.7400174300586122 \\ + 0.5098149539397671 -0.7384031302397229 \\ + 0.49018504606023283 -0.7357921415826107 \\ + 0.47057027212827157 -0.7327846998230019 \\ + 0.4510008767035793 -0.729056500042099 \\ + 0.4315070343754828 -0.7244995906798197 \\ + 0.4121188032359102 -0.7181981338974395 \\ + 0.3928660785319915 -0.7110579881361669 \\ + 0.37377854656975507 -0.7028334037494308 \\ + 0.3548856389399946 -0.6930379272683329 \\ + 0.3362164871368899 -0.682779968840201 \\ + 0.3177998776393543 -0.6714809249323213 \\ + 0.2996642075243705 -0.6593898668885452 \\ + 0.2818374406807562 -0.6465599395583257 \\ + 0.26434706469087454 -0.632246684865919 \\ + 0.24722004844677403 -0.6167271620116994 \\ + 0.2304828005661122 -0.6002862365249144 \\ + 0.21416112867198114 -0.5832755717069795 \\ + 0.19828019959942322 -0.5655900287472806 \\ + 0.18286450058999557 -0.5471628734061593 \\ + 0.1679378015342186 -0.5285839169628175 \\ + 0.15352311832012766 -0.5084281889884608 \\ + 0.13964267734444172 -0.4858325182388892 \\ + 0.12631788124107088 -0.46096816889140424 \\ + 0.11356927587980603 -0.4349589740259592 \\ + 0.1014165186860769 -0.4083188926140293 \\ + 0.08987834833062683 -0.382186075416336 \\ + 0.07897255583584062 -0.3560578224067681 \\ + 0.06871595714327763 -0.32899434526219773 \\ + 0.05912436718470873 -0.2997045758882313 \\ + 0.050212575496637685 -0.2636668807926541 \\ + 0.041994323415907975 -0.22244589817801574 \\ + 0.034482282891557275 -0.18165044358582327 \\ + 0.027688036945590577 -0.14642060014649427 \\ + 0.021622061812799798 -0.12492588593986009 \\ + 0.01629371078716904 -0.10693613746343611 \\ + 0.011711199799773253 -0.05866677515368535 \\ + 0.00788159475040795 0.051898765609251885 \\ + 0.004810800612483984 0.25494742170095286 \\ + 0.002503552327986436 0.536378508925498 \\ + 0.0009634075065372838 0.803813066682345 \\ + 0.00019274093981927476 0.9750050003431192 \\ + 0.00019274093981927476 0.9780022502839251 \\ + 0.0009634075065372838 0.8144715368757264 \\ + 0.002503552327986436 0.5585280677485334 \\ + 0.004810800612483984 0.29208036630760825 \\ + 0.00788159475040795 0.1035151911278237 \\ + 0.011711199799773253 0.004793668535997941 \\ + 0.01629371078716904 -0.03406507433965067 \\ + 0.021622061812799798 -0.04394234259007068 \\ + 0.027688036945590577 -0.05645204956255934 \\ + 0.034482282891557275 -0.08083812586493178 \\ + 0.041994323415907975 -0.10945070571706839 \\ + 0.050212575496637685 -0.1376304021191681 \\ + 0.05912436718470873 -0.16047129029423757 \\ + 0.06871595714327763 -0.17678049962690268 \\ + 0.07897255583584062 -0.19070489060686402 \\ + 0.08987834833062683 -0.20344498804579914 \\ + 0.1014165186860769 -0.21586106570789632 \\ + 0.11356927587980603 -0.22842649520185576 \\ + 0.12631788124107088 -0.24022534821492103 \\ + 0.13964267734444172 -0.250906928688889 \\ + 0.15352311832012766 -0.25962986471996063 \\ + 0.1679378015342186 -0.2663590807629228 \\ + 0.18286450058999557 -0.2718954530420561 \\ + 0.19828019959942322 -0.27746537795911674 \\ + 0.21416112867198114 -0.2826461780089542 \\ + 0.2304828005661122 -0.28755372256489187 \\ + 0.24722004844677403 -0.29233705318996583 \\ + 0.26434706469087454 -0.29678131113117057 \\ + 0.2818374406807562 -0.3007326690537593 \\ + 0.2996642075243705 -0.304039982781503 \\ + 0.3177998776393543 -0.3073429614111429 \\ + 0.3362164871368899 -0.31065035126585205 \\ + 0.3548856389399946 -0.31382061742932743 \\ + 0.37377854656975507 -0.3173471177088756 \\ + 0.3928660785319915 -0.3204281824086308 \\ + 0.4121188032359102 -0.3234802997117461 \\ + 0.4315070343754828 -0.326730308763973 \\ + 0.4510008767035793 -0.3295226182207023 \\ + 0.47057027212827157 -0.3325842430954977 \\ + 0.49018504606023283 -0.3360231020143103 \\ + 0.5098149539397671 -0.3401169372540307 \\ + 0.5294297278717283 -0.344442367895458 \\ + 0.5489991232964206 -0.35003267939896343 \\ + 0.568492965624517 -0.3575884825096389 \\ + 0.5878811967640897 -0.3642420759638556 \\ + 0.6071339214680084 -0.36484540320876024 \\ + 0.6262214534302449 -0.3532858309377602 \\ + 0.6451143610600054 -0.326385126558419 \\ + 0.66378351286311 -0.2904496300246755 \\ + 0.6822001223606455 -0.25284822064923573 \\ + 0.7003357924756294 -0.21720207915407252 \\ + 0.7181625593192437 -0.18563151197822414 \\ + 0.7356529353091255 -0.15583182329319079 \\ + 0.752779951553226 -0.1260730443707243 \\ + 0.7695171994338877 -0.09536713902194949 \\ + 0.7858388713280188 -0.06407658469527155 \\ + 0.8017198004005767 -0.03369399022648367 \\ + 0.8171354994100043 -0.004330488047433079 \\ + 0.8320621984657812 0.02344730258475558 \\ + 0.8464768816798722 0.049463236343427086 \\ + 0.8603573226555583 0.07430098828551779 \\ + 0.8736821187589292 0.09846724726514033 \\ + 0.886430724120194 0.12201609764754606 \\ + 0.8985834813139231 0.14490147109235108 \\ + 0.9101216516693731 0.16710126042386442 \\ + 0.9210274441641593 0.18828578122649187 \\ + 0.9312840428567223 0.20814751002408538 \\ + 0.9408756328152912 0.22712620617912416 \\ + 0.9497874245033623 0.2450779666876679 \\ + 0.9580056765840921 0.26155932827842365 \\ + 0.9655177171084428 0.2764359442452503 \\ + 0.9723119630544095 0.2899928648482162 \\ + 0.9783779381872002 0.30180895913385886 \\ + 0.983706289212831 0.3134392191447787 \\ + 0.9882888002002268 0.32321632084444407 \\ + 0.992118405249592 0.3264599032769048 \\ + 0.995189199387516 0.3264648751906183 \\ + 0.9974964476720136 0.3282803966541413 \\ + 0.9990365924934628 0.32973232615425996 \\ + 0.9998072590601808 0.8788563387061953 \\ + } + ; + \addlegendentry {DuctAPE Duct with Center Body} +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/system_grid_refinement.tikz b/v0.5.0/DuctAPE/theory_latex/figures/system_grid_refinement.tikz new file mode 100644 index 00000000..ed1c8a9b --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/system_grid_refinement.tikz @@ -0,0 +1,55 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={71.2mm}, height={57.15mm}, scaled x ticks={false}, xlabel={Total Number of Panels}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmode={log}, log basis x={10}, xmajorgrids={false}, xmin={54.84289230065208}, xmax={1312.8410442923314}, xticklabels={{$10^{2.0}$,$10^{2.5}$,$10^{3.0}$}}, xtick={{100.0,316.22776601683796,1000.0}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$\sum_{i=1}^N \left[c_{p_i} \Delta s_i\right]$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={-0.949604337124489}, ymax={-0.9438353382128629}, yticklabels={{$-0.949$,$-0.948$,$-0.947$,$-0.946$,$-0.945$,$-0.944$}}, ytick={{-0.9490000000000001,-0.9480000000000001,-0.9470000000000001,-0.9460000000000001,-0.9450000000000001,-0.9440000000000001}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, name path={3c2f8fc9-3dcc-4cce-a514-ebf9188ec695}, draw opacity={1.0}, line width={1.0}, dotted, mark={square*}, mark size={2.25 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.3608;blue,0.6706}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 60.0 -0.9456297780742182 \\ + 75.0 -0.9471762764757171 \\ + 90.0 -0.9490556269551387 \\ + 105.0 -0.9494410635703864 \\ + 120.0 -0.9489915679353544 \\ + 135.0 -0.9487257957570996 \\ + 150.0 -0.9488153079328568 \\ + 240.0 -0.9467277047264844 \\ + 300.0 -0.9459899036332713 \\ + 450.0 -0.9447972594002116 \\ + 600.0 -0.9442936326758566 \\ + 750.0 -0.9440729735816796 \\ + 900.0 -0.9439986117669655 \\ + 1050.0 -0.9440001951793429 \\ + 1200.0 -0.9440273109668829 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={b877f5d6-f7a2-487e-8fcd-0e2824bf782f}, only marks, draw opacity={1.0}, line width={0}, solid, mark={square*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}, forget plot] + table[row sep={\\}] + { + \\ + 240.0 -0.9467277047264844 \\ + } + ; + \node[right, above, color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{10 pt}{13.0 pt}\selectfont}}] at (axis cs:542,-0.9472277047264843) {240 total panels}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/system_hub_velocity_validation.tikz b/v0.5.0/DuctAPE/theory_latex/figures/system_hub_velocity_validation.tikz new file mode 100644 index 00000000..e2a91489 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/system_hub_velocity_validation.tikz @@ -0,0 +1,251 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={71.2mm}, height={57.15mm}, scaled x ticks={false}, xlabel={x}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={-0.03969230769230769}, xmax={1.3627692307692305}, xticklabels={{$0.0$,$0.2$,$0.4$,$0.6$,$0.8$,$1.0$,$1.2$}}, xtick={{0.0,0.2,0.4,0.6000000000000001,0.8,1.0,1.2000000000000002}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$\frac{V_s}{V_\infty}$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={-0.015017801099545869}, ymax={1.4976166421759762}, yticklabels={{$0.0$,$0.3$,$0.6$,$0.9$,$1.2$}}, ytick={{0.0,0.30000000000000004,0.6000000000000001,0.9000000000000001,1.2000000000000002}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.1804;blue,0.3647}, name path={41acc294-76ea-4bdf-a34a-12b854bd67fa}, only marks, draw opacity={1.0}, line width={0}, solid, mark={triangle*}, mark size={3.0 pt}, mark repeat={1}, mark options={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, fill={rgb,1:red,0.0;green,0.1804;blue,0.3647}, fill opacity={1.0}, line width={0.75}, rotate={0}, solid}] + table[row sep={\\}] + { + \\ + 0.0 0.161290322580645 \\ + 0.0084880636604775 0.4430107526881719 \\ + 0.020159151193634 0.6989247311827955 \\ + 0.0371352785145889 0.918279569892473 \\ + 0.0583554376657825 1.101075268817204 \\ + 0.0859416445623342 1.2494623655913977 \\ + 0.1061007957559682 1.3053763440860213 \\ + 0.1326259946949602 1.3161290322580643 \\ + 0.1464190981432361 1.2709677419354837 \\ + 0.1856763925729443 1.1892473118279567 \\ + 0.2090185676392573 1.0924731182795697 \\ + 0.2344827586206897 1.0752688172043008 \\ + 0.3087533156498673 1.0516129032258061 \\ + 0.3851458885941644 1.0365591397849458 \\ + 0.4594164456233422 1.0193548387096771 \\ + 0.5347480106100796 1.0365591397849458 \\ + 0.6079575596816975 1.0430107526881718 \\ + 0.6843501326259946 1.0666666666666664 \\ + 0.7098143236074269 1.0774193548387094 \\ + 0.7352785145888593 1.0989247311827954 \\ + 0.7851458885941643 1.2236559139784944 \\ + 0.8095490716180371 1.1677419354838707 \\ + 0.8307692307692307 1.0967741935483868 \\ + 0.8572944297082229 1.0494623655913977 \\ + 0.8816976127320953 1.0451612903225804 \\ + 0.906100795755968 1.0150537634408598 \\ + 0.9305039787798407 1.0021505376344084 \\ + 0.9549071618037134 0.9913978494623654 \\ + 0.9782493368700264 0.9870967741935482 \\ + 1.002652519893899 0.9763440860215051 \\ + 1.0281167108753313 0.9655913978494621 \\ + 1.0525198938992042 0.9526881720430106 \\ + 1.0748010610079572 0.9483870967741933 \\ + 1.1002652519893896 0.9569892473118278 \\ + 1.122546419098143 0.9376344086021503 \\ + 1.1490716180371352 0.9290322580645158 \\ + 1.1734748010610077 0.9268817204301073 \\ + 1.1968169761273206 0.9268817204301073 \\ + 1.2137931034482756 0.9268817204301073 \\ + 1.2403183023872677 0.9204301075268815 \\ + 1.262599469496021 0.9139784946236558 \\ + 1.282758620689655 0.9161290322580643 \\ + 1.3039787798408484 0.9075268817204298 \\ + 1.3230769230769228 0.9053763440860213 \\ + } + ; + \addlegendentry {Experimental Center Body} + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={e8245a9f-6e54-4646-9411-bf97e6ab5b9c}, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.0 0.02779260767240284 \\ + 0.0005057991354436265 0.14338717559357092 \\ + 0.0020224166361686243 0.2839950297147954 \\ + 0.004547513987915548 0.39896079731658995 \\ + 0.008077197673590681 0.5108281076657253 \\ + 0.012606025176787381 0.6189532838540084 \\ + 0.018127013373751593 0.7230600145088584 \\ + 0.024631649300852786 0.8225164137226451 \\ + 0.03210990328095687 0.9165686920142853 \\ + 0.04055024438846109 1.0043665426138135 \\ + 0.049939658229145915 1.0849528844014498 \\ + 0.06026366700742716 1.157227929505574 \\ + 0.07150635185006796 1.2198665839706324 \\ + 0.08365037735192689 1.2712468799996899 \\ + 0.09667701830589667 1.3093865331951473 \\ + 0.1105661885758161 1.330979733780047 \\ + 0.12529647206783595 1.3330554820159644 \\ + 0.1408451557524839 1.2961457471487585 \\ + 0.1571882646865093 1.2198808761106097 \\ + 0.17430059898050793 1.1583154889062872 \\ + 0.1921557726553253 1.1278910522472056 \\ + 0.2107262543273236 1.1078511841430196 \\ + 0.2299834096597799 1.0935595027069098 \\ + 0.24989754551495824 1.0828918896980548 \\ + 0.27043795573877505 1.0747175488060519 \\ + 0.2915729685074639 1.0683600419197616 \\ + 0.31326999516323184 1.0633864501343728 \\ + 0.33549558046360745 1.0595074662675856 \\ + 0.3582154541670001 1.0565251908888746 \\ + 0.3813945838749286 1.054303969219955 \\ + 0.40499722904943997 1.0527535604210236 \\ + 0.42898699612242913 1.0518195988794885 \\ + 0.45332689461188236 1.0514789391525947 \\ + 0.4779793941585201 1.051738909752883 \\ + 0.5029064823948901 1.0526405214215038 \\ + 0.5280697235576836 1.054266765584179 \\ + 0.5534303177528952 1.0567588454871122 \\ + 0.5789491607824487 1.0603465873952964 \\ + 0.6045869044400353 1.0654071271434034 \\ + 0.6303040171831954 1.0725870926583778 \\ + 0.6560608450880927 1.083080486784111 \\ + 0.6818176729929899 1.09950517443154 \\ + 0.7075347857361503 1.1272471283945216 \\ + 0.7331725293937368 1.2196836846522876 \\ + 0.7586913724232901 1.2318604958263828 \\ + 0.7840519666185021 1.1273158018148015 \\ + 0.8092152077812954 1.0718723352858124 \\ + 0.8341422960176657 1.0469038135710667 \\ + 0.8587947955643033 1.0280559011519732 \\ + 0.8831346940537563 1.0135541804022679 \\ + 0.9071244611267455 1.0017864178595945 \\ + 0.9307271063012569 0.991896252754513 \\ + 0.9539062360091854 0.9833604807938805 \\ + 0.9766261097125782 0.9758385668665394 \\ + 0.9988516950129538 0.9690962870840518 \\ + 1.0205487216687217 0.9629651115275139 \\ + 1.0416837344374104 0.9573189038307508 \\ + 1.0622241446612273 0.952059725872222 \\ + 1.0821382805164055 0.9471086968820828 \\ + 1.1013954358488618 0.9423997717506873 \\ + 1.1199659175208603 0.9378752394909196 \\ + 1.1378210911956776 0.9334822245740615 \\ + 1.1549334254896764 0.9291697315725815 \\ + 1.1712765344237017 0.9248859145808463 \\ + 1.1868252181083496 0.9205753309801488 \\ + 1.2015555016003694 0.9161759824446309 \\ + 1.215444671870289 0.9116159695157785 \\ + 1.2284713128242586 0.9068095926838666 \\ + 1.2406153383261176 0.9016527037782427 \\ + 1.2518580231687584 0.8960169840247716 \\ + 1.2621820319470398 0.8897424274694107 \\ + 1.2715714457877245 0.8826262506411829 \\ + 1.2800117868952288 0.8744039214528263 \\ + 1.2874900408753327 0.8647125904611369 \\ + 1.293994676802434 0.853017134374314 \\ + 1.2995156649993982 0.8384612151179522 \\ + 1.304044492502595 0.8195578814261242 \\ + 1.3075741761882702 0.7933334362804767 \\ + 1.310099273540017 0.7522422421010351 \\ + 1.311615891040742 0.6284647098964259 \\ + } + ; + \addlegendentry {DuctAPE Isolated Center Body} + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={375f7f0c-fbd9-4344-9771-cc1265bdfe11}, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.00025289956772181325 0.02915823736630565 \\ + 0.0012641078858061255 0.1504813496693117 \\ + 0.0032849653120420865 0.2981987996008838 \\ + 0.006312355830753114 0.4192669723036484 \\ + 0.01034161142518903 0.537435690276371 \\ + 0.015366519275269486 0.6521231576594798 \\ + 0.021379331337302188 0.763127595898054 \\ + 0.02837077629090483 0.8698651913304603 \\ + 0.03633007383470898 0.9716111708429949 \\ + 0.0452449513088035 1.067521015383471 \\ + 0.05510166261828654 1.1566125840498533 \\ + 0.06588500942874756 1.2377191528601024 \\ + 0.07757836460099743 1.309390167784593 \\ + 0.09016369782891179 1.369800868291029 \\ + 0.10362160344085639 1.4166686557448092 \\ + 0.11793133032182603 1.4461866028816277 \\ + 0.13307081391015993 1.4548062334040275 \\ + 0.14901671021949658 1.4207306389950989 \\ + 0.16574443183350862 1.3427826325950138 \\ + 0.1832281858179166 1.2801114592664624 \\ + 0.20144101349132443 1.2512377231877718 \\ + 0.22035483199355174 1.2335145110390728 \\ + 0.23994047758736908 1.2218711937429887 \\ + 0.26016775062686665 1.2139623230603012 \\ + 0.2810054621231195 1.2085159123979317 \\ + 0.3024214818353479 1.2047494501871259 \\ + 0.32438278781341967 1.2021427438530692 \\ + 0.3468555173153038 1.2003312032410776 \\ + 0.36980501902096435 1.199050864602101 \\ + 0.3931959064621843 1.1981083700222672 \\ + 0.41699211258593455 1.1973642593173455 \\ + 0.4411569453671558 1.1967240713014722 \\ + 0.4656531443852012 1.196134596779475 \\ + 0.4904429382767051 1.1955841718709628 \\ + 0.5154881029762868 1.1951069990096341 \\ + 0.5407500206552893 1.1947926569637914 \\ + 0.566189739267672 1.1948038019333995 \\ + 0.591768032611242 1.1954087372950495 \\ + 0.6174454608116153 1.1970440052803004 \\ + 0.643182431135644 1.2004449859154658 \\ + 0.6689392590405413 1.2069440825967472 \\ + 0.6946762293645701 1.2194164433589267 \\ + 0.7203536575649435 1.2437247507482618 \\ + 0.7459319509085134 1.3378775321039436 \\ + 0.7713716695208961 1.3426999937529596 \\ + 0.7966335871998987 1.220986440532708 \\ + 0.8216787518994806 1.154200841068209 \\ + 0.8464685457909844 1.1211609855519455 \\ + 0.8709647448090299 1.0952593674471793 \\ + 0.8951295775902509 1.074504751159568 \\ + 0.9189257837140012 1.0571138431502145 \\ + 0.9423166711552211 1.042134995426446 \\ + 0.9652661728608818 1.028981861528131 \\ + 0.9877389023627661 1.0172671973607799 \\ + 1.0097002083408377 1.0067189496447673 \\ + 1.0311162280530661 0.9971359376821025 \\ + 1.051953939549319 0.9883626856748793 \\ + 1.0721812125888164 0.9802742818865533 \\ + 1.0917668581826336 0.9727667638072486 \\ + 1.110680676684861 0.9657506608011293 \\ + 1.128893504358269 0.959146370282866 \\ + 1.146377258342677 0.9528805821681371 \\ + 1.163104979956689 0.9468832547603426 \\ + 1.1790508762660257 0.9410848026757832 \\ + 1.1941903598543595 0.9354132434784285 \\ + 1.208500086735329 0.9297910953274424 \\ + 1.2219579923472739 0.9241318387831152 \\ + 1.234543325575188 0.9183357538552924 \\ + 1.246236680747438 0.9122848952213154 \\ + 1.257020027557899 0.9058368013536158 \\ + 1.2668767388673823 0.8988160509901748 \\ + 1.2757916163414766 0.8910015363223164 \\ + 1.2837509138852807 0.8821043705527313 \\ + 1.2907423588388833 0.8717249482510584 \\ + 1.2967551709009162 0.8592652350465881 \\ + 1.3017800787509965 0.84374817826389 \\ + 1.3058093343454327 0.8234270352257995 \\ + 1.3088367248641437 0.7946510759450263 \\ + 1.3108575822903794 0.747724621830794 \\ + 1.3118687906084638 0.5913228287081294 \\ + } + ; + \addlegendentry {DuctAPE Center Body with Duct} +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/tikzmovecolor.col b/v0.5.0/DuctAPE/theory_latex/figures/tikzmovecolor.col new file mode 100644 index 00000000..d30cbaed --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/tikzmovecolor.col @@ -0,0 +1,5 @@ +color={rgb,1:red,0.7529411764705882; green,0.3254901960784314; blue,0.403921568627451} +color={rgb,1:red,0.6137254901960785; green,0.24411764705882352; blue,0.32745098039215687} +color={rgb,1:red,0.4745098039215686; green,0.1627450980392157; blue,0.25098039215686274} +color={rgb,1:red,0.3352941176470588; green,0.08137254901960785; blue,0.17450980392156862} +color={rgb,1:red,0.19607843137254902; green,0.0; blue,0.09803921568627451} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/transdrag-correction-margin.tikz b/v0.5.0/DuctAPE/theory_latex/figures/transdrag-correction-margin.tikz new file mode 100644 index 00000000..4f496ab0 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/transdrag-correction-margin.tikz @@ -0,0 +1,786 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={45.8mm}, height={50.8mm}, scaled x ticks={false}, xlabel={}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorticks={false}, xmajorgrids={false}, xmin={-18.080000000000002}, xmax={20.080000000000002}, axis x line*={left}, separate axis lines, x axis line style={{draw opacity = 0}}, scaled y ticks={false}, ylabel={}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, ymajorticks={false}, ymajorgrids={false}, ymin={-0.008234340913512272}, ymax={0.282712371363921}, axis y line*={left}, y axis line style={{draw opacity = 0}}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={41abde91-89d4-405b-a1dd-eed3b16517fc}, draw opacity={1.0}, line width={0.25}, solid, forget plot] + table[row sep={\\}] + { + \\ + -17.0 0.0 \\ + 19.0 0.0 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={742b8e84-373d-4302-95b2-9337d7c63d2f}, draw opacity={1.0}, line width={0.25}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.0 0.0 \\ + 0.0 0.06124222934673175 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={965088b2-bedd-482f-895f-83851f1ad588}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -17.0 0.03274774225137401 \\ + -16.9 0.032078105905770565 \\ + -16.8 0.0314152645136106 \\ + -16.7 0.0307604786412915 \\ + -16.6 0.030115008855210748 \\ + -16.5 0.029480115721765728 \\ + -16.4 0.0288570598073539 \\ + -16.3 0.02824710167837272 \\ + -16.2 0.027651501901219573 \\ + -16.1 0.02707152104229195 \\ + -16.0 0.026508419667987226 \\ + -15.9 0.025963458344702876 \\ + -15.8 0.02543789763883633 \\ + -15.7 0.024932998116785003 \\ + -15.6 0.02445002034494635 \\ + -15.5 0.023990224889717793 \\ + -15.4 0.023554872317496773 \\ + -15.3 0.023145223194680722 \\ + -15.2 0.02276253808766707 \\ + -15.1 0.02240807756285326 \\ + -15.0 0.02208310218663672 \\ + -14.9 0.021775799369370918 \\ + -14.8 0.021473570332794213 \\ + -14.7 0.021176496360381335 \\ + -14.6 0.020884658735607062 \\ + -14.5 0.02059813874194613 \\ + -14.4 0.020317017662873298 \\ + -14.3 0.020041376781863313 \\ + -14.2 0.01977129738239093 \\ + -14.1 0.019506860747930913 \\ + -14.0 0.019248148161958002 \\ + -13.9 0.018995240907946947 \\ + -13.8 0.018748220269372513 \\ + -13.7 0.01850716752970944 \\ + -13.6 0.01827216397243249 \\ + -13.5 0.018043290881016413 \\ + -13.4 0.017820629538935956 \\ + -13.3 0.017604261229665883 \\ + -13.2 0.017394267236680933 \\ + -13.1 0.017190728843455867 \\ + -13.0 0.016993727333465436 \\ + -12.9 0.016799744583548246 \\ + -12.8 0.016605353818553277 \\ + -12.7 0.016410773343970862 \\ + -12.6 0.016216221465291326 \\ + -12.5 0.016021916488005 \\ + -12.4 0.015828076717602207 \\ + -12.3 0.01563492045957328 \\ + -12.2 0.015442666019408535 \\ + -12.1 0.015251531702598313 \\ + -12.0 0.015061735814632937 \\ + -11.9 0.01487349666100273 \\ + -11.8 0.014687032547198026 \\ + -11.7 0.014502561778709145 \\ + -11.6 0.014320302661026421 \\ + -11.5 0.014140473499640182 \\ + -11.4 0.013963292600040752 \\ + -11.3 0.013788978267718457 \\ + -11.2 0.013617748808163627 \\ + -11.1 0.01344982252686659 \\ + -11.0 0.013285417729317676 \\ + -10.9 0.013123256442351834 \\ + -10.8 0.012961988738554107 \\ + -10.7 0.012801724992039944 \\ + -10.6 0.01264257557692481 \\ + -10.5 0.012484650867324159 \\ + -10.4 0.012328061237353444 \\ + -10.3 0.012172917061128125 \\ + -10.2 0.012019328712763655 \\ + -10.1 0.011867406566375494 \\ + -10.0 0.011717260996079096 \\ + -9.9 0.01156900237598992 \\ + -9.8 0.01142274108022342 \\ + -9.7 0.011278587482895047 \\ + -9.6 0.01113665195812027 \\ + -9.5 0.010997044880014536 \\ + -9.4 0.010859876622693302 \\ + -9.3 0.01072525756027203 \\ + -9.2 0.010593298066866166 \\ + -9.1 0.010464108516591176 \\ + -9.0 0.010337799283562514 \\ + -8.9 0.010213971815691194 \\ + -8.8 0.010092188424284365 \\ + -8.7 0.009972500778551687 \\ + -8.6 0.00985496054770282 \\ + -8.5 0.009739619400947424 \\ + -8.4 0.009626529007495154 \\ + -8.3 0.009515741036555675 \\ + -8.2 0.009407307157338637 \\ + -8.1 0.009301279039053707 \\ + -8.0 0.00919770835091054 \\ + -7.9 0.009096646762118799 \\ + -7.8 0.008998145941888138 \\ + -7.7 0.008902257559428221 \\ + -7.6 0.008809033283948702 \\ + -7.5 0.00871852478465924 \\ + -7.4 0.0086307837307695 \\ + -7.3 0.008545861791489135 \\ + -7.2 0.008463810636027806 \\ + -7.1 0.00838468193359517 \\ + -7.0 0.00830852735340089 \\ + -6.9 0.008234355627174653 \\ + -6.8 0.008161172967873453 \\ + -6.7 0.008089027266547895 \\ + -6.6 0.008017966414248583 \\ + -6.5 0.007948038302026126 \\ + -6.4 0.007879290820931133 \\ + -6.3 0.007811771862014209 \\ + -6.2 0.00774552931632596 \\ + -6.1 0.007680611074916994 \\ + -6.0 0.007617065028837918 \\ + -5.9 0.007554939069139339 \\ + -5.8 0.007494281086871864 \\ + -5.7 0.007435138973086099 \\ + -5.6 0.007377560618832652 \\ + -5.5 0.007321593915162128 \\ + -5.4 0.0072672867531251364 \\ + -5.3 0.007214687023772282 \\ + -5.2 0.007163842618154173 \\ + -5.1 0.007114801427321416 \\ + -5.0 0.007067611342324617 \\ + -4.9 0.0070212995895903435 \\ + -4.8 0.006974935693871966 \\ + -4.7 0.0069286309937103 \\ + -4.6 0.006882496827646157 \\ + -4.5 0.006836644534220352 \\ + -4.4 0.006791185451973701 \\ + -4.3 0.006746230919447015 \\ + -4.2 0.006701892275181112 \\ + -4.1 0.006658280857716803 \\ + -4.0 0.006615508005594903 \\ + -3.9 0.006573685057356227 \\ + -3.8 0.006532923351541588 \\ + -3.7 0.006493334226691801 \\ + -3.6 0.006455029021347679 \\ + -3.5 0.006418119074050036 \\ + -3.4 0.006382715723339688 \\ + -3.3 0.006348930307757448 \\ + -3.2 0.006316874165844132 \\ + -3.1 0.0062866586361405505 \\ + -3.0 0.006258395057187519 \\ + -2.9 0.0062312952293119015 \\ + -2.8 0.006204477971590604 \\ + -2.7 0.006177915150689514 \\ + -2.6 0.006151578633274512 \\ + -2.5 0.0061254402860114856 \\ + -2.4 0.006099471975566318 \\ + -2.3 0.006073645568604896 \\ + -2.2 0.0060479329317931 \\ + -2.1 0.006022305931796817 \\ + -2.0 0.005996736435281932 \\ + -1.9 0.005971196308914328 \\ + -1.8 0.0059456574193598915 \\ + -1.7 0.005920091633284505 \\ + -1.6 0.005894470817354054 \\ + -1.5 0.005868766838234422 \\ + -1.4 0.005842951562591497 \\ + -1.3 0.005816996857091157 \\ + -1.2 0.0057908745883992925 \\ + -1.1 0.005764556623181786 \\ + -1.0 0.005738014828104521 \\ + -0.9 0.005711186890429283 \\ + -0.8 0.005684049557190802 \\ + -0.7 0.005656633284714391 \\ + -0.6 0.005628968529325357 \\ + -0.5 0.005601085747349011 \\ + -0.4 0.005573015395110662 \\ + -0.3 0.005544787928935617 \\ + -0.2 0.005516433805149188 \\ + -0.1 0.005487983480076683 \\ + 0.0 0.005459467410043413 \\ + 0.1 0.005430916051374686 \\ + 0.2 0.005402359860395811 \\ + 0.3 0.005373829293432098 \\ + 0.4 0.005345354806808856 \\ + 0.5 0.005316966856851396 \\ + 0.6 0.005288695899885024 \\ + 0.7 0.0052605723922350515 \\ + 0.8 0.00523262679022679 \\ + 0.9 0.005204889550185544 \\ + 1.0 0.005177391128436626 \\ + 1.1 0.005150751995126851 \\ + 1.2 0.0051257346245434775 \\ + 1.3 0.005102582479222478 \\ + 1.4 0.005081539021699825 \\ + 1.5 0.005062847714511489 \\ + 1.6 0.005046752020193444 \\ + 1.7 0.005033495401281663 \\ + 1.8 0.005023321320312118 \\ + 1.9 0.00501647323982078 \\ + 2.0 0.005013194622343622 \\ + 2.1 0.005013728930416618 \\ + 2.2 0.005018319626575739 \\ + 2.3 0.005027210173356958 \\ + 2.4 0.0050406440332962455 \\ + 2.5 0.005058864668929577 \\ + 2.6 0.0050821155427929225 \\ + 2.7 0.005110640117422256 \\ + 2.8 0.0051446818553535474 \\ + 2.9 0.0051844842191227725 \\ + 3.0 0.005230290671265901 \\ + 3.1 0.0052823010756966925 \\ + 3.2 0.005340369027180724 \\ + 3.3 0.005404218584531699 \\ + 3.4 0.0054735738065633185 \\ + 3.5 0.005548158752089284 \\ + 3.6 0.005627697479923298 \\ + 3.7 0.005711914048879063 \\ + 3.8 0.0058005325177702795 \\ + 3.9 0.00589327694541065 \\ + 4.0 0.005989871390613878 \\ + 4.1 0.006090039912193662 \\ + 4.2 0.006193506568963708 \\ + 4.3 0.006299995419737717 \\ + 4.4 0.006409230523329389 \\ + 4.5 0.006520935938552425 \\ + 4.6 0.006634835724220529 \\ + 4.7 0.0067506539391474045 \\ + 4.8 0.006868114642146751 \\ + 4.9 0.0069869418920322736 \\ + 5.0 0.007106859747617668 \\ + 5.1 0.007227914763315581 \\ + 5.2 0.007350227880041849 \\ + 5.3 0.007473634736364967 \\ + 5.4 0.007597970970853431 \\ + 5.5 0.007723072222075736 \\ + 5.6 0.007848774128600378 \\ + 5.7 0.007974912328995856 \\ + 5.8 0.00810132246183066 \\ + 5.9 0.00822784016567329 \\ + 6.0 0.00835430107909224 \\ + 6.1 0.008480540840656003 \\ + 6.2 0.00860639508893308 \\ + 6.3 0.008731699462491964 \\ + 6.4 0.008856289599901151 \\ + 6.5 0.008980001139729138 \\ + 6.6 0.009102669720544417 \\ + 6.7 0.00922413098091549 \\ + 6.8 0.009344220559410846 \\ + 6.9 0.009462774094598985 \\ + 7.0 0.0095796272250484 \\ + 7.1 0.009695121805801218 \\ + 7.2 0.009809767555493974 \\ + 7.3 0.009923651908086778 \\ + 7.4 0.010036862297539738 \\ + 7.5 0.010149486157812967 \\ + 7.6 0.010261610922866576 \\ + 7.7 0.010373324026660675 \\ + 7.8 0.010484712903155372 \\ + 7.9 0.01059586498631078 \\ + 8.0 0.010706867710087008 \\ + 8.1 0.010817808508444169 \\ + 8.2 0.01092877481534237 \\ + 8.3 0.01103985406474173 \\ + 8.4 0.011151133690602345 \\ + 8.5 0.011262701126884338 \\ + 8.6 0.01137464380754781 \\ + 8.7 0.011487049166552878 \\ + 8.8 0.011600004637859656 \\ + 8.9 0.011713597655428244 \\ + 9.0 0.01182791565321876 \\ + 9.1 0.01194349340864211 \\ + 9.2 0.0120607446751984 \\ + 9.3 0.012179575350981542 \\ + 9.4 0.01229989133408544 \\ + 9.5 0.012421598522603999 \\ + 9.6 0.012544602814631132 \\ + 9.7 0.012668810108260741 \\ + 9.8 0.012794126301586743 \\ + 9.9 0.012920457292703035 \\ + 10.0 0.013047708979703528 \\ + 10.1 0.013175787260682132 \\ + 10.2 0.013304598033732752 \\ + 10.3 0.0134340471969493 \\ + 10.4 0.013564040648425675 \\ + 10.5 0.013694484286255791 \\ + 10.6 0.013825284008533554 \\ + 10.7 0.013956345713352872 \\ + 10.8 0.014087575298807654 \\ + 10.9 0.014218878662991801 \\ + 11.0 0.014350161703999229 \\ + 11.1 0.014485361106380894 \\ + 11.2 0.014628176014337205 \\ + 11.3 0.014778156015436212 \\ + 11.4 0.014934850697245977 \\ + 11.5 0.015097809647334563 \\ + 11.6 0.015266582453270025 \\ + 11.7 0.015440718702620426 \\ + 11.8 0.01561976798295383 \\ + 11.9 0.015803279881838286 \\ + 12.0 0.015990803986841867 \\ + 12.1 0.016181889885532617 \\ + 12.2 0.01637608716547861 \\ + 12.3 0.016572945414247902 \\ + 12.4 0.016772014219408545 \\ + 12.5 0.016972843168528613 \\ + 12.6 0.01717498184917615 \\ + 12.7 0.01737797984891922 \\ + 12.8 0.017581386755325897 \\ + 12.9 0.01778475215596422 \\ + 13.0 0.017987625638402265 \\ + 13.1 0.01819853488415434 \\ + 13.2 0.018425739152365075 \\ + 13.3 0.018668385397047998 \\ + 13.4 0.01892562057221663 \\ + 13.5 0.019196591631884495 \\ + 13.6 0.019480445530065123 \\ + 13.7 0.01977632922077204 \\ + 13.8 0.020083389658018775 \\ + 13.9 0.020400773795818845 \\ + 14.0 0.020727628588185772 \\ + 14.1 0.021063100989133096 \\ + 14.2 0.021406337952674333 \\ + 14.3 0.02175648643282302 \\ + 14.4 0.022112693383592664 \\ + 14.5 0.022474105758996797 \\ + 14.6 0.02283987051304895 \\ + 14.7 0.02320913459976265 \\ + 14.8 0.023581044973151423 \\ + 14.9 0.02395474858722878 \\ + 15.0 0.024329392396008263 \\ + 15.1 0.02471917093040247 \\ + 15.2 0.025138357414664334 \\ + 15.3 0.025586216842817883 \\ + 15.4 0.026062014208887128 \\ + 15.5 0.026565014506896086 \\ + 15.6 0.027094482730868775 \\ + 15.7 0.027649683874829224 \\ + 15.8 0.02822988293280145 \\ + 15.9 0.02883434489880946 \\ + 16.0 0.029462334766877277 \\ + 16.1 0.030113117531028934 \\ + 16.2 0.030785958185288422 \\ + 16.3 0.031480121723679796 \\ + 16.4 0.03219487314022703 \\ + 16.5 0.03292947742895419 \\ + 16.6 0.03368319958388527 \\ + 16.7 0.03445530459904428 \\ + 16.8 0.035245057468455264 \\ + 16.9 0.0360517231861422 \\ + 17.0 0.03687456674612916 \\ + 17.1 0.03772901534643799 \\ + 17.2 0.03863006485462826 \\ + 17.3 0.03957633326903071 \\ + 17.4 0.04056643858797592 \\ + 17.5 0.0415989988097946 \\ + 17.6 0.04267263193281738 \\ + 17.7 0.043785955955374864 \\ + 17.8 0.04493758887579779 \\ + 17.9 0.046126148692416734 \\ + 18.0 0.04735025340356243 \\ + 18.1 0.04860852100756548 \\ + 18.2 0.049899569502756494 \\ + 18.3 0.051222016887466235 \\ + 18.4 0.052574481160025235 \\ + 18.5 0.05395558031876427 \\ + 18.6 0.05536393236201392 \\ + 18.7 0.0567981552881048 \\ + 18.8 0.05825686709536767 \\ + 18.9 0.059738685782133066 \\ + 19.0 0.06124222934673175 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.0;blue,0.0}, name path={b4a82ecb-300a-4a4a-b00b-3166df5ba377}, draw opacity={1.0}, line width={0.25}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.0 0.0 \\ + 0.0 0.27447803045040875 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={4a4622ae-3e91-4d66-baf7-2434b3b52f94}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + -17.0 0.25328625966903234 \\ + -16.9 0.25264066045853595 \\ + -16.8 0.2519986140520971 \\ + -16.7 0.2513614159835972 \\ + -16.6 0.2507303618847072 \\ + -16.5 0.2501067474818096 \\ + -16.4 0.24949186859290198 \\ + -16.3 0.24888702112448624 \\ + -16.2 0.2482935010684516 \\ + -16.1 0.24771260449895632 \\ + -16.0 0.24714562756930816 \\ + -15.9 0.24659386650885257 \\ + -15.8 0.2460586176198646 \\ + -15.7 0.24554117727445246 \\ + -15.6 0.24504284191147022 \\ + -15.5 0.2445649080334416 \\ + -15.4 0.244108672203497 \\ + -15.3 0.2436754310423208 \\ + -15.2 0.24326648122511269 \\ + -15.1 0.24288311947855648 \\ + -15.0 0.2425266425778048 \\ + -14.9 0.24218634046131032 \\ + -14.8 0.24185039227989058 \\ + -14.7 0.24151842879795837 \\ + -14.6 0.24119008097176092 \\ + -14.5 0.24086497996702297 \\ + -14.4 0.24054275718228055 \\ + -14.3 0.24022304427781369 \\ + -14.2 0.23990547321004746 \\ + -14.1 0.23958967627126737 \\ + -14.0 0.2392752861344329 \\ + -13.9 0.23896193590281464 \\ + -13.8 0.2386492591640914 \\ + -13.7 0.23833689004842065 \\ + -13.6 0.23802446328984245 \\ + -13.5 0.23771161429015122 \\ + -13.4 0.23739797918407657 \\ + -13.3 0.2370831949042053 \\ + -13.2 0.23676689924349803 \\ + -13.1 0.23644873091246651 \\ + -13.0 0.23612832958695085 \\ + -12.9 0.2358059969852943 \\ + -12.8 0.23548242633677702 \\ + -12.7 0.23515784525008013 \\ + -12.6 0.23483248121730232 \\ + -12.5 0.23450656159866948 \\ + -12.4 0.2341803136051018 \\ + -12.3 0.23385396427832617 \\ + -12.2 0.2335277404681776 \\ + -12.1 0.23320186880667254 \\ + -12.0 0.23287657567838485 \\ + -11.9 0.2325520871865756 \\ + -11.8 0.23222862911445197 \\ + -11.7 0.23190642688083515 \\ + -11.6 0.23158570548940705 \\ + -11.5 0.2312666894705824 \\ + -11.4 0.23094960281490817 \\ + -11.3 0.2306346688967291 \\ + -11.2 0.23032211038666137 \\ + -11.1 0.23001214915120238 \\ + -11.0 0.22970500613754496 \\ + -10.9 0.2293996694492716 \\ + -10.8 0.2290950620374104 \\ + -10.7 0.22879130547213206 \\ + -10.6 0.22848852003488682 \\ + -10.5 0.22818682456211725 \\ + -10.4 0.22788633627034713 \\ + -10.3 0.22758717056056782 \\ + -10.2 0.22728944079965577 \\ + -10.1 0.22699325807632528 \\ + -10.0 0.2266987309288943 \\ + -9.9 0.22640596504189223 \\ + -9.8 0.22611506290826677 \\ + -9.7 0.2258261234536815 \\ + -9.6 0.22553924161908998 \\ + -9.5 0.22525450789747523 \\ + -9.4 0.2249720078203301 \\ + -9.3 0.2246918213891218 \\ + -9.2 0.22441402244666914 \\ + -9.1 0.22413867798302717 \\ + -9.0 0.2238658473701573 \\ + -8.9 0.22359478266388738 \\ + -8.8 0.2233247234920088 \\ + -8.7 0.22305569562797578 \\ + -8.6 0.22278771228152938 \\ + -8.5 0.22252077291636052 \\ + -8.4 0.2222548620090819 \\ + -8.3 0.2219899477585277 \\ + -8.2 0.22172598075771102 \\ + -8.1 0.2214628926446656 \\ + -8.0 0.22120059475281478 \\ + -7.9 0.22093897678654761 \\ + -7.8 0.22067790555326433 \\ + -7.7 0.22041722378929804 \\ + -7.6 0.2201567491237419 \\ + -7.5 0.21989627323122635 \\ + -7.4 0.21963556123193478 \\ + -7.3 0.21937435140446676 \\ + -7.2 0.21911235528424866 \\ + -7.1 0.21884925822676882 \\ + -7.0 0.21858472052058794 \\ + -6.9 0.21831731795777445 \\ + -6.8 0.2180454382605251 \\ + -6.7 0.217768398099605 \\ + -6.6 0.21748545113515466 \\ + -6.5 0.2171957815446735 \\ + -6.4 0.21689849685989782 \\ + -6.3 0.21659262004701044 \\ + -6.2 0.2162770807614629 \\ + -6.1 0.21595070570633443 \\ + -6.0 0.21561220802203984 \\ + -5.9 0.21526017563579056 \\ + -5.8 0.21489305850221516 \\ + -5.7 0.214509154672735 \\ + -5.6 0.21410659514173153 \\ + -5.5 0.2136833274334777 \\ + -5.4 0.21323709791676126 \\ + -5.3 0.21276543286595934 \\ + -5.2 0.21226561833015498 \\ + -5.1 0.21173467892820644 \\ + -5.0 0.21116935576025234 \\ + -4.9 0.2105654778478092 \\ + -4.8 0.20991897682131166 \\ + -4.7 0.20922636994193292 \\ + -4.6 0.20848397817220818 \\ + -4.5 0.20768793727347304 \\ + -4.4 0.20683421421847667 \\ + -4.3 0.20591862962723817 \\ + -4.2 0.2049368868861591 \\ + -4.1 0.20388460851605844 \\ + -4.0 0.2027573802059795 \\ + -3.9 0.20155080271972092 \\ + -3.8 0.20026055160755862 \\ + -3.7 0.19888244431745278 \\ + -3.6 0.19741251390501607 \\ + -3.5 0.1958470881036968 \\ + -3.4 0.19418287205785717 \\ + -3.3 0.1924170325714017 \\ + -3.2 0.1905472813194774 \\ + -3.1 0.18857195415081415 \\ + -3.0 0.18649008341394205 \\ + -2.9 0.184300372486656 \\ + -2.8 0.18200218313395664 \\ + -2.7 0.17959672881957275 \\ + -2.6 0.1770860782299011 \\ + -2.5 0.17447315419820092 \\ + -2.4 0.17176171327549988 \\ + -2.3 0.1689563062614434 \\ + -2.2 0.1660622208935604 \\ + -2.1 0.1630854087087608 \\ + -2.0 0.1600323987738342 \\ + -1.9 0.15691020148353133 \\ + -1.8 0.15372620591554642 \\ + -1.7 0.15048807430274969 \\ + -1.6 0.1472036370462098 \\ + -1.5 0.143880791377246 \\ + -1.4 0.14052740632448482 \\ + -1.3 0.1371512361006385 \\ + -1.2 0.1337598434418723 \\ + -1.1 0.13036053385433333 \\ + -1.0 0.12696030118386517 \\ + -0.9 0.12357221342295151 \\ + -0.8 0.1202081424793613 \\ + -0.7 0.11687264072706605 \\ + -0.6 0.11356976284201603 \\ + -0.5 0.11030309192241493 \\ + -0.4 0.10707576904582214 \\ + -0.3 0.10389052498513386 \\ + -0.2 0.10074971301433447 \\ + -0.1 0.09765534193363061 \\ + 0.0 0.09460910862557148 \\ + 0.1 0.09161242961532312 \\ + 0.2 0.08866647124786406 \\ + 0.3 0.08577217821263708 \\ + 0.4 0.08293030024327046 \\ + 0.5 0.08014141689821552 \\ + 0.6 0.0774059603897085 \\ + 0.7 0.0747242364756415 \\ + 0.8 0.07209644346393912 \\ + 0.9 0.06952268940398841 \\ + 1.0 0.06700300755642308 \\ + 1.1 0.06453629006387668 \\ + 1.2 0.062122238363479396 \\ + 1.3 0.05976196311380098 \\ + 1.4 0.05746212286079291 \\ + 1.5 0.055450783266054876 \\ + 1.6 0.053831270400863995 \\ + 1.7 0.052586512199060464 \\ + 1.8 0.051703984964772534 \\ + 1.9 0.05117577688296234 \\ + 2.0 0.05099867915431009 \\ + 2.1 0.0511743104817724 \\ + 2.2 0.05170927966284601 \\ + 2.3 0.05261538993906033 \\ + 2.4 0.05390988749190715 \\ + 2.5 0.05561575501590092 \\ + 2.6 0.05776204960296734 \\ + 2.7 0.060196366286318026 \\ + 2.8 0.0627132549757148 \\ + 2.9 0.06531327458608592 \\ + 3.0 0.06799716119747032 \\ + 3.1 0.07084698448052218 \\ + 3.2 0.07394163658895068 \\ + 3.3 0.07727575149468892 \\ + 3.4 0.08084202736898335 \\ + 3.5 0.08463083436481145 \\ + 3.6 0.08862984494526926 \\ + 3.7 0.09282370253945543 \\ + 3.8 0.09719374900626761 \\ + 3.9 0.10171783591450619 \\ + 4.0 0.10637024821782226 \\ + 4.1 0.11112177041845141 \\ + 4.2 0.11593992344817151 \\ + 4.3 0.12078939390983295 \\ + 4.4 0.12563266504058715 \\ + 4.5 0.13043084065532107 \\ + 4.6 0.1351446306257088 \\ + 4.7 0.13973544198286084 \\ + 4.8 0.14416649777075954 \\ + 4.9 0.1484038912450755 \\ + 5.0 0.15241748017495202 \\ + 5.1 0.15626877809498346 \\ + 5.2 0.1600263748715622 \\ + 5.3 0.1636748843828311 \\ + 5.4 0.167200384565834 \\ + 5.5 0.17059071026843972 \\ + 5.6 0.173835684917269 \\ + 5.7 0.17692727819005358 \\ + 5.8 0.17985968233005817 \\ + 5.9 0.18262930586228024 \\ + 6.0 0.18523468949681582 \\ + 6.1 0.18767635420879195 \\ + 6.2 0.18995659531365622 \\ + 6.3 0.19207923851249098 \\ + 6.4 0.19404937433955785 \\ + 6.5 0.19587308641520873 \\ + 6.6 0.1975571867629665 \\ + 6.7 0.1991089686299912 \\ + 6.8 0.2005359841815327 \\ + 6.9 0.201845851475644 \\ + 7.0 0.20304609251446268 \\ + 7.1 0.20416350297460534 \\ + 7.2 0.20522202978909151 \\ + 7.3 0.20622474332365695 \\ + 7.4 0.20717466561572723 \\ + 7.5 0.20807475385419325 \\ + 7.6 0.20892788676732255 \\ + 7.7 0.20973685370693182 \\ + 7.8 0.21050434619299663 \\ + 7.9 0.21123295167031347 \\ + 8.0 0.21192514922569902 \\ + 8.1 0.21258330701857356 \\ + 8.2 0.21320968118782174 \\ + 8.3 0.213806416011994 \\ + 8.4 0.21437554511679563 \\ + 8.5 0.21491899354230112 \\ + 8.6 0.21543858050148096 \\ + 8.7 0.21593602268073228 \\ + 8.8 0.21641293795161548 \\ + 8.9 0.21687084938054807 \\ + 9.0 0.21731118943951114 \\ + 9.1 0.21773636263757 \\ + 9.2 0.21814834882834905 \\ + 9.3 0.2185478598798212 \\ + 9.4 0.2189355812292152 \\ + 9.5 0.2193121697477588 \\ + 9.6 0.2196782521146288 \\ + 9.7 0.2200344236502275 \\ + 9.8 0.22038124755942803 \\ + 9.9 0.22071925453681585 \\ + 10.0 0.22104894268798586 \\ + 10.1 0.22137077772349023 \\ + 10.2 0.2216851933849163 \\ + 10.3 0.22199259206566668 \\ + 10.4 0.22229334559224168 \\ + 10.5 0.2225877961350503 \\ + 10.6 0.22287625722098015 \\ + 10.7 0.2231590148230378 \\ + 10.8 0.22343632850532852 \\ + 10.9 0.22370843260441178 \\ + 11.0 0.2239755374306498 \\ + 11.1 0.22424105345488846 \\ + 11.2 0.2245083455093057 \\ + 11.3 0.22477749512407255 \\ + 11.4 0.22504853237690356 \\ + 11.5 0.22532144243382649 \\ + 11.6 0.22559617119171768 \\ + 11.7 0.22587263015280035 \\ + 11.8 0.22615070064172507 \\ + 11.9 0.22643023745928548 \\ + 12.0 0.22671107205280355 \\ + 12.1 0.22699301527135818 \\ + 12.2 0.22727585976400064 \\ + 12.3 0.22755938207058599 \\ + 12.4 0.2278433444476628 \\ + 12.5 0.2281274964657375 \\ + 12.6 0.22841157640905532 \\ + 12.7 0.22869531250461944 \\ + 12.8 0.22897842400342255 \\ + 12.9 0.2292606221336678 \\ + 13.0 0.2295416109430162 \\ + 13.1 0.22982935564362833 \\ + 13.2 0.23013152156681327 \\ + 13.3 0.23044735279590525 \\ + 13.4 0.2307760870257612 \\ + 13.5 0.23111695620311865 \\ + 13.6 0.2314691870978572 \\ + 13.7 0.2318320018130846 \\ + 13.8 0.2322046182410226 \\ + 13.9 0.23258625047082013 \\ + 14.0 0.23297610915369654 \\ + 14.1 0.23337340183017835 \\ + 14.2 0.23377733322362723 \\ + 14.3 0.23418710550376753 \\ + 14.4 0.23460191852349344 \\ + 14.5 0.23502097003185074 \\ + 14.6 0.23544345586575982 \\ + 14.7 0.23586857012275503 \\ + 14.8 0.23629550531675217 \\ + 14.9 0.23672345251863638 \\ + 15.0 0.23715160148325629 \\ + 15.1 0.2375931747936965 \\ + 15.2 0.2380615068542019 \\ + 15.3 0.2385559515990992 \\ + 15.4 0.23907585980665771 \\ + 15.5 0.23962057949529347 \\ + 15.6 0.24018945626646462 \\ + 15.7 0.24078183360197988 \\ + 15.8 0.24139705312225543 \\ + 15.9 0.24203445481106103 \\ + 16.0 0.24269337721146012 \\ + 16.1 0.24337315759695524 \\ + 16.2 0.244073132121243 \\ + 16.3 0.2447926359495043 \\ + 16.4 0.24553100337371161 \\ + 16.5 0.24628756791409384 \\ + 16.6 0.2470616624085862 \\ + 16.7 0.24785261909183592 \\ + 16.8 0.24865976966511671 \\ + 16.9 0.24948244535830993 \\ + 17.0 0.2503199769849567 \\ + 17.1 0.251187062945865 \\ + 17.2 0.2520979676926964 \\ + 17.3 0.2530513701549533 \\ + 17.4 0.25404594842718065 \\ + 17.5 0.2550803798446571 \\ + 17.6 0.25615334104782156 \\ + 17.7 0.2572635080369281 \\ + 17.8 0.25840955621821193 \\ + 17.9 0.25959016044267136 \\ + 18.0 0.2608039950384076 \\ + 18.1 0.2620497338373508 \\ + 18.2 0.26332605019708133 \\ + 18.3 0.2646316170183748 \\ + 18.4 0.26596510675901536 \\ + 18.5 0.26732519144437233 \\ + 18.6 0.26871054267516936 \\ + 18.7 0.2701198316328477 \\ + 18.8 0.2715517290828857 \\ + 18.9 0.2730049053764081 \\ + 19.0 0.27447803045040875 \\ + } + ; + \node[left, , color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{6 pt}{7.800000000000001 pt}\selectfont}}] at (axis cs:19.0,0.05501319462234362) {Nominal}; + \node[left, , color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{6 pt}{7.800000000000001 pt}\selectfont}}] at (axis cs:21.0,0.13723901522520437) {Augmented}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/velocity-jumps.tikz b/v0.5.0/DuctAPE/theory_latex/figures/velocity-jumps.tikz new file mode 100644 index 00000000..4341a5d5 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/velocity-jumps.tikz @@ -0,0 +1,82 @@ +\begin{tikzpicture}[scale=1.0] + + % coordinate system + \coordinate (O) at (-1,-1); + \coordinate (er) at ($(O) +(0,1)$); + \coordinate (ez) at ($(O) +(1,0)$); + \draw[-Stealth,] (O) -- (er); + \draw[-Stealth,] (O) -- (ez); + \draw[] (O) circle (3pt); + \filldraw[] (O) circle (1pt); + \node[anchor=north east,outer sep=0] at (O) {$\hat{\vect{e}}_\theta$}; + \node[anchor=west,outer sep=0] at (er) {$\hat{\vect{e}}_r$}; + \node[anchor=south,outer sep=0] at (ez) {$\hat{\vect{e}}_z$}; + + % filaments lines + \draw[] (0,0) -- (0.0,0.85); + \draw[] (0,0.97) -- (0.0,1.85); + \draw[] (0,1.97) -- (0.0,3.0); + \draw[] (0.1,3.0) -- (0.1,1.97); + \draw[] (0.1,1.85) -- (0.1,1.5); + \draw[name path=shedfilament] (0.1,1.5) to [out =0, in =180] (6.4, 1.2); + \draw[] (6.5,1.2) -- +(0.2,0); + \draw[] (6.8,1.2) -- +(0.2,0); + \draw[] (7.1,1.2) -- +(1,0); + + % Velocity lines + \coordinate (vt2) at (1.35, 1.65); + \coordinate (vt1) at (1.35, 1.3); + \coordinate (vt1p) at ($(vt1) + (1.75, -0.1)$); + \coordinate (vt2p) at ($(vt2) + (2.5, -0.175)$); + + %vm's + \draw[primary,-Stealth, thick] (vt2) to [out=-3, in = 175] (vt2p); + \draw[primary,-Stealth, thick] (vt1) to [out=-3, in = 175] (vt1p); + \node[above,primary] at (vt2p) {\(\vect{C}_{m_2}\)}; + \node[below, primary] at (vt1p) {\(\vect{C}_{m_1}\)}; + + %vthetas + \node[secondary, above, shift={(0.0,0.15)}] at (vt2) {\(\vect{C}_{\theta_2}\)}; + \draw[secondary, thick] (vt2) circle(3.5pt); + \filldraw[secondary] (vt2) circle(1pt); + \node[secondary,below, shift={(0.0,-0.15)}] at (vt1) {\(\vect{C}_{\theta_1}\)}; + \draw[secondary, thick] (vt1) circle(3.5pt); + \filldraw[secondary] (vt1) circle(1pt); + + % gamma_theta's + \path[name path=gt1] (4.75,2) -- (4.75,0); + \path[name path=gt2] (5.25,2) -- (5.25,0); + \path[name path=gt3] (5.75,2) -- (5.75,0); + + \draw[-Stealth, name intersections={of=gt1 and shedfilament}](intersection-1) [partial ellipse =15:335:0.2 and 0.2]; + \draw[-Stealth, name intersections={of=gt2 and shedfilament}](intersection-1) [partial ellipse =15:335:0.2 and 0.2] node[primary, above, shift={(0,0.3)}] {\(\gamma_\theta\)}; + \draw[-Stealth, name intersections={of=gt3 and shedfilament}](intersection-1) [partial ellipse =15:335:0.2 and 0.2]; + + + % gamma_m's + \coordinate (gm1) at (6.5,1.2); + \coordinate (gm2) at (6.8,1.2); + \coordinate (gm3) at (7.1,1.2); + + \draw[-Stealth] (gm1) [partial ellipse =7:250:0.05 and 0.25]; + \draw[] (gm1) [partial ellipse =270:350:0.05 and 0.25]; + + \draw[-Stealth] (gm2) [partial ellipse =7:250:0.05 and 0.25] node[secondary, above, shift={(0,0.5)}] {\(\gamma_m\)}; + \draw[] (gm2) [partial ellipse =270:350:0.05 and 0.25]; + + \draw[-Stealth] (gm3) [partial ellipse =7:250:0.05 and 0.25]; + \draw[] (gm3) [partial ellipse =270:350:0.05 and 0.25]; + + + % Circulation Gammas + \coordinate (G2) at (0.0,2.0); + \draw[] (G2) [partial ellipse =95:200:0.4 and 0.075]; + \draw[Stealth-] (G2) [partial ellipse =220:430:0.4 and 0.075]; + \node[left, shift={(-0.3,0)}] at (G2) {\(\Gamma_2\)}; + + \coordinate (G1) at (0.0,1.0); + \draw[] (G1) [partial ellipse =95:200:0.4 and 0.075]; + \draw[Stealth-] (G1) [partial ellipse =220:445:0.4 and 0.075]; + \node[left, shift={(-0.3,0)}] at (G1) {\(\Gamma_1\)}; + +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/velocityjump.png b/v0.5.0/DuctAPE/theory_latex/figures/velocityjump.png new file mode 100644 index 00000000..ea0bab89 Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/velocityjump.png differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/velocityjump_clean.png b/v0.5.0/DuctAPE/theory_latex/figures/velocityjump_clean.png new file mode 100644 index 00000000..c73da3ac Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/velocityjump_clean.png differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/vortexringcoordinatesystem.tikz b/v0.5.0/DuctAPE/theory_latex/figures/vortexringcoordinatesystem.tikz new file mode 100644 index 00000000..1e827513 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/vortexringcoordinatesystem.tikz @@ -0,0 +1,35 @@ +\begin{tikzpicture} + \coordinate (O) at (0,0); + \coordinate (xo) at ($(O) + (160 : 0.5 and 2)$); + \coordinate (g) at ($(O) + (120 : 0.5 and 2)$); + \coordinate (x) at ($(O) + (4,2)$); + + %vortex ring + % \draw[] (O) ellipse (0.5 and 2); + \draw[] (O) [partial ellipse =2:27:0.5 and 2]; + \draw[] (O) [partial ellipse =30:100:0.5 and 2]; + \draw[] (O) [partial ellipse =107:358:0.5 and 2]; + + %z-axis + \draw[thick] (-2,0) -- (-0.6,0); + \draw[-Stealth,thick] (-0.45,0) -- (5,0); + \node[anchor=south west,outer sep=1] at (5,0) {$\hat{\vect{e}}_z$}; + + %x_o + \filldraw[] (xo) circle (0.05); + + %x + \filldraw[] (x) circle (0.05); + + % arrow and labels + \draw[-Stealth, thick, dashed, shorten >=2.5pt] (xo)node[anchor=east]{$\vect{p}_o = (r_o, \theta_o, z_o)$} -- (x)node[anchor=west]{$\vect{p} = (r,\theta=0,z)$}; + + %radial direction arrow + \draw[-Stealth, thick, shorten >=2] (O) -- (xo)node[anchor=north west, shift={(0.25,-0.05)}]{$\hat{\vect{e}}_r$}; + + %tangential direction arrow + \draw[-Stealth, thick] (xo) -- (-0.6,-1)node[anchor=east]{$\hat{\vect{e}}_\theta$}; + + % Gamma circle + \draw[-{Stealth[bend]}, thick] (g) [partial ellipse = -30:230:0.25 and 0.25]node[anchor=south east,outer sep=1]{$\vect{\Gamma}$}; +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/vortexringgeom.jpeg b/v0.5.0/DuctAPE/theory_latex/figures/vortexringgeom.jpeg new file mode 100644 index 00000000..29e06257 Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/vortexringgeom.jpeg differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/vortexsheets.png b/v0.5.0/DuctAPE/theory_latex/figures/vortexsheets.png new file mode 100644 index 00000000..fc900d64 Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/vortexsheets.png differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/vortexsheets_clean.png b/v0.5.0/DuctAPE/theory_latex/figures/vortexsheets_clean.png new file mode 100644 index 00000000..5fc36939 Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/figures/vortexsheets_clean.png differ diff --git a/v0.5.0/DuctAPE/theory_latex/figures/vtheta-verify.tikz b/v0.5.0/DuctAPE/theory_latex/figures/vtheta-verify.tikz new file mode 100644 index 00000000..18a06f00 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/vtheta-verify.tikz @@ -0,0 +1,146 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={58.5mm}, height={50.8mm}, scaled x ticks={false}, xlabel={$r/R$}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={0.10105882352941181}, xmax={0.9989411764705882}, xticklabels={{$0.2$,$0.4$,$0.6$,$0.8$}}, xtick={{0.2,0.4,0.6000000000000001,0.8}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$v_\theta$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={-0.6780821717512184}, ymax={2.2818906071194105}, yticklabels={{$-0.5$,$0.0$,$0.5$,$1.0$,$1.5$,$2.0$}}, ytick={{-0.5,0.0,0.5,1.0,1.5,2.0}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={86137388-28c3-46bb-8461-0ce323bcaf44}, draw opacity={1.0}, line width={1.0}, solid] + table[row sep={\\}] + { + \\ + 0.12647058823529414 -0.29715467862744 \\ + 0.17941176470588235 0.671422849406426 \\ + 0.2323529411764706 0.9687899154436606 \\ + 0.2852941176470588 1.00004364865226 \\ + 0.3382352941176471 0.9497284786142554 \\ + 0.39117647058823535 0.8722034743263399 \\ + 0.4441176470588235 0.8096257819956734 \\ + 0.4970588235294118 0.7504030904343328 \\ + 0.5499999999999999 0.701815650355077 \\ + 0.6029411764705882 0.6548295423815048 \\ + 0.6558823529411765 0.5933152183224997 \\ + 0.7088235294117646 0.5428547010245648 \\ + 0.761764705882353 0.48621471119215964 \\ + 0.8147058823529412 0.4339447044655036 \\ + 0.8676470588235294 0.3718818541049599 \\ + 0.9205882352941177 0.2898750055850185 \\ + 0.9735294117647059 0.185847398013137 \\ + } + ; + \addlegendentry {DuctAPE} + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={5bb38515-3511-402c-a3ba-b014a6ee53fe}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.12647058823529414 -0.59430935725488 \\ + 0.17941176470588235 1.342845698812852 \\ + 0.2323529411764706 1.937579830887321 \\ + 0.2852941176470588 2.00008729730452 \\ + 0.3382352941176471 1.8994569572285107 \\ + 0.39117647058823535 1.7444069486526799 \\ + 0.4441176470588235 1.6192515639913467 \\ + 0.4970588235294118 1.5008061808686657 \\ + 0.5499999999999999 1.403631300710154 \\ + 0.6029411764705882 1.3096590847630096 \\ + 0.6558823529411765 1.1866304366449993 \\ + 0.7088235294117646 1.0857094020491296 \\ + 0.761764705882353 0.9724294223843193 \\ + 0.8147058823529412 0.8678894089310072 \\ + 0.8676470588235294 0.7437637082099198 \\ + 0.9205882352941177 0.579750011170037 \\ + 0.9735294117647059 0.371694796026274 \\ + } + ; + \addplot[color={rgb,1:red,0.5098;green,0.5098;blue,0.5098}, name path={c0fda2cc-89da-4413-bd9e-442abd482275}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.12647058823529414 0.0 \\ + 0.17941176470588235 0.0 \\ + 0.2323529411764706 0.0 \\ + 0.2852941176470588 0.0 \\ + 0.3382352941176471 0.0 \\ + 0.39117647058823535 0.0 \\ + 0.4441176470588235 0.0 \\ + 0.4970588235294118 0.0 \\ + 0.5499999999999999 0.0 \\ + 0.6029411764705882 0.0 \\ + 0.6558823529411765 0.0 \\ + 0.7088235294117646 0.0 \\ + 0.761764705882353 0.0 \\ + 0.8147058823529412 0.0 \\ + 0.8676470588235294 0.0 \\ + 0.9205882352941177 0.0 \\ + 0.9735294117647059 0.0 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={bbe43509-be99-4720-9493-a4cdffa8251e}, draw opacity={1.0}, line width={1.0}, dashed] + table[row sep={\\}] + { + \\ + 0.15 0.2075973137797527 \\ + 0.2 0.9308950624513533 \\ + 0.25 1.0948698964921042 \\ + 0.3 1.099058896311536 \\ + 0.35 1.0560646033079895 \\ + 0.4 0.9880621938029667 \\ + 0.45 0.9387585047016386 \\ + 0.5 0.8852094419444083 \\ + 0.55 0.8412520508272378 \\ + 0.6 0.7970035214369123 \\ + 0.65 0.7351013073619601 \\ + 0.7 0.6827887521927679 \\ + 0.75 0.6212132775830086 \\ + 0.8 0.5643157016895394 \\ + 0.85 0.4973500873450214 \\ + 0.9 0.4194272816278024 \\ + 0.95 0.30908651215447014 \\ + } + ; + \addlegendentry {BEMT} + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={af456924-218c-4047-be16-3f2415eaa481}, draw opacity={1.0}, line width={1.0}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.15 0.4151946275595054 \\ + 0.2 1.8617901249027067 \\ + 0.25 2.1897397929842084 \\ + 0.3 2.198117792623072 \\ + 0.35 2.112129206615979 \\ + 0.4 1.9761243876059333 \\ + 0.45 1.8775170094032771 \\ + 0.5 1.7704188838888166 \\ + 0.55 1.6825041016544755 \\ + 0.6 1.5940070428738247 \\ + 0.65 1.4702026147239202 \\ + 0.7 1.3655775043855358 \\ + 0.75 1.2424265551660172 \\ + 0.8 1.1286314033790787 \\ + 0.85 0.9947001746900428 \\ + 0.9 0.8388545632556048 \\ + 0.95 0.6181730243089403 \\ + } + ; + \node[, color={rgb,1:red,0.5098;green,0.5098;blue,0.5098}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:0.5,-0.2) {Upstream}; + \node[right, , color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:0.2,0.5) {At Rotor Plane}; + \node[right, , color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, draw opacity={1.0}, rotate={0.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}] at (axis cs:0.5,2.0) {Downstream}; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/vx-verify.tikz b/v0.5.0/DuctAPE/theory_latex/figures/vx-verify.tikz new file mode 100644 index 00000000..1a176ade --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/vx-verify.tikz @@ -0,0 +1,141 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={58.5mm}, height={50.8mm}, scaled x ticks={false}, xlabel={$r/R$}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={0.10105882352941181}, xmax={0.9989411764705882}, xticklabels={{$0.2$,$0.4$,$0.6$,$0.8$}}, xtick={{0.2,0.4,0.6000000000000001,0.8}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$v_x$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={-2}, ymax={6.25}, yticklabels={{$-2$,$0$,$2$,$4$,$6$}}, ytick={{-2.0,0.0,2.0,4.0,6.0}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0255;green,0.3682;blue,0.6625}, name path={7ebf86b1-bc61-4ecc-b149-30a23a1d17a4}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.12647058823529414 0.5708269454408562 \\ + 0.17941176470588235 1.21574843580838 \\ + 0.2323529411764706 1.7633830855941879 \\ + 0.2852941176470588 2.1254497041087195 \\ + 0.3382352941176471 2.356335983139304 \\ + 0.39117647058823535 2.5048762123586252 \\ + 0.4441176470588235 2.6092464776199398 \\ + 0.4970588235294118 2.6813620214732614 \\ + 0.5499999999999999 2.7273167385190766 \\ + 0.6029411764705882 2.738217057892178 \\ + 0.6558823529411765 2.704153692445719 \\ + 0.7088235294117646 2.6340015120210345 \\ + 0.761764705882353 2.5185222030256074 \\ + 0.8147058823529412 2.3479412412126734 \\ + 0.8676470588235294 2.091802622410868 \\ + 0.9205882352941177 1.7086381282287617 \\ + 0.9735294117647059 1.158447843759666 \\ + } + ; + \addplot[color={rgb,1:red,0.7153;green,0.3273;blue,0.4173}, name path={db49d128-4969-4eab-8841-ff93d4623eb9}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.12647058823529414 -0.7949880199283939 \\ + 0.17941176470588235 2.0891294029467615 \\ + 0.2323529411764706 3.5025214732771195 \\ + 0.2852941176470588 4.254195401158803 \\ + 0.3382352941176471 4.694449332273006 \\ + 0.39117647058823535 4.931358629409607 \\ + 0.4441176470588235 5.151927459538231 \\ + 0.4970588235294118 5.298953795979806 \\ + 0.5499999999999999 5.443436925360215 \\ + 0.6029411764705882 5.536870314978922 \\ + 0.6558823529411765 5.463359915382021 \\ + 0.7088235294117646 5.402633628810501 \\ + 0.761764705882353 5.222065987946273 \\ + 0.8147058823529412 4.997453716777309 \\ + 0.8676470588235294 4.601014540878746 \\ + 0.9205882352941177 3.884125173128165 \\ + 0.9735294117647059 2.660444314147494 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={fdb0c21b-3ff1-436e-b35d-2b6cb80d2364}, draw opacity={1.0}, line width={1.0}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.15 0.2325732080422426 \\ + 0.2 1.4118990944837972 \\ + 0.25 1.9503754777629603 \\ + 0.3 2.2678342947802324 \\ + 0.35 2.4768262584206315 \\ + 0.4 2.5910589497739354 \\ + 0.45 2.709474556892624 \\ + 0.5 2.7845812279844084 \\ + 0.55 2.859537055448899 \\ + 0.6 2.915359247482585 \\ + 0.65 2.8893557568870154 \\ + 0.7 2.872442398884206 \\ + 0.75 2.8007089356428296 \\ + 0.8 2.721089812816245 \\ + 0.85 2.5618816735735788 \\ + 0.9 2.3097633184227884 \\ + 0.95 1.8304347598720558 \\ + } + ; + \addplot[color={rgb,1:red,0.5098;green,0.5098;blue,0.5098}, name path={5571f33d-bcfa-4661-887a-0b8e577269a9}, draw opacity={1.0}, line width={1.0}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.15 0.0 \\ + 0.2 0.0 \\ + 0.25 0.0 \\ + 0.3 0.0 \\ + 0.35 0.0 \\ + 0.4 0.0 \\ + 0.45 0.0 \\ + 0.5 0.0 \\ + 0.55 0.0 \\ + 0.6 0.0 \\ + 0.65 0.0 \\ + 0.7 0.0 \\ + 0.75 0.0 \\ + 0.8 0.0 \\ + 0.85 0.0 \\ + 0.9 0.0 \\ + 0.95 0.0 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={cd90e815-d79b-425c-9107-eb7e01168296}, draw opacity={1.0}, line width={1.0}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.15 0.4651464160844852 \\ + 0.2 2.8237981889675945 \\ + 0.25 3.9007509555259205 \\ + 0.3 4.535668589560465 \\ + 0.35 4.953652516841263 \\ + 0.4 5.182117899547871 \\ + 0.45 5.418949113785248 \\ + 0.5 5.569162455968817 \\ + 0.55 5.719074110897798 \\ + 0.6 5.83071849496517 \\ + 0.65 5.778711513774031 \\ + 0.7 5.744884797768412 \\ + 0.75 5.601417871285659 \\ + 0.8 5.44217962563249 \\ + 0.85 5.1237633471471575 \\ + 0.9 4.619526636845577 \\ + 0.95 3.6608695197441117 \\ + } + ; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/vz-verify.tikz b/v0.5.0/DuctAPE/theory_latex/figures/vz-verify.tikz new file mode 100644 index 00000000..670b9a60 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/vz-verify.tikz @@ -0,0 +1,141 @@ +% Recommended preamble: +% \usetikzlibrary{arrows.meta} +% \usetikzlibrary{backgrounds} +% \usepgfplotslibrary{patchplots} +% \usepgfplotslibrary{fillbetween} +% \pgfplotsset{% +% layers/standard/.define layer set={% +% background,axis background,axis grid,axis ticks,axis lines,axis tick labels,pre main,main,axis descriptions,axis foreground% +% }{ +% grid style={/pgfplots/on layer=axis grid},% +% tick style={/pgfplots/on layer=axis ticks},% +% axis line style={/pgfplots/on layer=axis lines},% +% label style={/pgfplots/on layer=axis descriptions},% +% legend style={/pgfplots/on layer=axis descriptions},% +% title style={/pgfplots/on layer=axis descriptions},% +% colorbar style={/pgfplots/on layer=axis descriptions},% +% ticklabel style={/pgfplots/on layer=axis tick labels},% +% axis background@ style={/pgfplots/on layer=axis background},% +% 3d box foreground style={/pgfplots/on layer=axis foreground},% +% }, +% } + +\begin{tikzpicture}[/tikz/background rectangle/.style={fill={rgb,1:red,1.0;green,1.0;blue,1.0}, fill opacity={1.0}, draw opacity={1.0}}, show background rectangle] +\begin{axis}[point meta max={nan}, point meta min={nan}, legend cell align={left}, legend columns={1}, title={}, title style={at={{(0.5,1)}}, anchor={south}, font={{\fontsize{14 pt}{18.2 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}, align={center}}, legend style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.0}, line width={1}, solid, fill={rgb,1:red,0.0;green,0.0;blue,0.0}, fill opacity={0.0}, text opacity={1.0}, font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, text={rgb,1:red,0.0;green,0.0;blue,0.0}, cells={anchor={center}}, at={(1.02, 1)}, anchor={north west}}, axis background/.style={fill={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={0.0}}, anchor={north west}, xshift={0.0mm}, yshift={-0.0mm}, width={58.5mm}, height={50.8mm}, scaled x ticks={false}, xlabel={$r/R$}, x tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, x tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, xlabel style={at={(ticklabel cs:0.5)}, anchor=near ticklabel, at={{(ticklabel cs:0.5)}}, anchor={near ticklabel}, font={{\fontsize{11 pt}{14.3 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, xmajorgrids={false}, xmin={0.10105882352941181}, xmax={0.9989411764705882}, xticklabels={{$0.2$,$0.4$,$0.6$,$0.8$}}, xtick={{0.2,0.4,0.6000000000000001,0.8}}, xtick align={inside}, xticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, x grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis x line*={left}, x axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, scaled y ticks={false}, ylabel={$v_x$}, y tick style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}}, y tick label style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, opacity={1.0}, rotate={0}}, ylabel style={{rotate=-90}}, ymajorgrids={false}, ymin={-2}, ymax={6.25}, yticklabels={{$-2$,$0$,$2$,$4$,$6$}}, ytick={{-2.0,0.0,2.0,4.0,6.0}}, ytick align={inside}, yticklabel style={font={{\fontsize{8 pt}{10.4 pt}\selectfont}}, color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, rotate={0.0}}, y grid style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={0.1}, line width={0.5}, solid}, axis y line*={left}, y axis line style={color={rgb,1:red,0.0;green,0.0;blue,0.0}, draw opacity={1.0}, line width={1}, solid}, colorbar={false}] + \addplot[color={rgb,1:red,0.0255;green,0.3682;blue,0.6625}, name path={18059e04-5364-4f98-a500-d00289e743a7}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.12647058823529414 0.5849354478148097 \\ + 0.17941176470588235 1.2227293348682784 \\ + 0.2323529411764706 1.760569362494374 \\ + 0.2852941176470588 2.113547981236593 \\ + 0.3382352941176471 2.3382460884510907 \\ + 0.39117647058823535 2.4842698031162556 \\ + 0.4441176470588235 2.5887792479674268 \\ + 0.4970588235294118 2.6642005960224076 \\ + 0.5499999999999999 2.715031463403135 \\ + 0.6029411764705882 2.7321337863450985 \\ + 0.6558823529411765 2.705595013573857 \\ + 0.7088235294117646 2.644145839140221 \\ + 0.761764705882353 2.538769911213229 \\ + 0.8147058823529412 2.3794776269727103 \\ + 0.8676470588235294 2.132888047132855 \\ + 0.9205882352941177 1.7545036824884892 \\ + 0.9735294117647059 1.199189863712421 \\ + } + ; + \addplot[color={rgb,1:red,0.7153;green,0.3273;blue,0.4173}, name path={3c414e6a-a650-43ea-a875-bdbb86f757c9}, draw opacity={1.0}, line width={1.0}, solid, forget plot] + table[row sep={\\}] + { + \\ + 0.12647058823529414 -0.7512642813406283 \\ + 0.17941176470588235 2.115374709993543 \\ + 0.2323529411764706 3.498274391341345 \\ + 0.2852941176470588 4.2239091431209905 \\ + 0.3382352941176471 4.646093391645861 \\ + 0.39117647058823535 4.88095962950734 \\ + 0.4441176470588235 5.096890454254596 \\ + 0.4970588235294118 5.256141169909581 \\ + 0.5499999999999999 5.409969339892638 \\ + 0.6029411764705882 5.516227444679559 \\ + 0.6558823529411765 5.4589813445038615 \\ + 0.7088235294117646 5.416442500112904 \\ + 0.761764705882353 5.257462254707935 \\ + 0.8147058823529412 5.066679993290745 \\ + 0.8676470588235294 4.701802685526641 \\ + 0.9205882352941177 4.0020363652761075 \\ + 0.9735294117647059 2.8159639214607353 \\ + } + ; + \addplot[color={rgb,1:red,0.0;green,0.3608;blue,0.6706}, name path={48654cf0-96de-4b2b-b462-a2774a4bc961}, draw opacity={1.0}, line width={1.0}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.15 0.2325732080422426 \\ + 0.2 1.4118990944837972 \\ + 0.25 1.9503754777629603 \\ + 0.3 2.2678342947802324 \\ + 0.35 2.4768262584206315 \\ + 0.4 2.5910589497739354 \\ + 0.45 2.709474556892624 \\ + 0.5 2.7845812279844084 \\ + 0.55 2.859537055448899 \\ + 0.6 2.915359247482585 \\ + 0.65 2.8893557568870154 \\ + 0.7 2.872442398884206 \\ + 0.75 2.8007089356428296 \\ + 0.8 2.721089812816245 \\ + 0.85 2.5618816735735788 \\ + 0.9 2.3097633184227884 \\ + 0.95 1.8304347598720558 \\ + } + ; + \addplot[color={rgb,1:red,0.5098;green,0.5098;blue,0.5098}, name path={4245a642-c3c9-427e-96f9-8193c8670668}, draw opacity={1.0}, line width={1.0}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.15 0.0 \\ + 0.2 0.0 \\ + 0.25 0.0 \\ + 0.3 0.0 \\ + 0.35 0.0 \\ + 0.4 0.0 \\ + 0.45 0.0 \\ + 0.5 0.0 \\ + 0.55 0.0 \\ + 0.6 0.0 \\ + 0.65 0.0 \\ + 0.7 0.0 \\ + 0.75 0.0 \\ + 0.8 0.0 \\ + 0.85 0.0 \\ + 0.9 0.0 \\ + 0.95 0.0 \\ + } + ; + \addplot[color={rgb,1:red,0.7529;green,0.3255;blue,0.4039}, name path={f01a6073-b656-413d-b3bf-db72ee388d4b}, draw opacity={1.0}, line width={1.0}, dashed, forget plot] + table[row sep={\\}] + { + \\ + 0.15 0.4651464160844852 \\ + 0.2 2.8237981889675945 \\ + 0.25 3.9007509555259205 \\ + 0.3 4.535668589560465 \\ + 0.35 4.953652516841263 \\ + 0.4 5.182117899547871 \\ + 0.45 5.418949113785248 \\ + 0.5 5.569162455968817 \\ + 0.55 5.719074110897798 \\ + 0.6 5.83071849496517 \\ + 0.65 5.778711513774031 \\ + 0.7 5.744884797768412 \\ + 0.75 5.601417871285659 \\ + 0.8 5.44217962563249 \\ + 0.85 5.1237633471471575 \\ + 0.9 4.619526636845577 \\ + 0.95 3.6608695197441117 \\ + } + ; +\end{axis} +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/wake-screw-airfoil.dat b/v0.5.0/DuctAPE/theory_latex/figures/wake-screw-airfoil.dat new file mode 100644 index 00000000..67551215 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/wake-screw-airfoil.dat @@ -0,0 +1,161 @@ +0.7071067811865476 0.7071067811865476 +0.7067641385165485 0.7069042701543128 +0.7057371318420338 0.7062966563096211 +0.7040285222195241 0.7052836990623131 +0.7016429015572073 0.7038650029630505 +0.6985866777684765 0.702040026079145 +0.694868053855966 0.6998080918656022 +0.6904970008043244 0.6971684046670991 +0.6854852241379383 0.6941200690125666 +0.6798461239868463 0.690662112880956 +0.6735947485016244 0.6867935151231116 +0.6667477404671687 0.6825132372193676 +0.659323276986881 0.677820259534717 +0.6513410021431353 0.6727136222027731 +0.6428219525870942 0.6671924707262444 +0.6337884760705429 0.6612561063256838 +0.6242641430036203 0.6549040410006116 +0.6142736512039505 0.648136057188979 +0.6038427240932045 0.6409522718238296 +0.5929980026946251 0.6333532044918182 +0.5817669318874427 0.6253398492991048 +0.5701776414789647 0.61691374994841 +0.5582588227599263 0.6080770774292625 +0.546039601310774 0.5988327096243178 +0.5335494069232342 0.5891843120407668 +0.5208178415901454 0.5791364187899533 +0.5078745465945355 0.5686945128628976 +0.4947490697939322 0.557865104686902 +0.481470734245748 0.5466558079009025 +0.4680685093524232 0.5350754112566198 +0.4545708857193262 0.5231339455403198 +0.44100575491308946 0.5108427444172846 +0.4274002952823944 0.49821449812856367 +0.413780864956979 0.4852632990174898 +0.4001729030740499 0.47200467793156925 +0.38660084019503443 0.4584556306329846 +0.37308801877085906 0.44463463345692544 +0.3596566243923076 0.4305616475796954 +0.3463276284254856 0.41625811139598556 +0.333120742483403 0.40174692065451617 +0.3200543850258741 0.3870523961606734 +0.3071456602142937 0.37220023902088195 +0.2944103489785534 0.3572174735730705 +0.28186291208367353 0.3421323783174185 +0.2695165048170137 0.3269744053282966 +0.2573830027564725 0.31177408878860347 +0.24547303792911612 0.29656294343835965 +0.23379604453121416 0.28137335386741225 +0.22236031325748326 0.26623845570465376 +0.21117305318192134 0.2511920098607996 +0.20024046004704016 0.23626827106640885 +0.1895677897542457 0.2215018520098062 +0.17915943580677746 0.20692758441966697 +0.16901900943870835 0.1925803784535527 +0.15914942116922434 0.1784950817464376 +0.1495529625504278 0.1647063394425686 +0.1402313869284023 0.1512484564806918 +0.13118598810991558 0.13815526332808767 +0.12241767591912421 0.12545998626478172 +0.11392704773775895 0.11319512320796139 +0.10571445524592563 0.10139232594062189 +0.09778006571594532 0.09008228947070644 +0.09012391735542737 0.0792946491006337 +0.08274596834469904 0.06905788563546651 +0.07564613936438497 0.059399239004478244 +0.06882434955790522 0.050344630418962956 +0.062280546017574365 0.04191859304218211 +0.05601472701861171 0.03414421100857501 +0.05002695934970798 0.02704306650178903 +0.044317390199127074 0.02063519448743185 +0.03888625414928602 0.014939044599073257 +0.03373387590840566 0.009971449596887156 +0.028860669463660234 0.005747599758929993 +0.02426713437526387 0.00228102252640763 +0.019953849944626637 -0.00041643329309962174 +0.015921467982109513 -0.0023346094566357063 +0.012170704871561126 -0.0034650470187239093 +0.008702333580775932 -0.003800992489517862 +0.005517176200811118 -0.0033374019793708815 +0.002616097514713165 -0.0020709438124792553 +0.0 0.0 +-0.0022889212346232876 0.002834074936857197 +-0.0042079677646546096 0.006387741986094846 +-0.00575473415467056 0.01065607524592863 +-0.0069258739409829165 0.015631531793820135 +-0.007717139331471636 0.021303997856945443 +-0.00812343587824934 0.027660852529776354 +-0.008138891379568027 0.03468704828123953 +-0.007756938077956341 0.04236520730054657 +-0.0069704070487189435 0.05067573255401176 +-0.0057716335195815045 0.059596932267940786 +-0.004152571730958739 0.06910515641751766 +-0.002104917839120375 0.0791749436906174 +0.00037976071700883407 0.08977917731017789 +0.0033098910195376724 0.1008892480402188 +0.006693757307618044 0.11247522266925014 +0.010539362108264554 0.12450601626059865 +0.014854287498718935 0.13694956648144663 +0.01964555808610266 0.1497730083699584 +0.02491950721554405 0.1629428479711077 +0.03068164782196714 0.17642513336458038 +0.03693654922581428 0.19018562171990605 +0.04368772104200329 0.20418994114190264 +0.050937505227525715 0.21840374621047753 +0.05868697713959599 0.23279286626949813 +0.066935856316604 0.24732344567639242 +0.07568242753177254 0.2619620753838894 +0.08492347250780935 0.2766759153844517 +0.09465421252326686 0.2914328077031776 +0.10486826199088731 0.30620137977316464 +0.1155575929477541 0.3209511381656949 +0.1267125102690962 0.33565255277362477 +0.13832163730423053 0.35027713165790647 +0.15037191153607837 0.36479748686254804 +0.16284858978619987 0.3791873915812759 +0.1757352624261299 0.3934218291189461 +0.1890138760132461 0.4074770341320642 +0.2026647637452617 0.4213305266558303 +0.2166666831210447 0.4349611394305792 +0.23099686020571644 0.4483490390294592 +0.24563103992336388 0.4614757412631836 +0.2605435418393507 0.4743241212985685 +0.2757073209439598 0.4868784188775114 +0.29109403300753856 0.49912423896446445 +0.30667410414187496 0.5110485480859095 +0.322416804270511 0.522639666557508 +0.33829032427940947 0.5338872567262097 +0.35426185668615595 0.5447823072883129 +0.3702976797281404 0.5553171136828177 +0.38636324482558115 0.5654852545047929 +0.402423267421665 0.575281563837981 +0.41844182123770096 0.5847020993713422 +0.43438243600450244 0.5937441061421481 +0.4502081987411587 0.6024059757396755 +0.46588185864823256 0.6106872008092005 +0.4813659356639887 0.61858832471611 +0.49662283269967095 0.62611088626433 +0.5116149515237558 0.633257359411336 +0.5263048122064841 0.6400310879827048 +0.5406551759662628 0.6464362154611119 +0.55462917118045 0.6524776100060975 +0.5681904222366558 0.6581607849497875 +0.5813031808092985 0.6634918151077356 +0.5939324590522315 0.6684772493406981 +0.606044164104398 0.673124019899834 +0.6176052332143388 0.6774393491818879 +0.6285837687036 0.6814306546097386 +0.6389491719112068 0.6851054524347016 +0.6486722751938077 0.6884712613277904 +0.657725471000977 0.6915355066855593 +0.6660828370044568 0.6943054266202792 +0.6737202562353499 0.6967879806324524 +0.6806155311756803 0.6989897619748247 +0.6867484907611234 0.7009169147103 +0.6921010892804526 0.7025750564411156 +0.6966574962043091 0.7039692076433124 +0.7004041760407915 0.7051037284794663 +0.7033299573971604 0.7059822638846768 +0.7054260905243375 0.7066076976273175 +0.7066862927321688 0.7069821159386925 +0.7071067811865476 0.7071067811865476 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/wake-screw.tikz b/v0.5.0/DuctAPE/theory_latex/figures/wake-screw.tikz new file mode 100644 index 00000000..12074b5a --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/wake-screw.tikz @@ -0,0 +1,72 @@ +\begin{tikzpicture}[scale=1.0] + + \coordinate (s0) at (0.0,0.05); + \coordinate (s1) at (0.0,1.25); + \coordinate (s2) at (0.0,2.5); + \coordinate (s3) at (0.0,3.75); + \coordinate (ds) at (55:0.25cm); + + %airfoil + \draw[shift={(s3)},plotsgray, pattern={Hatch[angle=80,distance=1.5pt,xshift=.1pt]}, pattern color=plotsgray] plot[smooth] file{figures/wake-screw-airfoil.dat}; + + %airfoil + \draw[shift={(s2)},plotsgray, pattern={Hatch[angle=80,distance=1.5pt,xshift=.1pt]}, pattern color=plotsgray] plot[smooth] file{figures/wake-screw-airfoil.dat}; + + %airfoil + \draw[shift={(s1)},plotsgray, pattern={Hatch[angle=80,distance=1.5pt,xshift=.1pt]}, pattern color=plotsgray] plot[smooth] file{figures/wake-screw-airfoil.dat}; + + %airfoil + \draw[plotsgray, pattern={Hatch[angle=80,distance=1.5pt,xshift=.1pt]}, pattern color=plotsgray] plot[smooth] file{figures/wake-screw-airfoil.dat}; + + % \draw[-Stealth, secondary] ($(s0)+(ds)$) [partial ellipse =75:380:0.4 and 0.4] node[pos=0.5,left,shift={(-0.05,0.0)}] {\(\Gamma\)}; + + \draw[-Stealth, primary,rotate around={-45:(55:1.75cm)}] (55:1.75cm) [partial ellipse =-70:255:0.3 and 0.1] node[pos=0.25,right,shift={(-0.05,0.0)}] {\(\Delta \Gamma\)}; + + + \draw[shift={($(s3)+(s0)+(ds)$)},primary,thick] (0,0) -- (55:1.25cm); + \draw[shift={($(s2)+(s0)+(ds)$)},primary,thick] (0,0) -- (55:2.75cm); + \draw[shift={($(s1)+(s0)+(ds)$)},primary,thick] (0,0) -- (55:3cm); + \draw[shift={($(s0)+(ds)$)},primary,thick] (0,0) -- (55:1.525cm); + \draw[shift={($(s0)+(ds)$)},primary,thick] (55:1.6cm) -- (55:3cm); + + \filldraw[shift={($(s3)+(s0)+(ds)$)},primary,thick] (0,0) circle (1pt); + \filldraw[shift={($(s2)+(s0)+(ds)$)},primary,thick] (0,0) circle (1pt); + \filldraw[shift={($(s1)+(s0)+(ds)$)},primary,thick] (0,0) circle (1pt); + \filldraw[shift={($(s0)+(ds)$)},primary,thick] (0,0) circle (1pt); + + + % Coordinate system parameters + \coordinate (ow) at ($(s0)+(ds)+(55:4cm)$); + \coordinate (wm) at ($(ow)+(0.574,0)$); + \coordinate (wt) at ($(ow)+(0,0.819)$); + \coordinate (wv) at ($(ow)+(55:1.0)$); + + \draw[densely dotted] (wm) -- (wv); + \draw[densely dotted] (wt) -- (wv); + \draw[shift={($(s0)+(ds)$)},primary,thick, dotted] (55:3cm) -- (ow); + + \draw[-Stealth] (ow) -- (wv); + \node[anchor=south west,style={font=\tiny},shift={(-0.05,-0.05)}] at (wv) {$\vect{W}$}; + \draw[-Stealth] (ow) -- (wm); + \node[anchor=west,style={font=\tiny}] at (wm) {$W_m$}; + \draw[-Stealth] (ow) -- (wt); + \node[anchor=south,style={font=\tiny}] at (wt) {$-W_\theta$}; + + % non-dim distances + \draw[shift={($(s1)+(s0)+(ds)$)},{Stealth[length=4pt,width=3pt]}-{Stealth[length=4pt,width=3pt]},shorten >=2.5pt, shorten <=2.5pt] (0,0) -- node[midway,style={font=\tiny},left,shift={(0.1, 0.0)}] {\(\frac{2\pi}{B}\)} (0,1.25cm); + + \draw[shift={($(s2)+(s0)+(ds)+(55:1)$)},{Stealth[length=4pt,width=3pt]}-{Stealth[length=4pt,width=3pt]},shorten >=1pt, shorten <=1pt] (0,0) -- node[midway,style={font=\tiny},above,shift={(0.0,-0.075)}] {\(h_B\)} (0.875,0); + + + % Coordinate system parameters + \coordinate (csysO) at (2.5,1.25); + \coordinate (et) at ($(csysO) +(0,-1)$); + \coordinate (em) at ($(csysO) +(1,0)$); + % z-axis + \draw[-Stealth,] (csysO) -- (em); + \node[anchor=south,outer sep=0] at (em) {$\hat{\vect{e}}_m$}; + % r-axis + \draw[-Stealth,] (csysO) -- (et); + \node[anchor=west,outer sep=0] at (et) {$\hat{\vect{e}}_\theta$}; + +\end{tikzpicture} diff --git a/v0.5.0/DuctAPE/theory_latex/figures/xiarrow.dat b/v0.5.0/DuctAPE/theory_latex/figures/xiarrow.dat new file mode 100644 index 00000000..9d94df98 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/xiarrow.dat @@ -0,0 +1,31 @@ +-0.5666666666666667 0.7654185950155186 +-0.52 0.7672724128664334 +-0.47333333333333333 0.76931860182393 +-0.4266666666666667 0.7715735019830634 +-0.38 0.774053641285591 +-0.3333333333333333 0.7767752904571159 +-0.2866666666666667 0.7797538676561393 +-0.24 0.7830031842212906 +-0.19333333333333333 0.7865345407801604 +-0.14666666666666667 0.7903557090163864 +-0.1 0.7944698667022724 +-0.05333333333333334 0.7988745868207867 +-0.006666666666666667 0.8035610066684217 +0.04 0.8085133087396869 +0.08666666666666667 0.8137086230659455 +0.13333333333333333 0.8191174090676154 +0.18 0.8247043033221941 +0.22666666666666666 0.8304293465322437 +0.2733333333333333 0.8362494487279587 +0.32 0.8421199296122617 +0.36666666666666664 0.8479959824705665 +0.41333333333333333 0.8538339464489921 +0.46 0.8595923195875416 +0.5066666666666667 0.8652324909768702 +0.5533333333333333 0.8707192064478345 +0.6 0.8760208051210591 +0.6466666666666666 0.8811092745459457 +0.6933333333333334 0.8859601728272665 +0.74 0.8905524607911445 +0.7866666666666666 0.8948682792129917 +0.8333333333333334 0.8988926976332238 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/xiline1.dat b/v0.5.0/DuctAPE/theory_latex/figures/xiline1.dat new file mode 100644 index 00000000..735d07a2 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/xiline1.dat @@ -0,0 +1,101 @@ +-1.5 0.0 +-1.5 0.0375 +-1.5 0.075 +-1.5 0.11249999999999999 +-1.5 0.15 +-1.5 0.1875 +-1.5 0.22499999999999998 +-1.5 0.2625 +-1.5 0.3 +-1.5 0.33749999999999997 +-1.5 0.375 +-1.5 0.4125 +-1.5 0.44999999999999996 +-1.5 0.48750000000000004 +-1.5 0.525 +-1.5 0.5625 +-1.5 0.6 +-1.5 0.6375000000000001 +-1.5 0.6749999999999999 +-1.5 0.7125 +-1.5 0.75 +-1.5 0.7875 +-1.5 0.825 +-1.5 0.8625 +-1.5 0.8999999999999999 +-1.5 0.9375 +-1.5 0.9750000000000001 +-1.5 1.0125000000000002 +-1.5 1.05 +-1.5 1.0875 +-1.5 1.125 +-1.5 1.1625 +-1.5 1.2 +-1.5 1.2375 +-1.5 1.2750000000000001 +-1.5 1.3125 +-1.5 1.3499999999999999 +-1.5 1.3875 +-1.5 1.425 +-1.5 1.4625000000000001 +-1.5 1.5 +-1.5 1.5374999999999999 +-1.5 1.575 +-1.5 1.6125 +-1.5 1.65 +-1.5 1.6875 +-1.5 1.725 +-1.5 1.7625 +-1.5 1.7999999999999998 +-1.5 1.8375 +-1.5 1.875 +-1.5 1.9125 +-1.5 1.9500000000000002 +-1.5 1.9875 +-1.5 2.0250000000000004 +-1.5 2.0625 +-1.5 2.1 +-1.5 2.1374999999999997 +-1.5 2.175 +-1.5 2.2125 +-1.5 2.25 +-1.5 2.2875 +-1.5 2.325 +-1.5 2.3625 +-1.5 2.4 +-1.5 2.4375 +-1.5 2.475 +-1.5 2.5125 +-1.5 2.5500000000000003 +-1.5 2.5875 +-1.5 2.625 +-1.5 2.6624999999999996 +-1.5 2.6999999999999997 +-1.5 2.7375 +-1.5 2.775 +-1.5 2.8125 +-1.5 2.85 +-1.5 2.8875 +-1.5 2.9250000000000003 +-1.5 2.9625000000000004 +-1.5 3.0 +-1.5 3.0375 +-1.5 3.0749999999999997 +-1.5 3.1125 +-1.5 3.15 +-1.5 3.1875 +-1.5 3.225 +-1.5 3.2625 +-1.5 3.3 +-1.5 3.3375 +-1.5 3.375 +-1.5 3.4125 +-1.5 3.45 +-1.5 3.4875000000000003 +-1.5 3.525 +-1.5 3.5625 +-1.5 3.5999999999999996 +-1.5 3.6374999999999997 +-1.5 3.675 +-1.5 3.7125 +-1.5 3.75 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/xiline2.dat b/v0.5.0/DuctAPE/theory_latex/figures/xiline2.dat new file mode 100644 index 00000000..ca78cc68 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/xiline2.dat @@ -0,0 +1,101 @@ +-0.5666666666666667 0.0 +-0.5666666666666667 0.03899619935462842 +-0.5666666666666667 0.07797527544125504 +-0.5666666666666667 0.11692018039826765 +-0.5666666666666667 0.15581490128386286 +-0.5666666666666667 0.19464511456535474 +-0.5666666666666667 0.23339851775820764 +-0.5666666666666667 0.2720649959146192 +-0.5666666666666667 0.31063663971539085 +-0.5666666666666667 0.3491076440373367 +-0.5666666666666667 0.3874741212434132 +-0.5666666666666667 0.42573386277492165 +-0.5666666666666667 0.4638860779967549 +-0.5666666666666667 0.5019311327546507 +-0.5666666666666667 0.5398703033454596 +-0.5666666666666667 0.5777055555643055 +-0.5666666666666667 0.6154393536397834 +-0.5666666666666667 0.653074500297247 +-0.5666666666666667 0.6906140067839834 +-0.5666666666666667 0.7280609902346528 +-0.5666666666666667 0.7654185950155186 +-0.5666666666666667 0.8026899344471797 +-0.5666666666666667 0.8398780493919107 +-0.5666666666666667 0.8769858804699351 +-0.5666666666666667 0.9140162510438854 +-0.5666666666666667 0.9509718585186082 +-0.5666666666666667 0.9878552719043475 +-0.5666666666666667 1.0246689339623496 +-0.5666666666666667 1.061415166581804 +-0.5666666666666667 1.0980961783221364 +-0.5666666666666667 1.134714073295874 +-0.5666666666666667 1.1712708607680906 +-0.5666666666666667 1.2077684650134437 +-0.5666666666666667 1.2442087351060651 +-0.5666666666666667 1.280593454425899 +-0.5666666666666667 1.316924349751991 +-0.5666666666666667 1.3532030998825835 +-0.5666666666666667 1.389431343777044 +-0.5666666666666667 1.4256106882584212 +-0.5666666666666667 1.4617427153501028 +-0.5666666666666667 1.4978289893474412 +-0.5666666666666667 1.5338710637468491 +-0.5666666666666667 1.5698704881718377 +-0.5666666666666667 1.6058288154486715 +-0.5666666666666667 1.6417476089944207 +-0.5666666666666667 1.6776284506876356 +-0.5666666666666667 1.7134729493970386 +-0.5666666666666667 1.7492827503467234 +-0.5666666666666667 1.785059545497515 +-0.5666666666666667 1.820805085123491 +-0.5666666666666667 1.856521190760213 +-0.5666666666666667 1.8922097696970523 +-0.5666666666666667 1.9278728311800726 +-0.5666666666666667 1.9635125044843913 +-0.5666666666666667 1.9991310590057534 +-0.5666666666666667 2.034730926510371 +-0.5666666666666667 2.0703147256700163 +-0.5666666666666667 2.105885288996018 +-0.5666666666666667 2.1414456922714815 +-0.5666666666666667 2.1769992865657968 +-0.5666666666666667 2.212549732899647 +-0.5666666666666667 2.248101039612308 +-0.5666666666666667 2.283657602466236 +-0.5666666666666667 2.319224247506605 +-0.5666666666666667 2.354806276675392 +-0.5666666666666667 2.3904095161600973 +-0.5666666666666667 2.4260403674352555 +-0.5666666666666667 2.4617058609285736 +-0.5666666666666667 2.4974137122102724 +-0.5666666666666667 2.533172380559786 +-0.5666666666666667 2.568991129702638 +-0.5666666666666667 2.6048800904237717 +-0.5666666666666667 2.640850324640341 +-0.5666666666666667 2.676913890341166 +-0.5666666666666667 2.7130839065501546 +-0.5666666666666667 2.7493746171179483 +-0.5666666666666667 2.7858014516511007 +-0.5666666666666667 2.822381081200298 +-0.5666666666666667 2.859131465382227 +-0.5666666666666667 2.896071886319608 +-0.5666666666666667 2.933222963046764 +-0.5666666666666667 2.9706066377206675 +-0.5666666666666667 3.0082461219634076 +-0.5666666666666667 3.04616578780794 +-0.5666666666666667 3.0843909829284613 +-0.5666666666666667 3.1229477441146027 +-0.5666666666666667 3.1618623765107468 +-0.5666666666666667 3.2011608595901486 +-0.5666666666666667 3.2408680354117276 +-0.5666666666666667 3.2810065326326074 +-0.5666666666666667 3.321595384565391 +-0.5666666666666667 3.3626483163567014 +-0.5666666666666667 3.404171711469334 +-0.5666666666666667 3.4461623273712374 +-0.5666666666666667 3.4886049178660437 +-0.5666666666666667 3.531470029759528 +-0.5666666666666667 3.5747123547306536 +-0.5666666666666667 3.618270094445153 +-0.5666666666666667 3.662065784064106 +-0.5666666666666667 3.7060088660826573 +-0.5666666666666667 3.75 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/xiline3.dat b/v0.5.0/DuctAPE/theory_latex/figures/xiline3.dat new file mode 100644 index 00000000..ae66f9a3 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/xiline3.dat @@ -0,0 +1,101 @@ +0.36666666666666664 0.3853978318520127 +0.36666666666666664 0.3873667665362497 +0.36666666666666664 0.3932040191476486 +0.36666666666666664 0.40271985083683687 +0.36666666666666664 0.4156327351983103 +0.36666666666666664 0.43160359742850635 +0.36666666666666664 0.45026964409638387 +0.36666666666666664 0.4712718046418233 +0.36666666666666664 0.49427342616461345 +0.36666666666666664 0.5189706817811768 +0.36666666666666664 0.5450965689573068 +0.36666666666666664 0.572420654065439 +0.36666666666666664 0.600746389850877 +0.36666666666666664 0.6299073139206723 +0.36666666666666664 0.6597629555750221 +0.36666666666666664 0.6901949157133762 +0.36666666666666664 0.7211033432585556 +0.36666666666666664 0.7524038857603942 +0.36666666666666664 0.7840251117128104 +0.36666666666666664 0.8159063631907035 +0.36666666666666664 0.8479959824705665 +0.36666666666666664 0.880249854284378 +0.36666666666666664 0.9126302096306494 +0.36666666666666664 0.9451046438716884 +0.36666666666666664 0.9776453091875592 +0.36666666666666664 1.0102282483657736 +0.36666666666666664 1.042832842980888 +0.36666666666666664 1.075441354157882 +0.36666666666666664 1.1080385383601365 +0.36666666666666664 1.1406113241006188 +0.36666666666666664 1.1731485382641689 +0.36666666666666664 1.2056406729662057 +0.36666666666666664 1.238079685662225 +0.36666666666666664 1.2704588266509211 +0.36666666666666664 1.3027724892539874 +0.36666666666666664 1.335016078866286 +0.36666666666666664 1.367185897798154 +0.36666666666666664 1.3992790434145648 +0.36666666666666664 1.4312933175434388 +0.36666666666666664 1.4632271455011157 +0.36666666666666664 1.4950795033855095 +0.36666666666666664 1.526849852531546 +0.36666666666666664 1.5585380802208346 +0.36666666666666664 1.590144445897485 +0.36666666666666664 1.6216695322719237 +0.36666666666666664 1.6531142008004307 +0.36666666666666664 1.6844795511145791 +0.36666666666666664 1.715766884045602 +0.36666666666666664 1.7469776679468885 +0.36666666666666664 1.7781135080657324 +0.36666666666666664 1.809176118754964 +0.36666666666666664 1.840167298347706 +0.36666666666666664 1.8710889065453267 +0.36666666666666664 1.9019428441906387 +0.36666666666666664 1.9327310353161757 +0.36666666666666664 1.9634554113714897 +0.36666666666666664 1.9941178975442582 +0.36666666666666664 2.0247204010977877 +0.36666666666666664 2.055264801652567 +0.36666666666666664 2.0857529433418653 +0.36666666666666664 2.116186628771262 +0.36666666666666664 2.1465676147093795 +0.36666666666666664 2.176897609432171 +0.36666666666666664 2.207178271635892 +0.36666666666666664 2.237411210824492 +0.36666666666666664 2.2675979890656603 +0.36666666666666664 2.297740123996282 +0.36666666666666664 2.327839092942651 +0.36666666666666664 2.3578963380036195 +0.36666666666666664 2.3879132719259255 +0.36666666666666664 2.417891284580365 +0.36666666666666664 2.4478317498252045 +0.36666666666666664 2.4777360325192075 +0.36666666666666664 2.5076054954207065 +0.36666666666666664 2.5374415056809707 +0.36666666666666664 2.5672454406092324 +0.36666666666666664 2.5970186923524 +0.36666666666666664 2.626762671093786 +0.36666666666666664 2.656478806330714 +0.36666666666666664 2.6861685457389535 +0.36666666666666664 2.715833351070239 +0.36666666666666664 2.745474690454768 +0.36666666666666664 2.77509402638977 +0.36666666666666664 2.80469279858331 +0.36666666666666664 2.834272400683376 +0.36666666666666664 2.8638341497484654 +0.36666666666666664 2.8933792470976125 +0.36666666666666664 2.9229087289029185 +0.36666666666666664 2.9524234045402955 +0.36666666666666664 2.9819237802741623 +0.36666666666666664 3.011409965292603 +0.36666666666666664 3.040881556395658 +0.36666666666666664 3.0703374967213715 +0.36666666666666664 3.0997759026969387 +0.36666666666666664 3.129193851797301 +0.36666666666666664 3.1585871214290577 +0.36666666666666664 3.1879498657847756 +0.36666666666666664 3.21727421158378 +0.36666666666666664 3.2465497425436927 +0.36666666666666664 3.2757628227779803 +0.36666666666666664 3.304895726739733 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/xiline4.dat b/v0.5.0/DuctAPE/theory_latex/figures/xiline4.dat new file mode 100644 index 00000000..e30c76d2 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/xiline4.dat @@ -0,0 +1,101 @@ +1.3 0.5741573723103648 +1.3 0.5753455842987012 +1.3 0.5788864522927184 +1.3 0.5847241063285048 +1.3 0.5927770877039495 +1.3 0.602942415746617 +1.3 0.615100378948772 +1.3 0.6291195371959051 +1.3 0.6448615109900953 +1.3 0.6621852508062561 +1.3 0.6809506076128496 +1.3 0.7010211403264537 +1.3 0.7222661832802959 +1.3 0.7445622527694452 +1.3 0.7677938997551143 +1.3 0.7918541227311094 +1.3 0.8166444480123192 +1.3 0.8420747706307905 +1.3 0.868063032228853 +1.3 0.8945347957466488 +1.3 0.9214227618975812 +1.3 0.9486662600625678 +1.3 0.9762107363928357 +1.3 1.004007254365345 +1.3 1.032012017428746 +1.3 1.0601859193296315 +1.3 1.088494124866684 +1.3 1.11690568188474 +1.3 1.1453931640502 +1.3 1.1739323431557493 +1.3 1.2025018892439874 +1.3 1.2310830966111994 +1.3 1.2596596336779329 +1.3 1.288217314737766 +1.3 1.3167438916814953 +1.3 1.3452288639144945 +1.3 1.3736633048223421 +1.3 1.4020397032821652 +1.3 1.4303518188569817 +1.3 1.4585945494430281 +1.3 1.4867638102631155 +1.3 1.5148564232112711 +1.3 1.5428700156550208 +1.3 1.5708029278919482 +1.3 1.5986541285372813 +1.3 1.6264231371900366 +1.3 1.6541099537876474 +1.3 1.6817149941139447 +1.3 1.7092390309737804 +1.3 1.7366831405903456 +1.3 1.7640486538191344 +1.3 1.7913371118062529 +1.3 1.818550225748981 +1.3 1.8456898404437372 +1.3 1.8727579013313027 +1.3 1.8997564247717365 +1.3 1.926687471302191 +1.3 1.9535531216500244 +1.3 1.980355455291485 +1.3 2.0070965313628815 +1.3 2.0337783717467475 +1.3 2.0604029461700772 +1.3 2.086972159165368 +1.3 2.1134878387579246 +1.3 2.1399517267547576 +1.3 2.1663654705213746 +1.3 2.192730616142912 +1.3 2.2190486028752976 +1.3 2.245320758800564 +1.3 2.2715482976079957 +1.3 2.2977323164295425 +1.3 2.3238737946638715 +1.3 2.3499735937286 +1.3 2.3760324576846794 +1.3 2.402051014680648 +1.3 2.4280297791675682 +1.3 2.4539691548379956 +1.3 2.4798694382443185 +1.3 2.505730823053371 +1.3 2.531553404895372 +1.3 2.557337186766093 +1.3 2.583082084941728 +1.3 2.6087879353663337 +1.3 2.63445450047193 +1.3 2.660081476391512 +1.3 2.685668500525327 +1.3 2.7112151594208735 +1.3 2.7367209969272865 +1.3 2.7621855225851992 +1.3 2.7876082202141648 +1.3 2.8129885566620825 +1.3 2.8383259906868052 +1.3 2.8636199819541095 +1.3 2.8888700001706042 +1.3 2.914075534454729 +1.3 2.9392361032569507 +1.3 2.9643512656513953 +1.3 2.9894206360762423 +1.3 3.0144439076791842 +1.3 3.039420896967423 +1.3 3.064351640912103 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/xiline5.dat b/v0.5.0/DuctAPE/theory_latex/figures/xiline5.dat new file mode 100644 index 00000000..a950a3c8 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/xiline5.dat @@ -0,0 +1,101 @@ +2.2333333333333334 0.5128820612833636 +2.2333333333333334 0.5141824910633289 +2.2333333333333334 0.5180543747912003 +2.2333333333333334 0.5244253350104952 +2.2333333333333334 0.5331883603357396 +2.2333333333333334 0.5442085351427655 +2.2333333333333334 0.5573307724630732 +2.2333333333333334 0.5723875927158512 +2.2333333333333334 0.5892062071275436 +2.2333333333333334 0.6076144425900031 +2.2333333333333334 0.6274453153996562 +2.2333333333333334 0.6485402733004533 +2.2333333333333334 0.6707512599730524 +2.2333333333333334 0.6939418200089966 +2.2333333333333334 0.717987474070902 +2.2333333333333334 0.7427755738468408 +2.2333333333333334 0.7682048113447602 +2.2333333333333334 0.7941845184217678 +2.2333333333333334 0.8206338566812269 +2.2333333333333334 0.8474809679020556 +2.2333333333333334 0.8746621316712828 +2.2333333333333334 0.9021209593768892 +2.2333333333333334 0.9298076411960349 +2.2333333333333334 0.9576782540996202 +2.2333333333333334 0.985694133200842 +2.2333333333333334 1.0138213051875262 +2.2333333333333334 1.0420299804611688 +2.2333333333333334 1.07029409948663 +2.2333333333333334 1.098590928393328 +2.2333333333333334 1.1269006988209165 +2.2333333333333334 1.1552062872041902 +2.2333333333333334 1.1834929290321194 +2.2333333333333334 1.2117479640214603 +2.2333333333333334 1.2399606085699428 +2.2333333333333334 1.2681217522693025 +2.2333333333333334 1.2962237756481572 +2.2333333333333334 1.3242603866706595 +2.2333333333333334 1.3522264738357526 +2.2333333333333334 1.3801179740036476 +2.2333333333333334 1.407931753322571 +2.2333333333333334 1.4356654998426563 +2.2333333333333334 1.463317626588304 +2.2333333333333334 1.4908871840186986 +2.2333333333333334 1.5183737809416948 +2.2333333333333334 1.545777513061994 +2.2333333333333334 1.573098898443139 +2.2333333333333334 1.6003388192468757 +2.2333333333333334 1.6274984691849836 +2.2333333333333334 1.6545793061797205 +2.2333333333333334 1.681583009781138 +2.2333333333333334 1.708511442934203 +2.2333333333333334 1.7353666177270475 +2.2333333333333334 1.762150664784841 +2.2333333333333334 1.788865806002598 +2.2333333333333334 1.8155143303354269 +2.2333333333333334 1.8420985723869323 +2.2333333333333334 1.8686208935561965 +2.2333333333333334 1.8950836655214078 +2.2333333333333334 1.9214892558541687 +2.2333333333333334 1.9478400155730196 +2.2333333333333334 1.9741382684580562 +2.2333333333333334 2.000386301960833 +2.2333333333333334 2.0265863595552127 +2.2333333333333334 2.052740634385527 +2.2333333333333334 2.0788512640784806 +2.2333333333333334 2.104920326594667 +2.2333333333333334 2.130949837004483 +2.2333333333333334 2.1569417450815953 +2.2333333333333334 2.1828979336149956 +2.2333333333333334 2.2088202173480407 +2.2333333333333334 2.2347103424597563 +2.2333333333333334 2.2605699865100326 +2.2333333333333334 2.2864007587761828 +2.2333333333333334 2.3122042009136186 +2.2333333333333334 2.337981787878127 +2.2333333333333334 2.3637349290513607 +2.2333333333333334 2.3894649695146875 +2.2333333333333334 2.415173191419414 +2.2333333333333334 2.4408608154036626 +2.2333333333333334 2.466529002007768 +2.2333333333333334 2.4921788530410485 +2.2333333333333334 2.5178114128532845 +2.2333333333333334 2.543427669464303 +2.2333333333333334 2.5690285555050947 +2.2333333333333334 2.594614948924292 +2.2333333333333334 2.6201876734155043 +2.2333333333333334 2.6457474985252314 +2.2333333333333334 2.671295139410022 +2.2333333333333334 2.69683125622858 +2.2333333333333334 2.7223564531848696 +2.2333333333333334 2.747871277289888 +2.2333333333333334 2.773376216994481 +2.2333333333333334 2.7988717009800896 +2.2333333333333334 2.8243580976007268 +2.2333333333333334 2.8498357157725787 +2.2333333333333334 2.875304808524572 +2.2333333333333334 2.900765580935681 +2.2333333333333334 2.9262182046794907 +2.2333333333333334 2.951662841574864 +2.2333333333333334 2.9770996779070003 +2.2333333333333334 3.0025289698181106 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/xiline6.dat b/v0.5.0/DuctAPE/theory_latex/figures/xiline6.dat new file mode 100644 index 00000000..9ec90340 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/xiline6.dat @@ -0,0 +1,101 @@ +3.1666666666666665 0.33208526298823304 +3.1666666666666665 0.3340799645151899 +3.1666666666666665 0.33997801388367377 +3.1666666666666665 0.349550168081238 +3.1666666666666665 0.36246431958071795 +3.1666666666666665 0.3783311209328653 +3.1666666666666665 0.3967461340490861 +3.1666666666666665 0.4173211098413084 +3.1666666666666665 0.43970277915430106 +3.1666666666666665 0.46358120772271594 +3.1666666666666665 0.4886910180801372 +3.1666666666666665 0.5148085127545894 +3.1666666666666665 0.5417469011709367 +3.1666666666666665 0.5693509995448685 +3.1666666666666665 0.5974921462918623 +3.1666666666666665 0.626063671510086 +3.1666666666666665 0.654977026397701 +3.1666666666666665 0.6841585581604773 +3.1666666666666665 0.7135468623053212 +3.1666666666666665 0.7430906269286826 +3.1666666666666665 0.7727468844799916 +3.1666666666666665 0.802479595285885 +3.1666666666666665 0.8322584984817858 +3.1666666666666665 0.8620581772952043 +3.1666666666666665 0.8918572957367776 +3.1666666666666665 0.921637972324728 +3.1666666666666665 0.9513852635066318 +3.1666666666666665 0.9810867351142216 +3.1666666666666665 1.01073210470493 +3.1666666666666665 1.0403129412179357 +3.1666666666666665 1.069822411188883 +3.1666666666666665 1.0992550629828806 +3.1666666666666665 1.1286066422474206 +3.1666666666666665 1.1578739331574917 +3.1666666666666665 1.1870546211049395 +3.1666666666666665 1.2161471733362412 +3.1666666666666665 1.2451507347166542 +3.1666666666666665 1.2740650363326678 +3.1666666666666665 1.3028903150688271 +3.1666666666666665 1.3316272426326905 +3.1666666666666665 1.360276862771205 +3.1666666666666665 1.3888405356374396 +3.1666666666666665 1.417319888439584 +3.1666666666666665 1.4457167716432398 +3.1666666666666665 1.4740332201102289 +3.1666666666666665 1.5022714186478814 +3.1666666666666665 1.5304336715164322 +3.1666666666666665 1.5585223755021314 +3.1666666666666665 1.586539996212757 +3.1666666666666665 1.614489047292542 +3.1666666666666665 1.6423720722868675 +3.1666666666666665 1.6701916289148133 +3.1666666666666665 1.6979502755308857 +3.1666666666666665 1.725650559576907 +3.1666666666666665 1.7532950078418095 +3.1666666666666665 1.7808861183615445 +3.1666666666666665 1.8084263538039518 +3.1666666666666665 1.8359181361945638 +3.1666666666666665 1.8633638428493307 +3.1666666666666665 1.890765803389258 +3.1666666666666665 1.9181262977202742 +3.1666666666666665 1.9454475548693175 +3.1666666666666665 1.9727317525748602 +3.1666666666666665 1.999981017536916 +3.1666666666666665 2.027197426238082 +3.1666666666666665 2.0543830062534174 +3.1666666666666665 2.0815397379729847 +3.1666666666666665 2.108669556666681 +3.1666666666666665 2.1357743548266375 +3.1666666666666665 2.162855984727888 +3.1666666666666665 2.1899162611532943 +3.1666666666666665 2.216956964233758 +3.1666666666666665 2.24397984235965 +3.1666666666666665 2.2709866151239977 +3.1666666666666665 2.2979789762623892 +3.1666666666666665 2.3249585965586834 +3.1666666666666665 2.351927126689463 +3.1666666666666665 2.3788861999836888 +3.1666666666666665 2.4058374350772285 +3.1666666666666665 2.432782438444753 +3.1666666666666665 2.4597228067939807 +3.1666666666666665 2.4866601293093415 +3.1666666666666665 2.5135959897338425 +3.1666666666666665 2.5405319682792813 +3.1666666666666665 2.5674696433559667 +3.1666666666666665 2.594410593113849 +3.1666666666666665 2.621356396787457 +3.1666666666666665 2.6483086358374437 +3.1666666666666665 2.675268894881888 +3.1666666666666665 2.7022387624110147 +3.1666666666666665 2.729219831279747 +3.1666666666666665 2.7562136989737547 +3.1666666666666665 2.7832219676464867 +3.1666666666666665 2.8102462439273106 +3.1666666666666665 2.8372881385043693 +3.1666666666666665 2.86434926549016 +3.1666666666666665 2.8914312415831134 +3.1666666666666665 2.918535685044368 +3.1666666666666665 2.9456642145152148 +3.1666666666666665 2.972818447706894 +3.1666666666666665 3.0 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/xiline7.dat b/v0.5.0/DuctAPE/theory_latex/figures/xiline7.dat new file mode 100644 index 00000000..b1791028 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/xiline7.dat @@ -0,0 +1,101 @@ +4.1 0.25 +4.1 0.25240928615504693 +4.1 0.25949153552214804 +4.1 0.2708610416628389 +4.1 0.2859828673010426 +4.1 0.304269248160017 +4.1 0.32515381246371183 +4.1 0.34813360309359415 +4.1 0.37278430787493594 +4.1 0.3987589306370823 +4.1 0.4257786235007774 +4.1 0.4536211695080163 +4.1 0.4821099042283086 +4.1 0.5111041832914187 +4.1 0.5404916306824892 +4.1 0.5701820223069138 +4.1 0.6001025343693778 +4.1 0.630194077227229 +4.1 0.6604084707435863 +4.1 0.6907062634640755 +4.1 0.7210550415189371 +4.1 0.7514281095688153 +4.1 0.7818034548624316 +4.1 0.8121629275018771 +4.1 0.8424915866204313 +4.1 0.8727771746018449 +4.1 0.9030096907346294 +4.1 0.9331810426033365 +4.1 0.9632847586803074 +4.1 0.9933157494501027 +4.1 1.0232701073101746 +4.1 1.053144937692089 +4.1 1.082938215519042 +4.1 1.1126486623909952 +4.1 1.1422756408669132 +4.1 1.1718190629672336 +4.1 1.2012793106030457 +4.1 1.2306571660919796 +4.1 1.2599537512749566 +4.1 1.2891704740256296 +4.1 1.318308981162968 +4.1 1.3473711169502471 +4.1 1.376358886500859 +4.1 1.4052744235206502 +4.1 1.4341199619039533 +4.1 1.462897810770771 +4.1 1.4916103325893566 +4.1 1.5202599240745247 +4.1 1.5488489995896721 +4.1 1.5773799768114176 +4.1 1.6058552644413855 +4.1 1.634277251771022 +4.1 1.662648299923327 +4.1 1.6909707346106804 +4.1 1.7192468402610859 +4.1 1.747478855376573 +4.1 1.7756689689975582 +4.1 1.8038193181558906 +4.1 1.8319319862073835 +4.1 1.8600090019419766 +4.1 1.8880523393764628 +4.1 1.91606391814104 +4.1 1.9440456043769092 +4.1 1.9719992120678078 +4.1 1.9999265047337915 +4.1 2.0278291974207967 +4.1 2.0557089589245923 +4.1 2.08356741419263 +4.1 2.1114061468521084 +4.1 2.139226701817241 +4.1 2.167030587933291 +4.1 2.194819280619381 +4.1 2.2225942244764636 +4.1 2.2503568358310324 +4.1 2.2781085051892775 +4.1 2.3058505995803507 +4.1 2.3335844647712065 +4.1 2.3613114273391504 +4.1 2.3890327965916898 +4.1 2.4167498663265627 +4.1 2.444463916427911 +4.1 2.4721762142974106 +4.1 2.4998880161218118 +4.1 2.52760056798075 +4.1 2.555315106800813 +4.1 2.5830328611637654 +4.1 2.6107550519784666 +4.1 2.6384828930273816 +4.1 2.66621759139971 +4.1 2.6939603478240177 +4.1 2.7217123569138253 +4.1 2.749474807339991 +4.1 2.7772488819437924 +4.1 2.805035757804498 +4.1 2.8328366062748556 +4.1 2.860652592997356 +4.1 2.8884848779133696 +4.1 2.9163346152763023 +4.1 2.9442029536788104 +4.1 2.972091036102857 +4.1 3.0 diff --git a/v0.5.0/DuctAPE/theory_latex/figures/xiline8.dat b/v0.5.0/DuctAPE/theory_latex/figures/xiline8.dat new file mode 100644 index 00000000..d0e4f9c8 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/figures/xiline8.dat @@ -0,0 +1,101 @@ +5.033333333333333 0.25 +5.033333333333333 0.25234812231416487 +5.033333333333333 0.25925293636464 +5.033333333333333 0.2703457521709543 +5.033333333333333 0.2851151747885094 +5.033333333333333 0.30299853065621957 +5.033333333333333 0.32345237933259857 +5.033333333333333 0.3459925446102903 +5.033333333333333 0.3702088071262549 +5.033333333333333 0.39576395976916157 +5.033333333333333 0.4223854387601298 +5.033333333333333 0.4498546739570094 +5.033333333333333 0.477996772260396 +5.033333333333333 0.5066715844606778 +5.033333333333333 0.5357663952442648 +5.033333333333333 0.5651901190595032 +5.033333333333333 0.5948687631620243 +5.033333333333333 0.6247419059435352 +5.033333333333333 0.6547599677354619 +5.033333333333333 0.6848820917975292 +5.033333333333333 0.7150744922113541 +5.033333333333333 0.7453091584605167 +5.033333333333333 0.7755628328594866 +5.033333333333333 0.8058161973850647 +5.033333333333333 0.8360532219564603 +5.033333333333333 0.8662606378764101 +5.033333333333333 0.8964275088971856 +5.033333333333333 0.9265448789360657 +5.033333333333333 0.9566054803902898 +5.033333333333333 0.9866034907095266 +5.033333333333333 1.0165343276855174 +5.033333333333333 1.0463944760441626 +5.033333333333333 1.0761813395452215 +5.033333333333333 1.1058931140349983 +5.033333333333333 1.135528677851302 +5.033333333333333 1.165087496717081 +5.033333333333333 1.1945695408312933 +5.033333333333333 1.2239752123116745 +5.033333333333333 1.253305281493404 +5.033333333333333 1.2825608308623853 +5.033333333333333 1.311743205618804 +5.033333333333333 1.340853970038686 +5.033333333333333 1.3698948689381751 +5.033333333333333 1.398867793654851 +5.033333333333333 1.4277747520484299 +5.033333333333333 1.4566178420942548 +5.033333333333333 1.4853992287006266 +5.033333333333333 1.5141211234280316 +5.033333333333333 1.5427857668269023 +5.033333333333333 1.5713954131423826 +5.033333333333333 1.5999523171610628 +5.033333333333333 1.6284587229968364 +5.033333333333333 1.6569168546317898 +5.033333333333333 1.6853289080440332 +5.033333333333333 1.7136970447681548 +5.033333333333333 1.742023386745975 +5.033333333333333 1.7703100123358328 +5.033333333333333 1.7985589533580046 +5.033333333333333 1.8267721930623237 +5.033333333333333 1.8549516649117437 +5.033333333333333 1.8830992520826684 +5.033333333333333 1.911216787589452 +5.033333333333333 1.9393060549466485 +5.033333333333333 1.967368789288458 +5.033333333333333 1.9954066788704015 +5.033333333333333 2.023421366883655 +5.033333333333333 2.0514144535176744 +5.033333333333333 2.0793874982118132 +5.033333333333333 2.1073420220415824 +5.033333333333333 2.1352795101900215 +5.033333333333333 2.163201414459394 +5.033333333333333 2.191109155783037 +5.033333333333333 2.2190041267017437 +5.033333333333333 2.2468876937734548 +5.033333333333333 2.2747611998893693 +5.033333333333333 2.3026259664737467 +5.033333333333333 2.3304832955487234 +5.033333333333333 2.3583344716493486 +5.033333333333333 2.3861807635777557 +5.033333333333333 2.414023425988918 +5.033333333333333 2.441863700803751 +5.033333333333333 2.4697028184484338 +5.033333333333333 2.497541998921676 +5.033333333333333 2.525382452694296 +5.033333333333333 2.553225381447811 +5.033333333333333 2.5810719786608494 +5.033333333333333 2.608923430053997 +5.033333333333333 2.636780913905224 +5.033333333333333 2.664645601249279 +5.033333333333333 2.692518655975418 +5.033333333333333 2.7204012348384836 +5.033333333333333 2.7482944873987893 +5.033333333333333 2.7761995559063695 +5.033333333333333 2.8041175751450513 +5.033333333333333 2.8320496722514203 +5.033333333333333 2.859996966523151 +5.033333333333333 2.8879605692303545 +5.033333333333333 2.915941583442573 +5.033333333333333 2.9439411038828434 +5.033333333333333 2.971960216818889 +5.033333333333333 3.0 diff --git a/v0.5.0/DuctAPE/theory_latex/poissoneqninversion.tex b/v0.5.0/DuctAPE/theory_latex/poissoneqninversion.tex new file mode 100644 index 00000000..b18dd3d9 --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/poissoneqninversion.tex @@ -0,0 +1,462 @@ +\section{Transformation of Poisson Equations} +\label{app:poissontransform} + +In order to interchange the dependent and independent variables of + +\begin{subequations} + \begin{align} + \xi(z,r) &\equiv \xi_{zz} + \xi_{rr} = 0\\ + \label{eqn:nzr} + \eta(z,r) &\equiv \eta_{zz} + \eta_{rr} = \frac{\psi_r}{r}, + \end{align} +\end{subequations} + +\noindent where \(\eta = \psi =\) constant along streamlines (thus \(\eta\) coordinates correspond to the physical location of streamlines) and \(\xi\) is constant along radial lines and can be arbitrarily chosen, +we apply the derivative transformations: + +\begin{subequations} + \begin{align} + \label{eqn:fztransform} + f_z &= \frac{r_\eta f_\xi - r_\xi f_\eta}{J} \\ + \label{eqn:fytransform} + f_r &= \frac{- z_\eta f_\xi + z_\xi f_\eta}{J}, + \end{align} +\end{subequations} + +\where \(J = z_\xi r_\eta - z_\eta r_\xi\). + +Let's look first at the \(\xi_{zz}\) term. +% +We will begin by applying \cref{eqn:fztransform}: + +\begin{align} + \xi_z &= \frac{r_\eta \xi_\xi - r_\xi \xi_\eta}{J} \\ + \xi_{zz} &= \frac{r_\eta \left(\frac{r_\eta \xi_\xi - r_\xi \xi_\eta}{J}\right)_\xi - r_\xi \left(\frac{r_\eta \xi_\xi - r_\xi \xi_\eta}{J}\right)_\eta}{J}. +\end{align} + +\noindent Recognizing that \(\xi_\xi = 1\), and \(\xi_\eta = 0\) (by orthogonality), we can simplify. + +\[ +\xi_{zz} = \frac{r_\eta \left(\frac{r_\eta }{J}\right)_\xi - r_\xi \left(\frac{r_\eta}{J}\right)_\eta}{J}. +\] + +\noindent Applying the quotient rule: + +\[ +\begin{aligned} + \xi_{zz} &= \frac{r_\eta \left(\frac{r_{\eta\xi} J - r_\eta J_\xi}{J^2}\right) - r_\xi \left(\frac{r_{\eta\eta}J - r_\eta J_\eta}{J^2}\right)}{J} \\ + &= \frac{r_\eta \left(r_{\eta\xi} J - r_\eta J_\xi\right) - r_\xi \left(r_{\eta\eta}J - r_\eta J_\eta\right)}{J^3}. +\end{aligned} +\] + +\noindent Expanding: + +\begin{equation} + \label{eqn:xiz.zpause1} + \xi_{zz} = \frac{r_\eta r_{\eta\xi} J - r_\eta^2 J_\xi - r_\xi r_{\eta\eta}J + r_\xi r_\eta J_\eta}{J^3}. +\end{equation} + +\noindent We'll leave \(\xi_{zz}\) here for now and follow the same procedure for \(\xi_{rr}\)---beginning by applying \cref{eqn:fytransform}: + +\begin{align} + \xi_r &= \frac{-z_\eta \xi_\xi + z_\xi \xi_\eta}{J} \\ + \xi_{rr} &= \frac{-z_\eta \left(\frac{-z_\eta \xi_\xi + z_\xi \xi_\eta}{J}\right)_\xi + z_\xi \left(\frac{-z_\eta \xi_\xi + z_\xi \xi_\eta}{J}\right)_\eta}{J}. +\end{align} + +\noindent Again recognizing that \(\xi_\xi = 1\), and \(\xi_\eta = 0\) (by orthogonality), we can simplify: + +\begin{equation} + \xi_{rr} = \frac{-z_\eta \left(\frac{-z_\eta }{J}\right)_\xi + z_\xi \left(\frac{-z_\eta}{J}\right)_\eta}{J}. +\end{equation} + +\noindent Applying the quotient rule: + + +\begin{equation} + \xi_{rr} = \frac{-z_\eta \left(\frac{-z_{\eta\xi} J + z_\eta J_\xi}{J^2}\right) + z_\xi \left(\frac{-z_{\eta\eta}J + z_\eta J_\eta}{J^2}\right)}{J}. +\end{equation} + + +\noindent Expanding: + +\begin{equation} + \label{eqn:xirrpause1} + \xi_{rr} = \frac{z_\eta z_{\eta\xi} J - z_\eta^2 J_\xi - z_\xi z_{\eta\eta}J + z_\xi z_\eta J_\eta}{J^3}. +\end{equation} + + +Now that we have both \(\xi_{zz}\) and \(\xi_{rr}\), let us perform similar transformations for \(\eta_{zz}\) and \(\eta_{rr}\). +% +Let us begin with \cref{eqn:fztransform}: +\begin{align} + \eta_z &= \frac{r_\eta \eta_\xi - r_\xi \eta_\eta}{J} \\ + \eta_{zz} &= \frac{r_\eta \left(\frac{r_\eta \eta_\xi - r_\xi \eta_\eta}{J}\right)_\xi - r_\xi \left(\frac{r_\eta \eta_\xi - r_\xi \eta_\eta}{J}\right)_\eta}{J}. +\end{align} + +\noindent Here, \(\eta_\xi = 0\) (by orthogonality), and \(\eta_\eta = 1\). +% +So we simplify as follows +\begin{equation} + \eta_{zz} = \frac{r_\eta \left(\frac{- r_\xi}{J}\right)_\xi - r_\xi \left(\frac{- r_\xi}{J}\right)_\eta}{J}. +\end{equation} + +\noindent Applying the quotient rule: + +\begin{equation} + \eta_{zz} = \frac{r_\eta \left(\frac{- r_{\xi\xi}J + r_\xi J_\xi}{J^2}\right) - r_\xi \left(\frac{- r_{\xi\eta} J + r_\xi J_\eta}{J^2}\right)}{J}. +\end{equation} + +\noindent Expanding: + +\begin{equation} + \eta_{zz} = \frac{-r_\eta r_{\xi\xi}J + r_\eta r_\xi J_\xi + r_\xi r_{\xi\eta} J - r_\xi^2 J_\eta}{J^3}. +\end{equation} + +\noindent As we saw above, the expression for \(\eta_{rr}\) will be nearly identical to that for \(\eta_{zz}\) + +\begin{align} + \eta_r &= \frac{-z_\eta \eta_\xi + z_\xi \eta_\eta}{J} \\ + \eta_{rr} &= \frac{-z_\eta \left(\frac{-z_\eta \eta_\xi + z_\xi \eta_\eta}{J}\right)_\xi + z_\xi \left(\frac{-z_\eta \eta_\xi + z_\xi \eta_\eta}{J}\right)_\eta}{J}. +\end{align} + +\noindent Again recognizing that \(\eta_\xi = 0\), and \(\eta_\eta = 1\), we simplify: + +\begin{equation} + \eta_{rr} = \frac{-z_\eta \left(\frac{z_\xi }{J}\right)_\xi + z_\xi \left(\frac{z_\xi}{J}\right)_\eta}{J}. +\end{equation} + +\noindent Applying the quotient rule: + +\begin{equation} + \eta_{rr} = \frac{-z_\eta \left(\frac{z_{\xi\xi} J - z_\xi J_\xi}{J^2}\right) + z_\xi \left(\frac{z_{\xi\eta}J - z_\xi J_\eta}{J^2}\right)}{J}. +\end{equation} + +\noindent Expanding: + +\begin{equation} + \label{eqn:etarrpause1} + \eta_{rr} = \frac{-z_\eta z_{\xi\xi} J + z_\eta z_\xi J_\xi + z_\xi z_{\xi\eta}J - z_\xi^2 J_\eta}{J^3}. +\end{equation} + + +Before putting everything together, we also need to transform the right hand side of \cref{eqn:nzr} using \cref{eqn:fytransform} as we have done, noting in this case that we only have a single, rather than a double, derivative. + +\begin{equation} + \frac{1}{r} \psi_r = \frac{-z_\eta \psi_\xi + z_\xi \psi_\eta}{r J}. +\end{equation} + +\noindent Remembering that we have chosen \(\psi = \eta\), and making similar simplifications with the derivitives we have thus far (\(\eta_\eta = 1,~\eta_\xi=0\)), we are left with + +\begin{equation} + \frac{1}{r} \psi_r = \frac{z_\xi}{r J}. +\end{equation} + +Let's now bring it all together in the Poisson equations to see where we are, multiplying everything by \(J^3\) to remove all the fractions. +% +For convenience and clarity, we'll also note that \((\cdot)_{\xi\eta} = (\cdot)_{\eta\xi}\) and put every instance in the \(\xi\eta\) order. + +\begin{subequations} + \begin{align} + \label{eqn:poissontrans2a} + \left[r_\eta r_{\xi\eta}J - r_\eta^2 J_\xi - r_\xi r_{\eta\eta}J + r_\xi r_\eta J_\eta\right] + \left[z_\eta z_{\xi\eta}J - z_\eta^2 J_\xi - z_\xi z_{\eta\eta}J + z_\xi z_\eta J_\eta \right] &= 0 \\ + \label{eqn:poissontrans2b} + \left[-r_\eta r_{\xi\xi}J + r_\eta r_\xi J_\xi + r_\xi r_{\xi\eta}J - r_\xi^2 J_\eta\right] + \left[-z_\eta z_{\xi\xi}J + z_\eta z_\xi J_\xi + z_\xi z_{\xi\eta} J - z_\xi^2 J_\eta\right] &= \frac{z_\xi J^2}{r}. + \end{align} +\end{subequations} + +In order to get the final \(z(\xi,\eta)\) and \(r(\xi,\eta)\) relations, we'll first need to do some more expanding, specifically of the jacobian (and its derivatives, applying the product rule): + +\begin{subequations} + \begin{align} + J &= z_\xi r_\eta - z_\eta r_\xi \\ + J_\xi &= z_{\xi\xi} r_\eta + z_\xi r_{\xi\eta} - z_{\xi\eta} r_\xi - z_\eta r_{\xi\xi} \\ + J_\eta &= z_{\xi\eta} r_\eta + z_\xi r_{\eta\eta} - z_{\eta\eta} r_\xi - z_\eta r_{\xi\eta}. + \end{align} +\end{subequations} + + +Now we just need to expand everything out. +% +Let's start with the transformation of the \(\xi_{zz}\) term (first term on the left hand side of \cref{eqn:poissontrans2a}). +% +As we expand things out, we'll also rearrange terms to facilitate easier comparison. +\begin{equation} +\begin{aligned} + \xi_{zz} =& r_\eta r_{\xi\eta}(z_\xi r_\eta - z_\eta r_\xi) \\ + &- r_\eta^2 (z_{\xi\xi} r_\eta + z_\xi r_{\xi\eta} - z_{\xi\eta} r_\xi - z_\eta r_{\xi\xi}) \\ + &- r_\xi r_{\eta\eta}(z_\xi r_\eta - z_\eta r_\xi) \\ + &+ r_\xi r_\eta (z_{\xi\eta} r_\eta + z_\xi r_{\eta\eta} - z_{\eta\eta} r_\xi - z_\eta r_{\xi\eta}) \\ + % + =& \cancel{z_\xi r_{\xi\eta} r_\eta^2} - z_\eta r_\xi r_{\xi\eta} r_\eta \\ + &- z_{\xi\xi} r_\eta^3 - \cancel{z_\xi r_{\xi\eta} r_\eta^2} + z_{\xi\eta} r_\xi r_\eta^2 + z_\eta r_{\xi\xi} r_\eta^2 \\ + &- \cancel{z_\xi r_\xi r_{\eta\eta} r_\eta} + z_\eta r_\xi^2 r_{\eta\eta} \\ + &+ z_{\xi\eta} r_\xi r_\eta^2 + \cancel{z_\xi r_\xi r_{\eta\eta} r_\eta} - z_{\eta\eta} r_\xi^2 r_\eta - z_\eta r_\xi r_{\xi\eta} r_\eta \\ + % + =&- z_{\xi\xi} r_\eta^3 - z_{\eta\eta} r_\xi^2 r_\eta \\ + & - 2 z_\eta r_\xi r_{\xi\eta} r_\eta + 2z_{\xi\eta} r_\xi r_\eta^2 \\ + & + z_\eta r_{\xi\xi} r_\eta^2 + z_\eta r_\xi^2 r_{\eta\eta}. \\ +\end{aligned} +\end{equation} +% +Now \(\xi_{rr}\) (second term in \cref{eqn:poissontrans2a}): +% +\begin{equation} +\begin{aligned} + \xi_{rr} =& z_\eta z_{\xi\eta}(z_\xi r_\eta - z_\eta r_\xi) \\ + % + &- z_\eta^2 (z_{\xi\xi} r_\eta + z_\xi r_{\xi\eta} - z_{\xi\eta} r_\xi - z_\eta r_{\xi\xi}) \\ + % + &- z_\xi z_{\eta\eta}(z_\xi r_\eta - z_\eta r_\xi) \\ + % + &+ z_\xi z_\eta ( z_{\xi\eta} r_\eta + z_\xi r_{\eta\eta} - z_{\eta\eta} r_\xi - z_\eta r_{\xi\eta})\\ + % + =& z_\xi z_{\xi\eta} z_\eta r_\eta - \cancel{z_{\xi\eta} z_\eta^2 r_\xi} \\ + % + &- z_{\xi\xi} z_\eta^2 r_\eta - z_\xi z_\eta^2 r_{\xi\eta} + \cancel{z_{\xi\eta} z_\eta^2 r_\xi} + z_\eta^3 r_{\xi\xi} \\ + % + &- z_\xi^2 z_{\eta\eta} r_\eta + \cancel{z_\xi z_{\eta\eta} z_\eta r_\xi} \\ + % + &+ z_\xi z_{\xi\eta} z_\eta r_\eta + z_\xi^2 z_\eta r_{\eta\eta} - \cancel{z_\xi z_{\eta\eta} z_\eta r_\xi} - z_\xi z_\eta^2 r_{\xi\eta}\\ + % + =& - z_{\xi\xi} z_\eta^2 r_\eta - z_\xi^2 z_{\eta\eta} r_\eta \\ + % + &+ 2z_\xi z_{\xi\eta} z_\eta r_\eta - 2z_\xi z_\eta^2 r_{\xi\eta} \\ + % + &+ z_\eta^3 r_{\xi\xi} + z_\xi^2 z_\eta r_{\eta\eta}. +\end{aligned} +\end{equation} +% +Next \(\eta_{zz}\) (first term in \cref{eqn:poissontrans2b}): +% +\begin{equation} +\begin{aligned} + \eta_{zz} =& -r_\eta r_{\xi\xi}(z_\xi r_\eta - z_\eta r_\xi) \\ + &+ r_\eta r_\xi (z_{\xi\xi} r_\eta + z_\xi r_{\xi\eta} - z_{\xi\eta} r_\xi - z_\eta r_{\xi\xi}) \\ + &+ r_\xi r_{\xi\eta}(z_\xi r_\eta - z_\eta r_\xi) \\ + &- r_\xi^2 (z_{\xi\eta} r_\eta + z_\xi r_{\eta\eta} - z_{\eta\eta} r_\xi - z_\eta r_{\xi\eta})\\ + % + =& - z_\xi r_{\xi\xi} r_\eta^2 + \cancel{z_\eta r_{\xi\xi} r_\xi r_\eta} \\ + &+ z_{\xi\xi} r_\xi r_\eta^2 + z_\xi r_\xi r_{\xi\eta} r_\eta - z_{\xi\eta} r_\xi^2 r_\eta - \cancel{z_\eta r_{\xi\xi} r_\xi r_\eta} \\ + &+ z_\xi r_\xi r_{\xi\eta} r_\eta - \cancel{z_\eta r_\xi^2 r_{\xi\eta}} \\ + &- z_{\xi\eta} r_\xi^2 r_\eta - z_\xi r_\xi^2 r_{\eta\eta} + z_{\eta\eta} r_\xi^3 + \cancel{z_\eta r_\xi^2 r_{\xi\eta}}\\ + % + =& z_{\xi\xi} r_\xi r_\eta^2 + z_{\eta\eta} r_\xi^3\\ + & + 2z_\xi r_\xi r_{\xi\eta} r_\eta - 2z_{\xi\eta} r_\xi^2 r_\eta \\ + & - z_\xi r_{\xi\xi} r_\eta^2 - z_\xi r_\xi^2 r_{\eta\eta}. +\end{aligned} +\end{equation} +% +Then \(\eta_{rr}\) (second term in \cref{eqn:poissontrans2b}): +% +\begin{equation} +\begin{aligned} + \eta_{rr} =& -z_\eta z_{\xi\xi}(z_\xi r_\eta - z_\eta r_\xi) \\ + &+ z_\eta z_\xi (z_{\xi\xi} r_\eta + z_\xi r_{\xi\eta} - z_{\xi\eta} r_\xi - z_\eta r_{\xi\xi} ) \\ + &+ z_\xi z_{\xi\eta}(z_\xi r_\eta - z_\eta r_\xi) \\ + &- z_\xi^2 (z_{\xi\eta} r_\eta + z_\xi r_{\eta\eta} - z_{\eta\eta} r_\xi - z_\eta r_{\xi\eta})\\ + % + =&- \cancel{z_{\xi\xi} z_\xi z_\eta r_\eta} + z_{\xi\xi} z_\eta^2 r_\xi \\ + &+ \cancel{z_{\xi\xi} z_\xi z_\eta r_\eta} + z_\xi^2 z_\eta r_{\xi\eta} - z_\xi z_{\xi\eta} z_\eta r_\xi - z_\xi z_\eta^2 r_{\xi\xi} \\ + &+ \cancel{z_\xi^2 z_{\xi\eta} r_\eta} - z_\xi z_{\xi\eta} z_\eta r_\xi \\ + &- \cancel{z_\xi^2 z_{\xi\eta} r_\eta} - z_\xi^3 r_{\eta\eta} + z_\xi^2 z_{\eta\eta} r_\xi + z_\xi^2 z_\eta r_{\xi\eta}\\ + % + =& z_{\xi\xi} z_\eta^2 r_\xi + z_\xi^2 z_{\eta\eta} r_\xi \\ + &+ 2z_\xi^2 z_\eta r_{\xi\eta} - 2z_\xi z_{\xi\eta} z_\eta r_\xi \\ + &- z_\xi z_\eta^2 r_{\xi\xi} - z_\xi^3 r_{\eta\eta}. +\end{aligned} +\end{equation} + +Finally, we'll partially expand the right hand side term of \cref{eqn:poissontrans2b}: + +\begin{equation} +\frac{z_\xi J^2}{r} = \frac{J}{r}z_\xi(z_\xi r_\eta - z_\eta r_\xi). +\end{equation} + +Let's first look at the case where both parametric expressions are Laplace equations, that is to say, if the right hand side of \cref{eqn:nzr} was zero. +We can put our expanded expressions back together, gathering like terms. + +\begin{subequations} +\begin{align} + &\begin{split} + \xi_{zz} + \xi_{rr} =&- z_{\xi\xi} ( z_\eta^2 + r_\eta^2) r_\eta\\ + &- z_{\eta\eta} (z_\xi^2 + r_\xi^2) r_\eta \\ + % + &+ 2z_{\xi\eta} (z_\xi z_\eta + r_\xi r_\eta) r_\eta \\ + &- 2r_{\xi\eta} (z_\xi z_\eta + r_\xi r_\eta) z_\eta \\ + % + &+ r_{\xi\xi} ( z_\eta^2 + r_\eta^2) z_\eta \\ + &+ r_{\eta\eta} ( z_\xi^2 + r_\xi^2) z_\eta \\ + \end{split} \\[1em] + &\begin{split} + \eta_{zz} + \eta_{rr} =& z_{\xi\xi} (z_\eta^2 + r_\eta^2) r_\xi \\ + &+ z_{\eta\eta} (z_\xi^2 + r_\xi^2 ) r_\xi \\ + % + &- 2z_{\xi\eta} (z_\xi z_\eta + r_\xi r_\eta ) r_\xi \\ + &+ 2 r_{\xi\eta} ( z_\xi z_\eta + r_\xi r_\eta) z_\xi \\ + % + &- r_{\xi\xi} ( z_\eta^2 + r_\eta^2 ) z_\xi \\ + &- r_{\eta\eta} (z_\xi^2 + r_\xi^2 ) z_\xi. + \end{split} +\end{align} +\end{subequations} + + +\noindent What we actually need from the above equations is \(z(\xi,\eta)\) and \(r(\xi,\eta)\), so we'll equate the two expressions and put the \(z\) terms together, and the \(r\) terms together. + +\begin{subequations} +\begin{align} + &\begin{split} + 0=& z_{\xi\xi} ( z_\eta^2 + r_\eta^2) (r_\xi - r_\eta)\\ + &- 2z_{\xi\eta} (z_\xi z_\eta + r_\xi r_\eta) (r_\xi - r_\eta) \\ + &+ z_{\eta\eta} (z_\xi^2 + r_\xi^2) (r_\xi - r_\eta) + \end{split} \\[1em] + &\begin{split} + 0=& r_{\xi\xi} ( z_\eta^2 + r_\eta^2 ) (z_\xi - z_\eta) \\ + &- 2r_{\xi\eta} (z_\xi z_\eta + r_\xi r_\eta) (z_\xi - z_\eta) \\ + &+ r_{\eta\eta} (z_\xi^2 + r_\xi^2 ) (z_\xi - z_\eta). + \end{split} +\end{align} +\end{subequations} + +Since both of the expressions equal zero, we can divide out the common terms and we are left with + +\begin{subequations} + \begin{align} + z(\xi,\eta) &\equiv \alpha z_{\xi\xi} - 2\beta z_{\xi\eta} + \gamma z_{\eta\eta} = 0 \\ + r(\xi,\eta) &\equiv \alpha r_{\xi\xi} - 2\beta r_{\xi\eta} + \gamma r_{\eta\eta} = 0. + \end{align} +\end{subequations} + +\noindent where + +\begin{subequations} + \begin{align} + \alpha &= z_\eta^2 + r_\eta^2 \\ + \beta &= z_\xi z_\eta + r_\xi r_\eta \\ + \gamma &= z_\xi^2 + r_\xi^2. + \end{align} +\end{subequations} + +Now in the case where the right hand side of \cref{eqn:nzr} is not zero, we need to apply some more considerations rather than simply equating things and dividing out terms. +% +Putting things together with the full Poisson equations we have + +\begin{subequations} +\begin{align} + &\begin{split} + \xi_{zz} + \xi_{rr} =&- z_{\xi\xi} ( z_\eta^2 + r_\eta^2) r_\eta\\ + &- z_{\eta\eta} (z_\xi^2 + r_\xi^2) r_\eta \\ + % + &+ 2z_{\xi\eta} (z_\xi z_\eta + r_\xi r_\eta) r_\eta \\ + &- 2r_{\xi\eta} (z_\xi z_\eta + r_\xi r_\eta) z_\eta \\ + % + &+ r_{\xi\xi} ( z_\eta^2 + r_\eta^2) z_\eta \\ + &+ r_{\eta\eta} ( z_\xi^2 + r_\xi^2) z_\eta \\ + \end{split} \\[1em] + \label{eqn:etaetapoisson} + &\begin{split} + \eta_{zz} + \eta_{rr} - \frac{\eta_r}{r}=& z_{\xi\xi} (z_\eta^2 + r_\eta^2) r_\xi \\ + &+ z_{\eta\eta} (z_\xi^2 + r_\xi^2 ) r_\xi \\ + % + &- 2z_{\xi\eta} (z_\xi z_\eta + r_\xi r_\eta ) r_\xi \\ + &+ 2 r_{\xi\eta} ( z_\xi z_\eta + r_\xi r_\eta) z_\xi \\ + % + &- r_{\xi\xi} ( z_\eta^2 + r_\eta^2 ) z_\xi \\ + &- r_{\eta\eta} (z_\xi^2 + r_\xi^2 ) z_\xi \\ + % + &- \frac{J}{r}z_\xi( r_\eta ) z_\xi\\ + &+ \frac{J}{r}z_\xi(z_\eta) r_\xi. + \end{split} +\end{align} +\end{subequations} +% +To help combine things, we'll add and subtract the same expression from \cref{eqn:xixipoisson}. +% +\begin{equation} + \label{eqn:xixipoisson} + \begin{aligned} + \xi_{zz} + \xi_{rr} =&- z_{\xi\xi} ( z_\eta^2 + r_\eta^2) r_\eta\\ + &- z_{\eta\eta} (z_\xi^2 + r_\xi^2) r_\eta \\ + % + &+ 2z_{\xi\eta} (z_\xi z_\eta + r_\xi r_\eta) r_\eta \\ + &- 2r_{\xi\eta} (z_\xi z_\eta + r_\xi r_\eta) z_\eta \\ + % + &+ r_{\xi\xi} ( z_\eta^2 + r_\eta^2) z_\eta \\ + &+ r_{\eta\eta} ( z_\xi^2 + r_\xi^2) z_\eta \\ + & + \frac{J}{r}z_\xi r_\eta z_\eta \\ + & - \frac{J}{r}z_\xi r_\eta z_\eta. + \end{aligned} +\end{equation} +% +Now adding \cref{eqn:xixipoisson} to \cref{eqn:etaetapoisson} gives +% +\begin{equation} + \begin{aligned} + 0= &z_{\xi\xi} ( z_\eta^2 + r_\eta^2) (r_\xi - r_\eta)\\ + &- 2z_{\xi\eta} (z_\xi z_\eta + r_\xi r_\eta) (r_\xi - r_\eta) \\ + &+ z_{\eta\eta} (z_\xi^2 + r_\xi^2) (r_\xi - r_\eta) \\ + &- \frac{J}{r}z_\xi (z_\eta) (r_\xi - r_\eta) \\ + &-r_{\xi\xi} ( z_\eta^2 + r_\eta^2 ) (z_\xi - z_\eta) \\ + &+ 2r_{\xi\eta} (z_\xi z_\eta + r_\xi r_\eta) (z_\xi - z_\eta) \\ + &- r_{\eta\eta} (z_\xi^2 + r_\xi^2 ) (z_\xi - z_\eta) \\ + &+ \frac{J}{r}z_\xi (r_\eta) (z_\xi - z_\eta). \\ + \end{aligned} +\end{equation} +% +Separating out expressions for \(z\) and \(r\) gives +% +\begin{subequations} +\begin{align} + &\begin{split} + 0= &z_{\xi\xi} ( z_\eta^2 + r_\eta^2) (r_\xi - r_\eta)\\ + &- 2z_{\xi\eta} (z_\xi z_\eta + r_\xi r_\eta) (r_\xi - r_\eta) \\ + &+ z_{\eta\eta} (z_\xi^2 + r_\xi^2) (r_\xi - r_\eta) \\ + &- \frac{J}{r}z_\xi (z_\eta) (r_\xi - r_\eta) \\ + \end{split} \\[1em] + &\begin{split} + 0=&-r_{\xi\xi} ( z_\eta^2 + r_\eta^2 ) (z_\xi - z_\eta) \\ + &+ 2r_{\xi\eta} (z_\xi z_\eta + r_\xi r_\eta) (z_\xi - z_\eta) \\ + &- r_{\eta\eta} (z_\xi^2 + r_\xi^2 ) (z_\xi - z_\eta) \\ + &+ \frac{J}{r}z_\xi (r_\eta) (z_\xi - z_\eta). \\ + \end{split} +\end{align} +\end{subequations} + +Dividing out common terms leaves + +\begin{subequations} +\begin{align} + &\begin{split} + 0= &z_{\xi\xi} ( z_\eta^2 + r_\eta^2) \\ + &- 2z_{\xi\eta} (z_\xi z_\eta + r_\xi r_\eta) \\ + &+ z_{\eta\eta} (z_\xi^2 + r_\xi^2) \\ + &- \frac{J}{r}z_\xi (z_\eta) \\ + \end{split} \\[1em] + &\begin{split} + 0= &-r_{\xi\xi} ( z_\eta^2 + r_\eta^2 ) \\ + &+ 2r_{\xi\eta} (z_\xi z_\eta + r_\xi r_\eta) \\ + &- r_{\eta\eta} (z_\xi^2 + r_\xi^2 ) \\ + &+ \frac{J}{r}z_\xi (r_\eta). \\ + \end{split} +\end{align} +\end{subequations} + +\noindent After final rearranging, we are left with + +\begin{subequations} + \begin{eqboxed}{\eqbox}{align} + z(\xi,\eta) &\equiv \alpha z_{\xi\xi} - 2\beta z_{\xi\eta} + \gamma z_{\eta\eta} = \frac{J}{r}z_\xi z_\eta \\ + r(\xi,\eta) &\equiv \alpha r_{\xi\xi} - 2\beta r_{\xi\eta} + \gamma r_{\eta\eta} = \frac{J}{r}z_\xi r_\eta, + \end{eqboxed} +\end{subequations} + +\noindent where again (repeated for convenience), + +\begin{subequations} + \begin{align} + \alpha &= z_\eta^2 + r_\eta^2 \\ + \beta &= z_\xi z_\eta + r_\xi r_\eta \\ + \gamma &= z_\xi^2 + r_\xi^2 \\ + J &= z_\xi r_\eta - z_\eta r_\xi. + \end{align} +\end{subequations} diff --git a/v0.5.0/DuctAPE/theory_latex/ref.bib b/v0.5.0/DuctAPE/theory_latex/ref.bib new file mode 100644 index 00000000..061843ce --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/ref.bib @@ -0,0 +1,836 @@ +@article{thompson_1974, + title = {Automatic numerical generation of body-fitted curvilinear coordinate system for field containing any number of arbitrary two-dimensional bodies}, + volume = {15}, + issn = {00219991}, + url = {https://linkinghub.elsevier.com/retrieve/pii/0021999174901144}, + doi = {10.1016/0021-9991(74)90114-4}, + language = {en}, + number = {3}, + urldate = {2023-01-09}, + journal = {Journal of Computational Physics}, + author = {Thompson, Joe F and Thames, Frank C and Mastin, C.Wayne}, + month = jul, + year = {1974}, + pages = {299--319}, +} + +@book{Lewis_1991, + address = {Cambridge ; New York}, + series = {Cambridge engine technology series}, + title = {Vortex Element Methods for Fluid Dynamic Analysis of Engineering Systems}, + isbn = {9780521360104}, + number = {1}, + publisher = {Cambridge University Press}, + author = {Lewis, R. I.}, + year = {1991}, + keywords = {Turbomachines, Fluid dynamics Mathematical models, Fluid dynamics, Mathematical models, Vortex-motion, Mathematical models}, +} + +@book{Lamb_1916, + address = {Cambridge}, + author = {Lamb, Horace}, + chapter = {7}, + date-added = {2023-09-21 11:15:41 -0600}, + date-modified = {2023-09-21 11:17:53 -0600}, + edition = {4th ed}, + publisher = {University Press Cambridge}, + title = {Hydrodynamics}, + year = {1916} +} + +@article{Martensen_1971, + author = {Martensen, Erich}, + date-added = {2023-10-03 14:34:51 -0600}, + date-modified = {2023-10-03 14:43:12 -0600}, + journal = {Archive for Rational Mechanics and Analysis}, + pages = {235-270}, + title = {Die Berechnung der Druckverteilung an dicken Gitterprofilen mit Hilfe von Fredholmschen Integralgleichungen zweiter Art}, + volume = {3}, + year = {1959}, +} + +@article{Prager_1928, + author = {Prager, Willy}, + date-added = {2023-10-03 14:20:03 -0600}, + date-modified = {2023-10-03 14:25:55 -0600}, + journal = {Physikalische Zeitschrift}, + pages = {865-869}, + title = {Die Druckverteilung an K{\"o}rpern in ebener Potentialsr{\"o}mung}, + volume = {29}, + year = {1928}, +} + +@book{Courant_1962, + author = {Courant, R. and Hilbert, D.}, + date-added = {2023-10-03 14:25:25 -0600}, + date-modified = {2023-10-03 14:26:12 -0600}, + publisher = {Interscience Publishers}, + title = {Methods of Mathematical Physics}, + volume = {2}, + year = {1962}, +} + +@book{Kellogg_1929, + annote = {page 287 talks about the + or - of the integral in the fredholm equation.}, + author = {Kellogg, Oliver Dimon}, + date-added = {2023-10-05 09:20:08 -0600}, + date-modified = {2023-10-05 09:22:27 -0600}, + edition = {1}, + publisher = {Springer Berlin, Heidelberg}, + title = {Foundations of Potential Theory}, + year = {1929}, +} + +@article{Julia_2017, + title={Julia: A fresh approach to numerical computing}, + author={Bezanson, Jeff and Edelman, Alan and Karpinski, Stefan and Shah, Viral B}, + journal={SIAM {R}eview}, + volume={59}, + number={1}, + pages={65--98}, + year={2017}, + publisher={SIAM}, + doi={10.1137/141000671}, + url={https://epubs.siam.org/doi/10.1137/141000671} +} + +@book{Katz_2001, + address = {Cambridge, UK}, + author = {Katz, Joseph and Plotkin, Allen}, + date-added = {2023-10-12 09:40:27 -0600}, + date-modified = {2023-10-12 09:40:46 -0600}, + edition = {2nd ed}, + isbn = {0521662192; 9780521662192; 0521665523; 9780521665520}, + la = {eng}, + publisher = {Cambridge University Press Cambridge, UK}, + title = {Low speed aerodynamics}, + year = {2001} +} + +@inproceedings{McDonald_2022, + author = {Robert A. McDonald and James R. Gloudemans}, + booktitle = {AIAA SCITECH Forum 2022}, + date-added = {2023-10-13 14:33:27 -0600}, + date-modified = {2023-10-13 14:35:20 -0600}, + month = {January}, + organization = {AIAA}, + title = {Open Vehicle Sketch Pad: An Open Source Parametric Geometry and Analysis Tool for Conceptual Aircraft Design}, + year = {2022} +} + +@article{Fredholm_1903, +author = {Ivar Fredholm}, +date-added = {2023-10-14 14:19:12 -0600}, +date-modified = {2023-10-14 14:19:19 -0600}, +doi = {10.1007/BF02421317}, +journal = {Acta Mathematica}, +number = {none}, +pages = {365 -- 390}, +publisher = {Institut Mittag-Leffler}, +title = {{Sur une classe d'{\'e}quations fonctionnelles}}, +rl = {https://doi.org/10.1007/BF02421317}, +volume = {27}, +year = {1903}, +dsk-url-1 = {https://doi.org/10.1007/BF02421317}} + +@techreport{Ryall_1967, + author = {D. L. Ryall and I. F. Collins}, + institution = {Ministry of Technology Aeronautical Research Council}, + month = {March}, + number = {3492}, + title = {Design and Test of a Series of Annular Aerofoils}, + type = {Reports and Memoranda}, + year = {1967}, +} + +@inproceedings{Xfoil, + abstract = {Calculation procedures for viscous/inviscid analysis and mixed-inverse design of subcritical airfoils are presented. An inviscid linear-vorticity panel method with a Karman-Tsien compressiblity correction is developed for direct and mixed-inverse modes. Source distributions superimposed on the airfoil and wake permit modeling of viscous layer influence on the potential flow. A two-equation lagged dissipation integral method is used to represent the viscous layers. Both laminar and turbulent layers are treated, with an e9-type amplification formulation determinining the transition point. The boundary layer and transition equations are solved simultaneously with the inviscid flowfield by a global Newton method. The procedure is especially suitable for rapid analysis of low Reynolds number airfoil flows with transitional separation bubbles. Surface pressure distributions and entire polars are calculated and compared with experimental data. Design procedure examples are also presented.}, + address = {Berlin, Heidelberg}, + author = {Drela, Mark}, + booktitle = {Low Reynolds Number Aerodynamics}, + date-added = {2023-10-23 09:11:02 -0600}, + date-modified = {2023-10-23 09:11:13 -0600}, + editor = {Mueller, Thomas J.}, + isbn = {978-3-642-84010-4}, + pages = {1--12}, + publisher = {Springer Berlin Heidelberg}, + title = {XFOIL: An Analysis and Design System for Low Reynolds Number Airfoils}, + year = {1989}, +} + +@article{mfoil, + author = {Fidkowski, Krzysztof J.}, + date-added = {2023-10-23 09:13:37 -0600}, + date-modified = {2023-10-23 09:13:47 -0600}, + doi = {10.2514/1.J061341}, + issn = {0001-1452, 1533-385X}, + journal = {AIAA Journal}, + language = {en}, + month = may, + number = {5}, + pages = {2961--2971}, + title = {A {Coupled} {Inviscid}--{Viscous} {Airfoil} {Analysis} {Solver}, {Revisited}}, + url = {https://arc.aiaa.org/doi/10.2514/1.J061341}, + urldate = {2023-10-23}, + volume = {60}, + year = {2022}, +} + +@article{Glauert_1928, + abstract = { At ordinary aeroplane speeds the effect of the compressibility of the air is very small, and there is complete justification for the usual assumption that the air may be regarded effectively as an incompressible medium. This assumption, however, ceases to be valid in the case of high tip-speed airscrews and is not really satisfactory even when the tip speed is no greater than 800 f. p. s. It is important, therefore, to examine, both theoretically and experimentally, the effect of compressibility at high speed on the characteristics of an aerofoil. Experimental investigations are in progress at the Royal Aircraft Establishment in which the aerofoil characteristics are derived by analysing the observed behaviour of high-speed model airscrews, but owing to the complexity both of the experiments and of the analysis it is impossible that the results should have the same accuracy as those obtained from direct tests of an aerofoil at low speed. An attempt has now been made to estimate theoretically the effect of compressibility on the lift of an aerofoil in two-dimensional motion and to indicate the nature of the variation which may be anticipated in the curve of lift coefficient against angle of incidence. It is unfortunately impossible at the present state of knowledge to make any similar calculation for the drag of the aerofoil, but on general grounds we may anticipate that the drag coefficient will rise at an increasing rate until the velocity of sound is reached, and that above this speed the drag coefficient will decrease again, remaining, however, higher than at low speeds. }, + author = {Glauert, H. and Taylor, Geoffrey Ingram}, + date-added = {2023-10-24 12:34:49 -0600}, + date-modified = {2023-10-24 12:35:01 -0600}, + doi = {10.1098/rspa.1928.0039}, + eprint = {https://royalsocietypublishing.org/doi/pdf/10.1098/rspa.1928.0039}, + journal = {Proceedings of the Royal Society of London. Series A, Containing Papers of a Mathematical and Physical Character}, + number = {779}, + pages = {113-119}, + title = {The effect of compressibility on the lift of an aerofoil}, + url = {https://royalsocietypublishing.org/doi/abs/10.1098/rspa.1928.0039}, + volume = {118}, + year = {1928}, +} + +@inproceedings{Wallis_1968, + address = {Sydney, New South Wales, Australia}, + author = {R. Allan Wallis}, + booktitle = {Proceedings of the third Australasian Conference on Hydraulics and Fluid Mechanics}, + date-added = {2023-11-01 11:08:23 -0600}, + date-modified = {2023-11-01 11:14:58 -0600}, + month = {November}, + organization = {The Institution of Engineers, Australia}, + pages = {23-29}, + title = {A Rationalised Approach to Blade Element Design, Axial Flow Fans}, + year = {1968}, +} + +@article{Wallis_1977, + author = {R. Allan Wallis}, + date-added = {2023-11-01 11:03:15 -0600}, + date-modified = {2023-11-01 11:04:32 -0600}, + journal = {Mechanical Engineering Transactions}, + number = {1}, + pages = {12-20}, + title = {The F-Series Aerofoils, for Fan Blade Sections}, + volume = {2}, + year = {1977}, +} + +@book{Wallis_1983, + author = {Wallis, R.A.}, + date-added = {2023-10-31 11:28:01 -0600}, + date-modified = {2023-10-31 11:28:09 -0600}, + isbn = {9780471870869}, + lccn = {83003540}, + publisher = {Wiley}, + title = {Axial Flow Fans and Ducts}, + url = {https://books.google.com/books?id=r6MYAQAAIAAJ}, + year = {1983}, + bdsk-url-1 = {https://books.google.com/books?id=r6MYAQAAIAAJ} +} + +@article{Bontempo_2013, + abstract = {Abstract + + The paper presents an extension to ducted rotors of the nonlinear actuator disk theory of Conway ( + J. Fluid Mech. + , vol. 365, 1998, pp. 235--267) and it is exact for incompressible, axisymmetric and inviscid flows. The solution for the velocities and the Stokes stream function results from the superposition of ring vortices properly arranged along the duct surface and the wake region. Using a general analytical procedure the flow fields are given as a combination of one-dimensional integrals of expressions involving complete as well as incomplete elliptic integrals. The solution being exact, the proper shape of the slipstream whether converging or diverging is naturally accounted for, even for heavy loads. A semi-analytical method has been developed that enables the flow induced by an actuator disk housed in a contoured duct to be solved duly accounting for the nonlinear mutual interaction between the duct and the rotor. Non-uniform load distributions, rotor wake rotation and ducts of general shapes and thickness distribution can be dealt with. Thanks to its reduced numerical cost, the method is well suited for the design and/or analysis of ducted rotors for marine, wind and aeronautical applications.}, + author = {Bontempo, R. and Manna, M.}, + date-added = {2024-01-08 13:15:25 -0700}, + date-modified = {2024-01-08 13:15:34 -0700}, + doi = {10.1017/jfm.2013.257}, + issn = {0022-1120, 1469-7645}, + journal = {Journal of Fluid Mechanics}, + language = {en}, + month = aug, + pages = {163--195}, + title = {Solution of the flow over a non-uniform heavily loaded ducted actuator disk}, + url = {https://www.cambridge.org/core/product/identifier/S0022112013002577/type/journal_article}, + urldate = {2024-01-08}, + volume = {728}, + year = {2013}, + bdsk-url-1 = {https://www.cambridge.org/core/product/identifier/S0022112013002577/type/journal_article}, + bdsk-url-2 = {https://doi.org/10.1017/jfm.2013.257}, + bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhZYWxpYXNEYXRhXxBIZWRmLWRldi9Cb250ZW1wb18yMDEzU29sdXRpb24gb2YgdGhlIGZsb3cgb3ZlciBhIG5vbi11bmlmb3JtIGhlYXZpbHkucGRmTxECVAAAAAACVAACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAAAAAAAEJEAAH/////H0JvbnRlbXBvXzIwMTNTb2x1dCNGRkZGRkZGRi5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAQADAAAKIGN1AAAAAAAAAAAAAAAAAAdlZGYtZGV2AAACAHsvOlVzZXJzOmptZWhyOkxpYnJhcnk6Q2xvdWRTdG9yYWdlOkJveC1Cb3g6UmVhZGluZzplZGYtZGV2OkJvbnRlbXBvXzIwMTNTb2x1dGlvbiBvZiB0aGUgZmxvdyBvdmVyIGEgbm9uLXVuaWZvcm0gaGVhdmlseS5wZGYAAA4AggBAAEIAbwBuAHQAZQBtAHAAbwBfADIAMAAxADMAUwBvAGwAdQB0AGkAbwBuACAAbwBmACAAdABoAGUAIABmAGwAbwB3ACAAbwB2AGUAcgAgAGEAIABuAG8AbgAtAHUAbgBpAGYAbwByAG0AIABoAGUAYQB2AGkAbAB5AC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgB5VXNlcnMvam1laHIvTGlicmFyeS9DbG91ZFN0b3JhZ2UvQm94LUJveC9SZWFkaW5nL2VkZi1kZXYvQm9udGVtcG9fMjAxM1NvbHV0aW9uIG9mIHRoZSBmbG93IG92ZXIgYSBub24tdW5pZm9ybSBoZWF2aWx5LnBkZgAAEwABLwAAFQACAAz//wAAAAgADQAaACQAbwAAAAAAAAIBAAAAAAAAAAUAAAAAAAAAAAAAAAAAAALH}} + +@article{Bontempo_2014, + author = {Bontempo, Rodolfo and Cardone, Massimo and Manna, Marcello and Vorraro, Giovanni}, + date-added = {2024-01-08 13:25:33 -0700}, + date-modified = {2024-01-08 13:26:26 -0700}, + doi = {10.1016/j.egypro.2014.01.116}, + issn = {18766102}, + journal = {Energy Procedia}, + language = {en}, + pages = {1107--1115}, + title = {Ducted Propeller Flow Analysis by Means of a Generalized Actuator Disk Model}, + url = {https://linkinghub.elsevier.com/retrieve/pii/S1876610214001179}, + urldate = {2024-01-08}, + volume = {45}, + year = {2014}, + bdsk-url-1 = {https://linkinghub.elsevier.com/retrieve/pii/S1876610214001179}, + bdsk-url-2 = {https://doi.org/10.1016/j.egypro.2014.01.116}, + bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhZYWxpYXNEYXRhXxBAZWRmLWRldi9Cb250ZW1wb18yMDE0RHVjdGVkIFByb3BlbGxlciBGbG93IEFuYWx5c2lzIGJ5IE1lYW5zLnBkZk8RAjQAAAAAAjQAAgAADE1hY2ludG9zaCBIRAAAAAAAAAAAAAAAAAAAAAAAAABCRAAB/////x9Cb250ZW1wb18yMDE0RHVjdGUjRkZGRkZGRkYucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAEAAwAACiBjdQAAAAAAAAAAAAAAAAAHZWRmLWRldgAAAgBzLzpVc2VyczpqbWVocjpMaWJyYXJ5OkNsb3VkU3RvcmFnZTpCb3gtQm94OlJlYWRpbmc6ZWRmLWRldjpCb250ZW1wb18yMDE0RHVjdGVkIFByb3BlbGxlciBGbG93IEFuYWx5c2lzIGJ5IE1lYW5zLnBkZgAADgByADgAQgBvAG4AdABlAG0AcABvAF8AMgAwADEANABEAHUAYwB0AGUAZAAgAFAAcgBvAHAAZQBsAGwAZQByACAARgBsAG8AdwAgAEEAbgBhAGwAeQBzAGkAcwAgAGIAeQAgAE0AZQBhAG4AcwAuAHAAZABmAA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIAcVVzZXJzL2ptZWhyL0xpYnJhcnkvQ2xvdWRTdG9yYWdlL0JveC1Cb3gvUmVhZGluZy9lZGYtZGV2L0JvbnRlbXBvXzIwMTREdWN0ZWQgUHJvcGVsbGVyIEZsb3cgQW5hbHlzaXMgYnkgTWVhbnMucGRmAAATAAEvAAAVAAIADP//AAAACAANABoAJABnAAAAAAAAAgEAAAAAAAAABQAAAAAAAAAAAAAAAAAAAp8=}} + +@article{Conway_1998, + author = {Conway, John T.}, + date-added = {2024-01-08 13:17:57 -0700}, + date-modified = {2024-01-08 13:18:04 -0700}, + doi = {10.1017/S0022112098001372}, + issn = {00221120}, + journal = {Journal of Fluid Mechanics}, + month = jun, + pages = {235--267}, + title = {Exact actuator disk solutions for non-uniform heavy loading and slipstream contraction}, + url = {http://www.journals.cambridge.org/abstract_S0022112098001372}, + urldate = {2024-01-08}, + volume = {365}, + year = {1998}, + bdsk-url-1 = {http://www.journals.cambridge.org/abstract_S0022112098001372}, + bdsk-url-2 = {https://doi.org/10.1017/S0022112098001372}, + bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhZYWxpYXNEYXRhXxBEZWRmLWRldi9Db253YXlfMTk5OEV4YWN0IGFjdHVhdG9yIGRpc2sgc29sdXRpb25zIGZvciBub24tdW5pZm9ybS5wZGZPEQJEAAAAAAJEAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAAAAAAAAQkQAAf////8fQ29ud2F5XzE5OThFeGFjdCBhI0ZGRkZGRkZGLnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAABAAMAAAogY3UAAAAAAAAAAAAAAAAAB2VkZi1kZXYAAAIAdy86VXNlcnM6am1laHI6TGlicmFyeTpDbG91ZFN0b3JhZ2U6Qm94LUJveDpSZWFkaW5nOmVkZi1kZXY6Q29ud2F5XzE5OThFeGFjdCBhY3R1YXRvciBkaXNrIHNvbHV0aW9ucyBmb3Igbm9uLXVuaWZvcm0ucGRmAAAOAHoAPABDAG8AbgB3AGEAeQBfADEAOQA5ADgARQB4AGEAYwB0ACAAYQBjAHQAdQBhAHQAbwByACAAZABpAHMAawAgAHMAbwBsAHUAdABpAG8AbgBzACAAZgBvAHIAIABuAG8AbgAtAHUAbgBpAGYAbwByAG0ALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAHVVc2Vycy9qbWVoci9MaWJyYXJ5L0Nsb3VkU3RvcmFnZS9Cb3gtQm94L1JlYWRpbmcvZWRmLWRldi9Db253YXlfMTk5OEV4YWN0IGFjdHVhdG9yIGRpc2sgc29sdXRpb25zIGZvciBub24tdW5pZm9ybS5wZGYAABMAAS8AABUAAgAM//8AAAAIAA0AGgAkAGsAAAAAAAACAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAACsw==}} + +@book{Courant_1962, + author = {Courant, R. and Hilbert, D.}, + date-added = {2023-10-03 14:25:25 -0600}, + date-modified = {2023-10-03 14:26:12 -0600}, + publisher = {Interscience Publishers}, + title = {Methods of Mathematical Physics}, + volume = {2}, + year = {1962}, + bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhZYWxpYXNEYXRhXxAzZWRmLWRldi9Db3VyYW50X01ldGhvZHMgb2YgTWF0aGVtYXRpY2FsIFBoeXNpY3MucGRmTxEB/gAAAAAB/gACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAAAAAAAEJEAAH/////H0NvdXJhbnRfTWV0aG9kcyBvZiNGRkZGRkZGRi5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAQADAAAKIGN1AAAAAAAAAAAAAAAAAAdlZGYtZGV2AAACAGYvOlVzZXJzOmptZWhyOkxpYnJhcnk6Q2xvdWRTdG9yYWdlOkJveC1Cb3g6UmVhZGluZzplZGYtZGV2OkNvdXJhbnRfTWV0aG9kcyBvZiBNYXRoZW1hdGljYWwgUGh5c2ljcy5wZGYADgBYACsAQwBvAHUAcgBhAG4AdABfAE0AZQB0AGgAbwBkAHMAIABvAGYAIABNAGEAdABoAGUAbQBhAHQAaQBjAGEAbAAgAFAAaAB5AHMAaQBjAHMALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAGRVc2Vycy9qbWVoci9MaWJyYXJ5L0Nsb3VkU3RvcmFnZS9Cb3gtQm94L1JlYWRpbmcvZWRmLWRldi9Db3VyYW50X01ldGhvZHMgb2YgTWF0aGVtYXRpY2FsIFBoeXNpY3MucGRmABMAAS8AABUAAgAM//8AAAAIAA0AGgAkAFoAAAAAAAACAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAACXA==}} + +@article{Fredholm_1903, + author = {Ivar Fredholm}, + date-added = {2023-10-14 14:19:12 -0600}, + date-modified = {2023-10-14 14:22:50 -0600}, + doi = {10.1007/BF02421317}, + journal = {Acta Mathematica}, + number = {none}, + pages = {365 -- 390}, + publisher = {Institut Mittag-Leffler}, + title = {Sur une classe d'{\'e}quations fonctionnelles}, + url = {https://doi.org/10.1007/BF02421317}, + volume = {27}, + year = {1903}, + bdsk-url-1 = {https://doi.org/10.1007/BF02421317}} + +@article{Glauert_1928, + abstract = { At ordinary aeroplane speeds the effect of the compressibility of the air is very small, and there is complete justification for the usual assumption that the air may be regarded effectively as an incompressible medium. This assumption, however, ceases to be valid in the case of high tip-speed airscrews and is not really satisfactory even when the tip speed is no greater than 800 f. p. s. It is important, therefore, to examine, both theoretically and experimentally, the effect of compressibility at high speed on the characteristics of an aerofoil. Experimental investigations are in progress at the Royal Aircraft Establishment in which the aerofoil characteristics are derived by analysing the observed behaviour of high-speed model airscrews, but owing to the complexity both of the experiments and of the analysis it is impossible that the results should have the same accuracy as those obtained from direct tests of an aerofoil at low speed. An attempt has now been made to estimate theoretically the effect of compressibility on the lift of an aerofoil in two-dimensional motion and to indicate the nature of the variation which may be anticipated in the curve of lift coefficient against angle of incidence. It is unfortunately impossible at the present state of knowledge to make any similar calculation for the drag of the aerofoil, but on general grounds we may anticipate that the drag coefficient will rise at an increasing rate until the velocity of sound is reached, and that above this speed the drag coefficient will decrease again, remaining, however, higher than at low speeds. }, + author = {Glauert, H. and Taylor, Geoffrey Ingram}, + date-added = {2023-10-24 12:34:49 -0600}, + date-modified = {2023-10-24 12:35:01 -0600}, + doi = {10.1098/rspa.1928.0039}, + eprint = {https://royalsocietypublishing.org/doi/pdf/10.1098/rspa.1928.0039}, + journal = {Proceedings of the Royal Society of London. Series A, Containing Papers of a Mathematical and Physical Character}, + number = {779}, + pages = {113-119}, + title = {The effect of compressibility on the lift of an aerofoil}, + url = {https://royalsocietypublishing.org/doi/abs/10.1098/rspa.1928.0039}, + volume = {118}, + year = {1928}, + bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhZYWxpYXNEYXRhXxBQZWRmLWRldi9HbGF1ZXJ0XzE5MjhUaGUgZWZmZWN0IG9mIGNvbXByZXNzaWJpbGl0eSBvbiB0aGUgbGlmdCBvZiBhbiBhZXJvZm9pbC5wZGZPEQJ0AAAAAAJ0AAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAAAAAAAAQkQAAf////8fR2xhdWVydF8xOTI4VGhlIGVmI0ZGRkZGRkZGLnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAABAAMAAAogY3UAAAAAAAAAAAAAAAAAB2VkZi1kZXYAAAIAgy86VXNlcnM6am1laHI6TGlicmFyeTpDbG91ZFN0b3JhZ2U6Qm94LUJveDpSZWFkaW5nOmVkZi1kZXY6R2xhdWVydF8xOTI4VGhlIGVmZmVjdCBvZiBjb21wcmVzc2liaWxpdHkgb24gdGhlIGxpZnQgb2YgYW4gYWVyb2ZvaWwucGRmAAAOAJIASABHAGwAYQB1AGUAcgB0AF8AMQA5ADIAOABUAGgAZQAgAGUAZgBmAGUAYwB0ACAAbwBmACAAYwBvAG0AcAByAGUAcwBzAGkAYgBpAGwAaQB0AHkAIABvAG4AIAB0AGgAZQAgAGwAaQBmAHQAIABvAGYAIABhAG4AIABhAGUAcgBvAGYAbwBpAGwALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAIFVc2Vycy9qbWVoci9MaWJyYXJ5L0Nsb3VkU3RvcmFnZS9Cb3gtQm94L1JlYWRpbmcvZWRmLWRldi9HbGF1ZXJ0XzE5MjhUaGUgZWZmZWN0IG9mIGNvbXByZXNzaWJpbGl0eSBvbiB0aGUgbGlmdCBvZiBhbiBhZXJvZm9pbC5wZGYAABMAAS8AABUAAgAM//8AAAAIAA0AGgAkAHcAAAAAAAACAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAC7w==}, + bdsk-url-1 = {https://royalsocietypublishing.org/doi/abs/10.1098/rspa.1928.0039}, + bdsk-url-2 = {https://doi.org/10.1098/rspa.1928.0039}} + +@article{Julia_2017, + author = {Bezanson, Jeff and Edelman, Alan and Karpinski, Stefan and Shah, Viral B}, + date-added = {2023-10-12 09:42:58 -0600}, + date-modified = {2023-10-12 09:42:58 -0600}, + doi = {10.1137/141000671}, + journal = {SIAM {R}eview}, + number = {1}, + pages = {65--98}, + publisher = {SIAM}, + title = {Julia: A fresh approach to numerical computing}, + url = {https://epubs.siam.org/doi/10.1137/141000671}, + volume = {59}, + year = {2017}, + bdsk-url-1 = {https://epubs.siam.org/doi/10.1137/141000671}, + bdsk-url-2 = {https://doi.org/10.1137/141000671}} + +@book{Katz_2001, + address = {Cambridge, UK}, + author = {Katz, Joseph and Plotkin, Allen}, + date-added = {2023-10-12 09:40:27 -0600}, + date-modified = {2023-10-12 09:40:46 -0600}, + edition = {2nd ed}, + isbn = {0521662192; 9780521662192; 0521665523; 9780521665520}, + la = {eng}, + publisher = {Cambridge University Press Cambridge, UK}, + title = {Low speed aerodynamics}, + year = {2001}} + +@book{Kellogg_1929, + annote = {page 287 talks about the + or - of the integral in the fredholm equation.}, + author = {Kellogg, Oliver Dimon}, + date-added = {2023-10-05 09:20:08 -0600}, + date-modified = {2023-10-05 09:22:27 -0600}, + edition = {1}, + publisher = {Springer Berlin, Heidelberg}, + title = {Foundations of Potential Theory}, + year = {1929}, + bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhZYWxpYXNEYXRhXxA3ZWRmLWRldi9LZWxsb2dnXzE5MjlGb3VuZGF0aW9ucyBvZiBQb3RlbnRpYWwgVGhlb3J5LnBkZk8RAg4AAAAAAg4AAgAADE1hY2ludG9zaCBIRAAAAAAAAAAAAAAAAAAAAAAAAABCRAAB/////x9LZWxsb2dnXzE5MjlGb3VuZGEjRkZGRkZGRkYucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAEAAwAACiBjdQAAAAAAAAAAAAAAAAAHZWRmLWRldgAAAgBqLzpVc2VyczpqbWVocjpMaWJyYXJ5OkNsb3VkU3RvcmFnZTpCb3gtQm94OlJlYWRpbmc6ZWRmLWRldjpLZWxsb2dnXzE5MjlGb3VuZGF0aW9ucyBvZiBQb3RlbnRpYWwgVGhlb3J5LnBkZgAOAGAALwBLAGUAbABsAG8AZwBnAF8AMQA5ADIAOQBGAG8AdQBuAGQAYQB0AGkAbwBuAHMAIABvAGYAIABQAG8AdABlAG4AdABpAGEAbAAgAFQAaABlAG8AcgB5AC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgBoVXNlcnMvam1laHIvTGlicmFyeS9DbG91ZFN0b3JhZ2UvQm94LUJveC9SZWFkaW5nL2VkZi1kZXYvS2VsbG9nZ18xOTI5Rm91bmRhdGlvbnMgb2YgUG90ZW50aWFsIFRoZW9yeS5wZGYAEwABLwAAFQACAAz//wAAAAgADQAaACQAXgAAAAAAAAIBAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAJw}} + +@inproceedings{Korondi_2019, + address = {Crete, Greece}, + annote = {/Users/jmehr/Box Sync/Reading/ducted_rotor_opt/notes/202207081103-korondi_2019.md}, + author = {Korondi, P{\'e}ter Z{\'e}n{\'o} and Parussini, Lucia and Marchi, Mariapia and Poloni, Carlo}, + booktitle = {Proceedings of the 3rd {International} {Conference} on {Uncertainty} {Quantification} in {Computational} {Sciences} and {Engineering} ({UNCECOMP} 2019)}, + date-added = {2022-07-08 11:07:38 -0600}, + date-modified = {2024-01-08 14:48:01 -0700}, + doi = {10.7712/120219.6363.18806}, + isbn = {9786188284494}, + language = {en}, + pages = {600--619}, + publisher = {Institute of Structural Analysis and Antiseismic Research School of Civil Engineering National Technical University of Athens (NTUA) Greece}, + title = {Reliability-based Design Optimization of a Ducted Propeller through Multi-fidelity Learning}, + url = {https://www.eccomasproceedia.org/conferences/thematic-conferences/uncecomp-2019/6363}, + urldate = {2022-07-08}, + year = {2019}, + bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhZYWxpYXNEYXRhXxBdZHVjdGVkX3JvdG9yX29wdC9Lb3JvbmRpXzIwMTlfUkVMSUFCSUxJVFktQkFTRUQgREVTSUdOIE9QVElNSVNBVElPTiBPRiBBIERVQ1RFRCBQUk9QRUxMRVIucGRmTxECnAAAAAACnAACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAAAAAAAEJEAAH/////H0tvcm9uZGlfMjAxOV9SRUxJQSNGRkZGRkZGRi5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAQADAAAKIGN1AAAAAAAAAAAAAAAAABBkdWN0ZWRfcm90b3Jfb3B0AAIAkC86VXNlcnM6am1laHI6TGlicmFyeTpDbG91ZFN0b3JhZ2U6Qm94LUJveDpSZWFkaW5nOmR1Y3RlZF9yb3Rvcl9vcHQ6S29yb25kaV8yMDE5X1JFTElBQklMSVRZLUJBU0VEIERFU0lHTiBPUFRJTUlTQVRJT04gT0YgQSBEVUNURUQgUFJPUEVMTEVSLnBkZgAOAJoATABLAG8AcgBvAG4AZABpAF8AMgAwADEAOQBfAFIARQBMAEkAQQBCAEkATABJAFQAWQAtAEIAQQBTAEUARAAgAEQARQBTAEkARwBOACAATwBQAFQASQBNAEkAUwBBAFQASQBPAE4AIABPAEYAIABBACAARABVAEMAVABFAEQAIABQAFIATwBQAEUATABMAEUAUgAuAHAAZABmAA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIAjlVzZXJzL2ptZWhyL0xpYnJhcnkvQ2xvdWRTdG9yYWdlL0JveC1Cb3gvUmVhZGluZy9kdWN0ZWRfcm90b3Jfb3B0L0tvcm9uZGlfMjAxOV9SRUxJQUJJTElUWS1CQVNFRCBERVNJR04gT1BUSU1JU0FUSU9OIE9GIEEgRFVDVEVEIFBST1BFTExFUi5wZGYAEwABLwAAFQACAAz//wAAAAgADQAaACQAhAAAAAAAAAIBAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAMk}, + bdsk-url-1 = {https://www.eccomasproceedia.org/conferences/thematic-conferences/uncecomp-2019/6363}, + bdsk-url-2 = {https://doi.org/10.7712/120219.6363.18806}} + +@book{Lamb_1916, + address = {Cambridge}, + author = {Lamb, Horace}, + chapter = {7}, + date-added = {2023-10-12 09:44:00 -0600}, + date-modified = {2023-10-12 09:44:00 -0600}, + edition = {4th ed}, + publisher = {University Press Cambridge}, + title = {Hydrodynamics}, + year = {1916}} + +@book{Lewis_1991, + address = {Cambridge ; New York}, + author = {Lewis, R. I.}, + date-added = {2023-10-12 09:44:00 -0600}, + date-modified = {2023-10-12 09:44:00 -0600}, + isbn = {9780521360104}, + keywords = {Turbomachines, Fluid dynamics Mathematical models, Fluid dynamics, Mathematical models, Vortex-motion, Mathematical models}, + number = {1}, + publisher = {Cambridge University Press}, + series = {Cambridge engine technology series}, + title = {Vortex Element Methods for Fluid Dynamic Analysis of Engineering Systems}, + year = {1991}} + +@article{Martensen_1971, + author = {Martensen, Erich}, + date-added = {2023-10-03 14:34:51 -0600}, + date-modified = {2023-10-03 14:43:12 -0600}, + journal = {Archive for Rational Mechanics and Analysis}, + pages = {235-270}, + title = {Die Berechnung der Druckverteilung an dicken Gitterprofilen mit Hilfe von Fredholmschen Integralgleichungen zweiter Art}, + volume = {3}, + year = {1959}, + bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhZYWxpYXNEYXRhXxBfZWRmLWRldi9NYXJ0ZW5zZW5fMTk1OURpZSBCZXJlY2hudW5nIGRlciBEcnVja3ZlcnRlaWx1bmcgYW4gZGlja2VuIEdpdHRlcnByb2ZpbGVuIG1pdCBIaWxmZS5wZGZPEQKuAAAAAAKuAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAAAAAAAAQkQAAf////8fTWFydGVuc2VuXzE5NTlEaWUgI0ZGRkZGRkZGLnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAABAAMAAAogY3UAAAAAAAAAAAAAAAAAB2VkZi1kZXYAAAIAki86VXNlcnM6am1laHI6TGlicmFyeTpDbG91ZFN0b3JhZ2U6Qm94LUJveDpSZWFkaW5nOmVkZi1kZXY6TWFydGVuc2VuXzE5NTlEaWUgQmVyZWNobnVuZyBkZXIgRHJ1Y2t2ZXJ0ZWlsdW5nIGFuIGRpY2tlbiBHaXR0ZXJwcm9maWxlbiBtaXQgSGlsZmUucGRmAA4AsABXAE0AYQByAHQAZQBuAHMAZQBuAF8AMQA5ADUAOQBEAGkAZQAgAEIAZQByAGUAYwBoAG4AdQBuAGcAIABkAGUAcgAgAEQAcgB1AGMAawB2AGUAcgB0AGUAaQBsAHUAbgBnACAAYQBuACAAZABpAGMAawBlAG4AIABHAGkAdAB0AGUAcgBwAHIAbwBmAGkAbABlAG4AIABtAGkAdAAgAEgAaQBsAGYAZQAuAHAAZABmAA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIAkFVzZXJzL2ptZWhyL0xpYnJhcnkvQ2xvdWRTdG9yYWdlL0JveC1Cb3gvUmVhZGluZy9lZGYtZGV2L01hcnRlbnNlbl8xOTU5RGllIEJlcmVjaG51bmcgZGVyIERydWNrdmVydGVpbHVuZyBhbiBkaWNrZW4gR2l0dGVycHJvZmlsZW4gbWl0IEhpbGZlLnBkZgATAAEvAAAVAAIADP//AAAACAANABoAJACGAAAAAAAAAgEAAAAAAAAABQAAAAAAAAAAAAAAAAAAAzg=}} + +@inproceedings{McDonald_2022, + author = {Robert A. McDonald and James R. Gloudemans}, + booktitle = {AIAA SCITECH Forum 2022}, + date-added = {2023-10-13 14:33:27 -0600}, + date-modified = {2023-10-13 14:35:20 -0600}, + month = {January}, + organization = {AIAA}, + title = {Open Vehicle Sketch Pad: An Open Source Parametric Geometry and Analysis Tool for Conceptual Aircraft Design}, + year = {2022}} + +@article{mfoil, + author = {Fidkowski, Krzysztof J.}, + date-added = {2023-10-23 09:13:37 -0600}, + date-modified = {2023-10-23 09:14:59 -0600}, + doi = {10.2514/1.J061341}, + issn = {0001-1452, 1533-385X}, + journal = {AIAA Journal}, + language = {en}, + month = may, + number = {5}, + pages = {2961--2971}, + title = {A {Coupled} {Inviscid}--{Viscous} {Airfoil} {Analysis} {Solver}, {Revisited}}, + url = {https://arc.aiaa.org/doi/10.2514/1.J061341}, + urldate = {2023-10-23}, + volume = {60}, + year = {2022}, + bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhZYWxpYXNEYXRhbxBNAGUAZABmAC0AZABlAHYALwBGAGkAZABrAG8AdwBzAGsAaQBfADIAMAAyADIAQQAgAEMAbwB1AHAAbABlAGQAIABJAG4AdgBpAHMAYwBpAGQgEwBWAGkAcwBjAG8AdQBzACAAQQBpAHIAZgBvAGkAbAAgAEEAbgBhAGwAeQBzAGkAcwAgAFMAbwBsAHYAZQByACwALgBwAGQAZk8RAmoAAAAAAmoAAgAADE1hY2ludG9zaCBIRAAAAAAAAAAAAAAAAAAAAAAAAABCRAAB/////x9GaWRrb3dza2lfMjAyMkEgQ28jRkZGRkZGRkYucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAEAAwAACiBjdQAAAAAAAAAAAAAAAAAHZWRmLWRldgAAAgCCLzpVc2VyczpqbWVocjpMaWJyYXJ5OkNsb3VkU3RvcmFnZTpCb3gtQm94OlJlYWRpbmc6ZWRmLWRldjpGaWRrb3dza2lfMjAyMkEgQ291cGxlZCBJbnZpc2NpZOKAk1Zpc2NvdXMgQWlyZm9pbCBBbmFseXNpcyBTb2x2ZXIsLnBkZgAOAIwARQBGAGkAZABrAG8AdwBzAGsAaQBfADIAMAAyADIAQQAgAEMAbwB1AHAAbABlAGQAIABJAG4AdgBpAHMAYwBpAGQgEwBWAGkAcwBjAG8AdQBzACAAQQBpAHIAZgBvAGkAbAAgAEEAbgBhAGwAeQBzAGkAcwAgAFMAbwBsAHYAZQByACwALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAIBVc2Vycy9qbWVoci9MaWJyYXJ5L0Nsb3VkU3RvcmFnZS9Cb3gtQm94L1JlYWRpbmcvZWRmLWRldi9GaWRrb3dza2lfMjAyMkEgQ291cGxlZCBJbnZpc2NpZOKAk1Zpc2NvdXMgQWlyZm9pbCBBbmFseXNpcyBTb2x2ZXIsLnBkZgATAAEvAAAVAAIADP//AAAACAANABoAJADBAAAAAAAAAgEAAAAAAAAABQAAAAAAAAAAAAAAAAAAAy8=}, + bdsk-url-1 = {https://arc.aiaa.org/doi/10.2514/1.J061341}} + +@article{Prager_1928, + author = {Prager, Willy}, + date-added = {2023-10-03 14:20:03 -0600}, + date-modified = {2023-10-03 14:25:55 -0600}, + journal = {Physikalische Zeitschrift}, + pages = {865-869}, + title = {Die Druckverteilung an K{\"o}rpern in ebener Potentialsr{\"o}mung}, + volume = {29}, + year = {1928}, + bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhZYWxpYXNEYXRhbxBOAGUAZABmAC0AZABlAHYALwBQAHIAYQBnAGUAcgBfAEQAaQBlACAARAByAHUAYwBrAHYAZQByAHQAZQBpAGwAdQBuAGcAIABhAG4AIABLAG8DCAByAHAAZQByAG4AIABpAG4AIABlAGIAZQBuAGUAcgAgAFAAbwB0AGUAbgB0AGkAYQBsAHMAcgBvAwgAbQB1AG4AZwAuAHAAZABmTxECcAAAAAACcAACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAAAAAAAEJEAAH/////H1ByYWdlcl9EaWUgRHJ1Y2t2ZSNGRkZGRkZGRi5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAQADAAAKIGN1AAAAAAAAAAAAAAAAAAdlZGYtZGV2AAACAIMvOlVzZXJzOmptZWhyOkxpYnJhcnk6Q2xvdWRTdG9yYWdlOkJveC1Cb3g6UmVhZGluZzplZGYtZGV2OlByYWdlcl9EaWUgRHJ1Y2t2ZXJ0ZWlsdW5nIGFuIEtvzIhycGVybiBpbiBlYmVuZXIgUG90ZW50aWFsc3JvzIhtdW5nLnBkZgAADgCOAEYAUAByAGEAZwBlAHIAXwBEAGkAZQAgAEQAcgB1AGMAawB2AGUAcgB0AGUAaQBsAHUAbgBnACAAYQBuACAASwBvAwgAcgBwAGUAcgBuACAAaQBuACAAZQBiAGUAbgBlAHIAIABQAG8AdABlAG4AdABpAGEAbABzAHIAbwMIAG0AdQBuAGcALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAIFVc2Vycy9qbWVoci9MaWJyYXJ5L0Nsb3VkU3RvcmFnZS9Cb3gtQm94L1JlYWRpbmcvZWRmLWRldi9QcmFnZXJfRGllIERydWNrdmVydGVpbHVuZyBhbiBLb8yIcnBlcm4gaW4gZWJlbmVyIFBvdGVudGlhbHNyb8yIbXVuZy5wZGYAABMAAS8AABUAAgAM//8AAAAIAA0AGgAkAMMAAAAAAAACAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAADNw==}} + +@techreport{Ryall_1967, + author = {D. L. Ryall and I. F. Collins}, + date-added = {2023-10-23 08:41:50 -0600}, + date-modified = {2023-10-23 08:47:45 -0600}, + institution = {Ministry of Technology Aeronautical Research Council}, + month = {March}, + number = {3492}, + title = {Design and Test of a Series of Annular Aerofoils}, + type = {Reports and Memoranda}, + year = {1967}, + bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhZYWxpYXNEYXRhXxBGZWRmLWRldi9SeWFsbF8xOTY3RGVzaWduIGFuZCBUZXN0IG9mIGEgU2VyaWVzIG9mIEFubnVsYXIgQWVyb2ZvaWxzLnBkZk8RAkwAAAAAAkwAAgAADE1hY2ludG9zaCBIRAAAAAAAAAAAAAAAAAAAAAAAAABCRAAB/////x9SeWFsbF8xOTY3RGVzaWduIGEjRkZGRkZGRkYucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAEAAwAACiBjdQAAAAAAAAAAAAAAAAAHZWRmLWRldgAAAgB5LzpVc2VyczpqbWVocjpMaWJyYXJ5OkNsb3VkU3RvcmFnZTpCb3gtQm94OlJlYWRpbmc6ZWRmLWRldjpSeWFsbF8xOTY3RGVzaWduIGFuZCBUZXN0IG9mIGEgU2VyaWVzIG9mIEFubnVsYXIgQWVyb2ZvaWxzLnBkZgAADgB+AD4AUgB5AGEAbABsAF8AMQA5ADYANwBEAGUAcwBpAGcAbgAgAGEAbgBkACAAVABlAHMAdAAgAG8AZgAgAGEAIABTAGUAcgBpAGUAcwAgAG8AZgAgAEEAbgBuAHUAbABhAHIAIABBAGUAcgBvAGYAbwBpAGwAcwAuAHAAZABmAA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIAd1VzZXJzL2ptZWhyL0xpYnJhcnkvQ2xvdWRTdG9yYWdlL0JveC1Cb3gvUmVhZGluZy9lZGYtZGV2L1J5YWxsXzE5NjdEZXNpZ24gYW5kIFRlc3Qgb2YgYSBTZXJpZXMgb2YgQW5udWxhciBBZXJvZm9pbHMucGRmAAATAAEvAAAVAAIADP//AAAACAANABoAJABtAAAAAAAAAgEAAAAAAAAABQAAAAAAAAAAAAAAAAAAAr0=}} + +@inproceedings{Sargent_2018, + address = {Atlanta, Georgia}, + author = {Sargent, Pierson B. and Anemaat, Willem A.}, + booktitle = {2018 {Applied} {Aerodynamics} {Conference}}, + date-added = {2024-01-08 15:01:35 -0700}, + date-modified = {2024-01-08 15:01:43 -0700}, + doi = {10.2514/6.2018-4212}, + isbn = {9781624105593}, + language = {en}, + month = jun, + publisher = {American Institute of Aeronautics and Astronautics}, + title = {Benchmarking a {Robust} {Panel} {Code} for {Ducted} {Fan} {VTOL} {Aircraft} {Design}}, + url = {https://arc.aiaa.org/doi/10.2514/6.2018-4212}, + urldate = {2024-01-08}, + year = {2018}, + bdsk-url-1 = {https://arc.aiaa.org/doi/10.2514/6.2018-4212}, + bdsk-url-2 = {https://doi.org/10.2514/6.2018-4212}, + bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhZYWxpYXNEYXRhXxBDZWRmLWRldi9TYXJnZW50XzIwMThCZW5jaG1hcmtpbmcgYSBSb2J1c3QgUGFuZWwgQ29kZSBmb3IgRHVjdGVkLnBkZk8RAj4AAAAAAj4AAgAADE1hY2ludG9zaCBIRAAAAAAAAAAAAAAAAAAAAAAAAABCRAAB/////x9TYXJnZW50XzIwMThCZW5jaG0jRkZGRkZGRkYucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAEAAwAACiBjdQAAAAAAAAAAAAAAAAAHZWRmLWRldgAAAgB2LzpVc2VyczpqbWVocjpMaWJyYXJ5OkNsb3VkU3RvcmFnZTpCb3gtQm94OlJlYWRpbmc6ZWRmLWRldjpTYXJnZW50XzIwMThCZW5jaG1hcmtpbmcgYSBSb2J1c3QgUGFuZWwgQ29kZSBmb3IgRHVjdGVkLnBkZgAOAHgAOwBTAGEAcgBnAGUAbgB0AF8AMgAwADEAOABCAGUAbgBjAGgAbQBhAHIAawBpAG4AZwAgAGEAIABSAG8AYgB1AHMAdAAgAFAAYQBuAGUAbAAgAEMAbwBkAGUAIABmAG8AcgAgAEQAdQBjAHQAZQBkAC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgB0VXNlcnMvam1laHIvTGlicmFyeS9DbG91ZFN0b3JhZ2UvQm94LUJveC9SZWFkaW5nL2VkZi1kZXYvU2FyZ2VudF8yMDE4QmVuY2htYXJraW5nIGEgUm9idXN0IFBhbmVsIENvZGUgZm9yIER1Y3RlZC5wZGYAEwABLwAAFQACAAz//wAAAAgADQAaACQAagAAAAAAAAIBAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAKs}} + +@conference{Stahlhut_2014, + author = {Stahlhut, Conor}, + booktitle = {American Helicopter Society 70th Annual Forum}, + date-added = {2024-01-08 14:56:16 -0700}, + date-modified = {2024-01-08 15:00:55 -0700}, + month = {May}, + organization = {American Helicopter Society International, Inc.}, + pages = {810-822}, + title = {Aerodynamic Performance Modeling of Ducted Fans and Shrouded Propellers for Preliminary Design}, + volume = {1}, + year = {2014}, + bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhZYWxpYXNEYXRhXxBIZWRmLWRldi9TdGFobGh1dF8yMDE0QWVyb2R5bmFtaWMgUGVyZm9ybWFuY2UgTW9kZWxpbmcgb2YgRHVjdGVkIEZhbnMucGRmTxECVAAAAAACVAACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAAAAAAAEJEAAH/////H1N0YWhsaHV0XzIwMTRBZXJvZCNGRkZGRkZGRi5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAQADAAAKIGN1AAAAAAAAAAAAAAAAAAdlZGYtZGV2AAACAHsvOlVzZXJzOmptZWhyOkxpYnJhcnk6Q2xvdWRTdG9yYWdlOkJveC1Cb3g6UmVhZGluZzplZGYtZGV2OlN0YWhsaHV0XzIwMTRBZXJvZHluYW1pYyBQZXJmb3JtYW5jZSBNb2RlbGluZyBvZiBEdWN0ZWQgRmFucy5wZGYAAA4AggBAAFMAdABhAGgAbABoAHUAdABfADIAMAAxADQAQQBlAHIAbwBkAHkAbgBhAG0AaQBjACAAUABlAHIAZgBvAHIAbQBhAG4AYwBlACAATQBvAGQAZQBsAGkAbgBnACAAbwBmACAARAB1AGMAdABlAGQAIABGAGEAbgBzAC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgB5VXNlcnMvam1laHIvTGlicmFyeS9DbG91ZFN0b3JhZ2UvQm94LUJveC9SZWFkaW5nL2VkZi1kZXYvU3RhaGxodXRfMjAxNEFlcm9keW5hbWljIFBlcmZvcm1hbmNlIE1vZGVsaW5nIG9mIER1Y3RlZCBGYW5zLnBkZgAAEwABLwAAFQACAAz//wAAAAgADQAaACQAbwAAAAAAAAIBAAAAAAAAAAUAAAAAAAAAAAAAAAAAAALH}} + +@article{thompson_1974, + author = {Thompson, Joe F and Thames, Frank C and Mastin, C.Wayne}, + date-added = {2023-10-12 09:44:00 -0600}, + date-modified = {2023-10-12 09:44:00 -0600}, + doi = {10.1016/0021-9991(74)90114-4}, + issn = {00219991}, + journal = {Journal of Computational Physics}, + language = {en}, + month = jul, + number = {3}, + pages = {299--319}, + title = {Automatic numerical generation of body-fitted curvilinear coordinate system for field containing any number of arbitrary two-dimensional bodies}, + url = {https://linkinghub.elsevier.com/retrieve/pii/0021999174901144}, + urldate = {2023-01-09}, + volume = {15}, + year = {1974}, + bdsk-url-1 = {https://linkinghub.elsevier.com/retrieve/pii/0021999174901144}, + bdsk-url-2 = {https://doi.org/10.1016/0021-9991(74)90114-4}} + +@inproceedings{Wallis_1968, + address = {Sydney, New South Wales, Australia}, + author = {R. Allan Wallis}, + booktitle = {Proceedings of the third Australasian Conference on Hydraulics and Fluid Mechanics}, + date-added = {2023-11-01 11:08:23 -0600}, + date-modified = {2023-11-01 11:14:58 -0600}, + month = {November}, + organization = {The Institution of Engineers, Australia}, + pages = {23-29}, + title = {A Rationalised Approach to Blade Element Design, Axial Flow Fans}, + year = {1968}, + bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhZYWxpYXNEYXRhXxBHZWRmLWRldi9XYWxsaXNfMTk4NkEgUmF0aW9uYWxpc2VkIEFwcHJvYWNoIHRvIEJsYWRlIEVsZW1lbnQgRGVzaWduLC5wZGZPEQJOAAAAAAJOAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAAAAAAAAQkQAAf////8fV2FsbGlzXzE5ODZBIFJhdGlvI0ZGRkZGRkZGLnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAABAAMAAAogY3UAAAAAAAAAAAAAAAAAB2VkZi1kZXYAAAIAei86VXNlcnM6am1laHI6TGlicmFyeTpDbG91ZFN0b3JhZ2U6Qm94LUJveDpSZWFkaW5nOmVkZi1kZXY6V2FsbGlzXzE5ODZBIFJhdGlvbmFsaXNlZCBBcHByb2FjaCB0byBCbGFkZSBFbGVtZW50IERlc2lnbiwucGRmAA4AgAA/AFcAYQBsAGwAaQBzAF8AMQA5ADgANgBBACAAUgBhAHQAaQBvAG4AYQBsAGkAcwBlAGQAIABBAHAAcAByAG8AYQBjAGgAIAB0AG8AIABCAGwAYQBkAGUAIABFAGwAZQBtAGUAbgB0ACAARABlAHMAaQBnAG4ALAAuAHAAZABmAA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIAeFVzZXJzL2ptZWhyL0xpYnJhcnkvQ2xvdWRTdG9yYWdlL0JveC1Cb3gvUmVhZGluZy9lZGYtZGV2L1dhbGxpc18xOTg2QSBSYXRpb25hbGlzZWQgQXBwcm9hY2ggdG8gQmxhZGUgRWxlbWVudCBEZXNpZ24sLnBkZgATAAEvAAAVAAIADP//AAAACAANABoAJABuAAAAAAAAAgEAAAAAAAAABQAAAAAAAAAAAAAAAAAAAsA=}} + +@article{Wallis_1977, + author = {R. Allan Wallis}, + date-added = {2023-11-01 11:03:15 -0600}, + date-modified = {2023-11-01 11:04:32 -0600}, + journal = {Mechanical Engineering Transactions}, + number = {1}, + pages = {12-20}, + title = {The F-Series Aerofoils, for Fan Blade Sections}, + volume = {2}, + year = {1977}, + bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhZYWxpYXNEYXRhXxBFZWRmLWRldi9XYWxsaXNfMTk3N1RoZSBGLVNlcmllcyBBZXJvZm9pbHMsIGZvciBGYW4gQmxhZGUgU2VjdGlvbnMucGRmTxECRgAAAAACRgACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAAAAAAAEJEAAH/////H1dhbGxpc18xOTc3VGhlIEYtUyNGRkZGRkZGRi5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAQADAAAKIGN1AAAAAAAAAAAAAAAAAAdlZGYtZGV2AAACAHgvOlVzZXJzOmptZWhyOkxpYnJhcnk6Q2xvdWRTdG9yYWdlOkJveC1Cb3g6UmVhZGluZzplZGYtZGV2OldhbGxpc18xOTc3VGhlIEYtU2VyaWVzIEFlcm9mb2lscywgZm9yIEZhbiBCbGFkZSBTZWN0aW9ucy5wZGYADgB8AD0AVwBhAGwAbABpAHMAXwAxADkANwA3AFQAaABlACAARgAtAFMAZQByAGkAZQBzACAAQQBlAHIAbwBmAG8AaQBsAHMALAAgAGYAbwByACAARgBhAG4AIABCAGwAYQBkAGUAIABTAGUAYwB0AGkAbwBuAHMALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAHZVc2Vycy9qbWVoci9MaWJyYXJ5L0Nsb3VkU3RvcmFnZS9Cb3gtQm94L1JlYWRpbmcvZWRmLWRldi9XYWxsaXNfMTk3N1RoZSBGLVNlcmllcyBBZXJvZm9pbHMsIGZvciBGYW4gQmxhZGUgU2VjdGlvbnMucGRmABMAAS8AABUAAgAM//8AAAAIAA0AGgAkAGwAAAAAAAACAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAACtg==}} + +@book{Wallis_1983, + author = {Wallis, R.A.}, + date-added = {2023-10-31 11:28:01 -0600}, + date-modified = {2023-10-31 11:28:09 -0600}, + isbn = {9780471870869}, + lccn = {83003540}, + publisher = {Wiley}, + title = {Axial Flow Fans and Ducts}, + url = {https://books.google.com/books?id=r6MYAQAAIAAJ}, + year = {1983}, + bdsk-url-1 = {https://books.google.com/books?id=r6MYAQAAIAAJ}} + +@inproceedings{Xfoil, + abstract = {Calculation procedures for viscous/inviscid analysis and mixed-inverse design of subcritical airfoils are presented. An inviscid linear-vorticity panel method with a Karman-Tsien compressiblity correction is developed for direct and mixed-inverse modes. Source distributions superimposed on the airfoil and wake permit modeling of viscous layer influence on the potential flow. A two-equation lagged dissipation integral method is used to represent the viscous layers. Both laminar and turbulent layers are treated, with an e9-type amplification formulation determinining the transition point. The boundary layer and transition equations are solved simultaneously with the inviscid flowfield by a global Newton method. The procedure is especially suitable for rapid analysis of low Reynolds number airfoil flows with transitional separation bubbles. Surface pressure distributions and entire polars are calculated and compared with experimental data. Design procedure examples are also presented.}, + address = {Berlin, Heidelberg}, + author = {Drela, Mark}, + booktitle = {Low Reynolds Number Aerodynamics}, + date-added = {2023-10-23 09:11:02 -0600}, + date-modified = {2023-10-23 09:11:13 -0600}, + editor = {Mueller, Thomas J.}, + isbn = {978-3-642-84010-4}, + pages = {1--12}, + publisher = {Springer Berlin Heidelberg}, + title = {XFOIL: An Analysis and Design System for Low Reynolds Number Airfoils}, + year = {1989}, + bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhZYWxpYXNEYXRhXxBKZWRmLWRldi9EcmVsYV8xOTg5WEZPSUwgQW4gQW5hbHlzaXMgYW5kIERlc2lnbiBTeXN0ZW0gZm9yIExvdyBSZXlub2xkcy5wZGZPEQJcAAAAAAJcAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAAAAAAAAQkQAAf////8fRHJlbGFfMTk4OVhGT0lMIEFuI0ZGRkZGRkZGLnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAABAAMAAAogY3UAAAAAAAAAAAAAAAAAB2VkZi1kZXYAAAIAfS86VXNlcnM6am1laHI6TGlicmFyeTpDbG91ZFN0b3JhZ2U6Qm94LUJveDpSZWFkaW5nOmVkZi1kZXY6RHJlbGFfMTk4OVhGT0lMIEFuIEFuYWx5c2lzIGFuZCBEZXNpZ24gU3lzdGVtIGZvciBMb3cgUmV5bm9sZHMucGRmAAAOAIYAQgBEAHIAZQBsAGEAXwAxADkAOAA5AFgARgBPAEkATAAgAEEAbgAgAEEAbgBhAGwAeQBzAGkAcwAgAGEAbgBkACAARABlAHMAaQBnAG4AIABTAHkAcwB0AGUAbQAgAGYAbwByACAATABvAHcAIABSAGUAeQBuAG8AbABkAHMALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAHtVc2Vycy9qbWVoci9MaWJyYXJ5L0Nsb3VkU3RvcmFnZS9Cb3gtQm94L1JlYWRpbmcvZWRmLWRldi9EcmVsYV8xOTg5WEZPSUwgQW4gQW5hbHlzaXMgYW5kIERlc2lnbiBTeXN0ZW0gZm9yIExvdyBSZXlub2xkcy5wZGYAABMAAS8AABUAAgAM//8AAAAIAA0AGgAkAHEAAAAAAAACAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAC0Q==}} + + + + +@techreport{nasaram_2021, + author = {Antcliff , Kevin and Borer , Nicholas and Sartorius , Sky and Saleh , Pasha and Rose , Robert and Gariel , Maxime and Oldham , Joseph and Courtin , Chris and Bradley , Marty and Roy , Satadru and Lynch , Bryan and Guiang , Arnel and Stith , Paul and Sun , Dengfeng and Ying , Susan and Patterson , Michael and Schultz , Vince and Ganzarski , Roei and Noertker , Kevin and Combs , Cory and Ouellette , Rich}, + date-added = {2023-01-19 15:47:46 -0700}, + date-modified = {2023-01-19 15:49:21 -0700}, + institution = {NASA}, + title = {Regional Air Mobility: Leveraging Our National Investments to Energize the American Travel Experience}, + year = {2021}, + bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhZYWxpYXNEYXRhXxBcZHVjdGVkX3JvdG9yX29wdC9BbnRjbGlmZl8yMDIxX1JlZ2lvbmFsIEFpciBNb2JpbGl0eSBMZXZlcmFnaW5nIE91ciBOYXRpb25hbCBJbnZlc3RtZW50cy5wZGZPEQKaAAAAAAKaAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAAAAAAAAQkQAAf////8fQW50Y2xpZmZfMjAyMV9SZWdpI0ZGRkZGRkZGLnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAABAAMAAAogY3UAAAAAAAAAAAAAAAAAEGR1Y3RlZF9yb3Rvcl9vcHQAAgCPLzpVc2VyczpqbWVocjpMaWJyYXJ5OkNsb3VkU3RvcmFnZTpCb3gtQm94OlJlYWRpbmc6ZHVjdGVkX3JvdG9yX29wdDpBbnRjbGlmZl8yMDIxX1JlZ2lvbmFsIEFpciBNb2JpbGl0eSBMZXZlcmFnaW5nIE91ciBOYXRpb25hbCBJbnZlc3RtZW50cy5wZGYAAA4AmABLAEEAbgB0AGMAbABpAGYAZgBfADIAMAAyADEAXwBSAGUAZwBpAG8AbgBhAGwAIABBAGkAcgAgAE0AbwBiAGkAbABpAHQAeQAgAEwAZQB2AGUAcgBhAGcAaQBuAGcAIABPAHUAcgAgAE4AYQB0AGkAbwBuAGEAbAAgAEkAbgB2AGUAcwB0AG0AZQBuAHQAcwAuAHAAZABmAA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIAjVVzZXJzL2ptZWhyL0xpYnJhcnkvQ2xvdWRTdG9yYWdlL0JveC1Cb3gvUmVhZGluZy9kdWN0ZWRfcm90b3Jfb3B0L0FudGNsaWZmXzIwMjFfUmVnaW9uYWwgQWlyIE1vYmlsaXR5IExldmVyYWdpbmcgT3VyIE5hdGlvbmFsIEludmVzdG1lbnRzLnBkZgAAEwABLwAAFQACAAz//wAAAAgADQAaACQAgwAAAAAAAAIBAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAMh}} + +@book{Branlard_2017, + author = {Branlard, Emmanuel}, + date-added = {2024-01-19 13:10:08 -0700}, + date-modified = {2024-01-19 13:12:12 -0700}, + doi = {10.1007/978-3-319-55164-7}, + isbn = {978-3-319-55163-0}, + month = {01}, + publisher = {Springer}, + series = {Research Topics in Wind Energy}, + title = {Wind Turbine Aerodynamics and Vorticity-Based Methods}, + volume = {7}, + year = {2017}, + bdsk-url-1 = {https://doi.org/10.1007/978-3-319-55164-7}} + + +@inproceedings{Xfoil, + abstract = {Calculation procedures for viscous/inviscid analysis and mixed-inverse design of subcritical airfoils are presented. An inviscid linear-vorticity panel method with a Karman-Tsien compressiblity correction is developed for direct and mixed-inverse modes. Source distributions superimposed on the airfoil and wake permit modeling of viscous layer influence on the potential flow. A two-equation lagged dissipation integral method is used to represent the viscous layers. Both laminar and turbulent layers are treated, with an e9-type amplification formulation determinining the transition point. The boundary layer and transition equations are solved simultaneously with the inviscid flowfield by a global Newton method. The procedure is especially suitable for rapid analysis of low Reynolds number airfoil flows with transitional separation bubbles. Surface pressure distributions and entire polars are calculated and compared with experimental data. Design procedure examples are also presented.}, + address = {Berlin, Heidelberg}, + author = {Drela, Mark}, + booktitle = {Low Reynolds Number Aerodynamics}, + date-added = {2023-10-23 09:11:02 -0600}, + date-modified = {2023-10-23 09:11:13 -0600}, + editor = {Mueller, Thomas J.}, + isbn = {978-3-642-84010-4}, + pages = {1--12}, + publisher = {Springer Berlin Heidelberg}, + title = {XFOIL: An Analysis and Design System for Low Reynolds Number Airfoils}, + year = {1989}, + bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhZYWxpYXNEYXRhXxBKZWRmLWRldi9EcmVsYV8xOTg5WEZPSUwgQW4gQW5hbHlzaXMgYW5kIERlc2lnbiBTeXN0ZW0gZm9yIExvdyBSZXlub2xkcy5wZGZPEQJcAAAAAAJcAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAAAAAAAAQkQAAf////8fRHJlbGFfMTk4OVhGT0lMIEFuI0ZGRkZGRkZGLnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAABAAMAAAogY3UAAAAAAAAAAAAAAAAAB2VkZi1kZXYAAAIAfS86VXNlcnM6am1laHI6TGlicmFyeTpDbG91ZFN0b3JhZ2U6Qm94LUJveDpSZWFkaW5nOmVkZi1kZXY6RHJlbGFfMTk4OVhGT0lMIEFuIEFuYWx5c2lzIGFuZCBEZXNpZ24gU3lzdGVtIGZvciBMb3cgUmV5bm9sZHMucGRmAAAOAIYAQgBEAHIAZQBsAGEAXwAxADkAOAA5AFgARgBPAEkATAAgAEEAbgAgAEEAbgBhAGwAeQBzAGkAcwAgAGEAbgBkACAARABlAHMAaQBnAG4AIABTAHkAcwB0AGUAbQAgAGYAbwByACAATABvAHcAIABSAGUAeQBuAG8AbABkAHMALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAHtVc2Vycy9qbWVoci9MaWJyYXJ5L0Nsb3VkU3RvcmFnZS9Cb3gtQm94L1JlYWRpbmcvZWRmLWRldi9EcmVsYV8xOTg5WEZPSUwgQW4gQW5hbHlzaXMgYW5kIERlc2lnbiBTeXN0ZW0gZm9yIExvdyBSZXlub2xkcy5wZGYAABMAAS8AABUAAgAM//8AAAAIAA0AGgAkAHEAAAAAAAACAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAC0Q==}} + + +@article{Fidkowski_2022, + abstract = { This paper presents a self-contained, comprehensive exposition and new elements of a classic airfoil analysis technique: an integral boundary-layer solver coupled to a vortex-panel potential-flow method. The resulting solver MFOIL, implemented in MATLAB and made freely available, builds on the XFOIL code and documentation, which serve as the inspiration, reference, and standard of comparison. Modifications made in the present implementation include an augmented-state coupled solver for more control in limiting the state update, a new stagnation-point formulation to reduce leading-edge oscillations in the boundary-layer variables, and a more robust treatment of the amplification rate near transition. Several results highlight these modifications and demonstrate capabilities of the code. }, + author = {Fidkowski, Krzysztof J.}, + date-added = {2024-01-19 13:36:30 -0700}, + date-modified = {2024-01-19 13:36:43 -0700}, + doi = {10.2514/1.J061341}, + eprint = {https://doi.org/10.2514/1.J061341}, + journal = {AIAA Journal}, + number = {5}, + pages = {2961-2971}, + title = {A Coupled Inviscid--Viscous Airfoil Analysis Solver, Revisited}, + url = {https://doi.org/10.2514/1.J061341}, + volume = {60}, + year = {2022}, + bdsk-url-1 = {https://doi.org/10.2514/1.J061341}} + + +@article{CCBlade, + author = {Ning, Andrew}, + date-added = {2024-02-05 14:35:25 -0700}, + date-modified = {2024-02-05 14:35:25 -0700}, + doi = {10.1007/s00158-021-02883-6}, + issn = {1615-147X, 1615-1488}, + journal = {Structural and Multidisciplinary Optimization}, + language = {en}, + month = aug, + number = {2}, + pages = {991--1014}, + title = {Using blade element momentum methods with gradient-based design optimization}, + url = {https://link.springer.com/10.1007/s00158-021-02883-6}, + urldate = {2024-02-05}, + volume = {64}, + year = {2021}, + bdsk-url-1 = {https://link.springer.com/10.1007/s00158-021-02883-6}, + bdsk-url-2 = {https://doi.org/10.1007/s00158-021-02883-6}} + +@article{Powell_1970, +author="POWELL M. J. D.", +title="A hybrid method for nonlinear equations", +journal="Numerical Methods for Nonlinear Algebraic Equations", +publisher="Gordon and Breach", +year="1970", +pages="87-161", +URL="https://cir.nii.ac.jp/crid/1571135650078362496" +} + +@article{Walker_2011, + abstract = { This paper concerns an acceleration method for fixed-point iterations that originated in work of D. G. Anderson [J. Assoc. Comput. Mach., 12 (1965), pp. 547--560], which we accordingly call Anderson acceleration here. This method has enjoyed considerable success and wide usage in electronic structure computations, where it is known as Anderson mixing; however, it seems to have been untried or underexploited in many other important applications. Moreover, while other acceleration methods have been extensively studied by the mathematics and numerical analysis communities, this method has received relatively little attention from these communities over the years. A recent paper by H. Fang and Y. Saad [Numer. Linear Algebra Appl., 16 (2009), pp. 197--221] has clarified a remarkable relationship of Anderson acceleration to quasi-Newton (secant updating) methods and extended it to define a broader Anderson family of acceleration methods. In this paper, our goals are to shed additional light on Anderson acceleration and to draw further attention to its usefulness as a general tool. We first show that, on linear problems, Anderson acceleration without truncation is ``essentially equivalent'' in a certain sense to the generalized minimal residual (GMRES) method. We also show that the Type 1 variant in the Fang--Saad Anderson family is similarly essentially equivalent to the Arnoldi (full orthogonalization) method. We then discuss practical considerations for implementing Anderson acceleration and illustrate its performance through numerical experiments involving a variety of applications. }, + author = {Walker, Homer F. and Ni, Peng}, + doi = {10.1137/10078356X}, + eprint = {https://doi.org/10.1137/10078356X}, + journal = {SIAM Journal on Numerical Analysis}, + number = {4}, + pages = {1715-1735}, + title = {Anderson Acceleration for Fixed-Point Iterations}, + url = {https://doi.org/10.1137/10078356X}, + volume = {49}, + year = {2011}, + bdsk-url-1 = {https://doi.org/10.1137/10078356X}} + + +@software{Mogensen_2020, + author = {Patrick Kofod Mogensen and Kristoffer Carlsson and S{\'e}bastien Villemot and Spencer Lyon and Matthieu Gomez and Christopher Rackauckas and Tim Holy and David Widmann and Tony Kelman and Daniel Karrasch and Antoine Levitt and Asbj{\o}rn Nilsen Riseth and Carlo Lucibello and Changhyun Kwon and David Barton and Julia TagBot and Mateusz Baran and Miles Lubin and Sarthak Choudhury and Simon Byrne and Simon Christ and Takafumi Arakaki and Troels Arnfred Bojesen and benneti and Miguel Raz Guzm{\'a}n Macedo}, + doi = {10.5281/zenodo.4404703}, + month = dec, + publisher = {Zenodo}, + title = {JuliaNLSolvers/NLsolve.jl: v4.5.1}, + url = {https://doi.org/10.5281/zenodo.4404703}, + version = {v4.5.1}, + year = 2020, + bdsk-url-1 = {https://doi.org/10.5281/zenodo.4404703}} + + +@article{Gill_2002, + title = {{SNOPT: An SQP Algorithm for Large-Scale Constrained Optimization}}, + year = {2002}, + journal = {SIAM Journal on Optimization}, + author = {Gill, Philip E. and Murray, Walter and Saunders, Michael A.}, + number = {4}, + pages = {979--1006}, + volume = {12}, + url = {http://epubs.siam.org/doi/10.1137/S1052623499350013}, + isbn = {0036-1445 1095-7200}, + doi = {10.1137/S1052623499350013}, + issn = {1052-6234}, + arxivId = {17444372724}, + keywords = {10, 1137, 49d37, 49j15, 49j20, 49m37, 65f05, 65k05, 90c30, ams subject classifications, doi, large-scale optimization, limited-memory methods, nonlinear inequality constraints, nonlinear programming, quasi-newton methods, quential quadratic programming, s0036144504446096, se-} +} + +@article{Revels_2016, + title = {Forward-Mode Automatic Differentiation in {J}ulia}, + author = {{Revels}, J. and {Lubin}, M. and {Papamarkou}, T.}, + journal = {arXiv:1607.07892 [cs.MS]}, + year = {2016}, + url = {https://arxiv.org/abs/1607.07892} +} + + +@article{pal2024, + title={NonlinearSolve. jl: High-Performance and Robust Solvers for Systems of Nonlinear Equations in Julia}, + author={Pal, Avik and Holtorf, Flemming and Larsson, Axel and Loman, Torkel and Schaefer, Frank and Qu, Qingyu and Edelman, Alan and Rackauckas, Chris and others}, + journal={arXiv preprint arXiv:2403.16341}, + year={2024} +} + + + +@article{Kiesewetter_2023, + abstract = {Advanced Air Mobility (AAM) represents a collaborative vision shared by NASA, regulatory agencies, and global industry leaders, aimed at establishing a robust and reliable air transportation ecosystem, which is expected to facilitate safe and efficient movement of both people and cargo within urban, suburban, and regional environments. This paper presents a holistic review and analysis encompassing various aircraft designs, including different propulsion system designs and architectures (electric, hybrid electric, turboelectric, etc.), for different AAM aircraft applications, and state-of-the-art air traffic management, cybersecurity, and infrastructure strategies. Recent academic and industry literature on these aspects is critically reviewed and summarized, and a compilation of the aircraft models currently in development is also provided. The aircraft designs are categorized into a set of core groups, which include lift + cruise, tilt-wing, tiltrotor, multirotor, and rotorcraft, to analyze the existing literature systematically. For each of these core groups, literature on different propulsion system designs and architectures is reviewed and analyzed. Next, these core groups, including their variations based on propulsion system designs and architectures, are analyzed through a set of evaluation lenses. This provides a comprehensive insight into their respective strengths, weakness, and gaps in design considerations. The identified lenses include range and payload, performance, environmental impact, feasibility, traffic and infrastructure, noise, vehicle safety, and cybersecurity. Finally, directions for future research in AAM aircraft and overall ecosystem development are identified. In general, a more in-depth, quantitative analysis on the various evaluation lenses identified in this study and appropriate consideration to all these evaluation lenses at the design and development stage are highly recommended. This type of holistic approach will drive AAM aircraft designs towards convergence and help build an efficient, affordable, and sustainable AAM ecosystem.}, + author = {Lukas Kiesewetter and Kazi Hassan Shakib and Paramvir Singh and Mizanur Rahman and Bhupendra Khandelwal and Sudarshan Kumar and Krishna Shah}, + date-added = {2024-05-28 09:27:36 -0600}, + date-modified = {2024-05-28 09:28:03 -0600}, + doi = {https://doi.org/10.1016/j.paerosci.2023.100949}, + issn = {0376-0421}, + journal = {Progress in Aerospace Sciences}, + keywords = {Advanced air mobility, Urban air mobility, Aircraft design, Transportation infrastructure, Transportation sustainability, eVTOL}, + pages = {100949}, + title = {A holistic review of the current state of research on aircraft design concepts and consideration for advanced air mobility applications}, + url = {https://www.sciencedirect.com/science/article/pii/S0376042123000659}, + volume = {142}, + year = {2023}, + bdsk-url-1 = {https://www.sciencedirect.com/science/article/pii/S0376042123000659}, + bdsk-url-2 = {https://doi.org/10.1016/j.paerosci.2023.100949}} + + +@misc{Lepage_2021, + title={Alternating cyclic extrapolation methods for optimization algorithms}, + author={Nicolas Lepage-Saucier}, + year={2021}, + eprint={2104.04974}, + archivePrefix={arXiv}, + primaryClass={math.OC} +} + +@article{More_1994, +author = {Mor\'{e}, Jorge J. and Thuente, David J.}, +title = {Line search algorithms with guaranteed sufficient decrease}, +year = {1994}, +issue_date = {Sept. 1994}, +publisher = {Association for Computing Machinery}, +address = {New York, NY, USA}, +volume = {20}, +number = {3}, +issn = {0098-3500}, +url = {https://doi.org/10.1145/192115.192132}, +doi = {10.1145/192115.192132}, +abstract = {The development of software for minimization problems is often based on a line search method. We consider line search methods that satisfy sufficient decrease and curvature conditions, and formulate the problem of determining a point that satisfies these two conditions in terms of finding a point in a set T(μ). We describe a search algorithm for this problem that produces a sequence of iterates that converge to a point in T(μ) and that, except for pathological cases, terminates in a finite number of steps. Numerical results for an implementation of the search algorithm on a set of test functions show that the algorithm terminates within a small number of iterations.}, +journal = {ACM Trans. Math. Softw.}, +month = {sep}, +pages = {286–307}, +numpages = {22}, +keywords = {variable metric algorithms, truncated Newton algorithms, nonlinear optimization, line search algorithms, conjugate gradient algorithms} +} + + +@article{Tachmindji_1958, + abstract = {The potential problem is solved for the circulation distribution of an optimum propeller with finite number of blades when operating in a cylindrical duct. The effects of the duct on both the circulation and the thrust increase have been calculated for specific cases, showing that they become important for propellers operating in a duct having a diameter which approaches the propeller diameter. The effect of the duct increases with decreasing number of blades and with increasing pitch. The percentage increase in thrust which has been computed is additive to the Woodand Harris correction resulting from the contraction of the slipstream.}, + author = {Tachmindji, A. J.}, + date-added = {2024-06-21 12:07:59 -0600}, + date-modified = {2024-06-21 12:07:59 -0600}, + doi = {10.5957/jsr.1958.2.4.23}, + issn = {0022-4502, 1542-0604}, + journal = {Journal of Ship Research}, + language = {en}, + month = dec, + number = {04}, + pages = {23--32}, + title = {Potential {Problem} of the {Optimum} {Propeller} {With} {Finite} {Number} of {Blades}{\ldots}.}, + url = {https://onepetro.org/JSR/article/2/04/23/167223/Potential-Problem-of-the-Optimum-Propeller-With}, + urldate = {2024-06-21}, + volume = {2}, + year = {1958}, + bdsk-url-1 = {https://onepetro.org/JSR/article/2/04/23/167223/Potential-Problem-of-the-Optimum-Propeller-With}, + bdsk-url-2 = {https://doi.org/10.5957/jsr.1958.2.4.23}, + bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhYYm9va21hcmtfEEplZGYtZGV2L1RhY2htaW5kamlfMTk1OFBvdGVudGlhbCBQcm9ibGVtIG9mIHRoZSBPcHRpbXVtIFByb3BlbGxlciBXaXRoLnBkZk8RBPxib29r/AQAAAAABBAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsAwAABQAAAAEBAABVc2VycwAAAAUAAAABAQAAam1laHIAAAAHAAAAAQEAAExpYnJhcnkADAAAAAEBAABDbG91ZFN0b3JhZ2UHAAAAAQEAAEJveC1Cb3gABwAAAAEBAABSZWFkaW5nAAcAAAABAQAAZWRmLWRldgBCAAAAAQEAAFRhY2htaW5kamlfMTk1OFBvdGVudGlhbCBQcm9ibGVtIG9mIHRoZSBPcHRpbXVtIFByb3BlbGxlciBXaXRoLnBkZgAAIAAAAAEGAAAEAAAAFAAAACQAAAA0AAAASAAAAFgAAABoAAAAeAAAAAgAAAAEAwAAZ2cAAAAAAAAIAAAABAMAAAyZAAAAAAAACAAAAAQDAAATmQAAAAAAAAgAAAAEAwAAU1wDAAAAAAAIAAAABAMAAFhcAwAAAAAACAAAAAQDAADnXAMAAAAAAAgAAAAEAwAAbfA1AAAAAAAIAAAABAMAALnBZwEAAAAAIAAAAAEGAADsAAAA/AAAAAwBAAAcAQAALAEAADwBAABMAQAAXAEAAAgAAAAABAAAQcYS/Gl/cYgYAAAAAQIAAAEAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAgAAAAEAwAABgAAAAAAAAAEAAAAAwMAAPUBAAAIAAAAAQkAAGZpbGU6Ly8vDAAAAAEBAABNYWNpbnRvc2ggSEQIAAAABAMAAACgIGh0AAAACAAAAAAEAABBxS6l8QAAACQAAAABAQAAQzNBOTAyODktQkEyNS00MDBCLTk2NzAtMUVGMzhBQUNDOUIwGAAAAAECAACBAAAAAQAAAO8TAAABAAAAAAAAAAAAAAABAAAAAQEAAC8AAAAAAAAAAQUAABoAAAABAQAATlNVUkxEb2N1bWVudElkZW50aWZpZXJLZXkAAAQAAAADAwAA3rgGAC4BAAABAgAAMjZjMzc1NDI0NjA4MzczMjI4NDczMDM2Y2IwODBkY2MxNzg0MTBlNTkwNDVlZTI4YzQxYmRlMDFlZGM5ZDZmNzswMDswMDAwMDAwMDswMDAwMDAwMDswMDAwMDAwMDswMDAwMDAwMDAwMDAwMDIwO2NvbS5hcHBsZS5hcHAtc2FuZGJveC5yZWFkLXdyaXRlOzAxOzAxMDAwMDA0OzAwMDAwMDAwMDE2N2MxYjk7MTI7L3VzZXJzL2ptZWhyL2xpYnJhcnkvY2xvdWRzdG9yYWdlL2JveC1ib3gvcmVhZGluZy9lZGYtZGV2L3RhY2htaW5kamlfMTk1OHBvdGVudGlhbCBwcm9ibGVtIG9mIHRoZSBvcHRpbXVtIHByb3BlbGxlciB3aXRoLnBkZgAAANgAAAD+////AQAAAAAAAAARAAAABBAAAMQAAAAAAAAABRAAAGwBAAAAAAAAEBAAAKQBAAAAAAAAQBAAAJQBAAAAAAAAAiAAAHACAAAAAAAABSAAAOABAAAAAAAAECAAAPABAAAAAAAAESAAACQCAAAAAAAAEiAAAAQCAAAAAAAAEyAAABQCAAAAAAAAICAAAFACAAAAAAAAMCAAAHwCAAAAAAAAAcAAAMQBAAAAAAAAEcAAABQAAAAAAAAAEsAAANQBAAAAAAAAgPAAALQCAAAAAAAAhAIAgKgCAAAAAAAAAAgADQAaACMAcAAAAAAAAAIBAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAVw}} + + + +@techreport{Dyne_1968, + author = {Gilbert Dyne}, + date-added = {2024-06-21 12:34:57 -0600}, + date-modified = {2024-06-21 12:36:32 -0600}, + institution = {Swedish State Ship Building Experimental Tank}, + month = {May}, + number = {63}, + title = {An Experimental Verification of a Design Method for Ducted Propellers}, + year = {1968}, + bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhYYm9va21hcmtfEE9lZGYtZGV2L0R5bmVfMTk2OEFuIEV4cGVyaW1lbnRhbCBWZXJpZmljYXRpb24gb2YgYSBEZXNpZ24gTWV0aG9kIGZvciBEdWN0ZWQucGRmTxEFBGJvb2sEBQAAAAAEEDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPQDAAAFAAAAAQEAAFVzZXJzAAAABQAAAAEBAABqbWVocgAAAAcAAAABAQAATGlicmFyeQAMAAAAAQEAAENsb3VkU3RvcmFnZQcAAAABAQAAQm94LUJveAAHAAAAAQEAAFJlYWRpbmcABwAAAAEBAABlZGYtZGV2AEcAAAABAQAARHluZV8xOTY4QW4gRXhwZXJpbWVudGFsIFZlcmlmaWNhdGlvbiBvZiBhIERlc2lnbiBNZXRob2QgZm9yIER1Y3RlZC5wZGYAIAAAAAEGAAAEAAAAFAAAACQAAAA0AAAASAAAAFgAAABoAAAAeAAAAAgAAAAEAwAAZ2cAAAAAAAAIAAAABAMAAAyZAAAAAAAACAAAAAQDAAATmQAAAAAAAAgAAAAEAwAAU1wDAAAAAAAIAAAABAMAAFhcAwAAAAAACAAAAAQDAADnXAMAAAAAAAgAAAAEAwAAbfA1AAAAAAAIAAAABAMAAF/JZwEAAAAAIAAAAAEGAADwAAAAAAEAABABAAAgAQAAMAEAAEABAABQAQAAYAEAAAgAAAAABAAAQcYS/+bzzOEYAAAAAQIAAAEAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAgAAAAEAwAABgAAAAAAAAAEAAAAAwMAAPUBAAAIAAAAAQkAAGZpbGU6Ly8vDAAAAAEBAABNYWNpbnRvc2ggSEQIAAAABAMAAACgIGh0AAAACAAAAAAEAABBxS6l8QAAACQAAAABAQAAQzNBOTAyODktQkEyNS00MDBCLTk2NzAtMUVGMzhBQUNDOUIwGAAAAAECAACBAAAAAQAAAO8TAAABAAAAAAAAAAAAAAABAAAAAQEAAC8AAAAAAAAAAQUAABoAAAABAQAATlNVUkxEb2N1bWVudElkZW50aWZpZXJLZXkAAAQAAAADAwAA4LgGADMBAAABAgAANGRkYzU4YjFkY2NmNGUzYWNmNDMyODNiNzgwNmVkZTg4NDY5YmYyYjFkM2Q4ZDBlNDJmZjA5ZTU2NmRlOWZkMTswMDswMDAwMDAwMDswMDAwMDAwMDswMDAwMDAwMDswMDAwMDAwMDAwMDAwMDIwO2NvbS5hcHBsZS5hcHAtc2FuZGJveC5yZWFkLXdyaXRlOzAxOzAxMDAwMDA0OzAwMDAwMDAwMDE2N2M5NWY7MTI7L3VzZXJzL2ptZWhyL2xpYnJhcnkvY2xvdWRzdG9yYWdlL2JveC1ib3gvcmVhZGluZy9lZGYtZGV2L2R5bmVfMTk2OGFuIGV4cGVyaW1lbnRhbCB2ZXJpZmljYXRpb24gb2YgYSBkZXNpZ24gbWV0aG9kIGZvciBkdWN0ZWQucGRmAADYAAAA/v///wEAAAAAAAAAEQAAAAQQAADIAAAAAAAAAAUQAABwAQAAAAAAABAQAACoAQAAAAAAAEAQAACYAQAAAAAAAAIgAAB0AgAAAAAAAAUgAADkAQAAAAAAABAgAAD0AQAAAAAAABEgAAAoAgAAAAAAABIgAAAIAgAAAAAAABMgAAAYAgAAAAAAACAgAABUAgAAAAAAADAgAACAAgAAAAAAAAHAAADIAQAAAAAAABHAAAAUAAAAAAAAABLAAADYAQAAAAAAAIDwAAC4AgAAAAAAAIgCAICsAgAAAAAAAAAIAA0AGgAjAHUAAAAAAAACAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAFfQ==}} + + +@techreport{Ordway_1960, + date-added = {2024-06-21 12:42:55 -0600}, + date-modified = {2024-06-21 12:44:05 -0600}, + institution = {D.E. Ordway, M.M. Sluyter, B.O.U. Sonnerup}, + month = {August}, + number = {602}, + title = {Three-Dimensional Theory of Ducted Propellers}, + year = {1960}} + +@phdthesis{Campos_1983, + author = {J.A.C. Falc{\~a}o de Campos}, + date-added = {2024-06-21 13:01:49 -0600}, + date-modified = {2024-06-21 13:04:02 -0600}, + month = {June}, + school = {Technische Universiteit Delft}, + title = {On the Calculation of Ducted Propeller Performance in Axisymmetric Flows}, + year = {1983}, + bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhYYm9va21hcmtfEFllZGYtZGV2L0NhbXBvc18xOTgzT24gdGhlIENhbGN1bGF0aW9uIG9mIER1Y3RlZCBQcm9wZWxsZXIgUGVyZm9ybWFuY2UgaW4gQXhpc3ltbWV0cmljLnBkZk8RBRxib29rHAUAAAAABBAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBAAABQAAAAEBAABVc2VycwAAAAUAAAABAQAAam1laHIAAAAHAAAAAQEAAExpYnJhcnkADAAAAAEBAABDbG91ZFN0b3JhZ2UHAAAAAQEAAEJveC1Cb3gABwAAAAEBAABSZWFkaW5nAAcAAAABAQAAZWRmLWRldgBRAAAAAQEAAENhbXBvc18xOTgzT24gdGhlIENhbGN1bGF0aW9uIG9mIER1Y3RlZCBQcm9wZWxsZXIgUGVyZm9ybWFuY2UgaW4gQXhpc3ltbWV0cmljLnBkZgAAACAAAAABBgAABAAAABQAAAAkAAAANAAAAEgAAABYAAAAaAAAAHgAAAAIAAAABAMAAGdnAAAAAAAACAAAAAQDAAAMmQAAAAAAAAgAAAAEAwAAE5kAAAAAAAAIAAAABAMAAFNcAwAAAAAACAAAAAQDAABYXAMAAAAAAAgAAAAEAwAA51wDAAAAAAAIAAAABAMAAG3wNQAAAAAACAAAAAQDAAC30WcBAAAAACAAAAABBgAA/AAAAAwBAAAcAQAALAEAADwBAABMAQAAXAEAAGwBAAAIAAAAAAQAAEHGEwMWZYsdGAAAAAECAAABAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAIAAAABAMAAAYAAAAAAAAABAAAAAMDAAD1AQAACAAAAAEJAABmaWxlOi8vLwwAAAABAQAATWFjaW50b3NoIEhECAAAAAQDAAAAoCBodAAAAAgAAAAABAAAQcUupfEAAAAkAAAAAQEAAEMzQTkwMjg5LUJBMjUtNDAwQi05NjcwLTFFRjM4QUFDQzlCMBgAAAABAgAAgQAAAAEAAADvEwAAAQAAAAAAAAAAAAAAAQAAAAEBAAAvAAAAAAAAAAEFAAAaAAAAAQEAAE5TVVJMRG9jdW1lbnRJZGVudGlmaWVyS2V5AAAEAAAAAwMAAAa5BgA9AQAAAQIAADE1ZTdjYWQyMzBjZmJhNzZkOTgyMTE4OWViMDRmNGY0MWU5NTFhYzczMTJiN2FjZmE1YmNmODJhNzczZDkxNTk7MDA7MDAwMDAwMDA7MDAwMDAwMDA7MDAwMDAwMDA7MDAwMDAwMDAwMDAwMDAyMDtjb20uYXBwbGUuYXBwLXNhbmRib3gucmVhZC13cml0ZTswMTswMTAwMDAwNDswMDAwMDAwMDAxNjdkMWI3OzEyOy91c2Vycy9qbWVoci9saWJyYXJ5L2Nsb3Vkc3RvcmFnZS9ib3gtYm94L3JlYWRpbmcvZWRmLWRldi9jYW1wb3NfMTk4M29uIHRoZSBjYWxjdWxhdGlvbiBvZiBkdWN0ZWQgcHJvcGVsbGVyIHBlcmZvcm1hbmNlIGluIGF4aXN5bW1ldHJpYy5wZGYAAAAA2AAAAP7///8BAAAAAAAAABEAAAAEEAAA1AAAAAAAAAAFEAAAfAEAAAAAAAAQEAAAtAEAAAAAAABAEAAApAEAAAAAAAACIAAAgAIAAAAAAAAFIAAA8AEAAAAAAAAQIAAAAAIAAAAAAAARIAAANAIAAAAAAAASIAAAFAIAAAAAAAATIAAAJAIAAAAAAAAgIAAAYAIAAAAAAAAwIAAAjAIAAAAAAAABwAAA1AEAAAAAAAARwAAAFAAAAAAAAAASwAAA5AEAAAAAAACA8AAAxAIAAAAAAACUAgCAuAIAAAAAAAAACAANABoAIwB/AAAAAAAAAgEAAAAAAAAABQAAAAAAAAAAAAAAAAAABZ8=}} + diff --git a/v0.5.0/DuctAPE/theory_latex/separationofsingularity.tex b/v0.5.0/DuctAPE/theory_latex/separationofsingularity.tex new file mode 100644 index 00000000..526832ce --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/separationofsingularity.tex @@ -0,0 +1,504 @@ +\section{Detailed Derivation of Singular Portions of the Panel Surface Integral and Their Analytic Solutions} +\label{app:separationofsingularity} + +\subsection{Unit Axial Velocity Induced by a Vortex Ring} + +We start with the expression for the axial induced velocity from \cref{eqn:ringvortexinducedvelocity}. + +\begin{equation} + v_{z} = \frac{1}{2 \pi r_o} \frac{1}{D_1} \left[ \mathcal{K}(m) - \left( 1 + \frac{2(\rho-1)}{D_2} \right) \mathcal{E}(m) \right] + \tag{\ref{eqn:ringvortexinducedvelocityaxial}} +\end{equation} + +\where \(\mathcal{K}(m)\) and \(\mathcal{E}(m)\) are complete elliptic integrals of the first and second kind, respectively, and + +\[ + \begin{aligned} + m &= \left( \frac{4\rho}{\xi^2 + (\rho+1)^2} \right) \\% = k^2 = \sin^2(\phi)\\ + \xi &= \frac{z - z_o}{r_o} \\ + \rho &= \frac{r}{r_o} \\ + D_1 &= \left[\xi^2 + (\rho+1)^2\right]^{1/2} \\ + D_2 &= \xi^2 + (\rho - 1)^2. + \end{aligned} +\] + +\noindent Expaning everything out we can begin to see where the singular portions of the integral over the panel lie: + +\begin{equation} + \begin{split} + v_{z}^\gamma =&\int_{(z_{1},r_{1})}^{(z_{2},r_{2})} +% + \left[ + % + \frac{\int_0^{1}\frac{1}{ + \left[1-\left(\frac{4\frac{r}{r_o}}{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2}\right)\sin^2\theta\right]^{1/2} + }d\theta} + {2\pi r_o \left[\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2 \right]^{1/2}} \right. \\ + % + &- + % + \frac{\int_0^{\pi/2}\left[1-\left(\frac{4\frac{r}{r_o}}{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2}\right)\sin^2\theta\right]^{1/2}d\theta}{2\pi r_o \left[\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2 \right]^{1/2}} \\ + % + &- + \left. \frac{\int_0^{\pi/2}\left[1-\left(\frac{4\frac{r}{r_o}}{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2}\right)\sin^2\theta\right]^{1/2}d\theta}{2\pi r_o \left[\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2 \right]^{1/2}} + % + \left(\frac{2 \left(\frac{r}{r_o}-1\right)}{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}-1\right)^2}\right) \right] ds. + \end{split} +\end{equation} + + +Let's plug in \(z_o = z\) and \(r_o = r\) and simplify to show more explicitly where the singularities in the integrand lie + +\begin{equation} + \begin{aligned} +& + \frac{\int_0^{\pi/2}\frac{1}{\left[1-\left(\frac{4}{\left(0\right)^2 + \left(1+1\right)^2}\right)\sin^2\theta\right]^{1/2}}d\theta} + {2\pi r_o \left[\left(0\right)^2 + \left(1+1\right)^2 \right]^{1/2}} &&\text{(Term 1)} \\ +&- + \frac{\int_0^{\pi/2}\left[1-\left(\frac{4}{\left(0\right)^2 + \left(1+1\right)^2}\right)\sin^2\theta\right]^{1/2}d\theta}{2\pi r_o \left[\left(0\right)^2 + \left(1+1\right)^2 \right]^{1/2}} &&\text{(Term 2)}\\ +&- + \frac{\int_0^{\pi/2}\left[1-\left(\frac{4}{\left(0\right)^2 + \left(1+1\right)^2}\right)\sin^2\theta\right]^{1/2}d\theta}{2\pi r_o \left[\left(0\right)^2 + \left(1+1\right)^2 \right]^{1/2}} + % + \left(\frac{2 \left(1 - 1\right)}{\left(0\right)^2 + \left(1-1\right)^2}\right). && \text{(Term 3)} +\end{aligned} +\end{equation} + +\noindent We first note that the elliptic integral of the second kind (in Terms 1 and 3) goes to 1, so we can simplify to + +\begin{equation} + \underbrace{\frac{\int_0^{\pi/2}\frac{1}{\left[1-\sin^2\theta\right]^{1/2}}d\theta}{4\pi r_o}}_{\text{Term 1}} - + % + \underbrace{\frac{1}{4\pi r_o}}_{\text{Term 2}} - + % + \underbrace{\frac{1}{4\pi r_o} + \left(\frac{0}{0}\right)}_{\text{Term 3}}. +\end{equation} + +\noindent We immediately see that Term 2 is not singular, and therefore we can ignore it going forward. +% +Term 3 on the other hand, is singular. +% +Going back to the full expression for Term 3, we have: + +\begin{equation} +\frac{-1}{2\pi r_o \left[\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2\right]^{1/2}} +% +\left(\frac{2 \left(\frac{r-r_o}{r_o}\right)}{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r-r_o}{r_o}\right)^2}\right). +\end{equation} + +\noindent At the singular point, the outer denominator here isn't singular, so we can simplify it to 2 when \(z=z_o\) and \(r=r_o\); + +\begin{equation} +\frac{-1}{4\pi r_o } +% +\left(\frac{2 \left(\frac{r-r_o}{r_o}\right)}{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r-r_o}{r_o}\right)^2}\right). +\end{equation} + +\noindent We can simplify further by noting that both a 2 and \(r_o^2\) cancel. + +\begin{equation} + \frac{r_o-r}{2\pi\left[\left(z-z_o\right)^2 + \left(r-r_o\right)^2\right] } +\end{equation} + +We will leave Term 3 for now, and go back and address Term 1. +% +For the first term, we need to address the non-convergence of the elliptic integral of the first kind. +% +The asymptotic behavior of the complete elliptic integral of the first kind (\(\mathcal{K}(m)\)) as \(m\) approaches 1---where \[ m = \frac{4\frac{r}{r_o}}{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2} \] +---is well known to be + +\begin{equation} +\mathcal{K}(m) \approx \ln \frac{4}{\sqrt{1-\frac{4\frac{r}{r_o}}{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2}}}. +\end{equation} + +\noindent So the whole singular Term 1 can be approximated as + +\begin{equation} +\frac{1}{4\pi r_o} \ln \frac{4}{\sqrt{1-\frac{4\frac{r}{r_o}}{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2}}}. +\end{equation} + +\noindent We can use logarithm rules to pull out the square root and the 4 for now + +\begin{equation} +\frac{1}{4\pi r_o} \left[\ln(4) - 0.5 \ln\left(1-\frac{4\frac{r}{r_o}}{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2}\right)\right]. +\end{equation} + +\noindent Simplifying inside the second logarithm term + +\begin{equation} +\begin{aligned} +& 1-\frac{4\frac{r}{r_o}}{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2} \\ +% + =& \frac{{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2}-4\frac{r}{r_o}}{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2} && \text{getting a common denominator}\\ +% + =& \frac{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}\right)^2+2\frac{r}{r_o}+1-4\frac{r}{r_o}}{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2} && \text{expanding} \\ +% + =& \frac{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}\right)^2-2\frac{r}{r_o}+1}{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2} && \text{simplifying}\\ +% +=& \frac{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}-1\right)^2}{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2}\\ +% +=& \frac{\left(z-z_o\right)^2 + \left(r-r_o\right)^2}{\left(z-z_o\right)^2 + \left(r+r_o\right)^2}. && \text{canceling common denominators} +\end{aligned} +\end{equation} + +\noindent Plugging this into the full expression gives us + +\begin{equation} +\frac{1}{4\pi r_o} \left[\ln(4) - 0.5 \ln\left(\frac{\left(z-z_o\right)^2 + \left(r-r_o\right)^2}{\left(z-z_o\right)^2 + \left(r+r_o\right)^2}\right)\right]. +\end{equation} + +\noindent Let's now bring the 4 back inside the logarithm (noting the negative out front, so it goes into the denominator now), and resolving the non-singular denominator at \(z_o=z\) and \(r_o=r\), + +\begin{equation} + \begin{aligned} + \frac{1}{4\pi r} \left[ - 0.5 \ln\left(\frac{\left[\left(z-z_o\right)^2 + \left(r-r_o\right)^2\right]}{16\left(0^2 + (2r)^2\right)}\right)\right] \\ + =-\frac{1}{8\pi r} \left[ \ln\left(\frac{\left(z-z_o\right)^2 + \left(r-r_o\right)^2}{64r^2}\right)\right]. + \end{aligned} +\end{equation} + +Now we have both of the singular pieces (Terms 1 and 3) that we need to subtract from the vortex ring induced axial velocity in our subtraction of singularity method. Together they are: + +\begin{equation} +\eqbox{ + \frac{r_o-r}{2\pi\left[\left(z-z_o\right)^2 + \left(r-r_o\right)^2\right] } + % + -\frac{1}{8\pi r} \left[\ln\left(\frac{\left(z-z_o\right)^2 + \left(r-r_o\right)^2}{64r^2}\right)\right]. +} +\end{equation} + + +\subsection{Unit Radial Velocity Induced by a Vortex Ring} + +For the radial component of velocity induced by a vortex ring, we again start with our expression from \cref{eqn:ringvortexinducedvelocity} + +\begin{equation} + v_{r} = -\frac{1}{2 \pi r_o} \frac{\xi/\rho}{D_1} \left[ \mathcal{K}(m) - \left( 1 + \frac{2\rho}{D_2} \right) \mathcal{E}(m) \right], + \tag{\ref{eqn:ringvortexinducedvelocityradial}} +\end{equation} + +\where again, \(\mathcal{K}(m)\) and \(\mathcal{E}(m)\) are complete elliptic integrals of the first and second kind, respectively, and + +\[ + \begin{aligned} + m &= \left( \frac{4\rho}{\xi^2 + (\rho+1)^2} \right) \\% = k^2 = \sin^2(\phi)\\ + \xi &= \frac{z - z_o}{r_o} \\ + \rho &= \frac{r}{r_o} \\ + D_1 &= \left[\xi^2 + (\rho+1)^2\right]^{1/2} \\ + D_2 &= \xi^2 + (\rho - 1)^2. + \end{aligned} +\] + +\noindent Expanding things out as before: + +\begin{equation} +\begin{aligned} + v_{r}^\gamma =& \int_{(z_{1},r_{1})}^{(z_{2},r_{2})} +\left[ +% +\left(\frac{z-z_o}{r_o}\right) \frac{\int_0^{\pi/2}\frac{1}{\left[1-\left(\frac{4\frac{r}{r_o}}{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2}\right)\sin^2\theta\right]^{1/2}}d\theta} +{2\pi r_o \left(\frac{r}{r_o}\right) \left[\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2 \right]^{1/2}} \right. \\ +&- +\left(\frac{z-z_o}{r_o}\right) \frac{\int_0^{\pi/2}\left[1-\left(\frac{4\frac{r}{r_o}}{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2}\right)\sin^2\theta\right]^{1/2}d\theta}{2\pi r_o \left(\frac{r}{r_o}\right) \left[\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2 \right]^{1/2}} \\ +&- +\left. \left(\frac{z-z_o}{r_o}\right) \frac{\int_0^{\pi/2}\left[1-\left(\frac{4\frac{r}{r_o}}{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2}\right)\sin^2\theta\right]^{1/2}d\theta}{2\pi r_o \left(\frac{r}{r_o}\right) \left[\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2 \right]^{1/2}} +% +\left(\frac{2 \left(\frac{r}{r_o}\right)}{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r-r_o}{r_o}\right)^2}\right) \right] ds. +\end{aligned} +\end{equation} + +\noindent Again plugging in \(z=z_o\) and \(r=r_o\) to clearly see the singularities + +\begin{equation} +\begin{aligned} +&\left(\frac{0}{r_o}\right) \frac{\int_0^{\pi/2}\frac{1}{\left[1-\left(\frac{4}{\left(\frac{0}{r_o}\right)^2 + \left(1+1\right)^2}\right)\sin^2\theta\right]^{1/2}}d\theta} +{2\pi r_o \left(1\right) \left[\left(\frac{0}{r_o}\right)^2 + \left(1+1\right)^2 \right]^{1/2}} && \text{Term 1} \\ +&- +\left(\frac{0}{r_o}\right) \frac{\int_0^{\pi/2}\left[1-\left(\frac{4}{\left(\frac{0}{r_o}\right)^2 + \left(1+1\right)^2}\right)\sin^2\theta\right]^{1/2}d\theta}{2\pi r_o \left(1\right) \left[\left(\frac{0}{r_o}\right)^2 + \left(1+1\right)^2 \right]^{1/2}} && \text{Term 2} \\ +&- + \left(\frac{0}{r_o}\right) \frac{\int_0^{\pi/2}\left[1-\left(\frac{4}{\left(\frac{0}{r_o}\right)^2 + \left(1+1\right)^2}\right)\sin^2\theta\right]^{1/2}d\theta}{2\pi r_o \left(1\right) \left[\left(\frac{0}{r_o}\right)^2 + \left(1+1\right)^2 \right]^{1/2}} +% +\left(\frac{2 \left(1\right)}{\left(\frac{0}{r_o}\right)^2 + \left(\frac{0}{r_o}\right)^2}\right). && \text{Term 3} +\end{aligned} +\end{equation} + +\noindent As before, we'll start with the second term and third terms. +% +Again, the elliptic integral of the second kind will go to 1, meaning Term 2 is non-singular. +% +For Term 3, we go back to the original expression and have + +\begin{equation} +\left(\frac{z-z_o}{r_o}\right) \frac{1}{2\pi r_o \left(\frac{r}{r_o}\right) \left[\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2 \right]^{1/2}} +% +\left(\frac{2 \left(\frac{r}{r_o}\right)}{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r-r_o}{r_o}\right)^2}\right) +\end{equation} + +\noindent Here a $r/r_o$ will cancel along with a $r_o^2$; futhermore, the non-singular outer denominator again goes to 2 (which also cancels), so we are left with + +\begin{equation} + \label{eqn:sepsingvrt3} + \frac{z_o-z}{2\pi\left[\left(z-z_o\right)^2 + \left(r-r_o\right)^2\right]} +\end{equation} + +For Term 1, we have from the original expression + +\begin{equation} + \left(\frac{z-z_o}{r_o}\right) \frac{\mathcal{K}(m)} + {2\pi r_o \left(\frac{r}{r_o}\right) \left[\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2 \right]^{1/2}}. +\end{equation} + +\noindent Simplifying the denominator leaves + +\begin{equation} + \frac{z-z_o}{4\pi r_o^2}\mathcal{K}(m). +\end{equation} + +\noindent Applying the asymptotic approximation for \(\mathcal{K}(m)\), + +\begin{equation} +\frac{z-z_o}{4\pi r_o^2}\ln \frac{4}{\sqrt{1-\frac{4\frac{r}{r_o}}{\left(\frac{z-z_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2}}}. +\end{equation} + +\noindent Note that as \(z \rightarrow z_o\) and \(r\rightarrow r_o\) the \(r\) terms actually don't induce any singularity, simplifying out these terms (setting \(r=r_o\)) leaves + +\begin{equation} +\frac{z-z_o}{4\pi r_o^2}\ln \frac{4}{\sqrt{1-\frac{4}{\left(\frac{z-z_o}{r_o}\right)^2 + 4}}}. +\end{equation} + +\noindent Getting a common denominator in the radicand gives + +\begin{equation} + \frac{z-z_o}{4\pi r_o^2}\ln \frac{4}{\sqrt{\frac{\left(\frac{z-z_o}{r_o}\right)^2}{\left(\frac{z-z_o}{r_o}\right)^2 + 4}}}. +\end{equation} + +\noindent Again applying logarithm rules to pull out the radical and 4, then noting that the \(\log(4)\) is non-singular we ignore it going forward, we have + +\begin{equation} + \frac{z-z_o}{8\pi r_o^2}\ln \frac{\left(\frac{z-z_o}{r_o}\right)^2}{\left(\frac{z-z_o}{r_o}\right)^2 + 4}. +\end{equation} + +\noindent Applying logarithm rules again we see + +\begin{equation} +\frac{z-z_o}{8\pi r_o^2}\left(\ln \left(\frac{z-z_o}{r_o}\right)^2 - \ln \left[\left(\frac{z-z_o}{r_o}\right)^2 + 4\right]\right). +\end{equation} + +\noindent At this point (if not already) we can see that this term is analogous to a sum of expressions taking the form \(x \ln(x)\) which is not, in fact, singular. +% +Therefore Term 1 is not singular and we can ignore it. +% +Thus the singular expression which we need to subtract from the radially induced velocity due a vortex ring is simply that from Term 3 (\cref{eqn:sepsingvrt3}): + +\begin{equation} +\eqbox{ + \frac{z-z_o}{2\pi\left[\left(z-z_o\right)^2 + \left(r-r_o\right)^2\right]} +} +\tag{\ref{eqn:sepsingvrt3}} +\end{equation} + + +\subsection{Analytic Solutions of Singular Portions of Integrals to Add Back in} + +Now that we have all the singular parts that are subtracted, we need to take the integrals analytically. +% +We will integrate along the panel lengths, noting that the panel length, \(\Delta s = |\vect{p}_2 - \vect{p}_1|\). +% +Therefore, all of the non-logarithmic terms will cancel in the integral since the distances from the end points to the midpoint is equal, but with opposite sign, from the endpoints. +% +This just leaves the logarithmic terms which we integrate as follows:\sidenote{Note that in the integration step, \(\vect{s}_i-\overline{\vect{p}} = \pm \Delta s\) depending on which side of the panel the subtraction is taking place.} + +% \begin{align} +% &\frac{-1}{8\pi r_o} \int_s\left[ \ln\left(\frac{\Delta s^2}{64r_o^2}\right)\right] ds\\ +% =& +% \frac{-1}{4\pi r_o} \left(\Delta s \ln\frac{\Delta s^2}{\left(8 r_o\right)^2}\right)\\ +% =& +% \frac{\Delta s}{2\pi r_o} \ln\frac{8 r_o}{\Delta s}. +% \end{align} + +\begin{align} +&\frac{-1}{8\pi r} \iint\left[ \ln\left(\frac{(z-z_o)^2 + (r-r_o)^2}{64r^2}\right)\right] \d z_o \d r_o\\ +&= + \frac{-1}{8\pi r} \int_{\vect{p}_1}^{\vect{p}_2}\left[ \ln\left(\frac{|\overline{\vect{p}}-\vect{s}|^2}{64r^2}\right)\right] \d\vect{s} && \text{get in terms of single variable}\\ +=& +\frac{-1}{4\pi r} \int_{\vect{p}_1}^{\vect{p}_2}\left[ \ln\left(\frac{|\overline{\vect{p}}-\vect{s}|}{8r}\right)\right] \d\vect{s} && \text{pull the power of 2 out of the log}\\ +=& +\frac{-1}{4\pi r} \left( \Delta s \ln\frac{\Delta s}{16 r} - \Delta s\right) && \text{integrate}\\ +=& +\frac{1}{4\pi r} \left( \Delta s \ln\frac{16 r}{\Delta s} + \Delta s\right) && \text{cancel a negative}\\ +=& +\frac{\Delta s}{4\pi r} \left( 1 + \ln\frac{16 r}{\Delta s}\right). && \text{gather terms} +\end{align} +%this is close to what DFDC has, except they have a 16 and 2 rather than an 8 in the logrithm numerators. they also do not multiply by the panel length, but perhaps this is because they need to non-dimenionalize this term as they multiply everything by the dimensional panel length later. + + + + + + +\subsection{Unit Axial Velocity Induced by a Source Ring}%\toadd{add in the source ring derivations at some point} + +The unit induced velocity per unit length of the ring sources is + +\begin{subequations} + \label{eqn:ringsourceinducedvelocity} + \begin{align} + \label{eqn:ringsourceinducedvelocityaxial} + v_{z}^\sigma &= \frac{1}{2 \pi r_o}\frac{\xi}{ D_1} \left(\frac{2 }{D_2} \mathcal{E}(m)\right) \\ + \label{eqn:ringsourceinducedvelocityradial} + v_{r}^\sigma &= \frac{1}{2 \pi r_o}\frac{1/\rho}{ D_1} \left[ \mathcal{K}(m) - \left( 1 - \frac{2\rho(\rho-1)}{D_2} \right) \mathcal{E}(m) \right], + \end{align} +\end{subequations} + +\where the superscript, \(\sigma\), indicates a unit source induced velocity. + + +The singular portions of \cref{eqn:ringsourceinducedvelocity} to be subtracted during the numerical integration of a vortex panel influencing itself are + +\begin{subequations} + \label{eqn:ringsourcesingular} + \begin{align} + v_{z_s}^\sigma &= \frac{z-z_o}{2\pi\left[\left(z-z_o\right)^2 + \left(r-r_o\right)^2\right] }, \\ + v_{r_s}^\sigma &= \frac{r-r_o}{2\pi\left[\left(z-z_o\right)^2 + \left(r-r_o\right)^2\right] } + % + -\frac{1}{8\pi r} \left[\ln\left(\frac{\left(z-z_o\right)^2 + \left(r-r_o\right)^2}{r^2}\right)\right]. + \end{align} +\end{subequations} + +\noindent The analytic approximations of these singular portions to be added back in as part of the numerical integration are + +\begin{subequations} + \label{eqn:ringsourceanalytic} + \begin{align} + v_{z_a}^\sigma &= 0.0, \\ + v_{r_a}^\sigma &=\frac{\Delta s}{4\pi r} \left( 1 + \ln\frac{2 r}{\Delta s}\right). + \end{align} +\end{subequations} + + +%Since we've already determined the singular parts we'll encounter here, we won't expand everything out completely. Especially since this induced velocity expression does not include an elliptic integral of the first kind, things will proceed smoothly. + +%$$ +%\begin{equation} +%v_{x_{ij}}^\sigma =\int_{(x_{i_1},r_{i_1})}^{(x_{i_2},r_{i_2})} +%% +%\left[ +%\frac{2\left(\frac{x-x_o}{r_o}\right)E}{2\pi r_o \left[\left(\frac{x-x_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2 \right]^{1/2}\left(\frac{x-x_o}{r_o}\right)^2 + \left(\frac{r-r_o}{r_o}\right)^2} +% \right] ds +% \end{equation} +% $$ + +%Following similar procedures as before, we let $x=x_o$ and $r=r_o$ for non-singular pieces and remember that E goes to 1 in that case, and the $r_o^2$ cancels leaving us with the singular term: + +%$$\frac{x-x_o}{2\pi\left[\left(x-x_o\right)^2 + \left(r-r_o\right)^2\right]} $$ + + + + +%\subsection{Unit Radial Velocity Induced by a Source Ring} +%Once again, let's start from the full, mostly expanded expression for the velocity so we can more clearly see what's goiing on. + +%$$ +%\begin{equation} +%v_{r_{ij}}^\sigma =\int_{(x_{i_1},r_{i_1})}^{(x_{i_2},r_{i_2})} +%% +%\left[ +%% +%\frac{\int_0^{\pi/2}\frac{1}{\left[1-\left(\frac{4\frac{r}{r_o}}{\left(\frac{x-x_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2}\right)\sin^2\theta\right]^{1/2}}d\theta} +%{2\pi r_o \left(\frac{r}{r_o}\right) \left[\left(\frac{x-x_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2 \right]^{1/2}} - +%% +%\frac{\int_0^{\pi/2}\left[1-\left(\frac{4\frac{r}{r_o}}{\left(\frac{x-x_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2}\right)\sin^2\theta\right]^{1/2}d\theta}{2\pi r_o \left(\frac{r}{r_o}\right) \left[\left(\frac{x-x_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2 \right]^{1/2}} +%% +%\left(1-\frac{2 \left[\left(\frac{r}{r_o}\right)^2-\left(\frac{r}{r_o}\right)\right]}{\left(\frac{x-x_o}{r_o}\right)^2 + \left(\frac{r-r_o}{r_o}\right)^2}\right) \right] ds +%\end{equation} +%$$ + + +%proceeding as before, we let $x=x_o$ and $r=r_o$ to help identify the sigularities + + +%$$ +%\frac{\int_0^{\pi/2}\frac{1}{\left[1-\sin^2\theta\right]^{1/2}}d\theta} +%{4\pi r_o } - +%% +%\frac{1}{4\pi r_o } +%% +%\left(1-\frac{0}{ 0}\right) +%$$ + +%For the second term, the singular part is + +%$$ +%\frac{1}{2\pi r_o \left(\frac{r}{r_o}\right)} +%% +%\left(\frac{\left(\frac{r}{r_o}\right)^2-\left(\frac{r}{r_o}\right)}{\left(\frac{x-x_o}{r_o}\right)^2 + \left(\frac{r-r_o}{r_o}\right)^2}\right) $$ + +%canceling out an $\frac{r}{r_o}$ and an $r_o^2$ + +%$$ +%\frac{1}{2\pi} +%% +%\left(\frac{r-r_o}{\left(x-x_o\right)^2 + \left(r-r_o\right)^2}\right) $$ + +%Now going back to the first singular term, and using the same asypmtotic approximation as before for the elliptic integral of the first kind: + +%$$ +%\frac{1}{4\pi r_o \left(\frac{r}{r_o}\right)} \ln \frac{4}{\sqrt{1-\frac{4\frac{r}{r_o}}{\left(\frac{x-x_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2}}} +%$$ + +%using logrithm rules to pull out the square root and the 4 for now + +%$$ +%\frac{1}{4\pi r_o\left(\frac{r}{r_o}\right)} \left[\ln(4) - 0.5 \ln\left(1-\frac{4\frac{r}{r_o}}{\left(\frac{x-x_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2}\right)\right] +%$$ + +%simplifying inside the second logrithm + +%$$ +%\begin{aligned} +%& 1-\frac{4\frac{r}{r_o}}{\left(\frac{x-x_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2} \\ +%% +%=& \frac{{\left(\frac{x-x_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2}-4\frac{r}{r_o}}{\left(\frac{x-x_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2}\\ +%% +%=& \frac{\left(\frac{x-x_o}{r_o}\right)^2 + \left(\frac{r}{r_o}\right)^2+2\frac{r}{r_o}+1-4\frac{r}{r_o}}{\left(\frac{x-x_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2}\\ +%% +%=& \frac{\left(\frac{x-x_o}{r_o}\right)^2 + \left(\frac{r}{r_o}\right)^2-2\frac{r}{r_o}+1}{\left(\frac{x-x_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2}\\ +%% +%=& \frac{\left(\frac{x-x_o}{r_o}\right)^2 + \left(\frac{r}{r_o}-1\right)^2}{\left(\frac{x-x_o}{r_o}\right)^2 + \left(\frac{r}{r_o}+1\right)^2}\\ +%% +%=& \frac{\left(x-x_o\right)^2 + \left(r-r_o\right)^2}{\left(x-x_o\right)^2 + \left(r+r_o\right)^2} +%\end{aligned} +%$$ + +%plugging this into the full expression + +%$$ +%\frac{1}{4\pi r_o\left(\frac{r}{r_o}\right)} \left[\ln(4) - 0.5 \ln\left(\frac{\left(x-x_o\right)^2 + \left(r-r_o\right)^2}{\left(x-x_o\right)^2 + \left(r+r_o\right)^2}\right)\right] +%$$ + +%bringing the 4 back in, and resolving the non-singular denominator at $x=x_o$ and $r=r_o$ + +%$$ +%\frac{1}{4\pi r_o\left(\frac{r}{r_o}\right)} \left[ - 0.5 \ln\left(\frac{\left[\left(x-x_o\right)^2 + \left(r-r_o\right)^2\right]}{16\left(4r_o^2\right)}\right)\right] +%$$ + +%$$ +%\frac{1}{4\pi r_o\left(\frac{r}{r_o}\right)} \left[ - 0.5 \ln\left(\frac{\left(x-x_o\right)^2 + \left(r-r_o\right)^2}{64r_o^2}\right)\right] +%$$ + +%and the outside denominator fraction is non-singular with $r/r_o = 1$ + +%$$ +%\frac{1}{4\pi r_o} \left[ - 0.5 \ln\left(\frac{\left(x-x_o\right)^2 + \left(r-r_o\right)^2}{64r_o^2}\right)\right] +%$$ + +%so all together we have: + +%$$ +%\frac{1}{2\pi} +%% +%\left(\frac{r-r_o}{\left(x-x_o\right)^2 + \left(r-r_o\right)^2}\right) +%% +%-\frac{1}{4\pi r_o} \left[ 0.5 \ln\left(\frac{\left(x-x_o\right)^2 + \left(r-r_o\right)^2}{64r_o^2}\right)\right] +%$$ + + diff --git a/v0.5.0/DuctAPE/theory_latex/theory.pdf b/v0.5.0/DuctAPE/theory_latex/theory.pdf new file mode 100644 index 00000000..e843fa9b Binary files /dev/null and b/v0.5.0/DuctAPE/theory_latex/theory.pdf differ diff --git a/v0.5.0/DuctAPE/theory_latex/theory.tex b/v0.5.0/DuctAPE/theory_latex/theory.tex new file mode 100644 index 00000000..5527fdae --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/theory.tex @@ -0,0 +1,77 @@ +\documentclass[fancy,phd]{byuthesis} + +% -------- Custom Commands ------------- +\input{customcommands} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Define Title Page Elements % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Your name goes here: +\author{Judd A. Mehr} + +% Include any keywords you would like for your thesis/dissertation +\keywords{} + +% Read in bibliography files here +\bibliography{ref.bib} +%%%%%%%%%%%%%%%%%%%%%%%%%% +% --- Begin Document --- % +%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{document} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% --- Front Matter (Probably Don't Need to Touch)--- % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % \frontmatter + +% \titlepage +% \clearpage +% +% \customtitlepage +% \clearpage +%% +%% TODO: just make a custom title page in photoshop or something. +%% \includepdf[pages=-]{custom_title.pdf} +%% +% \input{frontmatter/abstract} +% \clearpage +%% +% \input{frontmatter/dedication} +% \clearpage +%% +% \input{frontmatter/acknowledgments} +% \clearpage +%% +% \input{frontmatter/epigraph} +% \clearpage +%% +% \tableofcontents* +% \clearpage +%% +% \listoffigures +% \clearpage +%% +%\listoftables +%\clearpage +%% +%\input{frontmatter/nomenclature} +%\clearpage +%% + +%%%%%%%%%%%%%%%%%%%%% +% --- Main Body --- % +%%%%%%%%%%%%%%%%%%%%% +\mainmatter + +\input{ductape} + +%%%%%%%%%%%%%%%%%%%%%% +% --- Appendices --- % +%%%%%%%%%%%%%%%%%%%%%% +% \input{parts/appendices} + +%%%%%%%%%%%%%%% +% --- End --- % +%%%%%%%%%%%%%%% +\end{document} diff --git a/v0.5.0/DuctAPE/theory_latex/vortexringinducedvelocity.tex b/v0.5.0/DuctAPE/theory_latex/vortexringinducedvelocity.tex new file mode 100644 index 00000000..de26475f --- /dev/null +++ b/v0.5.0/DuctAPE/theory_latex/vortexringinducedvelocity.tex @@ -0,0 +1,737 @@ +\section{Detailed derivation of vortex ring induced velocity} +\label{app:ringvortexinducedvelocities} + +As mentioned at the end of \cref{ssec:ringvortices}, in this section we go through the somewhat tedious algebra required to take the partial derivatives of the vector potential in order to obtain the induced velocity from a vortex ring. +% +We begin with the terms remaining in \cref{ssec:ringvortices}: + +\begin{align} + v_r &= -\pd{\psi_\theta}{z}, \\ + v_z &= \frac{1}{r}\pd{(r\psi_\theta)}{r}. +\end{align} + +Now we need to take these partial derivatives to arrive at our final expressions of induced velocity. +% +Because our current vector potential expressions are in terms of \(m\) and normalized values, we will require the application of the chain rule. +% +Therefore it will be important to have the expressions for the various partial derivatives along the way. +% +The derivative of the elliptic integral of the first kind with respect to \(m\) is + +\begin{equation} + \label{eqn:dkdm} + \pd{\mathcal{K}(m)}{m} = \frac{\mathcal{E}(m)}{2m(1-m)} - \frac{\mathcal{K}(m)}{2m}. +\end{equation} + +\noindent The derivative of the elliptic integral of the second kind is + +\begin{equation} + \label{eqn:dkdm2} + \pd{\mathcal{E}(m)}{m} = \frac{\mathcal{E}(m)}{2m} - \frac{\mathcal{K}(m)}{2m}. +\end{equation} + +\noindent The partial of \(m\) with respect to \(\xi\) is + +\begin{equation} + \pd{m}{\xi} = - \frac{8 \rho \xi }{\left((\rho+1)^2+\xi^2\right)^2}. +\end{equation} + +\noindent The partial of \(\xi\) with respect to \(z\) is + +\begin{equation} + \pd{\xi}{z} = \frac{1}{r_o}. +\end{equation} + + +\noindent The partial of \(m\) with respect to \(\rho\) is + +\begin{equation} + \pd{m}{\rho} = \frac{4\left(-\rho^2 + \xi^2 + 1\right)}{\left((\rho +1)^2 + \xi^2 \right)^2}. +\end{equation} + +\noindent The partial of \(\rho\) with respect to \(r\) is + +\begin{equation} + \pd{\rho}{r} = \frac{1}{r_o}. +\end{equation} + +Though simple to write symbolically, the overall derivatives become very cumbersome. +% +To keep things manageable, let us separate out the expression for \(\psi_\theta\) into the constant (\(\mathcal{C}\)), numerator (\(\mathcal{N}\)), and denominator (\(\mathcal{D}\)) portions, respectively: + +\begin{equation} + \label{eqn:cnd} +\begin{aligned} + \mathcal{\mathcal{C}} &= -\frac{\Gamma}{\pi } \\ + \mathcal{\mathcal{N}} &= \frac{2}{m}\mathcal{E}(m) - \frac{2}{m}\mathcal{K}(m) + \mathcal{K}(m) \\ + \mathcal{\mathcal{D}} &= \left[(\rho+1)^2+\xi^2\right]^{1/2}. +\end{aligned} +\end{equation} + +\noindent The partial of the numerator with respect to \(z\) is + +\begin{equation} + \begin{split} + \pd{\mathcal{N}}{z} =& -\pd{m}{\xi}\pd{\xi}{z} \bigg[ \frac{\mathcal{K}(m)+\mathcal{E}(m)}{m^2}\\ + &- \frac{3\mathcal{K}(m)(m-1)+\mathcal{E}(m)}{m^2(m-1)}\\ + &+ \frac{\mathcal{K}(m)(m-1)+\mathcal{E}(m)}{2m(m-1)} \bigg]. + \end{split} +\end{equation} + +\noindent The partial of the denominator with respect to \(z\) is + +\begin{equation} + \pd{\mathcal{D}}{z} = \pd{\xi}{z} \frac{\xi}{\mathcal{D}} = \frac{\xi}{r_o\mathcal{D}}. +\end{equation} + +\noindent The partial of the numerator with respect to \(r\) is + +\begin{equation} + \begin{split} + \pd{\mathcal{N}}{r} =& \pd{m}{\rho}\pd{\rho}{r} \bigg[ -\frac{3\mathcal{E}(m) + (m-5)\mathcal{K}(m)}{2m(m-1)} \\ + &+ \frac{2\mathcal{E}(m) - 2\mathcal{K}(m)}{m^2(m-1)} \bigg]\\ + \end{split} +\end{equation} + +\noindent The partial of the denominator with respect to \(r\) is + +\begin{equation} + \pd{\mathcal{D}}{r} = \pd{\rho}{r}\frac{\rho+1}{\mathcal{D}} = \frac{\rho+1}{r_o\mathcal{D}}. +\end{equation} + +\noindent Putting things together for \(v_r\) with the quotient rule gives + +\begin{equation} + \label{eqn:vrlong} + v_r = -\pd{\psi_\theta}{z} = -\mathcal{C}\frac{\pd{\mathcal{N}}{z}\mathcal{D} - \mathcal{N}\pd{\mathcal{D}}{z}}{\mathcal{D}^2}. +\end{equation} + +\noindent Putting things together for \(v_z\) we start with the quotient rule, then apply the product rule to arrive at + +\begin{equation} + \label{eqn:vzlong} + \begin{aligned} + v_z =& \frac{1}{r}\pd{(r\psi_\theta)}{r} \\ + =& \frac{\mathcal{C}}{r}\frac{\pd{(\mathcal{N}r)}{r}\mathcal{D} - (\mathcal{N}r)\pd{\mathcal{D}}{r}}{\mathcal{D}^2} \\ + =& \mathcal{C}\frac{\left(\mathcal{N} + r\pd{\mathcal{N}}{r}\right)\mathcal{D} - (\mathcal{N}r)\pd{\mathcal{D}}{r}}{r\mathcal{D}^2}. +\end{aligned} +\end{equation} + +\subsubsection{Radially Induced Velocity Component} + +Now let's see what we can do about simplifying these expressions. +% +We'll start with \cref{eqn:vrlong}. +% +To get started, we'll split up the fraction, and expand out the partial of \(\mathcal{D}\), + +\begin{equation} + \label{eqn:vr2} + v_r = -C \left[ \underbrace{\frac{\pd{\mathcal{N}}{z}}{\mathcal{D}}}_\text{Term 1} + -\underbrace{\frac{\mathcal{N}\xi}{r_oD^3}}_\text{Term 2}\right] +\end{equation} + +\noindent We are going to look at each term in the brackets of \cref{eqn:vr2} separately first, then bring them together. +% +We'll start with Term 2. +% +Expanding gives + +\begin{equation} + \label{eqn:vrt2.1} + \frac{N\xi}{r_oD^3} = \frac{\xi}{r_oD^3} \left[\frac{2}{m}\mathcal{E}(m) + \left(1-\frac{2}{m}\right)\mathcal{K}(m)\right] +\end{equation} + +\noindent Let us address the \(m\)'s in the denominators by realizing that a comparison of \cref{eqn:mdef,eqn:cnd} indicates that + +\begin{equation} + \mathcal{D}^2 = \frac{4\rho}{m}. +\end{equation} + +\noindent Making this replacement in \cref{eqn:vrt2.1} gives + +\begin{equation} + \label{eqn:term2simple} + \begin{aligned} + \frac{N\xi}{r_oD^3} &= \frac{\xi \cancel{m}}{4\rho r_o D} \left[ \frac{2}{\cancel{m}}\mathcal{E}(m) + \left(\cancelto{m}{1} - \frac{2}{\cancel{m}} \right)\mathcal{K}(m) \right] \\ + &= \frac{\xi/\rho }{4 r_o D} \left[ 2\mathcal{E}(m) + \left(m - 2 \right)\mathcal{K}(m) \right] + \end{aligned} +\end{equation} + +Now let's look at Term 1 from \cref{eqn:vrlong}. +% +Expanding out gives + +\begin{equation} + \begin{split} + \frac{\pd{\mathcal{N}}{z}}{\mathcal{D}} =& \frac{8\rho \xi}{r_o D \left((\rho+1)^2 + \xi^2\right)^2} \bigg[ \frac{\mathcal{K}(m)+\mathcal{E}(m)}{m^2}\\ + &- \frac{3\mathcal{K}(m)(m-1)+\mathcal{E}(m)}{m^2(m-1)}\\ + &+ \frac{\mathcal{K}(m)(m-1)+\mathcal{E}(m)}{2m(m-1)} \bigg]. + \end{split} +\end{equation} + +\noindent We can see right away that part of the fraction outside of the brackets closely resembles the parameter \(m^2\), all we're missing is \(2\rho\) in the numerator, so we'll multiply and divide by \(2 \rho\). + +\begin{equation} + \begin{split} + \frac{\pd{\mathcal{N}}{z}}{\mathcal{D}} =& \frac{(2\rho)8\rho \xi}{2\rho r_o D \left((\rho+1)^2 + \xi^2\right)^2} \bigg[ \frac{\mathcal{K}(m)+\mathcal{E}(m)}{m^2}\\ + &- \frac{3\mathcal{K}(m)(m-1)+\mathcal{E}(m)}{m^2(m-1)}\\ + &+ \frac{\mathcal{K}(m)(m-1)+\mathcal{E}(m)}{2m(m-1)} \bigg]. + \end{split} +\end{equation} + +\noindent which allows us to remove some of the \(m^2\) denominators inside the brackets + +\begin{equation} + \begin{split} + \frac{\pd{\mathcal{N}}{z}}{\mathcal{D}} =& \frac{\xi\cancel{m^2}}{2\rho r_o D} \bigg[ \frac{\mathcal{K}(m)+\mathcal{E}(m)}{\cancel{m^2}}\\ + &- \frac{3\mathcal{K}(m)(m-1)+\mathcal{E}(m)}{\cancel{m^2}(m-1)}\\ + &+ \frac{m(\mathcal{K}(m)(m-1)+\mathcal{E}(m))}{2\cancel{m}(m-1)} \bigg]. + \end{split} +\end{equation} + +\begin{equation} + \begin{split} + \frac{\pd{\mathcal{N}}{z}}{\mathcal{D}} =& \frac{\xi/\rho}{2r_o D} \bigg[ \mathcal{K}(m)+\mathcal{E}(m)\\ + &- \frac{3\mathcal{K}(m)(m-1)+\mathcal{E}(m)}{m-1}\\ + &+ \frac{m(\mathcal{K}(m)(m-1)+\mathcal{E}(m))}{2(m-1)} \bigg]. + \end{split} +\end{equation} + +\noindent Splitting up the fractions inside the brackets will let us simplify further. + +\begin{equation} + \begin{split} + \frac{\pd{\mathcal{N}}{z}}{\mathcal{D}} =& \frac{\xi/\rho}{2r_o D} \bigg[ \mathcal{K}(m)+\mathcal{E}(m)\\ + &- \frac{3\mathcal{K}(m)\cancel{(m-1)}}{\cancel{m-1}} - \frac{\mathcal{E}(m)}{m-1}\\ + &+ \frac{m\mathcal{K}(m)\cancel{(m-1)}}{2\cancel{(m-1)}} + \frac{m\mathcal{E}(m)}{2(m-1)} \bigg]. +\end{split} +\end{equation} + +\begin{equation} + \begin{split} + \frac{\pd{\mathcal{N}}{z}}{\mathcal{D}} =& \frac{\xi/\rho}{2r_o D} \bigg[ \mathcal{K}(m)+\mathcal{E}(m) - 3\mathcal{K}(m) - \frac{1}{m-1}\mathcal{E}(m)\\ + &+ \frac{m}{2}\mathcal{K}(m) + \frac{m}{2(m-1)} \mathcal{E}(m) \bigg]. +\end{split} +\end{equation} + +\noindent Grouping like terms + +\begin{equation} + \begin{split} + \frac{\pd{\mathcal{N}}{z}}{\mathcal{D}} =& \frac{\xi/\rho}{2r_o D} \bigg[ \left(1- \frac{1}{m-1}+ \frac{m}{2(m-1)} \right)\mathcal{E}(m) \\ + &+ \left(\frac{m}{2}-2\right)\mathcal{K}(m) \bigg]. +\end{split} +\end{equation} + +\noindent Simplifying the gathered terms for \(\mathcal{E}(m)\) + +\begin{equation} + \begin{split} + \frac{\pd{\mathcal{N}}{z}}{\mathcal{D}} =& \frac{\xi/\rho}{2r_o D} \bigg[ \left(\frac{2(m-1)- 2+ m}{2(m-1)} \right)\mathcal{E}(m) \\ + &- \left(\frac{m}{2}-2\right)\mathcal{K}(m) \bigg]. +\end{split} +\end{equation} + +\begin{equation} + \begin{split} + \frac{\pd{\mathcal{N}}{z}}{\mathcal{D}} =& \frac{\xi/\rho}{2r_o D} \bigg[ \left(\frac{3m-4}{2(m-1)} \right)\mathcal{E}(m) \\ + &- \left(\frac{m}{2}-2\right)\mathcal{K}(m) \bigg]. +\end{split} +\end{equation} + +\noindent Multiplying and dividing by 2 + +\begin{equation} + \label{eqn:term1simple} + \frac{\pd{\mathcal{N}}{z}}{\mathcal{D}} = \frac{\xi/\rho}{4 r_o D} \left[ \left(\frac{3m-4}{m-1} \right)\mathcal{E}(m) - (m-4)\mathcal{K}(m) \right]. +\end{equation} + +Noting that the fractions outside of the brackets are now the same for both of the simplified expressions for Term 1 (see \cref{eqn:term1simple}) and Term 2 (see \cref{eqn:term2simple}, we'll substitute the expression for Term 2 in \cref{eqn:term2simple} and the expression for Term 1 in \cref{eqn:term1simple} back in to \cref{eqn:vr2}. +% + +\begin{equation} + \begin{split} +\frac{\pd{\mathcal{N}}{z}\mathcal{D} - \mathcal{N}\pd{\mathcal{D}}{z}}{\mathcal{D}^2} = \frac{\xi/\rho}{4 r_o D} \left[ \left(\frac{3m-4}{m-1} \right)\mathcal{E}(m) - (m-4)\mathcal{K}(m) \right] \\ + - \frac{\xi/\rho }{4 r_o D} \left[ 2\mathcal{E}(m) + \left(m - 2 \right)\mathcal{K}(m) \right]. + \end{split} +\end{equation} + +\noindent Let's first look at just the difference of the \(\mathcal{K}(m)\) terms: + +\begin{equation} + \label{eqn:kterms} + ((m-1) - (m-2))K = (m - 4 - m + 2)\mathcal{K}(m) = -2\mathcal{K}(m) +\end{equation} + +\noindent Now just looking at the \(\mathcal{E}(m)\) terms: + +\begin{equation} + \label{eqn:eterms} + \begin{aligned} + \left(\frac{3m-4}{m-1} - 2\right)\mathcal{E}(m) \\ + \left(\frac{3m-4-2(m-1)}{m-1} \right)\mathcal{E}(m) && \text{(common denominators)} \\ + \left(\frac{3m-4-2m+2}{m-1} \right)\mathcal{E}(m) && \text{(expand)} \\ + \left(\frac{m-2}{m-1} \right)\mathcal{E}(m) && \text{(simplify)} + \end{aligned} +\end{equation} + +\noindent Applying the definition of \(m\) in \cref{eqn:mdef} + +\begin{equation} + \label{eqn:eterms2} + \begin{aligned} + \left(\frac{\frac{4\rho}{\mathcal{D}^2}-2}{\frac{4\rho}{\mathcal{D}^2}-1} \right)\mathcal{E}(m) \\ + \left(\frac{\frac{4\rho-2\mathcal{D}^2}{\cancel{\mathcal{D}^2}}}{\frac{4\rho-\mathcal{D}^2}{\cancel{\mathcal{D}^2}}} \right)\mathcal{E}(m) && \text{(common denominators)}\\ + \left(\frac{4\rho-2\mathcal{D}^2}{4\rho-\mathcal{D}^2} \right)\mathcal{E}(m) && \text{(divide)} \\ + 2\left(\frac{2\rho-\mathcal{D}^2}{4\rho-\mathcal{D}^2} \right)\mathcal{E}(m) && \text{(pull out a 2)} + \end{aligned} +\end{equation} + +\noindent Expanding out the \(\mathcal{D}\) terms + +\begin{equation} + \label{eqn:eterms3} + \begin{aligned} + 2\left(\frac{2\rho-((\rho+1)^2+\xi^2)}{4\rho-((\rho+1)^2+\xi^2)} \right)\mathcal{E}(m) \\ + 2\left(\frac{\cancel{2\rho}-\rho^2-\cancel{2\rho}-1-\xi^2}{\cancelto{2\rho}{4\rho}-\rho^2 - \cancel{2\rho} -1 -\xi^2} \right)\mathcal{E}(m) && \text{(expand and cancel)} \\ + 2\left(\frac{-\rho^2-1-\xi^2}{2\rho-\rho^2 - 1 -\xi^2} \right)\mathcal{E}(m)\\ + -2\left(\frac{-\rho^2-1-\xi^2}{(\rho- 1)^2 +\xi^2} \right)\mathcal{E}(m) && \text{(multiply by -1 and simplify)} \\ + -2\left(\frac{-\rho^2-1-\xi^2 + 2\rho - 2\rho}{(\rho- 1)^2 +\xi^2} \right)\mathcal{E}(m) && \text{(add and subtract }2\rho)\\ + 2\left(\frac{(\rho-1)^2+\xi^2 + 2\rho}{(\rho- 1)^2 +\xi^2} \right)\mathcal{E}(m) && \text{(consolidate numerator)}\\ + 2\left(\cancelto{1}{\frac{(\rho-1)^2+\xi^2 }{(\rho- 1)^2 +\xi^2}} +\frac{ 2\rho}{(\rho- 1)^2 +\xi^2} \right)\mathcal{E}(m) && \text{(split fraction and cancel)} \\ + 2\left(1 + \frac{2\rho}{\xi^2 + (\rho- 1)^2} \right)\mathcal{E}(m) \\ + \end{aligned} +\end{equation} + +\noindent Now putting the \(\mathcal{K}(m)\) terms from \cref{eqn:kterms} and the \(\mathcal{E}(m)\) terms from \cref{eqn:eterms3} together in the difference, remembering the fraction out front of both Term 1 and Term 2: + +\begin{equation} + v_r = -\mathcal{C} \left[\frac{\xi/\rho}{\cancelto{2}{4}\mathcal{D}r_o} \left(-\cancel{2}\mathcal{K}(m)+\cancel{2}\left[1+\frac{2\rho}{\xi^2+(\rho-1)^2}\right]\mathcal{E}(m) \right) \right] +\end{equation} + +\noindent And finally expanding out \(\mathcal{C}\) and \(\mathcal{D}\) as well as some minor cleanup and rearranging we have the expression presented in \cref{eqn:ringvortexinducedvelocityradial}: + +\begin{equation} + \eqbox{ + v_r = -\frac{\Gamma}{2\pi r_o}\frac{\xi/\rho}{[\xi^2+(\rho+1)^2]^{1/2}} \left(\mathcal{K}(m)-\left[1+\frac{2\rho}{\xi^2+(\rho-1)^2}\right]\mathcal{E}(m) \right) +} +\end{equation} + + +\subsubsection{Axially Induced Velocity Component} + +Next let's simplify \cref{eqn:vzlong} + +\begin{equation} +v_z = \mathcal{C}\left[\underbrace{\frac{\mathcal{N}\mathcal{D}}{r\mathcal{D}^2}}_\text{Term 1} + \underbrace{\frac{r\pd{\mathcal{N}}{r}\mathcal{D}}{rD^2}}_\text{Term 2} - \underbrace{\frac{(\mathcal{N}r)\pd{\mathcal{D}}{r}}{r\mathcal{D}^2}}_\text{Term 3}\right]. +\end{equation} + +\noindent We'll first expand the partials. +% +Term 1 has no partials to expand: + +\begin{equation} + \text{Term 1} = \frac{\mathcal{N}\mathcal{D}}{r\mathcal{D}^2}. +\end{equation} + +\noindent Term 2 has several sets of partials to expand: + +\begin{equation} + \begin{split} + \text{Term 2} =& \frac{r\mathcal{D}}{r\mathcal{D}^2} \pd{m}{\rho}\pd{\rho}{r} \bigg[ -\frac{3\mathcal{E}(m) + (m-5)\mathcal{K}(m)}{2m(m-1)} \\ + &+ \frac{2\mathcal{E}(m) - 2\mathcal{K}(m)}{m^2(m-1)} \bigg], + \end{split} +\end{equation} + +\begin{equation} + \begin{split} + \text{Term 2} =& \frac{r\mathcal{D}}{r\mathcal{D}^2} \frac{4(-\rho^2+\xi^2 +1)}{\mathcal{D}^4}\frac{1}{r_o} \bigg[ -\frac{3\mathcal{E}(m) + (m-5)\mathcal{K}(m)}{2m(m-1)} \\ + &+ \frac{2\mathcal{E}(m) - 2\mathcal{K}(m)}{m^2(m-1)} \bigg]. + \end{split} +\end{equation} + +\noindent Term 3 also has a couple sets of partials to expand: + +\begin{equation} + \text{Term 3} = -\frac{\mathcal{N}r}{r\mathcal{D}^2}\pd{\rho}{r}\frac{\rho+1}{\mathcal{D}}, +\end{equation} + +\begin{equation} + \text{Term 3} = -\frac{\mathcal{N}r}{r\mathcal{D}^2}\frac{1}{r_o}\frac{\rho+1}{\mathcal{D}}. +\end{equation} + +Next let's expand out the \(\mathcal{N}\)'s. +% +For Term 1 + +\begin{equation} + \text{Term 1} = \frac{\mathcal{D}}{r\mathcal{D}^2}\left[\frac{2}{m}\mathcal{E}(m) + \frac{m-2}{m}\mathcal{K}(m)\right]. +\end{equation} + +\noindent Term 2 is already expanded, but let us gather the \(\mathcal{E}(m)\) and \(\mathcal{K}(m)\) terms. + +\begin{equation} + \begin{split} + \text{Term 2} = \frac{r\mathcal{D}}{r\mathcal{D}^2} \frac{4(-\rho^2+\xi^2 +1)}{\mathcal{D}^4}\frac{1}{r_o} \bigg[ -&\frac{3m-4}{2m^2(m-1)}\mathcal{E}(m) \\ + &- \frac{(m-4)(m-1)}{2m^2(m-1)}\mathcal{K}(m) \bigg]. + \end{split} +\end{equation} + +\noindent For Term 3: + +\begin{equation} + \text{Term 3} = -\frac{r}{r\mathcal{D}^2}\frac{1}{r_o}\frac{\rho+1}{\mathcal{D}}\left[\frac{2}{m}\mathcal{E}(m) + \frac{m-2}{m}\mathcal{K}(m)\right]. +\end{equation} + +In order to add the terms together, we require a common denominator. +% +Let us gather the multipliers of each of the terms to see what we're working with and decide what common denominator to choose. + +\begin{align} + \text{Term 1 Multiplier} &= \frac{\mathcal{D}}{r\mathcal{D}^2m}; \\ + \text{Term 2 Multiplier} &= \frac{4r\mathcal{D}(-\rho^2+\xi^2+1)}{2rr_o\mathcal{D}^6m^2(m-1)}; \\ + \text{Term 3 Multiplier} &= \frac{r(\rho+1)}{rr_o\mathcal{D}^3m}. +\end{align} + +% +\noindent We may expect our final expression to look similar to the expression for \(v_r\), so we may want to make sure to keep a \(r_oD\) in the denominator as we go forward. +% +Therefore we'll start by multiplying Term 1 by \(r_o/r_o\): + +\begin{align} + \text{Term 1 Multiplier} &= \frac{\mathcal{D}r_o}{rr_o\mathcal{D}^2m}; \\ + \text{Term 2 Multiplier} &= \frac{4r\mathcal{D}(-\rho^2+\xi^2+1)}{2rr_o\mathcal{D}^6m^2(m-1)}; \\ + \text{Term 3 Multiplier} &= \frac{r(\rho+1)}{rr_o\mathcal{D}^3m}. +\end{align} + +\noindent Term 2 seems to have some extraneous values, so let's divide out the 2 and one of the \(\mathcal{D}\)'s, + +\begin{align} + \text{Term 1 Multiplier} &= \frac{\mathcal{D}r_o}{rr_o\mathcal{D}^2m}; \\ + \text{Term 2 Multiplier} &= \frac{2r(-\rho^2+\xi^2+1)}{rr_o\mathcal{D}^5m^2(m-1)}; \\ + \text{Term 3 Multiplier} &= \frac{r(\rho+1)}{rr_o\mathcal{D}^3m}. +\end{align} + +\noindent Now we just need to multiply the top and bottom of Term 1 by \(\mathcal{D}^3m(m-1)\) and the top and bottom of Term 3 by \(\mathcal{D}^2m(m-1)\) to get a common denominator between the terms. + +\begin{align} + \label{eqn:vzt1m} + \text{Term 1 Multiplier} &= \frac{r_o\mathcal{D}^4m(m-1)}{rr_o\mathcal{D}^5m^2(m-1)}; \\ + \label{eqn:vzt2m} + \text{Term 2 Multiplier} &= \frac{2r(-\rho^2+\xi^2+1)}{rr_o\mathcal{D}^5m^2(m-1)}; \\ + \label{eqn:vzt3m} + \text{Term 3 Multiplier} &= \frac{r(\rho+1)\mathcal{D}^2m(m-1)}{rr_o\mathcal{D}^5m^2(m-1)}. +\end{align} + +With a common denominator in place, we can start to add the various terms together. +% +Let us try to begin with the \(\mathcal{K}(m)\) terms: + +\begin{equation} + \begin{aligned} + \frac{\mathcal{K}(m)}{rr_o\mathcal{D}^5m^2(m-1)} \bigg[& r_o\mathcal{D}^4m(m-1)(m-2) && \text{(from Term 1)} \\ + &- 2r(-\rho^2+\xi^2+1)(m-4)(m-1) && \text{(from Term 2)} \\ + &- r(\rho+1)\mathcal{D}^2m(m-1)(m-2) \bigg]. && \text{(from Term 3)} \\ + \end{aligned} +\end{equation} + +\noindent We see immediately that we can cancel out the \((m-1)\) from all the terms. + +\begin{equation} + \begin{aligned} + \frac{\mathcal{K}(m)}{rr_o\mathcal{D}^5m^2} \bigg[& r_o\mathcal{D}^4m(m-2) && \text{(from Term 1)} \\ + &- 2r(-\rho^2+\xi^2+1)(m-4) && \text{(from Term 2)} \\ + &- r(\rho+1)\mathcal{D}^2m(m-2) \bigg]. && \text{(from Term 3)} \\ + \end{aligned} +\end{equation} + +\noindent Unfortunately, that appears to be the only obvious cancellation to make right away. +% +Perhaps expanding things out more will help. +% +Let us expand the \(m\)'s out next, remembering that \(m=4\rho/\mathcal{D}^2\). + +\begin{equation} + \begin{aligned} + \frac{\mathcal{K}(m)\cancel{\mathcal{D}^4}}{rr_o\mathcal{D}^{\cancel{5}} \cancelto{4}{16}\rho^2} \bigg[& r_o\mathcal{D}^{\cancelto{2}{4}}\frac{\cancel{4}\rho}{\cancel{\mathcal{D}^2}}\left(\frac{4\rho}{\mathcal{D}^2}-2\right) && \text{(from Term 1)} \\ + &- 2r(-\rho^2+\xi^2+1)\left(\frac{\cancel{4}\rho}{\mathcal{D}^2}-\cancel{4}\right) && \text{(from Term 2)} \\ + &- r(\rho+1)\cancel{\mathcal{D}^2}\frac{\cancel{4}\rho}{\cancel{\mathcal{D}^2}}\left(\frac{4\rho}{\mathcal{D}^2}-2\right) \bigg]; && \text{(from Term 3)} \\ + \end{aligned} +\end{equation} + +\noindent then canceling out the obvious items and cleaning up: + +\begin{equation} + \begin{aligned} + \frac{\mathcal{K}(m)}{4\rho^2 rr_o\mathcal{D} } \bigg[& \rho r_o\mathcal{D}^2\left(\frac{4\rho}{\mathcal{D}^2}-2\right) && \text{(from Term 1)} \\ + &- 2r(-\rho^2+\xi^2+1)\left(\frac{\rho}{\mathcal{D}^2}-1\right) && \text{(from Term 2)} \\ + &- \rho r(\rho+1)\left(\frac{4\rho}{\mathcal{D}^2}-2\right) \bigg]. && \text{(from Term 3)} \\ + \end{aligned} +\end{equation} + +\noindent We see that \(r_o\rho=r\), which gives us a mutual \(r\) that we can cancel out of all the terms. + +\begin{equation} + \begin{aligned} + \frac{\mathcal{K}(m)}{4\rho^2 r_o\mathcal{D} } \bigg[& \mathcal{D}^2 \left(\frac{4\rho}{\mathcal{D}^2}-2\right) && \text{(from Term 1)} \\ + &- 2(-\rho^2+\xi^2+1)\left(\frac{\rho}{\mathcal{D}^2}-1\right) && \text{(from Term 2)} \\ + &- \rho (\rho+1)\left(\frac{4\rho}{\mathcal{D}^2}-2\right) \bigg]. && \text{(from Term 3)} \\ + \end{aligned} +\end{equation} + +\noindent We also see that we can cancel out an additional 2 from everything. + +\begin{equation} + \begin{aligned} + \frac{\mathcal{K}(m)}{2\mathcal{D}r_o \rho^2} \bigg[& \mathcal{D}^2 \left(\frac{2\rho}{\mathcal{D}^2}-1\right) && \text{(from Term 1)} \\ + &- (-\rho^2+\xi^2+1)\left(\frac{\rho}{\mathcal{D}^2}-1\right) && \text{(from Term 2)} \\ + &- \rho (\rho+1)\left(\frac{2\rho}{\mathcal{D}^2}-1\right) \bigg]. && \text{(from Term 3)} \\ + \end{aligned} +\end{equation} + +We've found ourselves with some more uncommon denominators, so let's expand and gather terms. + +\begin{equation} + \begin{aligned} + \frac{\mathcal{K}(m)}{2\mathcal{D}r_o \rho^2 } \bigg[& 2\rho-\mathcal{D}^2 && \text{(from Term 1)} \\ + &- \frac{-\rho^3+\rho\xi^2+\rho}{\mathcal{D}^2}-\rho^2+\xi^2+1 && \text{(from Term 2)} \\ + &- \frac{2\rho^3 +2\rho^2}{\mathcal{D}^2}+\rho^2 + \rho \bigg]; && \text{(from Term 3)} \\ + \end{aligned} +\end{equation} + +\begin{equation} + \begin{aligned} + \frac{\mathcal{K}(m)}{2\mathcal{D}r_o \rho^2 } \bigg[& 2\rho-\mathcal{D}^2 -\cancel{\rho^2} +\xi^2 +1 +\cancel{\rho^2} + \rho \\ + &- \frac{-\rho^3+\rho\xi^2+\rho}{\mathcal{D}^2} - \frac{2\rho^3 +2\rho^2}{\mathcal{D}^2} \bigg]. + \end{aligned} +\end{equation} + +\noindent Expanding out the \(\mathcal{D}\) in the numerator: + +\begin{equation} + \begin{aligned} + \frac{\mathcal{K}(m)}{2\mathcal{D}r_o \rho^2 } \bigg[& \cancel{3}\rho+\cancel{\xi^2} +\cancel{1} -(\rho^2 +\cancel{2\rho} +\cancel{1} +\cancel{\xi}) \\ + &- \frac{-\rho^3+\rho\xi^2+\rho}{\mathcal{D}^2} - \frac{2\rho^3 +2\rho^2}{\mathcal{D}^2} \bigg]. + \end{aligned} +\end{equation} + +\noindent Now let's get a common denominator again, pulling the \(\rho^2\) inside the brackets. + +\begin{equation} + \frac{\mathcal{K}(m)}{2\mathcal{D}r_o } \left[\frac{\rho\mathcal{D}^2 -\rho^2\mathcal{D}^2 + \cancel{\rho^3}-\rho\xi^2-\rho - \cancel{2}\rho^3 -2\rho^2}{\mathcal{D}^2\rho^2} \right]. +\end{equation} + +\noindent We can immediately cancel out a \(\rho\): + +\begin{equation} + \frac{\mathcal{K}(m)}{2\mathcal{D}r_o } \left[ \frac{\mathcal{D}^2 -(\rho^2 +2\rho +1 +\xi^2)-\rho\mathcal{D}^2}{\mathcal{D}^2\rho} \right]. +\end{equation} + +\noindent We also see that \(\mathcal{D}^2 = \rho^2 + 2\rho +1 +\xi^2\), which cancels in the numerator. + +\begin{equation} + \frac{\mathcal{K}(m)}{2\mathcal{D}r_o } \left[\frac{-\rho\mathcal{D}^2}{\rho\mathcal{D}^2} \right]. +\end{equation} + +\noindent We are finally left with +\begin{equation} + \label{eqn:vzksimple} + -\frac{\mathcal{K}(m)}{2\mathcal{D}r_o }. +\end{equation} + +Now let's look at the \(\mathcal{E}(m)\) terms start back with the term multipliers with common denominators: \cref{eqn:vzt1m,eqn:vzt2m,eqn:vzt3m}. + + +\begin{equation} + \begin{aligned} + \frac{\mathcal{E}(m)}{rr_o\mathcal{D}^5m^2(m-1)} \bigg[& 2r_o\mathcal{D}^4m(m-1) && \text{(from Term 1)} \\ + &- 2r(-\rho^2+\xi^2+1)(3m-4) && \text{(from Term 2)} \\ + &- 2r(\rho+1)\mathcal{D}^2m(m-1) \bigg]. && \text{(from Term 3)} + \end{aligned} +\end{equation} + +\noindent Unlike the \(\mathcal{K}(m)\) terms, it doesn't appear as though anything will cancel out immediately. +% +Let's take a similar approach as before and expand out the \(m\) terms. +% + +\begin{equation} + \begin{aligned} + \frac{\mathcal{E}(m)}{rr_o\mathcal{D}^5m^2(m-1)} \bigg[& 2r_o\mathcal{D}^4\left(\frac{4\rho}{\mathcal{D}^2}\right)\left(\frac{4\rho}{\mathcal{D}^2}\right)-1) && \text{(from Term 1)} \\ + &- 2r(-\rho^2+\xi^2+1)\left(3\left(\frac{4\rho}{\mathcal{D}^2}\right)-4\right) && \text{(from Term 2)} \\ + &- 2r(\rho+1)\mathcal{D}^2\left(\frac{4\rho}{\mathcal{D}^2}\right)\left(\frac{4\rho}{\mathcal{D}^2}\right)-1) \bigg]. && \text{(from Term 3)} + \end{aligned} +\end{equation} + +\noindent Again noting that \(r_o\rho = r\), we can cancel out an \(r\). + +\begin{equation} + \begin{aligned} + \frac{\mathcal{E}(m)}{r_o\mathcal{D}^5m^2(m-1)} \bigg[& 2\mathcal{D}^4\left(\frac{4}{\mathcal{D}^2}\right)\left(\frac{4\rho}{\mathcal{D}^2}\right)-1) && \text{(from Term 1)} \\ + &- 2(-\rho^2+\xi^2+1)\left(3\left(\frac{4\rho}{\mathcal{D}^2}\right)-4\right) && \text{(from Term 2)} \\ + &- 2(\rho+1)\mathcal{D}^2\left(\frac{4\rho}{\mathcal{D}^2}\right)\left(\frac{4\rho}{\mathcal{D}^2}\right)-1) \bigg]. && \text{(from Term 3)} + \end{aligned} +\end{equation} + +\noindent We may also want to expand the \(m^2\) on the outside--- + +\begin{equation} + \frac{1}{r_o\mathcal{D}^5m^2(m-1)} = \frac{\cancel{\mathcal{D}^4}}{r_o\mathcal{D}^{\cancel{5}}16\rho^2(m-1)} +\end{equation} + +\noindent ---which leaves us with + +\begin{equation} + \begin{aligned} + \frac{\mathcal{E}(m)}{r_o\mathcal{D}16\rho^2(m-1)} \bigg[& 2\mathcal{D}^4\left(\frac{4}{\mathcal{D}^2}\right)\left(\frac{4\rho}{\mathcal{D}^2}\right)-1) && \text{(from Term 1)} \\ + &- 2(-\rho^2+\xi^2+1)\left(3\left(\frac{4\rho}{\mathcal{D}^2}\right)-4\right) && \text{(from Term 2)} \\ + &- 2(\rho+1)\mathcal{D}^2\left(\frac{4\rho}{\mathcal{D}^2}\right)\left(\frac{4\rho}{\mathcal{D}^2}\right)-1) \bigg]. && \text{(from Term 3)} + \end{aligned} +\end{equation} + +\noindent We can now take an 8 out of everything: + +\begin{equation} + \begin{aligned} + \frac{\mathcal{E}(m)}{2\mathcal{D}r_o\rho^2(m-1)} \bigg[& \mathcal{D}^{\cancelto{2}{4}}\cancel{\left(\frac{1}{\mathcal{D}^2}\right)}\left(\frac{4\rho}{\mathcal{D}^2}\right)-1) && \text{(from Term 1)} \\ + &- (-\rho^2+\xi^2+1)\left(3\left(\frac{\rho}{\mathcal{D}^2}\right)-1\right) && \text{(from Term 2)} \\ + &- (\rho+1)\cancel{\mathcal{D}^2}\left(\frac{\rho}{\cancel{\mathcal{D}^2}}\right)\left(\frac{4\rho}{\mathcal{D}^2}\right)-1) \bigg]. && \text{(from Term 3)} + \end{aligned} +\end{equation} + +\noindent Cleaning up a bit: + +\begin{equation} + \begin{aligned} + \frac{\mathcal{E}(m)}{2\mathcal{D}r_o\rho^2(m-1)} \bigg[& \mathcal{D}^2\left(\frac{4\rho}{\mathcal{D}^2}\right)-1) && \text{(from Term 1)} \\ + &- (-\rho^2+\xi^2+1)\left(3\left(\frac{\rho}{\mathcal{D}^2}\right)-1\right) && \text{(from Term 2)} \\ + &- (\rho+1)\rho\left(\frac{4\rho}{\mathcal{D}^2}\right)-1) \bigg]. && \text{(from Term 3)} + \end{aligned} +\end{equation} + +\noindent Let's next expand out the multiplications. + +\begin{equation} + \begin{aligned} + \frac{\mathcal{E}(m)}{2\mathcal{D}r_o\rho^2(m-1)} \bigg[& 4\rho-\mathcal{D}^2 && \text{(from Term 1)} \\ + &- \frac{-3\rho^3+3\rho\xi^2+3\rho}{\mathcal{D}^2} -\cancel{\rho^2}+\xi^2 +1 && \text{(from Term 2)} \\ + &- \frac{4\rho^3 + 4\rho^2}{\mathcal{D}^2}+\cancel{\rho^2}+\rho \bigg]. && \text{(from Term 3)} + \end{aligned} +\end{equation} + +\noindent Gathering terms: + +\begin{equation} + \begin{aligned} + \frac{\mathcal{E}(m)}{2\mathcal{D}r_o\rho^2(m-1)} \bigg[& 5\rho+\xi+1-\mathcal{D}^2 + &- \frac{-3\rho^3+3\rho\xi^2+3\rho}{\mathcal{D}^2}- \frac{4\rho^3 + 4\rho^2}{\mathcal{D}^2} \bigg]. + \end{aligned} +\end{equation} + +\noindent Expanding the \(\mathcal{D}\) in the numerator: + +\begin{equation} + \begin{aligned} + \frac{\mathcal{E}(m)}{2\mathcal{D}r_o\rho^2(m-1)} \bigg[& \cancelto{3}{5}\rho+\cancel{\xi}+\cancel{1}-(\rho^2 + \cancel{2\rho} + \cancel{1} +\cancel{\xi}) + &- \frac{-\cancel{3\rho^3}+3\rho\xi^2+3\rho+\cancel{4}\rho^3 + 4\rho^2}{\mathcal{D}^2} \bigg]. + \end{aligned} +\end{equation} + +\noindent We can take a \(\rho\) out of everything now as well. + +\begin{equation} + \begin{aligned} + \frac{\mathcal{E}(m)}{2\mathcal{D}r_o\rho(m-1)} \bigg[& 3-\rho + &- \frac{3\xi^2+3+\rho^2 + 4\rho}{\mathcal{D}^2} \bigg]. + \end{aligned} +\end{equation} + +\noindent Let's move the 3 into the fraction and expand the \(\mathcal{D}\) that will appear in the numerator. + +\begin{equation} + \frac{\mathcal{E}(m)}{2\mathcal{D}r_o\rho(m-1)} \left[ -\rho - \frac{-\cancelto{2}{3}\rho^2 - \cancelto{2}{6}\rho - \cancel{3} -\cancel{3\xi} + \cancel{3\xi^2}+\cancel{3}+\cancel{\rho^2} + \cancel{4\rho}}{\mathcal{D}^2} \right]. +\end{equation} + +\noindent After cleaning up the various cancelations, we can take another \(\rho\) out of everything. + +\begin{equation} + \frac{\mathcal{E}(m)}{2\mathcal{D}r_o(m-1)} \left[ -1 + \frac{2(\rho + 1) }{\mathcal{D}^2} \right]. +\end{equation} + +\noindent Now let's move the \((m-1)\) into the inside and expand out the \(m\) and \(\mathcal{D}\) terms. + +\begin{equation} + \frac{\mathcal{E}(m)}{2\mathcal{D}r_o} \left[ \frac{-1}{\frac{4\rho}{(\rho+1)^2+\xi^2}-1} + \frac{2(\rho + 1) }{\left(\frac{4\rho}{(\rho+1)^2+\xi^2}-1\right)\left((\rho+1)^2+\xi^2\right)} \right]. +\end{equation} + +\noindent Combining fractions: + +\begin{equation} + \frac{\mathcal{E}(m)}{2\mathcal{D}r_o} \left[ \frac{2\rho + 2 -(\rho+1)^2 - \xi^2}{\left(\frac{4\rho}{(\rho+1)^2+\xi^2}-1\right)\left((\rho+1)^2+\xi^2\right)} \right]. +\end{equation} + +\noindent Expanding the numerator: + +\begin{equation} + \frac{\mathcal{E}(m)}{2\mathcal{D}r_o} \left[ \frac{\cancel{2\rho} + \cancelto{1}{2} -\rho^2-\cancel{2\rho}-\cancel{1} - \xi^2}{\left(\frac{4\rho}{(\rho+1)^2+\xi^2}-1\right)\left((\rho+1)^2+\xi^2\right)} \right]; +\end{equation} + +\begin{equation} + \frac{\mathcal{E}(m)}{2\mathcal{D}r_o} \left[ \frac{1 -\rho^2 - \xi^2}{\left(\frac{4\rho}{(\rho+1)^2+\xi^2}-1\right)\left((\rho+1)^2+\xi^2\right)} \right]. +\end{equation} + +\noindent Getting a common denominator in the denominator: + +\begin{equation} + \frac{\mathcal{E}(m)}{2\mathcal{D}r_o} \left[ \frac{1 -\rho^2 - \xi^2}{4\rho-(\rho+1)^2-\xi^2} \right]. +\end{equation} + +\noindent Expanding then simplifying the denominator: + +\begin{equation} + \frac{\mathcal{E}(m)}{2\mathcal{D}r_o} \left[ \frac{1 -\rho^2 - \xi^2}{\cancelto{2}{4}\rho-\rho^2-\cancel{2\rho}-1-\xi^2} \right]; +\end{equation} + +\begin{equation} + \frac{\mathcal{E}(m)}{2\mathcal{D}r_o} \left[ \frac{\rho^2 - 1 + \xi^2}{(\rho-1)^2+\xi^2} \right]. +\end{equation} + +\noindent Adding and subtracting \(2\rho + 1\) to the numerator: + +\begin{equation} + \frac{\mathcal{E}(m)}{2\mathcal{D}r_o} \left[ \frac{\rho^2 -2\rho + 1 + \xi^2 + 2\rho - 2}{(\rho-1)^2+\xi^2} \right]. +\end{equation} + +\noindent Simplifying: + +\begin{equation} + \frac{\mathcal{E}(m)}{2\mathcal{D}r_o} \left[ \frac{(\rho- 1)^2 + \xi^2 + 2(\rho - 1)}{(\rho-1)^2+\xi^2} \right]. +\end{equation} + +\noindent Splitting the fraction: + +\begin{equation} + \frac{\mathcal{E}(m)}{2\mathcal{D}r_o} \left[ \cancel{\frac{(\rho- 1)^2 + \xi^2 }{(\rho-1)^2+\xi^2}} + \frac{2(\rho - 1)}{(\rho-1)^2+\xi^2} \right]. +\end{equation} + +\noindent Finally, we are left with + +\begin{equation} + \label{eqn:vzesimple} + \frac{\mathcal{E}(m)}{2\mathcal{D}r_o} \left[ 1 + \frac{2(\rho - 1)}{(\rho-1)^2+\xi^2} \right]. +\end{equation} + +Now combining our \(\mathcal{K}(m)\) and \(\mathcal{E}(m)\) terms from \cref{eqn:vzksimple} and \cref{eqn:vzesimple}, respectively, we arrive at + +\begin{equation} + v_z = \mathcal{C}\frac{1}{2\mathcal{D}r_o}\left[-\mathcal{K}(m) +\left(1 + \frac{2(\rho - 1)}{(\rho-1)^2+\xi^2}\right)\mathcal{E}(m)\right]. +\end{equation} + +\noindent Expanding out \(\mathcal{C}\) and \(\mathcal{D}\) gives us our final expression as presented in \cref{eqn:ringvortexinducedvelocityaxial}: + +\begin{equation} + \eqbox{ + v_z = \frac{\Gamma}{2\pi r_o}\frac{1}{\left[\xi^2+(\rho+1)^2\right]^{1/2}}\left[\mathcal{K}(m) -\left(1 + \frac{2(\rho - 1)}{\xi^2 + (\rho-1)^2}\right)\mathcal{E}(m)\right]. +} +\end{equation} diff --git a/v0.5.0/DuctAPE/tutorial/22445ac7.svg b/v0.5.0/DuctAPE/tutorial/22445ac7.svg new file mode 100644 index 00000000..d967a028 --- /dev/null +++ b/v0.5.0/DuctAPE/tutorial/22445ac7.svg @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + +0.0 + + +0.1 + + +0.2 + + +0.3 + + +z + + + + + + + + +0.00 + + +0.05 + + +0.10 + + +0.15 + + +0.20 + + +r + + + + + + + + + + + + + + + + + +Duct + + + +Center Body + + + +Blade Elements + + diff --git a/v0.5.0/DuctAPE/tutorial/2b4b78ff.svg b/v0.5.0/DuctAPE/tutorial/2b4b78ff.svg new file mode 100644 index 00000000..c60e3f87 --- /dev/null +++ b/v0.5.0/DuctAPE/tutorial/2b4b78ff.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + +0.0 + + +0.1 + + +0.2 + + +0.3 + + +z + + + + + + + + +0.00 + + +0.05 + + +0.10 + + +0.15 + + +0.20 + + +r + + + + + + + +Duct + + + +Center Body + + diff --git a/v0.5.0/DuctAPE/tutorial/f322bf5a.svg b/v0.5.0/DuctAPE/tutorial/f322bf5a.svg new file mode 100644 index 00000000..fd1f325b --- /dev/null +++ b/v0.5.0/DuctAPE/tutorial/f322bf5a.svg @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + + + + + + +0.0 + + +0.5 + + +1.0 + + +1.5 + + +2.0 + + +Advance Ratio + + + + + + + +0.0 + + +0.2 + + +0.4 + + +0.6 + + +Efficiency + + + + + + + + + + + + + + + + + + + + + + + + + + + +DFDC + + + +DuctAPE + + + + + + + + + + + + + +0.0 + + +0.5 + + +1.0 + + +1.5 + + +2.0 + + +Advance Ratio + + + + + + + + +0.0 + + +0.2 + + +0.4 + + +0.6 + + +0.8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +DFDC Cp + + + +DFDC Ct + + + +DuctAPE Cp + + + +DuctAPE Ct + + diff --git a/v0.5.0/DuctAPE/tutorial/index.html b/v0.5.0/DuctAPE/tutorial/index.html new file mode 100644 index 00000000..2c37e382 --- /dev/null +++ b/v0.5.0/DuctAPE/tutorial/index.html @@ -0,0 +1,376 @@ + +Getting Started · DuctAPE.jl

    Getting Started

    The following is a basic tutorial on how to set up and run an analysis of a ducted fan in DuctAPE.

    We begin by loading the package:

    using DuctAPE

    Assemble Inputs

    The next step is to create the input object of type DuctedRotor.

    DuctAPE.DuctedRotorType
    DuctedRotor(duct_coordinates, centerbody_coordinates, rotor, paneling_constants)

    Arguments

    • duct_coordinates::AbstractMatrix : The [z, r] coordinates of the duct geometry beginning at the inner (casing) side trailing edge and proceeding clockwise. Note that the duct geometry absolute radial position does not need to be included here if the autoshiftduct option is selected.
    • centerbody_coordinates::AbstractMatrix : The [z, r] coordinates of the centerbody beginning at the leading edge and ending at the trailing edge. Note that the leading edge is assumed to be placed at a radial distance of 0.0 from the axis of rotation.
    • paneling_constants::PanelingConstants : Constants used in re-paneling the geometry.
    • rotor::Rotor : Rotor (and possibly stator) geometric paramters.
    source

    Body Geometry

    We begin by defining a matrix of coordinates for the duct and another for the centerbody geometries. For example:

    duct_coordinates = [
    +    0.304466  0.158439
    +    0.294972  0.158441
    +    0.28113   0.158423
    +    0.266505  0.158365
    +    0.251898  0.158254
    +    0.237332  0.158088
    +    0.222751  0.157864
    +    0.208123  0.157586
    +    0.193399  0.157258
    +    0.178507  0.156897
    +    0.16349   0.156523
    +    0.148679  0.156177
    +    0.134222  0.155902
    +    0.12      0.155721
    +    0.106044  0.155585
    +    0.092531  0.155498
    +    0.079836  0.155546
    +    0.067995  0.155792
    +    0.057025  0.156294
    +    0.046983  0.157103
    +    0.037937  0.158256
    +    0.029956  0.159771
    +    0.02311   0.161648
    +    0.017419  0.163862
    +    0.012842  0.166404
    +    0.009324  0.169289
    +    0.006854  0.172546
    +    0.005484  0.176154
    +    0.005242  0.180005
    +    0.006112  0.184067
    +    0.00809   0.188086
    +    0.011135  0.192004
    +    0.015227  0.19579
    +    0.020339  0.199393
    +    0.026403  0.202735
    +    0.033312  0.205736
    +    0.040949  0.208332
    +    0.049193  0.210487
    +    0.057935  0.212174
    +    0.067113  0.21339
    +    0.076647  0.214136
    +    0.086499  0.214421
    +    0.09661   0.214255
    +    0.10695   0.213649
    +    0.117508  0.212618
    +    0.12838   0.211153
    +    0.139859  0.209267
    +    0.151644  0.207051
    +    0.163586  0.204547
    +    0.175647  0.201771
    +    0.187807  0.198746
    +    0.20002   0.19549
    +    0.212269  0.192017
    +    0.224549  0.188335
    +    0.236794  0.18447
    +    0.249026  0.180416
    +    0.261206  0.176188
    +    0.273301  0.171796
    +    0.28524   0.16727
    +    0.29644   0.162842
    +    0.304542  0.159526
    +]
    centerbody_coordinates = [
    +    0.0       0.0
    +    0.000586  0.005293
    +    0.002179  0.010047
    +    0.004736  0.014551
    +    0.008231  0.018825
    +    0.012632  0.022848
    +    0.01788   0.026585
    +    0.023901  0.030001
    +    0.030604  0.033068
    +    0.0379    0.035771
    +    0.045705  0.038107
    +    0.053933  0.040075
    +    0.06254   0.04169
    +    0.071451  0.042966
    +    0.08063   0.043916
    +    0.090039  0.044561
    +    0.09968   0.044922
    +    0.109361  0.044999
    +    0.12      0.044952
    +    0.135773  0.04495
    +    0.151899  0.04493
    +    0.16806   0.044913
    +    0.184232  0.044898
    +    0.200407  0.044882
    +    0.21658   0.044866
    +    0.232723  0.044847
    +    0.248578  0.044839
    +    0.262095  0.044564
    +    0.274184  0.043576
    +    0.285768  0.041795
    +    0.296701  0.039168
    +    0.306379  0.035928
    +]
    Example block output
    Note

    The body geometry coordinates must be input as columns of z (axial) and r (radial) coordinates, in that order.

    Rotor Geometry

    The next step is to assemble an object of type Rotor which contains the geometric information required to define the rotor(s) and their respective blade elements.

    DuctAPE.RotorType
    Rotor(
    +    B, rotorzloc, r, Rhub, Rtip, chords, twists, tip_gap, airfoils, fliplift
    +)

    Composite type containing the rotor(s) geometric properties.

    Note that the actual struct requires the inputs to be arrays, but there is a constructor function that will take in scalars and automatically build the array-based struct.

    Arguments

    • B::AbstractVector{Float} : The number of blades for each rotor. May not be an integer, but usually is.
    • rotorzloc::AbstractVector{Float} : Dimensional, axial position of each rotor.
    • r::AbstractArray{Float} : Non-dimensional radial locations of each blade element.
    • Rhub::AbstractVector{Float} : Dimensional hub radius of rotor. (may be changed if it does not match the radial position of the centerbody geometry at the selected rotorzloc.
    • Rtip::AbstractVector{Float} : Dimensional tip radius of rotor. Is used to determine the radial position of the duct if the autoshiftduct option is selected.
    • chords::AbstractArray{Float} : Dimensional chord lengths of the blade elements.
    • twists::AbstractArray{Float} : Blade element angles, in radians.
    • tip_gap::AbstractVector{Float} : Currently unused, do not set to anything other than zeros.
    • airfoils::AbstractArray{AFType} : Airfoil types describing the airfoil polars for each blade element. Currently only fully tested with C4Blade.DFDCairfoil types.
    • fliplift::AbstractVector{Bool} : Flag to indicate if the airfoil lift values should be flipped or not.
    source

    In this example, we have a single rotor defined as follows.

    # number of rotors
    +B = 5
    +
    +# rotor axial location
    +rotorzloc = 0.12
    +
    +# rotor tip radius
    +Rtip = 0.15572081487373543
    +
    +# rotor hub radius
    +Rhub = 0.04495252299071941
    +
    +# non-dimensional blade element radial stations
    +r = [
    +    0.050491
    +    0.061567
    +    0.072644
    +    0.083721
    +    0.094798
    +    0.10587
    +    0.11695
    +    0.12803
    +    0.13911
    +    0.15018
    +] ./ Rtip
    +
    +# dimensional chord lengths
    +chords = [
    +    0.089142
    +    0.079785
    +    0.0713
    +    0.063979
    +    0.057777
    +    0.052541
    +    0.048103
    +    0.044316
    +    0.041061
    +    0.038243
    +]
    +
    +# twist angles (from plane of rotation) in radians
    +twists = [
    +    69.012
    +    59.142
    +    51.825
    +    46.272
    +    41.952
    +    38.509
    +    35.699
    +    33.354
    +    31.349
    +    29.596
    +] .* pi / 180.0
    +
    +# DFDC-type airfoil object
    +afparams = DuctAPE.c4b.DFDCairfoil(;
    +    alpha0=0.0,
    +    clmax=1.5,
    +    clmin=-1.0,
    +    dclda=6.28,
    +    dclda_stall=0.5,
    +    dcl_stall=0.2,
    +    cdmin=0.012,
    +    clcdmin=0.1,
    +    dcddcl2=0.005,
    +    cmcon=0.0,
    +    Re_ref=2e5,
    +    Re_exp=0.35,
    +    mcrit=0.7,
    +)
    +
    +# all airfoils are the same
    +airfoils = fill(afparams, length(r)) # specify the airfoil array
    +
    +# assemble rotor parameters
    +rotor = DuctAPE.Rotor(
    +    [B],
    +    [rotorzloc],
    +    r,
    +    [Rhub],
    +    [Rtip],
    +    chords,
    +    twists,
    +    [0.0], # currently only zero tip gaps work.
    +    airfoils,
    +    [0.0], # can flip the cl lookups on the fly if desired, say, for stator sections
    +)
    Example block output
    Airfoils

    Airfoil types for DuctAPE are currently contained in the C4Blade (Cascade Compatible CCBlade) sub-module of DuctAPE which is exported as c4b and also contains the various airfoil evaluation functions used for the blade element lookups. The available airfoil types include all the airfoil types from CCBlade, as well as DFDCairfoil which is an XROTOR-like parametric cascade polar used in DFDC. In addition there are untested cascade types with similar structure to CCBlades airfoil types called DTCascade. Furthermore, there is an experimental actuator disk model implemented via the ADM airfoil type in C4Blade.

    Paneling Constants

    The PanelingConstants object contains the constants required for DuctAPE to re-panel the provided geometry into a format compatible with the solve structure. Specifically, the DuctAPE solver makes some assumptions on the relative positioning of the body surfaces relative to the wakes and each other; and this is most easily guarenteed by a re-paneling of the provided body surface geometry. The PanelingConstants object is also used to build all of the preallocated caches inside DuctAPE, which can be done up-front if desired. Note that there is some functionality in place for cases when the user wants to keep their own specified geometry, but this functionality should be used with caution and only by users who are certain their provided geometry is in the compatible format. See the Examples for an example.

    DuctAPE.PanelingConstantsType
    PanelingConstants(
    +    nduct_inlet,
    +    ncenterbody_inlet,
    +    npanels,
    +    dte_minus_cbte,
    +    nwake_sheets,
    +    wake_length=1.0,
    +)

    Constants used in re-paneling geometry.

    Note that unlike other input structures, this one, in general, does not define fields as vectors. This is because these values should not change throughout an optimization, even if the geometry may change. Otherwise, discontinuities could be experienced.

    Arguments

    • nduct_inlet::Int : The number of panels to use for the duct inlet (this number is used for both the casing and nacelle re-paneling)
    • ncenterbody_inlet::Int : The number of panels to use for the centerbody inlet.
    • npanels::AbstractVector{Int} : A vector containing the number of panels between discrete locations inside the wake. Specifically, the number of panels between the rotors, between the last rotor and the first body trailing edge, between the body trailing edges (if different), and between the last body trailing edge and the end of the wake. The length of this vector should be N+1 (where N is the number of rotors) if the duct and centerbody trailing edges are aligned, and N+2 if not.
    • dte_minus_cbte::Float : An indicator concerning the hub and duct trailing edge relative locations. Should be set to -1 if the duct trailing edge axial position minus the centerbody trailing edge axial position is negative, +1 if positive (though any positive or negative number will suffice), and zero if the trailing edges are aligned.
    • nwake_sheets::Int : The number of wake sheets to use. Note this will also be setting the number of blade elements to use.
    • wake_length::Float=1.0 : Non-dimensional (based on the length from the foremost body leading edge and the aftmost body trailing edge) length of the wake extending behind the aftmost body trailing edge.
    source
    # number of panels for the duct inlet
    +nduct_inlet = 30
    +
    +# number of panels for the center body inlet
    +ncenterbody_inlet = 30
    +
    +# number of panels from:
    +#  - rotor to duct trailing edge
    +#  - duct trailing edge to center body trailing edge
    +#  - center body trailing edge to end of wake
    +npanels = [30, 1, 30]
    +
    +# the duct trailing edge is ahead of the centerbody trailing edge.
    +dte_minus_cbte = -1.0
    +
    +# number of wake sheets (one more than blade elements to use)
    +nwake_sheets = 11
    +
    +# non-dimensional wake length aft of rear-most trailing edge
    +wake_length = 0.8
    +
    +# assemble paneling constants
    +paneling_constants = DuctAPE.PanelingConstants(
    +    nduct_inlet, ncenterbody_inlet, npanels, dte_minus_cbte, nwake_sheets, wake_length
    +)

    Assembling the DuctedRotor

    We are now posed to construct the DuctedRotor input type.

    # assemble ducted_rotor object
    +ducted_rotor = DuctAPE.DuctedRotor(
    +    duct_coordinates,
    +    centerbody_coordinates,
    +    rotor,
    +    paneling_constants,
    +)

    Operating Point

    Next we will assemble the operating point which contains information about the freestream as well as the rotor rotation rate(s).

    DuctAPE.OperatingPointType
    OperatingPoint(Vinf, rhoinf, muinf, asound, Omega)

    DuctedRotor operating point information.

    Arguments

    • Vinf::AbstractVector{Float} : Freestream velocity magnitude (which is only in the axial direction).
    • rhoinf::AbstractVector{Float} : Freestream density
    • muinf::AbstractVector{Float} : Freestream viscosity
    • asound::AbstractVector{Float} : Freestream speed of sound
    • Omega::AbstractVector{Float} : Rotor rototation rate(s)
    source
    # Freestream
    +Vinf = 0.0 # hover condition
    +rhoinf = 1.226
    +asound = 340.0
    +muinf = 1.78e-5
    +
    +# Rotation Rate
    +RPM = 8000.0
    +Omega = RPM * pi / 30 # if using RPM, be sure to convert to rad/s
    +
    +# utilizing the constructor function to put things in vector types
    +operating_point = DuctAPE.OperatingPoint(Vinf, rhoinf, muinf, asound, Omega)

    Reference Parameters

    The reference parameters are used in the post-processing non-dimensionalizations.

    DuctAPE.ReferenceParametersType
    ReferenceParameters(Vref, Rref)

    Reference parameters for post-process non-dimensionalization.

    Note that the actual struct requires the inputs to be arrays, but there is a constructor function that will take in scalars and automatically build the array-based struct.

    Arguments

    • Vref::AbstractVector{Float} : Reference velocity.
    • Rref::AbstractVector{Float} : Reference rotor tip radius.
    source
    # reference velocity (close to average axial velocity at rotor in this case)
    +Vref = 50.0
    +
    +# reference radius (usually tip radius of rotor)
    +Rref = Rtip
    +
    +# assemble reference parameters
    +reference_parameters = DuctAPE.ReferenceParameters([Vref], [Rref])

    Set Options

    The default options should be sufficient for just starting out and are set through the set_options function.

    DuctAPE.set_optionsFunction
    set_options(; kwargs...)
    +set_options(multipoint; kwargs...)

    Set the options for DuctAPE to use.

    Note that the vast majority of the available options are defined through keyword arguments. See the documentation for the various option types for more information.

    Arguments

    • multipoint::AbstractArray{OperatingPoint} : a vector of operating points to use if running a multi-point analysis.
    source
    options = DuctAPE.set_options()
    Options{Bool, Vector{Bool}, Float64, Vector{Int64}, Vector{String}, Vector{String}, DuctAPE.var"#42#47", IntegrationOptions{GaussLegendre{Vector{Float64}, Vector{Float64}}, GaussLegendre{Vector{Float64}, Vector{Float64}}}, ChainSolverOptions{Bool, Int64, DuctAPE.ExternalSolverOptions}, SLORGridSolverOptions{Bool, Float64, Int64}}(false, true, [1], DuctAPE.var"#42#47"(), true, false, 0.05, 1.0e-15, 2.220446049250313e-15, IntegrationOptions{GaussLegendre{Vector{Float64}, Vector{Float64}}, GaussLegendre{Vector{Float64}, Vector{Float64}}}(GaussLegendre{Vector{Float64}, Vector{Float64}}([0.019855071751231856, 0.10166676129318664, 0.2372337950418355, 0.4082826787521751, 0.591717321247825, 0.7627662049581645, 0.8983332387068134, 0.9801449282487682], [0.05061426814518838, 0.11119051722668723, 0.15685332293894372, 0.18134189168918097, 0.18134189168918097, 0.15685332293894372, 0.11119051722668723, 0.05061426814518838]), GaussLegendre{Vector{Float64}, Vector{Float64}}([0.019855071751231856, 0.10166676129318664, 0.2372337950418355, 0.4082826787521751, 0.591717321247825, 0.7627662049581645, 0.8983332387068134, 0.9801449282487682], [0.05061426814518838, 0.11119051722668723, 0.15685332293894372, 0.18134189168918097, 0.18134189168918097, 0.15685332293894372, 0.11119051722668723, 0.05061426814518838])), Bool[0], ["outputs.jl"], false, ["outs"], SLORGridSolverOptions{Bool, Float64, Int64}(200, 2.220446049250313e-16, Bool[0], [0]), ChainSolverOptions{Bool, Int64, DuctAPE.ExternalSolverOptions}(DuctAPE.ExternalSolverOptions[NLsolveOptions{Bool, Float64, Int64, UnionAll, @NamedTuple{}, Symbol}(:anderson, 1.0e-12, 200, LineSearches.MoreThuente, NamedTuple(), Bool[0], [0]), MinpackOptions{Bool, Float64, Int64, Symbol}(:hybr, 1.0e-12, 100, Bool[0], [0]), NLsolveOptions{Bool, Float64, Int64, UnionAll, @NamedTuple{}, Symbol}(:newton, 1.0e-12, 20, LineSearches.MoreThuente, NamedTuple(), Bool[0], [0])], Bool[0, 0, 0], [0, 0, 0]))

    For more advanced option selection, see the examples and API reference.

    Run a Single Analysis

    With the ducted_rotor input build, and the options selected, we are now ready to run an analysis. This is done simply with the analyze function which dispatches the appropriate analysis, solve, and post-processing functions based on the selected options.

    DuctAPE.analyzeMethod
    analyze(
    +    ducted_rotor::DuctedRotor,
    +    operating_point::OperatingPoint,
    +    reference_parameters::ReferenceParameters,
    +    options::Options=set_options();
    +    prepost_container_caching=nothing,
    +    solve_parameter_caching=nothing,
    +    solve_container_caching=nothing,
    +    return_inputs=false,
    +)

    Analyze ducted_rotor, including preprocessing.

    Arguments

    • ducted_rotor::DuctedRotor : DuctedRotor input object (see docstring for DuctedRotor type)
    • operating_point::OperatingPoint : OperatingPoint input object (see docstring for OperatingPoint type)
    • reference_parameters::ReferenceParameters : ReferenceParameters input object (see docstring for ReferenceParameters type)
    • options::Options=set_options() : Options object (see set_options and related functions)

    Keyword Arguments

    • prepost_container_caching=nothing : Output of allocate_prepost_container_cache
    • solve_parameter_caching=nothing : Output of allocate_solve_parameter_container_cache
    • solve_container_caching=nothing : Output of allocate_solve_container_cache
    • return_inputs=false : flag as to whether or not to return the pre-processed inputs

    Returns

    • outs::NamedTuple : Named Tuple of various analysis outputs (see docstring for postprocess for details), note, if linear system decomposition fails, no solve is performed and an empty vector is returned.
    • ins::NamedTuple : Named Tuple of various pre-processed inputs (e.g. panels and body linear system), will only be returned if return_inputs=true
    • convergence_flag : Flag for successful solve convergence
    source
    outs, success_flag = DuctAPE.analyze(ducted_rotor, operating_point, reference_parameters, options)

    Single Run Outputs

    There are many outputs contained in the named tuple output from the analyze function (see the post_process docstring), but some that may be of immediate interest include:

    # Total Thrust Coefficient
    +outs.totals.CT
    0.9693509063670719
    # Total Torque Coefficient
    +outs.totals.CQ
    0.10306885180217912

    Run a Multi-Point Analysis

    In the case that one wants to run the same geometry at several different operating points, for example: for a range of advance ratios, there is another dispatch of the analyze function that accepts an input, multipoint, that is a vector of operating points.

    DuctAPE.analyzeMethod
    analyze(
    +    ducted_rotor::DuctedRotor,
    +    operating_point::AbstractVector{OperatingPoint},
    +    reference_parameters::ReferenceParameters,
    +    options::Options=set_options();
    +    prepost_container_caching=nothing,
    +    solve_parameter_caching=nothing,
    +    solve_container_caching=nothing,
    +    return_inputs=false,
    +)

    Analyze ducted_rotor, including preprocessing, for a set of operating points.

    Arguments

    • ducted_rotor::DuctedRotor : DuctedRotor input object
    • operating_point::AbstractVector{OperatingPoint} : Vector of Operating Points at which to analyze the ducted_rotor
    • reference_parameters::ReferenceParameters : ReferenceParameters input object (see docstring for ReferenceParameters type)
    • options::Options=set_options() : Options object

    Keyword Arguments

    • prepost_container_caching=nothing : Output of allocate_prepost_container_cache
    • solve_parameter_caching=nothing : Output of allocate_solve_parameter_container_cache
    • solve_container_caching=nothing : Output of allocate_solve_container_cache
    • return_inputs=false : flag as to whether or not to return the pre-processed inputs

    Returns

    • outs::Vector{NamedTuple} : Vector of named tuples of various analysis outputs (see docstring for postprocess for details), note, if linear system decomposition fails, no solve is performed and an empty vector is returned.
    • ins::NamedTuple : Named Tuple of various pre-processed inputs (e.g. panels and body linear system), will only be returned if return_inputs=true
    • convergence_flag : Flag for successful solve convergence
    source

    Running a multi-point analysis on the example geometry given there, it might look something like this:

    # - Advance Ratio Range - #
    +Js = range(0.0, 2.0; step=0.01)
    +
    +# - Calculate Vinfs - #
    +D = 2.0 * rotor.Rtip[1] # rotor diameter
    +n = RPM / 60.0 # rotation rate in revolutions per second
    +Vinfs = Js * n * D
    +
    +# - Set Operating Points - #
    +operating_points = [deepcopy(operating_point) for i in 1:length(Vinfs)]
    +for (iv, v) in enumerate(Vinfs)
    +    operating_points[iv].Vinf[] = v
    +end
    +
    +# - Run Multi-point Analysis - #
    +outs_vec, success_flags = DuctAPE.analyze(ducted_rotor, operating_points, reference_parameters, DuctAPE.set_options(operating_points))

    There are a few things to note here.

    1. We want to make sure that the operating point objects we put into the input vector are unique instances.
    2. We need to use the dispatch of set_options that accepts the operating point vector to set up the right number of things in the background (like convergence flags for each operating point).
    3. The outputs of the analysis are vectors of the same outputs for a single analysis.

    Multi-point Outputs

    For multi-point analysis outputs, which are given as a vector of output objects, we might access and plot things as follows. We also take the opportunity to present some verification against DFDC, showing that DuctAPE matches remarkably well (within 0.5%) of DFDC. We therefore first provide data from DFDC analyses of the above example geometry at various advance ratios.

    # Verification Data From DFDC
    +
    +dfdc_jept = [
    +    0.0 0.0 0.64763 0.96692
    +    0.1 0.1366 0.64716 0.88394
    +    0.2 0.2506 0.6448 0.80785
    +    0.3 0.3457 0.64044 0.73801
    +    0.4 0.4251 0.63401 0.67382
    +    0.5 0.4915 0.62534 0.61468
    +    0.6 0.547 0.61428 0.56001
    +    0.7 0.5935 0.6006 0.50925
    +    0.8 0.6326 0.58411 0.46187
    +    0.9 0.6654 0.56452 0.41738
    +    1.0 0.693 0.54158 0.37531
    +    1.1 0.716 0.51499 0.33522
    +    1.2 0.7349 0.48446 0.2967
    +    1.3 0.7499 0.44966 0.25937
    +    1.4 0.7606 0.41031 0.2229
    +    1.5 0.7661 0.36604 0.18694
    +    1.6 0.7643 0.31654 0.15121
    +    1.7 0.7506 0.26153 0.11547
    +    1.8 0.7126 0.20061 0.07941
    +    1.9 0.61 0.13355 0.04287
    +    2.0 0.1861 0.05993 0.00558
    +]
    +
    +dfdc_J = dfdc_jept[:,1]
    +dfdc_eta = dfdc_jept[:,2]
    +dfdc_cp = dfdc_jept[:,3]
    +dfdc_ct = dfdc_jept[:,4]

    We can then access the various multi-point analysis outputs however is convenient, we choose a broadcasting approach here:

    # - extract efficiency, power, and thrust coefficients - #
    +# efficiency
    +eta = (p->p.totals.total_efficiency[1]).(outs_vec)
    +# power
    +cp = (p->p.totals.CP[1]).(outs_vec)
    +# thrust
    +ct = (p->p.totals.CT[1]).(outs_vec)

    And then we can plot the data to compare DFDC and DuctAPE.

    using Plots
    +
    +# set up efficiency plot
    +pe = plot(; xlabel="Advance Ratio", ylabel="Efficiency")
    +
    +# plot DFDC data
    +plot!(
    +    pe,
    +    dfdc_J,
    +    dfdc_eta;
    +    seriestype=:scatter,
    +    markersize=5,
    +    markercolor=plotsgray,
    +    markerstrokecolor=plotsgray,
    +    label="DFDC"
    +)
    +
    +# Plot DuctAPE outputs
    +plot!(pe, Js, eta; linewidth=2, color=primary, label = "DuctAPE")
    +
    +# setup cp/ct plot
    +ppt = plot(; xlabel="Advance Ratio")
    +
    +# plot DFDC data
    +plot!(
    +    ppt,
    +    dfdc_J,
    +    dfdc_cp;
    +    seriestype=:scatter,
    +    markersize=5,
    +    markercolor=plotsgray,
    +    markerstrokecolor=primary,
    +    markerstrokewidth=2,
    +    label="DFDC Cp"
    +)
    +plot!(
    +    ppt,
    +    dfdc_J,
    +    dfdc_ct;
    +    seriestype=:scatter,
    +    markersize=5,
    +    markercolor=plotsgray,
    +    markerstrokecolor=secondary,
    +    markerstrokewidth=2,
    +    label="DFDC Ct"
    +)
    +
    +# plot DuctAPE outputs
    +plot!(
    +    ppt,
    +    Js,
    +    cp;
    +    linewidth=1.5,
    +    color=primary,
    +    label="DuctAPE Cp"
    +)
    +plot!(
    +    ppt,
    +    Js,
    +    ct;
    +    linewidth=1.5,
    +    color=secondary,
    +    label="DuctAPE Ct"
    +)
    +
    +plot(pe, ppt; size=(700,350), layout=(1,2), margin=2mm)
    Example block output
    diff --git a/v0.5.0/assets/define_propulsor.jl b/v0.5.0/assets/define_propulsor.jl new file mode 100644 index 00000000..307f783a --- /dev/null +++ b/v0.5.0/assets/define_propulsor.jl @@ -0,0 +1,71 @@ +afparams = DuctAPE.c4b.DFDCairfoil(; + alpha0=0.0, + clmax=1.5, + clmin=-1.0, + dclda=6.28, + dclda_stall=0.5, + dcl_stall=0.2, + cdmin=0.012, + clcdmin=0.1, + dcddcl2=0.005, + cmcon=0.0, + Re_ref=2e5, + Re_exp=0.35, + mcrit=0.7, +) + +airfoils = fill(afparams, length(r)) # specify the airfoil array + +rotor = dt.Rotor( + [5], + [rotorzloc], + r, + [Rhub+0.01], + [Rtip-0.025], + c, + t, + [0.0], # currently only zero tip gaps work. + airfoils, + [0.0], # can flip the cl lookups on the fly if desired, say, for stator sections +) + +# Freestream +Vinf = 0.0 # hover condition +rhoinf = 1.226 +asound = 340.0 +muinf = 1.78e-5 + +# Rotation Rate +RPM = 8000.0 +Omega = RPM * pi / 30 # if using RPM, be sure to convert to rad/s + +# utilizing the constructor function to put things in vector types +operating_point = dt.OperatingPoint(Vinf, rhoinf, muinf, asound, Omega) + +nduct_inlet = 50 +ncenterbody_inlet = 30 +npanels = [50, 10, 30] # the 1 is due to the fact that the duct and center body trailing edges are not quite aligned. +dte_minus_cbte = 1.0 # the duct trailing edge is ahead of the centerbody trailing edge. +nwake_sheets = 22 +wake_length = 0.2 + +paneling_constants = dt.PanelingConstants( + nduct_inlet, ncenterbody_inlet, npanels, dte_minus_cbte, nwake_sheets, wake_length +) + +Vref = 50.0 #this turns out to be close to the average axial velocity at the rotor in our case +Rref = Rtip + +reference_parameters = dt.ReferenceParameters([Vref], [Rref]) + +dz = [reverse(cz); nz[2:end]] +dr = [reverse(cr); nr[2:end]] + +ducted_rotor = dt.DuctedRotor( + [dz dr], + [cbz cbr], + rotor, + operating_point, + paneling_constants, + reference_parameters, +) diff --git a/v0.5.0/assets/documenter.js b/v0.5.0/assets/documenter.js new file mode 100644 index 00000000..a05c9c27 --- /dev/null +++ b/v0.5.0/assets/documenter.js @@ -0,0 +1,1073 @@ +// Generated by Documenter.jl +requirejs.config({ + paths: { + 'highlight-julia': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/languages/julia.min', + 'headroom': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.12.0/headroom.min', + 'jqueryui': 'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min', + 'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min', + 'mathjax': 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.9/MathJax.js?config=TeX-AMS_HTML', + 'headroom-jquery': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.12.0/jQuery.headroom.min', + 'highlight': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min', + 'highlight-julia-repl': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/languages/julia-repl.min', + }, + shim: { + "highlight-julia": { + "deps": [ + "highlight" + ] + }, + "mathjax": { + "exports": "MathJax" + }, + "headroom-jquery": { + "deps": [ + "jquery", + "headroom" + ] + }, + "highlight-julia-repl": { + "deps": [ + "highlight" + ] + } +} +}); +//////////////////////////////////////////////////////////////////////////////// +require(['mathjax'], function(MathJax) { +MathJax.Hub.Config({ + "jax": [ + "input/TeX", + "output/HTML-CSS", + "output/NativeMML" + ], + "TeX": { + "equationNumbers": { + "autoNumber": "AMS" + } + }, + "tex2jax": { + "inlineMath": [ + [ + "$", + "$" + ], + [ + "\\(", + "\\)" + ] + ], + "processEscapes": true + }, + "config": [ + "MMLorHTML.js" + ], + "extensions": [ + "MathMenu.js", + "MathZoom.js", + "TeX/AMSmath.js", + "TeX/AMSsymbols.js", + "TeX/autobold.js", + "TeX/autoload-all.js" + ] +} +); + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery', 'highlight', 'highlight-julia', 'highlight-julia-repl'], function($) { +$(document).ready(function() { + hljs.highlightAll(); +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +let timer = 0; +var isExpanded = true; + +$(document).on( + "click", + ".docstring .docstring-article-toggle-button", + function () { + let articleToggleTitle = "Expand docstring"; + const parent = $(this).parent(); + + debounce(() => { + if (parent.siblings("section").is(":visible")) { + parent + .find("a.docstring-article-toggle-button") + .removeClass("fa-chevron-down") + .addClass("fa-chevron-right"); + } else { + parent + .find("a.docstring-article-toggle-button") + .removeClass("fa-chevron-right") + .addClass("fa-chevron-down"); + + articleToggleTitle = "Collapse docstring"; + } + + parent + .children(".docstring-article-toggle-button") + .prop("title", articleToggleTitle); + parent.siblings("section").slideToggle(); + }); + } +); + +$(document).on("click", ".docs-article-toggle-button", function (event) { + let articleToggleTitle = "Expand docstring"; + let navArticleToggleTitle = "Expand all docstrings"; + let animationSpeed = event.noToggleAnimation ? 0 : 400; + + debounce(() => { + if (isExpanded) { + $(this).removeClass("fa-chevron-up").addClass("fa-chevron-down"); + $("a.docstring-article-toggle-button") + .removeClass("fa-chevron-down") + .addClass("fa-chevron-right"); + + isExpanded = false; + + $(".docstring section").slideUp(animationSpeed); + } else { + $(this).removeClass("fa-chevron-down").addClass("fa-chevron-up"); + $("a.docstring-article-toggle-button") + .removeClass("fa-chevron-right") + .addClass("fa-chevron-down"); + + isExpanded = true; + articleToggleTitle = "Collapse docstring"; + navArticleToggleTitle = "Collapse all docstrings"; + + $(".docstring section").slideDown(animationSpeed); + } + + $(this).prop("title", navArticleToggleTitle); + $(".docstring-article-toggle-button").prop("title", articleToggleTitle); + }); +}); + +function debounce(callback, timeout = 300) { + if (Date.now() - timer > timeout) { + callback(); + } + + clearTimeout(timer); + + timer = Date.now(); +} + +}) +//////////////////////////////////////////////////////////////////////////////// +require([], function() { +function addCopyButtonCallbacks() { + for (const el of document.getElementsByTagName("pre")) { + const button = document.createElement("button"); + button.classList.add("copy-button", "fa-solid", "fa-copy"); + button.setAttribute("aria-label", "Copy this code block"); + button.setAttribute("title", "Copy"); + + el.appendChild(button); + + const success = function () { + button.classList.add("success", "fa-check"); + button.classList.remove("fa-copy"); + }; + + const failure = function () { + button.classList.add("error", "fa-xmark"); + button.classList.remove("fa-copy"); + }; + + button.addEventListener("click", function () { + copyToClipboard(el.innerText).then(success, failure); + + setTimeout(function () { + button.classList.add("fa-copy"); + button.classList.remove("success", "fa-check", "fa-xmark"); + }, 5000); + }); + } +} + +function copyToClipboard(text) { + // clipboard API is only available in secure contexts + if (window.navigator && window.navigator.clipboard) { + return window.navigator.clipboard.writeText(text); + } else { + return new Promise(function (resolve, reject) { + try { + const el = document.createElement("textarea"); + el.textContent = text; + el.style.position = "fixed"; + el.style.opacity = 0; + document.body.appendChild(el); + el.select(); + document.execCommand("copy"); + + resolve(); + } catch (err) { + reject(err); + } finally { + document.body.removeChild(el); + } + }); + } +} + +if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", addCopyButtonCallbacks); +} else { + addCopyButtonCallbacks(); +} + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery', 'headroom', 'headroom-jquery'], function($, Headroom) { + +// Manages the top navigation bar (hides it when the user starts scrolling down on the +// mobile). +window.Headroom = Headroom; // work around buggy module loading? +$(document).ready(function () { + $("#documenter .docs-navbar").headroom({ + tolerance: { up: 10, down: 10 }, + }); +}); + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +$(document).ready(function () { + let meta = $("div[data-docstringscollapsed]").data(); + + if (meta?.docstringscollapsed) { + $("#documenter-article-toggle-button").trigger({ + type: "click", + noToggleAnimation: true, + }); + } +}); + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +/* +To get an in-depth about the thought process you can refer: https://hetarth02.hashnode.dev/series/gsoc + +PSEUDOCODE: + +Searching happens automatically as the user types or adjusts the selected filters. +To preserve responsiveness, as much as possible of the slow parts of the search are done +in a web worker. Searching and result generation are done in the worker, and filtering and +DOM updates are done in the main thread. The filters are in the main thread as they should +be very quick to apply. This lets filters be changed without re-searching with minisearch +(which is possible even if filtering is on the worker thread) and also lets filters be +changed _while_ the worker is searching and without message passing (neither of which are +possible if filtering is on the worker thread) + +SEARCH WORKER: + +Import minisearch + +Build index + +On message from main thread + run search + find the first 200 unique results from each category, and compute their divs for display + note that this is necessary and sufficient information for the main thread to find the + first 200 unique results from any given filter set + post results to main thread + +MAIN: + +Launch worker + +Declare nonconstant globals (worker_is_running, last_search_text, unfiltered_results) + +On text update + if worker is not running, launch_search() + +launch_search + set worker_is_running to true, set last_search_text to the search text + post the search query to worker + +on message from worker + if last_search_text is not the same as the text in the search field, + the latest search result is not reflective of the latest search query, so update again + launch_search() + otherwise + set worker_is_running to false + + regardless, display the new search results to the user + save the unfiltered_results as a global + update_search() + +on filter click + adjust the filter selection + update_search() + +update_search + apply search filters by looping through the unfiltered_results and finding the first 200 + unique results that match the filters + + Update the DOM +*/ + +/////// SEARCH WORKER /////// + +function worker_function(documenterSearchIndex, documenterBaseURL, filters) { + importScripts( + "https://cdn.jsdelivr.net/npm/minisearch@6.1.0/dist/umd/index.min.js" + ); + + let data = documenterSearchIndex.map((x, key) => { + x["id"] = key; // minisearch requires a unique for each object + return x; + }); + + // list below is the lunr 2.1.3 list minus the intersect with names(Base) + // (all, any, get, in, is, only, which) and (do, else, for, let, where, while, with) + // ideally we'd just filter the original list but it's not available as a variable + const stopWords = new Set([ + "a", + "able", + "about", + "across", + "after", + "almost", + "also", + "am", + "among", + "an", + "and", + "are", + "as", + "at", + "be", + "because", + "been", + "but", + "by", + "can", + "cannot", + "could", + "dear", + "did", + "does", + "either", + "ever", + "every", + "from", + "got", + "had", + "has", + "have", + "he", + "her", + "hers", + "him", + "his", + "how", + "however", + "i", + "if", + "into", + "it", + "its", + "just", + "least", + "like", + "likely", + "may", + "me", + "might", + "most", + "must", + "my", + "neither", + "no", + "nor", + "not", + "of", + "off", + "often", + "on", + "or", + "other", + "our", + "own", + "rather", + "said", + "say", + "says", + "she", + "should", + "since", + "so", + "some", + "than", + "that", + "the", + "their", + "them", + "then", + "there", + "these", + "they", + "this", + "tis", + "to", + "too", + "twas", + "us", + "wants", + "was", + "we", + "were", + "what", + "when", + "who", + "whom", + "why", + "will", + "would", + "yet", + "you", + "your", + ]); + + let index = new MiniSearch({ + fields: ["title", "text"], // fields to index for full-text search + storeFields: ["location", "title", "text", "category", "page"], // fields to return with results + processTerm: (term) => { + let word = stopWords.has(term) ? null : term; + if (word) { + // custom trimmer that doesn't strip @ and !, which are used in julia macro and function names + word = word + .replace(/^[^a-zA-Z0-9@!]+/, "") + .replace(/[^a-zA-Z0-9@!]+$/, ""); + + word = word.toLowerCase(); + } + + return word ?? null; + }, + // add . as a separator, because otherwise "title": "Documenter.Anchors.add!", would not + // find anything if searching for "add!", only for the entire qualification + tokenize: (string) => string.split(/[\s\-\.]+/), + // options which will be applied during the search + searchOptions: { + prefix: true, + boost: { title: 100 }, + fuzzy: 2, + }, + }); + + index.addAll(data); + + /** + * Used to map characters to HTML entities. + * Refer: https://github.com/lodash/lodash/blob/main/src/escape.ts + */ + const htmlEscapes = { + "&": "&", + "<": "<", + ">": ">", + '"': """, + "'": "'", + }; + + /** + * Used to match HTML entities and HTML characters. + * Refer: https://github.com/lodash/lodash/blob/main/src/escape.ts + */ + const reUnescapedHtml = /[&<>"']/g; + const reHasUnescapedHtml = RegExp(reUnescapedHtml.source); + + /** + * Escape function from lodash + * Refer: https://github.com/lodash/lodash/blob/main/src/escape.ts + */ + function escape(string) { + return string && reHasUnescapedHtml.test(string) + ? string.replace(reUnescapedHtml, (chr) => htmlEscapes[chr]) + : string || ""; + } + + /** + * RegX escape function from MDN + * Refer: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ + function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + } + + /** + * Make the result component given a minisearch result data object and the value + * of the search input as queryString. To view the result object structure, refer: + * https://lucaong.github.io/minisearch/modules/_minisearch_.html#searchresult + * + * @param {object} result + * @param {string} querystring + * @returns string + */ + function make_search_result(result, querystring) { + let search_divider = `
    `; + let display_link = + result.location.slice(Math.max(0), Math.min(50, result.location.length)) + + (result.location.length > 30 ? "..." : ""); // To cut-off the link because it messes with the overflow of the whole div + + if (result.page !== "") { + display_link += ` (${result.page})`; + } + searchstring = escapeRegExp(querystring); + let textindex = new RegExp(`${searchstring}`, "i").exec(result.text); + let text = + textindex !== null + ? result.text.slice( + Math.max(textindex.index - 100, 0), + Math.min( + textindex.index + querystring.length + 100, + result.text.length + ) + ) + : ""; // cut-off text before and after from the match + + text = text.length ? escape(text) : ""; + + let display_result = text.length + ? "..." + + text.replace( + new RegExp(`${escape(searchstring)}`, "i"), // For first occurrence + '$&' + ) + + "..." + : ""; // highlights the match + + let in_code = false; + if (!["page", "section"].includes(result.category.toLowerCase())) { + in_code = true; + } + + // We encode the full url to escape some special characters which can lead to broken links + let result_div = ` + +
    +
    ${escape(result.title)}
    +
    ${result.category}
    +
    +

    + ${display_result} +

    +
    + ${display_link} +
    +
    + ${search_divider} + `; + + return result_div; + } + + self.onmessage = function (e) { + let query = e.data; + let results = index.search(query, { + filter: (result) => { + // Only return relevant results + return result.score >= 1; + }, + combineWith: "AND", + }); + + // Pre-filter to deduplicate and limit to 200 per category to the extent + // possible without knowing what the filters are. + let filtered_results = []; + let counts = {}; + for (let filter of filters) { + counts[filter] = 0; + } + let present = {}; + + for (let result of results) { + cat = result.category; + cnt = counts[cat]; + if (cnt < 200) { + id = cat + "---" + result.location; + if (present[id]) { + continue; + } + present[id] = true; + filtered_results.push({ + location: result.location, + category: cat, + div: make_search_result(result, query), + }); + } + } + + postMessage(filtered_results); + }; +} + +// `worker = Threads.@spawn worker_function(documenterSearchIndex)`, but in JavaScript! +const filters = [ + ...new Set(documenterSearchIndex["docs"].map((x) => x.category)), +]; +const worker_str = + "(" + + worker_function.toString() + + ")(" + + JSON.stringify(documenterSearchIndex["docs"]) + + "," + + JSON.stringify(documenterBaseURL) + + "," + + JSON.stringify(filters) + + ")"; +const worker_blob = new Blob([worker_str], { type: "text/javascript" }); +const worker = new Worker(URL.createObjectURL(worker_blob)); + +/////// SEARCH MAIN /////// + +// Whether the worker is currently handling a search. This is a boolean +// as the worker only ever handles 1 or 0 searches at a time. +var worker_is_running = false; + +// The last search text that was sent to the worker. This is used to determine +// if the worker should be launched again when it reports back results. +var last_search_text = ""; + +// The results of the last search. This, in combination with the state of the filters +// in the DOM, is used compute the results to display on calls to update_search. +var unfiltered_results = []; + +// Which filter is currently selected +var selected_filter = ""; + +$(document).on("input", ".documenter-search-input", function (event) { + if (!worker_is_running) { + launch_search(); + } +}); + +function launch_search() { + worker_is_running = true; + last_search_text = $(".documenter-search-input").val(); + worker.postMessage(last_search_text); +} + +worker.onmessage = function (e) { + if (last_search_text !== $(".documenter-search-input").val()) { + launch_search(); + } else { + worker_is_running = false; + } + + unfiltered_results = e.data; + update_search(); +}; + +$(document).on("click", ".search-filter", function () { + if ($(this).hasClass("search-filter-selected")) { + selected_filter = ""; + } else { + selected_filter = $(this).text().toLowerCase(); + } + + // This updates search results and toggles classes for UI: + update_search(); +}); + +/** + * Make/Update the search component + */ +function update_search() { + let querystring = $(".documenter-search-input").val(); + + if (querystring.trim()) { + if (selected_filter == "") { + results = unfiltered_results; + } else { + results = unfiltered_results.filter((result) => { + return selected_filter == result.category.toLowerCase(); + }); + } + + let search_result_container = ``; + let modal_filters = make_modal_body_filters(); + let search_divider = `
    `; + + if (results.length) { + let links = []; + let count = 0; + let search_results = ""; + + for (var i = 0, n = results.length; i < n && count < 200; ++i) { + let result = results[i]; + if (result.location && !links.includes(result.location)) { + search_results += result.div; + count++; + links.push(result.location); + } + } + + if (count == 1) { + count_str = "1 result"; + } else if (count == 200) { + count_str = "200+ results"; + } else { + count_str = count + " results"; + } + let result_count = `
    ${count_str}
    `; + + search_result_container = ` +
    + ${modal_filters} + ${search_divider} + ${result_count} +
    + ${search_results} +
    +
    + `; + } else { + search_result_container = ` +
    + ${modal_filters} + ${search_divider} +
    0 result(s)
    +
    +
    No result found!
    + `; + } + + if ($(".search-modal-card-body").hasClass("is-justify-content-center")) { + $(".search-modal-card-body").removeClass("is-justify-content-center"); + } + + $(".search-modal-card-body").html(search_result_container); + } else { + if (!$(".search-modal-card-body").hasClass("is-justify-content-center")) { + $(".search-modal-card-body").addClass("is-justify-content-center"); + } + + $(".search-modal-card-body").html(` +
    Type something to get started!
    + `); + } +} + +/** + * Make the modal filter html + * + * @returns string + */ +function make_modal_body_filters() { + let str = filters + .map((val) => { + if (selected_filter == val.toLowerCase()) { + return `${val}`; + } else { + return `${val}`; + } + }) + .join(""); + + return ` +
    + Filters: + ${str} +
    `; +} + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// Modal settings dialog +$(document).ready(function () { + var settings = $("#documenter-settings"); + $("#documenter-settings-button").click(function () { + settings.toggleClass("is-active"); + }); + // Close the dialog if X is clicked + $("#documenter-settings button.delete").click(function () { + settings.removeClass("is-active"); + }); + // Close dialog if ESC is pressed + $(document).keyup(function (e) { + if (e.keyCode == 27) settings.removeClass("is-active"); + }); +}); + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +$(document).ready(function () { + let search_modal_header = ` + + `; + + let initial_search_body = ` +
    Type something to get started!
    + `; + + let search_modal_footer = ` +
    + + Ctrl + + / to search + + esc to close +
    + `; + + $(document.body).append( + ` + + ` + ); + + document.querySelector(".docs-search-query").addEventListener("click", () => { + openModal(); + }); + + document + .querySelector(".close-search-modal") + .addEventListener("click", () => { + closeModal(); + }); + + $(document).on("click", ".search-result-link", function () { + closeModal(); + }); + + document.addEventListener("keydown", (event) => { + if ((event.ctrlKey || event.metaKey) && event.key === "/") { + openModal(); + } else if (event.key === "Escape") { + closeModal(); + } + + return false; + }); + + // Functions to open and close a modal + function openModal() { + let searchModal = document.querySelector("#search-modal"); + + searchModal.classList.add("is-active"); + document.querySelector(".documenter-search-input").focus(); + } + + function closeModal() { + let searchModal = document.querySelector("#search-modal"); + let initial_search_body = ` +
    Type something to get started!
    + `; + + searchModal.classList.remove("is-active"); + document.querySelector(".documenter-search-input").blur(); + + if (!$(".search-modal-card-body").hasClass("is-justify-content-center")) { + $(".search-modal-card-body").addClass("is-justify-content-center"); + } + + $(".documenter-search-input").val(""); + $(".search-modal-card-body").html(initial_search_body); + } + + document + .querySelector("#search-modal .modal-background") + .addEventListener("click", () => { + closeModal(); + }); +}); + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// Manages the showing and hiding of the sidebar. +$(document).ready(function () { + var sidebar = $("#documenter > .docs-sidebar"); + var sidebar_button = $("#documenter-sidebar-button"); + sidebar_button.click(function (ev) { + ev.preventDefault(); + sidebar.toggleClass("visible"); + if (sidebar.hasClass("visible")) { + // Makes sure that the current menu item is visible in the sidebar. + $("#documenter .docs-menu a.is-active").focus(); + } + }); + $("#documenter > .docs-main").bind("click", function (ev) { + if ($(ev.target).is(sidebar_button)) { + return; + } + if (sidebar.hasClass("visible")) { + sidebar.removeClass("visible"); + } + }); +}); + +// Resizes the package name / sitename in the sidebar if it is too wide. +// Inspired by: https://github.com/davatron5000/FitText.js +$(document).ready(function () { + e = $("#documenter .docs-autofit"); + function resize() { + var L = parseInt(e.css("max-width"), 10); + var L0 = e.width(); + if (L0 > L) { + var h0 = parseInt(e.css("font-size"), 10); + e.css("font-size", (L * h0) / L0); + // TODO: make sure it survives resizes? + } + } + // call once and then register events + resize(); + $(window).resize(resize); + $(window).on("orientationchange", resize); +}); + +// Scroll the navigation bar to the currently selected menu item +$(document).ready(function () { + var sidebar = $("#documenter .docs-menu").get(0); + var active = $("#documenter .docs-menu .is-active").get(0); + if (typeof active !== "undefined") { + sidebar.scrollTop = active.offsetTop - sidebar.offsetTop - 15; + } +}); + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// Theme picker setup +$(document).ready(function () { + // onchange callback + $("#documenter-themepicker").change(function themepick_callback(ev) { + var themename = $("#documenter-themepicker option:selected").attr("value"); + if (themename === "auto") { + // set_theme(window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'); + window.localStorage.removeItem("documenter-theme"); + } else { + // set_theme(themename); + window.localStorage.setItem("documenter-theme", themename); + } + // We re-use the global function from themeswap.js to actually do the swapping. + set_theme_from_local_storage(); + }); + + // Make sure that the themepicker displays the correct theme when the theme is retrieved + // from localStorage + if (typeof window.localStorage !== "undefined") { + var theme = window.localStorage.getItem("documenter-theme"); + if (theme !== null) { + $("#documenter-themepicker option").each(function (i, e) { + e.selected = e.value === theme; + }); + } + } +}); + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// update the version selector with info from the siteinfo.js and ../versions.js files +$(document).ready(function () { + // If the version selector is disabled with DOCUMENTER_VERSION_SELECTOR_DISABLED in the + // siteinfo.js file, we just return immediately and not display the version selector. + if ( + typeof DOCUMENTER_VERSION_SELECTOR_DISABLED === "boolean" && + DOCUMENTER_VERSION_SELECTOR_DISABLED + ) { + return; + } + + var version_selector = $("#documenter .docs-version-selector"); + var version_selector_select = $("#documenter .docs-version-selector select"); + + version_selector_select.change(function (x) { + target_href = version_selector_select + .children("option:selected") + .get(0).value; + window.location.href = target_href; + }); + + // add the current version to the selector based on siteinfo.js, but only if the selector is empty + if ( + typeof DOCUMENTER_CURRENT_VERSION !== "undefined" && + $("#version-selector > option").length == 0 + ) { + var option = $( + "" + ); + version_selector_select.append(option); + } + + if (typeof DOC_VERSIONS !== "undefined") { + var existing_versions = version_selector_select.children("option"); + var existing_versions_texts = existing_versions.map(function (i, x) { + return x.text; + }); + DOC_VERSIONS.forEach(function (each) { + var version_url = documenterBaseURL + "/../" + each + "/"; + var existing_id = $.inArray(each, existing_versions_texts); + // if not already in the version selector, add it as a new option, + // otherwise update the old option with the URL and enable it + if (existing_id == -1) { + var option = $( + "" + ); + version_selector_select.append(option); + } else { + var option = existing_versions[existing_id]; + option.value = version_url; + option.disabled = false; + } + }); + } + + // only show the version selector if the selector has been populated + if (version_selector_select.children("option").length > 0) { + version_selector.toggleClass("visible"); + } +}); + +}) diff --git a/v0.5.0/assets/ductapelogo.svg b/v0.5.0/assets/ductapelogo.svg new file mode 100644 index 00000000..d8ad1697 --- /dev/null +++ b/v0.5.0/assets/ductapelogo.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v0.5.0/assets/gen_logo.jl b/v0.5.0/assets/gen_logo.jl new file mode 100644 index 00000000..2c4ff3ce --- /dev/null +++ b/v0.5.0/assets/gen_logo.jl @@ -0,0 +1,171 @@ +using FLOWMath +using DuctAPE +const dt = DuctAPE + +include("plots_default.jl") +include("geometry.jl") + +##### ----- COLORS ----- ##### + +julia_blue = RGB(0.251, 0.388, 0.847) +julia_green = RGB(0.22, 0.596, 0.149) +julia_purple = RGB(0.584, 0.345, 0.698) +julia_red = RGB(0.796, 0.235, 0.2) + +##### ----- GEOMETRY ----- ##### + +Rtip = 1.25 +Rhub = 0.25 +duct_chord = 2.0 +duct_le_radius = 0.025 +te_camber_angle = 9.0 +wedge_angle = 10.0 + +# - Plotting Options - # +plot(; axis=false) +lw = 5 +ms = 4 +fa = 1 / 3 + +# blue rotor +rotorzloc = 0.35 * duct_chord +r = range(Rhub + 0.01, Rtip - 0.025, 11) +c = range(0.35, 0.25, 11) .* Rtip +t = range(70.0, 30.0, 11) + +lez = rotorzloc .- c .* 0.25 .* sind.(t) +tez = rotorzloc .+ c .* 0.75 .* sind.(t) + +plot!( + lez, + r; + label="", + color=julia_blue, + linewidth=1.5, + fillrange=Rhub * ones(11), + fillcolor=julia_blue, + fillalpha=fa, +) +plot!( + tez, + r; + label="", + color=julia_blue, + linewidth=1.5, + fillrange=Rhub * ones(11), + fillcolor=julia_blue, + fillalpha=fa, +) +plot!( + [lez[end]; tez[end]], + [Rtip; Rtip] .- 0.02; + label="", + linewidth=0, + fillrange=Rhub * ones(11), + fillcolor=julia_blue, + fillalpha=fa, +) + +# green duct +nz, nr, cz, cr, _, _ = duct_geom( + Rtip, duct_chord, duct_le_radius, te_camber_angle, wedge_angle; duct_alpha=2, N=60 +) +nr .+= Rtip +cr .+= Rtip + +plot!( + cz, + cr; + aspectratio=1, + label="", + fillrange=nr, + color=julia_green, + fillcolor=julia_green, + fillalpha=fa, + linewidth=lw, +) +plot!(nz, nr; label="", color=julia_green, linewidth=lw) + +# red center body +cbz, cbr, _, _, _ = centerbody_geom( + Rhub, + duct_chord; + cb_nc_le=0.125, + cb_nc_stop=0.35, + cb_tc_start=0.5, + cb_ncp_z=0.125, + cb_tcp_z=0.5, + cb_te_r=0.0, + cb_te_z=0.9, + N=60, + fmspline=(x, y) -> FLOWMath.Akima(x, y), + smooth=true, +) + +plot!( + cbz[2:(end - 2)], + cbr[2:(end - 2)]; + label="", + color=julia_red, + linewidth=lw, + fillrange=zero(cbr), + fillcolor=julia_red, + fillalpha=fa, +) +cbr[end] = 0.0 + +# purple wake + +# assemble ducted_rotor +include("define_ducted_rotor.jl") + +# get wake geometry +problem_dimensions, prepost_containers, _, _, _, _, _, _ = dt.setup_analysis( + ducted_rotor, dt.set_options(; finterp=FLOWMath.akima) +) +wg = prepost_containers.wake_grid +for i in 2:2:size(wg, 3) + plot!(wg[1, :, i], wg[2, :, i]; color=julia_purple, label="", linewidth=lw - 1) +end + +# finish rotor bits +plot!( + rotorzloc .* ones(length(wg[2, 1, 2:2:end])), + wg[2, 1, 2:2:end]; + label="", + color=julia_blue, + markerstrokecolor=julia_blue, + # markershape=:hline, + markersize=ms, + markershape=:rect, + linewidth=lw, + seriestype=:scatter, +) + +# axis of rotation +plot!( + [nz[1], wg[1, end, 1]], + -0.001 * ones(2); + color=plotsgray, + label="", + lw=lw - 1, + linestyle=:dashdot, +) + +# plot!(nz[13] * ones(2), [-0.075, 0.075]; color=plotsgray, label="", lw=lw - 1) +# plot!(nz[13] * ones(2) .+ 0.075, [-0.075, 0.075]; color=plotsgray, label="", lw=lw - 1) +# plot!(wg[1, end - 5, 1] * ones(2), [-0.075, 0.075]; color=plotsgray, label="", lw=lw - 1) +# plot!( +# wg[1, end - 5, 1] * ones(2) .- 0.075, +# [-0.075, 0.075]; +# color=plotsgray, +# label="", +# lw=lw - 1, +# ) + +##### ----- SAVE ----- ##### +plot!(; grid=false, background_color=nothing) +savefig("src/assets/logo.png") + +plot!(; background_color=:white, size=(600, 600)) +savefig("src/assets/ductapelogo.svg") diff --git a/v0.5.0/assets/gen_trim_logo.sh b/v0.5.0/assets/gen_trim_logo.sh new file mode 100755 index 00000000..17d00b30 --- /dev/null +++ b/v0.5.0/assets/gen_trim_logo.sh @@ -0,0 +1,2 @@ +julia --project=../../ gen_logo.jl +magick mogrify -trim logo.png diff --git a/v0.5.0/assets/geometry.jl b/v0.5.0/assets/geometry.jl new file mode 100644 index 00000000..d08fc819 --- /dev/null +++ b/v0.5.0/assets/geometry.jl @@ -0,0 +1,607 @@ +using NURBS +using StaticArrays +using FLOWMath +const fm = FLOWMath + +""" +cosine spacing, but also scales and transforms +""" +function scaled_cosine_spacing(N, scale, translate; mypi=pi) + return translate .+ scale * [0.5 * (1 - cos(mypi * (i - 1) / (N - 1))) for i in 1:N] +end + +""" + +# Arguments +- `Rhub::Float` : maximum hub radius +- `duct_chord::Float` : dimensional duct (annular airfoil) chord + +# Keyword Arguments: +- `cb_nc_le::Float=0.125` : centerbody nosecone leading edge, non-dimensionalized by duct_chord +- `cb_nc_stop::Float=0.35` : centerbody nosecone stop point, non-dimensionalized by duct_chord +- `cb_tc_start::Float=1.0` : centerbody tailcone start point, non-dimensionalized by duct_chord +- `cb_ncp_z::Float=0.25` : centerbody nosecone spline 2nd control point axial location, non-dimensionalized by duct_chord +- `cb_tcp_z::Float=0.5` : centerbody tailcone spline 2nd control point axial location, non-dimensionalized by duct_chord +- `cb_te_r::Float=1.0` : centerbody trailing edge radial position, non-dimensionalized by Rhub +- `cb_te_z::Float=1.1` : centerbody trailing edge axial position, non-dimensionalized by duct_chord +- `N::Float=60` : number of points to use in intermediate splines +""" +function centerbody_geom( + Rhub, + duct_chord; + cb_nc_le=0.0625, + cb_nc_stop=0.35, + cb_tc_start=1.0, + cb_ncp_z=0.35, + cb_tcp_z=0.5, + cb_te_r=0.9, + cb_te_z=1.1, + N=60, + fmspline=(x, y) -> FLOWMath.Akima(x, y, 1e-100, 1e-200), + smooth=false, +) + TF = promote_type( + typeof(Rhub), + typeof(duct_chord), + typeof(cb_nc_le), + typeof(cb_nc_stop), + typeof(cb_tc_start), + typeof(cb_ncp_z), + typeof(cb_tcp_z), + typeof(cb_te_r), + typeof(cb_te_z), + ) + + # - Dimensionalize Everything - # + cb_nc_le *= duct_chord + cb_nc_stop *= duct_chord + cb_tc_start *= duct_chord + cb_te_r *= Rhub + cb_te_z *= duct_chord + + # - define flat portion first - # + flatx = range(cb_nc_stop, cb_tc_start, 10) + flatr = ones(TF, 10) * Rhub + + # - Nose Cone quadratic spline - # + # knot vector + knots = TF[0.0, 0.0, 0.0, 1.0, 1.0, 1.0] + + # Nose control points + #nose cpx2 is based on nose tip angle + nosecone_cps = [ + SVector(cb_nc_le, 0.0, 0.0), + SVector(cb_nc_le + cb_ncp_z * (cb_nc_stop - cb_nc_le), flatr[1], 0.0), + SVector(flatx[1], flatr[1], 0.0), + ] + + # spline + nose_spline = NURBS.NURBScurve( + NURBS.NURB(2, knots, ones(TF, size(nosecone_cps, 1))), nosecone_cps + ) + + # - tail cone quadratic spline - # + # tail control points + tail_cps = [ + SVector(flatx[end], flatr[end], 0.0), + SVector(flatx[end] + cb_tcp_z * (cb_te_z - cb_tc_start), flatr[end], 0.0), + SVector(cb_te_z, cb_te_r, 0.0), + ] + + # spline + tail_spline = NURBS.NURBScurve( + NURBS.NURB(2, knots, ones(TF, size(tail_cps, 1))), tail_cps + ) + + # - Get nose and tail points - # + u = collect(TF, range(0.0, 1.0; length=N + 1)) + Cw_nose = nose_spline(u) + Cw_tail = tail_spline(u) + + # - Respline the whole geometry to make things smooth - # + # assemble array + zs = [getindex.(Cw_nose, 1); flatx[2:(end - 1)]; getindex.(Cw_tail, 1)] + rs = [getindex.(Cw_nose, 2); flatr[2:(end - 1)]; getindex.(Cw_tail, 2)] + + if smooth + # re-spline with akima spline and cosine spacing + scale = tail_cps[end][1] - nosecone_cps[1][1] + translate = cb_nc_le + cbz = scaled_cosine_spacing(N, scale, translate) + cbsp = fmspline(zs, rs) + cbr = cbsp(cbz) + + return cbz, cbr, cbsp, nosecone_cps, tail_cps + else + return zs, rs, nosecone_cps, tail_cps + end +end + +function duct_geom( + Rtip, duct_chord, duct_le_radius, te_camber_angle, wedge_angle; duct_alpha=0, N=60 +) + TF = promote_type( + eltype(Rtip), + eltype(duct_chord), + eltype(duct_le_radius), + eltype(te_camber_angle), + eltype(wedge_angle), + ) + + boat_tail_angle = wedge_angle * pi / 360.0 + te_camber_angle *= pi / 180.0 + + knots3 = TF[0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0] + + nacelle_cps = [ + SVector(0.0, 0.0, 0.0), + SVector(0.0, sqrt(duct_le_radius) / 3.0, 0.0), + SVector(1.0 / 3.0, 2.0 * tan(te_camber_angle + boat_tail_angle) / 3.0, 0.0), + SVector(1.0, 0.0, 0.0), + ] + + casing_cps = [ + SVector(0.0, 0.0, 0.0), + SVector(0.0, -sqrt(duct_le_radius) / 3.0, 0.0), + SVector(1.0 / 3.0, 2.0 * tan(te_camber_angle - boat_tail_angle) / 3.0, 0.0), + SVector(1.0, 0.0, 0.0), + ] + + # spline + nacelle_spline = NURBS.NURBScurve( + NURB(3, knots3, ones(TF, size(nacelle_cps, 1))), nacelle_cps + ) + + casing_spline = NURBS.NURBScurve( + NURB(3, knots3, ones(TF, size(casing_cps, 1))), casing_cps + ) + + u = collect(TF, range(0.0, 1.0; length=N + 1)) + + Cw_nacelle = nacelle_spline(u) * duct_chord + Cw_casing = casing_spline(u) * duct_chord + + # get rotation matrix + R = [ + cosd(-duct_alpha) -sind(-duct_alpha) 0.0 + sind(-duct_alpha) cosd(-duct_alpha) 0.0 + 0.0 0.0 1.0 + ] + # rotate and translate + rotated_nacelle = [R * c for c in Cw_nacelle] + rotated_casing = [R * c for c in Cw_casing] + + nacelle_zs = getindex.(rotated_nacelle, 1) + nacelle_rs = getindex.(rotated_nacelle, 2) + + casing_zs = getindex.(rotated_casing, 1) + casing_rs = getindex.(rotated_casing, 2) + + return nacelle_zs, nacelle_rs, casing_zs, casing_rs, nacelle_cps, casing_cps +end + +function duct_geom( + Rtip, + duct_chord; + duct_le_r=1.1, + duct_te_r=1.0, + duct_le_z=0.0, + duct_inlet_stop=1.0 / 3.0, + duct_outlet_start=2.0 / 3.0, + duct_outlet_cpz=0.5, + nacelle_cpz=0.5, + nacelle_thickness_var=2.0, + N=60, + fmspline=(x, y) -> FLOWMath.Akima(x, y, 1e-100, 1e-200), + smooth=false, +) + TF = promote_type( + typeof(Rtip), + typeof(duct_chord), + typeof(duct_le_z), + typeof(duct_le_r), + typeof(duct_te_r), + typeof(duct_inlet_stop), + typeof(duct_outlet_start), + ) + + # - Dimensionalize Everything - # + duct_le_r *= Rtip + duct_te_r *= Rtip + duct_le_z *= duct_chord + duct_inlet_stop *= duct_chord + duct_outlet_start *= duct_chord + nacelle_cpz *= duct_chord + nacelle_cpr = (duct_le_r - Rtip) * nacelle_thickness_var + duct_le_r + duct_outlet_cpz *= (duct_chord - duct_outlet_start) + duct_outlet_cpz += duct_outlet_start + delta_r_te = duct_te_r - Rtip + + # - define flat portion first - # + flatx = range(duct_inlet_stop, duct_outlet_start, 10) + flatr = ones(TF, 10) * Rtip + + # - Define outlet spline - # + # knot vector + knots2 = TF[0.0, 0.0, 0.0, 1.0, 1.0, 1.0] + + # control points + outlet_cps = [ + SVector(flatx[end], flatr[end], 0.0), + SVector(duct_outlet_cpz, flatr[end], 0.0), + SVector(duct_chord, duct_te_r, 0.0), + ] + + # spline + outlet_spline = NURBS.NURBScurve( + NURB(2, knots2, ones(TF, size(outlet_cps, 1))), outlet_cps + ) + + # - Define inlet spline - # + # control points + inlet_cps = [ + SVector(0.0, duct_le_r, 0.0), + SVector(0.0, flatr[end], 0.0), + SVector(flatx[1], flatr[1], 0.0), + ] + + # spline + inlet_spline = NURBS.NURBScurve( + NURB(2, knots2, ones(TF, size(inlet_cps, 1))), inlet_cps + ) + + ## --- Nominal, does not preserve trailing edge angle --- ### + # knot vector + knots3 = TF[0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0] + # control points + nacelle_cps = [ + SVector(0.0, duct_le_r, 0.0), + SVector(0.0, nacelle_cpr, 0.0), + SVector(nacelle_cpz, nacelle_cpr, 0.0), + SVector(duct_chord, duct_te_r, 0.0), + ] + + # spline + nacelle_spline = NURBS.NURBScurve( + NURB(3, knots3, ones(TF, size(nacelle_cps, 1))), nacelle_cps + ) + + # - Get Casing Points - # + u = collect(TF, range(0.0, 1.0; length=N + 1)) + Cw_inlet = inlet_spline(u) + Cw_outlet = outlet_spline(u) + + # assemble array + casing_zs = [getindex.(Cw_inlet, 1); flatx[2:(end - 1)]; getindex.(Cw_outlet, 1)] + casing_rs = [getindex.(Cw_inlet, 2); flatr[2:(end - 1)]; getindex.(Cw_outlet, 2)] + + # - Get Nacelle Points - # + u = collect(TF, range(0.0, 1.0; length=N + 1)) + Cw_nacelle = nacelle_spline(u) + + # assemble array + nacelle_zs = getindex.(Cw_nacelle, 1) + nacelle_rs = getindex.(Cw_nacelle, 2) + + if smooth + # - Respline the whole geometry to make things smooth - # + # re-spline with akima spline and cosine spacing + cz = scaled_cosine_spacing(N, duct_chord, duct_le_z) + csp = fmspline(casing_zs, casing_rs) + cr = csp(cz) + + # re-spline with akima spline and cosine spacing + nz = scaled_cosine_spacing(N, duct_chord, duct_le_z) + nsp = fmspline(nacelle_zs, nacelle_rs) + nr = nsp(nz) + + return cz, cr, nz, nr, inlet_cps, outlet_cps, nacelle_cps + else + return casing_zs, + casing_rs, nacelle_zs, nacelle_rs, inlet_cps, outlet_cps, + nacelle_cps + end +end +""" + + +# Arguments: + +- `Rtip::Float` : rotor tip radius +- `duct_chord::Float` : duct (annular airfoil) chord length +- `duct_le_r::Float` : duct leading edge radial position, non-dimensionalized by Rtip +- `duct_te_r::Float` : duct trailing edge radial position, non-dimensionalized by Rtip + +# Keyword Arguments: + +- `duct_le_z::Float=0.0` : duct leading edge axial position +- `duct_inlet_stop::Float=0.35` : duct inlet stop point (analogous to centerbody nosecone stop point, also non-dimensionalized by duct_chord) +- `duct_outlet_start::Float=0.65` : duct outlet start point (analogous to centerbody tailcone start point, also non-dimensionalized by duct_chord) +- `duct_outlet_cpz::Float=0.5` : duct casing outlet spline 2nd control point axial location, non-dimensionalized by outlet length +- `nacelle_cpz::Float=0.5` : duct nacelle (outer side) spline 3rd control point axial location, non-dimensionalized by duct_chord +- `nacelle_thickness_var::Float=3.0` : duct nacelle (outer side) 2nd and 3rd control point radial position, scaled relative to duct_le_r and non-dimensionalized by Rtip. In other words, setting this to 1.0 will give the same distance from the rotor tip to the duct leading edge as from the duct leading edge to the 2nd and 3rd nacelle control points. Although this does control the nacelle thickness, it does not direclty set the max thickness point of the nacelle. +""" +function duct_geom( + Rtip, + duct_chord, + duct_le_r, + duct_le_radius; + duct_te_r=1.0, + wedge_angle=14.0, + duct_le_z=0.0, + duct_inlet_stop=1.0 / 3.0, + duct_outlet_start=2.0 / 3.0, + duct_outlet_cpz=0.5, + nacelle_cpz=0.5, + nacelle_thickness_var=2.0, + N=60, + fmspline=(x, y) -> FLOWMath.Akima(x, y, 1e-100, 1e-200), + smooth=false, +) + TF = promote_type( + typeof(Rtip), + typeof(duct_chord), + typeof(duct_le_z), + typeof(duct_le_r), + typeof(duct_te_r), + typeof(duct_inlet_stop), + typeof(duct_outlet_start), + ) + + # - Dimensionalize Everything - # + duct_le_r *= Rtip + duct_te_r *= Rtip + duct_le_z *= duct_chord + duct_inlet_stop *= duct_chord + duct_outlet_start *= duct_chord + nacelle_cpz *= duct_chord + nacelle_cpr = (duct_le_r - Rtip) * nacelle_thickness_var + duct_le_r + duct_outlet_cpz *= (duct_chord - duct_outlet_start) + duct_outlet_cpz += duct_outlet_start + wedge_angle *= pi / 180.0 + delta_r_te = duct_te_r - Rtip + + # - define flat portion first - # + flatx = range(duct_inlet_stop, duct_outlet_start, 10) + flatr = ones(TF, 10) * Rtip + + # - Define outlet spline - # + # knot vector + knots2 = TF[0.0, 0.0, 0.0, 1.0, 1.0, 1.0] + + # control points + # if duct_te_r <= Rtip + outlet_cps = [ + SVector(flatx[end], flatr[end], 0.0), + SVector(duct_outlet_cpz, flatr[end], 0.0), + SVector(duct_chord, duct_te_r, 0.0), + ] + # else + # ncp3z0 = duct_chord - (nacelle_cpr - Rtip) / tan(wedge_angle) + # upper_theta = atan((nacelle_cpr - duct_te_r), duct_chord - ncp3z0) + # duct_outlet_cpz = duct_chord - (duct_te_r - Rtip) / tan(wedge_angle - upper_theta) + # println("duct_outlet_cpz = ", duct_outlet_cpz) + # outlet_cps = [ + # SVector(flatx[end], flatr[end], 0.0), + # SVector(duct_outlet_cpz, flatr[end], 0.0), + # SVector(duct_chord, duct_te_r, 0.0), + # ] + # end + + # spline + outlet_spline = NURBS.NURBScurve( + NURB(2, knots2, ones(TF, size(outlet_cps, 1))), outlet_cps + ) + + # - Define inlet spline - # + # control points + inlet_cps = [ + SVector(0.0, duct_le_r, 0.0), + SVector(0.0, flatr[end], 0.0), + SVector(flatx[1], flatr[1], 0.0), + ] + + # spline + inlet_spline = NURBS.NURBScurve( + NURB(2, knots2, ones(TF, size(inlet_cps, 1))), inlet_cps + ) + + # # - Define nacelle spline - # + # ### --- NURBS with only 3 pts (see Rajnarayan paper) --- ### + # lower_theta = atan((Rtip-duct_te_r)/(duct_chord - duct_outlet_cpz)) + # println("beta = ", (lower_theta+wedge_angle)*180/pi) + # delta_r_te = (duct_te_r - duct_le_r) + # knotsN = TF[0.0, 0.0, 0.0, 1.0, 1.0, 1.0] + # nacelle_cps = [ + # SVector(0.0, duct_le_r, 0.0), + # SVector(0.0, duct_le_r + delta_r_te + tan(lower_theta+wedge_angle), 0.0), + # SVector(duct_chord, duct_te_r, 0.0), + # ] + # nacelle_weights = [1.0; sqrt(duct_le_radius / 2.0) / (delta_r_te + tan(boat_tail_angle)); 1.0] + # nacelle_spline = NURBS.NURBScurve(NURB(2, knotsN, nacelle_weights), nacelle_cps) + + ### --- vary z-pos of 3rd control point to maintain angle --- ### + knots3 = TF[0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0] + if duct_te_r <= Rtip + lower_theta = -atan(delta_r_te, (duct_chord - duct_outlet_cpz)) + ncp3z = duct_chord - (nacelle_cpr - duct_te_r) / tan(wedge_angle + lower_theta) + nacelle_cps = [ + SVector(0.0, duct_le_r, 0.0), + SVector(0.0, duct_le_r + sqrt(duct_le_radius) * ncp3z, 0.0), + SVector(ncp3z, nacelle_cpr, 0.0), + SVector(duct_chord, duct_te_r, 0.0), + ] + + else + # ncp3z0 = duct_chord - (nacelle_cpr - Rtip) / tan(wedge_angle) + # upper_theta = atan((nacelle_cpr - duct_te_r), duct_chord - ncp3z0) + # println("upper_theta = ", upper_theta * 180 / pi) + # nacelle_cpr += tan(upper_theta - wedge_angle) * (duct_chord - ncp3z0) + # println("nacelle_cpr = ", nacelle_cpr) + # nacelle_cps = [ + # SVector(0.0, duct_le_r, 0.0), + # SVector(0.0, duct_le_r + sqrt(duct_le_radius) * ncp3z0, 0.0), + # SVector(ncp3z0, nacelle_cpr, 0.0), + # SVector(duct_chord, duct_te_r, 0.0), + # ] + # nacelle_spline = NURBS.NURBScurve( + # NURB(3, knots3, ones(TF, size(nacelle_cps, 1))), nacelle_cps + # ) + + ## --- Nominal, does not preserve trailing edge angle --- ### + # knot vector + # knots3 = TF[0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0] + # control points + nacelle_cps = [ + SVector(0.0, duct_le_r, 0.0), + SVector(0.0, nacelle_cpr, 0.0), + SVector(nacelle_cpz, nacelle_cpr, 0.0), + SVector(duct_chord, duct_te_r, 0.0), + ] + end + # spline + nacelle_spline = NURBS.NURBScurve( + NURB(3, knots3, ones(TF, size(nacelle_cps, 1))), nacelle_cps + ) + + # - Get Casing Points - # + u = collect(TF, range(0.0, 1.0; length=N + 1)) + Cw_inlet = inlet_spline(u) + Cw_outlet = outlet_spline(u) + + # assemble array + casing_zs = [getindex.(Cw_inlet, 1); flatx[2:(end - 1)]; getindex.(Cw_outlet, 1)] + casing_rs = [getindex.(Cw_inlet, 2); flatr[2:(end - 1)]; getindex.(Cw_outlet, 2)] + + # - Get Nacelle Points - # + u = collect(TF, range(0.0, 1.0; length=N + 1)) + Cw_nacelle = nacelle_spline(u) + + # assemble array + nacelle_zs = getindex.(Cw_nacelle, 1) + nacelle_rs = getindex.(Cw_nacelle, 2) + + if smooth + # - Respline the whole geometry to make things smooth - # + # re-spline with akima spline and cosine spacing + cz = scaled_cosine_spacing(N, duct_chord, duct_le_z) + csp = fmspline(casing_zs, casing_rs) + cr = csp(cz) + + # re-spline with akima spline and cosine spacing + nz = scaled_cosine_spacing(N, duct_chord, duct_le_z) + nsp = fmspline(nacelle_zs, nacelle_rs) + nr = nsp(nz) + + return cz, cr, nz, nr, inlet_cps, outlet_cps, nacelle_cps + else + return casing_zs, + casing_rs, nacelle_zs, nacelle_rs, inlet_cps, outlet_cps, + nacelle_cps + end +end + +""" + +see centerbody_geom and duct_geom for input descriptions +""" +function bodies_from_params( + Rhub, + Rtip, + duct_chord, + duct_te_r, + duct_outlet_start, + duct_le_z, + duct_le_r, + # duct_le_radius, + # duct_te_camber_angle, + # duct_wedge_angle, + # duct_alpha, + duct_inlet_stop, + duct_outlet_cpz, + nacelle_cpz, + nacelle_thickness_var, + cb_nc_le, + cb_ncp_z, + cb_nc_stop, + cb_tc_start, + cb_tcp_z, + cb_te_z, + cb_te_r; + N=60, + smooth=false, +) + + # - Get Centerbody Coordinates - # + cbz, cbr, _, _ = centerbody_geom( + Rhub, + duct_chord; + cb_nc_le=cb_nc_le, + cb_nc_stop=cb_nc_stop, + cb_tc_start=cb_tc_start, + cb_ncp_z=cb_ncp_z, + cb_tcp_z=cb_tcp_z, + cb_te_r=cb_te_r, + cb_te_z=cb_te_z, + N=N, + smooth=smooth, + ) + + # # - Calculate duct_le_r and duct_te_r + # if cb_nc_le <= 0.0 + # r_hub_inlet = cbsp(cb_nc_le * duct_chord) + # else + # r_hub_inlet = 0.0 + # end + # r_hub_exit = cbsp(duct_chord) + # duct_le_r = sqrt(duct_inlet_area / pi + r_hub_inlet^2) + # duct_te_r = sqrt(duct_outlet_area / pi + r_hub_exit^2) + + # # - Get duct geometry coordinates - # + cz, cr, nz, nr, _, _, _ = duct_geom( + Rtip, + duct_chord; + duct_le_r=duct_le_r, + duct_te_r=duct_te_r, + duct_le_z=duct_le_z, + duct_inlet_stop=duct_inlet_stop, + duct_outlet_start=duct_outlet_start, + duct_outlet_cpz=duct_outlet_cpz, + nacelle_cpz=nacelle_cpz, + nacelle_thickness_var=nacelle_thickness_var, + N=N, + smooth=smooth, + ) + + # cz, cr, nz, nr, _, _, _ = duct_geom( + # Rtip, + # duct_chord, + # duct_le_r, + # duct_le_radius; + # duct_te_r=duct_te_r, + # wedge_angle=wedge_angle, + # duct_le_z=duct_le_z, + # duct_inlet_stop=duct_inlet_stop, + # duct_outlet_start=duct_outlet_start, + # duct_outlet_cpz=duct_outlet_cpz, + # nacelle_cpz=nacelle_cpz, + # nacelle_thickness_var=nacelle_thickness_var, + # N=N, + # smooth=smooth, + # ) + + # nz, nr, cz, cr, _, _ = duct_geom( + # Rtip, + # duct_chord, + # duct_le_radius, + # duct_te_camber_angle, + # duct_wedge_angle; + # duct_alpha=duct_alpha, + # ) + + # assemble full duct geometry + dz = [reverse(cz); nz[2:end]] + dr = [reverse(cr); nr[2:end]] + + return [dz dr], [cbz cbr] +end diff --git a/v0.5.0/assets/logo.png b/v0.5.0/assets/logo.png new file mode 100644 index 00000000..9d0471b7 Binary files /dev/null and b/v0.5.0/assets/logo.png differ diff --git a/v0.5.0/assets/plots_default.jl b/v0.5.0/assets/plots_default.jl new file mode 100644 index 00000000..00f12c5a --- /dev/null +++ b/v0.5.0/assets/plots_default.jl @@ -0,0 +1,477 @@ +#= +Default Plots Settings for creating tikz native figures for dissertation +=# + +using Plots; +gr() +using LaTeXStrings +using Measures +using Printf + +# - COLORS - # +byublue = RGB(0.0, 46.0 / 255, 93.0 / 255) #BYU Navy Blue +darkblue = RGB(0 / 255, 25 / 255, 50 / 255) +byured = RGB(155.0 / 255, 0, 0) #"BYU" Red +darkred = RGB(50 / 255, 0 / 255, 25 / 255) +# middlegray = RGB(128.0 / 255, 128.0 / 255, 128.0 / 255) #Middle Gray +# myblue = RGB(0.0 / 255, 92.0 / 255, 171.0 / 255) # royal blue +# myred = RGB(192.0 / 255, 83.0 / 255, 103.0 / 255) # royal red +# mygreen = RGB(143.0 / 255, 166.0 / 255, 81.0 / 255) # royal green +# mygray = RGB(130.0 / 255, 130.0 / 255, 130.0 / 255) # royal gray + +primary = RGB(0, 92 / 255, 171 / 255) #blue +secondary = RGB(190 / 255, 76 / 255, 77 / 255) #red +tertiary = RGB(105 / 255, 174 / 255, 95 / 255) #green +quternary = RGB(167 / 255, 84 / 255, 164 / 255) #purple +quinary = RGB(190 / 255, 147 / 255, 61 / 255) #yellow +plotsgray = RGB(128 / 255, 128 / 255, 128 / 255) #gray + +function plots_default(; + # #:Plot + # background_color=RGBA(1, 1, 1, 0), + background_color=nothing, + # background_color_outside = nothing, + # display_type, + dpi=300, + # extra_kwargs, + # extra_plot_kwargs, + fontfamily="Palatino_Roman", + # fontfamily="Palatino Roman", + foreground_color=RGB(128 / 255, 128 / 255, 128 / 255), #gray, plotsgray, + # html_output_format, + # inset_subplots, + # layout, + # link, + # overwrite_figure, + # plot_title, + # plot_title_location, + # plot_titlefontcolor, + # plot_titlefontfamily, + # plot_titlefonthalign, + # plot_titlefontrotation, + # plot_titlefontsize, + # plot_titlefontvalign, + # pos, + # show, + size=(400, 300) .* 5.0 ./ 4.0, #it appears that 100 ≈ 1inch in LaTeX + # size=(600, 450), #it appears that 100 ≈ 1inch in LaTeX + # size=(800, 600), #it appears that 100 ≈ 1inch in LaTeX + # tex_output_standalone, + # thickness_scaling, + # warn_on_unsupported, + # window_title, + + ####################### + # :Series + ####################### + # arrow, + # bar_edges, + # bar_position, + # bar_width, + # bins, + # colorbar_entry, + # connections, + # contour_labels, + # contours, + # extra_kwargs, + # fill_z, + fillalpha=0.125, + fillcolor=RGB(128 / 255, 128 / 255, 128 / 255), + # fillrange, + # group, + # hover, + # label, + # levels, + # line_z, + # linealpha, + # linecolor, + # linestyle, + linewidth=1.0, + # marker_z, + # markeralpha, + # markercolor, + # markershape, + markersize=1, + markerstrokealpha=0, + # markerstrokecolor, + # markerstrokestyle, + # markerstrokewidth, + # normalize, + # orientation, + # primary, + # quiver, + # ribbon, + # series_annotations, + # seriesalpha, + # seriescolor, + # seriestype, + # show_empty_bins, + # smooth, + # stride, + # subplot, + # weights, + # x, + # xerror, + # y, + # yerror, + # z, + # zerror + + ####################### + # :Subplot + ####################### + # annotationcolor, + annotationfontfamily="Palatino_Roman", + annotationfontsize=10, + # annotationhalign, + # annotationrotation, + # annotations, + # annotationvalign, + # aspect_ratio, + background_color_inside=nothing, + background_color_legend=nothing, + background_color_subplot=nothing, + # bottom_margin, + # camera, + # clims, + color_palette=[ + RGB(0, 92 / 255, 171 / 255), #blue + RGB(190 / 255, 76 / 255, 77 / 255), + RGB(105 / 255, 174 / 255, 95 / 255), + RGB(167 / 255, 84 / 255, 164 / 255), + RGB(190 / 255, 147 / 255, 61 / 255), + RGB(128 / 255, 128 / 255, 128 / 255), #gray + ], + #color_palette=[ + # RGB(0.0, 46.0 / 255.0, 93.0 / 255.0), #BYU Blue + # RGB(155.0 / 255.0, 0.0, 0.0), #"BYU" Red + # RGB(128.0 / 255.0, 128.0 / 255.0, 128.0 / 255.0), #Middle Gray + # RGB(162.0 / 255.0, 227.0 / 255.0, 162.0 / 255.0), #Light Green + # RGB(243.0 / 255.0, 209.0 / 255.0, 243.0 / 255.0), #Pink + # RGB(205.0 / 255.0, 179.0 / 255.0, 0.0), #Yellow + # RGB(161.0 / 255.0, 161.0 / 255.0, 226.0 / 255.0), #Purple + #], + # colorbar, + # colorbar_continuous_values, + # colorbar_discrete_values, + # colorbar_fontfamily, + # colorbar_formatter, + # colorbar_scale, + # colorbar_tickfontcolor, + # colorbar_tickfontfamily, + # colorbar_tickfonthalign, + # colorbar_tickfontrotation, + # colorbar_tickfontsize, + # colorbar_tickfontvalign, + # colorbar_ticks, + # colorbar_title, + # colorbar_title_location, + # colorbar_titlefontcolor, + # colorbar_titlefontfamily, + # colorbar_titlefonthalign, + # colorbar_titlefontrotation, + # colorbar_titlefontsize, + # colorbar_titlefontvalign, + # extra_kwargs, + # fontfamily_subplot, + foreground_color_legend=nothing, + # foreground_color_subplot, + # foreground_color_title, + # framestyle = :zerolines, + # left_margin, + # legend=false, # include legend true/false + # legendfontcolor, + # legendfontfamily, + # legendfonthalign, + # legendfontrotation, + # legendfontsize, + # legendfontvalign, + # legendtitle, + # legendtitlefontcolor, + # legendtitlefontfamily, + # legendtitlefonthalign, + # legendtitlefontrotation, + # legendtitlefontsize, + # legendtitlefontvalign, + margin=0mm, + # projection, + # right_margin, + # subplot_index, + # title, + # titlefontcolor, + # titlefontfamily, + # titlefonthalign, + # titlefontrotation, + titlefontsize=14, + # titlefontvalign, + # titlelocation, + # top_margin + + ##################### + # :Axis + ##################### + # discrete_values, + # draw_arrow, + # flip, + # foreground_color_axis, + # foreground_color_border, + # foreground_color_grid, + # foreground_color_guide, + # foreground_color_minor_grid, + # foreground_color_text, + # formatter, + grid=false, # background grid true/false + # gridalpha, + # gridlinewidth=0.5, + # gridstyle, + # guide, + # guide_position, + # guidefontcolor, + # guidefontfamily, + # guidefonthalign, + # guidefontrotation, + guidefontsize=11, + # guidefontvalign, + # ylims=(0, 3), + # xlims=(0, 2), + # link, + # minorgrid, + # minorgridalpha, + # minorgridlinewidth, + # minorgridstyle, + # minorticks, + # mirror, + # rotation, + # scale, + # showaxis = false, #turns off spines and tick labels, but not ticks + # tick_direction, + # tickfontcolor, + # tickfontfamily, + # tickfonthalign, + # tickfontrotation, + tickfontsize=8, + # tickfontvalign, + # ticks=false, #turns off tick marks + # widen, +) + Plots.default() + Plots.default(; + # #:Plot + background_color=background_color, + # display_type, + dpi=dpi, + # extra_kwargs=extra_kwargs, + # extra_plot_kwargs=extra_plot_kwargs, + fontfamily=fontfamily, + foreground_color=foreground_color, + # html_output_format, + # inset_subplots, + # layout, + # link, + # overwrite_figure, + # plot_title, + # plot_title_location, + # plot_titlefontcolor, + # plot_titlefontfamily, + # plot_titlefonthalign, + # plot_titlefontrotation, + # plot_titlefontsize, + # plot_titlefontvalign, + # pos, + # show, + size=size, + # tex_output_standalone, + # thickness_scaling, + # warn_on_unsupported, + # window_title, + + ####################### + # :Series + ####################### + # arrow, + # bar_edges, + # bar_position, + # bar_width, + # bins, + # colorbar_entry, + # connections, + # contour_labels, + # contours, + # extra_kwargs, + # fill_z, + # fillalpha=fillalpha, + # fillcolor=fillcolor, + # fillrange, + # group, + # hover, + # label, + # levels, + # line_z, + # linealpha, + # linecolor, + # linestyle, + linewidth=linewidth, + # marker_z, + # markeralpha, + # markercolor, + # markershape, + markersize=markersize, + markerstrokealpha=markerstrokealpha, + # markerstrokecolor, + # markerstrokestyle, + # markerstrokewidth, + # normalize, + # orientation, + # primary, + # quiver, + # ribbon, + # series_annotations, + # seriesalpha, + # seriescolor, + # seriestype, + # show_empty_bins, + # smooth, + # stride, + # subplot, + # weights, + # x, + # xerror, + # y, + # yerror, + # z, + # zerror + + ####################### + # :Subplot + ####################### + # annotationcolor, + annotationfontfamily=annotationfontfamily, + annotationfontsize=annotationfontsize, + # annotationhalign, + # annotationrotation, + # annotations, + # annotationvalign, + # aspect_ratio, + background_color_inside=background_color_inside, + background_color_legend=background_color_legend, + background_color_subplot=background_color_subplot, + # bottom_margin, + # camera, + # clims, + color_palette=color_palette, + # colorbar, + # colorbar_continuous_values, + # colorbar_discrete_values, + # colorbar_fontfamily, + # colorbar_formatter, + # colorbar_scale, + # colorbar_tickfontcolor, + # colorbar_tickfontfamily, + # colorbar_tickfonthalign, + # colorbar_tickfontrotation, + # colorbar_tickfontsize, + # colorbar_tickfontvalign, + # colorbar_ticks, + # colorbar_title, + # colorbar_title_location, + # colorbar_titlefontcolor, + # colorbar_titlefontfamily, + # colorbar_titlefonthalign, + # colorbar_titlefontrotation, + # colorbar_titlefontsize, + # colorbar_titlefontvalign, + # extra_kwargs, + # fontfamily_subplot, + foreground_color_legend=foreground_color_legend, + # foreground_color_subplot, + # foreground_color_title, + # framestyle = :zerolines, + # left_margin, + # legend=false, # include legend true/false + # legendfontcolor, + # legendfontfamily, + # legendfonthalign, + # legendfontrotation, + # legendfontsize, + # legendfontvalign, + # legendtitle, + # legendtitlefontcolor, + # legendtitlefontfamily, + # legendtitlefonthalign, + # legendtitlefontrotation, + # legendtitlefontsize, + # legendtitlefontvalign, + margin=margin, + # projection, + # right_margin, + # subplot_index, + # title, + # titlefontcolor, + # titlefontfamily, + # titlefonthalign, + # titlefontrotation, + titlefontsize=titlefontsize, + # titlefontvalign, + # titlelocation, + # top_margin + + ##################### + # :Axis + ##################### + # discrete_values, + # draw_arrow, + # flip, + # foreground_color_axis, + # foreground_color_border, + # foreground_color_grid, + # foreground_color_guide, + # foreground_color_minor_grid, + # foreground_color_text, + # formatter, + grid=grid, + # gridalpha, + # gridlinewidth=0.5, + # gridstyle, + # guide, + # guide_position, + # guidefontcolor, + # guidefontfamily, + # guidefonthalign, + # guidefontrotation, + guidefontsize=guidefontsize, + # guidefontvalign, + # ylims=(0, 3), + # xlims=(0, 2), + # link, + # minorgrid, + # minorgridalpha, + # minorgridlinewidth, + # minorgridstyle, + # minorticks, + # mirror, + # rotation, + # scale, + # showaxis = false, #turns off spines and tick labels, but not ticks + # tick_direction, + # tickfontcolor, + # tickfontfamily, + # tickfonthalign, + # tickfontrotation, + tickfontsize=tickfontsize, + # tickfontvalign, + # ticks=false, #turns off tick marks + # widen, + ) + + return nothing +end + +plots_default() + +function latexsize(x, y) + return (x * 96, y * 96) +end + +# - Rotate y-axis - # +extra_kwargs = Dict(:subplot => Dict("ylabel style" => "{align=center, rotate=-90}")) + diff --git a/v0.5.0/assets/themes/catppuccin-frappe.css b/v0.5.0/assets/themes/catppuccin-frappe.css new file mode 100644 index 00000000..32e3f008 --- /dev/null +++ b/v0.5.0/assets/themes/catppuccin-frappe.css @@ -0,0 +1 @@ +html.theme--catppuccin-frappe .pagination-previous,html.theme--catppuccin-frappe .pagination-next,html.theme--catppuccin-frappe .pagination-link,html.theme--catppuccin-frappe .pagination-ellipsis,html.theme--catppuccin-frappe .file-cta,html.theme--catppuccin-frappe .file-name,html.theme--catppuccin-frappe .select select,html.theme--catppuccin-frappe .textarea,html.theme--catppuccin-frappe .input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-frappe .button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:.4em;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.5em - 1px);padding-left:calc(0.75em - 1px);padding-right:calc(0.75em - 1px);padding-top:calc(0.5em - 1px);position:relative;vertical-align:top}html.theme--catppuccin-frappe .pagination-previous:focus,html.theme--catppuccin-frappe .pagination-next:focus,html.theme--catppuccin-frappe .pagination-link:focus,html.theme--catppuccin-frappe .pagination-ellipsis:focus,html.theme--catppuccin-frappe .file-cta:focus,html.theme--catppuccin-frappe .file-name:focus,html.theme--catppuccin-frappe .select select:focus,html.theme--catppuccin-frappe .textarea:focus,html.theme--catppuccin-frappe .input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input:focus,html.theme--catppuccin-frappe .button:focus,html.theme--catppuccin-frappe .is-focused.pagination-previous,html.theme--catppuccin-frappe .is-focused.pagination-next,html.theme--catppuccin-frappe .is-focused.pagination-link,html.theme--catppuccin-frappe .is-focused.pagination-ellipsis,html.theme--catppuccin-frappe .is-focused.file-cta,html.theme--catppuccin-frappe .is-focused.file-name,html.theme--catppuccin-frappe .select select.is-focused,html.theme--catppuccin-frappe .is-focused.textarea,html.theme--catppuccin-frappe .is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .is-focused.button,html.theme--catppuccin-frappe .pagination-previous:active,html.theme--catppuccin-frappe .pagination-next:active,html.theme--catppuccin-frappe .pagination-link:active,html.theme--catppuccin-frappe .pagination-ellipsis:active,html.theme--catppuccin-frappe .file-cta:active,html.theme--catppuccin-frappe .file-name:active,html.theme--catppuccin-frappe .select select:active,html.theme--catppuccin-frappe .textarea:active,html.theme--catppuccin-frappe .input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input:active,html.theme--catppuccin-frappe .button:active,html.theme--catppuccin-frappe .is-active.pagination-previous,html.theme--catppuccin-frappe .is-active.pagination-next,html.theme--catppuccin-frappe .is-active.pagination-link,html.theme--catppuccin-frappe .is-active.pagination-ellipsis,html.theme--catppuccin-frappe .is-active.file-cta,html.theme--catppuccin-frappe .is-active.file-name,html.theme--catppuccin-frappe .select select.is-active,html.theme--catppuccin-frappe .is-active.textarea,html.theme--catppuccin-frappe .is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-frappe .is-active.button{outline:none}html.theme--catppuccin-frappe .pagination-previous[disabled],html.theme--catppuccin-frappe .pagination-next[disabled],html.theme--catppuccin-frappe .pagination-link[disabled],html.theme--catppuccin-frappe .pagination-ellipsis[disabled],html.theme--catppuccin-frappe .file-cta[disabled],html.theme--catppuccin-frappe .file-name[disabled],html.theme--catppuccin-frappe .select select[disabled],html.theme--catppuccin-frappe .textarea[disabled],html.theme--catppuccin-frappe .input[disabled],html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input[disabled],html.theme--catppuccin-frappe .button[disabled],fieldset[disabled] html.theme--catppuccin-frappe .pagination-previous,html.theme--catppuccin-frappe fieldset[disabled] .pagination-previous,fieldset[disabled] html.theme--catppuccin-frappe .pagination-next,html.theme--catppuccin-frappe fieldset[disabled] .pagination-next,fieldset[disabled] html.theme--catppuccin-frappe .pagination-link,html.theme--catppuccin-frappe fieldset[disabled] .pagination-link,fieldset[disabled] html.theme--catppuccin-frappe .pagination-ellipsis,html.theme--catppuccin-frappe fieldset[disabled] .pagination-ellipsis,fieldset[disabled] html.theme--catppuccin-frappe .file-cta,html.theme--catppuccin-frappe fieldset[disabled] .file-cta,fieldset[disabled] html.theme--catppuccin-frappe .file-name,html.theme--catppuccin-frappe fieldset[disabled] .file-name,fieldset[disabled] html.theme--catppuccin-frappe .select select,fieldset[disabled] html.theme--catppuccin-frappe .textarea,fieldset[disabled] html.theme--catppuccin-frappe .input,fieldset[disabled] html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-frappe fieldset[disabled] .select select,html.theme--catppuccin-frappe .select fieldset[disabled] select,html.theme--catppuccin-frappe fieldset[disabled] .textarea,html.theme--catppuccin-frappe fieldset[disabled] .input,html.theme--catppuccin-frappe fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-frappe #documenter .docs-sidebar fieldset[disabled] form.docs-search>input,fieldset[disabled] html.theme--catppuccin-frappe .button,html.theme--catppuccin-frappe fieldset[disabled] .button{cursor:not-allowed}html.theme--catppuccin-frappe .tabs,html.theme--catppuccin-frappe .pagination-previous,html.theme--catppuccin-frappe .pagination-next,html.theme--catppuccin-frappe .pagination-link,html.theme--catppuccin-frappe .pagination-ellipsis,html.theme--catppuccin-frappe .breadcrumb,html.theme--catppuccin-frappe .file,html.theme--catppuccin-frappe .button,.is-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.theme--catppuccin-frappe .navbar-link:not(.is-arrowless)::after,html.theme--catppuccin-frappe .select:not(.is-multiple):not(.is-loading)::after{border:3px solid rgba(0,0,0,0);border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:0.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:0.625em}html.theme--catppuccin-frappe .admonition:not(:last-child),html.theme--catppuccin-frappe .tabs:not(:last-child),html.theme--catppuccin-frappe .pagination:not(:last-child),html.theme--catppuccin-frappe .message:not(:last-child),html.theme--catppuccin-frappe .level:not(:last-child),html.theme--catppuccin-frappe .breadcrumb:not(:last-child),html.theme--catppuccin-frappe .block:not(:last-child),html.theme--catppuccin-frappe .title:not(:last-child),html.theme--catppuccin-frappe .subtitle:not(:last-child),html.theme--catppuccin-frappe .table-container:not(:last-child),html.theme--catppuccin-frappe .table:not(:last-child),html.theme--catppuccin-frappe .progress:not(:last-child),html.theme--catppuccin-frappe .notification:not(:last-child),html.theme--catppuccin-frappe .content:not(:last-child),html.theme--catppuccin-frappe .box:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-frappe .modal-close,html.theme--catppuccin-frappe .delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,0.2);border:none;border-radius:9999px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}html.theme--catppuccin-frappe .modal-close::before,html.theme--catppuccin-frappe .delete::before,html.theme--catppuccin-frappe .modal-close::after,html.theme--catppuccin-frappe .delete::after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--catppuccin-frappe .modal-close::before,html.theme--catppuccin-frappe .delete::before{height:2px;width:50%}html.theme--catppuccin-frappe .modal-close::after,html.theme--catppuccin-frappe .delete::after{height:50%;width:2px}html.theme--catppuccin-frappe .modal-close:hover,html.theme--catppuccin-frappe .delete:hover,html.theme--catppuccin-frappe .modal-close:focus,html.theme--catppuccin-frappe .delete:focus{background-color:rgba(10,10,10,0.3)}html.theme--catppuccin-frappe .modal-close:active,html.theme--catppuccin-frappe .delete:active{background-color:rgba(10,10,10,0.4)}html.theme--catppuccin-frappe .is-small.modal-close,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.modal-close,html.theme--catppuccin-frappe .is-small.delete,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}html.theme--catppuccin-frappe .is-medium.modal-close,html.theme--catppuccin-frappe .is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}html.theme--catppuccin-frappe .is-large.modal-close,html.theme--catppuccin-frappe .is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}html.theme--catppuccin-frappe .control.is-loading::after,html.theme--catppuccin-frappe .select.is-loading::after,html.theme--catppuccin-frappe .loader,html.theme--catppuccin-frappe .button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #838ba7;border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}html.theme--catppuccin-frappe .hero-video,html.theme--catppuccin-frappe .modal-background,html.theme--catppuccin-frappe .modal,html.theme--catppuccin-frappe .image.is-square img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--catppuccin-frappe .image.is-square .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--catppuccin-frappe .image.is-1by1 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--catppuccin-frappe .image.is-1by1 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--catppuccin-frappe .image.is-5by4 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--catppuccin-frappe .image.is-5by4 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--catppuccin-frappe .image.is-4by3 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--catppuccin-frappe .image.is-4by3 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--catppuccin-frappe .image.is-3by2 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--catppuccin-frappe .image.is-3by2 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--catppuccin-frappe .image.is-5by3 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--catppuccin-frappe .image.is-5by3 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--catppuccin-frappe .image.is-16by9 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--catppuccin-frappe .image.is-16by9 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--catppuccin-frappe .image.is-2by1 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--catppuccin-frappe .image.is-2by1 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--catppuccin-frappe .image.is-3by1 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--catppuccin-frappe .image.is-3by1 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--catppuccin-frappe .image.is-4by5 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--catppuccin-frappe .image.is-4by5 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--catppuccin-frappe .image.is-3by4 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--catppuccin-frappe .image.is-3by4 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--catppuccin-frappe .image.is-2by3 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--catppuccin-frappe .image.is-2by3 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--catppuccin-frappe .image.is-3by5 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--catppuccin-frappe .image.is-3by5 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--catppuccin-frappe .image.is-9by16 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--catppuccin-frappe .image.is-9by16 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--catppuccin-frappe .image.is-1by2 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--catppuccin-frappe .image.is-1by2 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--catppuccin-frappe .image.is-1by3 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--catppuccin-frappe .image.is-1by3 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio,.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}html.theme--catppuccin-frappe .navbar-burger{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#f5f5f5 !important}a.has-text-light:hover,a.has-text-light:focus{color:#dbdbdb !important}.has-background-light{background-color:#f5f5f5 !important}.has-text-dark{color:#414559 !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#2b2e3c !important}.has-background-dark{background-color:#414559 !important}.has-text-primary{color:#8caaee !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#6089e7 !important}.has-background-primary{background-color:#8caaee !important}.has-text-primary-light{color:#edf2fc !important}a.has-text-primary-light:hover,a.has-text-primary-light:focus{color:#c1d1f6 !important}.has-background-primary-light{background-color:#edf2fc !important}.has-text-primary-dark{color:#153a8e !important}a.has-text-primary-dark:hover,a.has-text-primary-dark:focus{color:#1c4cbb !important}.has-background-primary-dark{background-color:#153a8e !important}.has-text-link{color:#8caaee !important}a.has-text-link:hover,a.has-text-link:focus{color:#6089e7 !important}.has-background-link{background-color:#8caaee !important}.has-text-link-light{color:#edf2fc !important}a.has-text-link-light:hover,a.has-text-link-light:focus{color:#c1d1f6 !important}.has-background-link-light{background-color:#edf2fc !important}.has-text-link-dark{color:#153a8e !important}a.has-text-link-dark:hover,a.has-text-link-dark:focus{color:#1c4cbb !important}.has-background-link-dark{background-color:#153a8e !important}.has-text-info{color:#81c8be !important}a.has-text-info:hover,a.has-text-info:focus{color:#5db9ac !important}.has-background-info{background-color:#81c8be !important}.has-text-info-light{color:#f1f9f8 !important}a.has-text-info-light:hover,a.has-text-info-light:focus{color:#cde9e5 !important}.has-background-info-light{background-color:#f1f9f8 !important}.has-text-info-dark{color:#2d675f !important}a.has-text-info-dark:hover,a.has-text-info-dark:focus{color:#3c8a7f !important}.has-background-info-dark{background-color:#2d675f !important}.has-text-success{color:#a6d189 !important}a.has-text-success:hover,a.has-text-success:focus{color:#8ac364 !important}.has-background-success{background-color:#a6d189 !important}.has-text-success-light{color:#f4f9f0 !important}a.has-text-success-light:hover,a.has-text-success-light:focus{color:#d8ebcc !important}.has-background-success-light{background-color:#f4f9f0 !important}.has-text-success-dark{color:#446a29 !important}a.has-text-success-dark:hover,a.has-text-success-dark:focus{color:#5b8f38 !important}.has-background-success-dark{background-color:#446a29 !important}.has-text-warning{color:#e5c890 !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#dbb467 !important}.has-background-warning{background-color:#e5c890 !important}.has-text-warning-light{color:#fbf7ee !important}a.has-text-warning-light:hover,a.has-text-warning-light:focus{color:#f1e2c5 !important}.has-background-warning-light{background-color:#fbf7ee !important}.has-text-warning-dark{color:#78591c !important}a.has-text-warning-dark:hover,a.has-text-warning-dark:focus{color:#a17726 !important}.has-background-warning-dark{background-color:#78591c !important}.has-text-danger{color:#e78284 !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#df575a !important}.has-background-danger{background-color:#e78284 !important}.has-text-danger-light{color:#fceeee !important}a.has-text-danger-light:hover,a.has-text-danger-light:focus{color:#f3c3c4 !important}.has-background-danger-light{background-color:#fceeee !important}.has-text-danger-dark{color:#9a1e20 !important}a.has-text-danger-dark:hover,a.has-text-danger-dark:focus{color:#c52629 !important}.has-background-danger-dark{background-color:#9a1e20 !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#414559 !important}.has-background-grey-darker{background-color:#414559 !important}.has-text-grey-dark{color:#51576d !important}.has-background-grey-dark{background-color:#51576d !important}.has-text-grey{color:#626880 !important}.has-background-grey{background-color:#626880 !important}.has-text-grey-light{color:#737994 !important}.has-background-grey-light{background-color:#737994 !important}.has-text-grey-lighter{color:#838ba7 !important}.has-background-grey-lighter{background-color:#838ba7 !important}.has-text-white-ter{color:#f5f5f5 !important}.has-background-white-ter{background-color:#f5f5f5 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.is-flex-direction-row{flex-direction:row !important}.is-flex-direction-row-reverse{flex-direction:row-reverse !important}.is-flex-direction-column{flex-direction:column !important}.is-flex-direction-column-reverse{flex-direction:column-reverse !important}.is-flex-wrap-nowrap{flex-wrap:nowrap !important}.is-flex-wrap-wrap{flex-wrap:wrap !important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse !important}.is-justify-content-flex-start{justify-content:flex-start !important}.is-justify-content-flex-end{justify-content:flex-end !important}.is-justify-content-center{justify-content:center !important}.is-justify-content-space-between{justify-content:space-between !important}.is-justify-content-space-around{justify-content:space-around !important}.is-justify-content-space-evenly{justify-content:space-evenly !important}.is-justify-content-start{justify-content:start !important}.is-justify-content-end{justify-content:end !important}.is-justify-content-left{justify-content:left !important}.is-justify-content-right{justify-content:right !important}.is-align-content-flex-start{align-content:flex-start !important}.is-align-content-flex-end{align-content:flex-end !important}.is-align-content-center{align-content:center !important}.is-align-content-space-between{align-content:space-between !important}.is-align-content-space-around{align-content:space-around !important}.is-align-content-space-evenly{align-content:space-evenly !important}.is-align-content-stretch{align-content:stretch !important}.is-align-content-start{align-content:start !important}.is-align-content-end{align-content:end !important}.is-align-content-baseline{align-content:baseline !important}.is-align-items-stretch{align-items:stretch !important}.is-align-items-flex-start{align-items:flex-start !important}.is-align-items-flex-end{align-items:flex-end !important}.is-align-items-center{align-items:center !important}.is-align-items-baseline{align-items:baseline !important}.is-align-items-start{align-items:start !important}.is-align-items-end{align-items:end !important}.is-align-items-self-start{align-items:self-start !important}.is-align-items-self-end{align-items:self-end !important}.is-align-self-auto{align-self:auto !important}.is-align-self-flex-start{align-self:flex-start !important}.is-align-self-flex-end{align-self:flex-end !important}.is-align-self-center{align-self:center !important}.is-align-self-baseline{align-self:baseline !important}.is-align-self-stretch{align-self:stretch !important}.is-flex-grow-0{flex-grow:0 !important}.is-flex-grow-1{flex-grow:1 !important}.is-flex-grow-2{flex-grow:2 !important}.is-flex-grow-3{flex-grow:3 !important}.is-flex-grow-4{flex-grow:4 !important}.is-flex-grow-5{flex-grow:5 !important}.is-flex-shrink-0{flex-shrink:0 !important}.is-flex-shrink-1{flex-shrink:1 !important}.is-flex-shrink-2{flex-shrink:2 !important}.is-flex-shrink-3{flex-shrink:3 !important}.is-flex-shrink-4{flex-shrink:4 !important}.is-flex-shrink-5{flex-shrink:5 !important}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-clickable{cursor:pointer !important;pointer-events:all !important}.is-clipped{overflow:hidden !important}.is-relative{position:relative !important}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.m-0{margin:0 !important}.mt-0{margin-top:0 !important}.mr-0{margin-right:0 !important}.mb-0{margin-bottom:0 !important}.ml-0{margin-left:0 !important}.mx-0{margin-left:0 !important;margin-right:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:.25rem !important}.mt-1{margin-top:.25rem !important}.mr-1{margin-right:.25rem !important}.mb-1{margin-bottom:.25rem !important}.ml-1{margin-left:.25rem !important}.mx-1{margin-left:.25rem !important;margin-right:.25rem !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.m-2{margin:.5rem !important}.mt-2{margin-top:.5rem !important}.mr-2{margin-right:.5rem !important}.mb-2{margin-bottom:.5rem !important}.ml-2{margin-left:.5rem !important}.mx-2{margin-left:.5rem !important;margin-right:.5rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.m-3{margin:.75rem !important}.mt-3{margin-top:.75rem !important}.mr-3{margin-right:.75rem !important}.mb-3{margin-bottom:.75rem !important}.ml-3{margin-left:.75rem !important}.mx-3{margin-left:.75rem !important;margin-right:.75rem !important}.my-3{margin-top:.75rem !important;margin-bottom:.75rem !important}.m-4{margin:1rem !important}.mt-4{margin-top:1rem !important}.mr-4{margin-right:1rem !important}.mb-4{margin-bottom:1rem !important}.ml-4{margin-left:1rem !important}.mx-4{margin-left:1rem !important;margin-right:1rem !important}.my-4{margin-top:1rem !important;margin-bottom:1rem !important}.m-5{margin:1.5rem !important}.mt-5{margin-top:1.5rem !important}.mr-5{margin-right:1.5rem !important}.mb-5{margin-bottom:1.5rem !important}.ml-5{margin-left:1.5rem !important}.mx-5{margin-left:1.5rem !important;margin-right:1.5rem !important}.my-5{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-6{margin:3rem !important}.mt-6{margin-top:3rem !important}.mr-6{margin-right:3rem !important}.mb-6{margin-bottom:3rem !important}.ml-6{margin-left:3rem !important}.mx-6{margin-left:3rem !important;margin-right:3rem !important}.my-6{margin-top:3rem !important;margin-bottom:3rem !important}.m-auto{margin:auto !important}.mt-auto{margin-top:auto !important}.mr-auto{margin-right:auto !important}.mb-auto{margin-bottom:auto !important}.ml-auto{margin-left:auto !important}.mx-auto{margin-left:auto !important;margin-right:auto !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.p-0{padding:0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-left:0 !important;padding-right:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:.25rem !important}.pt-1{padding-top:.25rem !important}.pr-1{padding-right:.25rem !important}.pb-1{padding-bottom:.25rem !important}.pl-1{padding-left:.25rem !important}.px-1{padding-left:.25rem !important;padding-right:.25rem !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.p-2{padding:.5rem !important}.pt-2{padding-top:.5rem !important}.pr-2{padding-right:.5rem !important}.pb-2{padding-bottom:.5rem !important}.pl-2{padding-left:.5rem !important}.px-2{padding-left:.5rem !important;padding-right:.5rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.p-3{padding:.75rem !important}.pt-3{padding-top:.75rem !important}.pr-3{padding-right:.75rem !important}.pb-3{padding-bottom:.75rem !important}.pl-3{padding-left:.75rem !important}.px-3{padding-left:.75rem !important;padding-right:.75rem !important}.py-3{padding-top:.75rem !important;padding-bottom:.75rem !important}.p-4{padding:1rem !important}.pt-4{padding-top:1rem !important}.pr-4{padding-right:1rem !important}.pb-4{padding-bottom:1rem !important}.pl-4{padding-left:1rem !important}.px-4{padding-left:1rem !important;padding-right:1rem !important}.py-4{padding-top:1rem !important;padding-bottom:1rem !important}.p-5{padding:1.5rem !important}.pt-5{padding-top:1.5rem !important}.pr-5{padding-right:1.5rem !important}.pb-5{padding-bottom:1.5rem !important}.pl-5{padding-left:1.5rem !important}.px-5{padding-left:1.5rem !important;padding-right:1.5rem !important}.py-5{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-6{padding:3rem !important}.pt-6{padding-top:3rem !important}.pr-6{padding-right:3rem !important}.pb-6{padding-bottom:3rem !important}.pl-6{padding-left:3rem !important}.px-6{padding-left:3rem !important;padding-right:3rem !important}.py-6{padding-top:3rem !important;padding-bottom:3rem !important}.p-auto{padding:auto !important}.pt-auto{padding-top:auto !important}.pr-auto{padding-right:auto !important}.pb-auto{padding-bottom:auto !important}.pl-auto{padding-left:auto !important}.px-auto{padding-left:auto !important;padding-right:auto !important}.py-auto{padding-top:auto !important;padding-bottom:auto !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:1rem !important}.is-size-7,html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink{font-size:.75rem !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:1rem !important}.is-size-7-mobile{font-size:.75rem !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:1rem !important}.is-size-7-tablet{font-size:.75rem !important}}@media screen and (max-width: 1055px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:1rem !important}.is-size-7-touch{font-size:.75rem !important}}@media screen and (min-width: 1056px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:1rem !important}.is-size-7-desktop{font-size:.75rem !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:1rem !important}.is-size-7-widescreen{font-size:.75rem !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:1rem !important}.is-size-7-fullhd{font-size:.75rem !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1055px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1056px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1055px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1056px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1055px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1056px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1055px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1056px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.is-underlined{text-decoration:underline !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-secondary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-sans-serif{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-monospace{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-family-code{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1055px){.is-block-touch{display:block !important}}@media screen and (min-width: 1056px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1055px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1056px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1055px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1056px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1055px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1056px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1055px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1056px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:0.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:0.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1055px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1056px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1055px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1056px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}html.theme--catppuccin-frappe html{background-color:#303446;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--catppuccin-frappe article,html.theme--catppuccin-frappe aside,html.theme--catppuccin-frappe figure,html.theme--catppuccin-frappe footer,html.theme--catppuccin-frappe header,html.theme--catppuccin-frappe hgroup,html.theme--catppuccin-frappe section{display:block}html.theme--catppuccin-frappe body,html.theme--catppuccin-frappe button,html.theme--catppuccin-frappe input,html.theme--catppuccin-frappe optgroup,html.theme--catppuccin-frappe select,html.theme--catppuccin-frappe textarea{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif}html.theme--catppuccin-frappe code,html.theme--catppuccin-frappe pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--catppuccin-frappe body{color:#c6d0f5;font-size:1em;font-weight:400;line-height:1.5}html.theme--catppuccin-frappe a{color:#8caaee;cursor:pointer;text-decoration:none}html.theme--catppuccin-frappe a strong{color:currentColor}html.theme--catppuccin-frappe a:hover{color:#99d1db}html.theme--catppuccin-frappe code{background-color:#292c3c;color:#c6d0f5;font-size:.875em;font-weight:normal;padding:.1em}html.theme--catppuccin-frappe hr{background-color:#292c3c;border:none;display:block;height:2px;margin:1.5rem 0}html.theme--catppuccin-frappe img{height:auto;max-width:100%}html.theme--catppuccin-frappe input[type="checkbox"],html.theme--catppuccin-frappe input[type="radio"]{vertical-align:baseline}html.theme--catppuccin-frappe small{font-size:.875em}html.theme--catppuccin-frappe span{font-style:inherit;font-weight:inherit}html.theme--catppuccin-frappe strong{color:#b0bef1;font-weight:700}html.theme--catppuccin-frappe fieldset{border:none}html.theme--catppuccin-frappe pre{-webkit-overflow-scrolling:touch;background-color:#292c3c;color:#c6d0f5;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}html.theme--catppuccin-frappe pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}html.theme--catppuccin-frappe table td,html.theme--catppuccin-frappe table th{vertical-align:top}html.theme--catppuccin-frappe table td:not([align]),html.theme--catppuccin-frappe table th:not([align]){text-align:inherit}html.theme--catppuccin-frappe table th{color:#b0bef1}html.theme--catppuccin-frappe .box{background-color:#51576d;border-radius:8px;box-shadow:none;color:#c6d0f5;display:block;padding:1.25rem}html.theme--catppuccin-frappe a.box:hover,html.theme--catppuccin-frappe a.box:focus{box-shadow:0 0.5em 1em -0.125em rgba(10,10,10,0.1),0 0 0 1px #8caaee}html.theme--catppuccin-frappe a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2),0 0 0 1px #8caaee}html.theme--catppuccin-frappe .button{background-color:#292c3c;border-color:#484d69;border-width:1px;color:#8caaee;cursor:pointer;justify-content:center;padding-bottom:calc(0.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(0.5em - 1px);text-align:center;white-space:nowrap}html.theme--catppuccin-frappe .button strong{color:inherit}html.theme--catppuccin-frappe .button .icon,html.theme--catppuccin-frappe .button .icon.is-small,html.theme--catppuccin-frappe .button #documenter .docs-sidebar form.docs-search>input.icon,html.theme--catppuccin-frappe #documenter .docs-sidebar .button form.docs-search>input.icon,html.theme--catppuccin-frappe .button .icon.is-medium,html.theme--catppuccin-frappe .button .icon.is-large{height:1.5em;width:1.5em}html.theme--catppuccin-frappe .button .icon:first-child:not(:last-child){margin-left:calc(-0.5em - 1px);margin-right:.25em}html.theme--catppuccin-frappe .button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-0.5em - 1px)}html.theme--catppuccin-frappe .button .icon:first-child:last-child{margin-left:calc(-0.5em - 1px);margin-right:calc(-0.5em - 1px)}html.theme--catppuccin-frappe .button:hover,html.theme--catppuccin-frappe .button.is-hovered{border-color:#737994;color:#b0bef1}html.theme--catppuccin-frappe .button:focus,html.theme--catppuccin-frappe .button.is-focused{border-color:#737994;color:#769aeb}html.theme--catppuccin-frappe .button:focus:not(:active),html.theme--catppuccin-frappe .button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(140,170,238,0.25)}html.theme--catppuccin-frappe .button:active,html.theme--catppuccin-frappe .button.is-active{border-color:#51576d;color:#b0bef1}html.theme--catppuccin-frappe .button.is-text{background-color:transparent;border-color:transparent;color:#c6d0f5;text-decoration:underline}html.theme--catppuccin-frappe .button.is-text:hover,html.theme--catppuccin-frappe .button.is-text.is-hovered,html.theme--catppuccin-frappe .button.is-text:focus,html.theme--catppuccin-frappe .button.is-text.is-focused{background-color:#292c3c;color:#b0bef1}html.theme--catppuccin-frappe .button.is-text:active,html.theme--catppuccin-frappe .button.is-text.is-active{background-color:#1f212d;color:#b0bef1}html.theme--catppuccin-frappe .button.is-text[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}html.theme--catppuccin-frappe .button.is-ghost{background:none;border-color:rgba(0,0,0,0);color:#8caaee;text-decoration:none}html.theme--catppuccin-frappe .button.is-ghost:hover,html.theme--catppuccin-frappe .button.is-ghost.is-hovered{color:#8caaee;text-decoration:underline}html.theme--catppuccin-frappe .button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-white:hover,html.theme--catppuccin-frappe .button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-white:focus,html.theme--catppuccin-frappe .button.is-white.is-focused{border-color:transparent;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-white:focus:not(:active),html.theme--catppuccin-frappe .button.is-white.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-frappe .button.is-white:active,html.theme--catppuccin-frappe .button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-white[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-white{background-color:#fff;border-color:#fff;box-shadow:none}html.theme--catppuccin-frappe .button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-frappe .button.is-white.is-inverted:hover,html.theme--catppuccin-frappe .button.is-white.is-inverted.is-hovered{background-color:#000}html.theme--catppuccin-frappe .button.is-white.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}html.theme--catppuccin-frappe .button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-frappe .button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-frappe .button.is-white.is-outlined:hover,html.theme--catppuccin-frappe .button.is-white.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-white.is-outlined:focus,html.theme--catppuccin-frappe .button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-white.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-white.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-white.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-frappe .button.is-white.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-frappe .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-white.is-inverted.is-outlined:hover,html.theme--catppuccin-frappe .button.is-white.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-white.is-inverted.is-outlined:focus,html.theme--catppuccin-frappe .button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-frappe .button.is-white.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-white.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-black:hover,html.theme--catppuccin-frappe .button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-black:focus,html.theme--catppuccin-frappe .button.is-black.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-black:focus:not(:active),html.theme--catppuccin-frappe .button.is-black.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-frappe .button.is-black:active,html.theme--catppuccin-frappe .button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-black[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-black{background-color:#0a0a0a;border-color:#0a0a0a;box-shadow:none}html.theme--catppuccin-frappe .button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-black.is-inverted:hover,html.theme--catppuccin-frappe .button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-frappe .button.is-black.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-black.is-outlined:hover,html.theme--catppuccin-frappe .button.is-black.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-black.is-outlined:focus,html.theme--catppuccin-frappe .button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-frappe .button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-frappe .button.is-black.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-black.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-black.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-black.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-frappe .button.is-black.is-inverted.is-outlined:hover,html.theme--catppuccin-frappe .button.is-black.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-black.is-inverted.is-outlined:focus,html.theme--catppuccin-frappe .button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-black.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-black.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-frappe .button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-frappe .button.is-light{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-light:hover,html.theme--catppuccin-frappe .button.is-light.is-hovered{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-light:focus,html.theme--catppuccin-frappe .button.is-light.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-light:focus:not(:active),html.theme--catppuccin-frappe .button.is-light.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-frappe .button.is-light:active,html.theme--catppuccin-frappe .button.is-light.is-active{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-light[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-light{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none}html.theme--catppuccin-frappe .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-frappe .button.is-light.is-inverted:hover,html.theme--catppuccin-frappe .button.is-light.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-light.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#f5f5f5}html.theme--catppuccin-frappe .button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-frappe .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}html.theme--catppuccin-frappe .button.is-light.is-outlined:hover,html.theme--catppuccin-frappe .button.is-light.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-light.is-outlined:focus,html.theme--catppuccin-frappe .button.is-light.is-outlined.is-focused{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}html.theme--catppuccin-frappe .button.is-light.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-light.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-light.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-frappe .button.is-light.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}html.theme--catppuccin-frappe .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-light.is-inverted.is-outlined:hover,html.theme--catppuccin-frappe .button.is-light.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-light.is-inverted.is-outlined:focus,html.theme--catppuccin-frappe .button.is-light.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-frappe .button.is-light.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-light.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}html.theme--catppuccin-frappe .button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-dark,html.theme--catppuccin-frappe .content kbd.button{background-color:#414559;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-dark:hover,html.theme--catppuccin-frappe .content kbd.button:hover,html.theme--catppuccin-frappe .button.is-dark.is-hovered,html.theme--catppuccin-frappe .content kbd.button.is-hovered{background-color:#3c3f52;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-dark:focus,html.theme--catppuccin-frappe .content kbd.button:focus,html.theme--catppuccin-frappe .button.is-dark.is-focused,html.theme--catppuccin-frappe .content kbd.button.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-dark:focus:not(:active),html.theme--catppuccin-frappe .content kbd.button:focus:not(:active),html.theme--catppuccin-frappe .button.is-dark.is-focused:not(:active),html.theme--catppuccin-frappe .content kbd.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(65,69,89,0.25)}html.theme--catppuccin-frappe .button.is-dark:active,html.theme--catppuccin-frappe .content kbd.button:active,html.theme--catppuccin-frappe .button.is-dark.is-active,html.theme--catppuccin-frappe .content kbd.button.is-active{background-color:#363a4a;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-dark[disabled],html.theme--catppuccin-frappe .content kbd.button[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-dark,fieldset[disabled] html.theme--catppuccin-frappe .content kbd.button{background-color:#414559;border-color:#414559;box-shadow:none}html.theme--catppuccin-frappe .button.is-dark.is-inverted,html.theme--catppuccin-frappe .content kbd.button.is-inverted{background-color:#fff;color:#414559}html.theme--catppuccin-frappe .button.is-dark.is-inverted:hover,html.theme--catppuccin-frappe .content kbd.button.is-inverted:hover,html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-hovered,html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-frappe .button.is-dark.is-inverted[disabled],html.theme--catppuccin-frappe .content kbd.button.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-dark.is-inverted,fieldset[disabled] html.theme--catppuccin-frappe .content kbd.button.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#414559}html.theme--catppuccin-frappe .button.is-dark.is-loading::after,html.theme--catppuccin-frappe .content kbd.button.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-dark.is-outlined,html.theme--catppuccin-frappe .content kbd.button.is-outlined{background-color:transparent;border-color:#414559;color:#414559}html.theme--catppuccin-frappe .button.is-dark.is-outlined:hover,html.theme--catppuccin-frappe .content kbd.button.is-outlined:hover,html.theme--catppuccin-frappe .button.is-dark.is-outlined.is-hovered,html.theme--catppuccin-frappe .content kbd.button.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-dark.is-outlined:focus,html.theme--catppuccin-frappe .content kbd.button.is-outlined:focus,html.theme--catppuccin-frappe .button.is-dark.is-outlined.is-focused,html.theme--catppuccin-frappe .content kbd.button.is-outlined.is-focused{background-color:#414559;border-color:#414559;color:#fff}html.theme--catppuccin-frappe .button.is-dark.is-outlined.is-loading::after,html.theme--catppuccin-frappe .content kbd.button.is-outlined.is-loading::after{border-color:transparent transparent #414559 #414559 !important}html.theme--catppuccin-frappe .button.is-dark.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .content kbd.button.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-dark.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .content kbd.button.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-dark.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .content kbd.button.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-dark.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-frappe .content kbd.button.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-dark.is-outlined[disabled],html.theme--catppuccin-frappe .content kbd.button.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-dark.is-outlined,fieldset[disabled] html.theme--catppuccin-frappe .content kbd.button.is-outlined{background-color:transparent;border-color:#414559;box-shadow:none;color:#414559}html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-outlined,html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-outlined:hover,html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-outlined:hover,html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-outlined:focus,html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-outlined:focus,html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-outlined.is-focused,html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-outlined.is-focused{background-color:#fff;color:#414559}html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #414559 #414559 !important}html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-outlined[disabled],html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-outlined,fieldset[disabled] html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-frappe .button.is-primary,html.theme--catppuccin-frappe .docstring>section>a.button.docs-sourcelink{background-color:#8caaee;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-primary:hover,html.theme--catppuccin-frappe .docstring>section>a.button.docs-sourcelink:hover,html.theme--catppuccin-frappe .button.is-primary.is-hovered,html.theme--catppuccin-frappe .docstring>section>a.button.is-hovered.docs-sourcelink{background-color:#81a2ec;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-primary:focus,html.theme--catppuccin-frappe .docstring>section>a.button.docs-sourcelink:focus,html.theme--catppuccin-frappe .button.is-primary.is-focused,html.theme--catppuccin-frappe .docstring>section>a.button.is-focused.docs-sourcelink{border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-primary:focus:not(:active),html.theme--catppuccin-frappe .docstring>section>a.button.docs-sourcelink:focus:not(:active),html.theme--catppuccin-frappe .button.is-primary.is-focused:not(:active),html.theme--catppuccin-frappe .docstring>section>a.button.is-focused.docs-sourcelink:not(:active){box-shadow:0 0 0 0.125em rgba(140,170,238,0.25)}html.theme--catppuccin-frappe .button.is-primary:active,html.theme--catppuccin-frappe .docstring>section>a.button.docs-sourcelink:active,html.theme--catppuccin-frappe .button.is-primary.is-active,html.theme--catppuccin-frappe .docstring>section>a.button.is-active.docs-sourcelink{background-color:#769aeb;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-primary[disabled],html.theme--catppuccin-frappe .docstring>section>a.button.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-primary,fieldset[disabled] html.theme--catppuccin-frappe .docstring>section>a.button.docs-sourcelink{background-color:#8caaee;border-color:#8caaee;box-shadow:none}html.theme--catppuccin-frappe .button.is-primary.is-inverted,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;color:#8caaee}html.theme--catppuccin-frappe .button.is-primary.is-inverted:hover,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.docs-sourcelink:hover,html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-hovered,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-hovered.docs-sourcelink{background-color:#f2f2f2}html.theme--catppuccin-frappe .button.is-primary.is-inverted[disabled],html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-primary.is-inverted,fieldset[disabled] html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;border-color:transparent;box-shadow:none;color:#8caaee}html.theme--catppuccin-frappe .button.is-primary.is-loading::after,html.theme--catppuccin-frappe .docstring>section>a.button.is-loading.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-primary.is-outlined,html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#8caaee;color:#8caaee}html.theme--catppuccin-frappe .button.is-primary.is-outlined:hover,html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.docs-sourcelink:hover,html.theme--catppuccin-frappe .button.is-primary.is-outlined.is-hovered,html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.is-hovered.docs-sourcelink,html.theme--catppuccin-frappe .button.is-primary.is-outlined:focus,html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.docs-sourcelink:focus,html.theme--catppuccin-frappe .button.is-primary.is-outlined.is-focused,html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.is-focused.docs-sourcelink{background-color:#8caaee;border-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .button.is-primary.is-outlined.is-loading::after,html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink::after{border-color:transparent transparent #8caaee #8caaee !important}html.theme--catppuccin-frappe .button.is-primary.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--catppuccin-frappe .button.is-primary.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--catppuccin-frappe .button.is-primary.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--catppuccin-frappe .button.is-primary.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-primary.is-outlined[disabled],html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-primary.is-outlined,fieldset[disabled] html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#8caaee;box-shadow:none;color:#8caaee}html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-outlined,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-outlined:hover,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:hover,html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink,html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-outlined:focus,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:focus,html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-outlined.is-focused,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-outlined.is-focused.docs-sourcelink{background-color:#fff;color:#8caaee}html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #8caaee #8caaee !important}html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-outlined[disabled],html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-outlined,fieldset[disabled] html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-frappe .button.is-primary.is-light,html.theme--catppuccin-frappe .docstring>section>a.button.is-light.docs-sourcelink{background-color:#edf2fc;color:#153a8e}html.theme--catppuccin-frappe .button.is-primary.is-light:hover,html.theme--catppuccin-frappe .docstring>section>a.button.is-light.docs-sourcelink:hover,html.theme--catppuccin-frappe .button.is-primary.is-light.is-hovered,html.theme--catppuccin-frappe .docstring>section>a.button.is-light.is-hovered.docs-sourcelink{background-color:#e2eafb;border-color:transparent;color:#153a8e}html.theme--catppuccin-frappe .button.is-primary.is-light:active,html.theme--catppuccin-frappe .docstring>section>a.button.is-light.docs-sourcelink:active,html.theme--catppuccin-frappe .button.is-primary.is-light.is-active,html.theme--catppuccin-frappe .docstring>section>a.button.is-light.is-active.docs-sourcelink{background-color:#d7e1f9;border-color:transparent;color:#153a8e}html.theme--catppuccin-frappe .button.is-link{background-color:#8caaee;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-link:hover,html.theme--catppuccin-frappe .button.is-link.is-hovered{background-color:#81a2ec;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-link:focus,html.theme--catppuccin-frappe .button.is-link.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-link:focus:not(:active),html.theme--catppuccin-frappe .button.is-link.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(140,170,238,0.25)}html.theme--catppuccin-frappe .button.is-link:active,html.theme--catppuccin-frappe .button.is-link.is-active{background-color:#769aeb;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-link[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-link{background-color:#8caaee;border-color:#8caaee;box-shadow:none}html.theme--catppuccin-frappe .button.is-link.is-inverted{background-color:#fff;color:#8caaee}html.theme--catppuccin-frappe .button.is-link.is-inverted:hover,html.theme--catppuccin-frappe .button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-frappe .button.is-link.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#8caaee}html.theme--catppuccin-frappe .button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-link.is-outlined{background-color:transparent;border-color:#8caaee;color:#8caaee}html.theme--catppuccin-frappe .button.is-link.is-outlined:hover,html.theme--catppuccin-frappe .button.is-link.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-link.is-outlined:focus,html.theme--catppuccin-frappe .button.is-link.is-outlined.is-focused{background-color:#8caaee;border-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #8caaee #8caaee !important}html.theme--catppuccin-frappe .button.is-link.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-link.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-link.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-link.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-link.is-outlined{background-color:transparent;border-color:#8caaee;box-shadow:none;color:#8caaee}html.theme--catppuccin-frappe .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-frappe .button.is-link.is-inverted.is-outlined:hover,html.theme--catppuccin-frappe .button.is-link.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-link.is-inverted.is-outlined:focus,html.theme--catppuccin-frappe .button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#8caaee}html.theme--catppuccin-frappe .button.is-link.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-link.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #8caaee #8caaee !important}html.theme--catppuccin-frappe .button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-frappe .button.is-link.is-light{background-color:#edf2fc;color:#153a8e}html.theme--catppuccin-frappe .button.is-link.is-light:hover,html.theme--catppuccin-frappe .button.is-link.is-light.is-hovered{background-color:#e2eafb;border-color:transparent;color:#153a8e}html.theme--catppuccin-frappe .button.is-link.is-light:active,html.theme--catppuccin-frappe .button.is-link.is-light.is-active{background-color:#d7e1f9;border-color:transparent;color:#153a8e}html.theme--catppuccin-frappe .button.is-info{background-color:#81c8be;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-info:hover,html.theme--catppuccin-frappe .button.is-info.is-hovered{background-color:#78c4b9;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-info:focus,html.theme--catppuccin-frappe .button.is-info.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-info:focus:not(:active),html.theme--catppuccin-frappe .button.is-info.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(129,200,190,0.25)}html.theme--catppuccin-frappe .button.is-info:active,html.theme--catppuccin-frappe .button.is-info.is-active{background-color:#6fc0b5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-info[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-info{background-color:#81c8be;border-color:#81c8be;box-shadow:none}html.theme--catppuccin-frappe .button.is-info.is-inverted{background-color:rgba(0,0,0,0.7);color:#81c8be}html.theme--catppuccin-frappe .button.is-info.is-inverted:hover,html.theme--catppuccin-frappe .button.is-info.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-info.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-info.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#81c8be}html.theme--catppuccin-frappe .button.is-info.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-frappe .button.is-info.is-outlined{background-color:transparent;border-color:#81c8be;color:#81c8be}html.theme--catppuccin-frappe .button.is-info.is-outlined:hover,html.theme--catppuccin-frappe .button.is-info.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-info.is-outlined:focus,html.theme--catppuccin-frappe .button.is-info.is-outlined.is-focused{background-color:#81c8be;border-color:#81c8be;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #81c8be #81c8be !important}html.theme--catppuccin-frappe .button.is-info.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-info.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-info.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-frappe .button.is-info.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-info.is-outlined{background-color:transparent;border-color:#81c8be;box-shadow:none;color:#81c8be}html.theme--catppuccin-frappe .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-info.is-inverted.is-outlined:hover,html.theme--catppuccin-frappe .button.is-info.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-info.is-inverted.is-outlined:focus,html.theme--catppuccin-frappe .button.is-info.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#81c8be}html.theme--catppuccin-frappe .button.is-info.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-info.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #81c8be #81c8be !important}html.theme--catppuccin-frappe .button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-info.is-light{background-color:#f1f9f8;color:#2d675f}html.theme--catppuccin-frappe .button.is-info.is-light:hover,html.theme--catppuccin-frappe .button.is-info.is-light.is-hovered{background-color:#e8f5f3;border-color:transparent;color:#2d675f}html.theme--catppuccin-frappe .button.is-info.is-light:active,html.theme--catppuccin-frappe .button.is-info.is-light.is-active{background-color:#dff1ef;border-color:transparent;color:#2d675f}html.theme--catppuccin-frappe .button.is-success{background-color:#a6d189;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-success:hover,html.theme--catppuccin-frappe .button.is-success.is-hovered{background-color:#9fcd80;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-success:focus,html.theme--catppuccin-frappe .button.is-success.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-success:focus:not(:active),html.theme--catppuccin-frappe .button.is-success.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(166,209,137,0.25)}html.theme--catppuccin-frappe .button.is-success:active,html.theme--catppuccin-frappe .button.is-success.is-active{background-color:#98ca77;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-success[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-success{background-color:#a6d189;border-color:#a6d189;box-shadow:none}html.theme--catppuccin-frappe .button.is-success.is-inverted{background-color:rgba(0,0,0,0.7);color:#a6d189}html.theme--catppuccin-frappe .button.is-success.is-inverted:hover,html.theme--catppuccin-frappe .button.is-success.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-success.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-success.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#a6d189}html.theme--catppuccin-frappe .button.is-success.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-frappe .button.is-success.is-outlined{background-color:transparent;border-color:#a6d189;color:#a6d189}html.theme--catppuccin-frappe .button.is-success.is-outlined:hover,html.theme--catppuccin-frappe .button.is-success.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-success.is-outlined:focus,html.theme--catppuccin-frappe .button.is-success.is-outlined.is-focused{background-color:#a6d189;border-color:#a6d189;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #a6d189 #a6d189 !important}html.theme--catppuccin-frappe .button.is-success.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-success.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-success.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-frappe .button.is-success.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-success.is-outlined{background-color:transparent;border-color:#a6d189;box-shadow:none;color:#a6d189}html.theme--catppuccin-frappe .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-success.is-inverted.is-outlined:hover,html.theme--catppuccin-frappe .button.is-success.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-success.is-inverted.is-outlined:focus,html.theme--catppuccin-frappe .button.is-success.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#a6d189}html.theme--catppuccin-frappe .button.is-success.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-success.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #a6d189 #a6d189 !important}html.theme--catppuccin-frappe .button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-success.is-light{background-color:#f4f9f0;color:#446a29}html.theme--catppuccin-frappe .button.is-success.is-light:hover,html.theme--catppuccin-frappe .button.is-success.is-light.is-hovered{background-color:#edf6e7;border-color:transparent;color:#446a29}html.theme--catppuccin-frappe .button.is-success.is-light:active,html.theme--catppuccin-frappe .button.is-success.is-light.is-active{background-color:#e6f2de;border-color:transparent;color:#446a29}html.theme--catppuccin-frappe .button.is-warning{background-color:#e5c890;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-warning:hover,html.theme--catppuccin-frappe .button.is-warning.is-hovered{background-color:#e3c386;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-warning:focus,html.theme--catppuccin-frappe .button.is-warning.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-warning:focus:not(:active),html.theme--catppuccin-frappe .button.is-warning.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(229,200,144,0.25)}html.theme--catppuccin-frappe .button.is-warning:active,html.theme--catppuccin-frappe .button.is-warning.is-active{background-color:#e0be7b;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-warning[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-warning{background-color:#e5c890;border-color:#e5c890;box-shadow:none}html.theme--catppuccin-frappe .button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);color:#e5c890}html.theme--catppuccin-frappe .button.is-warning.is-inverted:hover,html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-warning.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#e5c890}html.theme--catppuccin-frappe .button.is-warning.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-frappe .button.is-warning.is-outlined{background-color:transparent;border-color:#e5c890;color:#e5c890}html.theme--catppuccin-frappe .button.is-warning.is-outlined:hover,html.theme--catppuccin-frappe .button.is-warning.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-warning.is-outlined:focus,html.theme--catppuccin-frappe .button.is-warning.is-outlined.is-focused{background-color:#e5c890;border-color:#e5c890;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #e5c890 #e5c890 !important}html.theme--catppuccin-frappe .button.is-warning.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-warning.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-warning.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-frappe .button.is-warning.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-warning.is-outlined{background-color:transparent;border-color:#e5c890;box-shadow:none;color:#e5c890}html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-outlined:hover,html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-outlined:focus,html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#e5c890}html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #e5c890 #e5c890 !important}html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-warning.is-light{background-color:#fbf7ee;color:#78591c}html.theme--catppuccin-frappe .button.is-warning.is-light:hover,html.theme--catppuccin-frappe .button.is-warning.is-light.is-hovered{background-color:#f9f2e4;border-color:transparent;color:#78591c}html.theme--catppuccin-frappe .button.is-warning.is-light:active,html.theme--catppuccin-frappe .button.is-warning.is-light.is-active{background-color:#f6edda;border-color:transparent;color:#78591c}html.theme--catppuccin-frappe .button.is-danger{background-color:#e78284;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-danger:hover,html.theme--catppuccin-frappe .button.is-danger.is-hovered{background-color:#e57779;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-danger:focus,html.theme--catppuccin-frappe .button.is-danger.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-danger:focus:not(:active),html.theme--catppuccin-frappe .button.is-danger.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(231,130,132,0.25)}html.theme--catppuccin-frappe .button.is-danger:active,html.theme--catppuccin-frappe .button.is-danger.is-active{background-color:#e36d6f;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-danger[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-danger{background-color:#e78284;border-color:#e78284;box-shadow:none}html.theme--catppuccin-frappe .button.is-danger.is-inverted{background-color:#fff;color:#e78284}html.theme--catppuccin-frappe .button.is-danger.is-inverted:hover,html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-frappe .button.is-danger.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#e78284}html.theme--catppuccin-frappe .button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-danger.is-outlined{background-color:transparent;border-color:#e78284;color:#e78284}html.theme--catppuccin-frappe .button.is-danger.is-outlined:hover,html.theme--catppuccin-frappe .button.is-danger.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-danger.is-outlined:focus,html.theme--catppuccin-frappe .button.is-danger.is-outlined.is-focused{background-color:#e78284;border-color:#e78284;color:#fff}html.theme--catppuccin-frappe .button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #e78284 #e78284 !important}html.theme--catppuccin-frappe .button.is-danger.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-danger.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-danger.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-danger.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-danger.is-outlined{background-color:transparent;border-color:#e78284;box-shadow:none;color:#e78284}html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-outlined:hover,html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-outlined:focus,html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#e78284}html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #e78284 #e78284 !important}html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-frappe .button.is-danger.is-light{background-color:#fceeee;color:#9a1e20}html.theme--catppuccin-frappe .button.is-danger.is-light:hover,html.theme--catppuccin-frappe .button.is-danger.is-light.is-hovered{background-color:#fae3e4;border-color:transparent;color:#9a1e20}html.theme--catppuccin-frappe .button.is-danger.is-light:active,html.theme--catppuccin-frappe .button.is-danger.is-light.is-active{background-color:#f8d8d9;border-color:transparent;color:#9a1e20}html.theme--catppuccin-frappe .button.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.button{font-size:.75rem}html.theme--catppuccin-frappe .button.is-small:not(.is-rounded),html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.button:not(.is-rounded){border-radius:3px}html.theme--catppuccin-frappe .button.is-normal{font-size:1rem}html.theme--catppuccin-frappe .button.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .button.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .button[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button{background-color:#737994;border-color:#626880;box-shadow:none;opacity:.5}html.theme--catppuccin-frappe .button.is-fullwidth{display:flex;width:100%}html.theme--catppuccin-frappe .button.is-loading{color:transparent !important;pointer-events:none}html.theme--catppuccin-frappe .button.is-loading::after{position:absolute;left:calc(50% - (1em * 0.5));top:calc(50% - (1em * 0.5));position:absolute !important}html.theme--catppuccin-frappe .button.is-static{background-color:#292c3c;border-color:#626880;color:#838ba7;box-shadow:none;pointer-events:none}html.theme--catppuccin-frappe .button.is-rounded,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.button{border-radius:9999px;padding-left:calc(1em + 0.25em);padding-right:calc(1em + 0.25em)}html.theme--catppuccin-frappe .buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-frappe .buttons .button{margin-bottom:0.5rem}html.theme--catppuccin-frappe .buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}html.theme--catppuccin-frappe .buttons:last-child{margin-bottom:-0.5rem}html.theme--catppuccin-frappe .buttons:not(:last-child){margin-bottom:1rem}html.theme--catppuccin-frappe .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}html.theme--catppuccin-frappe .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:3px}html.theme--catppuccin-frappe .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}html.theme--catppuccin-frappe .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}html.theme--catppuccin-frappe .buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-frappe .buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}html.theme--catppuccin-frappe .buttons.has-addons .button:last-child{margin-right:0}html.theme--catppuccin-frappe .buttons.has-addons .button:hover,html.theme--catppuccin-frappe .buttons.has-addons .button.is-hovered{z-index:2}html.theme--catppuccin-frappe .buttons.has-addons .button:focus,html.theme--catppuccin-frappe .buttons.has-addons .button.is-focused,html.theme--catppuccin-frappe .buttons.has-addons .button:active,html.theme--catppuccin-frappe .buttons.has-addons .button.is-active,html.theme--catppuccin-frappe .buttons.has-addons .button.is-selected{z-index:3}html.theme--catppuccin-frappe .buttons.has-addons .button:focus:hover,html.theme--catppuccin-frappe .buttons.has-addons .button.is-focused:hover,html.theme--catppuccin-frappe .buttons.has-addons .button:active:hover,html.theme--catppuccin-frappe .buttons.has-addons .button.is-active:hover,html.theme--catppuccin-frappe .buttons.has-addons .button.is-selected:hover{z-index:4}html.theme--catppuccin-frappe .buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-frappe .buttons.is-centered{justify-content:center}html.theme--catppuccin-frappe .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}html.theme--catppuccin-frappe .buttons.is-right{justify-content:flex-end}html.theme--catppuccin-frappe .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .button.is-responsive.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.5625rem}html.theme--catppuccin-frappe .button.is-responsive,html.theme--catppuccin-frappe .button.is-responsive.is-normal{font-size:.65625rem}html.theme--catppuccin-frappe .button.is-responsive.is-medium{font-size:.75rem}html.theme--catppuccin-frappe .button.is-responsive.is-large{font-size:1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-frappe .button.is-responsive.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.65625rem}html.theme--catppuccin-frappe .button.is-responsive,html.theme--catppuccin-frappe .button.is-responsive.is-normal{font-size:.75rem}html.theme--catppuccin-frappe .button.is-responsive.is-medium{font-size:1rem}html.theme--catppuccin-frappe .button.is-responsive.is-large{font-size:1.25rem}}html.theme--catppuccin-frappe .container{flex-grow:1;margin:0 auto;position:relative;width:auto}html.theme--catppuccin-frappe .container.is-fluid{max-width:none !important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .container{max-width:992px}}@media screen and (max-width: 1215px){html.theme--catppuccin-frappe .container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width: 1407px){html.theme--catppuccin-frappe .container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width: 1216px){html.theme--catppuccin-frappe .container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width: 1408px){html.theme--catppuccin-frappe .container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}html.theme--catppuccin-frappe .content li+li{margin-top:0.25em}html.theme--catppuccin-frappe .content p:not(:last-child),html.theme--catppuccin-frappe .content dl:not(:last-child),html.theme--catppuccin-frappe .content ol:not(:last-child),html.theme--catppuccin-frappe .content ul:not(:last-child),html.theme--catppuccin-frappe .content blockquote:not(:last-child),html.theme--catppuccin-frappe .content pre:not(:last-child),html.theme--catppuccin-frappe .content table:not(:last-child){margin-bottom:1em}html.theme--catppuccin-frappe .content h1,html.theme--catppuccin-frappe .content h2,html.theme--catppuccin-frappe .content h3,html.theme--catppuccin-frappe .content h4,html.theme--catppuccin-frappe .content h5,html.theme--catppuccin-frappe .content h6{color:#c6d0f5;font-weight:600;line-height:1.125}html.theme--catppuccin-frappe .content h1{font-size:2em;margin-bottom:0.5em}html.theme--catppuccin-frappe .content h1:not(:first-child){margin-top:1em}html.theme--catppuccin-frappe .content h2{font-size:1.75em;margin-bottom:0.5714em}html.theme--catppuccin-frappe .content h2:not(:first-child){margin-top:1.1428em}html.theme--catppuccin-frappe .content h3{font-size:1.5em;margin-bottom:0.6666em}html.theme--catppuccin-frappe .content h3:not(:first-child){margin-top:1.3333em}html.theme--catppuccin-frappe .content h4{font-size:1.25em;margin-bottom:0.8em}html.theme--catppuccin-frappe .content h5{font-size:1.125em;margin-bottom:0.8888em}html.theme--catppuccin-frappe .content h6{font-size:1em;margin-bottom:1em}html.theme--catppuccin-frappe .content blockquote{background-color:#292c3c;border-left:5px solid #626880;padding:1.25em 1.5em}html.theme--catppuccin-frappe .content ol{list-style-position:outside;margin-left:2em;margin-top:1em}html.theme--catppuccin-frappe .content ol:not([type]){list-style-type:decimal}html.theme--catppuccin-frappe .content ol.is-lower-alpha:not([type]){list-style-type:lower-alpha}html.theme--catppuccin-frappe .content ol.is-lower-roman:not([type]){list-style-type:lower-roman}html.theme--catppuccin-frappe .content ol.is-upper-alpha:not([type]){list-style-type:upper-alpha}html.theme--catppuccin-frappe .content ol.is-upper-roman:not([type]){list-style-type:upper-roman}html.theme--catppuccin-frappe .content ul{list-style:disc outside;margin-left:2em;margin-top:1em}html.theme--catppuccin-frappe .content ul ul{list-style-type:circle;margin-top:0.5em}html.theme--catppuccin-frappe .content ul ul ul{list-style-type:square}html.theme--catppuccin-frappe .content dd{margin-left:2em}html.theme--catppuccin-frappe .content figure{margin-left:2em;margin-right:2em;text-align:center}html.theme--catppuccin-frappe .content figure:not(:first-child){margin-top:2em}html.theme--catppuccin-frappe .content figure:not(:last-child){margin-bottom:2em}html.theme--catppuccin-frappe .content figure img{display:inline-block}html.theme--catppuccin-frappe .content figure figcaption{font-style:italic}html.theme--catppuccin-frappe .content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:0;white-space:pre;word-wrap:normal}html.theme--catppuccin-frappe .content sup,html.theme--catppuccin-frappe .content sub{font-size:75%}html.theme--catppuccin-frappe .content table{width:100%}html.theme--catppuccin-frappe .content table td,html.theme--catppuccin-frappe .content table th{border:1px solid #626880;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--catppuccin-frappe .content table th{color:#b0bef1}html.theme--catppuccin-frappe .content table th:not([align]){text-align:inherit}html.theme--catppuccin-frappe .content table thead td,html.theme--catppuccin-frappe .content table thead th{border-width:0 0 2px;color:#b0bef1}html.theme--catppuccin-frappe .content table tfoot td,html.theme--catppuccin-frappe .content table tfoot th{border-width:2px 0 0;color:#b0bef1}html.theme--catppuccin-frappe .content table tbody tr:last-child td,html.theme--catppuccin-frappe .content table tbody tr:last-child th{border-bottom-width:0}html.theme--catppuccin-frappe .content .tabs li+li{margin-top:0}html.theme--catppuccin-frappe .content.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.content{font-size:.75rem}html.theme--catppuccin-frappe .content.is-normal{font-size:1rem}html.theme--catppuccin-frappe .content.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .content.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}html.theme--catppuccin-frappe .icon.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.icon{height:1rem;width:1rem}html.theme--catppuccin-frappe .icon.is-medium{height:2rem;width:2rem}html.theme--catppuccin-frappe .icon.is-large{height:3rem;width:3rem}html.theme--catppuccin-frappe .icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}html.theme--catppuccin-frappe .icon-text .icon{flex-grow:0;flex-shrink:0}html.theme--catppuccin-frappe .icon-text .icon:not(:last-child){margin-right:.25em}html.theme--catppuccin-frappe .icon-text .icon:not(:first-child){margin-left:.25em}html.theme--catppuccin-frappe div.icon-text{display:flex}html.theme--catppuccin-frappe .image,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img{display:block;position:relative}html.theme--catppuccin-frappe .image img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img img{display:block;height:auto;width:100%}html.theme--catppuccin-frappe .image img.is-rounded,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img img.is-rounded{border-radius:9999px}html.theme--catppuccin-frappe .image.is-fullwidth,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-fullwidth{width:100%}html.theme--catppuccin-frappe .image.is-square img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--catppuccin-frappe .image.is-square .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--catppuccin-frappe .image.is-1by1 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--catppuccin-frappe .image.is-1by1 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--catppuccin-frappe .image.is-5by4 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--catppuccin-frappe .image.is-5by4 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--catppuccin-frappe .image.is-4by3 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--catppuccin-frappe .image.is-4by3 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--catppuccin-frappe .image.is-3by2 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--catppuccin-frappe .image.is-3by2 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--catppuccin-frappe .image.is-5by3 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--catppuccin-frappe .image.is-5by3 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--catppuccin-frappe .image.is-16by9 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--catppuccin-frappe .image.is-16by9 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--catppuccin-frappe .image.is-2by1 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--catppuccin-frappe .image.is-2by1 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--catppuccin-frappe .image.is-3by1 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--catppuccin-frappe .image.is-3by1 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--catppuccin-frappe .image.is-4by5 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--catppuccin-frappe .image.is-4by5 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--catppuccin-frappe .image.is-3by4 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--catppuccin-frappe .image.is-3by4 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--catppuccin-frappe .image.is-2by3 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--catppuccin-frappe .image.is-2by3 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--catppuccin-frappe .image.is-3by5 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--catppuccin-frappe .image.is-3by5 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--catppuccin-frappe .image.is-9by16 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--catppuccin-frappe .image.is-9by16 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--catppuccin-frappe .image.is-1by2 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--catppuccin-frappe .image.is-1by2 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--catppuccin-frappe .image.is-1by3 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--catppuccin-frappe .image.is-1by3 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio{height:100%;width:100%}html.theme--catppuccin-frappe .image.is-square,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-square,html.theme--catppuccin-frappe .image.is-1by1,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by1{padding-top:100%}html.theme--catppuccin-frappe .image.is-5by4,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-5by4{padding-top:80%}html.theme--catppuccin-frappe .image.is-4by3,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-4by3{padding-top:75%}html.theme--catppuccin-frappe .image.is-3by2,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by2{padding-top:66.6666%}html.theme--catppuccin-frappe .image.is-5by3,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-5by3{padding-top:60%}html.theme--catppuccin-frappe .image.is-16by9,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-16by9{padding-top:56.25%}html.theme--catppuccin-frappe .image.is-2by1,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-2by1{padding-top:50%}html.theme--catppuccin-frappe .image.is-3by1,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by1{padding-top:33.3333%}html.theme--catppuccin-frappe .image.is-4by5,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-4by5{padding-top:125%}html.theme--catppuccin-frappe .image.is-3by4,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by4{padding-top:133.3333%}html.theme--catppuccin-frappe .image.is-2by3,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-2by3{padding-top:150%}html.theme--catppuccin-frappe .image.is-3by5,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by5{padding-top:166.6666%}html.theme--catppuccin-frappe .image.is-9by16,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-9by16{padding-top:177.7777%}html.theme--catppuccin-frappe .image.is-1by2,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by2{padding-top:200%}html.theme--catppuccin-frappe .image.is-1by3,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by3{padding-top:300%}html.theme--catppuccin-frappe .image.is-16x16,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-16x16{height:16px;width:16px}html.theme--catppuccin-frappe .image.is-24x24,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-24x24{height:24px;width:24px}html.theme--catppuccin-frappe .image.is-32x32,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-32x32{height:32px;width:32px}html.theme--catppuccin-frappe .image.is-48x48,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-48x48{height:48px;width:48px}html.theme--catppuccin-frappe .image.is-64x64,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-64x64{height:64px;width:64px}html.theme--catppuccin-frappe .image.is-96x96,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-96x96{height:96px;width:96px}html.theme--catppuccin-frappe .image.is-128x128,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-128x128{height:128px;width:128px}html.theme--catppuccin-frappe .notification{background-color:#292c3c;border-radius:.4em;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}html.theme--catppuccin-frappe .notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--catppuccin-frappe .notification strong{color:currentColor}html.theme--catppuccin-frappe .notification code,html.theme--catppuccin-frappe .notification pre{background:#fff}html.theme--catppuccin-frappe .notification pre code{background:transparent}html.theme--catppuccin-frappe .notification>.delete{right:.5rem;position:absolute;top:0.5rem}html.theme--catppuccin-frappe .notification .title,html.theme--catppuccin-frappe .notification .subtitle,html.theme--catppuccin-frappe .notification .content{color:currentColor}html.theme--catppuccin-frappe .notification.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-frappe .notification.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-frappe .notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .notification.is-dark,html.theme--catppuccin-frappe .content kbd.notification{background-color:#414559;color:#fff}html.theme--catppuccin-frappe .notification.is-primary,html.theme--catppuccin-frappe .docstring>section>a.notification.docs-sourcelink{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .notification.is-primary.is-light,html.theme--catppuccin-frappe .docstring>section>a.notification.is-light.docs-sourcelink{background-color:#edf2fc;color:#153a8e}html.theme--catppuccin-frappe .notification.is-link{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .notification.is-link.is-light{background-color:#edf2fc;color:#153a8e}html.theme--catppuccin-frappe .notification.is-info{background-color:#81c8be;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .notification.is-info.is-light{background-color:#f1f9f8;color:#2d675f}html.theme--catppuccin-frappe .notification.is-success{background-color:#a6d189;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .notification.is-success.is-light{background-color:#f4f9f0;color:#446a29}html.theme--catppuccin-frappe .notification.is-warning{background-color:#e5c890;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .notification.is-warning.is-light{background-color:#fbf7ee;color:#78591c}html.theme--catppuccin-frappe .notification.is-danger{background-color:#e78284;color:#fff}html.theme--catppuccin-frappe .notification.is-danger.is-light{background-color:#fceeee;color:#9a1e20}html.theme--catppuccin-frappe .progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}html.theme--catppuccin-frappe .progress::-webkit-progress-bar{background-color:#51576d}html.theme--catppuccin-frappe .progress::-webkit-progress-value{background-color:#838ba7}html.theme--catppuccin-frappe .progress::-moz-progress-bar{background-color:#838ba7}html.theme--catppuccin-frappe .progress::-ms-fill{background-color:#838ba7;border:none}html.theme--catppuccin-frappe .progress.is-white::-webkit-progress-value{background-color:#fff}html.theme--catppuccin-frappe .progress.is-white::-moz-progress-bar{background-color:#fff}html.theme--catppuccin-frappe .progress.is-white::-ms-fill{background-color:#fff}html.theme--catppuccin-frappe .progress.is-white:indeterminate{background-image:linear-gradient(to right, #fff 30%, #51576d 30%)}html.theme--catppuccin-frappe .progress.is-black::-webkit-progress-value{background-color:#0a0a0a}html.theme--catppuccin-frappe .progress.is-black::-moz-progress-bar{background-color:#0a0a0a}html.theme--catppuccin-frappe .progress.is-black::-ms-fill{background-color:#0a0a0a}html.theme--catppuccin-frappe .progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #51576d 30%)}html.theme--catppuccin-frappe .progress.is-light::-webkit-progress-value{background-color:#f5f5f5}html.theme--catppuccin-frappe .progress.is-light::-moz-progress-bar{background-color:#f5f5f5}html.theme--catppuccin-frappe .progress.is-light::-ms-fill{background-color:#f5f5f5}html.theme--catppuccin-frappe .progress.is-light:indeterminate{background-image:linear-gradient(to right, #f5f5f5 30%, #51576d 30%)}html.theme--catppuccin-frappe .progress.is-dark::-webkit-progress-value,html.theme--catppuccin-frappe .content kbd.progress::-webkit-progress-value{background-color:#414559}html.theme--catppuccin-frappe .progress.is-dark::-moz-progress-bar,html.theme--catppuccin-frappe .content kbd.progress::-moz-progress-bar{background-color:#414559}html.theme--catppuccin-frappe .progress.is-dark::-ms-fill,html.theme--catppuccin-frappe .content kbd.progress::-ms-fill{background-color:#414559}html.theme--catppuccin-frappe .progress.is-dark:indeterminate,html.theme--catppuccin-frappe .content kbd.progress:indeterminate{background-image:linear-gradient(to right, #414559 30%, #51576d 30%)}html.theme--catppuccin-frappe .progress.is-primary::-webkit-progress-value,html.theme--catppuccin-frappe .docstring>section>a.progress.docs-sourcelink::-webkit-progress-value{background-color:#8caaee}html.theme--catppuccin-frappe .progress.is-primary::-moz-progress-bar,html.theme--catppuccin-frappe .docstring>section>a.progress.docs-sourcelink::-moz-progress-bar{background-color:#8caaee}html.theme--catppuccin-frappe .progress.is-primary::-ms-fill,html.theme--catppuccin-frappe .docstring>section>a.progress.docs-sourcelink::-ms-fill{background-color:#8caaee}html.theme--catppuccin-frappe .progress.is-primary:indeterminate,html.theme--catppuccin-frappe .docstring>section>a.progress.docs-sourcelink:indeterminate{background-image:linear-gradient(to right, #8caaee 30%, #51576d 30%)}html.theme--catppuccin-frappe .progress.is-link::-webkit-progress-value{background-color:#8caaee}html.theme--catppuccin-frappe .progress.is-link::-moz-progress-bar{background-color:#8caaee}html.theme--catppuccin-frappe .progress.is-link::-ms-fill{background-color:#8caaee}html.theme--catppuccin-frappe .progress.is-link:indeterminate{background-image:linear-gradient(to right, #8caaee 30%, #51576d 30%)}html.theme--catppuccin-frappe .progress.is-info::-webkit-progress-value{background-color:#81c8be}html.theme--catppuccin-frappe .progress.is-info::-moz-progress-bar{background-color:#81c8be}html.theme--catppuccin-frappe .progress.is-info::-ms-fill{background-color:#81c8be}html.theme--catppuccin-frappe .progress.is-info:indeterminate{background-image:linear-gradient(to right, #81c8be 30%, #51576d 30%)}html.theme--catppuccin-frappe .progress.is-success::-webkit-progress-value{background-color:#a6d189}html.theme--catppuccin-frappe .progress.is-success::-moz-progress-bar{background-color:#a6d189}html.theme--catppuccin-frappe .progress.is-success::-ms-fill{background-color:#a6d189}html.theme--catppuccin-frappe .progress.is-success:indeterminate{background-image:linear-gradient(to right, #a6d189 30%, #51576d 30%)}html.theme--catppuccin-frappe .progress.is-warning::-webkit-progress-value{background-color:#e5c890}html.theme--catppuccin-frappe .progress.is-warning::-moz-progress-bar{background-color:#e5c890}html.theme--catppuccin-frappe .progress.is-warning::-ms-fill{background-color:#e5c890}html.theme--catppuccin-frappe .progress.is-warning:indeterminate{background-image:linear-gradient(to right, #e5c890 30%, #51576d 30%)}html.theme--catppuccin-frappe .progress.is-danger::-webkit-progress-value{background-color:#e78284}html.theme--catppuccin-frappe .progress.is-danger::-moz-progress-bar{background-color:#e78284}html.theme--catppuccin-frappe .progress.is-danger::-ms-fill{background-color:#e78284}html.theme--catppuccin-frappe .progress.is-danger:indeterminate{background-image:linear-gradient(to right, #e78284 30%, #51576d 30%)}html.theme--catppuccin-frappe .progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#51576d;background-image:linear-gradient(to right, #c6d0f5 30%, #51576d 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}html.theme--catppuccin-frappe .progress:indeterminate::-webkit-progress-bar{background-color:transparent}html.theme--catppuccin-frappe .progress:indeterminate::-moz-progress-bar{background-color:transparent}html.theme--catppuccin-frappe .progress:indeterminate::-ms-fill{animation-name:none}html.theme--catppuccin-frappe .progress.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.progress{height:.75rem}html.theme--catppuccin-frappe .progress.is-medium{height:1.25rem}html.theme--catppuccin-frappe .progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}html.theme--catppuccin-frappe .table{background-color:#51576d;color:#c6d0f5}html.theme--catppuccin-frappe .table td,html.theme--catppuccin-frappe .table th{border:1px solid #626880;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--catppuccin-frappe .table td.is-white,html.theme--catppuccin-frappe .table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-frappe .table td.is-black,html.theme--catppuccin-frappe .table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-frappe .table td.is-light,html.theme--catppuccin-frappe .table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .table td.is-dark,html.theme--catppuccin-frappe .table th.is-dark{background-color:#414559;border-color:#414559;color:#fff}html.theme--catppuccin-frappe .table td.is-primary,html.theme--catppuccin-frappe .table th.is-primary{background-color:#8caaee;border-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .table td.is-link,html.theme--catppuccin-frappe .table th.is-link{background-color:#8caaee;border-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .table td.is-info,html.theme--catppuccin-frappe .table th.is-info{background-color:#81c8be;border-color:#81c8be;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .table td.is-success,html.theme--catppuccin-frappe .table th.is-success{background-color:#a6d189;border-color:#a6d189;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .table td.is-warning,html.theme--catppuccin-frappe .table th.is-warning{background-color:#e5c890;border-color:#e5c890;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .table td.is-danger,html.theme--catppuccin-frappe .table th.is-danger{background-color:#e78284;border-color:#e78284;color:#fff}html.theme--catppuccin-frappe .table td.is-narrow,html.theme--catppuccin-frappe .table th.is-narrow{white-space:nowrap;width:1%}html.theme--catppuccin-frappe .table td.is-selected,html.theme--catppuccin-frappe .table th.is-selected{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .table td.is-selected a,html.theme--catppuccin-frappe .table td.is-selected strong,html.theme--catppuccin-frappe .table th.is-selected a,html.theme--catppuccin-frappe .table th.is-selected strong{color:currentColor}html.theme--catppuccin-frappe .table td.is-vcentered,html.theme--catppuccin-frappe .table th.is-vcentered{vertical-align:middle}html.theme--catppuccin-frappe .table th{color:#b0bef1}html.theme--catppuccin-frappe .table th:not([align]){text-align:left}html.theme--catppuccin-frappe .table tr.is-selected{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .table tr.is-selected a,html.theme--catppuccin-frappe .table tr.is-selected strong{color:currentColor}html.theme--catppuccin-frappe .table tr.is-selected td,html.theme--catppuccin-frappe .table tr.is-selected th{border-color:#fff;color:currentColor}html.theme--catppuccin-frappe .table thead{background-color:rgba(0,0,0,0)}html.theme--catppuccin-frappe .table thead td,html.theme--catppuccin-frappe .table thead th{border-width:0 0 2px;color:#b0bef1}html.theme--catppuccin-frappe .table tfoot{background-color:rgba(0,0,0,0)}html.theme--catppuccin-frappe .table tfoot td,html.theme--catppuccin-frappe .table tfoot th{border-width:2px 0 0;color:#b0bef1}html.theme--catppuccin-frappe .table tbody{background-color:rgba(0,0,0,0)}html.theme--catppuccin-frappe .table tbody tr:last-child td,html.theme--catppuccin-frappe .table tbody tr:last-child th{border-bottom-width:0}html.theme--catppuccin-frappe .table.is-bordered td,html.theme--catppuccin-frappe .table.is-bordered th{border-width:1px}html.theme--catppuccin-frappe .table.is-bordered tr:last-child td,html.theme--catppuccin-frappe .table.is-bordered tr:last-child th{border-bottom-width:1px}html.theme--catppuccin-frappe .table.is-fullwidth{width:100%}html.theme--catppuccin-frappe .table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#414559}html.theme--catppuccin-frappe .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#414559}html.theme--catppuccin-frappe .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#454a5f}html.theme--catppuccin-frappe .table.is-narrow td,html.theme--catppuccin-frappe .table.is-narrow th{padding:0.25em 0.5em}html.theme--catppuccin-frappe .table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#414559}html.theme--catppuccin-frappe .table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}html.theme--catppuccin-frappe .tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-frappe .tags .tag,html.theme--catppuccin-frappe .tags .content kbd,html.theme--catppuccin-frappe .content .tags kbd,html.theme--catppuccin-frappe .tags .docstring>section>a.docs-sourcelink{margin-bottom:0.5rem}html.theme--catppuccin-frappe .tags .tag:not(:last-child),html.theme--catppuccin-frappe .tags .content kbd:not(:last-child),html.theme--catppuccin-frappe .content .tags kbd:not(:last-child),html.theme--catppuccin-frappe .tags .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:.5rem}html.theme--catppuccin-frappe .tags:last-child{margin-bottom:-0.5rem}html.theme--catppuccin-frappe .tags:not(:last-child){margin-bottom:1rem}html.theme--catppuccin-frappe .tags.are-medium .tag:not(.is-normal):not(.is-large),html.theme--catppuccin-frappe .tags.are-medium .content kbd:not(.is-normal):not(.is-large),html.theme--catppuccin-frappe .content .tags.are-medium kbd:not(.is-normal):not(.is-large),html.theme--catppuccin-frappe .tags.are-medium .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-large){font-size:1rem}html.theme--catppuccin-frappe .tags.are-large .tag:not(.is-normal):not(.is-medium),html.theme--catppuccin-frappe .tags.are-large .content kbd:not(.is-normal):not(.is-medium),html.theme--catppuccin-frappe .content .tags.are-large kbd:not(.is-normal):not(.is-medium),html.theme--catppuccin-frappe .tags.are-large .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-medium){font-size:1.25rem}html.theme--catppuccin-frappe .tags.is-centered{justify-content:center}html.theme--catppuccin-frappe .tags.is-centered .tag,html.theme--catppuccin-frappe .tags.is-centered .content kbd,html.theme--catppuccin-frappe .content .tags.is-centered kbd,html.theme--catppuccin-frappe .tags.is-centered .docstring>section>a.docs-sourcelink{margin-right:0.25rem;margin-left:0.25rem}html.theme--catppuccin-frappe .tags.is-right{justify-content:flex-end}html.theme--catppuccin-frappe .tags.is-right .tag:not(:first-child),html.theme--catppuccin-frappe .tags.is-right .content kbd:not(:first-child),html.theme--catppuccin-frappe .content .tags.is-right kbd:not(:first-child),html.theme--catppuccin-frappe .tags.is-right .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0.5rem}html.theme--catppuccin-frappe .tags.is-right .tag:not(:last-child),html.theme--catppuccin-frappe .tags.is-right .content kbd:not(:last-child),html.theme--catppuccin-frappe .content .tags.is-right kbd:not(:last-child),html.theme--catppuccin-frappe .tags.is-right .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0}html.theme--catppuccin-frappe .tags.has-addons .tag,html.theme--catppuccin-frappe .tags.has-addons .content kbd,html.theme--catppuccin-frappe .content .tags.has-addons kbd,html.theme--catppuccin-frappe .tags.has-addons .docstring>section>a.docs-sourcelink{margin-right:0}html.theme--catppuccin-frappe .tags.has-addons .tag:not(:first-child),html.theme--catppuccin-frappe .tags.has-addons .content kbd:not(:first-child),html.theme--catppuccin-frappe .content .tags.has-addons kbd:not(:first-child),html.theme--catppuccin-frappe .tags.has-addons .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}html.theme--catppuccin-frappe .tags.has-addons .tag:not(:last-child),html.theme--catppuccin-frappe .tags.has-addons .content kbd:not(:last-child),html.theme--catppuccin-frappe .content .tags.has-addons kbd:not(:last-child),html.theme--catppuccin-frappe .tags.has-addons .docstring>section>a.docs-sourcelink:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}html.theme--catppuccin-frappe .tag:not(body),html.theme--catppuccin-frappe .content kbd:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink:not(body){align-items:center;background-color:#292c3c;border-radius:.4em;color:#c6d0f5;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:0.75em;padding-right:0.75em;white-space:nowrap}html.theme--catppuccin-frappe .tag:not(body) .delete,html.theme--catppuccin-frappe .content kbd:not(body) .delete,html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}html.theme--catppuccin-frappe .tag.is-white:not(body),html.theme--catppuccin-frappe .content kbd.is-white:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-white:not(body){background-color:#fff;color:#0a0a0a}html.theme--catppuccin-frappe .tag.is-black:not(body),html.theme--catppuccin-frappe .content kbd.is-black:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-black:not(body){background-color:#0a0a0a;color:#fff}html.theme--catppuccin-frappe .tag.is-light:not(body),html.theme--catppuccin-frappe .content kbd.is-light:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .tag.is-dark:not(body),html.theme--catppuccin-frappe .content kbd:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-dark:not(body),html.theme--catppuccin-frappe .content .docstring>section>kbd:not(body){background-color:#414559;color:#fff}html.theme--catppuccin-frappe .tag.is-primary:not(body),html.theme--catppuccin-frappe .content kbd.is-primary:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink:not(body){background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .tag.is-primary.is-light:not(body),html.theme--catppuccin-frappe .content kbd.is-primary.is-light:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#edf2fc;color:#153a8e}html.theme--catppuccin-frappe .tag.is-link:not(body),html.theme--catppuccin-frappe .content kbd.is-link:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-link:not(body){background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .tag.is-link.is-light:not(body),html.theme--catppuccin-frappe .content kbd.is-link.is-light:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-link.is-light:not(body){background-color:#edf2fc;color:#153a8e}html.theme--catppuccin-frappe .tag.is-info:not(body),html.theme--catppuccin-frappe .content kbd.is-info:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-info:not(body){background-color:#81c8be;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .tag.is-info.is-light:not(body),html.theme--catppuccin-frappe .content kbd.is-info.is-light:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-info.is-light:not(body){background-color:#f1f9f8;color:#2d675f}html.theme--catppuccin-frappe .tag.is-success:not(body),html.theme--catppuccin-frappe .content kbd.is-success:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-success:not(body){background-color:#a6d189;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .tag.is-success.is-light:not(body),html.theme--catppuccin-frappe .content kbd.is-success.is-light:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-success.is-light:not(body){background-color:#f4f9f0;color:#446a29}html.theme--catppuccin-frappe .tag.is-warning:not(body),html.theme--catppuccin-frappe .content kbd.is-warning:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-warning:not(body){background-color:#e5c890;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .tag.is-warning.is-light:not(body),html.theme--catppuccin-frappe .content kbd.is-warning.is-light:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-warning.is-light:not(body){background-color:#fbf7ee;color:#78591c}html.theme--catppuccin-frappe .tag.is-danger:not(body),html.theme--catppuccin-frappe .content kbd.is-danger:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-danger:not(body){background-color:#e78284;color:#fff}html.theme--catppuccin-frappe .tag.is-danger.is-light:not(body),html.theme--catppuccin-frappe .content kbd.is-danger.is-light:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-danger.is-light:not(body){background-color:#fceeee;color:#9a1e20}html.theme--catppuccin-frappe .tag.is-normal:not(body),html.theme--catppuccin-frappe .content kbd.is-normal:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-normal:not(body){font-size:.75rem}html.theme--catppuccin-frappe .tag.is-medium:not(body),html.theme--catppuccin-frappe .content kbd.is-medium:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-medium:not(body){font-size:1rem}html.theme--catppuccin-frappe .tag.is-large:not(body),html.theme--catppuccin-frappe .content kbd.is-large:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-large:not(body){font-size:1.25rem}html.theme--catppuccin-frappe .tag:not(body) .icon:first-child:not(:last-child),html.theme--catppuccin-frappe .content kbd:not(body) .icon:first-child:not(:last-child),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}html.theme--catppuccin-frappe .tag:not(body) .icon:last-child:not(:first-child),html.theme--catppuccin-frappe .content kbd:not(body) .icon:last-child:not(:first-child),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}html.theme--catppuccin-frappe .tag:not(body) .icon:first-child:last-child,html.theme--catppuccin-frappe .content kbd:not(body) .icon:first-child:last-child,html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}html.theme--catppuccin-frappe .tag.is-delete:not(body),html.theme--catppuccin-frappe .content kbd.is-delete:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-delete:not(body){margin-left:1px;padding:0;position:relative;width:2em}html.theme--catppuccin-frappe .tag.is-delete:not(body)::before,html.theme--catppuccin-frappe .content kbd.is-delete:not(body)::before,html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-delete:not(body)::before,html.theme--catppuccin-frappe .tag.is-delete:not(body)::after,html.theme--catppuccin-frappe .content kbd.is-delete:not(body)::after,html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--catppuccin-frappe .tag.is-delete:not(body)::before,html.theme--catppuccin-frappe .content kbd.is-delete:not(body)::before,html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-delete:not(body)::before{height:1px;width:50%}html.theme--catppuccin-frappe .tag.is-delete:not(body)::after,html.theme--catppuccin-frappe .content kbd.is-delete:not(body)::after,html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{height:50%;width:1px}html.theme--catppuccin-frappe .tag.is-delete:not(body):hover,html.theme--catppuccin-frappe .content kbd.is-delete:not(body):hover,html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-delete:not(body):hover,html.theme--catppuccin-frappe .tag.is-delete:not(body):focus,html.theme--catppuccin-frappe .content kbd.is-delete:not(body):focus,html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-delete:not(body):focus{background-color:#1f212d}html.theme--catppuccin-frappe .tag.is-delete:not(body):active,html.theme--catppuccin-frappe .content kbd.is-delete:not(body):active,html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-delete:not(body):active{background-color:#14161e}html.theme--catppuccin-frappe .tag.is-rounded:not(body),html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input:not(body),html.theme--catppuccin-frappe .content kbd.is-rounded:not(body),html.theme--catppuccin-frappe #documenter .docs-sidebar .content form.docs-search>input:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-rounded:not(body){border-radius:9999px}html.theme--catppuccin-frappe a.tag:hover,html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink:hover{text-decoration:underline}html.theme--catppuccin-frappe .title,html.theme--catppuccin-frappe .subtitle{word-break:break-word}html.theme--catppuccin-frappe .title em,html.theme--catppuccin-frappe .title span,html.theme--catppuccin-frappe .subtitle em,html.theme--catppuccin-frappe .subtitle span{font-weight:inherit}html.theme--catppuccin-frappe .title sub,html.theme--catppuccin-frappe .subtitle sub{font-size:.75em}html.theme--catppuccin-frappe .title sup,html.theme--catppuccin-frappe .subtitle sup{font-size:.75em}html.theme--catppuccin-frappe .title .tag,html.theme--catppuccin-frappe .title .content kbd,html.theme--catppuccin-frappe .content .title kbd,html.theme--catppuccin-frappe .title .docstring>section>a.docs-sourcelink,html.theme--catppuccin-frappe .subtitle .tag,html.theme--catppuccin-frappe .subtitle .content kbd,html.theme--catppuccin-frappe .content .subtitle kbd,html.theme--catppuccin-frappe .subtitle .docstring>section>a.docs-sourcelink{vertical-align:middle}html.theme--catppuccin-frappe .title{color:#fff;font-size:2rem;font-weight:500;line-height:1.125}html.theme--catppuccin-frappe .title strong{color:inherit;font-weight:inherit}html.theme--catppuccin-frappe .title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}html.theme--catppuccin-frappe .title.is-1{font-size:3rem}html.theme--catppuccin-frappe .title.is-2{font-size:2.5rem}html.theme--catppuccin-frappe .title.is-3{font-size:2rem}html.theme--catppuccin-frappe .title.is-4{font-size:1.5rem}html.theme--catppuccin-frappe .title.is-5{font-size:1.25rem}html.theme--catppuccin-frappe .title.is-6{font-size:1rem}html.theme--catppuccin-frappe .title.is-7{font-size:.75rem}html.theme--catppuccin-frappe .subtitle{color:#737994;font-size:1.25rem;font-weight:400;line-height:1.25}html.theme--catppuccin-frappe .subtitle strong{color:#737994;font-weight:600}html.theme--catppuccin-frappe .subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}html.theme--catppuccin-frappe .subtitle.is-1{font-size:3rem}html.theme--catppuccin-frappe .subtitle.is-2{font-size:2.5rem}html.theme--catppuccin-frappe .subtitle.is-3{font-size:2rem}html.theme--catppuccin-frappe .subtitle.is-4{font-size:1.5rem}html.theme--catppuccin-frappe .subtitle.is-5{font-size:1.25rem}html.theme--catppuccin-frappe .subtitle.is-6{font-size:1rem}html.theme--catppuccin-frappe .subtitle.is-7{font-size:.75rem}html.theme--catppuccin-frappe .heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}html.theme--catppuccin-frappe .number{align-items:center;background-color:#292c3c;border-radius:9999px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:0.25rem 0.5rem;text-align:center;vertical-align:top}html.theme--catppuccin-frappe .select select,html.theme--catppuccin-frappe .textarea,html.theme--catppuccin-frappe .input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input{background-color:#303446;border-color:#626880;border-radius:.4em;color:#838ba7}html.theme--catppuccin-frappe .select select::-moz-placeholder,html.theme--catppuccin-frappe .textarea::-moz-placeholder,html.theme--catppuccin-frappe .input::-moz-placeholder,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:#868c98}html.theme--catppuccin-frappe .select select::-webkit-input-placeholder,html.theme--catppuccin-frappe .textarea::-webkit-input-placeholder,html.theme--catppuccin-frappe .input::-webkit-input-placeholder,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:#868c98}html.theme--catppuccin-frappe .select select:-moz-placeholder,html.theme--catppuccin-frappe .textarea:-moz-placeholder,html.theme--catppuccin-frappe .input:-moz-placeholder,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:#868c98}html.theme--catppuccin-frappe .select select:-ms-input-placeholder,html.theme--catppuccin-frappe .textarea:-ms-input-placeholder,html.theme--catppuccin-frappe .input:-ms-input-placeholder,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:#868c98}html.theme--catppuccin-frappe .select select:hover,html.theme--catppuccin-frappe .textarea:hover,html.theme--catppuccin-frappe .input:hover,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input:hover,html.theme--catppuccin-frappe .select select.is-hovered,html.theme--catppuccin-frappe .is-hovered.textarea,html.theme--catppuccin-frappe .is-hovered.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-hovered{border-color:#737994}html.theme--catppuccin-frappe .select select:focus,html.theme--catppuccin-frappe .textarea:focus,html.theme--catppuccin-frappe .input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input:focus,html.theme--catppuccin-frappe .select select.is-focused,html.theme--catppuccin-frappe .is-focused.textarea,html.theme--catppuccin-frappe .is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .select select:active,html.theme--catppuccin-frappe .textarea:active,html.theme--catppuccin-frappe .input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input:active,html.theme--catppuccin-frappe .select select.is-active,html.theme--catppuccin-frappe .is-active.textarea,html.theme--catppuccin-frappe .is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active{border-color:#8caaee;box-shadow:0 0 0 0.125em rgba(140,170,238,0.25)}html.theme--catppuccin-frappe .select select[disabled],html.theme--catppuccin-frappe .textarea[disabled],html.theme--catppuccin-frappe .input[disabled],html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input[disabled],fieldset[disabled] html.theme--catppuccin-frappe .select select,fieldset[disabled] html.theme--catppuccin-frappe .textarea,fieldset[disabled] html.theme--catppuccin-frappe .input,fieldset[disabled] html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input{background-color:#737994;border-color:#292c3c;box-shadow:none;color:#f1f4fd}html.theme--catppuccin-frappe .select select[disabled]::-moz-placeholder,html.theme--catppuccin-frappe .textarea[disabled]::-moz-placeholder,html.theme--catppuccin-frappe .input[disabled]::-moz-placeholder,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input[disabled]::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .select select::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .textarea::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .input::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:rgba(241,244,253,0.3)}html.theme--catppuccin-frappe .select select[disabled]::-webkit-input-placeholder,html.theme--catppuccin-frappe .textarea[disabled]::-webkit-input-placeholder,html.theme--catppuccin-frappe .input[disabled]::-webkit-input-placeholder,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input[disabled]::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .select select::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .textarea::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .input::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:rgba(241,244,253,0.3)}html.theme--catppuccin-frappe .select select[disabled]:-moz-placeholder,html.theme--catppuccin-frappe .textarea[disabled]:-moz-placeholder,html.theme--catppuccin-frappe .input[disabled]:-moz-placeholder,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input[disabled]:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .select select:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .textarea:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .input:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:rgba(241,244,253,0.3)}html.theme--catppuccin-frappe .select select[disabled]:-ms-input-placeholder,html.theme--catppuccin-frappe .textarea[disabled]:-ms-input-placeholder,html.theme--catppuccin-frappe .input[disabled]:-ms-input-placeholder,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input[disabled]:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .select select:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .textarea:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .input:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:rgba(241,244,253,0.3)}html.theme--catppuccin-frappe .textarea,html.theme--catppuccin-frappe .input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input{box-shadow:inset 0 0.0625em 0.125em rgba(10,10,10,0.05);max-width:100%;width:100%}html.theme--catppuccin-frappe .textarea[readonly],html.theme--catppuccin-frappe .input[readonly],html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input[readonly]{box-shadow:none}html.theme--catppuccin-frappe .is-white.textarea,html.theme--catppuccin-frappe .is-white.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-white{border-color:#fff}html.theme--catppuccin-frappe .is-white.textarea:focus,html.theme--catppuccin-frappe .is-white.input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-white:focus,html.theme--catppuccin-frappe .is-white.is-focused.textarea,html.theme--catppuccin-frappe .is-white.is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .is-white.textarea:active,html.theme--catppuccin-frappe .is-white.input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-white:active,html.theme--catppuccin-frappe .is-white.is-active.textarea,html.theme--catppuccin-frappe .is-white.is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-frappe .is-black.textarea,html.theme--catppuccin-frappe .is-black.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-black{border-color:#0a0a0a}html.theme--catppuccin-frappe .is-black.textarea:focus,html.theme--catppuccin-frappe .is-black.input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-black:focus,html.theme--catppuccin-frappe .is-black.is-focused.textarea,html.theme--catppuccin-frappe .is-black.is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .is-black.textarea:active,html.theme--catppuccin-frappe .is-black.input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-black:active,html.theme--catppuccin-frappe .is-black.is-active.textarea,html.theme--catppuccin-frappe .is-black.is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-frappe .is-light.textarea,html.theme--catppuccin-frappe .is-light.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-light{border-color:#f5f5f5}html.theme--catppuccin-frappe .is-light.textarea:focus,html.theme--catppuccin-frappe .is-light.input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-light:focus,html.theme--catppuccin-frappe .is-light.is-focused.textarea,html.theme--catppuccin-frappe .is-light.is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .is-light.textarea:active,html.theme--catppuccin-frappe .is-light.input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-light:active,html.theme--catppuccin-frappe .is-light.is-active.textarea,html.theme--catppuccin-frappe .is-light.is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-frappe .is-dark.textarea,html.theme--catppuccin-frappe .content kbd.textarea,html.theme--catppuccin-frappe .is-dark.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-dark,html.theme--catppuccin-frappe .content kbd.input{border-color:#414559}html.theme--catppuccin-frappe .is-dark.textarea:focus,html.theme--catppuccin-frappe .content kbd.textarea:focus,html.theme--catppuccin-frappe .is-dark.input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-dark:focus,html.theme--catppuccin-frappe .content kbd.input:focus,html.theme--catppuccin-frappe .is-dark.is-focused.textarea,html.theme--catppuccin-frappe .content kbd.is-focused.textarea,html.theme--catppuccin-frappe .is-dark.is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .content kbd.is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar .content form.docs-search>input.is-focused,html.theme--catppuccin-frappe .is-dark.textarea:active,html.theme--catppuccin-frappe .content kbd.textarea:active,html.theme--catppuccin-frappe .is-dark.input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-dark:active,html.theme--catppuccin-frappe .content kbd.input:active,html.theme--catppuccin-frappe .is-dark.is-active.textarea,html.theme--catppuccin-frappe .content kbd.is-active.textarea,html.theme--catppuccin-frappe .is-dark.is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-frappe .content kbd.is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar .content form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(65,69,89,0.25)}html.theme--catppuccin-frappe .is-primary.textarea,html.theme--catppuccin-frappe .docstring>section>a.textarea.docs-sourcelink,html.theme--catppuccin-frappe .is-primary.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-primary,html.theme--catppuccin-frappe .docstring>section>a.input.docs-sourcelink{border-color:#8caaee}html.theme--catppuccin-frappe .is-primary.textarea:focus,html.theme--catppuccin-frappe .docstring>section>a.textarea.docs-sourcelink:focus,html.theme--catppuccin-frappe .is-primary.input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-primary:focus,html.theme--catppuccin-frappe .docstring>section>a.input.docs-sourcelink:focus,html.theme--catppuccin-frappe .is-primary.is-focused.textarea,html.theme--catppuccin-frappe .docstring>section>a.is-focused.textarea.docs-sourcelink,html.theme--catppuccin-frappe .is-primary.is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .docstring>section>a.is-focused.input.docs-sourcelink,html.theme--catppuccin-frappe .is-primary.textarea:active,html.theme--catppuccin-frappe .docstring>section>a.textarea.docs-sourcelink:active,html.theme--catppuccin-frappe .is-primary.input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-primary:active,html.theme--catppuccin-frappe .docstring>section>a.input.docs-sourcelink:active,html.theme--catppuccin-frappe .is-primary.is-active.textarea,html.theme--catppuccin-frappe .docstring>section>a.is-active.textarea.docs-sourcelink,html.theme--catppuccin-frappe .is-primary.is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-frappe .docstring>section>a.is-active.input.docs-sourcelink{box-shadow:0 0 0 0.125em rgba(140,170,238,0.25)}html.theme--catppuccin-frappe .is-link.textarea,html.theme--catppuccin-frappe .is-link.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-link{border-color:#8caaee}html.theme--catppuccin-frappe .is-link.textarea:focus,html.theme--catppuccin-frappe .is-link.input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-link:focus,html.theme--catppuccin-frappe .is-link.is-focused.textarea,html.theme--catppuccin-frappe .is-link.is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .is-link.textarea:active,html.theme--catppuccin-frappe .is-link.input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-link:active,html.theme--catppuccin-frappe .is-link.is-active.textarea,html.theme--catppuccin-frappe .is-link.is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(140,170,238,0.25)}html.theme--catppuccin-frappe .is-info.textarea,html.theme--catppuccin-frappe .is-info.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-info{border-color:#81c8be}html.theme--catppuccin-frappe .is-info.textarea:focus,html.theme--catppuccin-frappe .is-info.input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-info:focus,html.theme--catppuccin-frappe .is-info.is-focused.textarea,html.theme--catppuccin-frappe .is-info.is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .is-info.textarea:active,html.theme--catppuccin-frappe .is-info.input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-info:active,html.theme--catppuccin-frappe .is-info.is-active.textarea,html.theme--catppuccin-frappe .is-info.is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(129,200,190,0.25)}html.theme--catppuccin-frappe .is-success.textarea,html.theme--catppuccin-frappe .is-success.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-success{border-color:#a6d189}html.theme--catppuccin-frappe .is-success.textarea:focus,html.theme--catppuccin-frappe .is-success.input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-success:focus,html.theme--catppuccin-frappe .is-success.is-focused.textarea,html.theme--catppuccin-frappe .is-success.is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .is-success.textarea:active,html.theme--catppuccin-frappe .is-success.input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-success:active,html.theme--catppuccin-frappe .is-success.is-active.textarea,html.theme--catppuccin-frappe .is-success.is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(166,209,137,0.25)}html.theme--catppuccin-frappe .is-warning.textarea,html.theme--catppuccin-frappe .is-warning.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-warning{border-color:#e5c890}html.theme--catppuccin-frappe .is-warning.textarea:focus,html.theme--catppuccin-frappe .is-warning.input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-warning:focus,html.theme--catppuccin-frappe .is-warning.is-focused.textarea,html.theme--catppuccin-frappe .is-warning.is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .is-warning.textarea:active,html.theme--catppuccin-frappe .is-warning.input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-warning:active,html.theme--catppuccin-frappe .is-warning.is-active.textarea,html.theme--catppuccin-frappe .is-warning.is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(229,200,144,0.25)}html.theme--catppuccin-frappe .is-danger.textarea,html.theme--catppuccin-frappe .is-danger.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-danger{border-color:#e78284}html.theme--catppuccin-frappe .is-danger.textarea:focus,html.theme--catppuccin-frappe .is-danger.input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-danger:focus,html.theme--catppuccin-frappe .is-danger.is-focused.textarea,html.theme--catppuccin-frappe .is-danger.is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .is-danger.textarea:active,html.theme--catppuccin-frappe .is-danger.input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-danger:active,html.theme--catppuccin-frappe .is-danger.is-active.textarea,html.theme--catppuccin-frappe .is-danger.is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(231,130,132,0.25)}html.theme--catppuccin-frappe .is-small.textarea,html.theme--catppuccin-frappe .is-small.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input{border-radius:3px;font-size:.75rem}html.theme--catppuccin-frappe .is-medium.textarea,html.theme--catppuccin-frappe .is-medium.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .is-large.textarea,html.theme--catppuccin-frappe .is-large.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .is-fullwidth.textarea,html.theme--catppuccin-frappe .is-fullwidth.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-fullwidth{display:block;width:100%}html.theme--catppuccin-frappe .is-inline.textarea,html.theme--catppuccin-frappe .is-inline.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-inline{display:inline;width:auto}html.theme--catppuccin-frappe .input.is-rounded,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input{border-radius:9999px;padding-left:calc(calc(0.75em - 1px) + 0.375em);padding-right:calc(calc(0.75em - 1px) + 0.375em)}html.theme--catppuccin-frappe .input.is-static,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}html.theme--catppuccin-frappe .textarea{display:block;max-width:100%;min-width:100%;padding:calc(0.75em - 1px);resize:vertical}html.theme--catppuccin-frappe .textarea:not([rows]){max-height:40em;min-height:8em}html.theme--catppuccin-frappe .textarea[rows]{height:initial}html.theme--catppuccin-frappe .textarea.has-fixed-size{resize:none}html.theme--catppuccin-frappe .radio,html.theme--catppuccin-frappe .checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}html.theme--catppuccin-frappe .radio input,html.theme--catppuccin-frappe .checkbox input{cursor:pointer}html.theme--catppuccin-frappe .radio:hover,html.theme--catppuccin-frappe .checkbox:hover{color:#99d1db}html.theme--catppuccin-frappe .radio[disabled],html.theme--catppuccin-frappe .checkbox[disabled],fieldset[disabled] html.theme--catppuccin-frappe .radio,fieldset[disabled] html.theme--catppuccin-frappe .checkbox,html.theme--catppuccin-frappe .radio input[disabled],html.theme--catppuccin-frappe .checkbox input[disabled]{color:#f1f4fd;cursor:not-allowed}html.theme--catppuccin-frappe .radio+.radio{margin-left:.5em}html.theme--catppuccin-frappe .select{display:inline-block;max-width:100%;position:relative;vertical-align:top}html.theme--catppuccin-frappe .select:not(.is-multiple){height:2.5em}html.theme--catppuccin-frappe .select:not(.is-multiple):not(.is-loading)::after{border-color:#8caaee;right:1.125em;z-index:4}html.theme--catppuccin-frappe .select.is-rounded select,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.select select{border-radius:9999px;padding-left:1em}html.theme--catppuccin-frappe .select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}html.theme--catppuccin-frappe .select select::-ms-expand{display:none}html.theme--catppuccin-frappe .select select[disabled]:hover,fieldset[disabled] html.theme--catppuccin-frappe .select select:hover{border-color:#292c3c}html.theme--catppuccin-frappe .select select:not([multiple]){padding-right:2.5em}html.theme--catppuccin-frappe .select select[multiple]{height:auto;padding:0}html.theme--catppuccin-frappe .select select[multiple] option{padding:0.5em 1em}html.theme--catppuccin-frappe .select:not(.is-multiple):not(.is-loading):hover::after{border-color:#99d1db}html.theme--catppuccin-frappe .select.is-white:not(:hover)::after{border-color:#fff}html.theme--catppuccin-frappe .select.is-white select{border-color:#fff}html.theme--catppuccin-frappe .select.is-white select:hover,html.theme--catppuccin-frappe .select.is-white select.is-hovered{border-color:#f2f2f2}html.theme--catppuccin-frappe .select.is-white select:focus,html.theme--catppuccin-frappe .select.is-white select.is-focused,html.theme--catppuccin-frappe .select.is-white select:active,html.theme--catppuccin-frappe .select.is-white select.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-frappe .select.is-black:not(:hover)::after{border-color:#0a0a0a}html.theme--catppuccin-frappe .select.is-black select{border-color:#0a0a0a}html.theme--catppuccin-frappe .select.is-black select:hover,html.theme--catppuccin-frappe .select.is-black select.is-hovered{border-color:#000}html.theme--catppuccin-frappe .select.is-black select:focus,html.theme--catppuccin-frappe .select.is-black select.is-focused,html.theme--catppuccin-frappe .select.is-black select:active,html.theme--catppuccin-frappe .select.is-black select.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-frappe .select.is-light:not(:hover)::after{border-color:#f5f5f5}html.theme--catppuccin-frappe .select.is-light select{border-color:#f5f5f5}html.theme--catppuccin-frappe .select.is-light select:hover,html.theme--catppuccin-frappe .select.is-light select.is-hovered{border-color:#e8e8e8}html.theme--catppuccin-frappe .select.is-light select:focus,html.theme--catppuccin-frappe .select.is-light select.is-focused,html.theme--catppuccin-frappe .select.is-light select:active,html.theme--catppuccin-frappe .select.is-light select.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-frappe .select.is-dark:not(:hover)::after,html.theme--catppuccin-frappe .content kbd.select:not(:hover)::after{border-color:#414559}html.theme--catppuccin-frappe .select.is-dark select,html.theme--catppuccin-frappe .content kbd.select select{border-color:#414559}html.theme--catppuccin-frappe .select.is-dark select:hover,html.theme--catppuccin-frappe .content kbd.select select:hover,html.theme--catppuccin-frappe .select.is-dark select.is-hovered,html.theme--catppuccin-frappe .content kbd.select select.is-hovered{border-color:#363a4a}html.theme--catppuccin-frappe .select.is-dark select:focus,html.theme--catppuccin-frappe .content kbd.select select:focus,html.theme--catppuccin-frappe .select.is-dark select.is-focused,html.theme--catppuccin-frappe .content kbd.select select.is-focused,html.theme--catppuccin-frappe .select.is-dark select:active,html.theme--catppuccin-frappe .content kbd.select select:active,html.theme--catppuccin-frappe .select.is-dark select.is-active,html.theme--catppuccin-frappe .content kbd.select select.is-active{box-shadow:0 0 0 0.125em rgba(65,69,89,0.25)}html.theme--catppuccin-frappe .select.is-primary:not(:hover)::after,html.theme--catppuccin-frappe .docstring>section>a.select.docs-sourcelink:not(:hover)::after{border-color:#8caaee}html.theme--catppuccin-frappe .select.is-primary select,html.theme--catppuccin-frappe .docstring>section>a.select.docs-sourcelink select{border-color:#8caaee}html.theme--catppuccin-frappe .select.is-primary select:hover,html.theme--catppuccin-frappe .docstring>section>a.select.docs-sourcelink select:hover,html.theme--catppuccin-frappe .select.is-primary select.is-hovered,html.theme--catppuccin-frappe .docstring>section>a.select.docs-sourcelink select.is-hovered{border-color:#769aeb}html.theme--catppuccin-frappe .select.is-primary select:focus,html.theme--catppuccin-frappe .docstring>section>a.select.docs-sourcelink select:focus,html.theme--catppuccin-frappe .select.is-primary select.is-focused,html.theme--catppuccin-frappe .docstring>section>a.select.docs-sourcelink select.is-focused,html.theme--catppuccin-frappe .select.is-primary select:active,html.theme--catppuccin-frappe .docstring>section>a.select.docs-sourcelink select:active,html.theme--catppuccin-frappe .select.is-primary select.is-active,html.theme--catppuccin-frappe .docstring>section>a.select.docs-sourcelink select.is-active{box-shadow:0 0 0 0.125em rgba(140,170,238,0.25)}html.theme--catppuccin-frappe .select.is-link:not(:hover)::after{border-color:#8caaee}html.theme--catppuccin-frappe .select.is-link select{border-color:#8caaee}html.theme--catppuccin-frappe .select.is-link select:hover,html.theme--catppuccin-frappe .select.is-link select.is-hovered{border-color:#769aeb}html.theme--catppuccin-frappe .select.is-link select:focus,html.theme--catppuccin-frappe .select.is-link select.is-focused,html.theme--catppuccin-frappe .select.is-link select:active,html.theme--catppuccin-frappe .select.is-link select.is-active{box-shadow:0 0 0 0.125em rgba(140,170,238,0.25)}html.theme--catppuccin-frappe .select.is-info:not(:hover)::after{border-color:#81c8be}html.theme--catppuccin-frappe .select.is-info select{border-color:#81c8be}html.theme--catppuccin-frappe .select.is-info select:hover,html.theme--catppuccin-frappe .select.is-info select.is-hovered{border-color:#6fc0b5}html.theme--catppuccin-frappe .select.is-info select:focus,html.theme--catppuccin-frappe .select.is-info select.is-focused,html.theme--catppuccin-frappe .select.is-info select:active,html.theme--catppuccin-frappe .select.is-info select.is-active{box-shadow:0 0 0 0.125em rgba(129,200,190,0.25)}html.theme--catppuccin-frappe .select.is-success:not(:hover)::after{border-color:#a6d189}html.theme--catppuccin-frappe .select.is-success select{border-color:#a6d189}html.theme--catppuccin-frappe .select.is-success select:hover,html.theme--catppuccin-frappe .select.is-success select.is-hovered{border-color:#98ca77}html.theme--catppuccin-frappe .select.is-success select:focus,html.theme--catppuccin-frappe .select.is-success select.is-focused,html.theme--catppuccin-frappe .select.is-success select:active,html.theme--catppuccin-frappe .select.is-success select.is-active{box-shadow:0 0 0 0.125em rgba(166,209,137,0.25)}html.theme--catppuccin-frappe .select.is-warning:not(:hover)::after{border-color:#e5c890}html.theme--catppuccin-frappe .select.is-warning select{border-color:#e5c890}html.theme--catppuccin-frappe .select.is-warning select:hover,html.theme--catppuccin-frappe .select.is-warning select.is-hovered{border-color:#e0be7b}html.theme--catppuccin-frappe .select.is-warning select:focus,html.theme--catppuccin-frappe .select.is-warning select.is-focused,html.theme--catppuccin-frappe .select.is-warning select:active,html.theme--catppuccin-frappe .select.is-warning select.is-active{box-shadow:0 0 0 0.125em rgba(229,200,144,0.25)}html.theme--catppuccin-frappe .select.is-danger:not(:hover)::after{border-color:#e78284}html.theme--catppuccin-frappe .select.is-danger select{border-color:#e78284}html.theme--catppuccin-frappe .select.is-danger select:hover,html.theme--catppuccin-frappe .select.is-danger select.is-hovered{border-color:#e36d6f}html.theme--catppuccin-frappe .select.is-danger select:focus,html.theme--catppuccin-frappe .select.is-danger select.is-focused,html.theme--catppuccin-frappe .select.is-danger select:active,html.theme--catppuccin-frappe .select.is-danger select.is-active{box-shadow:0 0 0 0.125em rgba(231,130,132,0.25)}html.theme--catppuccin-frappe .select.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.select{border-radius:3px;font-size:.75rem}html.theme--catppuccin-frappe .select.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .select.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .select.is-disabled::after{border-color:#f1f4fd !important;opacity:0.5}html.theme--catppuccin-frappe .select.is-fullwidth{width:100%}html.theme--catppuccin-frappe .select.is-fullwidth select{width:100%}html.theme--catppuccin-frappe .select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:0.625em;transform:none}html.theme--catppuccin-frappe .select.is-loading.is-small:after,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--catppuccin-frappe .select.is-loading.is-medium:after{font-size:1.25rem}html.theme--catppuccin-frappe .select.is-loading.is-large:after{font-size:1.5rem}html.theme--catppuccin-frappe .file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}html.theme--catppuccin-frappe .file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-frappe .file.is-white:hover .file-cta,html.theme--catppuccin-frappe .file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-frappe .file.is-white:focus .file-cta,html.theme--catppuccin-frappe .file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,255,255,0.25);color:#0a0a0a}html.theme--catppuccin-frappe .file.is-white:active .file-cta,html.theme--catppuccin-frappe .file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-frappe .file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-black:hover .file-cta,html.theme--catppuccin-frappe .file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-black:focus .file-cta,html.theme--catppuccin-frappe .file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(10,10,10,0.25);color:#fff}html.theme--catppuccin-frappe .file.is-black:active .file-cta,html.theme--catppuccin-frappe .file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-light:hover .file-cta,html.theme--catppuccin-frappe .file.is-light.is-hovered .file-cta{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-light:focus .file-cta,html.theme--catppuccin-frappe .file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(245,245,245,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-light:active .file-cta,html.theme--catppuccin-frappe .file.is-light.is-active .file-cta{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-dark .file-cta,html.theme--catppuccin-frappe .content kbd.file .file-cta{background-color:#414559;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-dark:hover .file-cta,html.theme--catppuccin-frappe .content kbd.file:hover .file-cta,html.theme--catppuccin-frappe .file.is-dark.is-hovered .file-cta,html.theme--catppuccin-frappe .content kbd.file.is-hovered .file-cta{background-color:#3c3f52;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-dark:focus .file-cta,html.theme--catppuccin-frappe .content kbd.file:focus .file-cta,html.theme--catppuccin-frappe .file.is-dark.is-focused .file-cta,html.theme--catppuccin-frappe .content kbd.file.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(65,69,89,0.25);color:#fff}html.theme--catppuccin-frappe .file.is-dark:active .file-cta,html.theme--catppuccin-frappe .content kbd.file:active .file-cta,html.theme--catppuccin-frappe .file.is-dark.is-active .file-cta,html.theme--catppuccin-frappe .content kbd.file.is-active .file-cta{background-color:#363a4a;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-primary .file-cta,html.theme--catppuccin-frappe .docstring>section>a.file.docs-sourcelink .file-cta{background-color:#8caaee;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-primary:hover .file-cta,html.theme--catppuccin-frappe .docstring>section>a.file.docs-sourcelink:hover .file-cta,html.theme--catppuccin-frappe .file.is-primary.is-hovered .file-cta,html.theme--catppuccin-frappe .docstring>section>a.file.is-hovered.docs-sourcelink .file-cta{background-color:#81a2ec;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-primary:focus .file-cta,html.theme--catppuccin-frappe .docstring>section>a.file.docs-sourcelink:focus .file-cta,html.theme--catppuccin-frappe .file.is-primary.is-focused .file-cta,html.theme--catppuccin-frappe .docstring>section>a.file.is-focused.docs-sourcelink .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(140,170,238,0.25);color:#fff}html.theme--catppuccin-frappe .file.is-primary:active .file-cta,html.theme--catppuccin-frappe .docstring>section>a.file.docs-sourcelink:active .file-cta,html.theme--catppuccin-frappe .file.is-primary.is-active .file-cta,html.theme--catppuccin-frappe .docstring>section>a.file.is-active.docs-sourcelink .file-cta{background-color:#769aeb;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-link .file-cta{background-color:#8caaee;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-link:hover .file-cta,html.theme--catppuccin-frappe .file.is-link.is-hovered .file-cta{background-color:#81a2ec;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-link:focus .file-cta,html.theme--catppuccin-frappe .file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(140,170,238,0.25);color:#fff}html.theme--catppuccin-frappe .file.is-link:active .file-cta,html.theme--catppuccin-frappe .file.is-link.is-active .file-cta{background-color:#769aeb;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-info .file-cta{background-color:#81c8be;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-info:hover .file-cta,html.theme--catppuccin-frappe .file.is-info.is-hovered .file-cta{background-color:#78c4b9;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-info:focus .file-cta,html.theme--catppuccin-frappe .file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(129,200,190,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-info:active .file-cta,html.theme--catppuccin-frappe .file.is-info.is-active .file-cta{background-color:#6fc0b5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-success .file-cta{background-color:#a6d189;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-success:hover .file-cta,html.theme--catppuccin-frappe .file.is-success.is-hovered .file-cta{background-color:#9fcd80;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-success:focus .file-cta,html.theme--catppuccin-frappe .file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(166,209,137,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-success:active .file-cta,html.theme--catppuccin-frappe .file.is-success.is-active .file-cta{background-color:#98ca77;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-warning .file-cta{background-color:#e5c890;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-warning:hover .file-cta,html.theme--catppuccin-frappe .file.is-warning.is-hovered .file-cta{background-color:#e3c386;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-warning:focus .file-cta,html.theme--catppuccin-frappe .file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(229,200,144,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-warning:active .file-cta,html.theme--catppuccin-frappe .file.is-warning.is-active .file-cta{background-color:#e0be7b;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-danger .file-cta{background-color:#e78284;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-danger:hover .file-cta,html.theme--catppuccin-frappe .file.is-danger.is-hovered .file-cta{background-color:#e57779;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-danger:focus .file-cta,html.theme--catppuccin-frappe .file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(231,130,132,0.25);color:#fff}html.theme--catppuccin-frappe .file.is-danger:active .file-cta,html.theme--catppuccin-frappe .file.is-danger.is-active .file-cta{background-color:#e36d6f;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.file{font-size:.75rem}html.theme--catppuccin-frappe .file.is-normal{font-size:1rem}html.theme--catppuccin-frappe .file.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .file.is-medium .file-icon .fa{font-size:21px}html.theme--catppuccin-frappe .file.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .file.is-large .file-icon .fa{font-size:28px}html.theme--catppuccin-frappe .file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--catppuccin-frappe .file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-frappe .file.has-name.is-empty .file-cta{border-radius:.4em}html.theme--catppuccin-frappe .file.has-name.is-empty .file-name{display:none}html.theme--catppuccin-frappe .file.is-boxed .file-label{flex-direction:column}html.theme--catppuccin-frappe .file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}html.theme--catppuccin-frappe .file.is-boxed .file-name{border-width:0 1px 1px}html.theme--catppuccin-frappe .file.is-boxed .file-icon{height:1.5em;width:1.5em}html.theme--catppuccin-frappe .file.is-boxed .file-icon .fa{font-size:21px}html.theme--catppuccin-frappe .file.is-boxed.is-small .file-icon .fa,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-boxed .file-icon .fa{font-size:14px}html.theme--catppuccin-frappe .file.is-boxed.is-medium .file-icon .fa{font-size:28px}html.theme--catppuccin-frappe .file.is-boxed.is-large .file-icon .fa{font-size:35px}html.theme--catppuccin-frappe .file.is-boxed.has-name .file-cta{border-radius:.4em .4em 0 0}html.theme--catppuccin-frappe .file.is-boxed.has-name .file-name{border-radius:0 0 .4em .4em;border-width:0 1px 1px}html.theme--catppuccin-frappe .file.is-centered{justify-content:center}html.theme--catppuccin-frappe .file.is-fullwidth .file-label{width:100%}html.theme--catppuccin-frappe .file.is-fullwidth .file-name{flex-grow:1;max-width:none}html.theme--catppuccin-frappe .file.is-right{justify-content:flex-end}html.theme--catppuccin-frappe .file.is-right .file-cta{border-radius:0 .4em .4em 0}html.theme--catppuccin-frappe .file.is-right .file-name{border-radius:.4em 0 0 .4em;border-width:1px 0 1px 1px;order:-1}html.theme--catppuccin-frappe .file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}html.theme--catppuccin-frappe .file-label:hover .file-cta{background-color:#3c3f52;color:#b0bef1}html.theme--catppuccin-frappe .file-label:hover .file-name{border-color:#5c6279}html.theme--catppuccin-frappe .file-label:active .file-cta{background-color:#363a4a;color:#b0bef1}html.theme--catppuccin-frappe .file-label:active .file-name{border-color:#575c72}html.theme--catppuccin-frappe .file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}html.theme--catppuccin-frappe .file-cta,html.theme--catppuccin-frappe .file-name{border-color:#626880;border-radius:.4em;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}html.theme--catppuccin-frappe .file-cta{background-color:#414559;color:#c6d0f5}html.theme--catppuccin-frappe .file-name{border-color:#626880;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}html.theme--catppuccin-frappe .file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}html.theme--catppuccin-frappe .file-icon .fa{font-size:14px}html.theme--catppuccin-frappe .label{color:#b0bef1;display:block;font-size:1rem;font-weight:700}html.theme--catppuccin-frappe .label:not(:last-child){margin-bottom:0.5em}html.theme--catppuccin-frappe .label.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.label{font-size:.75rem}html.theme--catppuccin-frappe .label.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .label.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .help{display:block;font-size:.75rem;margin-top:0.25rem}html.theme--catppuccin-frappe .help.is-white{color:#fff}html.theme--catppuccin-frappe .help.is-black{color:#0a0a0a}html.theme--catppuccin-frappe .help.is-light{color:#f5f5f5}html.theme--catppuccin-frappe .help.is-dark,html.theme--catppuccin-frappe .content kbd.help{color:#414559}html.theme--catppuccin-frappe .help.is-primary,html.theme--catppuccin-frappe .docstring>section>a.help.docs-sourcelink{color:#8caaee}html.theme--catppuccin-frappe .help.is-link{color:#8caaee}html.theme--catppuccin-frappe .help.is-info{color:#81c8be}html.theme--catppuccin-frappe .help.is-success{color:#a6d189}html.theme--catppuccin-frappe .help.is-warning{color:#e5c890}html.theme--catppuccin-frappe .help.is-danger{color:#e78284}html.theme--catppuccin-frappe .field:not(:last-child){margin-bottom:0.75rem}html.theme--catppuccin-frappe .field.has-addons{display:flex;justify-content:flex-start}html.theme--catppuccin-frappe .field.has-addons .control:not(:last-child){margin-right:-1px}html.theme--catppuccin-frappe .field.has-addons .control:not(:first-child):not(:last-child) .button,html.theme--catppuccin-frappe .field.has-addons .control:not(:first-child):not(:last-child) .input,html.theme--catppuccin-frappe .field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search>input,html.theme--catppuccin-frappe .field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}html.theme--catppuccin-frappe .field.has-addons .control:first-child:not(:only-child) .button,html.theme--catppuccin-frappe .field.has-addons .control:first-child:not(:only-child) .input,html.theme--catppuccin-frappe .field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search>input,html.theme--catppuccin-frappe .field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--catppuccin-frappe .field.has-addons .control:last-child:not(:only-child) .button,html.theme--catppuccin-frappe .field.has-addons .control:last-child:not(:only-child) .input,html.theme--catppuccin-frappe .field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search>input,html.theme--catppuccin-frappe .field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-frappe .field.has-addons .control .button:not([disabled]):hover,html.theme--catppuccin-frappe .field.has-addons .control .button.is-hovered:not([disabled]),html.theme--catppuccin-frappe .field.has-addons .control .input:not([disabled]):hover,html.theme--catppuccin-frappe .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):hover,html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):hover,html.theme--catppuccin-frappe .field.has-addons .control .input.is-hovered:not([disabled]),html.theme--catppuccin-frappe .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-hovered:not([disabled]),html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-hovered:not([disabled]),html.theme--catppuccin-frappe .field.has-addons .control .select select:not([disabled]):hover,html.theme--catppuccin-frappe .field.has-addons .control .select select.is-hovered:not([disabled]){z-index:2}html.theme--catppuccin-frappe .field.has-addons .control .button:not([disabled]):focus,html.theme--catppuccin-frappe .field.has-addons .control .button.is-focused:not([disabled]),html.theme--catppuccin-frappe .field.has-addons .control .button:not([disabled]):active,html.theme--catppuccin-frappe .field.has-addons .control .button.is-active:not([disabled]),html.theme--catppuccin-frappe .field.has-addons .control .input:not([disabled]):focus,html.theme--catppuccin-frappe .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus,html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus,html.theme--catppuccin-frappe .field.has-addons .control .input.is-focused:not([disabled]),html.theme--catppuccin-frappe .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]),html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]),html.theme--catppuccin-frappe .field.has-addons .control .input:not([disabled]):active,html.theme--catppuccin-frappe .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active,html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active,html.theme--catppuccin-frappe .field.has-addons .control .input.is-active:not([disabled]),html.theme--catppuccin-frappe .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]),html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]),html.theme--catppuccin-frappe .field.has-addons .control .select select:not([disabled]):focus,html.theme--catppuccin-frappe .field.has-addons .control .select select.is-focused:not([disabled]),html.theme--catppuccin-frappe .field.has-addons .control .select select:not([disabled]):active,html.theme--catppuccin-frappe .field.has-addons .control .select select.is-active:not([disabled]){z-index:3}html.theme--catppuccin-frappe .field.has-addons .control .button:not([disabled]):focus:hover,html.theme--catppuccin-frappe .field.has-addons .control .button.is-focused:not([disabled]):hover,html.theme--catppuccin-frappe .field.has-addons .control .button:not([disabled]):active:hover,html.theme--catppuccin-frappe .field.has-addons .control .button.is-active:not([disabled]):hover,html.theme--catppuccin-frappe .field.has-addons .control .input:not([disabled]):focus:hover,html.theme--catppuccin-frappe .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus:hover,html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus:hover,html.theme--catppuccin-frappe .field.has-addons .control .input.is-focused:not([disabled]):hover,html.theme--catppuccin-frappe .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]):hover,html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]):hover,html.theme--catppuccin-frappe .field.has-addons .control .input:not([disabled]):active:hover,html.theme--catppuccin-frappe .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active:hover,html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active:hover,html.theme--catppuccin-frappe .field.has-addons .control .input.is-active:not([disabled]):hover,html.theme--catppuccin-frappe .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]):hover,html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]):hover,html.theme--catppuccin-frappe .field.has-addons .control .select select:not([disabled]):focus:hover,html.theme--catppuccin-frappe .field.has-addons .control .select select.is-focused:not([disabled]):hover,html.theme--catppuccin-frappe .field.has-addons .control .select select:not([disabled]):active:hover,html.theme--catppuccin-frappe .field.has-addons .control .select select.is-active:not([disabled]):hover{z-index:4}html.theme--catppuccin-frappe .field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-frappe .field.has-addons.has-addons-centered{justify-content:center}html.theme--catppuccin-frappe .field.has-addons.has-addons-right{justify-content:flex-end}html.theme--catppuccin-frappe .field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}html.theme--catppuccin-frappe .field.is-grouped{display:flex;justify-content:flex-start}html.theme--catppuccin-frappe .field.is-grouped>.control{flex-shrink:0}html.theme--catppuccin-frappe .field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--catppuccin-frappe .field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-frappe .field.is-grouped.is-grouped-centered{justify-content:center}html.theme--catppuccin-frappe .field.is-grouped.is-grouped-right{justify-content:flex-end}html.theme--catppuccin-frappe .field.is-grouped.is-grouped-multiline{flex-wrap:wrap}html.theme--catppuccin-frappe .field.is-grouped.is-grouped-multiline>.control:last-child,html.theme--catppuccin-frappe .field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:0.75rem}html.theme--catppuccin-frappe .field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}html.theme--catppuccin-frappe .field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .field.is-horizontal{display:flex}}html.theme--catppuccin-frappe .field-label .label{font-size:inherit}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .field-label{margin-bottom:0.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}html.theme--catppuccin-frappe .field-label.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.field-label{font-size:.75rem;padding-top:0.375em}html.theme--catppuccin-frappe .field-label.is-normal{padding-top:0.375em}html.theme--catppuccin-frappe .field-label.is-medium{font-size:1.25rem;padding-top:0.375em}html.theme--catppuccin-frappe .field-label.is-large{font-size:1.5rem;padding-top:0.375em}}html.theme--catppuccin-frappe .field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}html.theme--catppuccin-frappe .field-body .field{margin-bottom:0}html.theme--catppuccin-frappe .field-body>.field{flex-shrink:1}html.theme--catppuccin-frappe .field-body>.field:not(.is-narrow){flex-grow:1}html.theme--catppuccin-frappe .field-body>.field:not(:last-child){margin-right:.75rem}}html.theme--catppuccin-frappe .control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}html.theme--catppuccin-frappe .control.has-icons-left .input:focus~.icon,html.theme--catppuccin-frappe .control.has-icons-left #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--catppuccin-frappe #documenter .docs-sidebar .control.has-icons-left form.docs-search>input:focus~.icon,html.theme--catppuccin-frappe .control.has-icons-left .select:focus~.icon,html.theme--catppuccin-frappe .control.has-icons-right .input:focus~.icon,html.theme--catppuccin-frappe .control.has-icons-right #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--catppuccin-frappe #documenter .docs-sidebar .control.has-icons-right form.docs-search>input:focus~.icon,html.theme--catppuccin-frappe .control.has-icons-right .select:focus~.icon{color:#414559}html.theme--catppuccin-frappe .control.has-icons-left .input.is-small~.icon,html.theme--catppuccin-frappe .control.has-icons-left #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--catppuccin-frappe #documenter .docs-sidebar .control.has-icons-left form.docs-search>input~.icon,html.theme--catppuccin-frappe .control.has-icons-left .select.is-small~.icon,html.theme--catppuccin-frappe .control.has-icons-right .input.is-small~.icon,html.theme--catppuccin-frappe .control.has-icons-right #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--catppuccin-frappe #documenter .docs-sidebar .control.has-icons-right form.docs-search>input~.icon,html.theme--catppuccin-frappe .control.has-icons-right .select.is-small~.icon{font-size:.75rem}html.theme--catppuccin-frappe .control.has-icons-left .input.is-medium~.icon,html.theme--catppuccin-frappe .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--catppuccin-frappe #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-medium~.icon,html.theme--catppuccin-frappe .control.has-icons-left .select.is-medium~.icon,html.theme--catppuccin-frappe .control.has-icons-right .input.is-medium~.icon,html.theme--catppuccin-frappe .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--catppuccin-frappe #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-medium~.icon,html.theme--catppuccin-frappe .control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}html.theme--catppuccin-frappe .control.has-icons-left .input.is-large~.icon,html.theme--catppuccin-frappe .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--catppuccin-frappe #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-large~.icon,html.theme--catppuccin-frappe .control.has-icons-left .select.is-large~.icon,html.theme--catppuccin-frappe .control.has-icons-right .input.is-large~.icon,html.theme--catppuccin-frappe .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--catppuccin-frappe #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-large~.icon,html.theme--catppuccin-frappe .control.has-icons-right .select.is-large~.icon{font-size:1.5rem}html.theme--catppuccin-frappe .control.has-icons-left .icon,html.theme--catppuccin-frappe .control.has-icons-right .icon{color:#626880;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}html.theme--catppuccin-frappe .control.has-icons-left .input,html.theme--catppuccin-frappe .control.has-icons-left #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-frappe #documenter .docs-sidebar .control.has-icons-left form.docs-search>input,html.theme--catppuccin-frappe .control.has-icons-left .select select{padding-left:2.5em}html.theme--catppuccin-frappe .control.has-icons-left .icon.is-left{left:0}html.theme--catppuccin-frappe .control.has-icons-right .input,html.theme--catppuccin-frappe .control.has-icons-right #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-frappe #documenter .docs-sidebar .control.has-icons-right form.docs-search>input,html.theme--catppuccin-frappe .control.has-icons-right .select select{padding-right:2.5em}html.theme--catppuccin-frappe .control.has-icons-right .icon.is-right{right:0}html.theme--catppuccin-frappe .control.is-loading::after{position:absolute !important;right:.625em;top:0.625em;z-index:4}html.theme--catppuccin-frappe .control.is-loading.is-small:after,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--catppuccin-frappe .control.is-loading.is-medium:after{font-size:1.25rem}html.theme--catppuccin-frappe .control.is-loading.is-large:after{font-size:1.5rem}html.theme--catppuccin-frappe .breadcrumb{font-size:1rem;white-space:nowrap}html.theme--catppuccin-frappe .breadcrumb a{align-items:center;color:#8caaee;display:flex;justify-content:center;padding:0 .75em}html.theme--catppuccin-frappe .breadcrumb a:hover{color:#99d1db}html.theme--catppuccin-frappe .breadcrumb li{align-items:center;display:flex}html.theme--catppuccin-frappe .breadcrumb li:first-child a{padding-left:0}html.theme--catppuccin-frappe .breadcrumb li.is-active a{color:#b0bef1;cursor:default;pointer-events:none}html.theme--catppuccin-frappe .breadcrumb li+li::before{color:#737994;content:"\0002f"}html.theme--catppuccin-frappe .breadcrumb ul,html.theme--catppuccin-frappe .breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-frappe .breadcrumb .icon:first-child{margin-right:.5em}html.theme--catppuccin-frappe .breadcrumb .icon:last-child{margin-left:.5em}html.theme--catppuccin-frappe .breadcrumb.is-centered ol,html.theme--catppuccin-frappe .breadcrumb.is-centered ul{justify-content:center}html.theme--catppuccin-frappe .breadcrumb.is-right ol,html.theme--catppuccin-frappe .breadcrumb.is-right ul{justify-content:flex-end}html.theme--catppuccin-frappe .breadcrumb.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.breadcrumb{font-size:.75rem}html.theme--catppuccin-frappe .breadcrumb.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .breadcrumb.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .breadcrumb.has-arrow-separator li+li::before{content:"\02192"}html.theme--catppuccin-frappe .breadcrumb.has-bullet-separator li+li::before{content:"\02022"}html.theme--catppuccin-frappe .breadcrumb.has-dot-separator li+li::before{content:"\000b7"}html.theme--catppuccin-frappe .breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}html.theme--catppuccin-frappe .card{background-color:#fff;border-radius:.25rem;box-shadow:#171717;color:#c6d0f5;max-width:100%;position:relative}html.theme--catppuccin-frappe .card-footer:first-child,html.theme--catppuccin-frappe .card-content:first-child,html.theme--catppuccin-frappe .card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--catppuccin-frappe .card-footer:last-child,html.theme--catppuccin-frappe .card-content:last-child,html.theme--catppuccin-frappe .card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--catppuccin-frappe .card-header{background-color:rgba(0,0,0,0);align-items:stretch;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);display:flex}html.theme--catppuccin-frappe .card-header-title{align-items:center;color:#b0bef1;display:flex;flex-grow:1;font-weight:700;padding:0.75rem 1rem}html.theme--catppuccin-frappe .card-header-title.is-centered{justify-content:center}html.theme--catppuccin-frappe .card-header-icon{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0;align-items:center;cursor:pointer;display:flex;justify-content:center;padding:0.75rem 1rem}html.theme--catppuccin-frappe .card-image{display:block;position:relative}html.theme--catppuccin-frappe .card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--catppuccin-frappe .card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--catppuccin-frappe .card-content{background-color:rgba(0,0,0,0);padding:1.5rem}html.theme--catppuccin-frappe .card-footer{background-color:rgba(0,0,0,0);border-top:1px solid #ededed;align-items:stretch;display:flex}html.theme--catppuccin-frappe .card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}html.theme--catppuccin-frappe .card-footer-item:not(:last-child){border-right:1px solid #ededed}html.theme--catppuccin-frappe .card .media:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-frappe .dropdown{display:inline-flex;position:relative;vertical-align:top}html.theme--catppuccin-frappe .dropdown.is-active .dropdown-menu,html.theme--catppuccin-frappe .dropdown.is-hoverable:hover .dropdown-menu{display:block}html.theme--catppuccin-frappe .dropdown.is-right .dropdown-menu{left:auto;right:0}html.theme--catppuccin-frappe .dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}html.theme--catppuccin-frappe .dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}html.theme--catppuccin-frappe .dropdown-content{background-color:#292c3c;border-radius:.4em;box-shadow:#171717;padding-bottom:.5rem;padding-top:.5rem}html.theme--catppuccin-frappe .dropdown-item{color:#c6d0f5;display:block;font-size:0.875rem;line-height:1.5;padding:0.375rem 1rem;position:relative}html.theme--catppuccin-frappe a.dropdown-item,html.theme--catppuccin-frappe button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}html.theme--catppuccin-frappe a.dropdown-item:hover,html.theme--catppuccin-frappe button.dropdown-item:hover{background-color:#292c3c;color:#0a0a0a}html.theme--catppuccin-frappe a.dropdown-item.is-active,html.theme--catppuccin-frappe button.dropdown-item.is-active{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:0.5rem 0}html.theme--catppuccin-frappe .level{align-items:center;justify-content:space-between}html.theme--catppuccin-frappe .level code{border-radius:.4em}html.theme--catppuccin-frappe .level img{display:inline-block;vertical-align:top}html.theme--catppuccin-frappe .level.is-mobile{display:flex}html.theme--catppuccin-frappe .level.is-mobile .level-left,html.theme--catppuccin-frappe .level.is-mobile .level-right{display:flex}html.theme--catppuccin-frappe .level.is-mobile .level-left+.level-right{margin-top:0}html.theme--catppuccin-frappe .level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--catppuccin-frappe .level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .level{display:flex}html.theme--catppuccin-frappe .level>.level-item:not(.is-narrow){flex-grow:1}}html.theme--catppuccin-frappe .level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}html.theme--catppuccin-frappe .level-item .title,html.theme--catppuccin-frappe .level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .level-item:not(:last-child){margin-bottom:.75rem}}html.theme--catppuccin-frappe .level-left,html.theme--catppuccin-frappe .level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--catppuccin-frappe .level-left .level-item.is-flexible,html.theme--catppuccin-frappe .level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .level-left .level-item:not(:last-child),html.theme--catppuccin-frappe .level-right .level-item:not(:last-child){margin-right:.75rem}}html.theme--catppuccin-frappe .level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .level-left{display:flex}}html.theme--catppuccin-frappe .level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .level-right{display:flex}}html.theme--catppuccin-frappe .media{align-items:flex-start;display:flex;text-align:inherit}html.theme--catppuccin-frappe .media .content:not(:last-child){margin-bottom:.75rem}html.theme--catppuccin-frappe .media .media{border-top:1px solid rgba(98,104,128,0.5);display:flex;padding-top:.75rem}html.theme--catppuccin-frappe .media .media .content:not(:last-child),html.theme--catppuccin-frappe .media .media .control:not(:last-child){margin-bottom:.5rem}html.theme--catppuccin-frappe .media .media .media{padding-top:.5rem}html.theme--catppuccin-frappe .media .media .media+.media{margin-top:.5rem}html.theme--catppuccin-frappe .media+.media{border-top:1px solid rgba(98,104,128,0.5);margin-top:1rem;padding-top:1rem}html.theme--catppuccin-frappe .media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}html.theme--catppuccin-frappe .media-left,html.theme--catppuccin-frappe .media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--catppuccin-frappe .media-left{margin-right:1rem}html.theme--catppuccin-frappe .media-right{margin-left:1rem}html.theme--catppuccin-frappe .media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .media-content{overflow-x:auto}}html.theme--catppuccin-frappe .menu{font-size:1rem}html.theme--catppuccin-frappe .menu.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.menu{font-size:.75rem}html.theme--catppuccin-frappe .menu.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .menu.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .menu-list{line-height:1.25}html.theme--catppuccin-frappe .menu-list a{border-radius:3px;color:#c6d0f5;display:block;padding:0.5em 0.75em}html.theme--catppuccin-frappe .menu-list a:hover{background-color:#292c3c;color:#b0bef1}html.theme--catppuccin-frappe .menu-list a.is-active{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .menu-list li ul{border-left:1px solid #626880;margin:.75em;padding-left:.75em}html.theme--catppuccin-frappe .menu-label{color:#f1f4fd;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}html.theme--catppuccin-frappe .menu-label:not(:first-child){margin-top:1em}html.theme--catppuccin-frappe .menu-label:not(:last-child){margin-bottom:1em}html.theme--catppuccin-frappe .message{background-color:#292c3c;border-radius:.4em;font-size:1rem}html.theme--catppuccin-frappe .message strong{color:currentColor}html.theme--catppuccin-frappe .message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--catppuccin-frappe .message.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.message{font-size:.75rem}html.theme--catppuccin-frappe .message.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .message.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .message.is-white{background-color:#fff}html.theme--catppuccin-frappe .message.is-white .message-header{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-frappe .message.is-white .message-body{border-color:#fff}html.theme--catppuccin-frappe .message.is-black{background-color:#fafafa}html.theme--catppuccin-frappe .message.is-black .message-header{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-frappe .message.is-black .message-body{border-color:#0a0a0a}html.theme--catppuccin-frappe .message.is-light{background-color:#fafafa}html.theme--catppuccin-frappe .message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .message.is-light .message-body{border-color:#f5f5f5}html.theme--catppuccin-frappe .message.is-dark,html.theme--catppuccin-frappe .content kbd.message{background-color:#f9f9fb}html.theme--catppuccin-frappe .message.is-dark .message-header,html.theme--catppuccin-frappe .content kbd.message .message-header{background-color:#414559;color:#fff}html.theme--catppuccin-frappe .message.is-dark .message-body,html.theme--catppuccin-frappe .content kbd.message .message-body{border-color:#414559}html.theme--catppuccin-frappe .message.is-primary,html.theme--catppuccin-frappe .docstring>section>a.message.docs-sourcelink{background-color:#edf2fc}html.theme--catppuccin-frappe .message.is-primary .message-header,html.theme--catppuccin-frappe .docstring>section>a.message.docs-sourcelink .message-header{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .message.is-primary .message-body,html.theme--catppuccin-frappe .docstring>section>a.message.docs-sourcelink .message-body{border-color:#8caaee;color:#153a8e}html.theme--catppuccin-frappe .message.is-link{background-color:#edf2fc}html.theme--catppuccin-frappe .message.is-link .message-header{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .message.is-link .message-body{border-color:#8caaee;color:#153a8e}html.theme--catppuccin-frappe .message.is-info{background-color:#f1f9f8}html.theme--catppuccin-frappe .message.is-info .message-header{background-color:#81c8be;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .message.is-info .message-body{border-color:#81c8be;color:#2d675f}html.theme--catppuccin-frappe .message.is-success{background-color:#f4f9f0}html.theme--catppuccin-frappe .message.is-success .message-header{background-color:#a6d189;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .message.is-success .message-body{border-color:#a6d189;color:#446a29}html.theme--catppuccin-frappe .message.is-warning{background-color:#fbf7ee}html.theme--catppuccin-frappe .message.is-warning .message-header{background-color:#e5c890;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .message.is-warning .message-body{border-color:#e5c890;color:#78591c}html.theme--catppuccin-frappe .message.is-danger{background-color:#fceeee}html.theme--catppuccin-frappe .message.is-danger .message-header{background-color:#e78284;color:#fff}html.theme--catppuccin-frappe .message.is-danger .message-body{border-color:#e78284;color:#9a1e20}html.theme--catppuccin-frappe .message-header{align-items:center;background-color:#c6d0f5;border-radius:.4em .4em 0 0;color:rgba(0,0,0,0.7);display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.75em 1em;position:relative}html.theme--catppuccin-frappe .message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}html.theme--catppuccin-frappe .message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}html.theme--catppuccin-frappe .message-body{border-color:#626880;border-radius:.4em;border-style:solid;border-width:0 0 0 4px;color:#c6d0f5;padding:1.25em 1.5em}html.theme--catppuccin-frappe .message-body code,html.theme--catppuccin-frappe .message-body pre{background-color:#fff}html.theme--catppuccin-frappe .message-body pre code{background-color:rgba(0,0,0,0)}html.theme--catppuccin-frappe .modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}html.theme--catppuccin-frappe .modal.is-active{display:flex}html.theme--catppuccin-frappe .modal-background{background-color:rgba(10,10,10,0.86)}html.theme--catppuccin-frappe .modal-content,html.theme--catppuccin-frappe .modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px){html.theme--catppuccin-frappe .modal-content,html.theme--catppuccin-frappe .modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}html.theme--catppuccin-frappe .modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}html.theme--catppuccin-frappe .modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}html.theme--catppuccin-frappe .modal-card-head,html.theme--catppuccin-frappe .modal-card-foot{align-items:center;background-color:#292c3c;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}html.theme--catppuccin-frappe .modal-card-head{border-bottom:1px solid #626880;border-top-left-radius:8px;border-top-right-radius:8px}html.theme--catppuccin-frappe .modal-card-title{color:#c6d0f5;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}html.theme--catppuccin-frappe .modal-card-foot{border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid #626880}html.theme--catppuccin-frappe .modal-card-foot .button:not(:last-child){margin-right:.5em}html.theme--catppuccin-frappe .modal-card-body{-webkit-overflow-scrolling:touch;background-color:#303446;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}html.theme--catppuccin-frappe .navbar{background-color:#8caaee;min-height:4rem;position:relative;z-index:30}html.theme--catppuccin-frappe .navbar.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-frappe .navbar.is-white .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}html.theme--catppuccin-frappe .navbar.is-white .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-white .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-white .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-white .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-white .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-frappe .navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}html.theme--catppuccin-frappe .navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .navbar.is-white .navbar-start>.navbar-item,html.theme--catppuccin-frappe .navbar.is-white .navbar-start .navbar-link,html.theme--catppuccin-frappe .navbar.is-white .navbar-end>.navbar-item,html.theme--catppuccin-frappe .navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}html.theme--catppuccin-frappe .navbar.is-white .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-white .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-white .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-white .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-white .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-white .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .navbar.is-white .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-white .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-white .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-white .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-white .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-frappe .navbar.is-white .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}html.theme--catppuccin-frappe .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-frappe .navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}html.theme--catppuccin-frappe .navbar.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-frappe .navbar.is-black .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .navbar.is-black .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-frappe .navbar.is-black .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-black .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-black .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-black .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-black .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-frappe .navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-frappe .navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .navbar.is-black .navbar-start>.navbar-item,html.theme--catppuccin-frappe .navbar.is-black .navbar-start .navbar-link,html.theme--catppuccin-frappe .navbar.is-black .navbar-end>.navbar-item,html.theme--catppuccin-frappe .navbar.is-black .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-frappe .navbar.is-black .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-black .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-black .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-black .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-black .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-black .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .navbar.is-black .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-black .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-black .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-black .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-black .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-frappe .navbar.is-black .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-frappe .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}html.theme--catppuccin-frappe .navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}html.theme--catppuccin-frappe .navbar.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-light .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .navbar.is-light .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-light .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-light .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-light .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-light .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-light .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-light .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .navbar.is-light .navbar-start>.navbar-item,html.theme--catppuccin-frappe .navbar.is-light .navbar-start .navbar-link,html.theme--catppuccin-frappe .navbar.is-light .navbar-end>.navbar-item,html.theme--catppuccin-frappe .navbar.is-light .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-light .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-light .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-light .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-light .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-light .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-light .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .navbar.is-light .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-light .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-light .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-light .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-light .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-light .navbar-end .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-light .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .navbar.is-light .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-frappe .navbar.is-dark,html.theme--catppuccin-frappe .content kbd.navbar{background-color:#414559;color:#fff}html.theme--catppuccin-frappe .navbar.is-dark .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .content kbd.navbar .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .navbar.is-dark .navbar-brand .navbar-link,html.theme--catppuccin-frappe .content kbd.navbar .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-frappe .navbar.is-dark .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .content kbd.navbar .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-dark .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .content kbd.navbar .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-dark .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .content kbd.navbar .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-dark .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .content kbd.navbar .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-dark .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .content kbd.navbar .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-dark .navbar-brand .navbar-link.is-active,html.theme--catppuccin-frappe .content kbd.navbar .navbar-brand .navbar-link.is-active{background-color:#363a4a;color:#fff}html.theme--catppuccin-frappe .navbar.is-dark .navbar-brand .navbar-link::after,html.theme--catppuccin-frappe .content kbd.navbar .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-frappe .navbar.is-dark .navbar-burger,html.theme--catppuccin-frappe .content kbd.navbar .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .navbar.is-dark .navbar-start>.navbar-item,html.theme--catppuccin-frappe .content kbd.navbar .navbar-start>.navbar-item,html.theme--catppuccin-frappe .navbar.is-dark .navbar-start .navbar-link,html.theme--catppuccin-frappe .content kbd.navbar .navbar-start .navbar-link,html.theme--catppuccin-frappe .navbar.is-dark .navbar-end>.navbar-item,html.theme--catppuccin-frappe .content kbd.navbar .navbar-end>.navbar-item,html.theme--catppuccin-frappe .navbar.is-dark .navbar-end .navbar-link,html.theme--catppuccin-frappe .content kbd.navbar .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-frappe .navbar.is-dark .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .content kbd.navbar .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-dark .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .content kbd.navbar .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-dark .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .content kbd.navbar .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-dark .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .content kbd.navbar .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-dark .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .content kbd.navbar .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-dark .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .content kbd.navbar .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .navbar.is-dark .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .content kbd.navbar .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-dark .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .content kbd.navbar .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-dark .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .content kbd.navbar .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-dark .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .content kbd.navbar .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-dark .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .content kbd.navbar .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-dark .navbar-end .navbar-link.is-active,html.theme--catppuccin-frappe .content kbd.navbar .navbar-end .navbar-link.is-active{background-color:#363a4a;color:#fff}html.theme--catppuccin-frappe .navbar.is-dark .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .content kbd.navbar .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .navbar.is-dark .navbar-end .navbar-link::after,html.theme--catppuccin-frappe .content kbd.navbar .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-frappe .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-frappe .content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link{background-color:#363a4a;color:#fff}html.theme--catppuccin-frappe .navbar.is-dark .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-frappe .content kbd.navbar .navbar-dropdown a.navbar-item.is-active{background-color:#414559;color:#fff}}html.theme--catppuccin-frappe .navbar.is-primary,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .navbar.is-primary .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .navbar.is-primary .navbar-brand .navbar-link,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-frappe .navbar.is-primary .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-primary .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-primary .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-primary .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-primary .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-primary .navbar-brand .navbar-link.is-active,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active{background-color:#769aeb;color:#fff}html.theme--catppuccin-frappe .navbar.is-primary .navbar-brand .navbar-link::after,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-frappe .navbar.is-primary .navbar-burger,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .navbar.is-primary .navbar-start>.navbar-item,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-start>.navbar-item,html.theme--catppuccin-frappe .navbar.is-primary .navbar-start .navbar-link,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link,html.theme--catppuccin-frappe .navbar.is-primary .navbar-end>.navbar-item,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-end>.navbar-item,html.theme--catppuccin-frappe .navbar.is-primary .navbar-end .navbar-link,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-frappe .navbar.is-primary .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-primary .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-primary .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-primary .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-primary .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-primary .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .navbar.is-primary .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-primary .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-primary .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-primary .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-primary .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-primary .navbar-end .navbar-link.is-active,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active{background-color:#769aeb;color:#fff}html.theme--catppuccin-frappe .navbar.is-primary .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .navbar.is-primary .navbar-end .navbar-link::after,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-frappe .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link{background-color:#769aeb;color:#fff}html.theme--catppuccin-frappe .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#8caaee;color:#fff}}html.theme--catppuccin-frappe .navbar.is-link{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .navbar.is-link .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .navbar.is-link .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-frappe .navbar.is-link .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-link .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-link .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-link .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-link .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#769aeb;color:#fff}html.theme--catppuccin-frappe .navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-frappe .navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .navbar.is-link .navbar-start>.navbar-item,html.theme--catppuccin-frappe .navbar.is-link .navbar-start .navbar-link,html.theme--catppuccin-frappe .navbar.is-link .navbar-end>.navbar-item,html.theme--catppuccin-frappe .navbar.is-link .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-frappe .navbar.is-link .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-link .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-link .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-link .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-link .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-link .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .navbar.is-link .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-link .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-link .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-link .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-link .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-link .navbar-end .navbar-link.is-active{background-color:#769aeb;color:#fff}html.theme--catppuccin-frappe .navbar.is-link .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-frappe .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#769aeb;color:#fff}html.theme--catppuccin-frappe .navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#8caaee;color:#fff}}html.theme--catppuccin-frappe .navbar.is-info{background-color:#81c8be;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-info .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .navbar.is-info .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-info .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-info .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-info .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-info .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-info .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#6fc0b5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-info .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-info .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .navbar.is-info .navbar-start>.navbar-item,html.theme--catppuccin-frappe .navbar.is-info .navbar-start .navbar-link,html.theme--catppuccin-frappe .navbar.is-info .navbar-end>.navbar-item,html.theme--catppuccin-frappe .navbar.is-info .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-info .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-info .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-info .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-info .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-info .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-info .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .navbar.is-info .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-info .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-info .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-info .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-info .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-info .navbar-end .navbar-link.is-active{background-color:#6fc0b5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-info .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .navbar.is-info .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#6fc0b5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#81c8be;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-frappe .navbar.is-success{background-color:#a6d189;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-success .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .navbar.is-success .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-success .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-success .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-success .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-success .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-success .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#98ca77;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-success .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-success .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .navbar.is-success .navbar-start>.navbar-item,html.theme--catppuccin-frappe .navbar.is-success .navbar-start .navbar-link,html.theme--catppuccin-frappe .navbar.is-success .navbar-end>.navbar-item,html.theme--catppuccin-frappe .navbar.is-success .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-success .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-success .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-success .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-success .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-success .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-success .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .navbar.is-success .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-success .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-success .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-success .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-success .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-success .navbar-end .navbar-link.is-active{background-color:#98ca77;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-success .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .navbar.is-success .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#98ca77;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#a6d189;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-frappe .navbar.is-warning{background-color:#e5c890;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-warning .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .navbar.is-warning .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-warning .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-warning .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-warning .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-warning .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-warning .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#e0be7b;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-warning .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-warning .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .navbar.is-warning .navbar-start>.navbar-item,html.theme--catppuccin-frappe .navbar.is-warning .navbar-start .navbar-link,html.theme--catppuccin-frappe .navbar.is-warning .navbar-end>.navbar-item,html.theme--catppuccin-frappe .navbar.is-warning .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-warning .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-warning .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-warning .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-warning .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-warning .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-warning .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .navbar.is-warning .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-warning .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-warning .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-warning .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-warning .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#e0be7b;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-warning .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .navbar.is-warning .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e0be7b;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#e5c890;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-frappe .navbar.is-danger{background-color:#e78284;color:#fff}html.theme--catppuccin-frappe .navbar.is-danger .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .navbar.is-danger .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-frappe .navbar.is-danger .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-danger .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-danger .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-danger .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-danger .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#e36d6f;color:#fff}html.theme--catppuccin-frappe .navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-frappe .navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .navbar.is-danger .navbar-start>.navbar-item,html.theme--catppuccin-frappe .navbar.is-danger .navbar-start .navbar-link,html.theme--catppuccin-frappe .navbar.is-danger .navbar-end>.navbar-item,html.theme--catppuccin-frappe .navbar.is-danger .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-frappe .navbar.is-danger .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-danger .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-danger .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-danger .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-danger .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-danger .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .navbar.is-danger .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-danger .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-danger .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-danger .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-danger .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#e36d6f;color:#fff}html.theme--catppuccin-frappe .navbar.is-danger .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-frappe .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e36d6f;color:#fff}html.theme--catppuccin-frappe .navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#e78284;color:#fff}}html.theme--catppuccin-frappe .navbar>.container{align-items:stretch;display:flex;min-height:4rem;width:100%}html.theme--catppuccin-frappe .navbar.has-shadow{box-shadow:0 2px 0 0 #292c3c}html.theme--catppuccin-frappe .navbar.is-fixed-bottom,html.theme--catppuccin-frappe .navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-frappe .navbar.is-fixed-bottom{bottom:0}html.theme--catppuccin-frappe .navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #292c3c}html.theme--catppuccin-frappe .navbar.is-fixed-top{top:0}html.theme--catppuccin-frappe html.has-navbar-fixed-top,html.theme--catppuccin-frappe body.has-navbar-fixed-top{padding-top:4rem}html.theme--catppuccin-frappe html.has-navbar-fixed-bottom,html.theme--catppuccin-frappe body.has-navbar-fixed-bottom{padding-bottom:4rem}html.theme--catppuccin-frappe .navbar-brand,html.theme--catppuccin-frappe .navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:4rem}html.theme--catppuccin-frappe .navbar-brand a.navbar-item:focus,html.theme--catppuccin-frappe .navbar-brand a.navbar-item:hover{background-color:transparent}html.theme--catppuccin-frappe .navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}html.theme--catppuccin-frappe .navbar-burger{color:#c6d0f5;-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:block;height:4rem;position:relative;width:4rem;margin-left:auto}html.theme--catppuccin-frappe .navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color, opacity, transform;transition-timing-function:ease-out;width:16px}html.theme--catppuccin-frappe .navbar-burger span:nth-child(1){top:calc(50% - 6px)}html.theme--catppuccin-frappe .navbar-burger span:nth-child(2){top:calc(50% - 1px)}html.theme--catppuccin-frappe .navbar-burger span:nth-child(3){top:calc(50% + 4px)}html.theme--catppuccin-frappe .navbar-burger:hover{background-color:rgba(0,0,0,0.05)}html.theme--catppuccin-frappe .navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}html.theme--catppuccin-frappe .navbar-burger.is-active span:nth-child(2){opacity:0}html.theme--catppuccin-frappe .navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}html.theme--catppuccin-frappe .navbar-menu{display:none}html.theme--catppuccin-frappe .navbar-item,html.theme--catppuccin-frappe .navbar-link{color:#c6d0f5;display:block;line-height:1.5;padding:0.5rem 0.75rem;position:relative}html.theme--catppuccin-frappe .navbar-item .icon:only-child,html.theme--catppuccin-frappe .navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}html.theme--catppuccin-frappe a.navbar-item,html.theme--catppuccin-frappe .navbar-link{cursor:pointer}html.theme--catppuccin-frappe a.navbar-item:focus,html.theme--catppuccin-frappe a.navbar-item:focus-within,html.theme--catppuccin-frappe a.navbar-item:hover,html.theme--catppuccin-frappe a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar-link:focus,html.theme--catppuccin-frappe .navbar-link:focus-within,html.theme--catppuccin-frappe .navbar-link:hover,html.theme--catppuccin-frappe .navbar-link.is-active{background-color:rgba(0,0,0,0);color:#8caaee}html.theme--catppuccin-frappe .navbar-item{flex-grow:0;flex-shrink:0}html.theme--catppuccin-frappe .navbar-item img{max-height:1.75rem}html.theme--catppuccin-frappe .navbar-item.has-dropdown{padding:0}html.theme--catppuccin-frappe .navbar-item.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-frappe .navbar-item.is-tab{border-bottom:1px solid transparent;min-height:4rem;padding-bottom:calc(0.5rem - 1px)}html.theme--catppuccin-frappe .navbar-item.is-tab:focus,html.theme--catppuccin-frappe .navbar-item.is-tab:hover{background-color:rgba(0,0,0,0);border-bottom-color:#8caaee}html.theme--catppuccin-frappe .navbar-item.is-tab.is-active{background-color:rgba(0,0,0,0);border-bottom-color:#8caaee;border-bottom-style:solid;border-bottom-width:3px;color:#8caaee;padding-bottom:calc(0.5rem - 3px)}html.theme--catppuccin-frappe .navbar-content{flex-grow:1;flex-shrink:1}html.theme--catppuccin-frappe .navbar-link:not(.is-arrowless){padding-right:2.5em}html.theme--catppuccin-frappe .navbar-link:not(.is-arrowless)::after{border-color:#fff;margin-top:-0.375em;right:1.125em}html.theme--catppuccin-frappe .navbar-dropdown{font-size:0.875rem;padding-bottom:0.5rem;padding-top:0.5rem}html.theme--catppuccin-frappe .navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}html.theme--catppuccin-frappe .navbar-divider{background-color:rgba(0,0,0,0.2);border:none;display:none;height:2px;margin:0.5rem 0}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .navbar>.container{display:block}html.theme--catppuccin-frappe .navbar-brand .navbar-item,html.theme--catppuccin-frappe .navbar-tabs .navbar-item{align-items:center;display:flex}html.theme--catppuccin-frappe .navbar-link::after{display:none}html.theme--catppuccin-frappe .navbar-menu{background-color:#8caaee;box-shadow:0 8px 16px rgba(10,10,10,0.1);padding:0.5rem 0}html.theme--catppuccin-frappe .navbar-menu.is-active{display:block}html.theme--catppuccin-frappe .navbar.is-fixed-bottom-touch,html.theme--catppuccin-frappe .navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-frappe .navbar.is-fixed-bottom-touch{bottom:0}html.theme--catppuccin-frappe .navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .navbar.is-fixed-top-touch{top:0}html.theme--catppuccin-frappe .navbar.is-fixed-top .navbar-menu,html.theme--catppuccin-frappe .navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 4rem);overflow:auto}html.theme--catppuccin-frappe html.has-navbar-fixed-top-touch,html.theme--catppuccin-frappe body.has-navbar-fixed-top-touch{padding-top:4rem}html.theme--catppuccin-frappe html.has-navbar-fixed-bottom-touch,html.theme--catppuccin-frappe body.has-navbar-fixed-bottom-touch{padding-bottom:4rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .navbar,html.theme--catppuccin-frappe .navbar-menu,html.theme--catppuccin-frappe .navbar-start,html.theme--catppuccin-frappe .navbar-end{align-items:stretch;display:flex}html.theme--catppuccin-frappe .navbar{min-height:4rem}html.theme--catppuccin-frappe .navbar.is-spaced{padding:1rem 2rem}html.theme--catppuccin-frappe .navbar.is-spaced .navbar-start,html.theme--catppuccin-frappe .navbar.is-spaced .navbar-end{align-items:center}html.theme--catppuccin-frappe .navbar.is-spaced a.navbar-item,html.theme--catppuccin-frappe .navbar.is-spaced .navbar-link{border-radius:.4em}html.theme--catppuccin-frappe .navbar.is-transparent a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-transparent a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-transparent a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-transparent .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-transparent .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}html.theme--catppuccin-frappe .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-frappe .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,html.theme--catppuccin-frappe .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,html.theme--catppuccin-frappe .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}html.theme--catppuccin-frappe .navbar.is-transparent .navbar-dropdown a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#838ba7}html.theme--catppuccin-frappe .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#8caaee}html.theme--catppuccin-frappe .navbar-burger{display:none}html.theme--catppuccin-frappe .navbar-item,html.theme--catppuccin-frappe .navbar-link{align-items:center;display:flex}html.theme--catppuccin-frappe .navbar-item.has-dropdown{align-items:stretch}html.theme--catppuccin-frappe .navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}html.theme--catppuccin-frappe .navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:1px solid rgba(0,0,0,0.2);border-radius:8px 8px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,0.1);top:auto}html.theme--catppuccin-frappe .navbar-item.is-active .navbar-dropdown,html.theme--catppuccin-frappe .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--catppuccin-frappe .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--catppuccin-frappe .navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced html.theme--catppuccin-frappe .navbar-item.is-active .navbar-dropdown,html.theme--catppuccin-frappe .navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-frappe .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--catppuccin-frappe .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-frappe .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--catppuccin-frappe .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-frappe .navbar-item.is-hoverable:hover .navbar-dropdown,html.theme--catppuccin-frappe .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}html.theme--catppuccin-frappe .navbar-menu{flex-grow:1;flex-shrink:0}html.theme--catppuccin-frappe .navbar-start{justify-content:flex-start;margin-right:auto}html.theme--catppuccin-frappe .navbar-end{justify-content:flex-end;margin-left:auto}html.theme--catppuccin-frappe .navbar-dropdown{background-color:#8caaee;border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid rgba(0,0,0,0.2);box-shadow:0 8px 8px rgba(10,10,10,0.1);display:none;font-size:0.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}html.theme--catppuccin-frappe .navbar-dropdown .navbar-item{padding:0.375rem 1rem;white-space:nowrap}html.theme--catppuccin-frappe .navbar-dropdown a.navbar-item{padding-right:3rem}html.theme--catppuccin-frappe .navbar-dropdown a.navbar-item:focus,html.theme--catppuccin-frappe .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#838ba7}html.theme--catppuccin-frappe .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#8caaee}.navbar.is-spaced html.theme--catppuccin-frappe .navbar-dropdown,html.theme--catppuccin-frappe .navbar-dropdown.is-boxed{border-radius:8px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,0.1), 0 0 0 1px rgba(10,10,10,0.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity, transform}html.theme--catppuccin-frappe .navbar-dropdown.is-right{left:auto;right:0}html.theme--catppuccin-frappe .navbar-divider{display:block}html.theme--catppuccin-frappe .navbar>.container .navbar-brand,html.theme--catppuccin-frappe .container>.navbar .navbar-brand{margin-left:-.75rem}html.theme--catppuccin-frappe .navbar>.container .navbar-menu,html.theme--catppuccin-frappe .container>.navbar .navbar-menu{margin-right:-.75rem}html.theme--catppuccin-frappe .navbar.is-fixed-bottom-desktop,html.theme--catppuccin-frappe .navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-frappe .navbar.is-fixed-bottom-desktop{bottom:0}html.theme--catppuccin-frappe .navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .navbar.is-fixed-top-desktop{top:0}html.theme--catppuccin-frappe html.has-navbar-fixed-top-desktop,html.theme--catppuccin-frappe body.has-navbar-fixed-top-desktop{padding-top:4rem}html.theme--catppuccin-frappe html.has-navbar-fixed-bottom-desktop,html.theme--catppuccin-frappe body.has-navbar-fixed-bottom-desktop{padding-bottom:4rem}html.theme--catppuccin-frappe html.has-spaced-navbar-fixed-top,html.theme--catppuccin-frappe body.has-spaced-navbar-fixed-top{padding-top:6rem}html.theme--catppuccin-frappe html.has-spaced-navbar-fixed-bottom,html.theme--catppuccin-frappe body.has-spaced-navbar-fixed-bottom{padding-bottom:6rem}html.theme--catppuccin-frappe a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar-link.is-active{color:#8caaee}html.theme--catppuccin-frappe a.navbar-item.is-active:not(:focus):not(:hover),html.theme--catppuccin-frappe .navbar-link.is-active:not(:focus):not(:hover){background-color:rgba(0,0,0,0)}html.theme--catppuccin-frappe .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .navbar-item.has-dropdown.is-active .navbar-link{background-color:rgba(0,0,0,0)}}html.theme--catppuccin-frappe .hero.is-fullheight-with-navbar{min-height:calc(100vh - 4rem)}html.theme--catppuccin-frappe .pagination{font-size:1rem;margin:-.25rem}html.theme--catppuccin-frappe .pagination.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.pagination{font-size:.75rem}html.theme--catppuccin-frappe .pagination.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .pagination.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .pagination.is-rounded .pagination-previous,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.pagination .pagination-previous,html.theme--catppuccin-frappe .pagination.is-rounded .pagination-next,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.pagination .pagination-next{padding-left:1em;padding-right:1em;border-radius:9999px}html.theme--catppuccin-frappe .pagination.is-rounded .pagination-link,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.pagination .pagination-link{border-radius:9999px}html.theme--catppuccin-frappe .pagination,html.theme--catppuccin-frappe .pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}html.theme--catppuccin-frappe .pagination-previous,html.theme--catppuccin-frappe .pagination-next,html.theme--catppuccin-frappe .pagination-link,html.theme--catppuccin-frappe .pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}html.theme--catppuccin-frappe .pagination-previous,html.theme--catppuccin-frappe .pagination-next,html.theme--catppuccin-frappe .pagination-link{border-color:#626880;color:#8caaee;min-width:2.5em}html.theme--catppuccin-frappe .pagination-previous:hover,html.theme--catppuccin-frappe .pagination-next:hover,html.theme--catppuccin-frappe .pagination-link:hover{border-color:#737994;color:#99d1db}html.theme--catppuccin-frappe .pagination-previous:focus,html.theme--catppuccin-frappe .pagination-next:focus,html.theme--catppuccin-frappe .pagination-link:focus{border-color:#737994}html.theme--catppuccin-frappe .pagination-previous:active,html.theme--catppuccin-frappe .pagination-next:active,html.theme--catppuccin-frappe .pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2)}html.theme--catppuccin-frappe .pagination-previous[disabled],html.theme--catppuccin-frappe .pagination-previous.is-disabled,html.theme--catppuccin-frappe .pagination-next[disabled],html.theme--catppuccin-frappe .pagination-next.is-disabled,html.theme--catppuccin-frappe .pagination-link[disabled],html.theme--catppuccin-frappe .pagination-link.is-disabled{background-color:#626880;border-color:#626880;box-shadow:none;color:#f1f4fd;opacity:0.5}html.theme--catppuccin-frappe .pagination-previous,html.theme--catppuccin-frappe .pagination-next{padding-left:.75em;padding-right:.75em;white-space:nowrap}html.theme--catppuccin-frappe .pagination-link.is-current{background-color:#8caaee;border-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .pagination-ellipsis{color:#737994;pointer-events:none}html.theme--catppuccin-frappe .pagination-list{flex-wrap:wrap}html.theme--catppuccin-frappe .pagination-list li{list-style:none}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .pagination{flex-wrap:wrap}html.theme--catppuccin-frappe .pagination-previous,html.theme--catppuccin-frappe .pagination-next{flex-grow:1;flex-shrink:1}html.theme--catppuccin-frappe .pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}html.theme--catppuccin-frappe .pagination-previous,html.theme--catppuccin-frappe .pagination-next,html.theme--catppuccin-frappe .pagination-link,html.theme--catppuccin-frappe .pagination-ellipsis{margin-bottom:0;margin-top:0}html.theme--catppuccin-frappe .pagination-previous{order:2}html.theme--catppuccin-frappe .pagination-next{order:3}html.theme--catppuccin-frappe .pagination{justify-content:space-between;margin-bottom:0;margin-top:0}html.theme--catppuccin-frappe .pagination.is-centered .pagination-previous{order:1}html.theme--catppuccin-frappe .pagination.is-centered .pagination-list{justify-content:center;order:2}html.theme--catppuccin-frappe .pagination.is-centered .pagination-next{order:3}html.theme--catppuccin-frappe .pagination.is-right .pagination-previous{order:1}html.theme--catppuccin-frappe .pagination.is-right .pagination-next{order:2}html.theme--catppuccin-frappe .pagination.is-right .pagination-list{justify-content:flex-end;order:3}}html.theme--catppuccin-frappe .panel{border-radius:8px;box-shadow:#171717;font-size:1rem}html.theme--catppuccin-frappe .panel:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-frappe .panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-frappe .panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}html.theme--catppuccin-frappe .panel.is-white .panel-block.is-active .panel-icon{color:#fff}html.theme--catppuccin-frappe .panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-frappe .panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}html.theme--catppuccin-frappe .panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}html.theme--catppuccin-frappe .panel.is-light .panel-heading{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .panel.is-light .panel-tabs a.is-active{border-bottom-color:#f5f5f5}html.theme--catppuccin-frappe .panel.is-light .panel-block.is-active .panel-icon{color:#f5f5f5}html.theme--catppuccin-frappe .panel.is-dark .panel-heading,html.theme--catppuccin-frappe .content kbd.panel .panel-heading{background-color:#414559;color:#fff}html.theme--catppuccin-frappe .panel.is-dark .panel-tabs a.is-active,html.theme--catppuccin-frappe .content kbd.panel .panel-tabs a.is-active{border-bottom-color:#414559}html.theme--catppuccin-frappe .panel.is-dark .panel-block.is-active .panel-icon,html.theme--catppuccin-frappe .content kbd.panel .panel-block.is-active .panel-icon{color:#414559}html.theme--catppuccin-frappe .panel.is-primary .panel-heading,html.theme--catppuccin-frappe .docstring>section>a.panel.docs-sourcelink .panel-heading{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .panel.is-primary .panel-tabs a.is-active,html.theme--catppuccin-frappe .docstring>section>a.panel.docs-sourcelink .panel-tabs a.is-active{border-bottom-color:#8caaee}html.theme--catppuccin-frappe .panel.is-primary .panel-block.is-active .panel-icon,html.theme--catppuccin-frappe .docstring>section>a.panel.docs-sourcelink .panel-block.is-active .panel-icon{color:#8caaee}html.theme--catppuccin-frappe .panel.is-link .panel-heading{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .panel.is-link .panel-tabs a.is-active{border-bottom-color:#8caaee}html.theme--catppuccin-frappe .panel.is-link .panel-block.is-active .panel-icon{color:#8caaee}html.theme--catppuccin-frappe .panel.is-info .panel-heading{background-color:#81c8be;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .panel.is-info .panel-tabs a.is-active{border-bottom-color:#81c8be}html.theme--catppuccin-frappe .panel.is-info .panel-block.is-active .panel-icon{color:#81c8be}html.theme--catppuccin-frappe .panel.is-success .panel-heading{background-color:#a6d189;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .panel.is-success .panel-tabs a.is-active{border-bottom-color:#a6d189}html.theme--catppuccin-frappe .panel.is-success .panel-block.is-active .panel-icon{color:#a6d189}html.theme--catppuccin-frappe .panel.is-warning .panel-heading{background-color:#e5c890;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .panel.is-warning .panel-tabs a.is-active{border-bottom-color:#e5c890}html.theme--catppuccin-frappe .panel.is-warning .panel-block.is-active .panel-icon{color:#e5c890}html.theme--catppuccin-frappe .panel.is-danger .panel-heading{background-color:#e78284;color:#fff}html.theme--catppuccin-frappe .panel.is-danger .panel-tabs a.is-active{border-bottom-color:#e78284}html.theme--catppuccin-frappe .panel.is-danger .panel-block.is-active .panel-icon{color:#e78284}html.theme--catppuccin-frappe .panel-tabs:not(:last-child),html.theme--catppuccin-frappe .panel-block:not(:last-child){border-bottom:1px solid #ededed}html.theme--catppuccin-frappe .panel-heading{background-color:#51576d;border-radius:8px 8px 0 0;color:#b0bef1;font-size:1.25em;font-weight:700;line-height:1.25;padding:0.75em 1em}html.theme--catppuccin-frappe .panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}html.theme--catppuccin-frappe .panel-tabs a{border-bottom:1px solid #626880;margin-bottom:-1px;padding:0.5em}html.theme--catppuccin-frappe .panel-tabs a.is-active{border-bottom-color:#51576d;color:#769aeb}html.theme--catppuccin-frappe .panel-list a{color:#c6d0f5}html.theme--catppuccin-frappe .panel-list a:hover{color:#8caaee}html.theme--catppuccin-frappe .panel-block{align-items:center;color:#b0bef1;display:flex;justify-content:flex-start;padding:0.5em 0.75em}html.theme--catppuccin-frappe .panel-block input[type="checkbox"]{margin-right:.75em}html.theme--catppuccin-frappe .panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}html.theme--catppuccin-frappe .panel-block.is-wrapped{flex-wrap:wrap}html.theme--catppuccin-frappe .panel-block.is-active{border-left-color:#8caaee;color:#769aeb}html.theme--catppuccin-frappe .panel-block.is-active .panel-icon{color:#8caaee}html.theme--catppuccin-frappe .panel-block:last-child{border-bottom-left-radius:8px;border-bottom-right-radius:8px}html.theme--catppuccin-frappe a.panel-block,html.theme--catppuccin-frappe label.panel-block{cursor:pointer}html.theme--catppuccin-frappe a.panel-block:hover,html.theme--catppuccin-frappe label.panel-block:hover{background-color:#292c3c}html.theme--catppuccin-frappe .panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#f1f4fd;margin-right:.75em}html.theme--catppuccin-frappe .panel-icon .fa{font-size:inherit;line-height:inherit}html.theme--catppuccin-frappe .tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}html.theme--catppuccin-frappe .tabs a{align-items:center;border-bottom-color:#626880;border-bottom-style:solid;border-bottom-width:1px;color:#c6d0f5;display:flex;justify-content:center;margin-bottom:-1px;padding:0.5em 1em;vertical-align:top}html.theme--catppuccin-frappe .tabs a:hover{border-bottom-color:#b0bef1;color:#b0bef1}html.theme--catppuccin-frappe .tabs li{display:block}html.theme--catppuccin-frappe .tabs li.is-active a{border-bottom-color:#8caaee;color:#8caaee}html.theme--catppuccin-frappe .tabs ul{align-items:center;border-bottom-color:#626880;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}html.theme--catppuccin-frappe .tabs ul.is-left{padding-right:0.75em}html.theme--catppuccin-frappe .tabs ul.is-center{flex:none;justify-content:center;padding-left:0.75em;padding-right:0.75em}html.theme--catppuccin-frappe .tabs ul.is-right{justify-content:flex-end;padding-left:0.75em}html.theme--catppuccin-frappe .tabs .icon:first-child{margin-right:.5em}html.theme--catppuccin-frappe .tabs .icon:last-child{margin-left:.5em}html.theme--catppuccin-frappe .tabs.is-centered ul{justify-content:center}html.theme--catppuccin-frappe .tabs.is-right ul{justify-content:flex-end}html.theme--catppuccin-frappe .tabs.is-boxed a{border:1px solid transparent;border-radius:.4em .4em 0 0}html.theme--catppuccin-frappe .tabs.is-boxed a:hover{background-color:#292c3c;border-bottom-color:#626880}html.theme--catppuccin-frappe .tabs.is-boxed li.is-active a{background-color:#fff;border-color:#626880;border-bottom-color:rgba(0,0,0,0) !important}html.theme--catppuccin-frappe .tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}html.theme--catppuccin-frappe .tabs.is-toggle a{border-color:#626880;border-style:solid;border-width:1px;margin-bottom:0;position:relative}html.theme--catppuccin-frappe .tabs.is-toggle a:hover{background-color:#292c3c;border-color:#737994;z-index:2}html.theme--catppuccin-frappe .tabs.is-toggle li+li{margin-left:-1px}html.theme--catppuccin-frappe .tabs.is-toggle li:first-child a{border-top-left-radius:.4em;border-bottom-left-radius:.4em}html.theme--catppuccin-frappe .tabs.is-toggle li:last-child a{border-top-right-radius:.4em;border-bottom-right-radius:.4em}html.theme--catppuccin-frappe .tabs.is-toggle li.is-active a{background-color:#8caaee;border-color:#8caaee;color:#fff;z-index:1}html.theme--catppuccin-frappe .tabs.is-toggle ul{border-bottom:none}html.theme--catppuccin-frappe .tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:9999px;border-top-left-radius:9999px;padding-left:1.25em}html.theme--catppuccin-frappe .tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:9999px;border-top-right-radius:9999px;padding-right:1.25em}html.theme--catppuccin-frappe .tabs.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.tabs{font-size:.75rem}html.theme--catppuccin-frappe .tabs.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .tabs.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-narrow{flex:none;width:unset}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-full{flex:none;width:100%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-half{flex:none;width:50%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-half{margin-left:50%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-0{flex:none;width:0%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-0{margin-left:0%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-1{flex:none;width:8.33333337%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-1{margin-left:8.33333337%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-2{flex:none;width:16.66666674%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-2{margin-left:16.66666674%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-3{flex:none;width:25%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-3{margin-left:25%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-4{flex:none;width:33.33333337%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-4{margin-left:33.33333337%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-5{flex:none;width:41.66666674%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-5{margin-left:41.66666674%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-6{flex:none;width:50%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-6{margin-left:50%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-7{flex:none;width:58.33333337%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-7{margin-left:58.33333337%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-8{flex:none;width:66.66666674%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-8{margin-left:66.66666674%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-9{flex:none;width:75%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-9{margin-left:75%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-10{flex:none;width:83.33333337%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-10{margin-left:83.33333337%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-11{flex:none;width:91.66666674%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-11{margin-left:91.66666674%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-12{flex:none;width:100%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .column.is-narrow-mobile{flex:none;width:unset}html.theme--catppuccin-frappe .column.is-full-mobile{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-three-quarters-mobile{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-two-thirds-mobile{flex:none;width:66.6666%}html.theme--catppuccin-frappe .column.is-half-mobile{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-one-third-mobile{flex:none;width:33.3333%}html.theme--catppuccin-frappe .column.is-one-quarter-mobile{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-one-fifth-mobile{flex:none;width:20%}html.theme--catppuccin-frappe .column.is-two-fifths-mobile{flex:none;width:40%}html.theme--catppuccin-frappe .column.is-three-fifths-mobile{flex:none;width:60%}html.theme--catppuccin-frappe .column.is-four-fifths-mobile{flex:none;width:80%}html.theme--catppuccin-frappe .column.is-offset-three-quarters-mobile{margin-left:75%}html.theme--catppuccin-frappe .column.is-offset-two-thirds-mobile{margin-left:66.6666%}html.theme--catppuccin-frappe .column.is-offset-half-mobile{margin-left:50%}html.theme--catppuccin-frappe .column.is-offset-one-third-mobile{margin-left:33.3333%}html.theme--catppuccin-frappe .column.is-offset-one-quarter-mobile{margin-left:25%}html.theme--catppuccin-frappe .column.is-offset-one-fifth-mobile{margin-left:20%}html.theme--catppuccin-frappe .column.is-offset-two-fifths-mobile{margin-left:40%}html.theme--catppuccin-frappe .column.is-offset-three-fifths-mobile{margin-left:60%}html.theme--catppuccin-frappe .column.is-offset-four-fifths-mobile{margin-left:80%}html.theme--catppuccin-frappe .column.is-0-mobile{flex:none;width:0%}html.theme--catppuccin-frappe .column.is-offset-0-mobile{margin-left:0%}html.theme--catppuccin-frappe .column.is-1-mobile{flex:none;width:8.33333337%}html.theme--catppuccin-frappe .column.is-offset-1-mobile{margin-left:8.33333337%}html.theme--catppuccin-frappe .column.is-2-mobile{flex:none;width:16.66666674%}html.theme--catppuccin-frappe .column.is-offset-2-mobile{margin-left:16.66666674%}html.theme--catppuccin-frappe .column.is-3-mobile{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-offset-3-mobile{margin-left:25%}html.theme--catppuccin-frappe .column.is-4-mobile{flex:none;width:33.33333337%}html.theme--catppuccin-frappe .column.is-offset-4-mobile{margin-left:33.33333337%}html.theme--catppuccin-frappe .column.is-5-mobile{flex:none;width:41.66666674%}html.theme--catppuccin-frappe .column.is-offset-5-mobile{margin-left:41.66666674%}html.theme--catppuccin-frappe .column.is-6-mobile{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-offset-6-mobile{margin-left:50%}html.theme--catppuccin-frappe .column.is-7-mobile{flex:none;width:58.33333337%}html.theme--catppuccin-frappe .column.is-offset-7-mobile{margin-left:58.33333337%}html.theme--catppuccin-frappe .column.is-8-mobile{flex:none;width:66.66666674%}html.theme--catppuccin-frappe .column.is-offset-8-mobile{margin-left:66.66666674%}html.theme--catppuccin-frappe .column.is-9-mobile{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-offset-9-mobile{margin-left:75%}html.theme--catppuccin-frappe .column.is-10-mobile{flex:none;width:83.33333337%}html.theme--catppuccin-frappe .column.is-offset-10-mobile{margin-left:83.33333337%}html.theme--catppuccin-frappe .column.is-11-mobile{flex:none;width:91.66666674%}html.theme--catppuccin-frappe .column.is-offset-11-mobile{margin-left:91.66666674%}html.theme--catppuccin-frappe .column.is-12-mobile{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .column.is-narrow,html.theme--catppuccin-frappe .column.is-narrow-tablet{flex:none;width:unset}html.theme--catppuccin-frappe .column.is-full,html.theme--catppuccin-frappe .column.is-full-tablet{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-three-quarters,html.theme--catppuccin-frappe .column.is-three-quarters-tablet{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-two-thirds,html.theme--catppuccin-frappe .column.is-two-thirds-tablet{flex:none;width:66.6666%}html.theme--catppuccin-frappe .column.is-half,html.theme--catppuccin-frappe .column.is-half-tablet{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-one-third,html.theme--catppuccin-frappe .column.is-one-third-tablet{flex:none;width:33.3333%}html.theme--catppuccin-frappe .column.is-one-quarter,html.theme--catppuccin-frappe .column.is-one-quarter-tablet{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-one-fifth,html.theme--catppuccin-frappe .column.is-one-fifth-tablet{flex:none;width:20%}html.theme--catppuccin-frappe .column.is-two-fifths,html.theme--catppuccin-frappe .column.is-two-fifths-tablet{flex:none;width:40%}html.theme--catppuccin-frappe .column.is-three-fifths,html.theme--catppuccin-frappe .column.is-three-fifths-tablet{flex:none;width:60%}html.theme--catppuccin-frappe .column.is-four-fifths,html.theme--catppuccin-frappe .column.is-four-fifths-tablet{flex:none;width:80%}html.theme--catppuccin-frappe .column.is-offset-three-quarters,html.theme--catppuccin-frappe .column.is-offset-three-quarters-tablet{margin-left:75%}html.theme--catppuccin-frappe .column.is-offset-two-thirds,html.theme--catppuccin-frappe .column.is-offset-two-thirds-tablet{margin-left:66.6666%}html.theme--catppuccin-frappe .column.is-offset-half,html.theme--catppuccin-frappe .column.is-offset-half-tablet{margin-left:50%}html.theme--catppuccin-frappe .column.is-offset-one-third,html.theme--catppuccin-frappe .column.is-offset-one-third-tablet{margin-left:33.3333%}html.theme--catppuccin-frappe .column.is-offset-one-quarter,html.theme--catppuccin-frappe .column.is-offset-one-quarter-tablet{margin-left:25%}html.theme--catppuccin-frappe .column.is-offset-one-fifth,html.theme--catppuccin-frappe .column.is-offset-one-fifth-tablet{margin-left:20%}html.theme--catppuccin-frappe .column.is-offset-two-fifths,html.theme--catppuccin-frappe .column.is-offset-two-fifths-tablet{margin-left:40%}html.theme--catppuccin-frappe .column.is-offset-three-fifths,html.theme--catppuccin-frappe .column.is-offset-three-fifths-tablet{margin-left:60%}html.theme--catppuccin-frappe .column.is-offset-four-fifths,html.theme--catppuccin-frappe .column.is-offset-four-fifths-tablet{margin-left:80%}html.theme--catppuccin-frappe .column.is-0,html.theme--catppuccin-frappe .column.is-0-tablet{flex:none;width:0%}html.theme--catppuccin-frappe .column.is-offset-0,html.theme--catppuccin-frappe .column.is-offset-0-tablet{margin-left:0%}html.theme--catppuccin-frappe .column.is-1,html.theme--catppuccin-frappe .column.is-1-tablet{flex:none;width:8.33333337%}html.theme--catppuccin-frappe .column.is-offset-1,html.theme--catppuccin-frappe .column.is-offset-1-tablet{margin-left:8.33333337%}html.theme--catppuccin-frappe .column.is-2,html.theme--catppuccin-frappe .column.is-2-tablet{flex:none;width:16.66666674%}html.theme--catppuccin-frappe .column.is-offset-2,html.theme--catppuccin-frappe .column.is-offset-2-tablet{margin-left:16.66666674%}html.theme--catppuccin-frappe .column.is-3,html.theme--catppuccin-frappe .column.is-3-tablet{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-offset-3,html.theme--catppuccin-frappe .column.is-offset-3-tablet{margin-left:25%}html.theme--catppuccin-frappe .column.is-4,html.theme--catppuccin-frappe .column.is-4-tablet{flex:none;width:33.33333337%}html.theme--catppuccin-frappe .column.is-offset-4,html.theme--catppuccin-frappe .column.is-offset-4-tablet{margin-left:33.33333337%}html.theme--catppuccin-frappe .column.is-5,html.theme--catppuccin-frappe .column.is-5-tablet{flex:none;width:41.66666674%}html.theme--catppuccin-frappe .column.is-offset-5,html.theme--catppuccin-frappe .column.is-offset-5-tablet{margin-left:41.66666674%}html.theme--catppuccin-frappe .column.is-6,html.theme--catppuccin-frappe .column.is-6-tablet{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-offset-6,html.theme--catppuccin-frappe .column.is-offset-6-tablet{margin-left:50%}html.theme--catppuccin-frappe .column.is-7,html.theme--catppuccin-frappe .column.is-7-tablet{flex:none;width:58.33333337%}html.theme--catppuccin-frappe .column.is-offset-7,html.theme--catppuccin-frappe .column.is-offset-7-tablet{margin-left:58.33333337%}html.theme--catppuccin-frappe .column.is-8,html.theme--catppuccin-frappe .column.is-8-tablet{flex:none;width:66.66666674%}html.theme--catppuccin-frappe .column.is-offset-8,html.theme--catppuccin-frappe .column.is-offset-8-tablet{margin-left:66.66666674%}html.theme--catppuccin-frappe .column.is-9,html.theme--catppuccin-frappe .column.is-9-tablet{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-offset-9,html.theme--catppuccin-frappe .column.is-offset-9-tablet{margin-left:75%}html.theme--catppuccin-frappe .column.is-10,html.theme--catppuccin-frappe .column.is-10-tablet{flex:none;width:83.33333337%}html.theme--catppuccin-frappe .column.is-offset-10,html.theme--catppuccin-frappe .column.is-offset-10-tablet{margin-left:83.33333337%}html.theme--catppuccin-frappe .column.is-11,html.theme--catppuccin-frappe .column.is-11-tablet{flex:none;width:91.66666674%}html.theme--catppuccin-frappe .column.is-offset-11,html.theme--catppuccin-frappe .column.is-offset-11-tablet{margin-left:91.66666674%}html.theme--catppuccin-frappe .column.is-12,html.theme--catppuccin-frappe .column.is-12-tablet{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-offset-12,html.theme--catppuccin-frappe .column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .column.is-narrow-touch{flex:none;width:unset}html.theme--catppuccin-frappe .column.is-full-touch{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-three-quarters-touch{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-two-thirds-touch{flex:none;width:66.6666%}html.theme--catppuccin-frappe .column.is-half-touch{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-one-third-touch{flex:none;width:33.3333%}html.theme--catppuccin-frappe .column.is-one-quarter-touch{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-one-fifth-touch{flex:none;width:20%}html.theme--catppuccin-frappe .column.is-two-fifths-touch{flex:none;width:40%}html.theme--catppuccin-frappe .column.is-three-fifths-touch{flex:none;width:60%}html.theme--catppuccin-frappe .column.is-four-fifths-touch{flex:none;width:80%}html.theme--catppuccin-frappe .column.is-offset-three-quarters-touch{margin-left:75%}html.theme--catppuccin-frappe .column.is-offset-two-thirds-touch{margin-left:66.6666%}html.theme--catppuccin-frappe .column.is-offset-half-touch{margin-left:50%}html.theme--catppuccin-frappe .column.is-offset-one-third-touch{margin-left:33.3333%}html.theme--catppuccin-frappe .column.is-offset-one-quarter-touch{margin-left:25%}html.theme--catppuccin-frappe .column.is-offset-one-fifth-touch{margin-left:20%}html.theme--catppuccin-frappe .column.is-offset-two-fifths-touch{margin-left:40%}html.theme--catppuccin-frappe .column.is-offset-three-fifths-touch{margin-left:60%}html.theme--catppuccin-frappe .column.is-offset-four-fifths-touch{margin-left:80%}html.theme--catppuccin-frappe .column.is-0-touch{flex:none;width:0%}html.theme--catppuccin-frappe .column.is-offset-0-touch{margin-left:0%}html.theme--catppuccin-frappe .column.is-1-touch{flex:none;width:8.33333337%}html.theme--catppuccin-frappe .column.is-offset-1-touch{margin-left:8.33333337%}html.theme--catppuccin-frappe .column.is-2-touch{flex:none;width:16.66666674%}html.theme--catppuccin-frappe .column.is-offset-2-touch{margin-left:16.66666674%}html.theme--catppuccin-frappe .column.is-3-touch{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-offset-3-touch{margin-left:25%}html.theme--catppuccin-frappe .column.is-4-touch{flex:none;width:33.33333337%}html.theme--catppuccin-frappe .column.is-offset-4-touch{margin-left:33.33333337%}html.theme--catppuccin-frappe .column.is-5-touch{flex:none;width:41.66666674%}html.theme--catppuccin-frappe .column.is-offset-5-touch{margin-left:41.66666674%}html.theme--catppuccin-frappe .column.is-6-touch{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-offset-6-touch{margin-left:50%}html.theme--catppuccin-frappe .column.is-7-touch{flex:none;width:58.33333337%}html.theme--catppuccin-frappe .column.is-offset-7-touch{margin-left:58.33333337%}html.theme--catppuccin-frappe .column.is-8-touch{flex:none;width:66.66666674%}html.theme--catppuccin-frappe .column.is-offset-8-touch{margin-left:66.66666674%}html.theme--catppuccin-frappe .column.is-9-touch{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-offset-9-touch{margin-left:75%}html.theme--catppuccin-frappe .column.is-10-touch{flex:none;width:83.33333337%}html.theme--catppuccin-frappe .column.is-offset-10-touch{margin-left:83.33333337%}html.theme--catppuccin-frappe .column.is-11-touch{flex:none;width:91.66666674%}html.theme--catppuccin-frappe .column.is-offset-11-touch{margin-left:91.66666674%}html.theme--catppuccin-frappe .column.is-12-touch{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .column.is-narrow-desktop{flex:none;width:unset}html.theme--catppuccin-frappe .column.is-full-desktop{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-three-quarters-desktop{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-two-thirds-desktop{flex:none;width:66.6666%}html.theme--catppuccin-frappe .column.is-half-desktop{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-one-third-desktop{flex:none;width:33.3333%}html.theme--catppuccin-frappe .column.is-one-quarter-desktop{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-one-fifth-desktop{flex:none;width:20%}html.theme--catppuccin-frappe .column.is-two-fifths-desktop{flex:none;width:40%}html.theme--catppuccin-frappe .column.is-three-fifths-desktop{flex:none;width:60%}html.theme--catppuccin-frappe .column.is-four-fifths-desktop{flex:none;width:80%}html.theme--catppuccin-frappe .column.is-offset-three-quarters-desktop{margin-left:75%}html.theme--catppuccin-frappe .column.is-offset-two-thirds-desktop{margin-left:66.6666%}html.theme--catppuccin-frappe .column.is-offset-half-desktop{margin-left:50%}html.theme--catppuccin-frappe .column.is-offset-one-third-desktop{margin-left:33.3333%}html.theme--catppuccin-frappe .column.is-offset-one-quarter-desktop{margin-left:25%}html.theme--catppuccin-frappe .column.is-offset-one-fifth-desktop{margin-left:20%}html.theme--catppuccin-frappe .column.is-offset-two-fifths-desktop{margin-left:40%}html.theme--catppuccin-frappe .column.is-offset-three-fifths-desktop{margin-left:60%}html.theme--catppuccin-frappe .column.is-offset-four-fifths-desktop{margin-left:80%}html.theme--catppuccin-frappe .column.is-0-desktop{flex:none;width:0%}html.theme--catppuccin-frappe .column.is-offset-0-desktop{margin-left:0%}html.theme--catppuccin-frappe .column.is-1-desktop{flex:none;width:8.33333337%}html.theme--catppuccin-frappe .column.is-offset-1-desktop{margin-left:8.33333337%}html.theme--catppuccin-frappe .column.is-2-desktop{flex:none;width:16.66666674%}html.theme--catppuccin-frappe .column.is-offset-2-desktop{margin-left:16.66666674%}html.theme--catppuccin-frappe .column.is-3-desktop{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-offset-3-desktop{margin-left:25%}html.theme--catppuccin-frappe .column.is-4-desktop{flex:none;width:33.33333337%}html.theme--catppuccin-frappe .column.is-offset-4-desktop{margin-left:33.33333337%}html.theme--catppuccin-frappe .column.is-5-desktop{flex:none;width:41.66666674%}html.theme--catppuccin-frappe .column.is-offset-5-desktop{margin-left:41.66666674%}html.theme--catppuccin-frappe .column.is-6-desktop{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-offset-6-desktop{margin-left:50%}html.theme--catppuccin-frappe .column.is-7-desktop{flex:none;width:58.33333337%}html.theme--catppuccin-frappe .column.is-offset-7-desktop{margin-left:58.33333337%}html.theme--catppuccin-frappe .column.is-8-desktop{flex:none;width:66.66666674%}html.theme--catppuccin-frappe .column.is-offset-8-desktop{margin-left:66.66666674%}html.theme--catppuccin-frappe .column.is-9-desktop{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-offset-9-desktop{margin-left:75%}html.theme--catppuccin-frappe .column.is-10-desktop{flex:none;width:83.33333337%}html.theme--catppuccin-frappe .column.is-offset-10-desktop{margin-left:83.33333337%}html.theme--catppuccin-frappe .column.is-11-desktop{flex:none;width:91.66666674%}html.theme--catppuccin-frappe .column.is-offset-11-desktop{margin-left:91.66666674%}html.theme--catppuccin-frappe .column.is-12-desktop{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){html.theme--catppuccin-frappe .column.is-narrow-widescreen{flex:none;width:unset}html.theme--catppuccin-frappe .column.is-full-widescreen{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-three-quarters-widescreen{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-two-thirds-widescreen{flex:none;width:66.6666%}html.theme--catppuccin-frappe .column.is-half-widescreen{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-one-third-widescreen{flex:none;width:33.3333%}html.theme--catppuccin-frappe .column.is-one-quarter-widescreen{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-one-fifth-widescreen{flex:none;width:20%}html.theme--catppuccin-frappe .column.is-two-fifths-widescreen{flex:none;width:40%}html.theme--catppuccin-frappe .column.is-three-fifths-widescreen{flex:none;width:60%}html.theme--catppuccin-frappe .column.is-four-fifths-widescreen{flex:none;width:80%}html.theme--catppuccin-frappe .column.is-offset-three-quarters-widescreen{margin-left:75%}html.theme--catppuccin-frappe .column.is-offset-two-thirds-widescreen{margin-left:66.6666%}html.theme--catppuccin-frappe .column.is-offset-half-widescreen{margin-left:50%}html.theme--catppuccin-frappe .column.is-offset-one-third-widescreen{margin-left:33.3333%}html.theme--catppuccin-frappe .column.is-offset-one-quarter-widescreen{margin-left:25%}html.theme--catppuccin-frappe .column.is-offset-one-fifth-widescreen{margin-left:20%}html.theme--catppuccin-frappe .column.is-offset-two-fifths-widescreen{margin-left:40%}html.theme--catppuccin-frappe .column.is-offset-three-fifths-widescreen{margin-left:60%}html.theme--catppuccin-frappe .column.is-offset-four-fifths-widescreen{margin-left:80%}html.theme--catppuccin-frappe .column.is-0-widescreen{flex:none;width:0%}html.theme--catppuccin-frappe .column.is-offset-0-widescreen{margin-left:0%}html.theme--catppuccin-frappe .column.is-1-widescreen{flex:none;width:8.33333337%}html.theme--catppuccin-frappe .column.is-offset-1-widescreen{margin-left:8.33333337%}html.theme--catppuccin-frappe .column.is-2-widescreen{flex:none;width:16.66666674%}html.theme--catppuccin-frappe .column.is-offset-2-widescreen{margin-left:16.66666674%}html.theme--catppuccin-frappe .column.is-3-widescreen{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-offset-3-widescreen{margin-left:25%}html.theme--catppuccin-frappe .column.is-4-widescreen{flex:none;width:33.33333337%}html.theme--catppuccin-frappe .column.is-offset-4-widescreen{margin-left:33.33333337%}html.theme--catppuccin-frappe .column.is-5-widescreen{flex:none;width:41.66666674%}html.theme--catppuccin-frappe .column.is-offset-5-widescreen{margin-left:41.66666674%}html.theme--catppuccin-frappe .column.is-6-widescreen{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-offset-6-widescreen{margin-left:50%}html.theme--catppuccin-frappe .column.is-7-widescreen{flex:none;width:58.33333337%}html.theme--catppuccin-frappe .column.is-offset-7-widescreen{margin-left:58.33333337%}html.theme--catppuccin-frappe .column.is-8-widescreen{flex:none;width:66.66666674%}html.theme--catppuccin-frappe .column.is-offset-8-widescreen{margin-left:66.66666674%}html.theme--catppuccin-frappe .column.is-9-widescreen{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-offset-9-widescreen{margin-left:75%}html.theme--catppuccin-frappe .column.is-10-widescreen{flex:none;width:83.33333337%}html.theme--catppuccin-frappe .column.is-offset-10-widescreen{margin-left:83.33333337%}html.theme--catppuccin-frappe .column.is-11-widescreen{flex:none;width:91.66666674%}html.theme--catppuccin-frappe .column.is-offset-11-widescreen{margin-left:91.66666674%}html.theme--catppuccin-frappe .column.is-12-widescreen{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){html.theme--catppuccin-frappe .column.is-narrow-fullhd{flex:none;width:unset}html.theme--catppuccin-frappe .column.is-full-fullhd{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-three-quarters-fullhd{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-two-thirds-fullhd{flex:none;width:66.6666%}html.theme--catppuccin-frappe .column.is-half-fullhd{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-one-third-fullhd{flex:none;width:33.3333%}html.theme--catppuccin-frappe .column.is-one-quarter-fullhd{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-one-fifth-fullhd{flex:none;width:20%}html.theme--catppuccin-frappe .column.is-two-fifths-fullhd{flex:none;width:40%}html.theme--catppuccin-frappe .column.is-three-fifths-fullhd{flex:none;width:60%}html.theme--catppuccin-frappe .column.is-four-fifths-fullhd{flex:none;width:80%}html.theme--catppuccin-frappe .column.is-offset-three-quarters-fullhd{margin-left:75%}html.theme--catppuccin-frappe .column.is-offset-two-thirds-fullhd{margin-left:66.6666%}html.theme--catppuccin-frappe .column.is-offset-half-fullhd{margin-left:50%}html.theme--catppuccin-frappe .column.is-offset-one-third-fullhd{margin-left:33.3333%}html.theme--catppuccin-frappe .column.is-offset-one-quarter-fullhd{margin-left:25%}html.theme--catppuccin-frappe .column.is-offset-one-fifth-fullhd{margin-left:20%}html.theme--catppuccin-frappe .column.is-offset-two-fifths-fullhd{margin-left:40%}html.theme--catppuccin-frappe .column.is-offset-three-fifths-fullhd{margin-left:60%}html.theme--catppuccin-frappe .column.is-offset-four-fifths-fullhd{margin-left:80%}html.theme--catppuccin-frappe .column.is-0-fullhd{flex:none;width:0%}html.theme--catppuccin-frappe .column.is-offset-0-fullhd{margin-left:0%}html.theme--catppuccin-frappe .column.is-1-fullhd{flex:none;width:8.33333337%}html.theme--catppuccin-frappe .column.is-offset-1-fullhd{margin-left:8.33333337%}html.theme--catppuccin-frappe .column.is-2-fullhd{flex:none;width:16.66666674%}html.theme--catppuccin-frappe .column.is-offset-2-fullhd{margin-left:16.66666674%}html.theme--catppuccin-frappe .column.is-3-fullhd{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-offset-3-fullhd{margin-left:25%}html.theme--catppuccin-frappe .column.is-4-fullhd{flex:none;width:33.33333337%}html.theme--catppuccin-frappe .column.is-offset-4-fullhd{margin-left:33.33333337%}html.theme--catppuccin-frappe .column.is-5-fullhd{flex:none;width:41.66666674%}html.theme--catppuccin-frappe .column.is-offset-5-fullhd{margin-left:41.66666674%}html.theme--catppuccin-frappe .column.is-6-fullhd{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-offset-6-fullhd{margin-left:50%}html.theme--catppuccin-frappe .column.is-7-fullhd{flex:none;width:58.33333337%}html.theme--catppuccin-frappe .column.is-offset-7-fullhd{margin-left:58.33333337%}html.theme--catppuccin-frappe .column.is-8-fullhd{flex:none;width:66.66666674%}html.theme--catppuccin-frappe .column.is-offset-8-fullhd{margin-left:66.66666674%}html.theme--catppuccin-frappe .column.is-9-fullhd{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-offset-9-fullhd{margin-left:75%}html.theme--catppuccin-frappe .column.is-10-fullhd{flex:none;width:83.33333337%}html.theme--catppuccin-frappe .column.is-offset-10-fullhd{margin-left:83.33333337%}html.theme--catppuccin-frappe .column.is-11-fullhd{flex:none;width:91.66666674%}html.theme--catppuccin-frappe .column.is-offset-11-fullhd{margin-left:91.66666674%}html.theme--catppuccin-frappe .column.is-12-fullhd{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-offset-12-fullhd{margin-left:100%}}html.theme--catppuccin-frappe .columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--catppuccin-frappe .columns:last-child{margin-bottom:-.75rem}html.theme--catppuccin-frappe .columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}html.theme--catppuccin-frappe .columns.is-centered{justify-content:center}html.theme--catppuccin-frappe .columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}html.theme--catppuccin-frappe .columns.is-gapless>.column{margin:0;padding:0 !important}html.theme--catppuccin-frappe .columns.is-gapless:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-frappe .columns.is-gapless:last-child{margin-bottom:0}html.theme--catppuccin-frappe .columns.is-mobile{display:flex}html.theme--catppuccin-frappe .columns.is-multiline{flex-wrap:wrap}html.theme--catppuccin-frappe .columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .columns.is-desktop{display:flex}}html.theme--catppuccin-frappe .columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}html.theme--catppuccin-frappe .columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}html.theme--catppuccin-frappe .columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-frappe .columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-frappe .columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-frappe .columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-frappe .columns.is-variable.is-0-fullhd{--columnGap: 0rem}}html.theme--catppuccin-frappe .columns.is-variable.is-1{--columnGap: .25rem}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .columns.is-variable.is-1-mobile{--columnGap: .25rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .columns.is-variable.is-1-tablet{--columnGap: .25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-1-tablet-only{--columnGap: .25rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-1-touch{--columnGap: .25rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .columns.is-variable.is-1-desktop{--columnGap: .25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-frappe .columns.is-variable.is-1-desktop-only{--columnGap: .25rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-frappe .columns.is-variable.is-1-widescreen{--columnGap: .25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-frappe .columns.is-variable.is-1-widescreen-only{--columnGap: .25rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-frappe .columns.is-variable.is-1-fullhd{--columnGap: .25rem}}html.theme--catppuccin-frappe .columns.is-variable.is-2{--columnGap: .5rem}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .columns.is-variable.is-2-mobile{--columnGap: .5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .columns.is-variable.is-2-tablet{--columnGap: .5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-2-tablet-only{--columnGap: .5rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-2-touch{--columnGap: .5rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .columns.is-variable.is-2-desktop{--columnGap: .5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-frappe .columns.is-variable.is-2-desktop-only{--columnGap: .5rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-frappe .columns.is-variable.is-2-widescreen{--columnGap: .5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-frappe .columns.is-variable.is-2-widescreen-only{--columnGap: .5rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-frappe .columns.is-variable.is-2-fullhd{--columnGap: .5rem}}html.theme--catppuccin-frappe .columns.is-variable.is-3{--columnGap: .75rem}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .columns.is-variable.is-3-mobile{--columnGap: .75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .columns.is-variable.is-3-tablet{--columnGap: .75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-3-tablet-only{--columnGap: .75rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-3-touch{--columnGap: .75rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .columns.is-variable.is-3-desktop{--columnGap: .75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-frappe .columns.is-variable.is-3-desktop-only{--columnGap: .75rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-frappe .columns.is-variable.is-3-widescreen{--columnGap: .75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-frappe .columns.is-variable.is-3-widescreen-only{--columnGap: .75rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-frappe .columns.is-variable.is-3-fullhd{--columnGap: .75rem}}html.theme--catppuccin-frappe .columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-frappe .columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-frappe .columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-frappe .columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-frappe .columns.is-variable.is-4-fullhd{--columnGap: 1rem}}html.theme--catppuccin-frappe .columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-frappe .columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-frappe .columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-frappe .columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-frappe .columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}html.theme--catppuccin-frappe .columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-frappe .columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-frappe .columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-frappe .columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-frappe .columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}html.theme--catppuccin-frappe .columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-frappe .columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-frappe .columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-frappe .columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-frappe .columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}html.theme--catppuccin-frappe .columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-frappe .columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-frappe .columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-frappe .columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-frappe .columns.is-variable.is-8-fullhd{--columnGap: 2rem}}html.theme--catppuccin-frappe .tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}html.theme--catppuccin-frappe .tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--catppuccin-frappe .tile.is-ancestor:last-child{margin-bottom:-.75rem}html.theme--catppuccin-frappe .tile.is-ancestor:not(:last-child){margin-bottom:.75rem}html.theme--catppuccin-frappe .tile.is-child{margin:0 !important}html.theme--catppuccin-frappe .tile.is-parent{padding:.75rem}html.theme--catppuccin-frappe .tile.is-vertical{flex-direction:column}html.theme--catppuccin-frappe .tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .tile:not(.is-child){display:flex}html.theme--catppuccin-frappe .tile.is-1{flex:none;width:8.33333337%}html.theme--catppuccin-frappe .tile.is-2{flex:none;width:16.66666674%}html.theme--catppuccin-frappe .tile.is-3{flex:none;width:25%}html.theme--catppuccin-frappe .tile.is-4{flex:none;width:33.33333337%}html.theme--catppuccin-frappe .tile.is-5{flex:none;width:41.66666674%}html.theme--catppuccin-frappe .tile.is-6{flex:none;width:50%}html.theme--catppuccin-frappe .tile.is-7{flex:none;width:58.33333337%}html.theme--catppuccin-frappe .tile.is-8{flex:none;width:66.66666674%}html.theme--catppuccin-frappe .tile.is-9{flex:none;width:75%}html.theme--catppuccin-frappe .tile.is-10{flex:none;width:83.33333337%}html.theme--catppuccin-frappe .tile.is-11{flex:none;width:91.66666674%}html.theme--catppuccin-frappe .tile.is-12{flex:none;width:100%}}html.theme--catppuccin-frappe .hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}html.theme--catppuccin-frappe .hero .navbar{background:none}html.theme--catppuccin-frappe .hero .tabs ul{border-bottom:none}html.theme--catppuccin-frappe .hero.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-frappe .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .hero.is-white strong{color:inherit}html.theme--catppuccin-frappe .hero.is-white .title{color:#0a0a0a}html.theme--catppuccin-frappe .hero.is-white .subtitle{color:rgba(10,10,10,0.9)}html.theme--catppuccin-frappe .hero.is-white .subtitle a:not(.button),html.theme--catppuccin-frappe .hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .hero.is-white .navbar-menu{background-color:#fff}}html.theme--catppuccin-frappe .hero.is-white .navbar-item,html.theme--catppuccin-frappe .hero.is-white .navbar-link{color:rgba(10,10,10,0.7)}html.theme--catppuccin-frappe .hero.is-white a.navbar-item:hover,html.theme--catppuccin-frappe .hero.is-white a.navbar-item.is-active,html.theme--catppuccin-frappe .hero.is-white .navbar-link:hover,html.theme--catppuccin-frappe .hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-frappe .hero.is-white .tabs a{color:#0a0a0a;opacity:0.9}html.theme--catppuccin-frappe .hero.is-white .tabs a:hover{opacity:1}html.theme--catppuccin-frappe .hero.is-white .tabs li.is-active a{color:#fff !important;opacity:1}html.theme--catppuccin-frappe .hero.is-white .tabs.is-boxed a,html.theme--catppuccin-frappe .hero.is-white .tabs.is-toggle a{color:#0a0a0a}html.theme--catppuccin-frappe .hero.is-white .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .hero.is-white .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .hero.is-white .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-frappe .hero.is-white .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-frappe .hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}}html.theme--catppuccin-frappe .hero.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-frappe .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .hero.is-black strong{color:inherit}html.theme--catppuccin-frappe .hero.is-black .title{color:#fff}html.theme--catppuccin-frappe .hero.is-black .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-frappe .hero.is-black .subtitle a:not(.button),html.theme--catppuccin-frappe .hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .hero.is-black .navbar-menu{background-color:#0a0a0a}}html.theme--catppuccin-frappe .hero.is-black .navbar-item,html.theme--catppuccin-frappe .hero.is-black .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-frappe .hero.is-black a.navbar-item:hover,html.theme--catppuccin-frappe .hero.is-black a.navbar-item.is-active,html.theme--catppuccin-frappe .hero.is-black .navbar-link:hover,html.theme--catppuccin-frappe .hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-frappe .hero.is-black .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-frappe .hero.is-black .tabs a:hover{opacity:1}html.theme--catppuccin-frappe .hero.is-black .tabs li.is-active a{color:#0a0a0a !important;opacity:1}html.theme--catppuccin-frappe .hero.is-black .tabs.is-boxed a,html.theme--catppuccin-frappe .hero.is-black .tabs.is-toggle a{color:#fff}html.theme--catppuccin-frappe .hero.is-black .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .hero.is-black .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .hero.is-black .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-frappe .hero.is-black .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-frappe .hero.is-black.is-bold{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}}html.theme--catppuccin-frappe .hero.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .hero.is-light strong{color:inherit}html.theme--catppuccin-frappe .hero.is-light .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-light .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-frappe .hero.is-light .subtitle a:not(.button),html.theme--catppuccin-frappe .hero.is-light .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .hero.is-light .navbar-menu{background-color:#f5f5f5}}html.theme--catppuccin-frappe .hero.is-light .navbar-item,html.theme--catppuccin-frappe .hero.is-light .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-light a.navbar-item:hover,html.theme--catppuccin-frappe .hero.is-light a.navbar-item.is-active,html.theme--catppuccin-frappe .hero.is-light .navbar-link:hover,html.theme--catppuccin-frappe .hero.is-light .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-light .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-frappe .hero.is-light .tabs a:hover{opacity:1}html.theme--catppuccin-frappe .hero.is-light .tabs li.is-active a{color:#f5f5f5 !important;opacity:1}html.theme--catppuccin-frappe .hero.is-light .tabs.is-boxed a,html.theme--catppuccin-frappe .hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-light .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .hero.is-light .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .hero.is-light .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-frappe .hero.is-light .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-frappe .hero.is-light.is-bold{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}}html.theme--catppuccin-frappe .hero.is-dark,html.theme--catppuccin-frappe .content kbd.hero{background-color:#414559;color:#fff}html.theme--catppuccin-frappe .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .hero.is-dark strong,html.theme--catppuccin-frappe .content kbd.hero strong{color:inherit}html.theme--catppuccin-frappe .hero.is-dark .title,html.theme--catppuccin-frappe .content kbd.hero .title{color:#fff}html.theme--catppuccin-frappe .hero.is-dark .subtitle,html.theme--catppuccin-frappe .content kbd.hero .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-frappe .hero.is-dark .subtitle a:not(.button),html.theme--catppuccin-frappe .content kbd.hero .subtitle a:not(.button),html.theme--catppuccin-frappe .hero.is-dark .subtitle strong,html.theme--catppuccin-frappe .content kbd.hero .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .hero.is-dark .navbar-menu,html.theme--catppuccin-frappe .content kbd.hero .navbar-menu{background-color:#414559}}html.theme--catppuccin-frappe .hero.is-dark .navbar-item,html.theme--catppuccin-frappe .content kbd.hero .navbar-item,html.theme--catppuccin-frappe .hero.is-dark .navbar-link,html.theme--catppuccin-frappe .content kbd.hero .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-frappe .hero.is-dark a.navbar-item:hover,html.theme--catppuccin-frappe .content kbd.hero a.navbar-item:hover,html.theme--catppuccin-frappe .hero.is-dark a.navbar-item.is-active,html.theme--catppuccin-frappe .content kbd.hero a.navbar-item.is-active,html.theme--catppuccin-frappe .hero.is-dark .navbar-link:hover,html.theme--catppuccin-frappe .content kbd.hero .navbar-link:hover,html.theme--catppuccin-frappe .hero.is-dark .navbar-link.is-active,html.theme--catppuccin-frappe .content kbd.hero .navbar-link.is-active{background-color:#363a4a;color:#fff}html.theme--catppuccin-frappe .hero.is-dark .tabs a,html.theme--catppuccin-frappe .content kbd.hero .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-frappe .hero.is-dark .tabs a:hover,html.theme--catppuccin-frappe .content kbd.hero .tabs a:hover{opacity:1}html.theme--catppuccin-frappe .hero.is-dark .tabs li.is-active a,html.theme--catppuccin-frappe .content kbd.hero .tabs li.is-active a{color:#414559 !important;opacity:1}html.theme--catppuccin-frappe .hero.is-dark .tabs.is-boxed a,html.theme--catppuccin-frappe .content kbd.hero .tabs.is-boxed a,html.theme--catppuccin-frappe .hero.is-dark .tabs.is-toggle a,html.theme--catppuccin-frappe .content kbd.hero .tabs.is-toggle a{color:#fff}html.theme--catppuccin-frappe .hero.is-dark .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .content kbd.hero .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .hero.is-dark .tabs.is-toggle a:hover,html.theme--catppuccin-frappe .content kbd.hero .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .hero.is-dark .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .content kbd.hero .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .hero.is-dark .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-frappe .hero.is-dark .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .content kbd.hero .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#414559}html.theme--catppuccin-frappe .hero.is-dark.is-bold,html.theme--catppuccin-frappe .content kbd.hero.is-bold{background-image:linear-gradient(141deg, #262f41 0%, #414559 71%, #47476c 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero.is-dark.is-bold .navbar-menu,html.theme--catppuccin-frappe .content kbd.hero.is-bold .navbar-menu{background-image:linear-gradient(141deg, #262f41 0%, #414559 71%, #47476c 100%)}}html.theme--catppuccin-frappe .hero.is-primary,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .hero.is-primary strong,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink strong{color:inherit}html.theme--catppuccin-frappe .hero.is-primary .title,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .title{color:#fff}html.theme--catppuccin-frappe .hero.is-primary .subtitle,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-frappe .hero.is-primary .subtitle a:not(.button),html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .subtitle a:not(.button),html.theme--catppuccin-frappe .hero.is-primary .subtitle strong,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .hero.is-primary .navbar-menu,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .navbar-menu{background-color:#8caaee}}html.theme--catppuccin-frappe .hero.is-primary .navbar-item,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .navbar-item,html.theme--catppuccin-frappe .hero.is-primary .navbar-link,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-frappe .hero.is-primary a.navbar-item:hover,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink a.navbar-item:hover,html.theme--catppuccin-frappe .hero.is-primary a.navbar-item.is-active,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink a.navbar-item.is-active,html.theme--catppuccin-frappe .hero.is-primary .navbar-link:hover,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .navbar-link:hover,html.theme--catppuccin-frappe .hero.is-primary .navbar-link.is-active,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .navbar-link.is-active{background-color:#769aeb;color:#fff}html.theme--catppuccin-frappe .hero.is-primary .tabs a,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-frappe .hero.is-primary .tabs a:hover,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .tabs a:hover{opacity:1}html.theme--catppuccin-frappe .hero.is-primary .tabs li.is-active a,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .tabs li.is-active a{color:#8caaee !important;opacity:1}html.theme--catppuccin-frappe .hero.is-primary .tabs.is-boxed a,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a,html.theme--catppuccin-frappe .hero.is-primary .tabs.is-toggle a,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a{color:#fff}html.theme--catppuccin-frappe .hero.is-primary .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .hero.is-primary .tabs.is-toggle a:hover,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .hero.is-primary .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .hero.is-primary .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-frappe .hero.is-primary .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#8caaee}html.theme--catppuccin-frappe .hero.is-primary.is-bold,html.theme--catppuccin-frappe .docstring>section>a.hero.is-bold.docs-sourcelink{background-image:linear-gradient(141deg, #569ff1 0%, #8caaee 71%, #a0abf4 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero.is-primary.is-bold .navbar-menu,html.theme--catppuccin-frappe .docstring>section>a.hero.is-bold.docs-sourcelink .navbar-menu{background-image:linear-gradient(141deg, #569ff1 0%, #8caaee 71%, #a0abf4 100%)}}html.theme--catppuccin-frappe .hero.is-link{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .hero.is-link strong{color:inherit}html.theme--catppuccin-frappe .hero.is-link .title{color:#fff}html.theme--catppuccin-frappe .hero.is-link .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-frappe .hero.is-link .subtitle a:not(.button),html.theme--catppuccin-frappe .hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .hero.is-link .navbar-menu{background-color:#8caaee}}html.theme--catppuccin-frappe .hero.is-link .navbar-item,html.theme--catppuccin-frappe .hero.is-link .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-frappe .hero.is-link a.navbar-item:hover,html.theme--catppuccin-frappe .hero.is-link a.navbar-item.is-active,html.theme--catppuccin-frappe .hero.is-link .navbar-link:hover,html.theme--catppuccin-frappe .hero.is-link .navbar-link.is-active{background-color:#769aeb;color:#fff}html.theme--catppuccin-frappe .hero.is-link .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-frappe .hero.is-link .tabs a:hover{opacity:1}html.theme--catppuccin-frappe .hero.is-link .tabs li.is-active a{color:#8caaee !important;opacity:1}html.theme--catppuccin-frappe .hero.is-link .tabs.is-boxed a,html.theme--catppuccin-frappe .hero.is-link .tabs.is-toggle a{color:#fff}html.theme--catppuccin-frappe .hero.is-link .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .hero.is-link .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .hero.is-link .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-frappe .hero.is-link .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#8caaee}html.theme--catppuccin-frappe .hero.is-link.is-bold{background-image:linear-gradient(141deg, #569ff1 0%, #8caaee 71%, #a0abf4 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #569ff1 0%, #8caaee 71%, #a0abf4 100%)}}html.theme--catppuccin-frappe .hero.is-info{background-color:#81c8be;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .hero.is-info strong{color:inherit}html.theme--catppuccin-frappe .hero.is-info .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-info .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-frappe .hero.is-info .subtitle a:not(.button),html.theme--catppuccin-frappe .hero.is-info .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .hero.is-info .navbar-menu{background-color:#81c8be}}html.theme--catppuccin-frappe .hero.is-info .navbar-item,html.theme--catppuccin-frappe .hero.is-info .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-info a.navbar-item:hover,html.theme--catppuccin-frappe .hero.is-info a.navbar-item.is-active,html.theme--catppuccin-frappe .hero.is-info .navbar-link:hover,html.theme--catppuccin-frappe .hero.is-info .navbar-link.is-active{background-color:#6fc0b5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-info .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-frappe .hero.is-info .tabs a:hover{opacity:1}html.theme--catppuccin-frappe .hero.is-info .tabs li.is-active a{color:#81c8be !important;opacity:1}html.theme--catppuccin-frappe .hero.is-info .tabs.is-boxed a,html.theme--catppuccin-frappe .hero.is-info .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-info .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .hero.is-info .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .hero.is-info .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-frappe .hero.is-info .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#81c8be}html.theme--catppuccin-frappe .hero.is-info.is-bold{background-image:linear-gradient(141deg, #52c4a1 0%, #81c8be 71%, #8fd2d4 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #52c4a1 0%, #81c8be 71%, #8fd2d4 100%)}}html.theme--catppuccin-frappe .hero.is-success{background-color:#a6d189;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .hero.is-success strong{color:inherit}html.theme--catppuccin-frappe .hero.is-success .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-success .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-frappe .hero.is-success .subtitle a:not(.button),html.theme--catppuccin-frappe .hero.is-success .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .hero.is-success .navbar-menu{background-color:#a6d189}}html.theme--catppuccin-frappe .hero.is-success .navbar-item,html.theme--catppuccin-frappe .hero.is-success .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-success a.navbar-item:hover,html.theme--catppuccin-frappe .hero.is-success a.navbar-item.is-active,html.theme--catppuccin-frappe .hero.is-success .navbar-link:hover,html.theme--catppuccin-frappe .hero.is-success .navbar-link.is-active{background-color:#98ca77;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-success .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-frappe .hero.is-success .tabs a:hover{opacity:1}html.theme--catppuccin-frappe .hero.is-success .tabs li.is-active a{color:#a6d189 !important;opacity:1}html.theme--catppuccin-frappe .hero.is-success .tabs.is-boxed a,html.theme--catppuccin-frappe .hero.is-success .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-success .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .hero.is-success .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .hero.is-success .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-frappe .hero.is-success .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#a6d189}html.theme--catppuccin-frappe .hero.is-success.is-bold{background-image:linear-gradient(141deg, #9ccd5a 0%, #a6d189 71%, #a8dc98 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #9ccd5a 0%, #a6d189 71%, #a8dc98 100%)}}html.theme--catppuccin-frappe .hero.is-warning{background-color:#e5c890;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .hero.is-warning strong{color:inherit}html.theme--catppuccin-frappe .hero.is-warning .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-warning .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-frappe .hero.is-warning .subtitle a:not(.button),html.theme--catppuccin-frappe .hero.is-warning .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .hero.is-warning .navbar-menu{background-color:#e5c890}}html.theme--catppuccin-frappe .hero.is-warning .navbar-item,html.theme--catppuccin-frappe .hero.is-warning .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-warning a.navbar-item:hover,html.theme--catppuccin-frappe .hero.is-warning a.navbar-item.is-active,html.theme--catppuccin-frappe .hero.is-warning .navbar-link:hover,html.theme--catppuccin-frappe .hero.is-warning .navbar-link.is-active{background-color:#e0be7b;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-warning .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-frappe .hero.is-warning .tabs a:hover{opacity:1}html.theme--catppuccin-frappe .hero.is-warning .tabs li.is-active a{color:#e5c890 !important;opacity:1}html.theme--catppuccin-frappe .hero.is-warning .tabs.is-boxed a,html.theme--catppuccin-frappe .hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-warning .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .hero.is-warning .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .hero.is-warning .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-frappe .hero.is-warning .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#e5c890}html.theme--catppuccin-frappe .hero.is-warning.is-bold{background-image:linear-gradient(141deg, #e5a05d 0%, #e5c890 71%, #ede0a2 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e5a05d 0%, #e5c890 71%, #ede0a2 100%)}}html.theme--catppuccin-frappe .hero.is-danger{background-color:#e78284;color:#fff}html.theme--catppuccin-frappe .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .hero.is-danger strong{color:inherit}html.theme--catppuccin-frappe .hero.is-danger .title{color:#fff}html.theme--catppuccin-frappe .hero.is-danger .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-frappe .hero.is-danger .subtitle a:not(.button),html.theme--catppuccin-frappe .hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .hero.is-danger .navbar-menu{background-color:#e78284}}html.theme--catppuccin-frappe .hero.is-danger .navbar-item,html.theme--catppuccin-frappe .hero.is-danger .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-frappe .hero.is-danger a.navbar-item:hover,html.theme--catppuccin-frappe .hero.is-danger a.navbar-item.is-active,html.theme--catppuccin-frappe .hero.is-danger .navbar-link:hover,html.theme--catppuccin-frappe .hero.is-danger .navbar-link.is-active{background-color:#e36d6f;color:#fff}html.theme--catppuccin-frappe .hero.is-danger .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-frappe .hero.is-danger .tabs a:hover{opacity:1}html.theme--catppuccin-frappe .hero.is-danger .tabs li.is-active a{color:#e78284 !important;opacity:1}html.theme--catppuccin-frappe .hero.is-danger .tabs.is-boxed a,html.theme--catppuccin-frappe .hero.is-danger .tabs.is-toggle a{color:#fff}html.theme--catppuccin-frappe .hero.is-danger .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .hero.is-danger .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .hero.is-danger .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-frappe .hero.is-danger .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#e78284}html.theme--catppuccin-frappe .hero.is-danger.is-bold{background-image:linear-gradient(141deg, #e94d6a 0%, #e78284 71%, #eea294 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e94d6a 0%, #e78284 71%, #eea294 100%)}}html.theme--catppuccin-frappe .hero.is-small .hero-body,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.hero .hero-body{padding:1.5rem}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .hero.is-medium .hero-body{padding:9rem 4.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .hero.is-large .hero-body{padding:18rem 6rem}}html.theme--catppuccin-frappe .hero.is-halfheight .hero-body,html.theme--catppuccin-frappe .hero.is-fullheight .hero-body,html.theme--catppuccin-frappe .hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}html.theme--catppuccin-frappe .hero.is-halfheight .hero-body>.container,html.theme--catppuccin-frappe .hero.is-fullheight .hero-body>.container,html.theme--catppuccin-frappe .hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}html.theme--catppuccin-frappe .hero.is-halfheight{min-height:50vh}html.theme--catppuccin-frappe .hero.is-fullheight{min-height:100vh}html.theme--catppuccin-frappe .hero-video{overflow:hidden}html.theme--catppuccin-frappe .hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}html.theme--catppuccin-frappe .hero-video.is-transparent{opacity:0.3}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero-video{display:none}}html.theme--catppuccin-frappe .hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero-buttons .button{display:flex}html.theme--catppuccin-frappe .hero-buttons .button:not(:last-child){margin-bottom:0.75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .hero-buttons{display:flex;justify-content:center}html.theme--catppuccin-frappe .hero-buttons .button:not(:last-child){margin-right:1.5rem}}html.theme--catppuccin-frappe .hero-head,html.theme--catppuccin-frappe .hero-foot{flex-grow:0;flex-shrink:0}html.theme--catppuccin-frappe .hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .hero-body{padding:3rem 3rem}}html.theme--catppuccin-frappe .section{padding:3rem 1.5rem}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .section{padding:3rem 3rem}html.theme--catppuccin-frappe .section.is-medium{padding:9rem 4.5rem}html.theme--catppuccin-frappe .section.is-large{padding:18rem 6rem}}html.theme--catppuccin-frappe .footer{background-color:#292c3c;padding:3rem 1.5rem 6rem}html.theme--catppuccin-frappe h1 .docs-heading-anchor,html.theme--catppuccin-frappe h1 .docs-heading-anchor:hover,html.theme--catppuccin-frappe h1 .docs-heading-anchor:visited,html.theme--catppuccin-frappe h2 .docs-heading-anchor,html.theme--catppuccin-frappe h2 .docs-heading-anchor:hover,html.theme--catppuccin-frappe h2 .docs-heading-anchor:visited,html.theme--catppuccin-frappe h3 .docs-heading-anchor,html.theme--catppuccin-frappe h3 .docs-heading-anchor:hover,html.theme--catppuccin-frappe h3 .docs-heading-anchor:visited,html.theme--catppuccin-frappe h4 .docs-heading-anchor,html.theme--catppuccin-frappe h4 .docs-heading-anchor:hover,html.theme--catppuccin-frappe h4 .docs-heading-anchor:visited,html.theme--catppuccin-frappe h5 .docs-heading-anchor,html.theme--catppuccin-frappe h5 .docs-heading-anchor:hover,html.theme--catppuccin-frappe h5 .docs-heading-anchor:visited,html.theme--catppuccin-frappe h6 .docs-heading-anchor,html.theme--catppuccin-frappe h6 .docs-heading-anchor:hover,html.theme--catppuccin-frappe h6 .docs-heading-anchor:visited{color:#c6d0f5}html.theme--catppuccin-frappe h1 .docs-heading-anchor-permalink,html.theme--catppuccin-frappe h2 .docs-heading-anchor-permalink,html.theme--catppuccin-frappe h3 .docs-heading-anchor-permalink,html.theme--catppuccin-frappe h4 .docs-heading-anchor-permalink,html.theme--catppuccin-frappe h5 .docs-heading-anchor-permalink,html.theme--catppuccin-frappe h6 .docs-heading-anchor-permalink{visibility:hidden;vertical-align:middle;margin-left:0.5em;font-size:0.7rem}html.theme--catppuccin-frappe h1 .docs-heading-anchor-permalink::before,html.theme--catppuccin-frappe h2 .docs-heading-anchor-permalink::before,html.theme--catppuccin-frappe h3 .docs-heading-anchor-permalink::before,html.theme--catppuccin-frappe h4 .docs-heading-anchor-permalink::before,html.theme--catppuccin-frappe h5 .docs-heading-anchor-permalink::before,html.theme--catppuccin-frappe h6 .docs-heading-anchor-permalink::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f0c1"}html.theme--catppuccin-frappe h1:hover .docs-heading-anchor-permalink,html.theme--catppuccin-frappe h2:hover .docs-heading-anchor-permalink,html.theme--catppuccin-frappe h3:hover .docs-heading-anchor-permalink,html.theme--catppuccin-frappe h4:hover .docs-heading-anchor-permalink,html.theme--catppuccin-frappe h5:hover .docs-heading-anchor-permalink,html.theme--catppuccin-frappe h6:hover .docs-heading-anchor-permalink{visibility:visible}html.theme--catppuccin-frappe .docs-light-only{display:none !important}html.theme--catppuccin-frappe pre{position:relative;overflow:hidden}html.theme--catppuccin-frappe pre code,html.theme--catppuccin-frappe pre code.hljs{padding:0 .75rem !important;overflow:auto;display:block}html.theme--catppuccin-frappe pre code:first-of-type,html.theme--catppuccin-frappe pre code.hljs:first-of-type{padding-top:0.5rem !important}html.theme--catppuccin-frappe pre code:last-of-type,html.theme--catppuccin-frappe pre code.hljs:last-of-type{padding-bottom:0.5rem !important}html.theme--catppuccin-frappe pre .copy-button{opacity:0.2;transition:opacity 0.2s;position:absolute;right:0em;top:0em;padding:0.5em;width:2.5em;height:2.5em;background:transparent;border:none;font-family:"Font Awesome 6 Free";color:#c6d0f5;cursor:pointer;text-align:center}html.theme--catppuccin-frappe pre .copy-button:focus,html.theme--catppuccin-frappe pre .copy-button:hover{opacity:1;background:rgba(198,208,245,0.1);color:#8caaee}html.theme--catppuccin-frappe pre .copy-button.success{color:#a6d189;opacity:1}html.theme--catppuccin-frappe pre .copy-button.error{color:#e78284;opacity:1}html.theme--catppuccin-frappe pre:hover .copy-button{opacity:1}html.theme--catppuccin-frappe .admonition{background-color:#292c3c;border-style:solid;border-width:2px;border-color:#b5bfe2;border-radius:4px;font-size:1rem}html.theme--catppuccin-frappe .admonition strong{color:currentColor}html.theme--catppuccin-frappe .admonition.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.admonition{font-size:.75rem}html.theme--catppuccin-frappe .admonition.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .admonition.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .admonition.is-default{background-color:#292c3c;border-color:#b5bfe2}html.theme--catppuccin-frappe .admonition.is-default>.admonition-header{background-color:rgba(0,0,0,0);color:#b5bfe2}html.theme--catppuccin-frappe .admonition.is-default>.admonition-body{color:#c6d0f5}html.theme--catppuccin-frappe .admonition.is-info{background-color:#292c3c;border-color:#81c8be}html.theme--catppuccin-frappe .admonition.is-info>.admonition-header{background-color:rgba(0,0,0,0);color:#81c8be}html.theme--catppuccin-frappe .admonition.is-info>.admonition-body{color:#c6d0f5}html.theme--catppuccin-frappe .admonition.is-success{background-color:#292c3c;border-color:#a6d189}html.theme--catppuccin-frappe .admonition.is-success>.admonition-header{background-color:rgba(0,0,0,0);color:#a6d189}html.theme--catppuccin-frappe .admonition.is-success>.admonition-body{color:#c6d0f5}html.theme--catppuccin-frappe .admonition.is-warning{background-color:#292c3c;border-color:#e5c890}html.theme--catppuccin-frappe .admonition.is-warning>.admonition-header{background-color:rgba(0,0,0,0);color:#e5c890}html.theme--catppuccin-frappe .admonition.is-warning>.admonition-body{color:#c6d0f5}html.theme--catppuccin-frappe .admonition.is-danger{background-color:#292c3c;border-color:#e78284}html.theme--catppuccin-frappe .admonition.is-danger>.admonition-header{background-color:rgba(0,0,0,0);color:#e78284}html.theme--catppuccin-frappe .admonition.is-danger>.admonition-body{color:#c6d0f5}html.theme--catppuccin-frappe .admonition.is-compat{background-color:#292c3c;border-color:#99d1db}html.theme--catppuccin-frappe .admonition.is-compat>.admonition-header{background-color:rgba(0,0,0,0);color:#99d1db}html.theme--catppuccin-frappe .admonition.is-compat>.admonition-body{color:#c6d0f5}html.theme--catppuccin-frappe .admonition.is-todo{background-color:#292c3c;border-color:#ca9ee6}html.theme--catppuccin-frappe .admonition.is-todo>.admonition-header{background-color:rgba(0,0,0,0);color:#ca9ee6}html.theme--catppuccin-frappe .admonition.is-todo>.admonition-body{color:#c6d0f5}html.theme--catppuccin-frappe .admonition-header{color:#b5bfe2;background-color:rgba(0,0,0,0);align-items:center;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.5rem .75rem;position:relative}html.theme--catppuccin-frappe .admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;margin-right:.75rem;content:"\f06a"}html.theme--catppuccin-frappe details.admonition.is-details>.admonition-header{list-style:none}html.theme--catppuccin-frappe details.admonition.is-details>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f055"}html.theme--catppuccin-frappe details.admonition.is-details[open]>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f056"}html.theme--catppuccin-frappe .admonition-body{color:#c6d0f5;padding:0.5rem .75rem}html.theme--catppuccin-frappe .admonition-body pre{background-color:#292c3c}html.theme--catppuccin-frappe .admonition-body code{background-color:#292c3c}html.theme--catppuccin-frappe .docstring{margin-bottom:1em;background-color:rgba(0,0,0,0);border:2px solid #626880;border-radius:4px;box-shadow:none;max-width:100%}html.theme--catppuccin-frappe .docstring>header{cursor:pointer;display:flex;flex-grow:1;align-items:stretch;padding:0.5rem .75rem;background-color:#292c3c;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);box-shadow:none;border-bottom:1px solid #626880;overflow:auto}html.theme--catppuccin-frappe .docstring>header code{background-color:transparent}html.theme--catppuccin-frappe .docstring>header .docstring-article-toggle-button{min-width:1.1rem;padding:0.2rem 0.2rem 0.2rem 0}html.theme--catppuccin-frappe .docstring>header .docstring-binding{margin-right:0.3em}html.theme--catppuccin-frappe .docstring>header .docstring-category{margin-left:0.3em}html.theme--catppuccin-frappe .docstring>section{position:relative;padding:.75rem .75rem;border-bottom:1px solid #626880}html.theme--catppuccin-frappe .docstring>section:last-child{border-bottom:none}html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink{transition:opacity 0.3s;opacity:0;position:absolute;right:.375rem;bottom:.375rem}html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink:focus{opacity:1 !important}html.theme--catppuccin-frappe .docstring:hover>section>a.docs-sourcelink{opacity:0.2}html.theme--catppuccin-frappe .docstring:focus-within>section>a.docs-sourcelink{opacity:0.2}html.theme--catppuccin-frappe .docstring>section:hover a.docs-sourcelink{opacity:1}html.theme--catppuccin-frappe .documenter-example-output{background-color:#303446}html.theme--catppuccin-frappe .outdated-warning-overlay{position:fixed;top:0;left:0;right:0;box-shadow:0 0 10px rgba(0,0,0,0.3);z-index:999;background-color:#292c3c;color:#c6d0f5;border-bottom:3px solid rgba(0,0,0,0);padding:10px 35px;text-align:center;font-size:15px}html.theme--catppuccin-frappe .outdated-warning-overlay .outdated-warning-closer{position:absolute;top:calc(50% - 10px);right:18px;cursor:pointer;width:12px}html.theme--catppuccin-frappe .outdated-warning-overlay a{color:#8caaee}html.theme--catppuccin-frappe .outdated-warning-overlay a:hover{color:#99d1db}html.theme--catppuccin-frappe .content pre{border:2px solid #626880;border-radius:4px}html.theme--catppuccin-frappe .content code{font-weight:inherit}html.theme--catppuccin-frappe .content a code{color:#8caaee}html.theme--catppuccin-frappe .content a:hover code{color:#99d1db}html.theme--catppuccin-frappe .content h1 code,html.theme--catppuccin-frappe .content h2 code,html.theme--catppuccin-frappe .content h3 code,html.theme--catppuccin-frappe .content h4 code,html.theme--catppuccin-frappe .content h5 code,html.theme--catppuccin-frappe .content h6 code{color:#c6d0f5}html.theme--catppuccin-frappe .content table{display:block;width:initial;max-width:100%;overflow-x:auto}html.theme--catppuccin-frappe .content blockquote>ul:first-child,html.theme--catppuccin-frappe .content blockquote>ol:first-child,html.theme--catppuccin-frappe .content .admonition-body>ul:first-child,html.theme--catppuccin-frappe .content .admonition-body>ol:first-child{margin-top:0}html.theme--catppuccin-frappe pre,html.theme--catppuccin-frappe code{font-variant-ligatures:no-contextual}html.theme--catppuccin-frappe .breadcrumb a.is-disabled{cursor:default;pointer-events:none}html.theme--catppuccin-frappe .breadcrumb a.is-disabled,html.theme--catppuccin-frappe .breadcrumb a.is-disabled:hover{color:#b0bef1}html.theme--catppuccin-frappe .hljs{background:initial !important}html.theme--catppuccin-frappe .katex .katex-mathml{top:0;right:0}html.theme--catppuccin-frappe .katex-display,html.theme--catppuccin-frappe mjx-container,html.theme--catppuccin-frappe .MathJax_Display{margin:0.5em 0 !important}html.theme--catppuccin-frappe html{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto}html.theme--catppuccin-frappe li.no-marker{list-style:none}html.theme--catppuccin-frappe #documenter .docs-main>article{overflow-wrap:break-word}html.theme--catppuccin-frappe #documenter .docs-main>article .math-container{overflow-x:auto;overflow-y:hidden}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe #documenter .docs-main{max-width:52rem;margin-left:20rem;padding-right:1rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe #documenter .docs-main{width:100%}html.theme--catppuccin-frappe #documenter .docs-main>article{max-width:52rem;margin-left:auto;margin-right:auto;margin-bottom:1rem;padding:0 1rem}html.theme--catppuccin-frappe #documenter .docs-main>header,html.theme--catppuccin-frappe #documenter .docs-main>nav{max-width:100%;width:100%;margin:0}}html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar{background-color:#303446;border-bottom:1px solid #626880;z-index:2;min-height:4rem;margin-bottom:1rem;display:flex}html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar .breadcrumb{flex-grow:1;overflow-x:hidden}html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar .docs-sidebar-button{display:block;font-size:1.5rem;padding-bottom:0.1rem;margin-right:1rem}html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar .docs-right{display:flex;white-space:nowrap;gap:1rem;align-items:center}html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar .docs-right .docs-icon,html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar .docs-right .docs-label{display:inline-block}html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar .docs-right .docs-label{padding:0;margin-left:0.3em}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar .docs-right .docs-navbar-link{margin-left:0.4rem;margin-right:0.4rem}}html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar>*{margin:auto 0}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar{position:sticky;top:0;padding:0 1rem;transition-property:top, box-shadow;-webkit-transition-property:top, box-shadow;transition-duration:0.3s;-webkit-transition-duration:0.3s}html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar.headroom--not-top{box-shadow:.2rem 0rem .4rem #171717;transition-duration:0.7s;-webkit-transition-duration:0.7s}html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom{top:-4.5rem;transition-duration:0.7s;-webkit-transition-duration:0.7s}}html.theme--catppuccin-frappe #documenter .docs-main section.footnotes{border-top:1px solid #626880}html.theme--catppuccin-frappe #documenter .docs-main section.footnotes li .tag:first-child,html.theme--catppuccin-frappe #documenter .docs-main section.footnotes li .docstring>section>a.docs-sourcelink:first-child,html.theme--catppuccin-frappe #documenter .docs-main section.footnotes li .content kbd:first-child,html.theme--catppuccin-frappe .content #documenter .docs-main section.footnotes li kbd:first-child{margin-right:1em;margin-bottom:0.4em}html.theme--catppuccin-frappe #documenter .docs-main .docs-footer{display:flex;flex-wrap:wrap;margin-left:0;margin-right:0;border-top:1px solid #626880;padding-top:1rem;padding-bottom:1rem}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe #documenter .docs-main .docs-footer{padding-left:1rem;padding-right:1rem}}html.theme--catppuccin-frappe #documenter .docs-main .docs-footer .docs-footer-nextpage,html.theme--catppuccin-frappe #documenter .docs-main .docs-footer .docs-footer-prevpage{flex-grow:1}html.theme--catppuccin-frappe #documenter .docs-main .docs-footer .docs-footer-nextpage{text-align:right}html.theme--catppuccin-frappe #documenter .docs-main .docs-footer .flexbox-break{flex-basis:100%;height:0}html.theme--catppuccin-frappe #documenter .docs-main .docs-footer .footer-message{font-size:0.8em;margin:0.5em auto 0 auto;text-align:center}html.theme--catppuccin-frappe #documenter .docs-sidebar{display:flex;flex-direction:column;color:#c6d0f5;background-color:#292c3c;border-right:1px solid #626880;padding:0;flex:0 0 18rem;z-index:5;font-size:1rem;position:fixed;left:-18rem;width:18rem;height:100%;transition:left 0.3s}html.theme--catppuccin-frappe #documenter .docs-sidebar.visible{left:0;box-shadow:.4rem 0rem .8rem #171717}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe #documenter .docs-sidebar.visible{box-shadow:none}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe #documenter .docs-sidebar{left:0;top:0}}html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo{margin-top:1rem;padding:0 1rem}html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img{max-height:6rem;margin:auto}html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-package-name{flex-shrink:0;font-size:1.5rem;font-weight:700;text-align:center;white-space:nowrap;overflow:hidden;padding:0.5rem 0}html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-package-name .docs-autofit{max-width:16.2rem}html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-package-name a,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-package-name a:hover{color:#c6d0f5}html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-version-selector{border-top:1px solid #626880;display:none;padding:0.5rem}html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-version-selector.visible{display:flex}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu{flex-grow:1;user-select:none;border-top:1px solid #626880;padding-bottom:1.5rem}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu>li>.tocitem{font-weight:bold}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu>li li{font-size:.95rem;margin-left:1em;border-left:1px solid #626880}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu input.collapse-toggle{display:none}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu ul.collapsed{display:none}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu input:checked~ul.collapsed{display:block}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu label.tocitem{display:flex}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label{flex-grow:2}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron{display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;font-size:.75rem;margin-left:1rem;margin-top:auto;margin-bottom:auto}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f054"}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu input:checked~label.tocitem .docs-chevron::before{content:"\f078"}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu .tocitem{display:block;padding:0.5rem 0.5rem}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu .tocitem,html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu .tocitem:hover{color:#c6d0f5;background:#292c3c}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu a.tocitem:hover,html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu label.tocitem:hover{color:#c6d0f5;background-color:#313548}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu li.is-active{border-top:1px solid #626880;border-bottom:1px solid #626880;background-color:#232634}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem,html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover{background-color:#232634;color:#c6d0f5}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover{background-color:#313548;color:#c6d0f5}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu>li.is-active:first-child{border-top:none}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu ul.internal{margin:0 0.5rem 0.5rem;border-top:1px solid #626880}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu ul.internal li{font-size:.85rem;border-left:none;margin-left:0;margin-top:0.5rem}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem{width:100%;padding:0}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before{content:"⚬";margin-right:0.4em}html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search{margin:auto;margin-top:0.5rem;margin-bottom:0.5rem}html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input{width:14.4rem}html.theme--catppuccin-frappe #documenter .docs-sidebar #documenter-search-query{color:#868c98;width:14.4rem;box-shadow:inset 0 1px 2px rgba(10,10,10,0.1)}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar{width:.3rem;background:none}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#3a3e54}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover{background:#4a506c}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe #documenter .docs-sidebar{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--catppuccin-frappe #documenter .docs-sidebar::-webkit-scrollbar{width:.3rem;background:none}html.theme--catppuccin-frappe #documenter .docs-sidebar::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#3a3e54}html.theme--catppuccin-frappe #documenter .docs-sidebar::-webkit-scrollbar-thumb:hover{background:#4a506c}}html.theme--catppuccin-frappe kbd.search-modal-key-hints{border-radius:0.25rem;border:1px solid rgba(245,245,245,0.6);box-shadow:0 2px 0 1px rgba(245,245,245,0.6);cursor:default;font-size:0.9rem;line-height:1.5;min-width:0.75rem;text-align:center;padding:0.1rem 0.3rem;position:relative;top:-1px}html.theme--catppuccin-frappe .search-min-width-50{min-width:50%}html.theme--catppuccin-frappe .search-min-height-100{min-height:100%}html.theme--catppuccin-frappe .search-modal-card-body{max-height:calc(100vh - 15rem)}html.theme--catppuccin-frappe .search-result-link{border-radius:0.7em;transition:all 300ms}html.theme--catppuccin-frappe .search-result-link:hover,html.theme--catppuccin-frappe .search-result-link:focus{background-color:rgba(0,128,128,0.1)}html.theme--catppuccin-frappe .search-result-link .property-search-result-badge,html.theme--catppuccin-frappe .search-result-link .search-filter{transition:all 300ms}html.theme--catppuccin-frappe .property-search-result-badge,html.theme--catppuccin-frappe .search-filter{padding:0.15em 0.5em;font-size:0.8em;font-style:italic;text-transform:none !important;line-height:1.5;color:#f5f5f5;background-color:rgba(51,65,85,0.501961);border-radius:0.6rem}html.theme--catppuccin-frappe .search-result-link:hover .property-search-result-badge,html.theme--catppuccin-frappe .search-result-link:hover .search-filter,html.theme--catppuccin-frappe .search-result-link:focus .property-search-result-badge,html.theme--catppuccin-frappe .search-result-link:focus .search-filter{color:#333;background-color:#f1f5f9}html.theme--catppuccin-frappe .search-filter{color:#333;background-color:#f5f5f5;transition:all 300ms}html.theme--catppuccin-frappe .search-filter:hover,html.theme--catppuccin-frappe .search-filter:focus{color:#333}html.theme--catppuccin-frappe .search-filter-selected{color:#414559;background-color:#babbf1}html.theme--catppuccin-frappe .search-filter-selected:hover,html.theme--catppuccin-frappe .search-filter-selected:focus{color:#414559}html.theme--catppuccin-frappe .search-result-highlight{background-color:#ffdd57;color:black}html.theme--catppuccin-frappe .search-divider{border-bottom:1px solid #626880}html.theme--catppuccin-frappe .search-result-title{width:85%;color:#f5f5f5}html.theme--catppuccin-frappe .search-result-code-title{font-size:0.875rem;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--catppuccin-frappe #search-modal .modal-card-body::-webkit-scrollbar,html.theme--catppuccin-frappe #search-modal .filter-tabs::-webkit-scrollbar{height:10px;width:10px;background-color:transparent}html.theme--catppuccin-frappe #search-modal .modal-card-body::-webkit-scrollbar-thumb,html.theme--catppuccin-frappe #search-modal .filter-tabs::-webkit-scrollbar-thumb{background-color:gray;border-radius:1rem}html.theme--catppuccin-frappe #search-modal .modal-card-body::-webkit-scrollbar-track,html.theme--catppuccin-frappe #search-modal .filter-tabs::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.6);background-color:transparent}html.theme--catppuccin-frappe .w-100{width:100%}html.theme--catppuccin-frappe .gap-2{gap:0.5rem}html.theme--catppuccin-frappe .gap-4{gap:1rem}html.theme--catppuccin-frappe .gap-8{gap:2rem}html.theme--catppuccin-frappe{background-color:#303446;font-size:16px;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--catppuccin-frappe a{transition:all 200ms ease}html.theme--catppuccin-frappe .label{color:#c6d0f5}html.theme--catppuccin-frappe .button,html.theme--catppuccin-frappe .control.has-icons-left .icon,html.theme--catppuccin-frappe .control.has-icons-right .icon,html.theme--catppuccin-frappe .input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-frappe .pagination-ellipsis,html.theme--catppuccin-frappe .pagination-link,html.theme--catppuccin-frappe .pagination-next,html.theme--catppuccin-frappe .pagination-previous,html.theme--catppuccin-frappe .select,html.theme--catppuccin-frappe .select select,html.theme--catppuccin-frappe .textarea{height:2.5em;color:#c6d0f5}html.theme--catppuccin-frappe .input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-frappe .textarea{transition:all 200ms ease;box-shadow:none;border-width:1px;padding-left:1em;padding-right:1em;color:#c6d0f5}html.theme--catppuccin-frappe .select:after,html.theme--catppuccin-frappe .select select{border-width:1px}html.theme--catppuccin-frappe .menu-list a{transition:all 300ms ease}html.theme--catppuccin-frappe .modal-card-foot,html.theme--catppuccin-frappe .modal-card-head{border-color:#626880}html.theme--catppuccin-frappe .navbar{border-radius:.4em}html.theme--catppuccin-frappe .navbar.is-transparent{background:none}html.theme--catppuccin-frappe .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#8caaee}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .navbar .navbar-menu{background-color:#8caaee;border-radius:0 0 .4em .4em}}html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink:not(body){color:#414559}html.theme--catppuccin-frappe .tag.is-link:not(body),html.theme--catppuccin-frappe .docstring>section>a.is-link.docs-sourcelink:not(body),html.theme--catppuccin-frappe .content kbd.is-link:not(body){color:#414559}html.theme--catppuccin-frappe .ansi span.sgr1{font-weight:bolder}html.theme--catppuccin-frappe .ansi span.sgr2{font-weight:lighter}html.theme--catppuccin-frappe .ansi span.sgr3{font-style:italic}html.theme--catppuccin-frappe .ansi span.sgr4{text-decoration:underline}html.theme--catppuccin-frappe .ansi span.sgr7{color:#303446;background-color:#c6d0f5}html.theme--catppuccin-frappe .ansi span.sgr8{color:transparent}html.theme--catppuccin-frappe .ansi span.sgr8 span{color:transparent}html.theme--catppuccin-frappe .ansi span.sgr9{text-decoration:line-through}html.theme--catppuccin-frappe .ansi span.sgr30{color:#51576d}html.theme--catppuccin-frappe .ansi span.sgr31{color:#e78284}html.theme--catppuccin-frappe .ansi span.sgr32{color:#a6d189}html.theme--catppuccin-frappe .ansi span.sgr33{color:#e5c890}html.theme--catppuccin-frappe .ansi span.sgr34{color:#8caaee}html.theme--catppuccin-frappe .ansi span.sgr35{color:#f4b8e4}html.theme--catppuccin-frappe .ansi span.sgr36{color:#81c8be}html.theme--catppuccin-frappe .ansi span.sgr37{color:#b5bfe2}html.theme--catppuccin-frappe .ansi span.sgr40{background-color:#51576d}html.theme--catppuccin-frappe .ansi span.sgr41{background-color:#e78284}html.theme--catppuccin-frappe .ansi span.sgr42{background-color:#a6d189}html.theme--catppuccin-frappe .ansi span.sgr43{background-color:#e5c890}html.theme--catppuccin-frappe .ansi span.sgr44{background-color:#8caaee}html.theme--catppuccin-frappe .ansi span.sgr45{background-color:#f4b8e4}html.theme--catppuccin-frappe .ansi span.sgr46{background-color:#81c8be}html.theme--catppuccin-frappe .ansi span.sgr47{background-color:#b5bfe2}html.theme--catppuccin-frappe .ansi span.sgr90{color:#626880}html.theme--catppuccin-frappe .ansi span.sgr91{color:#e78284}html.theme--catppuccin-frappe .ansi span.sgr92{color:#a6d189}html.theme--catppuccin-frappe .ansi span.sgr93{color:#e5c890}html.theme--catppuccin-frappe .ansi span.sgr94{color:#8caaee}html.theme--catppuccin-frappe .ansi span.sgr95{color:#f4b8e4}html.theme--catppuccin-frappe .ansi span.sgr96{color:#81c8be}html.theme--catppuccin-frappe .ansi span.sgr97{color:#a5adce}html.theme--catppuccin-frappe .ansi span.sgr100{background-color:#626880}html.theme--catppuccin-frappe .ansi span.sgr101{background-color:#e78284}html.theme--catppuccin-frappe .ansi span.sgr102{background-color:#a6d189}html.theme--catppuccin-frappe .ansi span.sgr103{background-color:#e5c890}html.theme--catppuccin-frappe .ansi span.sgr104{background-color:#8caaee}html.theme--catppuccin-frappe .ansi span.sgr105{background-color:#f4b8e4}html.theme--catppuccin-frappe .ansi span.sgr106{background-color:#81c8be}html.theme--catppuccin-frappe .ansi span.sgr107{background-color:#a5adce}html.theme--catppuccin-frappe code.language-julia-repl>span.hljs-meta{color:#a6d189;font-weight:bolder}html.theme--catppuccin-frappe code .hljs{color:#c6d0f5;background:#303446}html.theme--catppuccin-frappe code .hljs-keyword{color:#ca9ee6}html.theme--catppuccin-frappe code .hljs-built_in{color:#e78284}html.theme--catppuccin-frappe code .hljs-type{color:#e5c890}html.theme--catppuccin-frappe code .hljs-literal{color:#ef9f76}html.theme--catppuccin-frappe code .hljs-number{color:#ef9f76}html.theme--catppuccin-frappe code .hljs-operator{color:#81c8be}html.theme--catppuccin-frappe code .hljs-punctuation{color:#b5bfe2}html.theme--catppuccin-frappe code .hljs-property{color:#81c8be}html.theme--catppuccin-frappe code .hljs-regexp{color:#f4b8e4}html.theme--catppuccin-frappe code .hljs-string{color:#a6d189}html.theme--catppuccin-frappe code .hljs-char.escape_{color:#a6d189}html.theme--catppuccin-frappe code .hljs-subst{color:#a5adce}html.theme--catppuccin-frappe code .hljs-symbol{color:#eebebe}html.theme--catppuccin-frappe code .hljs-variable{color:#ca9ee6}html.theme--catppuccin-frappe code .hljs-variable.language_{color:#ca9ee6}html.theme--catppuccin-frappe code .hljs-variable.constant_{color:#ef9f76}html.theme--catppuccin-frappe code .hljs-title{color:#8caaee}html.theme--catppuccin-frappe code .hljs-title.class_{color:#e5c890}html.theme--catppuccin-frappe code .hljs-title.function_{color:#8caaee}html.theme--catppuccin-frappe code .hljs-params{color:#c6d0f5}html.theme--catppuccin-frappe code .hljs-comment{color:#626880}html.theme--catppuccin-frappe code .hljs-doctag{color:#e78284}html.theme--catppuccin-frappe code .hljs-meta{color:#ef9f76}html.theme--catppuccin-frappe code .hljs-section{color:#8caaee}html.theme--catppuccin-frappe code .hljs-tag{color:#a5adce}html.theme--catppuccin-frappe code .hljs-name{color:#ca9ee6}html.theme--catppuccin-frappe code .hljs-attr{color:#8caaee}html.theme--catppuccin-frappe code .hljs-attribute{color:#a6d189}html.theme--catppuccin-frappe code .hljs-bullet{color:#81c8be}html.theme--catppuccin-frappe code .hljs-code{color:#a6d189}html.theme--catppuccin-frappe code .hljs-emphasis{color:#e78284;font-style:italic}html.theme--catppuccin-frappe code .hljs-strong{color:#e78284;font-weight:bold}html.theme--catppuccin-frappe code .hljs-formula{color:#81c8be}html.theme--catppuccin-frappe code .hljs-link{color:#85c1dc;font-style:italic}html.theme--catppuccin-frappe code .hljs-quote{color:#a6d189;font-style:italic}html.theme--catppuccin-frappe code .hljs-selector-tag{color:#e5c890}html.theme--catppuccin-frappe code .hljs-selector-id{color:#8caaee}html.theme--catppuccin-frappe code .hljs-selector-class{color:#81c8be}html.theme--catppuccin-frappe code .hljs-selector-attr{color:#ca9ee6}html.theme--catppuccin-frappe code .hljs-selector-pseudo{color:#81c8be}html.theme--catppuccin-frappe code .hljs-template-tag{color:#eebebe}html.theme--catppuccin-frappe code .hljs-template-variable{color:#eebebe}html.theme--catppuccin-frappe code .hljs-addition{color:#a6d189;background:rgba(166,227,161,0.15)}html.theme--catppuccin-frappe code .hljs-deletion{color:#e78284;background:rgba(243,139,168,0.15)}html.theme--catppuccin-frappe .search-result-link{border-radius:0.7em;transition:all 300ms}html.theme--catppuccin-frappe .search-result-link:hover,html.theme--catppuccin-frappe .search-result-link:focus{background-color:#414559}html.theme--catppuccin-frappe .search-result-link .property-search-result-badge,html.theme--catppuccin-frappe .search-result-link .search-filter{transition:all 300ms}html.theme--catppuccin-frappe .search-result-link:hover .property-search-result-badge,html.theme--catppuccin-frappe .search-result-link:hover .search-filter,html.theme--catppuccin-frappe .search-result-link:focus .property-search-result-badge,html.theme--catppuccin-frappe .search-result-link:focus .search-filter{color:#414559 !important;background-color:#babbf1 !important}html.theme--catppuccin-frappe .search-result-title{color:#c6d0f5}html.theme--catppuccin-frappe .search-result-highlight{background-color:#e78284;color:#292c3c}html.theme--catppuccin-frappe .search-divider{border-bottom:1px solid #5e6d6f50}html.theme--catppuccin-frappe .w-100{width:100%}html.theme--catppuccin-frappe .gap-2{gap:0.5rem}html.theme--catppuccin-frappe .gap-4{gap:1rem} diff --git a/v0.5.0/assets/themes/catppuccin-latte.css b/v0.5.0/assets/themes/catppuccin-latte.css new file mode 100644 index 00000000..63160d34 --- /dev/null +++ b/v0.5.0/assets/themes/catppuccin-latte.css @@ -0,0 +1 @@ +html.theme--catppuccin-latte .pagination-previous,html.theme--catppuccin-latte .pagination-next,html.theme--catppuccin-latte .pagination-link,html.theme--catppuccin-latte .pagination-ellipsis,html.theme--catppuccin-latte .file-cta,html.theme--catppuccin-latte .file-name,html.theme--catppuccin-latte .select select,html.theme--catppuccin-latte .textarea,html.theme--catppuccin-latte .input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-latte .button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:.4em;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.5em - 1px);padding-left:calc(0.75em - 1px);padding-right:calc(0.75em - 1px);padding-top:calc(0.5em - 1px);position:relative;vertical-align:top}html.theme--catppuccin-latte .pagination-previous:focus,html.theme--catppuccin-latte .pagination-next:focus,html.theme--catppuccin-latte .pagination-link:focus,html.theme--catppuccin-latte .pagination-ellipsis:focus,html.theme--catppuccin-latte .file-cta:focus,html.theme--catppuccin-latte .file-name:focus,html.theme--catppuccin-latte .select select:focus,html.theme--catppuccin-latte .textarea:focus,html.theme--catppuccin-latte .input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input:focus,html.theme--catppuccin-latte .button:focus,html.theme--catppuccin-latte .is-focused.pagination-previous,html.theme--catppuccin-latte .is-focused.pagination-next,html.theme--catppuccin-latte .is-focused.pagination-link,html.theme--catppuccin-latte .is-focused.pagination-ellipsis,html.theme--catppuccin-latte .is-focused.file-cta,html.theme--catppuccin-latte .is-focused.file-name,html.theme--catppuccin-latte .select select.is-focused,html.theme--catppuccin-latte .is-focused.textarea,html.theme--catppuccin-latte .is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .is-focused.button,html.theme--catppuccin-latte .pagination-previous:active,html.theme--catppuccin-latte .pagination-next:active,html.theme--catppuccin-latte .pagination-link:active,html.theme--catppuccin-latte .pagination-ellipsis:active,html.theme--catppuccin-latte .file-cta:active,html.theme--catppuccin-latte .file-name:active,html.theme--catppuccin-latte .select select:active,html.theme--catppuccin-latte .textarea:active,html.theme--catppuccin-latte .input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input:active,html.theme--catppuccin-latte .button:active,html.theme--catppuccin-latte .is-active.pagination-previous,html.theme--catppuccin-latte .is-active.pagination-next,html.theme--catppuccin-latte .is-active.pagination-link,html.theme--catppuccin-latte .is-active.pagination-ellipsis,html.theme--catppuccin-latte .is-active.file-cta,html.theme--catppuccin-latte .is-active.file-name,html.theme--catppuccin-latte .select select.is-active,html.theme--catppuccin-latte .is-active.textarea,html.theme--catppuccin-latte .is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-latte .is-active.button{outline:none}html.theme--catppuccin-latte .pagination-previous[disabled],html.theme--catppuccin-latte .pagination-next[disabled],html.theme--catppuccin-latte .pagination-link[disabled],html.theme--catppuccin-latte .pagination-ellipsis[disabled],html.theme--catppuccin-latte .file-cta[disabled],html.theme--catppuccin-latte .file-name[disabled],html.theme--catppuccin-latte .select select[disabled],html.theme--catppuccin-latte .textarea[disabled],html.theme--catppuccin-latte .input[disabled],html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input[disabled],html.theme--catppuccin-latte .button[disabled],fieldset[disabled] html.theme--catppuccin-latte .pagination-previous,html.theme--catppuccin-latte fieldset[disabled] .pagination-previous,fieldset[disabled] html.theme--catppuccin-latte .pagination-next,html.theme--catppuccin-latte fieldset[disabled] .pagination-next,fieldset[disabled] html.theme--catppuccin-latte .pagination-link,html.theme--catppuccin-latte fieldset[disabled] .pagination-link,fieldset[disabled] html.theme--catppuccin-latte .pagination-ellipsis,html.theme--catppuccin-latte fieldset[disabled] .pagination-ellipsis,fieldset[disabled] html.theme--catppuccin-latte .file-cta,html.theme--catppuccin-latte fieldset[disabled] .file-cta,fieldset[disabled] html.theme--catppuccin-latte .file-name,html.theme--catppuccin-latte fieldset[disabled] .file-name,fieldset[disabled] html.theme--catppuccin-latte .select select,fieldset[disabled] html.theme--catppuccin-latte .textarea,fieldset[disabled] html.theme--catppuccin-latte .input,fieldset[disabled] html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-latte fieldset[disabled] .select select,html.theme--catppuccin-latte .select fieldset[disabled] select,html.theme--catppuccin-latte fieldset[disabled] .textarea,html.theme--catppuccin-latte fieldset[disabled] .input,html.theme--catppuccin-latte fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-latte #documenter .docs-sidebar fieldset[disabled] form.docs-search>input,fieldset[disabled] html.theme--catppuccin-latte .button,html.theme--catppuccin-latte fieldset[disabled] .button{cursor:not-allowed}html.theme--catppuccin-latte .tabs,html.theme--catppuccin-latte .pagination-previous,html.theme--catppuccin-latte .pagination-next,html.theme--catppuccin-latte .pagination-link,html.theme--catppuccin-latte .pagination-ellipsis,html.theme--catppuccin-latte .breadcrumb,html.theme--catppuccin-latte .file,html.theme--catppuccin-latte .button,.is-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.theme--catppuccin-latte .navbar-link:not(.is-arrowless)::after,html.theme--catppuccin-latte .select:not(.is-multiple):not(.is-loading)::after{border:3px solid rgba(0,0,0,0);border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:0.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:0.625em}html.theme--catppuccin-latte .admonition:not(:last-child),html.theme--catppuccin-latte .tabs:not(:last-child),html.theme--catppuccin-latte .pagination:not(:last-child),html.theme--catppuccin-latte .message:not(:last-child),html.theme--catppuccin-latte .level:not(:last-child),html.theme--catppuccin-latte .breadcrumb:not(:last-child),html.theme--catppuccin-latte .block:not(:last-child),html.theme--catppuccin-latte .title:not(:last-child),html.theme--catppuccin-latte .subtitle:not(:last-child),html.theme--catppuccin-latte .table-container:not(:last-child),html.theme--catppuccin-latte .table:not(:last-child),html.theme--catppuccin-latte .progress:not(:last-child),html.theme--catppuccin-latte .notification:not(:last-child),html.theme--catppuccin-latte .content:not(:last-child),html.theme--catppuccin-latte .box:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-latte .modal-close,html.theme--catppuccin-latte .delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,0.2);border:none;border-radius:9999px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}html.theme--catppuccin-latte .modal-close::before,html.theme--catppuccin-latte .delete::before,html.theme--catppuccin-latte .modal-close::after,html.theme--catppuccin-latte .delete::after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--catppuccin-latte .modal-close::before,html.theme--catppuccin-latte .delete::before{height:2px;width:50%}html.theme--catppuccin-latte .modal-close::after,html.theme--catppuccin-latte .delete::after{height:50%;width:2px}html.theme--catppuccin-latte .modal-close:hover,html.theme--catppuccin-latte .delete:hover,html.theme--catppuccin-latte .modal-close:focus,html.theme--catppuccin-latte .delete:focus{background-color:rgba(10,10,10,0.3)}html.theme--catppuccin-latte .modal-close:active,html.theme--catppuccin-latte .delete:active{background-color:rgba(10,10,10,0.4)}html.theme--catppuccin-latte .is-small.modal-close,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.modal-close,html.theme--catppuccin-latte .is-small.delete,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}html.theme--catppuccin-latte .is-medium.modal-close,html.theme--catppuccin-latte .is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}html.theme--catppuccin-latte .is-large.modal-close,html.theme--catppuccin-latte .is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}html.theme--catppuccin-latte .control.is-loading::after,html.theme--catppuccin-latte .select.is-loading::after,html.theme--catppuccin-latte .loader,html.theme--catppuccin-latte .button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #8c8fa1;border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}html.theme--catppuccin-latte .hero-video,html.theme--catppuccin-latte .modal-background,html.theme--catppuccin-latte .modal,html.theme--catppuccin-latte .image.is-square img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--catppuccin-latte .image.is-square .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--catppuccin-latte .image.is-1by1 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--catppuccin-latte .image.is-1by1 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--catppuccin-latte .image.is-5by4 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--catppuccin-latte .image.is-5by4 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--catppuccin-latte .image.is-4by3 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--catppuccin-latte .image.is-4by3 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--catppuccin-latte .image.is-3by2 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--catppuccin-latte .image.is-3by2 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--catppuccin-latte .image.is-5by3 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--catppuccin-latte .image.is-5by3 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--catppuccin-latte .image.is-16by9 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--catppuccin-latte .image.is-16by9 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--catppuccin-latte .image.is-2by1 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--catppuccin-latte .image.is-2by1 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--catppuccin-latte .image.is-3by1 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--catppuccin-latte .image.is-3by1 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--catppuccin-latte .image.is-4by5 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--catppuccin-latte .image.is-4by5 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--catppuccin-latte .image.is-3by4 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--catppuccin-latte .image.is-3by4 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--catppuccin-latte .image.is-2by3 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--catppuccin-latte .image.is-2by3 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--catppuccin-latte .image.is-3by5 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--catppuccin-latte .image.is-3by5 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--catppuccin-latte .image.is-9by16 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--catppuccin-latte .image.is-9by16 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--catppuccin-latte .image.is-1by2 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--catppuccin-latte .image.is-1by2 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--catppuccin-latte .image.is-1by3 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--catppuccin-latte .image.is-1by3 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio,.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}html.theme--catppuccin-latte .navbar-burger{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#f5f5f5 !important}a.has-text-light:hover,a.has-text-light:focus{color:#dbdbdb !important}.has-background-light{background-color:#f5f5f5 !important}.has-text-dark{color:#ccd0da !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#aeb5c5 !important}.has-background-dark{background-color:#ccd0da !important}.has-text-primary{color:#1e66f5 !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#0a4ed6 !important}.has-background-primary{background-color:#1e66f5 !important}.has-text-primary-light{color:#ebf2fe !important}a.has-text-primary-light:hover,a.has-text-primary-light:focus{color:#bbd1fc !important}.has-background-primary-light{background-color:#ebf2fe !important}.has-text-primary-dark{color:#0a52e1 !important}a.has-text-primary-dark:hover,a.has-text-primary-dark:focus{color:#286df5 !important}.has-background-primary-dark{background-color:#0a52e1 !important}.has-text-link{color:#1e66f5 !important}a.has-text-link:hover,a.has-text-link:focus{color:#0a4ed6 !important}.has-background-link{background-color:#1e66f5 !important}.has-text-link-light{color:#ebf2fe !important}a.has-text-link-light:hover,a.has-text-link-light:focus{color:#bbd1fc !important}.has-background-link-light{background-color:#ebf2fe !important}.has-text-link-dark{color:#0a52e1 !important}a.has-text-link-dark:hover,a.has-text-link-dark:focus{color:#286df5 !important}.has-background-link-dark{background-color:#0a52e1 !important}.has-text-info{color:#179299 !important}a.has-text-info:hover,a.has-text-info:focus{color:#10686d !important}.has-background-info{background-color:#179299 !important}.has-text-info-light{color:#edfcfc !important}a.has-text-info-light:hover,a.has-text-info-light:focus{color:#c1f3f6 !important}.has-background-info-light{background-color:#edfcfc !important}.has-text-info-dark{color:#1cb2ba !important}a.has-text-info-dark:hover,a.has-text-info-dark:focus{color:#2ad5df !important}.has-background-info-dark{background-color:#1cb2ba !important}.has-text-success{color:#40a02b !important}a.has-text-success:hover,a.has-text-success:focus{color:#307820 !important}.has-background-success{background-color:#40a02b !important}.has-text-success-light{color:#f1fbef !important}a.has-text-success-light:hover,a.has-text-success-light:focus{color:#cef0c7 !important}.has-background-success-light{background-color:#f1fbef !important}.has-text-success-dark{color:#40a12b !important}a.has-text-success-dark:hover,a.has-text-success-dark:focus{color:#50c936 !important}.has-background-success-dark{background-color:#40a12b !important}.has-text-warning{color:#df8e1d !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#b27117 !important}.has-background-warning{background-color:#df8e1d !important}.has-text-warning-light{color:#fdf6ed !important}a.has-text-warning-light:hover,a.has-text-warning-light:focus{color:#f7e0c0 !important}.has-background-warning-light{background-color:#fdf6ed !important}.has-text-warning-dark{color:#9e6515 !important}a.has-text-warning-dark:hover,a.has-text-warning-dark:focus{color:#cb811a !important}.has-background-warning-dark{background-color:#9e6515 !important}.has-text-danger{color:#d20f39 !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#a20c2c !important}.has-background-danger{background-color:#d20f39 !important}.has-text-danger-light{color:#feecf0 !important}a.has-text-danger-light:hover,a.has-text-danger-light:focus{color:#fabcca !important}.has-background-danger-light{background-color:#feecf0 !important}.has-text-danger-dark{color:#e9113f !important}a.has-text-danger-dark:hover,a.has-text-danger-dark:focus{color:#f13c63 !important}.has-background-danger-dark{background-color:#e9113f !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#ccd0da !important}.has-background-grey-darker{background-color:#ccd0da !important}.has-text-grey-dark{color:#bcc0cc !important}.has-background-grey-dark{background-color:#bcc0cc !important}.has-text-grey{color:#acb0be !important}.has-background-grey{background-color:#acb0be !important}.has-text-grey-light{color:#9ca0b0 !important}.has-background-grey-light{background-color:#9ca0b0 !important}.has-text-grey-lighter{color:#8c8fa1 !important}.has-background-grey-lighter{background-color:#8c8fa1 !important}.has-text-white-ter{color:#f5f5f5 !important}.has-background-white-ter{background-color:#f5f5f5 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.is-flex-direction-row{flex-direction:row !important}.is-flex-direction-row-reverse{flex-direction:row-reverse !important}.is-flex-direction-column{flex-direction:column !important}.is-flex-direction-column-reverse{flex-direction:column-reverse !important}.is-flex-wrap-nowrap{flex-wrap:nowrap !important}.is-flex-wrap-wrap{flex-wrap:wrap !important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse !important}.is-justify-content-flex-start{justify-content:flex-start !important}.is-justify-content-flex-end{justify-content:flex-end !important}.is-justify-content-center{justify-content:center !important}.is-justify-content-space-between{justify-content:space-between !important}.is-justify-content-space-around{justify-content:space-around !important}.is-justify-content-space-evenly{justify-content:space-evenly !important}.is-justify-content-start{justify-content:start !important}.is-justify-content-end{justify-content:end !important}.is-justify-content-left{justify-content:left !important}.is-justify-content-right{justify-content:right !important}.is-align-content-flex-start{align-content:flex-start !important}.is-align-content-flex-end{align-content:flex-end !important}.is-align-content-center{align-content:center !important}.is-align-content-space-between{align-content:space-between !important}.is-align-content-space-around{align-content:space-around !important}.is-align-content-space-evenly{align-content:space-evenly !important}.is-align-content-stretch{align-content:stretch !important}.is-align-content-start{align-content:start !important}.is-align-content-end{align-content:end !important}.is-align-content-baseline{align-content:baseline !important}.is-align-items-stretch{align-items:stretch !important}.is-align-items-flex-start{align-items:flex-start !important}.is-align-items-flex-end{align-items:flex-end !important}.is-align-items-center{align-items:center !important}.is-align-items-baseline{align-items:baseline !important}.is-align-items-start{align-items:start !important}.is-align-items-end{align-items:end !important}.is-align-items-self-start{align-items:self-start !important}.is-align-items-self-end{align-items:self-end !important}.is-align-self-auto{align-self:auto !important}.is-align-self-flex-start{align-self:flex-start !important}.is-align-self-flex-end{align-self:flex-end !important}.is-align-self-center{align-self:center !important}.is-align-self-baseline{align-self:baseline !important}.is-align-self-stretch{align-self:stretch !important}.is-flex-grow-0{flex-grow:0 !important}.is-flex-grow-1{flex-grow:1 !important}.is-flex-grow-2{flex-grow:2 !important}.is-flex-grow-3{flex-grow:3 !important}.is-flex-grow-4{flex-grow:4 !important}.is-flex-grow-5{flex-grow:5 !important}.is-flex-shrink-0{flex-shrink:0 !important}.is-flex-shrink-1{flex-shrink:1 !important}.is-flex-shrink-2{flex-shrink:2 !important}.is-flex-shrink-3{flex-shrink:3 !important}.is-flex-shrink-4{flex-shrink:4 !important}.is-flex-shrink-5{flex-shrink:5 !important}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-clickable{cursor:pointer !important;pointer-events:all !important}.is-clipped{overflow:hidden !important}.is-relative{position:relative !important}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.m-0{margin:0 !important}.mt-0{margin-top:0 !important}.mr-0{margin-right:0 !important}.mb-0{margin-bottom:0 !important}.ml-0{margin-left:0 !important}.mx-0{margin-left:0 !important;margin-right:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:.25rem !important}.mt-1{margin-top:.25rem !important}.mr-1{margin-right:.25rem !important}.mb-1{margin-bottom:.25rem !important}.ml-1{margin-left:.25rem !important}.mx-1{margin-left:.25rem !important;margin-right:.25rem !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.m-2{margin:.5rem !important}.mt-2{margin-top:.5rem !important}.mr-2{margin-right:.5rem !important}.mb-2{margin-bottom:.5rem !important}.ml-2{margin-left:.5rem !important}.mx-2{margin-left:.5rem !important;margin-right:.5rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.m-3{margin:.75rem !important}.mt-3{margin-top:.75rem !important}.mr-3{margin-right:.75rem !important}.mb-3{margin-bottom:.75rem !important}.ml-3{margin-left:.75rem !important}.mx-3{margin-left:.75rem !important;margin-right:.75rem !important}.my-3{margin-top:.75rem !important;margin-bottom:.75rem !important}.m-4{margin:1rem !important}.mt-4{margin-top:1rem !important}.mr-4{margin-right:1rem !important}.mb-4{margin-bottom:1rem !important}.ml-4{margin-left:1rem !important}.mx-4{margin-left:1rem !important;margin-right:1rem !important}.my-4{margin-top:1rem !important;margin-bottom:1rem !important}.m-5{margin:1.5rem !important}.mt-5{margin-top:1.5rem !important}.mr-5{margin-right:1.5rem !important}.mb-5{margin-bottom:1.5rem !important}.ml-5{margin-left:1.5rem !important}.mx-5{margin-left:1.5rem !important;margin-right:1.5rem !important}.my-5{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-6{margin:3rem !important}.mt-6{margin-top:3rem !important}.mr-6{margin-right:3rem !important}.mb-6{margin-bottom:3rem !important}.ml-6{margin-left:3rem !important}.mx-6{margin-left:3rem !important;margin-right:3rem !important}.my-6{margin-top:3rem !important;margin-bottom:3rem !important}.m-auto{margin:auto !important}.mt-auto{margin-top:auto !important}.mr-auto{margin-right:auto !important}.mb-auto{margin-bottom:auto !important}.ml-auto{margin-left:auto !important}.mx-auto{margin-left:auto !important;margin-right:auto !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.p-0{padding:0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-left:0 !important;padding-right:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:.25rem !important}.pt-1{padding-top:.25rem !important}.pr-1{padding-right:.25rem !important}.pb-1{padding-bottom:.25rem !important}.pl-1{padding-left:.25rem !important}.px-1{padding-left:.25rem !important;padding-right:.25rem !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.p-2{padding:.5rem !important}.pt-2{padding-top:.5rem !important}.pr-2{padding-right:.5rem !important}.pb-2{padding-bottom:.5rem !important}.pl-2{padding-left:.5rem !important}.px-2{padding-left:.5rem !important;padding-right:.5rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.p-3{padding:.75rem !important}.pt-3{padding-top:.75rem !important}.pr-3{padding-right:.75rem !important}.pb-3{padding-bottom:.75rem !important}.pl-3{padding-left:.75rem !important}.px-3{padding-left:.75rem !important;padding-right:.75rem !important}.py-3{padding-top:.75rem !important;padding-bottom:.75rem !important}.p-4{padding:1rem !important}.pt-4{padding-top:1rem !important}.pr-4{padding-right:1rem !important}.pb-4{padding-bottom:1rem !important}.pl-4{padding-left:1rem !important}.px-4{padding-left:1rem !important;padding-right:1rem !important}.py-4{padding-top:1rem !important;padding-bottom:1rem !important}.p-5{padding:1.5rem !important}.pt-5{padding-top:1.5rem !important}.pr-5{padding-right:1.5rem !important}.pb-5{padding-bottom:1.5rem !important}.pl-5{padding-left:1.5rem !important}.px-5{padding-left:1.5rem !important;padding-right:1.5rem !important}.py-5{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-6{padding:3rem !important}.pt-6{padding-top:3rem !important}.pr-6{padding-right:3rem !important}.pb-6{padding-bottom:3rem !important}.pl-6{padding-left:3rem !important}.px-6{padding-left:3rem !important;padding-right:3rem !important}.py-6{padding-top:3rem !important;padding-bottom:3rem !important}.p-auto{padding:auto !important}.pt-auto{padding-top:auto !important}.pr-auto{padding-right:auto !important}.pb-auto{padding-bottom:auto !important}.pl-auto{padding-left:auto !important}.px-auto{padding-left:auto !important;padding-right:auto !important}.py-auto{padding-top:auto !important;padding-bottom:auto !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:1rem !important}.is-size-7,html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink{font-size:.75rem !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:1rem !important}.is-size-7-mobile{font-size:.75rem !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:1rem !important}.is-size-7-tablet{font-size:.75rem !important}}@media screen and (max-width: 1055px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:1rem !important}.is-size-7-touch{font-size:.75rem !important}}@media screen and (min-width: 1056px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:1rem !important}.is-size-7-desktop{font-size:.75rem !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:1rem !important}.is-size-7-widescreen{font-size:.75rem !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:1rem !important}.is-size-7-fullhd{font-size:.75rem !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1055px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1056px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1055px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1056px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1055px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1056px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1055px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1056px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.is-underlined{text-decoration:underline !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-secondary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-sans-serif{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-monospace{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-family-code{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1055px){.is-block-touch{display:block !important}}@media screen and (min-width: 1056px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1055px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1056px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1055px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1056px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1055px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1056px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1055px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1056px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:0.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:0.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1055px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1056px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1055px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1056px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}html.theme--catppuccin-latte html{background-color:#eff1f5;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--catppuccin-latte article,html.theme--catppuccin-latte aside,html.theme--catppuccin-latte figure,html.theme--catppuccin-latte footer,html.theme--catppuccin-latte header,html.theme--catppuccin-latte hgroup,html.theme--catppuccin-latte section{display:block}html.theme--catppuccin-latte body,html.theme--catppuccin-latte button,html.theme--catppuccin-latte input,html.theme--catppuccin-latte optgroup,html.theme--catppuccin-latte select,html.theme--catppuccin-latte textarea{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif}html.theme--catppuccin-latte code,html.theme--catppuccin-latte pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--catppuccin-latte body{color:#4c4f69;font-size:1em;font-weight:400;line-height:1.5}html.theme--catppuccin-latte a{color:#1e66f5;cursor:pointer;text-decoration:none}html.theme--catppuccin-latte a strong{color:currentColor}html.theme--catppuccin-latte a:hover{color:#04a5e5}html.theme--catppuccin-latte code{background-color:#e6e9ef;color:#4c4f69;font-size:.875em;font-weight:normal;padding:.1em}html.theme--catppuccin-latte hr{background-color:#e6e9ef;border:none;display:block;height:2px;margin:1.5rem 0}html.theme--catppuccin-latte img{height:auto;max-width:100%}html.theme--catppuccin-latte input[type="checkbox"],html.theme--catppuccin-latte input[type="radio"]{vertical-align:baseline}html.theme--catppuccin-latte small{font-size:.875em}html.theme--catppuccin-latte span{font-style:inherit;font-weight:inherit}html.theme--catppuccin-latte strong{color:#41445a;font-weight:700}html.theme--catppuccin-latte fieldset{border:none}html.theme--catppuccin-latte pre{-webkit-overflow-scrolling:touch;background-color:#e6e9ef;color:#4c4f69;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}html.theme--catppuccin-latte pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}html.theme--catppuccin-latte table td,html.theme--catppuccin-latte table th{vertical-align:top}html.theme--catppuccin-latte table td:not([align]),html.theme--catppuccin-latte table th:not([align]){text-align:inherit}html.theme--catppuccin-latte table th{color:#41445a}html.theme--catppuccin-latte .box{background-color:#bcc0cc;border-radius:8px;box-shadow:none;color:#4c4f69;display:block;padding:1.25rem}html.theme--catppuccin-latte a.box:hover,html.theme--catppuccin-latte a.box:focus{box-shadow:0 0.5em 1em -0.125em rgba(10,10,10,0.1),0 0 0 1px #1e66f5}html.theme--catppuccin-latte a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2),0 0 0 1px #1e66f5}html.theme--catppuccin-latte .button{background-color:#e6e9ef;border-color:#fff;border-width:1px;color:#1e66f5;cursor:pointer;justify-content:center;padding-bottom:calc(0.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(0.5em - 1px);text-align:center;white-space:nowrap}html.theme--catppuccin-latte .button strong{color:inherit}html.theme--catppuccin-latte .button .icon,html.theme--catppuccin-latte .button .icon.is-small,html.theme--catppuccin-latte .button #documenter .docs-sidebar form.docs-search>input.icon,html.theme--catppuccin-latte #documenter .docs-sidebar .button form.docs-search>input.icon,html.theme--catppuccin-latte .button .icon.is-medium,html.theme--catppuccin-latte .button .icon.is-large{height:1.5em;width:1.5em}html.theme--catppuccin-latte .button .icon:first-child:not(:last-child){margin-left:calc(-0.5em - 1px);margin-right:.25em}html.theme--catppuccin-latte .button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-0.5em - 1px)}html.theme--catppuccin-latte .button .icon:first-child:last-child{margin-left:calc(-0.5em - 1px);margin-right:calc(-0.5em - 1px)}html.theme--catppuccin-latte .button:hover,html.theme--catppuccin-latte .button.is-hovered{border-color:#9ca0b0;color:#41445a}html.theme--catppuccin-latte .button:focus,html.theme--catppuccin-latte .button.is-focused{border-color:#9ca0b0;color:#0b57ef}html.theme--catppuccin-latte .button:focus:not(:active),html.theme--catppuccin-latte .button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(30,102,245,0.25)}html.theme--catppuccin-latte .button:active,html.theme--catppuccin-latte .button.is-active{border-color:#bcc0cc;color:#41445a}html.theme--catppuccin-latte .button.is-text{background-color:transparent;border-color:transparent;color:#4c4f69;text-decoration:underline}html.theme--catppuccin-latte .button.is-text:hover,html.theme--catppuccin-latte .button.is-text.is-hovered,html.theme--catppuccin-latte .button.is-text:focus,html.theme--catppuccin-latte .button.is-text.is-focused{background-color:#e6e9ef;color:#41445a}html.theme--catppuccin-latte .button.is-text:active,html.theme--catppuccin-latte .button.is-text.is-active{background-color:#d6dbe5;color:#41445a}html.theme--catppuccin-latte .button.is-text[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}html.theme--catppuccin-latte .button.is-ghost{background:none;border-color:rgba(0,0,0,0);color:#1e66f5;text-decoration:none}html.theme--catppuccin-latte .button.is-ghost:hover,html.theme--catppuccin-latte .button.is-ghost.is-hovered{color:#1e66f5;text-decoration:underline}html.theme--catppuccin-latte .button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-latte .button.is-white:hover,html.theme--catppuccin-latte .button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-latte .button.is-white:focus,html.theme--catppuccin-latte .button.is-white.is-focused{border-color:transparent;color:#0a0a0a}html.theme--catppuccin-latte .button.is-white:focus:not(:active),html.theme--catppuccin-latte .button.is-white.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-latte .button.is-white:active,html.theme--catppuccin-latte .button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-latte .button.is-white[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-white{background-color:#fff;border-color:#fff;box-shadow:none}html.theme--catppuccin-latte .button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-latte .button.is-white.is-inverted:hover,html.theme--catppuccin-latte .button.is-white.is-inverted.is-hovered{background-color:#000}html.theme--catppuccin-latte .button.is-white.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}html.theme--catppuccin-latte .button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-latte .button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-latte .button.is-white.is-outlined:hover,html.theme--catppuccin-latte .button.is-white.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-white.is-outlined:focus,html.theme--catppuccin-latte .button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-latte .button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-white.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-white.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-white.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-latte .button.is-white.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-latte .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--catppuccin-latte .button.is-white.is-inverted.is-outlined:hover,html.theme--catppuccin-latte .button.is-white.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-white.is-inverted.is-outlined:focus,html.theme--catppuccin-latte .button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-latte .button.is-white.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-white.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-latte .button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-black:hover,html.theme--catppuccin-latte .button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-black:focus,html.theme--catppuccin-latte .button.is-black.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-black:focus:not(:active),html.theme--catppuccin-latte .button.is-black.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-latte .button.is-black:active,html.theme--catppuccin-latte .button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-black[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-black{background-color:#0a0a0a;border-color:#0a0a0a;box-shadow:none}html.theme--catppuccin-latte .button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-latte .button.is-black.is-inverted:hover,html.theme--catppuccin-latte .button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-latte .button.is-black.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-latte .button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--catppuccin-latte .button.is-black.is-outlined:hover,html.theme--catppuccin-latte .button.is-black.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-black.is-outlined:focus,html.theme--catppuccin-latte .button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-latte .button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-latte .button.is-black.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-black.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-black.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-black.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-latte .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-latte .button.is-black.is-inverted.is-outlined:hover,html.theme--catppuccin-latte .button.is-black.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-black.is-inverted.is-outlined:focus,html.theme--catppuccin-latte .button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-latte .button.is-black.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-black.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-latte .button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-latte .button.is-light{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-light:hover,html.theme--catppuccin-latte .button.is-light.is-hovered{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-light:focus,html.theme--catppuccin-latte .button.is-light.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-light:focus:not(:active),html.theme--catppuccin-latte .button.is-light.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-latte .button.is-light:active,html.theme--catppuccin-latte .button.is-light.is-active{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-light[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-light{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none}html.theme--catppuccin-latte .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-latte .button.is-light.is-inverted:hover,html.theme--catppuccin-latte .button.is-light.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-light.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#f5f5f5}html.theme--catppuccin-latte .button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-latte .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}html.theme--catppuccin-latte .button.is-light.is-outlined:hover,html.theme--catppuccin-latte .button.is-light.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-light.is-outlined:focus,html.theme--catppuccin-latte .button.is-light.is-outlined.is-focused{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}html.theme--catppuccin-latte .button.is-light.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-light.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-light.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-latte .button.is-light.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}html.theme--catppuccin-latte .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-light.is-inverted.is-outlined:hover,html.theme--catppuccin-latte .button.is-light.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-light.is-inverted.is-outlined:focus,html.theme--catppuccin-latte .button.is-light.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-latte .button.is-light.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-light.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}html.theme--catppuccin-latte .button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-dark,html.theme--catppuccin-latte .content kbd.button{background-color:#ccd0da;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-dark:hover,html.theme--catppuccin-latte .content kbd.button:hover,html.theme--catppuccin-latte .button.is-dark.is-hovered,html.theme--catppuccin-latte .content kbd.button.is-hovered{background-color:#c5c9d5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-dark:focus,html.theme--catppuccin-latte .content kbd.button:focus,html.theme--catppuccin-latte .button.is-dark.is-focused,html.theme--catppuccin-latte .content kbd.button.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-dark:focus:not(:active),html.theme--catppuccin-latte .content kbd.button:focus:not(:active),html.theme--catppuccin-latte .button.is-dark.is-focused:not(:active),html.theme--catppuccin-latte .content kbd.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(204,208,218,0.25)}html.theme--catppuccin-latte .button.is-dark:active,html.theme--catppuccin-latte .content kbd.button:active,html.theme--catppuccin-latte .button.is-dark.is-active,html.theme--catppuccin-latte .content kbd.button.is-active{background-color:#bdc2cf;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-dark[disabled],html.theme--catppuccin-latte .content kbd.button[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-dark,fieldset[disabled] html.theme--catppuccin-latte .content kbd.button{background-color:#ccd0da;border-color:#ccd0da;box-shadow:none}html.theme--catppuccin-latte .button.is-dark.is-inverted,html.theme--catppuccin-latte .content kbd.button.is-inverted{background-color:rgba(0,0,0,0.7);color:#ccd0da}html.theme--catppuccin-latte .button.is-dark.is-inverted:hover,html.theme--catppuccin-latte .content kbd.button.is-inverted:hover,html.theme--catppuccin-latte .button.is-dark.is-inverted.is-hovered,html.theme--catppuccin-latte .content kbd.button.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-dark.is-inverted[disabled],html.theme--catppuccin-latte .content kbd.button.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-dark.is-inverted,fieldset[disabled] html.theme--catppuccin-latte .content kbd.button.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#ccd0da}html.theme--catppuccin-latte .button.is-dark.is-loading::after,html.theme--catppuccin-latte .content kbd.button.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-latte .button.is-dark.is-outlined,html.theme--catppuccin-latte .content kbd.button.is-outlined{background-color:transparent;border-color:#ccd0da;color:#ccd0da}html.theme--catppuccin-latte .button.is-dark.is-outlined:hover,html.theme--catppuccin-latte .content kbd.button.is-outlined:hover,html.theme--catppuccin-latte .button.is-dark.is-outlined.is-hovered,html.theme--catppuccin-latte .content kbd.button.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-dark.is-outlined:focus,html.theme--catppuccin-latte .content kbd.button.is-outlined:focus,html.theme--catppuccin-latte .button.is-dark.is-outlined.is-focused,html.theme--catppuccin-latte .content kbd.button.is-outlined.is-focused{background-color:#ccd0da;border-color:#ccd0da;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-dark.is-outlined.is-loading::after,html.theme--catppuccin-latte .content kbd.button.is-outlined.is-loading::after{border-color:transparent transparent #ccd0da #ccd0da !important}html.theme--catppuccin-latte .button.is-dark.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .content kbd.button.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-dark.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .content kbd.button.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-dark.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .content kbd.button.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-dark.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-latte .content kbd.button.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-latte .button.is-dark.is-outlined[disabled],html.theme--catppuccin-latte .content kbd.button.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-dark.is-outlined,fieldset[disabled] html.theme--catppuccin-latte .content kbd.button.is-outlined{background-color:transparent;border-color:#ccd0da;box-shadow:none;color:#ccd0da}html.theme--catppuccin-latte .button.is-dark.is-inverted.is-outlined,html.theme--catppuccin-latte .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-dark.is-inverted.is-outlined:hover,html.theme--catppuccin-latte .content kbd.button.is-inverted.is-outlined:hover,html.theme--catppuccin-latte .button.is-dark.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-latte .content kbd.button.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-dark.is-inverted.is-outlined:focus,html.theme--catppuccin-latte .content kbd.button.is-inverted.is-outlined:focus,html.theme--catppuccin-latte .button.is-dark.is-inverted.is-outlined.is-focused,html.theme--catppuccin-latte .content kbd.button.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#ccd0da}html.theme--catppuccin-latte .button.is-dark.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .content kbd.button.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-dark.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .content kbd.button.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-latte .content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ccd0da #ccd0da !important}html.theme--catppuccin-latte .button.is-dark.is-inverted.is-outlined[disabled],html.theme--catppuccin-latte .content kbd.button.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-dark.is-inverted.is-outlined,fieldset[disabled] html.theme--catppuccin-latte .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-primary,html.theme--catppuccin-latte .docstring>section>a.button.docs-sourcelink{background-color:#1e66f5;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-primary:hover,html.theme--catppuccin-latte .docstring>section>a.button.docs-sourcelink:hover,html.theme--catppuccin-latte .button.is-primary.is-hovered,html.theme--catppuccin-latte .docstring>section>a.button.is-hovered.docs-sourcelink{background-color:#125ef4;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-primary:focus,html.theme--catppuccin-latte .docstring>section>a.button.docs-sourcelink:focus,html.theme--catppuccin-latte .button.is-primary.is-focused,html.theme--catppuccin-latte .docstring>section>a.button.is-focused.docs-sourcelink{border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-primary:focus:not(:active),html.theme--catppuccin-latte .docstring>section>a.button.docs-sourcelink:focus:not(:active),html.theme--catppuccin-latte .button.is-primary.is-focused:not(:active),html.theme--catppuccin-latte .docstring>section>a.button.is-focused.docs-sourcelink:not(:active){box-shadow:0 0 0 0.125em rgba(30,102,245,0.25)}html.theme--catppuccin-latte .button.is-primary:active,html.theme--catppuccin-latte .docstring>section>a.button.docs-sourcelink:active,html.theme--catppuccin-latte .button.is-primary.is-active,html.theme--catppuccin-latte .docstring>section>a.button.is-active.docs-sourcelink{background-color:#0b57ef;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-primary[disabled],html.theme--catppuccin-latte .docstring>section>a.button.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-primary,fieldset[disabled] html.theme--catppuccin-latte .docstring>section>a.button.docs-sourcelink{background-color:#1e66f5;border-color:#1e66f5;box-shadow:none}html.theme--catppuccin-latte .button.is-primary.is-inverted,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;color:#1e66f5}html.theme--catppuccin-latte .button.is-primary.is-inverted:hover,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.docs-sourcelink:hover,html.theme--catppuccin-latte .button.is-primary.is-inverted.is-hovered,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-hovered.docs-sourcelink{background-color:#f2f2f2}html.theme--catppuccin-latte .button.is-primary.is-inverted[disabled],html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-primary.is-inverted,fieldset[disabled] html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;border-color:transparent;box-shadow:none;color:#1e66f5}html.theme--catppuccin-latte .button.is-primary.is-loading::after,html.theme--catppuccin-latte .docstring>section>a.button.is-loading.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-primary.is-outlined,html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#1e66f5;color:#1e66f5}html.theme--catppuccin-latte .button.is-primary.is-outlined:hover,html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.docs-sourcelink:hover,html.theme--catppuccin-latte .button.is-primary.is-outlined.is-hovered,html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.is-hovered.docs-sourcelink,html.theme--catppuccin-latte .button.is-primary.is-outlined:focus,html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.docs-sourcelink:focus,html.theme--catppuccin-latte .button.is-primary.is-outlined.is-focused,html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.is-focused.docs-sourcelink{background-color:#1e66f5;border-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .button.is-primary.is-outlined.is-loading::after,html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink::after{border-color:transparent transparent #1e66f5 #1e66f5 !important}html.theme--catppuccin-latte .button.is-primary.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--catppuccin-latte .button.is-primary.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--catppuccin-latte .button.is-primary.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--catppuccin-latte .button.is-primary.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-primary.is-outlined[disabled],html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-primary.is-outlined,fieldset[disabled] html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#1e66f5;box-shadow:none;color:#1e66f5}html.theme--catppuccin-latte .button.is-primary.is-inverted.is-outlined,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-latte .button.is-primary.is-inverted.is-outlined:hover,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:hover,html.theme--catppuccin-latte .button.is-primary.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink,html.theme--catppuccin-latte .button.is-primary.is-inverted.is-outlined:focus,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:focus,html.theme--catppuccin-latte .button.is-primary.is-inverted.is-outlined.is-focused,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-outlined.is-focused.docs-sourcelink{background-color:#fff;color:#1e66f5}html.theme--catppuccin-latte .button.is-primary.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--catppuccin-latte .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--catppuccin-latte .button.is-primary.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--catppuccin-latte .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #1e66f5 #1e66f5 !important}html.theme--catppuccin-latte .button.is-primary.is-inverted.is-outlined[disabled],html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-primary.is-inverted.is-outlined,fieldset[disabled] html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-latte .button.is-primary.is-light,html.theme--catppuccin-latte .docstring>section>a.button.is-light.docs-sourcelink{background-color:#ebf2fe;color:#0a52e1}html.theme--catppuccin-latte .button.is-primary.is-light:hover,html.theme--catppuccin-latte .docstring>section>a.button.is-light.docs-sourcelink:hover,html.theme--catppuccin-latte .button.is-primary.is-light.is-hovered,html.theme--catppuccin-latte .docstring>section>a.button.is-light.is-hovered.docs-sourcelink{background-color:#dfe9fe;border-color:transparent;color:#0a52e1}html.theme--catppuccin-latte .button.is-primary.is-light:active,html.theme--catppuccin-latte .docstring>section>a.button.is-light.docs-sourcelink:active,html.theme--catppuccin-latte .button.is-primary.is-light.is-active,html.theme--catppuccin-latte .docstring>section>a.button.is-light.is-active.docs-sourcelink{background-color:#d3e1fd;border-color:transparent;color:#0a52e1}html.theme--catppuccin-latte .button.is-link{background-color:#1e66f5;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-link:hover,html.theme--catppuccin-latte .button.is-link.is-hovered{background-color:#125ef4;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-link:focus,html.theme--catppuccin-latte .button.is-link.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-link:focus:not(:active),html.theme--catppuccin-latte .button.is-link.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(30,102,245,0.25)}html.theme--catppuccin-latte .button.is-link:active,html.theme--catppuccin-latte .button.is-link.is-active{background-color:#0b57ef;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-link[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-link{background-color:#1e66f5;border-color:#1e66f5;box-shadow:none}html.theme--catppuccin-latte .button.is-link.is-inverted{background-color:#fff;color:#1e66f5}html.theme--catppuccin-latte .button.is-link.is-inverted:hover,html.theme--catppuccin-latte .button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-latte .button.is-link.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#1e66f5}html.theme--catppuccin-latte .button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-link.is-outlined{background-color:transparent;border-color:#1e66f5;color:#1e66f5}html.theme--catppuccin-latte .button.is-link.is-outlined:hover,html.theme--catppuccin-latte .button.is-link.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-link.is-outlined:focus,html.theme--catppuccin-latte .button.is-link.is-outlined.is-focused{background-color:#1e66f5;border-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #1e66f5 #1e66f5 !important}html.theme--catppuccin-latte .button.is-link.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-link.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-link.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-link.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-link.is-outlined{background-color:transparent;border-color:#1e66f5;box-shadow:none;color:#1e66f5}html.theme--catppuccin-latte .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-latte .button.is-link.is-inverted.is-outlined:hover,html.theme--catppuccin-latte .button.is-link.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-link.is-inverted.is-outlined:focus,html.theme--catppuccin-latte .button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#1e66f5}html.theme--catppuccin-latte .button.is-link.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-link.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #1e66f5 #1e66f5 !important}html.theme--catppuccin-latte .button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-latte .button.is-link.is-light{background-color:#ebf2fe;color:#0a52e1}html.theme--catppuccin-latte .button.is-link.is-light:hover,html.theme--catppuccin-latte .button.is-link.is-light.is-hovered{background-color:#dfe9fe;border-color:transparent;color:#0a52e1}html.theme--catppuccin-latte .button.is-link.is-light:active,html.theme--catppuccin-latte .button.is-link.is-light.is-active{background-color:#d3e1fd;border-color:transparent;color:#0a52e1}html.theme--catppuccin-latte .button.is-info{background-color:#179299;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-info:hover,html.theme--catppuccin-latte .button.is-info.is-hovered{background-color:#15878e;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-info:focus,html.theme--catppuccin-latte .button.is-info.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-info:focus:not(:active),html.theme--catppuccin-latte .button.is-info.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(23,146,153,0.25)}html.theme--catppuccin-latte .button.is-info:active,html.theme--catppuccin-latte .button.is-info.is-active{background-color:#147d83;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-info[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-info{background-color:#179299;border-color:#179299;box-shadow:none}html.theme--catppuccin-latte .button.is-info.is-inverted{background-color:#fff;color:#179299}html.theme--catppuccin-latte .button.is-info.is-inverted:hover,html.theme--catppuccin-latte .button.is-info.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-latte .button.is-info.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#179299}html.theme--catppuccin-latte .button.is-info.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-info.is-outlined{background-color:transparent;border-color:#179299;color:#179299}html.theme--catppuccin-latte .button.is-info.is-outlined:hover,html.theme--catppuccin-latte .button.is-info.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-info.is-outlined:focus,html.theme--catppuccin-latte .button.is-info.is-outlined.is-focused{background-color:#179299;border-color:#179299;color:#fff}html.theme--catppuccin-latte .button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #179299 #179299 !important}html.theme--catppuccin-latte .button.is-info.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-info.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-info.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-info.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-info.is-outlined{background-color:transparent;border-color:#179299;box-shadow:none;color:#179299}html.theme--catppuccin-latte .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-latte .button.is-info.is-inverted.is-outlined:hover,html.theme--catppuccin-latte .button.is-info.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-info.is-inverted.is-outlined:focus,html.theme--catppuccin-latte .button.is-info.is-inverted.is-outlined.is-focused{background-color:#fff;color:#179299}html.theme--catppuccin-latte .button.is-info.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-info.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #179299 #179299 !important}html.theme--catppuccin-latte .button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-latte .button.is-info.is-light{background-color:#edfcfc;color:#1cb2ba}html.theme--catppuccin-latte .button.is-info.is-light:hover,html.theme--catppuccin-latte .button.is-info.is-light.is-hovered{background-color:#e2f9fb;border-color:transparent;color:#1cb2ba}html.theme--catppuccin-latte .button.is-info.is-light:active,html.theme--catppuccin-latte .button.is-info.is-light.is-active{background-color:#d7f7f9;border-color:transparent;color:#1cb2ba}html.theme--catppuccin-latte .button.is-success{background-color:#40a02b;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-success:hover,html.theme--catppuccin-latte .button.is-success.is-hovered{background-color:#3c9628;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-success:focus,html.theme--catppuccin-latte .button.is-success.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-success:focus:not(:active),html.theme--catppuccin-latte .button.is-success.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(64,160,43,0.25)}html.theme--catppuccin-latte .button.is-success:active,html.theme--catppuccin-latte .button.is-success.is-active{background-color:#388c26;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-success[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-success{background-color:#40a02b;border-color:#40a02b;box-shadow:none}html.theme--catppuccin-latte .button.is-success.is-inverted{background-color:#fff;color:#40a02b}html.theme--catppuccin-latte .button.is-success.is-inverted:hover,html.theme--catppuccin-latte .button.is-success.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-latte .button.is-success.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#40a02b}html.theme--catppuccin-latte .button.is-success.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-success.is-outlined{background-color:transparent;border-color:#40a02b;color:#40a02b}html.theme--catppuccin-latte .button.is-success.is-outlined:hover,html.theme--catppuccin-latte .button.is-success.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-success.is-outlined:focus,html.theme--catppuccin-latte .button.is-success.is-outlined.is-focused{background-color:#40a02b;border-color:#40a02b;color:#fff}html.theme--catppuccin-latte .button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #40a02b #40a02b !important}html.theme--catppuccin-latte .button.is-success.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-success.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-success.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-success.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-success.is-outlined{background-color:transparent;border-color:#40a02b;box-shadow:none;color:#40a02b}html.theme--catppuccin-latte .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-latte .button.is-success.is-inverted.is-outlined:hover,html.theme--catppuccin-latte .button.is-success.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-success.is-inverted.is-outlined:focus,html.theme--catppuccin-latte .button.is-success.is-inverted.is-outlined.is-focused{background-color:#fff;color:#40a02b}html.theme--catppuccin-latte .button.is-success.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-success.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #40a02b #40a02b !important}html.theme--catppuccin-latte .button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-latte .button.is-success.is-light{background-color:#f1fbef;color:#40a12b}html.theme--catppuccin-latte .button.is-success.is-light:hover,html.theme--catppuccin-latte .button.is-success.is-light.is-hovered{background-color:#e8f8e5;border-color:transparent;color:#40a12b}html.theme--catppuccin-latte .button.is-success.is-light:active,html.theme--catppuccin-latte .button.is-success.is-light.is-active{background-color:#e0f5db;border-color:transparent;color:#40a12b}html.theme--catppuccin-latte .button.is-warning{background-color:#df8e1d;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-warning:hover,html.theme--catppuccin-latte .button.is-warning.is-hovered{background-color:#d4871c;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-warning:focus,html.theme--catppuccin-latte .button.is-warning.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-warning:focus:not(:active),html.theme--catppuccin-latte .button.is-warning.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(223,142,29,0.25)}html.theme--catppuccin-latte .button.is-warning:active,html.theme--catppuccin-latte .button.is-warning.is-active{background-color:#c8801a;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-warning[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-warning{background-color:#df8e1d;border-color:#df8e1d;box-shadow:none}html.theme--catppuccin-latte .button.is-warning.is-inverted{background-color:#fff;color:#df8e1d}html.theme--catppuccin-latte .button.is-warning.is-inverted:hover,html.theme--catppuccin-latte .button.is-warning.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-latte .button.is-warning.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-warning.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#df8e1d}html.theme--catppuccin-latte .button.is-warning.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-warning.is-outlined{background-color:transparent;border-color:#df8e1d;color:#df8e1d}html.theme--catppuccin-latte .button.is-warning.is-outlined:hover,html.theme--catppuccin-latte .button.is-warning.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-warning.is-outlined:focus,html.theme--catppuccin-latte .button.is-warning.is-outlined.is-focused{background-color:#df8e1d;border-color:#df8e1d;color:#fff}html.theme--catppuccin-latte .button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #df8e1d #df8e1d !important}html.theme--catppuccin-latte .button.is-warning.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-warning.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-warning.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-warning.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-warning.is-outlined{background-color:transparent;border-color:#df8e1d;box-shadow:none;color:#df8e1d}html.theme--catppuccin-latte .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-latte .button.is-warning.is-inverted.is-outlined:hover,html.theme--catppuccin-latte .button.is-warning.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-warning.is-inverted.is-outlined:focus,html.theme--catppuccin-latte .button.is-warning.is-inverted.is-outlined.is-focused{background-color:#fff;color:#df8e1d}html.theme--catppuccin-latte .button.is-warning.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-warning.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #df8e1d #df8e1d !important}html.theme--catppuccin-latte .button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-latte .button.is-warning.is-light{background-color:#fdf6ed;color:#9e6515}html.theme--catppuccin-latte .button.is-warning.is-light:hover,html.theme--catppuccin-latte .button.is-warning.is-light.is-hovered{background-color:#fbf1e2;border-color:transparent;color:#9e6515}html.theme--catppuccin-latte .button.is-warning.is-light:active,html.theme--catppuccin-latte .button.is-warning.is-light.is-active{background-color:#faebd6;border-color:transparent;color:#9e6515}html.theme--catppuccin-latte .button.is-danger{background-color:#d20f39;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-danger:hover,html.theme--catppuccin-latte .button.is-danger.is-hovered{background-color:#c60e36;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-danger:focus,html.theme--catppuccin-latte .button.is-danger.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-danger:focus:not(:active),html.theme--catppuccin-latte .button.is-danger.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(210,15,57,0.25)}html.theme--catppuccin-latte .button.is-danger:active,html.theme--catppuccin-latte .button.is-danger.is-active{background-color:#ba0d33;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-danger[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-danger{background-color:#d20f39;border-color:#d20f39;box-shadow:none}html.theme--catppuccin-latte .button.is-danger.is-inverted{background-color:#fff;color:#d20f39}html.theme--catppuccin-latte .button.is-danger.is-inverted:hover,html.theme--catppuccin-latte .button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-latte .button.is-danger.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#d20f39}html.theme--catppuccin-latte .button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-danger.is-outlined{background-color:transparent;border-color:#d20f39;color:#d20f39}html.theme--catppuccin-latte .button.is-danger.is-outlined:hover,html.theme--catppuccin-latte .button.is-danger.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-danger.is-outlined:focus,html.theme--catppuccin-latte .button.is-danger.is-outlined.is-focused{background-color:#d20f39;border-color:#d20f39;color:#fff}html.theme--catppuccin-latte .button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #d20f39 #d20f39 !important}html.theme--catppuccin-latte .button.is-danger.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-danger.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-danger.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-danger.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-danger.is-outlined{background-color:transparent;border-color:#d20f39;box-shadow:none;color:#d20f39}html.theme--catppuccin-latte .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-latte .button.is-danger.is-inverted.is-outlined:hover,html.theme--catppuccin-latte .button.is-danger.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-danger.is-inverted.is-outlined:focus,html.theme--catppuccin-latte .button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#d20f39}html.theme--catppuccin-latte .button.is-danger.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-danger.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #d20f39 #d20f39 !important}html.theme--catppuccin-latte .button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-latte .button.is-danger.is-light{background-color:#feecf0;color:#e9113f}html.theme--catppuccin-latte .button.is-danger.is-light:hover,html.theme--catppuccin-latte .button.is-danger.is-light.is-hovered{background-color:#fde0e6;border-color:transparent;color:#e9113f}html.theme--catppuccin-latte .button.is-danger.is-light:active,html.theme--catppuccin-latte .button.is-danger.is-light.is-active{background-color:#fcd4dd;border-color:transparent;color:#e9113f}html.theme--catppuccin-latte .button.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.button{font-size:.75rem}html.theme--catppuccin-latte .button.is-small:not(.is-rounded),html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.button:not(.is-rounded){border-radius:3px}html.theme--catppuccin-latte .button.is-normal{font-size:1rem}html.theme--catppuccin-latte .button.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .button.is-large{font-size:1.5rem}html.theme--catppuccin-latte .button[disabled],fieldset[disabled] html.theme--catppuccin-latte .button{background-color:#9ca0b0;border-color:#acb0be;box-shadow:none;opacity:.5}html.theme--catppuccin-latte .button.is-fullwidth{display:flex;width:100%}html.theme--catppuccin-latte .button.is-loading{color:transparent !important;pointer-events:none}html.theme--catppuccin-latte .button.is-loading::after{position:absolute;left:calc(50% - (1em * 0.5));top:calc(50% - (1em * 0.5));position:absolute !important}html.theme--catppuccin-latte .button.is-static{background-color:#e6e9ef;border-color:#acb0be;color:#8c8fa1;box-shadow:none;pointer-events:none}html.theme--catppuccin-latte .button.is-rounded,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.button{border-radius:9999px;padding-left:calc(1em + 0.25em);padding-right:calc(1em + 0.25em)}html.theme--catppuccin-latte .buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-latte .buttons .button{margin-bottom:0.5rem}html.theme--catppuccin-latte .buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}html.theme--catppuccin-latte .buttons:last-child{margin-bottom:-0.5rem}html.theme--catppuccin-latte .buttons:not(:last-child){margin-bottom:1rem}html.theme--catppuccin-latte .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}html.theme--catppuccin-latte .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:3px}html.theme--catppuccin-latte .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}html.theme--catppuccin-latte .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}html.theme--catppuccin-latte .buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-latte .buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}html.theme--catppuccin-latte .buttons.has-addons .button:last-child{margin-right:0}html.theme--catppuccin-latte .buttons.has-addons .button:hover,html.theme--catppuccin-latte .buttons.has-addons .button.is-hovered{z-index:2}html.theme--catppuccin-latte .buttons.has-addons .button:focus,html.theme--catppuccin-latte .buttons.has-addons .button.is-focused,html.theme--catppuccin-latte .buttons.has-addons .button:active,html.theme--catppuccin-latte .buttons.has-addons .button.is-active,html.theme--catppuccin-latte .buttons.has-addons .button.is-selected{z-index:3}html.theme--catppuccin-latte .buttons.has-addons .button:focus:hover,html.theme--catppuccin-latte .buttons.has-addons .button.is-focused:hover,html.theme--catppuccin-latte .buttons.has-addons .button:active:hover,html.theme--catppuccin-latte .buttons.has-addons .button.is-active:hover,html.theme--catppuccin-latte .buttons.has-addons .button.is-selected:hover{z-index:4}html.theme--catppuccin-latte .buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-latte .buttons.is-centered{justify-content:center}html.theme--catppuccin-latte .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}html.theme--catppuccin-latte .buttons.is-right{justify-content:flex-end}html.theme--catppuccin-latte .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}@media screen and (max-width: 768px){html.theme--catppuccin-latte .button.is-responsive.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.5625rem}html.theme--catppuccin-latte .button.is-responsive,html.theme--catppuccin-latte .button.is-responsive.is-normal{font-size:.65625rem}html.theme--catppuccin-latte .button.is-responsive.is-medium{font-size:.75rem}html.theme--catppuccin-latte .button.is-responsive.is-large{font-size:1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-latte .button.is-responsive.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.65625rem}html.theme--catppuccin-latte .button.is-responsive,html.theme--catppuccin-latte .button.is-responsive.is-normal{font-size:.75rem}html.theme--catppuccin-latte .button.is-responsive.is-medium{font-size:1rem}html.theme--catppuccin-latte .button.is-responsive.is-large{font-size:1.25rem}}html.theme--catppuccin-latte .container{flex-grow:1;margin:0 auto;position:relative;width:auto}html.theme--catppuccin-latte .container.is-fluid{max-width:none !important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .container{max-width:992px}}@media screen and (max-width: 1215px){html.theme--catppuccin-latte .container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width: 1407px){html.theme--catppuccin-latte .container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width: 1216px){html.theme--catppuccin-latte .container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width: 1408px){html.theme--catppuccin-latte .container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}html.theme--catppuccin-latte .content li+li{margin-top:0.25em}html.theme--catppuccin-latte .content p:not(:last-child),html.theme--catppuccin-latte .content dl:not(:last-child),html.theme--catppuccin-latte .content ol:not(:last-child),html.theme--catppuccin-latte .content ul:not(:last-child),html.theme--catppuccin-latte .content blockquote:not(:last-child),html.theme--catppuccin-latte .content pre:not(:last-child),html.theme--catppuccin-latte .content table:not(:last-child){margin-bottom:1em}html.theme--catppuccin-latte .content h1,html.theme--catppuccin-latte .content h2,html.theme--catppuccin-latte .content h3,html.theme--catppuccin-latte .content h4,html.theme--catppuccin-latte .content h5,html.theme--catppuccin-latte .content h6{color:#4c4f69;font-weight:600;line-height:1.125}html.theme--catppuccin-latte .content h1{font-size:2em;margin-bottom:0.5em}html.theme--catppuccin-latte .content h1:not(:first-child){margin-top:1em}html.theme--catppuccin-latte .content h2{font-size:1.75em;margin-bottom:0.5714em}html.theme--catppuccin-latte .content h2:not(:first-child){margin-top:1.1428em}html.theme--catppuccin-latte .content h3{font-size:1.5em;margin-bottom:0.6666em}html.theme--catppuccin-latte .content h3:not(:first-child){margin-top:1.3333em}html.theme--catppuccin-latte .content h4{font-size:1.25em;margin-bottom:0.8em}html.theme--catppuccin-latte .content h5{font-size:1.125em;margin-bottom:0.8888em}html.theme--catppuccin-latte .content h6{font-size:1em;margin-bottom:1em}html.theme--catppuccin-latte .content blockquote{background-color:#e6e9ef;border-left:5px solid #acb0be;padding:1.25em 1.5em}html.theme--catppuccin-latte .content ol{list-style-position:outside;margin-left:2em;margin-top:1em}html.theme--catppuccin-latte .content ol:not([type]){list-style-type:decimal}html.theme--catppuccin-latte .content ol.is-lower-alpha:not([type]){list-style-type:lower-alpha}html.theme--catppuccin-latte .content ol.is-lower-roman:not([type]){list-style-type:lower-roman}html.theme--catppuccin-latte .content ol.is-upper-alpha:not([type]){list-style-type:upper-alpha}html.theme--catppuccin-latte .content ol.is-upper-roman:not([type]){list-style-type:upper-roman}html.theme--catppuccin-latte .content ul{list-style:disc outside;margin-left:2em;margin-top:1em}html.theme--catppuccin-latte .content ul ul{list-style-type:circle;margin-top:0.5em}html.theme--catppuccin-latte .content ul ul ul{list-style-type:square}html.theme--catppuccin-latte .content dd{margin-left:2em}html.theme--catppuccin-latte .content figure{margin-left:2em;margin-right:2em;text-align:center}html.theme--catppuccin-latte .content figure:not(:first-child){margin-top:2em}html.theme--catppuccin-latte .content figure:not(:last-child){margin-bottom:2em}html.theme--catppuccin-latte .content figure img{display:inline-block}html.theme--catppuccin-latte .content figure figcaption{font-style:italic}html.theme--catppuccin-latte .content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:0;white-space:pre;word-wrap:normal}html.theme--catppuccin-latte .content sup,html.theme--catppuccin-latte .content sub{font-size:75%}html.theme--catppuccin-latte .content table{width:100%}html.theme--catppuccin-latte .content table td,html.theme--catppuccin-latte .content table th{border:1px solid #acb0be;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--catppuccin-latte .content table th{color:#41445a}html.theme--catppuccin-latte .content table th:not([align]){text-align:inherit}html.theme--catppuccin-latte .content table thead td,html.theme--catppuccin-latte .content table thead th{border-width:0 0 2px;color:#41445a}html.theme--catppuccin-latte .content table tfoot td,html.theme--catppuccin-latte .content table tfoot th{border-width:2px 0 0;color:#41445a}html.theme--catppuccin-latte .content table tbody tr:last-child td,html.theme--catppuccin-latte .content table tbody tr:last-child th{border-bottom-width:0}html.theme--catppuccin-latte .content .tabs li+li{margin-top:0}html.theme--catppuccin-latte .content.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.content{font-size:.75rem}html.theme--catppuccin-latte .content.is-normal{font-size:1rem}html.theme--catppuccin-latte .content.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .content.is-large{font-size:1.5rem}html.theme--catppuccin-latte .icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}html.theme--catppuccin-latte .icon.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.icon{height:1rem;width:1rem}html.theme--catppuccin-latte .icon.is-medium{height:2rem;width:2rem}html.theme--catppuccin-latte .icon.is-large{height:3rem;width:3rem}html.theme--catppuccin-latte .icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}html.theme--catppuccin-latte .icon-text .icon{flex-grow:0;flex-shrink:0}html.theme--catppuccin-latte .icon-text .icon:not(:last-child){margin-right:.25em}html.theme--catppuccin-latte .icon-text .icon:not(:first-child){margin-left:.25em}html.theme--catppuccin-latte div.icon-text{display:flex}html.theme--catppuccin-latte .image,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img{display:block;position:relative}html.theme--catppuccin-latte .image img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img img{display:block;height:auto;width:100%}html.theme--catppuccin-latte .image img.is-rounded,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img img.is-rounded{border-radius:9999px}html.theme--catppuccin-latte .image.is-fullwidth,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-fullwidth{width:100%}html.theme--catppuccin-latte .image.is-square img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--catppuccin-latte .image.is-square .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--catppuccin-latte .image.is-1by1 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--catppuccin-latte .image.is-1by1 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--catppuccin-latte .image.is-5by4 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--catppuccin-latte .image.is-5by4 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--catppuccin-latte .image.is-4by3 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--catppuccin-latte .image.is-4by3 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--catppuccin-latte .image.is-3by2 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--catppuccin-latte .image.is-3by2 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--catppuccin-latte .image.is-5by3 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--catppuccin-latte .image.is-5by3 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--catppuccin-latte .image.is-16by9 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--catppuccin-latte .image.is-16by9 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--catppuccin-latte .image.is-2by1 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--catppuccin-latte .image.is-2by1 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--catppuccin-latte .image.is-3by1 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--catppuccin-latte .image.is-3by1 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--catppuccin-latte .image.is-4by5 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--catppuccin-latte .image.is-4by5 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--catppuccin-latte .image.is-3by4 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--catppuccin-latte .image.is-3by4 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--catppuccin-latte .image.is-2by3 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--catppuccin-latte .image.is-2by3 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--catppuccin-latte .image.is-3by5 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--catppuccin-latte .image.is-3by5 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--catppuccin-latte .image.is-9by16 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--catppuccin-latte .image.is-9by16 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--catppuccin-latte .image.is-1by2 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--catppuccin-latte .image.is-1by2 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--catppuccin-latte .image.is-1by3 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--catppuccin-latte .image.is-1by3 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio{height:100%;width:100%}html.theme--catppuccin-latte .image.is-square,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-square,html.theme--catppuccin-latte .image.is-1by1,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by1{padding-top:100%}html.theme--catppuccin-latte .image.is-5by4,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-5by4{padding-top:80%}html.theme--catppuccin-latte .image.is-4by3,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-4by3{padding-top:75%}html.theme--catppuccin-latte .image.is-3by2,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by2{padding-top:66.6666%}html.theme--catppuccin-latte .image.is-5by3,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-5by3{padding-top:60%}html.theme--catppuccin-latte .image.is-16by9,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-16by9{padding-top:56.25%}html.theme--catppuccin-latte .image.is-2by1,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-2by1{padding-top:50%}html.theme--catppuccin-latte .image.is-3by1,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by1{padding-top:33.3333%}html.theme--catppuccin-latte .image.is-4by5,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-4by5{padding-top:125%}html.theme--catppuccin-latte .image.is-3by4,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by4{padding-top:133.3333%}html.theme--catppuccin-latte .image.is-2by3,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-2by3{padding-top:150%}html.theme--catppuccin-latte .image.is-3by5,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by5{padding-top:166.6666%}html.theme--catppuccin-latte .image.is-9by16,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-9by16{padding-top:177.7777%}html.theme--catppuccin-latte .image.is-1by2,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by2{padding-top:200%}html.theme--catppuccin-latte .image.is-1by3,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by3{padding-top:300%}html.theme--catppuccin-latte .image.is-16x16,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-16x16{height:16px;width:16px}html.theme--catppuccin-latte .image.is-24x24,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-24x24{height:24px;width:24px}html.theme--catppuccin-latte .image.is-32x32,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-32x32{height:32px;width:32px}html.theme--catppuccin-latte .image.is-48x48,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-48x48{height:48px;width:48px}html.theme--catppuccin-latte .image.is-64x64,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-64x64{height:64px;width:64px}html.theme--catppuccin-latte .image.is-96x96,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-96x96{height:96px;width:96px}html.theme--catppuccin-latte .image.is-128x128,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-128x128{height:128px;width:128px}html.theme--catppuccin-latte .notification{background-color:#e6e9ef;border-radius:.4em;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}html.theme--catppuccin-latte .notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--catppuccin-latte .notification strong{color:currentColor}html.theme--catppuccin-latte .notification code,html.theme--catppuccin-latte .notification pre{background:#fff}html.theme--catppuccin-latte .notification pre code{background:transparent}html.theme--catppuccin-latte .notification>.delete{right:.5rem;position:absolute;top:0.5rem}html.theme--catppuccin-latte .notification .title,html.theme--catppuccin-latte .notification .subtitle,html.theme--catppuccin-latte .notification .content{color:currentColor}html.theme--catppuccin-latte .notification.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-latte .notification.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-latte .notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .notification.is-dark,html.theme--catppuccin-latte .content kbd.notification{background-color:#ccd0da;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .notification.is-primary,html.theme--catppuccin-latte .docstring>section>a.notification.docs-sourcelink{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .notification.is-primary.is-light,html.theme--catppuccin-latte .docstring>section>a.notification.is-light.docs-sourcelink{background-color:#ebf2fe;color:#0a52e1}html.theme--catppuccin-latte .notification.is-link{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .notification.is-link.is-light{background-color:#ebf2fe;color:#0a52e1}html.theme--catppuccin-latte .notification.is-info{background-color:#179299;color:#fff}html.theme--catppuccin-latte .notification.is-info.is-light{background-color:#edfcfc;color:#1cb2ba}html.theme--catppuccin-latte .notification.is-success{background-color:#40a02b;color:#fff}html.theme--catppuccin-latte .notification.is-success.is-light{background-color:#f1fbef;color:#40a12b}html.theme--catppuccin-latte .notification.is-warning{background-color:#df8e1d;color:#fff}html.theme--catppuccin-latte .notification.is-warning.is-light{background-color:#fdf6ed;color:#9e6515}html.theme--catppuccin-latte .notification.is-danger{background-color:#d20f39;color:#fff}html.theme--catppuccin-latte .notification.is-danger.is-light{background-color:#feecf0;color:#e9113f}html.theme--catppuccin-latte .progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}html.theme--catppuccin-latte .progress::-webkit-progress-bar{background-color:#bcc0cc}html.theme--catppuccin-latte .progress::-webkit-progress-value{background-color:#8c8fa1}html.theme--catppuccin-latte .progress::-moz-progress-bar{background-color:#8c8fa1}html.theme--catppuccin-latte .progress::-ms-fill{background-color:#8c8fa1;border:none}html.theme--catppuccin-latte .progress.is-white::-webkit-progress-value{background-color:#fff}html.theme--catppuccin-latte .progress.is-white::-moz-progress-bar{background-color:#fff}html.theme--catppuccin-latte .progress.is-white::-ms-fill{background-color:#fff}html.theme--catppuccin-latte .progress.is-white:indeterminate{background-image:linear-gradient(to right, #fff 30%, #bcc0cc 30%)}html.theme--catppuccin-latte .progress.is-black::-webkit-progress-value{background-color:#0a0a0a}html.theme--catppuccin-latte .progress.is-black::-moz-progress-bar{background-color:#0a0a0a}html.theme--catppuccin-latte .progress.is-black::-ms-fill{background-color:#0a0a0a}html.theme--catppuccin-latte .progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #bcc0cc 30%)}html.theme--catppuccin-latte .progress.is-light::-webkit-progress-value{background-color:#f5f5f5}html.theme--catppuccin-latte .progress.is-light::-moz-progress-bar{background-color:#f5f5f5}html.theme--catppuccin-latte .progress.is-light::-ms-fill{background-color:#f5f5f5}html.theme--catppuccin-latte .progress.is-light:indeterminate{background-image:linear-gradient(to right, #f5f5f5 30%, #bcc0cc 30%)}html.theme--catppuccin-latte .progress.is-dark::-webkit-progress-value,html.theme--catppuccin-latte .content kbd.progress::-webkit-progress-value{background-color:#ccd0da}html.theme--catppuccin-latte .progress.is-dark::-moz-progress-bar,html.theme--catppuccin-latte .content kbd.progress::-moz-progress-bar{background-color:#ccd0da}html.theme--catppuccin-latte .progress.is-dark::-ms-fill,html.theme--catppuccin-latte .content kbd.progress::-ms-fill{background-color:#ccd0da}html.theme--catppuccin-latte .progress.is-dark:indeterminate,html.theme--catppuccin-latte .content kbd.progress:indeterminate{background-image:linear-gradient(to right, #ccd0da 30%, #bcc0cc 30%)}html.theme--catppuccin-latte .progress.is-primary::-webkit-progress-value,html.theme--catppuccin-latte .docstring>section>a.progress.docs-sourcelink::-webkit-progress-value{background-color:#1e66f5}html.theme--catppuccin-latte .progress.is-primary::-moz-progress-bar,html.theme--catppuccin-latte .docstring>section>a.progress.docs-sourcelink::-moz-progress-bar{background-color:#1e66f5}html.theme--catppuccin-latte .progress.is-primary::-ms-fill,html.theme--catppuccin-latte .docstring>section>a.progress.docs-sourcelink::-ms-fill{background-color:#1e66f5}html.theme--catppuccin-latte .progress.is-primary:indeterminate,html.theme--catppuccin-latte .docstring>section>a.progress.docs-sourcelink:indeterminate{background-image:linear-gradient(to right, #1e66f5 30%, #bcc0cc 30%)}html.theme--catppuccin-latte .progress.is-link::-webkit-progress-value{background-color:#1e66f5}html.theme--catppuccin-latte .progress.is-link::-moz-progress-bar{background-color:#1e66f5}html.theme--catppuccin-latte .progress.is-link::-ms-fill{background-color:#1e66f5}html.theme--catppuccin-latte .progress.is-link:indeterminate{background-image:linear-gradient(to right, #1e66f5 30%, #bcc0cc 30%)}html.theme--catppuccin-latte .progress.is-info::-webkit-progress-value{background-color:#179299}html.theme--catppuccin-latte .progress.is-info::-moz-progress-bar{background-color:#179299}html.theme--catppuccin-latte .progress.is-info::-ms-fill{background-color:#179299}html.theme--catppuccin-latte .progress.is-info:indeterminate{background-image:linear-gradient(to right, #179299 30%, #bcc0cc 30%)}html.theme--catppuccin-latte .progress.is-success::-webkit-progress-value{background-color:#40a02b}html.theme--catppuccin-latte .progress.is-success::-moz-progress-bar{background-color:#40a02b}html.theme--catppuccin-latte .progress.is-success::-ms-fill{background-color:#40a02b}html.theme--catppuccin-latte .progress.is-success:indeterminate{background-image:linear-gradient(to right, #40a02b 30%, #bcc0cc 30%)}html.theme--catppuccin-latte .progress.is-warning::-webkit-progress-value{background-color:#df8e1d}html.theme--catppuccin-latte .progress.is-warning::-moz-progress-bar{background-color:#df8e1d}html.theme--catppuccin-latte .progress.is-warning::-ms-fill{background-color:#df8e1d}html.theme--catppuccin-latte .progress.is-warning:indeterminate{background-image:linear-gradient(to right, #df8e1d 30%, #bcc0cc 30%)}html.theme--catppuccin-latte .progress.is-danger::-webkit-progress-value{background-color:#d20f39}html.theme--catppuccin-latte .progress.is-danger::-moz-progress-bar{background-color:#d20f39}html.theme--catppuccin-latte .progress.is-danger::-ms-fill{background-color:#d20f39}html.theme--catppuccin-latte .progress.is-danger:indeterminate{background-image:linear-gradient(to right, #d20f39 30%, #bcc0cc 30%)}html.theme--catppuccin-latte .progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#bcc0cc;background-image:linear-gradient(to right, #4c4f69 30%, #bcc0cc 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}html.theme--catppuccin-latte .progress:indeterminate::-webkit-progress-bar{background-color:transparent}html.theme--catppuccin-latte .progress:indeterminate::-moz-progress-bar{background-color:transparent}html.theme--catppuccin-latte .progress:indeterminate::-ms-fill{animation-name:none}html.theme--catppuccin-latte .progress.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.progress{height:.75rem}html.theme--catppuccin-latte .progress.is-medium{height:1.25rem}html.theme--catppuccin-latte .progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}html.theme--catppuccin-latte .table{background-color:#bcc0cc;color:#4c4f69}html.theme--catppuccin-latte .table td,html.theme--catppuccin-latte .table th{border:1px solid #acb0be;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--catppuccin-latte .table td.is-white,html.theme--catppuccin-latte .table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-latte .table td.is-black,html.theme--catppuccin-latte .table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-latte .table td.is-light,html.theme--catppuccin-latte .table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .table td.is-dark,html.theme--catppuccin-latte .table th.is-dark{background-color:#ccd0da;border-color:#ccd0da;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .table td.is-primary,html.theme--catppuccin-latte .table th.is-primary{background-color:#1e66f5;border-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .table td.is-link,html.theme--catppuccin-latte .table th.is-link{background-color:#1e66f5;border-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .table td.is-info,html.theme--catppuccin-latte .table th.is-info{background-color:#179299;border-color:#179299;color:#fff}html.theme--catppuccin-latte .table td.is-success,html.theme--catppuccin-latte .table th.is-success{background-color:#40a02b;border-color:#40a02b;color:#fff}html.theme--catppuccin-latte .table td.is-warning,html.theme--catppuccin-latte .table th.is-warning{background-color:#df8e1d;border-color:#df8e1d;color:#fff}html.theme--catppuccin-latte .table td.is-danger,html.theme--catppuccin-latte .table th.is-danger{background-color:#d20f39;border-color:#d20f39;color:#fff}html.theme--catppuccin-latte .table td.is-narrow,html.theme--catppuccin-latte .table th.is-narrow{white-space:nowrap;width:1%}html.theme--catppuccin-latte .table td.is-selected,html.theme--catppuccin-latte .table th.is-selected{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .table td.is-selected a,html.theme--catppuccin-latte .table td.is-selected strong,html.theme--catppuccin-latte .table th.is-selected a,html.theme--catppuccin-latte .table th.is-selected strong{color:currentColor}html.theme--catppuccin-latte .table td.is-vcentered,html.theme--catppuccin-latte .table th.is-vcentered{vertical-align:middle}html.theme--catppuccin-latte .table th{color:#41445a}html.theme--catppuccin-latte .table th:not([align]){text-align:left}html.theme--catppuccin-latte .table tr.is-selected{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .table tr.is-selected a,html.theme--catppuccin-latte .table tr.is-selected strong{color:currentColor}html.theme--catppuccin-latte .table tr.is-selected td,html.theme--catppuccin-latte .table tr.is-selected th{border-color:#fff;color:currentColor}html.theme--catppuccin-latte .table thead{background-color:rgba(0,0,0,0)}html.theme--catppuccin-latte .table thead td,html.theme--catppuccin-latte .table thead th{border-width:0 0 2px;color:#41445a}html.theme--catppuccin-latte .table tfoot{background-color:rgba(0,0,0,0)}html.theme--catppuccin-latte .table tfoot td,html.theme--catppuccin-latte .table tfoot th{border-width:2px 0 0;color:#41445a}html.theme--catppuccin-latte .table tbody{background-color:rgba(0,0,0,0)}html.theme--catppuccin-latte .table tbody tr:last-child td,html.theme--catppuccin-latte .table tbody tr:last-child th{border-bottom-width:0}html.theme--catppuccin-latte .table.is-bordered td,html.theme--catppuccin-latte .table.is-bordered th{border-width:1px}html.theme--catppuccin-latte .table.is-bordered tr:last-child td,html.theme--catppuccin-latte .table.is-bordered tr:last-child th{border-bottom-width:1px}html.theme--catppuccin-latte .table.is-fullwidth{width:100%}html.theme--catppuccin-latte .table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#ccd0da}html.theme--catppuccin-latte .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#ccd0da}html.theme--catppuccin-latte .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#d2d5de}html.theme--catppuccin-latte .table.is-narrow td,html.theme--catppuccin-latte .table.is-narrow th{padding:0.25em 0.5em}html.theme--catppuccin-latte .table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#ccd0da}html.theme--catppuccin-latte .table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}html.theme--catppuccin-latte .tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-latte .tags .tag,html.theme--catppuccin-latte .tags .content kbd,html.theme--catppuccin-latte .content .tags kbd,html.theme--catppuccin-latte .tags .docstring>section>a.docs-sourcelink{margin-bottom:0.5rem}html.theme--catppuccin-latte .tags .tag:not(:last-child),html.theme--catppuccin-latte .tags .content kbd:not(:last-child),html.theme--catppuccin-latte .content .tags kbd:not(:last-child),html.theme--catppuccin-latte .tags .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:.5rem}html.theme--catppuccin-latte .tags:last-child{margin-bottom:-0.5rem}html.theme--catppuccin-latte .tags:not(:last-child){margin-bottom:1rem}html.theme--catppuccin-latte .tags.are-medium .tag:not(.is-normal):not(.is-large),html.theme--catppuccin-latte .tags.are-medium .content kbd:not(.is-normal):not(.is-large),html.theme--catppuccin-latte .content .tags.are-medium kbd:not(.is-normal):not(.is-large),html.theme--catppuccin-latte .tags.are-medium .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-large){font-size:1rem}html.theme--catppuccin-latte .tags.are-large .tag:not(.is-normal):not(.is-medium),html.theme--catppuccin-latte .tags.are-large .content kbd:not(.is-normal):not(.is-medium),html.theme--catppuccin-latte .content .tags.are-large kbd:not(.is-normal):not(.is-medium),html.theme--catppuccin-latte .tags.are-large .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-medium){font-size:1.25rem}html.theme--catppuccin-latte .tags.is-centered{justify-content:center}html.theme--catppuccin-latte .tags.is-centered .tag,html.theme--catppuccin-latte .tags.is-centered .content kbd,html.theme--catppuccin-latte .content .tags.is-centered kbd,html.theme--catppuccin-latte .tags.is-centered .docstring>section>a.docs-sourcelink{margin-right:0.25rem;margin-left:0.25rem}html.theme--catppuccin-latte .tags.is-right{justify-content:flex-end}html.theme--catppuccin-latte .tags.is-right .tag:not(:first-child),html.theme--catppuccin-latte .tags.is-right .content kbd:not(:first-child),html.theme--catppuccin-latte .content .tags.is-right kbd:not(:first-child),html.theme--catppuccin-latte .tags.is-right .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0.5rem}html.theme--catppuccin-latte .tags.is-right .tag:not(:last-child),html.theme--catppuccin-latte .tags.is-right .content kbd:not(:last-child),html.theme--catppuccin-latte .content .tags.is-right kbd:not(:last-child),html.theme--catppuccin-latte .tags.is-right .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0}html.theme--catppuccin-latte .tags.has-addons .tag,html.theme--catppuccin-latte .tags.has-addons .content kbd,html.theme--catppuccin-latte .content .tags.has-addons kbd,html.theme--catppuccin-latte .tags.has-addons .docstring>section>a.docs-sourcelink{margin-right:0}html.theme--catppuccin-latte .tags.has-addons .tag:not(:first-child),html.theme--catppuccin-latte .tags.has-addons .content kbd:not(:first-child),html.theme--catppuccin-latte .content .tags.has-addons kbd:not(:first-child),html.theme--catppuccin-latte .tags.has-addons .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}html.theme--catppuccin-latte .tags.has-addons .tag:not(:last-child),html.theme--catppuccin-latte .tags.has-addons .content kbd:not(:last-child),html.theme--catppuccin-latte .content .tags.has-addons kbd:not(:last-child),html.theme--catppuccin-latte .tags.has-addons .docstring>section>a.docs-sourcelink:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}html.theme--catppuccin-latte .tag:not(body),html.theme--catppuccin-latte .content kbd:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink:not(body){align-items:center;background-color:#e6e9ef;border-radius:.4em;color:#4c4f69;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:0.75em;padding-right:0.75em;white-space:nowrap}html.theme--catppuccin-latte .tag:not(body) .delete,html.theme--catppuccin-latte .content kbd:not(body) .delete,html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}html.theme--catppuccin-latte .tag.is-white:not(body),html.theme--catppuccin-latte .content kbd.is-white:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-white:not(body){background-color:#fff;color:#0a0a0a}html.theme--catppuccin-latte .tag.is-black:not(body),html.theme--catppuccin-latte .content kbd.is-black:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-black:not(body){background-color:#0a0a0a;color:#fff}html.theme--catppuccin-latte .tag.is-light:not(body),html.theme--catppuccin-latte .content kbd.is-light:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .tag.is-dark:not(body),html.theme--catppuccin-latte .content kbd:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-dark:not(body),html.theme--catppuccin-latte .content .docstring>section>kbd:not(body){background-color:#ccd0da;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .tag.is-primary:not(body),html.theme--catppuccin-latte .content kbd.is-primary:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink:not(body){background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .tag.is-primary.is-light:not(body),html.theme--catppuccin-latte .content kbd.is-primary.is-light:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#ebf2fe;color:#0a52e1}html.theme--catppuccin-latte .tag.is-link:not(body),html.theme--catppuccin-latte .content kbd.is-link:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-link:not(body){background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .tag.is-link.is-light:not(body),html.theme--catppuccin-latte .content kbd.is-link.is-light:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-link.is-light:not(body){background-color:#ebf2fe;color:#0a52e1}html.theme--catppuccin-latte .tag.is-info:not(body),html.theme--catppuccin-latte .content kbd.is-info:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-info:not(body){background-color:#179299;color:#fff}html.theme--catppuccin-latte .tag.is-info.is-light:not(body),html.theme--catppuccin-latte .content kbd.is-info.is-light:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-info.is-light:not(body){background-color:#edfcfc;color:#1cb2ba}html.theme--catppuccin-latte .tag.is-success:not(body),html.theme--catppuccin-latte .content kbd.is-success:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-success:not(body){background-color:#40a02b;color:#fff}html.theme--catppuccin-latte .tag.is-success.is-light:not(body),html.theme--catppuccin-latte .content kbd.is-success.is-light:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-success.is-light:not(body){background-color:#f1fbef;color:#40a12b}html.theme--catppuccin-latte .tag.is-warning:not(body),html.theme--catppuccin-latte .content kbd.is-warning:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-warning:not(body){background-color:#df8e1d;color:#fff}html.theme--catppuccin-latte .tag.is-warning.is-light:not(body),html.theme--catppuccin-latte .content kbd.is-warning.is-light:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-warning.is-light:not(body){background-color:#fdf6ed;color:#9e6515}html.theme--catppuccin-latte .tag.is-danger:not(body),html.theme--catppuccin-latte .content kbd.is-danger:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-danger:not(body){background-color:#d20f39;color:#fff}html.theme--catppuccin-latte .tag.is-danger.is-light:not(body),html.theme--catppuccin-latte .content kbd.is-danger.is-light:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-danger.is-light:not(body){background-color:#feecf0;color:#e9113f}html.theme--catppuccin-latte .tag.is-normal:not(body),html.theme--catppuccin-latte .content kbd.is-normal:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-normal:not(body){font-size:.75rem}html.theme--catppuccin-latte .tag.is-medium:not(body),html.theme--catppuccin-latte .content kbd.is-medium:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-medium:not(body){font-size:1rem}html.theme--catppuccin-latte .tag.is-large:not(body),html.theme--catppuccin-latte .content kbd.is-large:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-large:not(body){font-size:1.25rem}html.theme--catppuccin-latte .tag:not(body) .icon:first-child:not(:last-child),html.theme--catppuccin-latte .content kbd:not(body) .icon:first-child:not(:last-child),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}html.theme--catppuccin-latte .tag:not(body) .icon:last-child:not(:first-child),html.theme--catppuccin-latte .content kbd:not(body) .icon:last-child:not(:first-child),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}html.theme--catppuccin-latte .tag:not(body) .icon:first-child:last-child,html.theme--catppuccin-latte .content kbd:not(body) .icon:first-child:last-child,html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}html.theme--catppuccin-latte .tag.is-delete:not(body),html.theme--catppuccin-latte .content kbd.is-delete:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-delete:not(body){margin-left:1px;padding:0;position:relative;width:2em}html.theme--catppuccin-latte .tag.is-delete:not(body)::before,html.theme--catppuccin-latte .content kbd.is-delete:not(body)::before,html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-delete:not(body)::before,html.theme--catppuccin-latte .tag.is-delete:not(body)::after,html.theme--catppuccin-latte .content kbd.is-delete:not(body)::after,html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--catppuccin-latte .tag.is-delete:not(body)::before,html.theme--catppuccin-latte .content kbd.is-delete:not(body)::before,html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-delete:not(body)::before{height:1px;width:50%}html.theme--catppuccin-latte .tag.is-delete:not(body)::after,html.theme--catppuccin-latte .content kbd.is-delete:not(body)::after,html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{height:50%;width:1px}html.theme--catppuccin-latte .tag.is-delete:not(body):hover,html.theme--catppuccin-latte .content kbd.is-delete:not(body):hover,html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-delete:not(body):hover,html.theme--catppuccin-latte .tag.is-delete:not(body):focus,html.theme--catppuccin-latte .content kbd.is-delete:not(body):focus,html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-delete:not(body):focus{background-color:#d6dbe5}html.theme--catppuccin-latte .tag.is-delete:not(body):active,html.theme--catppuccin-latte .content kbd.is-delete:not(body):active,html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-delete:not(body):active{background-color:#c7cedb}html.theme--catppuccin-latte .tag.is-rounded:not(body),html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input:not(body),html.theme--catppuccin-latte .content kbd.is-rounded:not(body),html.theme--catppuccin-latte #documenter .docs-sidebar .content form.docs-search>input:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-rounded:not(body){border-radius:9999px}html.theme--catppuccin-latte a.tag:hover,html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink:hover{text-decoration:underline}html.theme--catppuccin-latte .title,html.theme--catppuccin-latte .subtitle{word-break:break-word}html.theme--catppuccin-latte .title em,html.theme--catppuccin-latte .title span,html.theme--catppuccin-latte .subtitle em,html.theme--catppuccin-latte .subtitle span{font-weight:inherit}html.theme--catppuccin-latte .title sub,html.theme--catppuccin-latte .subtitle sub{font-size:.75em}html.theme--catppuccin-latte .title sup,html.theme--catppuccin-latte .subtitle sup{font-size:.75em}html.theme--catppuccin-latte .title .tag,html.theme--catppuccin-latte .title .content kbd,html.theme--catppuccin-latte .content .title kbd,html.theme--catppuccin-latte .title .docstring>section>a.docs-sourcelink,html.theme--catppuccin-latte .subtitle .tag,html.theme--catppuccin-latte .subtitle .content kbd,html.theme--catppuccin-latte .content .subtitle kbd,html.theme--catppuccin-latte .subtitle .docstring>section>a.docs-sourcelink{vertical-align:middle}html.theme--catppuccin-latte .title{color:#fff;font-size:2rem;font-weight:500;line-height:1.125}html.theme--catppuccin-latte .title strong{color:inherit;font-weight:inherit}html.theme--catppuccin-latte .title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}html.theme--catppuccin-latte .title.is-1{font-size:3rem}html.theme--catppuccin-latte .title.is-2{font-size:2.5rem}html.theme--catppuccin-latte .title.is-3{font-size:2rem}html.theme--catppuccin-latte .title.is-4{font-size:1.5rem}html.theme--catppuccin-latte .title.is-5{font-size:1.25rem}html.theme--catppuccin-latte .title.is-6{font-size:1rem}html.theme--catppuccin-latte .title.is-7{font-size:.75rem}html.theme--catppuccin-latte .subtitle{color:#9ca0b0;font-size:1.25rem;font-weight:400;line-height:1.25}html.theme--catppuccin-latte .subtitle strong{color:#9ca0b0;font-weight:600}html.theme--catppuccin-latte .subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}html.theme--catppuccin-latte .subtitle.is-1{font-size:3rem}html.theme--catppuccin-latte .subtitle.is-2{font-size:2.5rem}html.theme--catppuccin-latte .subtitle.is-3{font-size:2rem}html.theme--catppuccin-latte .subtitle.is-4{font-size:1.5rem}html.theme--catppuccin-latte .subtitle.is-5{font-size:1.25rem}html.theme--catppuccin-latte .subtitle.is-6{font-size:1rem}html.theme--catppuccin-latte .subtitle.is-7{font-size:.75rem}html.theme--catppuccin-latte .heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}html.theme--catppuccin-latte .number{align-items:center;background-color:#e6e9ef;border-radius:9999px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:0.25rem 0.5rem;text-align:center;vertical-align:top}html.theme--catppuccin-latte .select select,html.theme--catppuccin-latte .textarea,html.theme--catppuccin-latte .input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input{background-color:#eff1f5;border-color:#acb0be;border-radius:.4em;color:#8c8fa1}html.theme--catppuccin-latte .select select::-moz-placeholder,html.theme--catppuccin-latte .textarea::-moz-placeholder,html.theme--catppuccin-latte .input::-moz-placeholder,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:#868c98}html.theme--catppuccin-latte .select select::-webkit-input-placeholder,html.theme--catppuccin-latte .textarea::-webkit-input-placeholder,html.theme--catppuccin-latte .input::-webkit-input-placeholder,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:#868c98}html.theme--catppuccin-latte .select select:-moz-placeholder,html.theme--catppuccin-latte .textarea:-moz-placeholder,html.theme--catppuccin-latte .input:-moz-placeholder,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:#868c98}html.theme--catppuccin-latte .select select:-ms-input-placeholder,html.theme--catppuccin-latte .textarea:-ms-input-placeholder,html.theme--catppuccin-latte .input:-ms-input-placeholder,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:#868c98}html.theme--catppuccin-latte .select select:hover,html.theme--catppuccin-latte .textarea:hover,html.theme--catppuccin-latte .input:hover,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input:hover,html.theme--catppuccin-latte .select select.is-hovered,html.theme--catppuccin-latte .is-hovered.textarea,html.theme--catppuccin-latte .is-hovered.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-hovered{border-color:#9ca0b0}html.theme--catppuccin-latte .select select:focus,html.theme--catppuccin-latte .textarea:focus,html.theme--catppuccin-latte .input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input:focus,html.theme--catppuccin-latte .select select.is-focused,html.theme--catppuccin-latte .is-focused.textarea,html.theme--catppuccin-latte .is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .select select:active,html.theme--catppuccin-latte .textarea:active,html.theme--catppuccin-latte .input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input:active,html.theme--catppuccin-latte .select select.is-active,html.theme--catppuccin-latte .is-active.textarea,html.theme--catppuccin-latte .is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active{border-color:#1e66f5;box-shadow:0 0 0 0.125em rgba(30,102,245,0.25)}html.theme--catppuccin-latte .select select[disabled],html.theme--catppuccin-latte .textarea[disabled],html.theme--catppuccin-latte .input[disabled],html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input[disabled],fieldset[disabled] html.theme--catppuccin-latte .select select,fieldset[disabled] html.theme--catppuccin-latte .textarea,fieldset[disabled] html.theme--catppuccin-latte .input,fieldset[disabled] html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input{background-color:#9ca0b0;border-color:#e6e9ef;box-shadow:none;color:#616587}html.theme--catppuccin-latte .select select[disabled]::-moz-placeholder,html.theme--catppuccin-latte .textarea[disabled]::-moz-placeholder,html.theme--catppuccin-latte .input[disabled]::-moz-placeholder,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input[disabled]::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-latte .select select::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-latte .textarea::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-latte .input::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:rgba(97,101,135,0.3)}html.theme--catppuccin-latte .select select[disabled]::-webkit-input-placeholder,html.theme--catppuccin-latte .textarea[disabled]::-webkit-input-placeholder,html.theme--catppuccin-latte .input[disabled]::-webkit-input-placeholder,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input[disabled]::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-latte .select select::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-latte .textarea::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-latte .input::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:rgba(97,101,135,0.3)}html.theme--catppuccin-latte .select select[disabled]:-moz-placeholder,html.theme--catppuccin-latte .textarea[disabled]:-moz-placeholder,html.theme--catppuccin-latte .input[disabled]:-moz-placeholder,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input[disabled]:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-latte .select select:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-latte .textarea:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-latte .input:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:rgba(97,101,135,0.3)}html.theme--catppuccin-latte .select select[disabled]:-ms-input-placeholder,html.theme--catppuccin-latte .textarea[disabled]:-ms-input-placeholder,html.theme--catppuccin-latte .input[disabled]:-ms-input-placeholder,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input[disabled]:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-latte .select select:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-latte .textarea:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-latte .input:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:rgba(97,101,135,0.3)}html.theme--catppuccin-latte .textarea,html.theme--catppuccin-latte .input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input{box-shadow:inset 0 0.0625em 0.125em rgba(10,10,10,0.05);max-width:100%;width:100%}html.theme--catppuccin-latte .textarea[readonly],html.theme--catppuccin-latte .input[readonly],html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input[readonly]{box-shadow:none}html.theme--catppuccin-latte .is-white.textarea,html.theme--catppuccin-latte .is-white.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-white{border-color:#fff}html.theme--catppuccin-latte .is-white.textarea:focus,html.theme--catppuccin-latte .is-white.input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-white:focus,html.theme--catppuccin-latte .is-white.is-focused.textarea,html.theme--catppuccin-latte .is-white.is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .is-white.textarea:active,html.theme--catppuccin-latte .is-white.input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-white:active,html.theme--catppuccin-latte .is-white.is-active.textarea,html.theme--catppuccin-latte .is-white.is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-latte .is-black.textarea,html.theme--catppuccin-latte .is-black.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-black{border-color:#0a0a0a}html.theme--catppuccin-latte .is-black.textarea:focus,html.theme--catppuccin-latte .is-black.input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-black:focus,html.theme--catppuccin-latte .is-black.is-focused.textarea,html.theme--catppuccin-latte .is-black.is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .is-black.textarea:active,html.theme--catppuccin-latte .is-black.input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-black:active,html.theme--catppuccin-latte .is-black.is-active.textarea,html.theme--catppuccin-latte .is-black.is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-latte .is-light.textarea,html.theme--catppuccin-latte .is-light.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-light{border-color:#f5f5f5}html.theme--catppuccin-latte .is-light.textarea:focus,html.theme--catppuccin-latte .is-light.input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-light:focus,html.theme--catppuccin-latte .is-light.is-focused.textarea,html.theme--catppuccin-latte .is-light.is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .is-light.textarea:active,html.theme--catppuccin-latte .is-light.input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-light:active,html.theme--catppuccin-latte .is-light.is-active.textarea,html.theme--catppuccin-latte .is-light.is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-latte .is-dark.textarea,html.theme--catppuccin-latte .content kbd.textarea,html.theme--catppuccin-latte .is-dark.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-dark,html.theme--catppuccin-latte .content kbd.input{border-color:#ccd0da}html.theme--catppuccin-latte .is-dark.textarea:focus,html.theme--catppuccin-latte .content kbd.textarea:focus,html.theme--catppuccin-latte .is-dark.input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-dark:focus,html.theme--catppuccin-latte .content kbd.input:focus,html.theme--catppuccin-latte .is-dark.is-focused.textarea,html.theme--catppuccin-latte .content kbd.is-focused.textarea,html.theme--catppuccin-latte .is-dark.is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .content kbd.is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar .content form.docs-search>input.is-focused,html.theme--catppuccin-latte .is-dark.textarea:active,html.theme--catppuccin-latte .content kbd.textarea:active,html.theme--catppuccin-latte .is-dark.input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-dark:active,html.theme--catppuccin-latte .content kbd.input:active,html.theme--catppuccin-latte .is-dark.is-active.textarea,html.theme--catppuccin-latte .content kbd.is-active.textarea,html.theme--catppuccin-latte .is-dark.is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-latte .content kbd.is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar .content form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(204,208,218,0.25)}html.theme--catppuccin-latte .is-primary.textarea,html.theme--catppuccin-latte .docstring>section>a.textarea.docs-sourcelink,html.theme--catppuccin-latte .is-primary.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-primary,html.theme--catppuccin-latte .docstring>section>a.input.docs-sourcelink{border-color:#1e66f5}html.theme--catppuccin-latte .is-primary.textarea:focus,html.theme--catppuccin-latte .docstring>section>a.textarea.docs-sourcelink:focus,html.theme--catppuccin-latte .is-primary.input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-primary:focus,html.theme--catppuccin-latte .docstring>section>a.input.docs-sourcelink:focus,html.theme--catppuccin-latte .is-primary.is-focused.textarea,html.theme--catppuccin-latte .docstring>section>a.is-focused.textarea.docs-sourcelink,html.theme--catppuccin-latte .is-primary.is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .docstring>section>a.is-focused.input.docs-sourcelink,html.theme--catppuccin-latte .is-primary.textarea:active,html.theme--catppuccin-latte .docstring>section>a.textarea.docs-sourcelink:active,html.theme--catppuccin-latte .is-primary.input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-primary:active,html.theme--catppuccin-latte .docstring>section>a.input.docs-sourcelink:active,html.theme--catppuccin-latte .is-primary.is-active.textarea,html.theme--catppuccin-latte .docstring>section>a.is-active.textarea.docs-sourcelink,html.theme--catppuccin-latte .is-primary.is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-latte .docstring>section>a.is-active.input.docs-sourcelink{box-shadow:0 0 0 0.125em rgba(30,102,245,0.25)}html.theme--catppuccin-latte .is-link.textarea,html.theme--catppuccin-latte .is-link.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-link{border-color:#1e66f5}html.theme--catppuccin-latte .is-link.textarea:focus,html.theme--catppuccin-latte .is-link.input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-link:focus,html.theme--catppuccin-latte .is-link.is-focused.textarea,html.theme--catppuccin-latte .is-link.is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .is-link.textarea:active,html.theme--catppuccin-latte .is-link.input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-link:active,html.theme--catppuccin-latte .is-link.is-active.textarea,html.theme--catppuccin-latte .is-link.is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(30,102,245,0.25)}html.theme--catppuccin-latte .is-info.textarea,html.theme--catppuccin-latte .is-info.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-info{border-color:#179299}html.theme--catppuccin-latte .is-info.textarea:focus,html.theme--catppuccin-latte .is-info.input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-info:focus,html.theme--catppuccin-latte .is-info.is-focused.textarea,html.theme--catppuccin-latte .is-info.is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .is-info.textarea:active,html.theme--catppuccin-latte .is-info.input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-info:active,html.theme--catppuccin-latte .is-info.is-active.textarea,html.theme--catppuccin-latte .is-info.is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(23,146,153,0.25)}html.theme--catppuccin-latte .is-success.textarea,html.theme--catppuccin-latte .is-success.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-success{border-color:#40a02b}html.theme--catppuccin-latte .is-success.textarea:focus,html.theme--catppuccin-latte .is-success.input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-success:focus,html.theme--catppuccin-latte .is-success.is-focused.textarea,html.theme--catppuccin-latte .is-success.is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .is-success.textarea:active,html.theme--catppuccin-latte .is-success.input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-success:active,html.theme--catppuccin-latte .is-success.is-active.textarea,html.theme--catppuccin-latte .is-success.is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(64,160,43,0.25)}html.theme--catppuccin-latte .is-warning.textarea,html.theme--catppuccin-latte .is-warning.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-warning{border-color:#df8e1d}html.theme--catppuccin-latte .is-warning.textarea:focus,html.theme--catppuccin-latte .is-warning.input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-warning:focus,html.theme--catppuccin-latte .is-warning.is-focused.textarea,html.theme--catppuccin-latte .is-warning.is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .is-warning.textarea:active,html.theme--catppuccin-latte .is-warning.input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-warning:active,html.theme--catppuccin-latte .is-warning.is-active.textarea,html.theme--catppuccin-latte .is-warning.is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(223,142,29,0.25)}html.theme--catppuccin-latte .is-danger.textarea,html.theme--catppuccin-latte .is-danger.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-danger{border-color:#d20f39}html.theme--catppuccin-latte .is-danger.textarea:focus,html.theme--catppuccin-latte .is-danger.input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-danger:focus,html.theme--catppuccin-latte .is-danger.is-focused.textarea,html.theme--catppuccin-latte .is-danger.is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .is-danger.textarea:active,html.theme--catppuccin-latte .is-danger.input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-danger:active,html.theme--catppuccin-latte .is-danger.is-active.textarea,html.theme--catppuccin-latte .is-danger.is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(210,15,57,0.25)}html.theme--catppuccin-latte .is-small.textarea,html.theme--catppuccin-latte .is-small.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input{border-radius:3px;font-size:.75rem}html.theme--catppuccin-latte .is-medium.textarea,html.theme--catppuccin-latte .is-medium.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .is-large.textarea,html.theme--catppuccin-latte .is-large.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-large{font-size:1.5rem}html.theme--catppuccin-latte .is-fullwidth.textarea,html.theme--catppuccin-latte .is-fullwidth.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-fullwidth{display:block;width:100%}html.theme--catppuccin-latte .is-inline.textarea,html.theme--catppuccin-latte .is-inline.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-inline{display:inline;width:auto}html.theme--catppuccin-latte .input.is-rounded,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input{border-radius:9999px;padding-left:calc(calc(0.75em - 1px) + 0.375em);padding-right:calc(calc(0.75em - 1px) + 0.375em)}html.theme--catppuccin-latte .input.is-static,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}html.theme--catppuccin-latte .textarea{display:block;max-width:100%;min-width:100%;padding:calc(0.75em - 1px);resize:vertical}html.theme--catppuccin-latte .textarea:not([rows]){max-height:40em;min-height:8em}html.theme--catppuccin-latte .textarea[rows]{height:initial}html.theme--catppuccin-latte .textarea.has-fixed-size{resize:none}html.theme--catppuccin-latte .radio,html.theme--catppuccin-latte .checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}html.theme--catppuccin-latte .radio input,html.theme--catppuccin-latte .checkbox input{cursor:pointer}html.theme--catppuccin-latte .radio:hover,html.theme--catppuccin-latte .checkbox:hover{color:#04a5e5}html.theme--catppuccin-latte .radio[disabled],html.theme--catppuccin-latte .checkbox[disabled],fieldset[disabled] html.theme--catppuccin-latte .radio,fieldset[disabled] html.theme--catppuccin-latte .checkbox,html.theme--catppuccin-latte .radio input[disabled],html.theme--catppuccin-latte .checkbox input[disabled]{color:#616587;cursor:not-allowed}html.theme--catppuccin-latte .radio+.radio{margin-left:.5em}html.theme--catppuccin-latte .select{display:inline-block;max-width:100%;position:relative;vertical-align:top}html.theme--catppuccin-latte .select:not(.is-multiple){height:2.5em}html.theme--catppuccin-latte .select:not(.is-multiple):not(.is-loading)::after{border-color:#1e66f5;right:1.125em;z-index:4}html.theme--catppuccin-latte .select.is-rounded select,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.select select{border-radius:9999px;padding-left:1em}html.theme--catppuccin-latte .select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}html.theme--catppuccin-latte .select select::-ms-expand{display:none}html.theme--catppuccin-latte .select select[disabled]:hover,fieldset[disabled] html.theme--catppuccin-latte .select select:hover{border-color:#e6e9ef}html.theme--catppuccin-latte .select select:not([multiple]){padding-right:2.5em}html.theme--catppuccin-latte .select select[multiple]{height:auto;padding:0}html.theme--catppuccin-latte .select select[multiple] option{padding:0.5em 1em}html.theme--catppuccin-latte .select:not(.is-multiple):not(.is-loading):hover::after{border-color:#04a5e5}html.theme--catppuccin-latte .select.is-white:not(:hover)::after{border-color:#fff}html.theme--catppuccin-latte .select.is-white select{border-color:#fff}html.theme--catppuccin-latte .select.is-white select:hover,html.theme--catppuccin-latte .select.is-white select.is-hovered{border-color:#f2f2f2}html.theme--catppuccin-latte .select.is-white select:focus,html.theme--catppuccin-latte .select.is-white select.is-focused,html.theme--catppuccin-latte .select.is-white select:active,html.theme--catppuccin-latte .select.is-white select.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-latte .select.is-black:not(:hover)::after{border-color:#0a0a0a}html.theme--catppuccin-latte .select.is-black select{border-color:#0a0a0a}html.theme--catppuccin-latte .select.is-black select:hover,html.theme--catppuccin-latte .select.is-black select.is-hovered{border-color:#000}html.theme--catppuccin-latte .select.is-black select:focus,html.theme--catppuccin-latte .select.is-black select.is-focused,html.theme--catppuccin-latte .select.is-black select:active,html.theme--catppuccin-latte .select.is-black select.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-latte .select.is-light:not(:hover)::after{border-color:#f5f5f5}html.theme--catppuccin-latte .select.is-light select{border-color:#f5f5f5}html.theme--catppuccin-latte .select.is-light select:hover,html.theme--catppuccin-latte .select.is-light select.is-hovered{border-color:#e8e8e8}html.theme--catppuccin-latte .select.is-light select:focus,html.theme--catppuccin-latte .select.is-light select.is-focused,html.theme--catppuccin-latte .select.is-light select:active,html.theme--catppuccin-latte .select.is-light select.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-latte .select.is-dark:not(:hover)::after,html.theme--catppuccin-latte .content kbd.select:not(:hover)::after{border-color:#ccd0da}html.theme--catppuccin-latte .select.is-dark select,html.theme--catppuccin-latte .content kbd.select select{border-color:#ccd0da}html.theme--catppuccin-latte .select.is-dark select:hover,html.theme--catppuccin-latte .content kbd.select select:hover,html.theme--catppuccin-latte .select.is-dark select.is-hovered,html.theme--catppuccin-latte .content kbd.select select.is-hovered{border-color:#bdc2cf}html.theme--catppuccin-latte .select.is-dark select:focus,html.theme--catppuccin-latte .content kbd.select select:focus,html.theme--catppuccin-latte .select.is-dark select.is-focused,html.theme--catppuccin-latte .content kbd.select select.is-focused,html.theme--catppuccin-latte .select.is-dark select:active,html.theme--catppuccin-latte .content kbd.select select:active,html.theme--catppuccin-latte .select.is-dark select.is-active,html.theme--catppuccin-latte .content kbd.select select.is-active{box-shadow:0 0 0 0.125em rgba(204,208,218,0.25)}html.theme--catppuccin-latte .select.is-primary:not(:hover)::after,html.theme--catppuccin-latte .docstring>section>a.select.docs-sourcelink:not(:hover)::after{border-color:#1e66f5}html.theme--catppuccin-latte .select.is-primary select,html.theme--catppuccin-latte .docstring>section>a.select.docs-sourcelink select{border-color:#1e66f5}html.theme--catppuccin-latte .select.is-primary select:hover,html.theme--catppuccin-latte .docstring>section>a.select.docs-sourcelink select:hover,html.theme--catppuccin-latte .select.is-primary select.is-hovered,html.theme--catppuccin-latte .docstring>section>a.select.docs-sourcelink select.is-hovered{border-color:#0b57ef}html.theme--catppuccin-latte .select.is-primary select:focus,html.theme--catppuccin-latte .docstring>section>a.select.docs-sourcelink select:focus,html.theme--catppuccin-latte .select.is-primary select.is-focused,html.theme--catppuccin-latte .docstring>section>a.select.docs-sourcelink select.is-focused,html.theme--catppuccin-latte .select.is-primary select:active,html.theme--catppuccin-latte .docstring>section>a.select.docs-sourcelink select:active,html.theme--catppuccin-latte .select.is-primary select.is-active,html.theme--catppuccin-latte .docstring>section>a.select.docs-sourcelink select.is-active{box-shadow:0 0 0 0.125em rgba(30,102,245,0.25)}html.theme--catppuccin-latte .select.is-link:not(:hover)::after{border-color:#1e66f5}html.theme--catppuccin-latte .select.is-link select{border-color:#1e66f5}html.theme--catppuccin-latte .select.is-link select:hover,html.theme--catppuccin-latte .select.is-link select.is-hovered{border-color:#0b57ef}html.theme--catppuccin-latte .select.is-link select:focus,html.theme--catppuccin-latte .select.is-link select.is-focused,html.theme--catppuccin-latte .select.is-link select:active,html.theme--catppuccin-latte .select.is-link select.is-active{box-shadow:0 0 0 0.125em rgba(30,102,245,0.25)}html.theme--catppuccin-latte .select.is-info:not(:hover)::after{border-color:#179299}html.theme--catppuccin-latte .select.is-info select{border-color:#179299}html.theme--catppuccin-latte .select.is-info select:hover,html.theme--catppuccin-latte .select.is-info select.is-hovered{border-color:#147d83}html.theme--catppuccin-latte .select.is-info select:focus,html.theme--catppuccin-latte .select.is-info select.is-focused,html.theme--catppuccin-latte .select.is-info select:active,html.theme--catppuccin-latte .select.is-info select.is-active{box-shadow:0 0 0 0.125em rgba(23,146,153,0.25)}html.theme--catppuccin-latte .select.is-success:not(:hover)::after{border-color:#40a02b}html.theme--catppuccin-latte .select.is-success select{border-color:#40a02b}html.theme--catppuccin-latte .select.is-success select:hover,html.theme--catppuccin-latte .select.is-success select.is-hovered{border-color:#388c26}html.theme--catppuccin-latte .select.is-success select:focus,html.theme--catppuccin-latte .select.is-success select.is-focused,html.theme--catppuccin-latte .select.is-success select:active,html.theme--catppuccin-latte .select.is-success select.is-active{box-shadow:0 0 0 0.125em rgba(64,160,43,0.25)}html.theme--catppuccin-latte .select.is-warning:not(:hover)::after{border-color:#df8e1d}html.theme--catppuccin-latte .select.is-warning select{border-color:#df8e1d}html.theme--catppuccin-latte .select.is-warning select:hover,html.theme--catppuccin-latte .select.is-warning select.is-hovered{border-color:#c8801a}html.theme--catppuccin-latte .select.is-warning select:focus,html.theme--catppuccin-latte .select.is-warning select.is-focused,html.theme--catppuccin-latte .select.is-warning select:active,html.theme--catppuccin-latte .select.is-warning select.is-active{box-shadow:0 0 0 0.125em rgba(223,142,29,0.25)}html.theme--catppuccin-latte .select.is-danger:not(:hover)::after{border-color:#d20f39}html.theme--catppuccin-latte .select.is-danger select{border-color:#d20f39}html.theme--catppuccin-latte .select.is-danger select:hover,html.theme--catppuccin-latte .select.is-danger select.is-hovered{border-color:#ba0d33}html.theme--catppuccin-latte .select.is-danger select:focus,html.theme--catppuccin-latte .select.is-danger select.is-focused,html.theme--catppuccin-latte .select.is-danger select:active,html.theme--catppuccin-latte .select.is-danger select.is-active{box-shadow:0 0 0 0.125em rgba(210,15,57,0.25)}html.theme--catppuccin-latte .select.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.select{border-radius:3px;font-size:.75rem}html.theme--catppuccin-latte .select.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .select.is-large{font-size:1.5rem}html.theme--catppuccin-latte .select.is-disabled::after{border-color:#616587 !important;opacity:0.5}html.theme--catppuccin-latte .select.is-fullwidth{width:100%}html.theme--catppuccin-latte .select.is-fullwidth select{width:100%}html.theme--catppuccin-latte .select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:0.625em;transform:none}html.theme--catppuccin-latte .select.is-loading.is-small:after,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--catppuccin-latte .select.is-loading.is-medium:after{font-size:1.25rem}html.theme--catppuccin-latte .select.is-loading.is-large:after{font-size:1.5rem}html.theme--catppuccin-latte .file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}html.theme--catppuccin-latte .file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-latte .file.is-white:hover .file-cta,html.theme--catppuccin-latte .file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-latte .file.is-white:focus .file-cta,html.theme--catppuccin-latte .file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,255,255,0.25);color:#0a0a0a}html.theme--catppuccin-latte .file.is-white:active .file-cta,html.theme--catppuccin-latte .file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-latte .file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-black:hover .file-cta,html.theme--catppuccin-latte .file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-black:focus .file-cta,html.theme--catppuccin-latte .file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(10,10,10,0.25);color:#fff}html.theme--catppuccin-latte .file.is-black:active .file-cta,html.theme--catppuccin-latte .file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .file.is-light:hover .file-cta,html.theme--catppuccin-latte .file.is-light.is-hovered .file-cta{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .file.is-light:focus .file-cta,html.theme--catppuccin-latte .file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(245,245,245,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .file.is-light:active .file-cta,html.theme--catppuccin-latte .file.is-light.is-active .file-cta{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .file.is-dark .file-cta,html.theme--catppuccin-latte .content kbd.file .file-cta{background-color:#ccd0da;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .file.is-dark:hover .file-cta,html.theme--catppuccin-latte .content kbd.file:hover .file-cta,html.theme--catppuccin-latte .file.is-dark.is-hovered .file-cta,html.theme--catppuccin-latte .content kbd.file.is-hovered .file-cta{background-color:#c5c9d5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .file.is-dark:focus .file-cta,html.theme--catppuccin-latte .content kbd.file:focus .file-cta,html.theme--catppuccin-latte .file.is-dark.is-focused .file-cta,html.theme--catppuccin-latte .content kbd.file.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(204,208,218,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .file.is-dark:active .file-cta,html.theme--catppuccin-latte .content kbd.file:active .file-cta,html.theme--catppuccin-latte .file.is-dark.is-active .file-cta,html.theme--catppuccin-latte .content kbd.file.is-active .file-cta{background-color:#bdc2cf;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .file.is-primary .file-cta,html.theme--catppuccin-latte .docstring>section>a.file.docs-sourcelink .file-cta{background-color:#1e66f5;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-primary:hover .file-cta,html.theme--catppuccin-latte .docstring>section>a.file.docs-sourcelink:hover .file-cta,html.theme--catppuccin-latte .file.is-primary.is-hovered .file-cta,html.theme--catppuccin-latte .docstring>section>a.file.is-hovered.docs-sourcelink .file-cta{background-color:#125ef4;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-primary:focus .file-cta,html.theme--catppuccin-latte .docstring>section>a.file.docs-sourcelink:focus .file-cta,html.theme--catppuccin-latte .file.is-primary.is-focused .file-cta,html.theme--catppuccin-latte .docstring>section>a.file.is-focused.docs-sourcelink .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(30,102,245,0.25);color:#fff}html.theme--catppuccin-latte .file.is-primary:active .file-cta,html.theme--catppuccin-latte .docstring>section>a.file.docs-sourcelink:active .file-cta,html.theme--catppuccin-latte .file.is-primary.is-active .file-cta,html.theme--catppuccin-latte .docstring>section>a.file.is-active.docs-sourcelink .file-cta{background-color:#0b57ef;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-link .file-cta{background-color:#1e66f5;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-link:hover .file-cta,html.theme--catppuccin-latte .file.is-link.is-hovered .file-cta{background-color:#125ef4;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-link:focus .file-cta,html.theme--catppuccin-latte .file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(30,102,245,0.25);color:#fff}html.theme--catppuccin-latte .file.is-link:active .file-cta,html.theme--catppuccin-latte .file.is-link.is-active .file-cta{background-color:#0b57ef;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-info .file-cta{background-color:#179299;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-info:hover .file-cta,html.theme--catppuccin-latte .file.is-info.is-hovered .file-cta{background-color:#15878e;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-info:focus .file-cta,html.theme--catppuccin-latte .file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(23,146,153,0.25);color:#fff}html.theme--catppuccin-latte .file.is-info:active .file-cta,html.theme--catppuccin-latte .file.is-info.is-active .file-cta{background-color:#147d83;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-success .file-cta{background-color:#40a02b;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-success:hover .file-cta,html.theme--catppuccin-latte .file.is-success.is-hovered .file-cta{background-color:#3c9628;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-success:focus .file-cta,html.theme--catppuccin-latte .file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(64,160,43,0.25);color:#fff}html.theme--catppuccin-latte .file.is-success:active .file-cta,html.theme--catppuccin-latte .file.is-success.is-active .file-cta{background-color:#388c26;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-warning .file-cta{background-color:#df8e1d;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-warning:hover .file-cta,html.theme--catppuccin-latte .file.is-warning.is-hovered .file-cta{background-color:#d4871c;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-warning:focus .file-cta,html.theme--catppuccin-latte .file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(223,142,29,0.25);color:#fff}html.theme--catppuccin-latte .file.is-warning:active .file-cta,html.theme--catppuccin-latte .file.is-warning.is-active .file-cta{background-color:#c8801a;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-danger .file-cta{background-color:#d20f39;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-danger:hover .file-cta,html.theme--catppuccin-latte .file.is-danger.is-hovered .file-cta{background-color:#c60e36;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-danger:focus .file-cta,html.theme--catppuccin-latte .file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(210,15,57,0.25);color:#fff}html.theme--catppuccin-latte .file.is-danger:active .file-cta,html.theme--catppuccin-latte .file.is-danger.is-active .file-cta{background-color:#ba0d33;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.file{font-size:.75rem}html.theme--catppuccin-latte .file.is-normal{font-size:1rem}html.theme--catppuccin-latte .file.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .file.is-medium .file-icon .fa{font-size:21px}html.theme--catppuccin-latte .file.is-large{font-size:1.5rem}html.theme--catppuccin-latte .file.is-large .file-icon .fa{font-size:28px}html.theme--catppuccin-latte .file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--catppuccin-latte .file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-latte .file.has-name.is-empty .file-cta{border-radius:.4em}html.theme--catppuccin-latte .file.has-name.is-empty .file-name{display:none}html.theme--catppuccin-latte .file.is-boxed .file-label{flex-direction:column}html.theme--catppuccin-latte .file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}html.theme--catppuccin-latte .file.is-boxed .file-name{border-width:0 1px 1px}html.theme--catppuccin-latte .file.is-boxed .file-icon{height:1.5em;width:1.5em}html.theme--catppuccin-latte .file.is-boxed .file-icon .fa{font-size:21px}html.theme--catppuccin-latte .file.is-boxed.is-small .file-icon .fa,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-boxed .file-icon .fa{font-size:14px}html.theme--catppuccin-latte .file.is-boxed.is-medium .file-icon .fa{font-size:28px}html.theme--catppuccin-latte .file.is-boxed.is-large .file-icon .fa{font-size:35px}html.theme--catppuccin-latte .file.is-boxed.has-name .file-cta{border-radius:.4em .4em 0 0}html.theme--catppuccin-latte .file.is-boxed.has-name .file-name{border-radius:0 0 .4em .4em;border-width:0 1px 1px}html.theme--catppuccin-latte .file.is-centered{justify-content:center}html.theme--catppuccin-latte .file.is-fullwidth .file-label{width:100%}html.theme--catppuccin-latte .file.is-fullwidth .file-name{flex-grow:1;max-width:none}html.theme--catppuccin-latte .file.is-right{justify-content:flex-end}html.theme--catppuccin-latte .file.is-right .file-cta{border-radius:0 .4em .4em 0}html.theme--catppuccin-latte .file.is-right .file-name{border-radius:.4em 0 0 .4em;border-width:1px 0 1px 1px;order:-1}html.theme--catppuccin-latte .file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}html.theme--catppuccin-latte .file-label:hover .file-cta{background-color:#c5c9d5;color:#41445a}html.theme--catppuccin-latte .file-label:hover .file-name{border-color:#a5a9b8}html.theme--catppuccin-latte .file-label:active .file-cta{background-color:#bdc2cf;color:#41445a}html.theme--catppuccin-latte .file-label:active .file-name{border-color:#9ea2b3}html.theme--catppuccin-latte .file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}html.theme--catppuccin-latte .file-cta,html.theme--catppuccin-latte .file-name{border-color:#acb0be;border-radius:.4em;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}html.theme--catppuccin-latte .file-cta{background-color:#ccd0da;color:#4c4f69}html.theme--catppuccin-latte .file-name{border-color:#acb0be;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}html.theme--catppuccin-latte .file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}html.theme--catppuccin-latte .file-icon .fa{font-size:14px}html.theme--catppuccin-latte .label{color:#41445a;display:block;font-size:1rem;font-weight:700}html.theme--catppuccin-latte .label:not(:last-child){margin-bottom:0.5em}html.theme--catppuccin-latte .label.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.label{font-size:.75rem}html.theme--catppuccin-latte .label.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .label.is-large{font-size:1.5rem}html.theme--catppuccin-latte .help{display:block;font-size:.75rem;margin-top:0.25rem}html.theme--catppuccin-latte .help.is-white{color:#fff}html.theme--catppuccin-latte .help.is-black{color:#0a0a0a}html.theme--catppuccin-latte .help.is-light{color:#f5f5f5}html.theme--catppuccin-latte .help.is-dark,html.theme--catppuccin-latte .content kbd.help{color:#ccd0da}html.theme--catppuccin-latte .help.is-primary,html.theme--catppuccin-latte .docstring>section>a.help.docs-sourcelink{color:#1e66f5}html.theme--catppuccin-latte .help.is-link{color:#1e66f5}html.theme--catppuccin-latte .help.is-info{color:#179299}html.theme--catppuccin-latte .help.is-success{color:#40a02b}html.theme--catppuccin-latte .help.is-warning{color:#df8e1d}html.theme--catppuccin-latte .help.is-danger{color:#d20f39}html.theme--catppuccin-latte .field:not(:last-child){margin-bottom:0.75rem}html.theme--catppuccin-latte .field.has-addons{display:flex;justify-content:flex-start}html.theme--catppuccin-latte .field.has-addons .control:not(:last-child){margin-right:-1px}html.theme--catppuccin-latte .field.has-addons .control:not(:first-child):not(:last-child) .button,html.theme--catppuccin-latte .field.has-addons .control:not(:first-child):not(:last-child) .input,html.theme--catppuccin-latte .field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search>input,html.theme--catppuccin-latte .field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}html.theme--catppuccin-latte .field.has-addons .control:first-child:not(:only-child) .button,html.theme--catppuccin-latte .field.has-addons .control:first-child:not(:only-child) .input,html.theme--catppuccin-latte .field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search>input,html.theme--catppuccin-latte .field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--catppuccin-latte .field.has-addons .control:last-child:not(:only-child) .button,html.theme--catppuccin-latte .field.has-addons .control:last-child:not(:only-child) .input,html.theme--catppuccin-latte .field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search>input,html.theme--catppuccin-latte .field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-latte .field.has-addons .control .button:not([disabled]):hover,html.theme--catppuccin-latte .field.has-addons .control .button.is-hovered:not([disabled]),html.theme--catppuccin-latte .field.has-addons .control .input:not([disabled]):hover,html.theme--catppuccin-latte .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):hover,html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):hover,html.theme--catppuccin-latte .field.has-addons .control .input.is-hovered:not([disabled]),html.theme--catppuccin-latte .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-hovered:not([disabled]),html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-hovered:not([disabled]),html.theme--catppuccin-latte .field.has-addons .control .select select:not([disabled]):hover,html.theme--catppuccin-latte .field.has-addons .control .select select.is-hovered:not([disabled]){z-index:2}html.theme--catppuccin-latte .field.has-addons .control .button:not([disabled]):focus,html.theme--catppuccin-latte .field.has-addons .control .button.is-focused:not([disabled]),html.theme--catppuccin-latte .field.has-addons .control .button:not([disabled]):active,html.theme--catppuccin-latte .field.has-addons .control .button.is-active:not([disabled]),html.theme--catppuccin-latte .field.has-addons .control .input:not([disabled]):focus,html.theme--catppuccin-latte .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus,html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus,html.theme--catppuccin-latte .field.has-addons .control .input.is-focused:not([disabled]),html.theme--catppuccin-latte .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]),html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]),html.theme--catppuccin-latte .field.has-addons .control .input:not([disabled]):active,html.theme--catppuccin-latte .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active,html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active,html.theme--catppuccin-latte .field.has-addons .control .input.is-active:not([disabled]),html.theme--catppuccin-latte .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]),html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]),html.theme--catppuccin-latte .field.has-addons .control .select select:not([disabled]):focus,html.theme--catppuccin-latte .field.has-addons .control .select select.is-focused:not([disabled]),html.theme--catppuccin-latte .field.has-addons .control .select select:not([disabled]):active,html.theme--catppuccin-latte .field.has-addons .control .select select.is-active:not([disabled]){z-index:3}html.theme--catppuccin-latte .field.has-addons .control .button:not([disabled]):focus:hover,html.theme--catppuccin-latte .field.has-addons .control .button.is-focused:not([disabled]):hover,html.theme--catppuccin-latte .field.has-addons .control .button:not([disabled]):active:hover,html.theme--catppuccin-latte .field.has-addons .control .button.is-active:not([disabled]):hover,html.theme--catppuccin-latte .field.has-addons .control .input:not([disabled]):focus:hover,html.theme--catppuccin-latte .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus:hover,html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus:hover,html.theme--catppuccin-latte .field.has-addons .control .input.is-focused:not([disabled]):hover,html.theme--catppuccin-latte .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]):hover,html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]):hover,html.theme--catppuccin-latte .field.has-addons .control .input:not([disabled]):active:hover,html.theme--catppuccin-latte .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active:hover,html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active:hover,html.theme--catppuccin-latte .field.has-addons .control .input.is-active:not([disabled]):hover,html.theme--catppuccin-latte .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]):hover,html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]):hover,html.theme--catppuccin-latte .field.has-addons .control .select select:not([disabled]):focus:hover,html.theme--catppuccin-latte .field.has-addons .control .select select.is-focused:not([disabled]):hover,html.theme--catppuccin-latte .field.has-addons .control .select select:not([disabled]):active:hover,html.theme--catppuccin-latte .field.has-addons .control .select select.is-active:not([disabled]):hover{z-index:4}html.theme--catppuccin-latte .field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-latte .field.has-addons.has-addons-centered{justify-content:center}html.theme--catppuccin-latte .field.has-addons.has-addons-right{justify-content:flex-end}html.theme--catppuccin-latte .field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}html.theme--catppuccin-latte .field.is-grouped{display:flex;justify-content:flex-start}html.theme--catppuccin-latte .field.is-grouped>.control{flex-shrink:0}html.theme--catppuccin-latte .field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--catppuccin-latte .field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-latte .field.is-grouped.is-grouped-centered{justify-content:center}html.theme--catppuccin-latte .field.is-grouped.is-grouped-right{justify-content:flex-end}html.theme--catppuccin-latte .field.is-grouped.is-grouped-multiline{flex-wrap:wrap}html.theme--catppuccin-latte .field.is-grouped.is-grouped-multiline>.control:last-child,html.theme--catppuccin-latte .field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:0.75rem}html.theme--catppuccin-latte .field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}html.theme--catppuccin-latte .field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .field.is-horizontal{display:flex}}html.theme--catppuccin-latte .field-label .label{font-size:inherit}@media screen and (max-width: 768px){html.theme--catppuccin-latte .field-label{margin-bottom:0.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}html.theme--catppuccin-latte .field-label.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.field-label{font-size:.75rem;padding-top:0.375em}html.theme--catppuccin-latte .field-label.is-normal{padding-top:0.375em}html.theme--catppuccin-latte .field-label.is-medium{font-size:1.25rem;padding-top:0.375em}html.theme--catppuccin-latte .field-label.is-large{font-size:1.5rem;padding-top:0.375em}}html.theme--catppuccin-latte .field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}html.theme--catppuccin-latte .field-body .field{margin-bottom:0}html.theme--catppuccin-latte .field-body>.field{flex-shrink:1}html.theme--catppuccin-latte .field-body>.field:not(.is-narrow){flex-grow:1}html.theme--catppuccin-latte .field-body>.field:not(:last-child){margin-right:.75rem}}html.theme--catppuccin-latte .control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}html.theme--catppuccin-latte .control.has-icons-left .input:focus~.icon,html.theme--catppuccin-latte .control.has-icons-left #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--catppuccin-latte #documenter .docs-sidebar .control.has-icons-left form.docs-search>input:focus~.icon,html.theme--catppuccin-latte .control.has-icons-left .select:focus~.icon,html.theme--catppuccin-latte .control.has-icons-right .input:focus~.icon,html.theme--catppuccin-latte .control.has-icons-right #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--catppuccin-latte #documenter .docs-sidebar .control.has-icons-right form.docs-search>input:focus~.icon,html.theme--catppuccin-latte .control.has-icons-right .select:focus~.icon{color:#ccd0da}html.theme--catppuccin-latte .control.has-icons-left .input.is-small~.icon,html.theme--catppuccin-latte .control.has-icons-left #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--catppuccin-latte #documenter .docs-sidebar .control.has-icons-left form.docs-search>input~.icon,html.theme--catppuccin-latte .control.has-icons-left .select.is-small~.icon,html.theme--catppuccin-latte .control.has-icons-right .input.is-small~.icon,html.theme--catppuccin-latte .control.has-icons-right #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--catppuccin-latte #documenter .docs-sidebar .control.has-icons-right form.docs-search>input~.icon,html.theme--catppuccin-latte .control.has-icons-right .select.is-small~.icon{font-size:.75rem}html.theme--catppuccin-latte .control.has-icons-left .input.is-medium~.icon,html.theme--catppuccin-latte .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--catppuccin-latte #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-medium~.icon,html.theme--catppuccin-latte .control.has-icons-left .select.is-medium~.icon,html.theme--catppuccin-latte .control.has-icons-right .input.is-medium~.icon,html.theme--catppuccin-latte .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--catppuccin-latte #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-medium~.icon,html.theme--catppuccin-latte .control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}html.theme--catppuccin-latte .control.has-icons-left .input.is-large~.icon,html.theme--catppuccin-latte .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--catppuccin-latte #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-large~.icon,html.theme--catppuccin-latte .control.has-icons-left .select.is-large~.icon,html.theme--catppuccin-latte .control.has-icons-right .input.is-large~.icon,html.theme--catppuccin-latte .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--catppuccin-latte #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-large~.icon,html.theme--catppuccin-latte .control.has-icons-right .select.is-large~.icon{font-size:1.5rem}html.theme--catppuccin-latte .control.has-icons-left .icon,html.theme--catppuccin-latte .control.has-icons-right .icon{color:#acb0be;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}html.theme--catppuccin-latte .control.has-icons-left .input,html.theme--catppuccin-latte .control.has-icons-left #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-latte #documenter .docs-sidebar .control.has-icons-left form.docs-search>input,html.theme--catppuccin-latte .control.has-icons-left .select select{padding-left:2.5em}html.theme--catppuccin-latte .control.has-icons-left .icon.is-left{left:0}html.theme--catppuccin-latte .control.has-icons-right .input,html.theme--catppuccin-latte .control.has-icons-right #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-latte #documenter .docs-sidebar .control.has-icons-right form.docs-search>input,html.theme--catppuccin-latte .control.has-icons-right .select select{padding-right:2.5em}html.theme--catppuccin-latte .control.has-icons-right .icon.is-right{right:0}html.theme--catppuccin-latte .control.is-loading::after{position:absolute !important;right:.625em;top:0.625em;z-index:4}html.theme--catppuccin-latte .control.is-loading.is-small:after,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--catppuccin-latte .control.is-loading.is-medium:after{font-size:1.25rem}html.theme--catppuccin-latte .control.is-loading.is-large:after{font-size:1.5rem}html.theme--catppuccin-latte .breadcrumb{font-size:1rem;white-space:nowrap}html.theme--catppuccin-latte .breadcrumb a{align-items:center;color:#1e66f5;display:flex;justify-content:center;padding:0 .75em}html.theme--catppuccin-latte .breadcrumb a:hover{color:#04a5e5}html.theme--catppuccin-latte .breadcrumb li{align-items:center;display:flex}html.theme--catppuccin-latte .breadcrumb li:first-child a{padding-left:0}html.theme--catppuccin-latte .breadcrumb li.is-active a{color:#41445a;cursor:default;pointer-events:none}html.theme--catppuccin-latte .breadcrumb li+li::before{color:#9ca0b0;content:"\0002f"}html.theme--catppuccin-latte .breadcrumb ul,html.theme--catppuccin-latte .breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-latte .breadcrumb .icon:first-child{margin-right:.5em}html.theme--catppuccin-latte .breadcrumb .icon:last-child{margin-left:.5em}html.theme--catppuccin-latte .breadcrumb.is-centered ol,html.theme--catppuccin-latte .breadcrumb.is-centered ul{justify-content:center}html.theme--catppuccin-latte .breadcrumb.is-right ol,html.theme--catppuccin-latte .breadcrumb.is-right ul{justify-content:flex-end}html.theme--catppuccin-latte .breadcrumb.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.breadcrumb{font-size:.75rem}html.theme--catppuccin-latte .breadcrumb.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .breadcrumb.is-large{font-size:1.5rem}html.theme--catppuccin-latte .breadcrumb.has-arrow-separator li+li::before{content:"\02192"}html.theme--catppuccin-latte .breadcrumb.has-bullet-separator li+li::before{content:"\02022"}html.theme--catppuccin-latte .breadcrumb.has-dot-separator li+li::before{content:"\000b7"}html.theme--catppuccin-latte .breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}html.theme--catppuccin-latte .card{background-color:#fff;border-radius:.25rem;box-shadow:#171717;color:#4c4f69;max-width:100%;position:relative}html.theme--catppuccin-latte .card-footer:first-child,html.theme--catppuccin-latte .card-content:first-child,html.theme--catppuccin-latte .card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--catppuccin-latte .card-footer:last-child,html.theme--catppuccin-latte .card-content:last-child,html.theme--catppuccin-latte .card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--catppuccin-latte .card-header{background-color:rgba(0,0,0,0);align-items:stretch;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);display:flex}html.theme--catppuccin-latte .card-header-title{align-items:center;color:#41445a;display:flex;flex-grow:1;font-weight:700;padding:0.75rem 1rem}html.theme--catppuccin-latte .card-header-title.is-centered{justify-content:center}html.theme--catppuccin-latte .card-header-icon{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0;align-items:center;cursor:pointer;display:flex;justify-content:center;padding:0.75rem 1rem}html.theme--catppuccin-latte .card-image{display:block;position:relative}html.theme--catppuccin-latte .card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--catppuccin-latte .card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--catppuccin-latte .card-content{background-color:rgba(0,0,0,0);padding:1.5rem}html.theme--catppuccin-latte .card-footer{background-color:rgba(0,0,0,0);border-top:1px solid #ededed;align-items:stretch;display:flex}html.theme--catppuccin-latte .card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}html.theme--catppuccin-latte .card-footer-item:not(:last-child){border-right:1px solid #ededed}html.theme--catppuccin-latte .card .media:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-latte .dropdown{display:inline-flex;position:relative;vertical-align:top}html.theme--catppuccin-latte .dropdown.is-active .dropdown-menu,html.theme--catppuccin-latte .dropdown.is-hoverable:hover .dropdown-menu{display:block}html.theme--catppuccin-latte .dropdown.is-right .dropdown-menu{left:auto;right:0}html.theme--catppuccin-latte .dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}html.theme--catppuccin-latte .dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}html.theme--catppuccin-latte .dropdown-content{background-color:#e6e9ef;border-radius:.4em;box-shadow:#171717;padding-bottom:.5rem;padding-top:.5rem}html.theme--catppuccin-latte .dropdown-item{color:#4c4f69;display:block;font-size:0.875rem;line-height:1.5;padding:0.375rem 1rem;position:relative}html.theme--catppuccin-latte a.dropdown-item,html.theme--catppuccin-latte button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}html.theme--catppuccin-latte a.dropdown-item:hover,html.theme--catppuccin-latte button.dropdown-item:hover{background-color:#e6e9ef;color:#0a0a0a}html.theme--catppuccin-latte a.dropdown-item.is-active,html.theme--catppuccin-latte button.dropdown-item.is-active{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:0.5rem 0}html.theme--catppuccin-latte .level{align-items:center;justify-content:space-between}html.theme--catppuccin-latte .level code{border-radius:.4em}html.theme--catppuccin-latte .level img{display:inline-block;vertical-align:top}html.theme--catppuccin-latte .level.is-mobile{display:flex}html.theme--catppuccin-latte .level.is-mobile .level-left,html.theme--catppuccin-latte .level.is-mobile .level-right{display:flex}html.theme--catppuccin-latte .level.is-mobile .level-left+.level-right{margin-top:0}html.theme--catppuccin-latte .level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--catppuccin-latte .level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .level{display:flex}html.theme--catppuccin-latte .level>.level-item:not(.is-narrow){flex-grow:1}}html.theme--catppuccin-latte .level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}html.theme--catppuccin-latte .level-item .title,html.theme--catppuccin-latte .level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){html.theme--catppuccin-latte .level-item:not(:last-child){margin-bottom:.75rem}}html.theme--catppuccin-latte .level-left,html.theme--catppuccin-latte .level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--catppuccin-latte .level-left .level-item.is-flexible,html.theme--catppuccin-latte .level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .level-left .level-item:not(:last-child),html.theme--catppuccin-latte .level-right .level-item:not(:last-child){margin-right:.75rem}}html.theme--catppuccin-latte .level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){html.theme--catppuccin-latte .level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .level-left{display:flex}}html.theme--catppuccin-latte .level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .level-right{display:flex}}html.theme--catppuccin-latte .media{align-items:flex-start;display:flex;text-align:inherit}html.theme--catppuccin-latte .media .content:not(:last-child){margin-bottom:.75rem}html.theme--catppuccin-latte .media .media{border-top:1px solid rgba(172,176,190,0.5);display:flex;padding-top:.75rem}html.theme--catppuccin-latte .media .media .content:not(:last-child),html.theme--catppuccin-latte .media .media .control:not(:last-child){margin-bottom:.5rem}html.theme--catppuccin-latte .media .media .media{padding-top:.5rem}html.theme--catppuccin-latte .media .media .media+.media{margin-top:.5rem}html.theme--catppuccin-latte .media+.media{border-top:1px solid rgba(172,176,190,0.5);margin-top:1rem;padding-top:1rem}html.theme--catppuccin-latte .media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}html.theme--catppuccin-latte .media-left,html.theme--catppuccin-latte .media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--catppuccin-latte .media-left{margin-right:1rem}html.theme--catppuccin-latte .media-right{margin-left:1rem}html.theme--catppuccin-latte .media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width: 768px){html.theme--catppuccin-latte .media-content{overflow-x:auto}}html.theme--catppuccin-latte .menu{font-size:1rem}html.theme--catppuccin-latte .menu.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.menu{font-size:.75rem}html.theme--catppuccin-latte .menu.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .menu.is-large{font-size:1.5rem}html.theme--catppuccin-latte .menu-list{line-height:1.25}html.theme--catppuccin-latte .menu-list a{border-radius:3px;color:#4c4f69;display:block;padding:0.5em 0.75em}html.theme--catppuccin-latte .menu-list a:hover{background-color:#e6e9ef;color:#41445a}html.theme--catppuccin-latte .menu-list a.is-active{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .menu-list li ul{border-left:1px solid #acb0be;margin:.75em;padding-left:.75em}html.theme--catppuccin-latte .menu-label{color:#616587;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}html.theme--catppuccin-latte .menu-label:not(:first-child){margin-top:1em}html.theme--catppuccin-latte .menu-label:not(:last-child){margin-bottom:1em}html.theme--catppuccin-latte .message{background-color:#e6e9ef;border-radius:.4em;font-size:1rem}html.theme--catppuccin-latte .message strong{color:currentColor}html.theme--catppuccin-latte .message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--catppuccin-latte .message.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.message{font-size:.75rem}html.theme--catppuccin-latte .message.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .message.is-large{font-size:1.5rem}html.theme--catppuccin-latte .message.is-white{background-color:#fff}html.theme--catppuccin-latte .message.is-white .message-header{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-latte .message.is-white .message-body{border-color:#fff}html.theme--catppuccin-latte .message.is-black{background-color:#fafafa}html.theme--catppuccin-latte .message.is-black .message-header{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-latte .message.is-black .message-body{border-color:#0a0a0a}html.theme--catppuccin-latte .message.is-light{background-color:#fafafa}html.theme--catppuccin-latte .message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .message.is-light .message-body{border-color:#f5f5f5}html.theme--catppuccin-latte .message.is-dark,html.theme--catppuccin-latte .content kbd.message{background-color:#f9fafb}html.theme--catppuccin-latte .message.is-dark .message-header,html.theme--catppuccin-latte .content kbd.message .message-header{background-color:#ccd0da;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .message.is-dark .message-body,html.theme--catppuccin-latte .content kbd.message .message-body{border-color:#ccd0da}html.theme--catppuccin-latte .message.is-primary,html.theme--catppuccin-latte .docstring>section>a.message.docs-sourcelink{background-color:#ebf2fe}html.theme--catppuccin-latte .message.is-primary .message-header,html.theme--catppuccin-latte .docstring>section>a.message.docs-sourcelink .message-header{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .message.is-primary .message-body,html.theme--catppuccin-latte .docstring>section>a.message.docs-sourcelink .message-body{border-color:#1e66f5;color:#0a52e1}html.theme--catppuccin-latte .message.is-link{background-color:#ebf2fe}html.theme--catppuccin-latte .message.is-link .message-header{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .message.is-link .message-body{border-color:#1e66f5;color:#0a52e1}html.theme--catppuccin-latte .message.is-info{background-color:#edfcfc}html.theme--catppuccin-latte .message.is-info .message-header{background-color:#179299;color:#fff}html.theme--catppuccin-latte .message.is-info .message-body{border-color:#179299;color:#1cb2ba}html.theme--catppuccin-latte .message.is-success{background-color:#f1fbef}html.theme--catppuccin-latte .message.is-success .message-header{background-color:#40a02b;color:#fff}html.theme--catppuccin-latte .message.is-success .message-body{border-color:#40a02b;color:#40a12b}html.theme--catppuccin-latte .message.is-warning{background-color:#fdf6ed}html.theme--catppuccin-latte .message.is-warning .message-header{background-color:#df8e1d;color:#fff}html.theme--catppuccin-latte .message.is-warning .message-body{border-color:#df8e1d;color:#9e6515}html.theme--catppuccin-latte .message.is-danger{background-color:#feecf0}html.theme--catppuccin-latte .message.is-danger .message-header{background-color:#d20f39;color:#fff}html.theme--catppuccin-latte .message.is-danger .message-body{border-color:#d20f39;color:#e9113f}html.theme--catppuccin-latte .message-header{align-items:center;background-color:#4c4f69;border-radius:.4em .4em 0 0;color:#fff;display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.75em 1em;position:relative}html.theme--catppuccin-latte .message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}html.theme--catppuccin-latte .message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}html.theme--catppuccin-latte .message-body{border-color:#acb0be;border-radius:.4em;border-style:solid;border-width:0 0 0 4px;color:#4c4f69;padding:1.25em 1.5em}html.theme--catppuccin-latte .message-body code,html.theme--catppuccin-latte .message-body pre{background-color:#fff}html.theme--catppuccin-latte .message-body pre code{background-color:rgba(0,0,0,0)}html.theme--catppuccin-latte .modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}html.theme--catppuccin-latte .modal.is-active{display:flex}html.theme--catppuccin-latte .modal-background{background-color:rgba(10,10,10,0.86)}html.theme--catppuccin-latte .modal-content,html.theme--catppuccin-latte .modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px){html.theme--catppuccin-latte .modal-content,html.theme--catppuccin-latte .modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}html.theme--catppuccin-latte .modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}html.theme--catppuccin-latte .modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}html.theme--catppuccin-latte .modal-card-head,html.theme--catppuccin-latte .modal-card-foot{align-items:center;background-color:#e6e9ef;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}html.theme--catppuccin-latte .modal-card-head{border-bottom:1px solid #acb0be;border-top-left-radius:8px;border-top-right-radius:8px}html.theme--catppuccin-latte .modal-card-title{color:#4c4f69;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}html.theme--catppuccin-latte .modal-card-foot{border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid #acb0be}html.theme--catppuccin-latte .modal-card-foot .button:not(:last-child){margin-right:.5em}html.theme--catppuccin-latte .modal-card-body{-webkit-overflow-scrolling:touch;background-color:#eff1f5;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}html.theme--catppuccin-latte .navbar{background-color:#1e66f5;min-height:4rem;position:relative;z-index:30}html.theme--catppuccin-latte .navbar.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-latte .navbar.is-white .navbar-brand>.navbar-item,html.theme--catppuccin-latte .navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}html.theme--catppuccin-latte .navbar.is-white .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-white .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-white .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-white .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-white .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-latte .navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}html.theme--catppuccin-latte .navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .navbar.is-white .navbar-start>.navbar-item,html.theme--catppuccin-latte .navbar.is-white .navbar-start .navbar-link,html.theme--catppuccin-latte .navbar.is-white .navbar-end>.navbar-item,html.theme--catppuccin-latte .navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}html.theme--catppuccin-latte .navbar.is-white .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-white .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-white .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-white .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-white .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-white .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .navbar.is-white .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-white .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-white .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-white .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-white .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-latte .navbar.is-white .navbar-start .navbar-link::after,html.theme--catppuccin-latte .navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}html.theme--catppuccin-latte .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-latte .navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}html.theme--catppuccin-latte .navbar.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-latte .navbar.is-black .navbar-brand>.navbar-item,html.theme--catppuccin-latte .navbar.is-black .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-black .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-black .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-black .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-black .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-black .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-latte .navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .navbar.is-black .navbar-start>.navbar-item,html.theme--catppuccin-latte .navbar.is-black .navbar-start .navbar-link,html.theme--catppuccin-latte .navbar.is-black .navbar-end>.navbar-item,html.theme--catppuccin-latte .navbar.is-black .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-black .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-black .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-black .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-black .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-black .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-black .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .navbar.is-black .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-black .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-black .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-black .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-black .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-latte .navbar.is-black .navbar-start .navbar-link::after,html.theme--catppuccin-latte .navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}html.theme--catppuccin-latte .navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}html.theme--catppuccin-latte .navbar.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-light .navbar-brand>.navbar-item,html.theme--catppuccin-latte .navbar.is-light .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-light .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-light .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-light .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-light .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-light .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-light .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .navbar.is-light .navbar-start>.navbar-item,html.theme--catppuccin-latte .navbar.is-light .navbar-start .navbar-link,html.theme--catppuccin-latte .navbar.is-light .navbar-end>.navbar-item,html.theme--catppuccin-latte .navbar.is-light .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-light .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-light .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-light .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-light .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-light .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-light .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .navbar.is-light .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-light .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-light .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-light .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-light .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-light .navbar-end .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-light .navbar-start .navbar-link::after,html.theme--catppuccin-latte .navbar.is-light .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-latte .navbar.is-dark,html.theme--catppuccin-latte .content kbd.navbar{background-color:#ccd0da;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-dark .navbar-brand>.navbar-item,html.theme--catppuccin-latte .content kbd.navbar .navbar-brand>.navbar-item,html.theme--catppuccin-latte .navbar.is-dark .navbar-brand .navbar-link,html.theme--catppuccin-latte .content kbd.navbar .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-dark .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .content kbd.navbar .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-dark .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .content kbd.navbar .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-dark .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .content kbd.navbar .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-dark .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .content kbd.navbar .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-dark .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .content kbd.navbar .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-dark .navbar-brand .navbar-link.is-active,html.theme--catppuccin-latte .content kbd.navbar .navbar-brand .navbar-link.is-active{background-color:#bdc2cf;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-dark .navbar-brand .navbar-link::after,html.theme--catppuccin-latte .content kbd.navbar .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-dark .navbar-burger,html.theme--catppuccin-latte .content kbd.navbar .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .navbar.is-dark .navbar-start>.navbar-item,html.theme--catppuccin-latte .content kbd.navbar .navbar-start>.navbar-item,html.theme--catppuccin-latte .navbar.is-dark .navbar-start .navbar-link,html.theme--catppuccin-latte .content kbd.navbar .navbar-start .navbar-link,html.theme--catppuccin-latte .navbar.is-dark .navbar-end>.navbar-item,html.theme--catppuccin-latte .content kbd.navbar .navbar-end>.navbar-item,html.theme--catppuccin-latte .navbar.is-dark .navbar-end .navbar-link,html.theme--catppuccin-latte .content kbd.navbar .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-dark .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .content kbd.navbar .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-dark .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .content kbd.navbar .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-dark .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .content kbd.navbar .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-dark .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .content kbd.navbar .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-dark .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .content kbd.navbar .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-dark .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .content kbd.navbar .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .navbar.is-dark .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .content kbd.navbar .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-dark .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .content kbd.navbar .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-dark .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .content kbd.navbar .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-dark .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .content kbd.navbar .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-dark .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .content kbd.navbar .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-dark .navbar-end .navbar-link.is-active,html.theme--catppuccin-latte .content kbd.navbar .navbar-end .navbar-link.is-active{background-color:#bdc2cf;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-dark .navbar-start .navbar-link::after,html.theme--catppuccin-latte .content kbd.navbar .navbar-start .navbar-link::after,html.theme--catppuccin-latte .navbar.is-dark .navbar-end .navbar-link::after,html.theme--catppuccin-latte .content kbd.navbar .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-latte .content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link{background-color:#bdc2cf;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-dark .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-latte .content kbd.navbar .navbar-dropdown a.navbar-item.is-active{background-color:#ccd0da;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-latte .navbar.is-primary,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .navbar.is-primary .navbar-brand>.navbar-item,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-brand>.navbar-item,html.theme--catppuccin-latte .navbar.is-primary .navbar-brand .navbar-link,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-primary .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-primary .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-primary .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-primary .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-primary .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-primary .navbar-brand .navbar-link.is-active,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active{background-color:#0b57ef;color:#fff}html.theme--catppuccin-latte .navbar.is-primary .navbar-brand .navbar-link::after,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-primary .navbar-burger,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .navbar.is-primary .navbar-start>.navbar-item,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-start>.navbar-item,html.theme--catppuccin-latte .navbar.is-primary .navbar-start .navbar-link,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link,html.theme--catppuccin-latte .navbar.is-primary .navbar-end>.navbar-item,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-end>.navbar-item,html.theme--catppuccin-latte .navbar.is-primary .navbar-end .navbar-link,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-primary .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-primary .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-primary .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-primary .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-primary .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-primary .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .navbar.is-primary .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-primary .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-primary .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-primary .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-primary .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-primary .navbar-end .navbar-link.is-active,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active{background-color:#0b57ef;color:#fff}html.theme--catppuccin-latte .navbar.is-primary .navbar-start .navbar-link::after,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link::after,html.theme--catppuccin-latte .navbar.is-primary .navbar-end .navbar-link::after,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link{background-color:#0b57ef;color:#fff}html.theme--catppuccin-latte .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#1e66f5;color:#fff}}html.theme--catppuccin-latte .navbar.is-link{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .navbar.is-link .navbar-brand>.navbar-item,html.theme--catppuccin-latte .navbar.is-link .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-link .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-link .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-link .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-link .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-link .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#0b57ef;color:#fff}html.theme--catppuccin-latte .navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .navbar.is-link .navbar-start>.navbar-item,html.theme--catppuccin-latte .navbar.is-link .navbar-start .navbar-link,html.theme--catppuccin-latte .navbar.is-link .navbar-end>.navbar-item,html.theme--catppuccin-latte .navbar.is-link .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-link .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-link .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-link .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-link .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-link .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-link .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .navbar.is-link .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-link .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-link .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-link .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-link .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-link .navbar-end .navbar-link.is-active{background-color:#0b57ef;color:#fff}html.theme--catppuccin-latte .navbar.is-link .navbar-start .navbar-link::after,html.theme--catppuccin-latte .navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#0b57ef;color:#fff}html.theme--catppuccin-latte .navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#1e66f5;color:#fff}}html.theme--catppuccin-latte .navbar.is-info{background-color:#179299;color:#fff}html.theme--catppuccin-latte .navbar.is-info .navbar-brand>.navbar-item,html.theme--catppuccin-latte .navbar.is-info .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-info .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-info .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-info .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-info .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-info .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#147d83;color:#fff}html.theme--catppuccin-latte .navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .navbar.is-info .navbar-start>.navbar-item,html.theme--catppuccin-latte .navbar.is-info .navbar-start .navbar-link,html.theme--catppuccin-latte .navbar.is-info .navbar-end>.navbar-item,html.theme--catppuccin-latte .navbar.is-info .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-info .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-info .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-info .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-info .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-info .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-info .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .navbar.is-info .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-info .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-info .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-info .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-info .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-info .navbar-end .navbar-link.is-active{background-color:#147d83;color:#fff}html.theme--catppuccin-latte .navbar.is-info .navbar-start .navbar-link::after,html.theme--catppuccin-latte .navbar.is-info .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#147d83;color:#fff}html.theme--catppuccin-latte .navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#179299;color:#fff}}html.theme--catppuccin-latte .navbar.is-success{background-color:#40a02b;color:#fff}html.theme--catppuccin-latte .navbar.is-success .navbar-brand>.navbar-item,html.theme--catppuccin-latte .navbar.is-success .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-success .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-success .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-success .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-success .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-success .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#388c26;color:#fff}html.theme--catppuccin-latte .navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .navbar.is-success .navbar-start>.navbar-item,html.theme--catppuccin-latte .navbar.is-success .navbar-start .navbar-link,html.theme--catppuccin-latte .navbar.is-success .navbar-end>.navbar-item,html.theme--catppuccin-latte .navbar.is-success .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-success .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-success .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-success .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-success .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-success .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-success .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .navbar.is-success .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-success .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-success .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-success .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-success .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-success .navbar-end .navbar-link.is-active{background-color:#388c26;color:#fff}html.theme--catppuccin-latte .navbar.is-success .navbar-start .navbar-link::after,html.theme--catppuccin-latte .navbar.is-success .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#388c26;color:#fff}html.theme--catppuccin-latte .navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#40a02b;color:#fff}}html.theme--catppuccin-latte .navbar.is-warning{background-color:#df8e1d;color:#fff}html.theme--catppuccin-latte .navbar.is-warning .navbar-brand>.navbar-item,html.theme--catppuccin-latte .navbar.is-warning .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-warning .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-warning .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-warning .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-warning .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-warning .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#c8801a;color:#fff}html.theme--catppuccin-latte .navbar.is-warning .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-warning .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .navbar.is-warning .navbar-start>.navbar-item,html.theme--catppuccin-latte .navbar.is-warning .navbar-start .navbar-link,html.theme--catppuccin-latte .navbar.is-warning .navbar-end>.navbar-item,html.theme--catppuccin-latte .navbar.is-warning .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-warning .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-warning .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-warning .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-warning .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-warning .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-warning .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .navbar.is-warning .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-warning .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-warning .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-warning .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-warning .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#c8801a;color:#fff}html.theme--catppuccin-latte .navbar.is-warning .navbar-start .navbar-link::after,html.theme--catppuccin-latte .navbar.is-warning .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#c8801a;color:#fff}html.theme--catppuccin-latte .navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#df8e1d;color:#fff}}html.theme--catppuccin-latte .navbar.is-danger{background-color:#d20f39;color:#fff}html.theme--catppuccin-latte .navbar.is-danger .navbar-brand>.navbar-item,html.theme--catppuccin-latte .navbar.is-danger .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-danger .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-danger .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-danger .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-danger .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-danger .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#ba0d33;color:#fff}html.theme--catppuccin-latte .navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .navbar.is-danger .navbar-start>.navbar-item,html.theme--catppuccin-latte .navbar.is-danger .navbar-start .navbar-link,html.theme--catppuccin-latte .navbar.is-danger .navbar-end>.navbar-item,html.theme--catppuccin-latte .navbar.is-danger .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-danger .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-danger .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-danger .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-danger .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-danger .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-danger .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .navbar.is-danger .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-danger .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-danger .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-danger .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-danger .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#ba0d33;color:#fff}html.theme--catppuccin-latte .navbar.is-danger .navbar-start .navbar-link::after,html.theme--catppuccin-latte .navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#ba0d33;color:#fff}html.theme--catppuccin-latte .navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#d20f39;color:#fff}}html.theme--catppuccin-latte .navbar>.container{align-items:stretch;display:flex;min-height:4rem;width:100%}html.theme--catppuccin-latte .navbar.has-shadow{box-shadow:0 2px 0 0 #e6e9ef}html.theme--catppuccin-latte .navbar.is-fixed-bottom,html.theme--catppuccin-latte .navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-latte .navbar.is-fixed-bottom{bottom:0}html.theme--catppuccin-latte .navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #e6e9ef}html.theme--catppuccin-latte .navbar.is-fixed-top{top:0}html.theme--catppuccin-latte html.has-navbar-fixed-top,html.theme--catppuccin-latte body.has-navbar-fixed-top{padding-top:4rem}html.theme--catppuccin-latte html.has-navbar-fixed-bottom,html.theme--catppuccin-latte body.has-navbar-fixed-bottom{padding-bottom:4rem}html.theme--catppuccin-latte .navbar-brand,html.theme--catppuccin-latte .navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:4rem}html.theme--catppuccin-latte .navbar-brand a.navbar-item:focus,html.theme--catppuccin-latte .navbar-brand a.navbar-item:hover{background-color:transparent}html.theme--catppuccin-latte .navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}html.theme--catppuccin-latte .navbar-burger{color:#4c4f69;-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:block;height:4rem;position:relative;width:4rem;margin-left:auto}html.theme--catppuccin-latte .navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color, opacity, transform;transition-timing-function:ease-out;width:16px}html.theme--catppuccin-latte .navbar-burger span:nth-child(1){top:calc(50% - 6px)}html.theme--catppuccin-latte .navbar-burger span:nth-child(2){top:calc(50% - 1px)}html.theme--catppuccin-latte .navbar-burger span:nth-child(3){top:calc(50% + 4px)}html.theme--catppuccin-latte .navbar-burger:hover{background-color:rgba(0,0,0,0.05)}html.theme--catppuccin-latte .navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}html.theme--catppuccin-latte .navbar-burger.is-active span:nth-child(2){opacity:0}html.theme--catppuccin-latte .navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}html.theme--catppuccin-latte .navbar-menu{display:none}html.theme--catppuccin-latte .navbar-item,html.theme--catppuccin-latte .navbar-link{color:#4c4f69;display:block;line-height:1.5;padding:0.5rem 0.75rem;position:relative}html.theme--catppuccin-latte .navbar-item .icon:only-child,html.theme--catppuccin-latte .navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}html.theme--catppuccin-latte a.navbar-item,html.theme--catppuccin-latte .navbar-link{cursor:pointer}html.theme--catppuccin-latte a.navbar-item:focus,html.theme--catppuccin-latte a.navbar-item:focus-within,html.theme--catppuccin-latte a.navbar-item:hover,html.theme--catppuccin-latte a.navbar-item.is-active,html.theme--catppuccin-latte .navbar-link:focus,html.theme--catppuccin-latte .navbar-link:focus-within,html.theme--catppuccin-latte .navbar-link:hover,html.theme--catppuccin-latte .navbar-link.is-active{background-color:rgba(0,0,0,0);color:#1e66f5}html.theme--catppuccin-latte .navbar-item{flex-grow:0;flex-shrink:0}html.theme--catppuccin-latte .navbar-item img{max-height:1.75rem}html.theme--catppuccin-latte .navbar-item.has-dropdown{padding:0}html.theme--catppuccin-latte .navbar-item.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-latte .navbar-item.is-tab{border-bottom:1px solid transparent;min-height:4rem;padding-bottom:calc(0.5rem - 1px)}html.theme--catppuccin-latte .navbar-item.is-tab:focus,html.theme--catppuccin-latte .navbar-item.is-tab:hover{background-color:rgba(0,0,0,0);border-bottom-color:#1e66f5}html.theme--catppuccin-latte .navbar-item.is-tab.is-active{background-color:rgba(0,0,0,0);border-bottom-color:#1e66f5;border-bottom-style:solid;border-bottom-width:3px;color:#1e66f5;padding-bottom:calc(0.5rem - 3px)}html.theme--catppuccin-latte .navbar-content{flex-grow:1;flex-shrink:1}html.theme--catppuccin-latte .navbar-link:not(.is-arrowless){padding-right:2.5em}html.theme--catppuccin-latte .navbar-link:not(.is-arrowless)::after{border-color:#fff;margin-top:-0.375em;right:1.125em}html.theme--catppuccin-latte .navbar-dropdown{font-size:0.875rem;padding-bottom:0.5rem;padding-top:0.5rem}html.theme--catppuccin-latte .navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}html.theme--catppuccin-latte .navbar-divider{background-color:rgba(0,0,0,0.2);border:none;display:none;height:2px;margin:0.5rem 0}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .navbar>.container{display:block}html.theme--catppuccin-latte .navbar-brand .navbar-item,html.theme--catppuccin-latte .navbar-tabs .navbar-item{align-items:center;display:flex}html.theme--catppuccin-latte .navbar-link::after{display:none}html.theme--catppuccin-latte .navbar-menu{background-color:#1e66f5;box-shadow:0 8px 16px rgba(10,10,10,0.1);padding:0.5rem 0}html.theme--catppuccin-latte .navbar-menu.is-active{display:block}html.theme--catppuccin-latte .navbar.is-fixed-bottom-touch,html.theme--catppuccin-latte .navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-latte .navbar.is-fixed-bottom-touch{bottom:0}html.theme--catppuccin-latte .navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--catppuccin-latte .navbar.is-fixed-top-touch{top:0}html.theme--catppuccin-latte .navbar.is-fixed-top .navbar-menu,html.theme--catppuccin-latte .navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 4rem);overflow:auto}html.theme--catppuccin-latte html.has-navbar-fixed-top-touch,html.theme--catppuccin-latte body.has-navbar-fixed-top-touch{padding-top:4rem}html.theme--catppuccin-latte html.has-navbar-fixed-bottom-touch,html.theme--catppuccin-latte body.has-navbar-fixed-bottom-touch{padding-bottom:4rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .navbar,html.theme--catppuccin-latte .navbar-menu,html.theme--catppuccin-latte .navbar-start,html.theme--catppuccin-latte .navbar-end{align-items:stretch;display:flex}html.theme--catppuccin-latte .navbar{min-height:4rem}html.theme--catppuccin-latte .navbar.is-spaced{padding:1rem 2rem}html.theme--catppuccin-latte .navbar.is-spaced .navbar-start,html.theme--catppuccin-latte .navbar.is-spaced .navbar-end{align-items:center}html.theme--catppuccin-latte .navbar.is-spaced a.navbar-item,html.theme--catppuccin-latte .navbar.is-spaced .navbar-link{border-radius:.4em}html.theme--catppuccin-latte .navbar.is-transparent a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-transparent a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-transparent a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-transparent .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-transparent .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}html.theme--catppuccin-latte .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-latte .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,html.theme--catppuccin-latte .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,html.theme--catppuccin-latte .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}html.theme--catppuccin-latte .navbar.is-transparent .navbar-dropdown a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#8c8fa1}html.theme--catppuccin-latte .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#1e66f5}html.theme--catppuccin-latte .navbar-burger{display:none}html.theme--catppuccin-latte .navbar-item,html.theme--catppuccin-latte .navbar-link{align-items:center;display:flex}html.theme--catppuccin-latte .navbar-item.has-dropdown{align-items:stretch}html.theme--catppuccin-latte .navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}html.theme--catppuccin-latte .navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:1px solid rgba(0,0,0,0.2);border-radius:8px 8px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,0.1);top:auto}html.theme--catppuccin-latte .navbar-item.is-active .navbar-dropdown,html.theme--catppuccin-latte .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--catppuccin-latte .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--catppuccin-latte .navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced html.theme--catppuccin-latte .navbar-item.is-active .navbar-dropdown,html.theme--catppuccin-latte .navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-latte .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--catppuccin-latte .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-latte .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--catppuccin-latte .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-latte .navbar-item.is-hoverable:hover .navbar-dropdown,html.theme--catppuccin-latte .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}html.theme--catppuccin-latte .navbar-menu{flex-grow:1;flex-shrink:0}html.theme--catppuccin-latte .navbar-start{justify-content:flex-start;margin-right:auto}html.theme--catppuccin-latte .navbar-end{justify-content:flex-end;margin-left:auto}html.theme--catppuccin-latte .navbar-dropdown{background-color:#1e66f5;border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid rgba(0,0,0,0.2);box-shadow:0 8px 8px rgba(10,10,10,0.1);display:none;font-size:0.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}html.theme--catppuccin-latte .navbar-dropdown .navbar-item{padding:0.375rem 1rem;white-space:nowrap}html.theme--catppuccin-latte .navbar-dropdown a.navbar-item{padding-right:3rem}html.theme--catppuccin-latte .navbar-dropdown a.navbar-item:focus,html.theme--catppuccin-latte .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#8c8fa1}html.theme--catppuccin-latte .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#1e66f5}.navbar.is-spaced html.theme--catppuccin-latte .navbar-dropdown,html.theme--catppuccin-latte .navbar-dropdown.is-boxed{border-radius:8px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,0.1), 0 0 0 1px rgba(10,10,10,0.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity, transform}html.theme--catppuccin-latte .navbar-dropdown.is-right{left:auto;right:0}html.theme--catppuccin-latte .navbar-divider{display:block}html.theme--catppuccin-latte .navbar>.container .navbar-brand,html.theme--catppuccin-latte .container>.navbar .navbar-brand{margin-left:-.75rem}html.theme--catppuccin-latte .navbar>.container .navbar-menu,html.theme--catppuccin-latte .container>.navbar .navbar-menu{margin-right:-.75rem}html.theme--catppuccin-latte .navbar.is-fixed-bottom-desktop,html.theme--catppuccin-latte .navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-latte .navbar.is-fixed-bottom-desktop{bottom:0}html.theme--catppuccin-latte .navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--catppuccin-latte .navbar.is-fixed-top-desktop{top:0}html.theme--catppuccin-latte html.has-navbar-fixed-top-desktop,html.theme--catppuccin-latte body.has-navbar-fixed-top-desktop{padding-top:4rem}html.theme--catppuccin-latte html.has-navbar-fixed-bottom-desktop,html.theme--catppuccin-latte body.has-navbar-fixed-bottom-desktop{padding-bottom:4rem}html.theme--catppuccin-latte html.has-spaced-navbar-fixed-top,html.theme--catppuccin-latte body.has-spaced-navbar-fixed-top{padding-top:6rem}html.theme--catppuccin-latte html.has-spaced-navbar-fixed-bottom,html.theme--catppuccin-latte body.has-spaced-navbar-fixed-bottom{padding-bottom:6rem}html.theme--catppuccin-latte a.navbar-item.is-active,html.theme--catppuccin-latte .navbar-link.is-active{color:#1e66f5}html.theme--catppuccin-latte a.navbar-item.is-active:not(:focus):not(:hover),html.theme--catppuccin-latte .navbar-link.is-active:not(:focus):not(:hover){background-color:rgba(0,0,0,0)}html.theme--catppuccin-latte .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .navbar-item.has-dropdown.is-active .navbar-link{background-color:rgba(0,0,0,0)}}html.theme--catppuccin-latte .hero.is-fullheight-with-navbar{min-height:calc(100vh - 4rem)}html.theme--catppuccin-latte .pagination{font-size:1rem;margin:-.25rem}html.theme--catppuccin-latte .pagination.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.pagination{font-size:.75rem}html.theme--catppuccin-latte .pagination.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .pagination.is-large{font-size:1.5rem}html.theme--catppuccin-latte .pagination.is-rounded .pagination-previous,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.pagination .pagination-previous,html.theme--catppuccin-latte .pagination.is-rounded .pagination-next,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.pagination .pagination-next{padding-left:1em;padding-right:1em;border-radius:9999px}html.theme--catppuccin-latte .pagination.is-rounded .pagination-link,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.pagination .pagination-link{border-radius:9999px}html.theme--catppuccin-latte .pagination,html.theme--catppuccin-latte .pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}html.theme--catppuccin-latte .pagination-previous,html.theme--catppuccin-latte .pagination-next,html.theme--catppuccin-latte .pagination-link,html.theme--catppuccin-latte .pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}html.theme--catppuccin-latte .pagination-previous,html.theme--catppuccin-latte .pagination-next,html.theme--catppuccin-latte .pagination-link{border-color:#acb0be;color:#1e66f5;min-width:2.5em}html.theme--catppuccin-latte .pagination-previous:hover,html.theme--catppuccin-latte .pagination-next:hover,html.theme--catppuccin-latte .pagination-link:hover{border-color:#9ca0b0;color:#04a5e5}html.theme--catppuccin-latte .pagination-previous:focus,html.theme--catppuccin-latte .pagination-next:focus,html.theme--catppuccin-latte .pagination-link:focus{border-color:#9ca0b0}html.theme--catppuccin-latte .pagination-previous:active,html.theme--catppuccin-latte .pagination-next:active,html.theme--catppuccin-latte .pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2)}html.theme--catppuccin-latte .pagination-previous[disabled],html.theme--catppuccin-latte .pagination-previous.is-disabled,html.theme--catppuccin-latte .pagination-next[disabled],html.theme--catppuccin-latte .pagination-next.is-disabled,html.theme--catppuccin-latte .pagination-link[disabled],html.theme--catppuccin-latte .pagination-link.is-disabled{background-color:#acb0be;border-color:#acb0be;box-shadow:none;color:#616587;opacity:0.5}html.theme--catppuccin-latte .pagination-previous,html.theme--catppuccin-latte .pagination-next{padding-left:.75em;padding-right:.75em;white-space:nowrap}html.theme--catppuccin-latte .pagination-link.is-current{background-color:#1e66f5;border-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .pagination-ellipsis{color:#9ca0b0;pointer-events:none}html.theme--catppuccin-latte .pagination-list{flex-wrap:wrap}html.theme--catppuccin-latte .pagination-list li{list-style:none}@media screen and (max-width: 768px){html.theme--catppuccin-latte .pagination{flex-wrap:wrap}html.theme--catppuccin-latte .pagination-previous,html.theme--catppuccin-latte .pagination-next{flex-grow:1;flex-shrink:1}html.theme--catppuccin-latte .pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}html.theme--catppuccin-latte .pagination-previous,html.theme--catppuccin-latte .pagination-next,html.theme--catppuccin-latte .pagination-link,html.theme--catppuccin-latte .pagination-ellipsis{margin-bottom:0;margin-top:0}html.theme--catppuccin-latte .pagination-previous{order:2}html.theme--catppuccin-latte .pagination-next{order:3}html.theme--catppuccin-latte .pagination{justify-content:space-between;margin-bottom:0;margin-top:0}html.theme--catppuccin-latte .pagination.is-centered .pagination-previous{order:1}html.theme--catppuccin-latte .pagination.is-centered .pagination-list{justify-content:center;order:2}html.theme--catppuccin-latte .pagination.is-centered .pagination-next{order:3}html.theme--catppuccin-latte .pagination.is-right .pagination-previous{order:1}html.theme--catppuccin-latte .pagination.is-right .pagination-next{order:2}html.theme--catppuccin-latte .pagination.is-right .pagination-list{justify-content:flex-end;order:3}}html.theme--catppuccin-latte .panel{border-radius:8px;box-shadow:#171717;font-size:1rem}html.theme--catppuccin-latte .panel:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-latte .panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-latte .panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}html.theme--catppuccin-latte .panel.is-white .panel-block.is-active .panel-icon{color:#fff}html.theme--catppuccin-latte .panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-latte .panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}html.theme--catppuccin-latte .panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}html.theme--catppuccin-latte .panel.is-light .panel-heading{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .panel.is-light .panel-tabs a.is-active{border-bottom-color:#f5f5f5}html.theme--catppuccin-latte .panel.is-light .panel-block.is-active .panel-icon{color:#f5f5f5}html.theme--catppuccin-latte .panel.is-dark .panel-heading,html.theme--catppuccin-latte .content kbd.panel .panel-heading{background-color:#ccd0da;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .panel.is-dark .panel-tabs a.is-active,html.theme--catppuccin-latte .content kbd.panel .panel-tabs a.is-active{border-bottom-color:#ccd0da}html.theme--catppuccin-latte .panel.is-dark .panel-block.is-active .panel-icon,html.theme--catppuccin-latte .content kbd.panel .panel-block.is-active .panel-icon{color:#ccd0da}html.theme--catppuccin-latte .panel.is-primary .panel-heading,html.theme--catppuccin-latte .docstring>section>a.panel.docs-sourcelink .panel-heading{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .panel.is-primary .panel-tabs a.is-active,html.theme--catppuccin-latte .docstring>section>a.panel.docs-sourcelink .panel-tabs a.is-active{border-bottom-color:#1e66f5}html.theme--catppuccin-latte .panel.is-primary .panel-block.is-active .panel-icon,html.theme--catppuccin-latte .docstring>section>a.panel.docs-sourcelink .panel-block.is-active .panel-icon{color:#1e66f5}html.theme--catppuccin-latte .panel.is-link .panel-heading{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .panel.is-link .panel-tabs a.is-active{border-bottom-color:#1e66f5}html.theme--catppuccin-latte .panel.is-link .panel-block.is-active .panel-icon{color:#1e66f5}html.theme--catppuccin-latte .panel.is-info .panel-heading{background-color:#179299;color:#fff}html.theme--catppuccin-latte .panel.is-info .panel-tabs a.is-active{border-bottom-color:#179299}html.theme--catppuccin-latte .panel.is-info .panel-block.is-active .panel-icon{color:#179299}html.theme--catppuccin-latte .panel.is-success .panel-heading{background-color:#40a02b;color:#fff}html.theme--catppuccin-latte .panel.is-success .panel-tabs a.is-active{border-bottom-color:#40a02b}html.theme--catppuccin-latte .panel.is-success .panel-block.is-active .panel-icon{color:#40a02b}html.theme--catppuccin-latte .panel.is-warning .panel-heading{background-color:#df8e1d;color:#fff}html.theme--catppuccin-latte .panel.is-warning .panel-tabs a.is-active{border-bottom-color:#df8e1d}html.theme--catppuccin-latte .panel.is-warning .panel-block.is-active .panel-icon{color:#df8e1d}html.theme--catppuccin-latte .panel.is-danger .panel-heading{background-color:#d20f39;color:#fff}html.theme--catppuccin-latte .panel.is-danger .panel-tabs a.is-active{border-bottom-color:#d20f39}html.theme--catppuccin-latte .panel.is-danger .panel-block.is-active .panel-icon{color:#d20f39}html.theme--catppuccin-latte .panel-tabs:not(:last-child),html.theme--catppuccin-latte .panel-block:not(:last-child){border-bottom:1px solid #ededed}html.theme--catppuccin-latte .panel-heading{background-color:#bcc0cc;border-radius:8px 8px 0 0;color:#41445a;font-size:1.25em;font-weight:700;line-height:1.25;padding:0.75em 1em}html.theme--catppuccin-latte .panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}html.theme--catppuccin-latte .panel-tabs a{border-bottom:1px solid #acb0be;margin-bottom:-1px;padding:0.5em}html.theme--catppuccin-latte .panel-tabs a.is-active{border-bottom-color:#bcc0cc;color:#0b57ef}html.theme--catppuccin-latte .panel-list a{color:#4c4f69}html.theme--catppuccin-latte .panel-list a:hover{color:#1e66f5}html.theme--catppuccin-latte .panel-block{align-items:center;color:#41445a;display:flex;justify-content:flex-start;padding:0.5em 0.75em}html.theme--catppuccin-latte .panel-block input[type="checkbox"]{margin-right:.75em}html.theme--catppuccin-latte .panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}html.theme--catppuccin-latte .panel-block.is-wrapped{flex-wrap:wrap}html.theme--catppuccin-latte .panel-block.is-active{border-left-color:#1e66f5;color:#0b57ef}html.theme--catppuccin-latte .panel-block.is-active .panel-icon{color:#1e66f5}html.theme--catppuccin-latte .panel-block:last-child{border-bottom-left-radius:8px;border-bottom-right-radius:8px}html.theme--catppuccin-latte a.panel-block,html.theme--catppuccin-latte label.panel-block{cursor:pointer}html.theme--catppuccin-latte a.panel-block:hover,html.theme--catppuccin-latte label.panel-block:hover{background-color:#e6e9ef}html.theme--catppuccin-latte .panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#616587;margin-right:.75em}html.theme--catppuccin-latte .panel-icon .fa{font-size:inherit;line-height:inherit}html.theme--catppuccin-latte .tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}html.theme--catppuccin-latte .tabs a{align-items:center;border-bottom-color:#acb0be;border-bottom-style:solid;border-bottom-width:1px;color:#4c4f69;display:flex;justify-content:center;margin-bottom:-1px;padding:0.5em 1em;vertical-align:top}html.theme--catppuccin-latte .tabs a:hover{border-bottom-color:#41445a;color:#41445a}html.theme--catppuccin-latte .tabs li{display:block}html.theme--catppuccin-latte .tabs li.is-active a{border-bottom-color:#1e66f5;color:#1e66f5}html.theme--catppuccin-latte .tabs ul{align-items:center;border-bottom-color:#acb0be;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}html.theme--catppuccin-latte .tabs ul.is-left{padding-right:0.75em}html.theme--catppuccin-latte .tabs ul.is-center{flex:none;justify-content:center;padding-left:0.75em;padding-right:0.75em}html.theme--catppuccin-latte .tabs ul.is-right{justify-content:flex-end;padding-left:0.75em}html.theme--catppuccin-latte .tabs .icon:first-child{margin-right:.5em}html.theme--catppuccin-latte .tabs .icon:last-child{margin-left:.5em}html.theme--catppuccin-latte .tabs.is-centered ul{justify-content:center}html.theme--catppuccin-latte .tabs.is-right ul{justify-content:flex-end}html.theme--catppuccin-latte .tabs.is-boxed a{border:1px solid transparent;border-radius:.4em .4em 0 0}html.theme--catppuccin-latte .tabs.is-boxed a:hover{background-color:#e6e9ef;border-bottom-color:#acb0be}html.theme--catppuccin-latte .tabs.is-boxed li.is-active a{background-color:#fff;border-color:#acb0be;border-bottom-color:rgba(0,0,0,0) !important}html.theme--catppuccin-latte .tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}html.theme--catppuccin-latte .tabs.is-toggle a{border-color:#acb0be;border-style:solid;border-width:1px;margin-bottom:0;position:relative}html.theme--catppuccin-latte .tabs.is-toggle a:hover{background-color:#e6e9ef;border-color:#9ca0b0;z-index:2}html.theme--catppuccin-latte .tabs.is-toggle li+li{margin-left:-1px}html.theme--catppuccin-latte .tabs.is-toggle li:first-child a{border-top-left-radius:.4em;border-bottom-left-radius:.4em}html.theme--catppuccin-latte .tabs.is-toggle li:last-child a{border-top-right-radius:.4em;border-bottom-right-radius:.4em}html.theme--catppuccin-latte .tabs.is-toggle li.is-active a{background-color:#1e66f5;border-color:#1e66f5;color:#fff;z-index:1}html.theme--catppuccin-latte .tabs.is-toggle ul{border-bottom:none}html.theme--catppuccin-latte .tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:9999px;border-top-left-radius:9999px;padding-left:1.25em}html.theme--catppuccin-latte .tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:9999px;border-top-right-radius:9999px;padding-right:1.25em}html.theme--catppuccin-latte .tabs.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.tabs{font-size:.75rem}html.theme--catppuccin-latte .tabs.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .tabs.is-large{font-size:1.5rem}html.theme--catppuccin-latte .column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>html.theme--catppuccin-latte .column.is-narrow{flex:none;width:unset}.columns.is-mobile>html.theme--catppuccin-latte .column.is-full{flex:none;width:100%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-half{flex:none;width:50%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-half{margin-left:50%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-0{flex:none;width:0%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-0{margin-left:0%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-1{flex:none;width:8.33333337%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-1{margin-left:8.33333337%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-2{flex:none;width:16.66666674%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-2{margin-left:16.66666674%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-3{flex:none;width:25%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-3{margin-left:25%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-4{flex:none;width:33.33333337%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-4{margin-left:33.33333337%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-5{flex:none;width:41.66666674%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-5{margin-left:41.66666674%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-6{flex:none;width:50%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-6{margin-left:50%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-7{flex:none;width:58.33333337%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-7{margin-left:58.33333337%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-8{flex:none;width:66.66666674%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-8{margin-left:66.66666674%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-9{flex:none;width:75%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-9{margin-left:75%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-10{flex:none;width:83.33333337%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-10{margin-left:83.33333337%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-11{flex:none;width:91.66666674%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-11{margin-left:91.66666674%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-12{flex:none;width:100%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){html.theme--catppuccin-latte .column.is-narrow-mobile{flex:none;width:unset}html.theme--catppuccin-latte .column.is-full-mobile{flex:none;width:100%}html.theme--catppuccin-latte .column.is-three-quarters-mobile{flex:none;width:75%}html.theme--catppuccin-latte .column.is-two-thirds-mobile{flex:none;width:66.6666%}html.theme--catppuccin-latte .column.is-half-mobile{flex:none;width:50%}html.theme--catppuccin-latte .column.is-one-third-mobile{flex:none;width:33.3333%}html.theme--catppuccin-latte .column.is-one-quarter-mobile{flex:none;width:25%}html.theme--catppuccin-latte .column.is-one-fifth-mobile{flex:none;width:20%}html.theme--catppuccin-latte .column.is-two-fifths-mobile{flex:none;width:40%}html.theme--catppuccin-latte .column.is-three-fifths-mobile{flex:none;width:60%}html.theme--catppuccin-latte .column.is-four-fifths-mobile{flex:none;width:80%}html.theme--catppuccin-latte .column.is-offset-three-quarters-mobile{margin-left:75%}html.theme--catppuccin-latte .column.is-offset-two-thirds-mobile{margin-left:66.6666%}html.theme--catppuccin-latte .column.is-offset-half-mobile{margin-left:50%}html.theme--catppuccin-latte .column.is-offset-one-third-mobile{margin-left:33.3333%}html.theme--catppuccin-latte .column.is-offset-one-quarter-mobile{margin-left:25%}html.theme--catppuccin-latte .column.is-offset-one-fifth-mobile{margin-left:20%}html.theme--catppuccin-latte .column.is-offset-two-fifths-mobile{margin-left:40%}html.theme--catppuccin-latte .column.is-offset-three-fifths-mobile{margin-left:60%}html.theme--catppuccin-latte .column.is-offset-four-fifths-mobile{margin-left:80%}html.theme--catppuccin-latte .column.is-0-mobile{flex:none;width:0%}html.theme--catppuccin-latte .column.is-offset-0-mobile{margin-left:0%}html.theme--catppuccin-latte .column.is-1-mobile{flex:none;width:8.33333337%}html.theme--catppuccin-latte .column.is-offset-1-mobile{margin-left:8.33333337%}html.theme--catppuccin-latte .column.is-2-mobile{flex:none;width:16.66666674%}html.theme--catppuccin-latte .column.is-offset-2-mobile{margin-left:16.66666674%}html.theme--catppuccin-latte .column.is-3-mobile{flex:none;width:25%}html.theme--catppuccin-latte .column.is-offset-3-mobile{margin-left:25%}html.theme--catppuccin-latte .column.is-4-mobile{flex:none;width:33.33333337%}html.theme--catppuccin-latte .column.is-offset-4-mobile{margin-left:33.33333337%}html.theme--catppuccin-latte .column.is-5-mobile{flex:none;width:41.66666674%}html.theme--catppuccin-latte .column.is-offset-5-mobile{margin-left:41.66666674%}html.theme--catppuccin-latte .column.is-6-mobile{flex:none;width:50%}html.theme--catppuccin-latte .column.is-offset-6-mobile{margin-left:50%}html.theme--catppuccin-latte .column.is-7-mobile{flex:none;width:58.33333337%}html.theme--catppuccin-latte .column.is-offset-7-mobile{margin-left:58.33333337%}html.theme--catppuccin-latte .column.is-8-mobile{flex:none;width:66.66666674%}html.theme--catppuccin-latte .column.is-offset-8-mobile{margin-left:66.66666674%}html.theme--catppuccin-latte .column.is-9-mobile{flex:none;width:75%}html.theme--catppuccin-latte .column.is-offset-9-mobile{margin-left:75%}html.theme--catppuccin-latte .column.is-10-mobile{flex:none;width:83.33333337%}html.theme--catppuccin-latte .column.is-offset-10-mobile{margin-left:83.33333337%}html.theme--catppuccin-latte .column.is-11-mobile{flex:none;width:91.66666674%}html.theme--catppuccin-latte .column.is-offset-11-mobile{margin-left:91.66666674%}html.theme--catppuccin-latte .column.is-12-mobile{flex:none;width:100%}html.theme--catppuccin-latte .column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .column.is-narrow,html.theme--catppuccin-latte .column.is-narrow-tablet{flex:none;width:unset}html.theme--catppuccin-latte .column.is-full,html.theme--catppuccin-latte .column.is-full-tablet{flex:none;width:100%}html.theme--catppuccin-latte .column.is-three-quarters,html.theme--catppuccin-latte .column.is-three-quarters-tablet{flex:none;width:75%}html.theme--catppuccin-latte .column.is-two-thirds,html.theme--catppuccin-latte .column.is-two-thirds-tablet{flex:none;width:66.6666%}html.theme--catppuccin-latte .column.is-half,html.theme--catppuccin-latte .column.is-half-tablet{flex:none;width:50%}html.theme--catppuccin-latte .column.is-one-third,html.theme--catppuccin-latte .column.is-one-third-tablet{flex:none;width:33.3333%}html.theme--catppuccin-latte .column.is-one-quarter,html.theme--catppuccin-latte .column.is-one-quarter-tablet{flex:none;width:25%}html.theme--catppuccin-latte .column.is-one-fifth,html.theme--catppuccin-latte .column.is-one-fifth-tablet{flex:none;width:20%}html.theme--catppuccin-latte .column.is-two-fifths,html.theme--catppuccin-latte .column.is-two-fifths-tablet{flex:none;width:40%}html.theme--catppuccin-latte .column.is-three-fifths,html.theme--catppuccin-latte .column.is-three-fifths-tablet{flex:none;width:60%}html.theme--catppuccin-latte .column.is-four-fifths,html.theme--catppuccin-latte .column.is-four-fifths-tablet{flex:none;width:80%}html.theme--catppuccin-latte .column.is-offset-three-quarters,html.theme--catppuccin-latte .column.is-offset-three-quarters-tablet{margin-left:75%}html.theme--catppuccin-latte .column.is-offset-two-thirds,html.theme--catppuccin-latte .column.is-offset-two-thirds-tablet{margin-left:66.6666%}html.theme--catppuccin-latte .column.is-offset-half,html.theme--catppuccin-latte .column.is-offset-half-tablet{margin-left:50%}html.theme--catppuccin-latte .column.is-offset-one-third,html.theme--catppuccin-latte .column.is-offset-one-third-tablet{margin-left:33.3333%}html.theme--catppuccin-latte .column.is-offset-one-quarter,html.theme--catppuccin-latte .column.is-offset-one-quarter-tablet{margin-left:25%}html.theme--catppuccin-latte .column.is-offset-one-fifth,html.theme--catppuccin-latte .column.is-offset-one-fifth-tablet{margin-left:20%}html.theme--catppuccin-latte .column.is-offset-two-fifths,html.theme--catppuccin-latte .column.is-offset-two-fifths-tablet{margin-left:40%}html.theme--catppuccin-latte .column.is-offset-three-fifths,html.theme--catppuccin-latte .column.is-offset-three-fifths-tablet{margin-left:60%}html.theme--catppuccin-latte .column.is-offset-four-fifths,html.theme--catppuccin-latte .column.is-offset-four-fifths-tablet{margin-left:80%}html.theme--catppuccin-latte .column.is-0,html.theme--catppuccin-latte .column.is-0-tablet{flex:none;width:0%}html.theme--catppuccin-latte .column.is-offset-0,html.theme--catppuccin-latte .column.is-offset-0-tablet{margin-left:0%}html.theme--catppuccin-latte .column.is-1,html.theme--catppuccin-latte .column.is-1-tablet{flex:none;width:8.33333337%}html.theme--catppuccin-latte .column.is-offset-1,html.theme--catppuccin-latte .column.is-offset-1-tablet{margin-left:8.33333337%}html.theme--catppuccin-latte .column.is-2,html.theme--catppuccin-latte .column.is-2-tablet{flex:none;width:16.66666674%}html.theme--catppuccin-latte .column.is-offset-2,html.theme--catppuccin-latte .column.is-offset-2-tablet{margin-left:16.66666674%}html.theme--catppuccin-latte .column.is-3,html.theme--catppuccin-latte .column.is-3-tablet{flex:none;width:25%}html.theme--catppuccin-latte .column.is-offset-3,html.theme--catppuccin-latte .column.is-offset-3-tablet{margin-left:25%}html.theme--catppuccin-latte .column.is-4,html.theme--catppuccin-latte .column.is-4-tablet{flex:none;width:33.33333337%}html.theme--catppuccin-latte .column.is-offset-4,html.theme--catppuccin-latte .column.is-offset-4-tablet{margin-left:33.33333337%}html.theme--catppuccin-latte .column.is-5,html.theme--catppuccin-latte .column.is-5-tablet{flex:none;width:41.66666674%}html.theme--catppuccin-latte .column.is-offset-5,html.theme--catppuccin-latte .column.is-offset-5-tablet{margin-left:41.66666674%}html.theme--catppuccin-latte .column.is-6,html.theme--catppuccin-latte .column.is-6-tablet{flex:none;width:50%}html.theme--catppuccin-latte .column.is-offset-6,html.theme--catppuccin-latte .column.is-offset-6-tablet{margin-left:50%}html.theme--catppuccin-latte .column.is-7,html.theme--catppuccin-latte .column.is-7-tablet{flex:none;width:58.33333337%}html.theme--catppuccin-latte .column.is-offset-7,html.theme--catppuccin-latte .column.is-offset-7-tablet{margin-left:58.33333337%}html.theme--catppuccin-latte .column.is-8,html.theme--catppuccin-latte .column.is-8-tablet{flex:none;width:66.66666674%}html.theme--catppuccin-latte .column.is-offset-8,html.theme--catppuccin-latte .column.is-offset-8-tablet{margin-left:66.66666674%}html.theme--catppuccin-latte .column.is-9,html.theme--catppuccin-latte .column.is-9-tablet{flex:none;width:75%}html.theme--catppuccin-latte .column.is-offset-9,html.theme--catppuccin-latte .column.is-offset-9-tablet{margin-left:75%}html.theme--catppuccin-latte .column.is-10,html.theme--catppuccin-latte .column.is-10-tablet{flex:none;width:83.33333337%}html.theme--catppuccin-latte .column.is-offset-10,html.theme--catppuccin-latte .column.is-offset-10-tablet{margin-left:83.33333337%}html.theme--catppuccin-latte .column.is-11,html.theme--catppuccin-latte .column.is-11-tablet{flex:none;width:91.66666674%}html.theme--catppuccin-latte .column.is-offset-11,html.theme--catppuccin-latte .column.is-offset-11-tablet{margin-left:91.66666674%}html.theme--catppuccin-latte .column.is-12,html.theme--catppuccin-latte .column.is-12-tablet{flex:none;width:100%}html.theme--catppuccin-latte .column.is-offset-12,html.theme--catppuccin-latte .column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .column.is-narrow-touch{flex:none;width:unset}html.theme--catppuccin-latte .column.is-full-touch{flex:none;width:100%}html.theme--catppuccin-latte .column.is-three-quarters-touch{flex:none;width:75%}html.theme--catppuccin-latte .column.is-two-thirds-touch{flex:none;width:66.6666%}html.theme--catppuccin-latte .column.is-half-touch{flex:none;width:50%}html.theme--catppuccin-latte .column.is-one-third-touch{flex:none;width:33.3333%}html.theme--catppuccin-latte .column.is-one-quarter-touch{flex:none;width:25%}html.theme--catppuccin-latte .column.is-one-fifth-touch{flex:none;width:20%}html.theme--catppuccin-latte .column.is-two-fifths-touch{flex:none;width:40%}html.theme--catppuccin-latte .column.is-three-fifths-touch{flex:none;width:60%}html.theme--catppuccin-latte .column.is-four-fifths-touch{flex:none;width:80%}html.theme--catppuccin-latte .column.is-offset-three-quarters-touch{margin-left:75%}html.theme--catppuccin-latte .column.is-offset-two-thirds-touch{margin-left:66.6666%}html.theme--catppuccin-latte .column.is-offset-half-touch{margin-left:50%}html.theme--catppuccin-latte .column.is-offset-one-third-touch{margin-left:33.3333%}html.theme--catppuccin-latte .column.is-offset-one-quarter-touch{margin-left:25%}html.theme--catppuccin-latte .column.is-offset-one-fifth-touch{margin-left:20%}html.theme--catppuccin-latte .column.is-offset-two-fifths-touch{margin-left:40%}html.theme--catppuccin-latte .column.is-offset-three-fifths-touch{margin-left:60%}html.theme--catppuccin-latte .column.is-offset-four-fifths-touch{margin-left:80%}html.theme--catppuccin-latte .column.is-0-touch{flex:none;width:0%}html.theme--catppuccin-latte .column.is-offset-0-touch{margin-left:0%}html.theme--catppuccin-latte .column.is-1-touch{flex:none;width:8.33333337%}html.theme--catppuccin-latte .column.is-offset-1-touch{margin-left:8.33333337%}html.theme--catppuccin-latte .column.is-2-touch{flex:none;width:16.66666674%}html.theme--catppuccin-latte .column.is-offset-2-touch{margin-left:16.66666674%}html.theme--catppuccin-latte .column.is-3-touch{flex:none;width:25%}html.theme--catppuccin-latte .column.is-offset-3-touch{margin-left:25%}html.theme--catppuccin-latte .column.is-4-touch{flex:none;width:33.33333337%}html.theme--catppuccin-latte .column.is-offset-4-touch{margin-left:33.33333337%}html.theme--catppuccin-latte .column.is-5-touch{flex:none;width:41.66666674%}html.theme--catppuccin-latte .column.is-offset-5-touch{margin-left:41.66666674%}html.theme--catppuccin-latte .column.is-6-touch{flex:none;width:50%}html.theme--catppuccin-latte .column.is-offset-6-touch{margin-left:50%}html.theme--catppuccin-latte .column.is-7-touch{flex:none;width:58.33333337%}html.theme--catppuccin-latte .column.is-offset-7-touch{margin-left:58.33333337%}html.theme--catppuccin-latte .column.is-8-touch{flex:none;width:66.66666674%}html.theme--catppuccin-latte .column.is-offset-8-touch{margin-left:66.66666674%}html.theme--catppuccin-latte .column.is-9-touch{flex:none;width:75%}html.theme--catppuccin-latte .column.is-offset-9-touch{margin-left:75%}html.theme--catppuccin-latte .column.is-10-touch{flex:none;width:83.33333337%}html.theme--catppuccin-latte .column.is-offset-10-touch{margin-left:83.33333337%}html.theme--catppuccin-latte .column.is-11-touch{flex:none;width:91.66666674%}html.theme--catppuccin-latte .column.is-offset-11-touch{margin-left:91.66666674%}html.theme--catppuccin-latte .column.is-12-touch{flex:none;width:100%}html.theme--catppuccin-latte .column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .column.is-narrow-desktop{flex:none;width:unset}html.theme--catppuccin-latte .column.is-full-desktop{flex:none;width:100%}html.theme--catppuccin-latte .column.is-three-quarters-desktop{flex:none;width:75%}html.theme--catppuccin-latte .column.is-two-thirds-desktop{flex:none;width:66.6666%}html.theme--catppuccin-latte .column.is-half-desktop{flex:none;width:50%}html.theme--catppuccin-latte .column.is-one-third-desktop{flex:none;width:33.3333%}html.theme--catppuccin-latte .column.is-one-quarter-desktop{flex:none;width:25%}html.theme--catppuccin-latte .column.is-one-fifth-desktop{flex:none;width:20%}html.theme--catppuccin-latte .column.is-two-fifths-desktop{flex:none;width:40%}html.theme--catppuccin-latte .column.is-three-fifths-desktop{flex:none;width:60%}html.theme--catppuccin-latte .column.is-four-fifths-desktop{flex:none;width:80%}html.theme--catppuccin-latte .column.is-offset-three-quarters-desktop{margin-left:75%}html.theme--catppuccin-latte .column.is-offset-two-thirds-desktop{margin-left:66.6666%}html.theme--catppuccin-latte .column.is-offset-half-desktop{margin-left:50%}html.theme--catppuccin-latte .column.is-offset-one-third-desktop{margin-left:33.3333%}html.theme--catppuccin-latte .column.is-offset-one-quarter-desktop{margin-left:25%}html.theme--catppuccin-latte .column.is-offset-one-fifth-desktop{margin-left:20%}html.theme--catppuccin-latte .column.is-offset-two-fifths-desktop{margin-left:40%}html.theme--catppuccin-latte .column.is-offset-three-fifths-desktop{margin-left:60%}html.theme--catppuccin-latte .column.is-offset-four-fifths-desktop{margin-left:80%}html.theme--catppuccin-latte .column.is-0-desktop{flex:none;width:0%}html.theme--catppuccin-latte .column.is-offset-0-desktop{margin-left:0%}html.theme--catppuccin-latte .column.is-1-desktop{flex:none;width:8.33333337%}html.theme--catppuccin-latte .column.is-offset-1-desktop{margin-left:8.33333337%}html.theme--catppuccin-latte .column.is-2-desktop{flex:none;width:16.66666674%}html.theme--catppuccin-latte .column.is-offset-2-desktop{margin-left:16.66666674%}html.theme--catppuccin-latte .column.is-3-desktop{flex:none;width:25%}html.theme--catppuccin-latte .column.is-offset-3-desktop{margin-left:25%}html.theme--catppuccin-latte .column.is-4-desktop{flex:none;width:33.33333337%}html.theme--catppuccin-latte .column.is-offset-4-desktop{margin-left:33.33333337%}html.theme--catppuccin-latte .column.is-5-desktop{flex:none;width:41.66666674%}html.theme--catppuccin-latte .column.is-offset-5-desktop{margin-left:41.66666674%}html.theme--catppuccin-latte .column.is-6-desktop{flex:none;width:50%}html.theme--catppuccin-latte .column.is-offset-6-desktop{margin-left:50%}html.theme--catppuccin-latte .column.is-7-desktop{flex:none;width:58.33333337%}html.theme--catppuccin-latte .column.is-offset-7-desktop{margin-left:58.33333337%}html.theme--catppuccin-latte .column.is-8-desktop{flex:none;width:66.66666674%}html.theme--catppuccin-latte .column.is-offset-8-desktop{margin-left:66.66666674%}html.theme--catppuccin-latte .column.is-9-desktop{flex:none;width:75%}html.theme--catppuccin-latte .column.is-offset-9-desktop{margin-left:75%}html.theme--catppuccin-latte .column.is-10-desktop{flex:none;width:83.33333337%}html.theme--catppuccin-latte .column.is-offset-10-desktop{margin-left:83.33333337%}html.theme--catppuccin-latte .column.is-11-desktop{flex:none;width:91.66666674%}html.theme--catppuccin-latte .column.is-offset-11-desktop{margin-left:91.66666674%}html.theme--catppuccin-latte .column.is-12-desktop{flex:none;width:100%}html.theme--catppuccin-latte .column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){html.theme--catppuccin-latte .column.is-narrow-widescreen{flex:none;width:unset}html.theme--catppuccin-latte .column.is-full-widescreen{flex:none;width:100%}html.theme--catppuccin-latte .column.is-three-quarters-widescreen{flex:none;width:75%}html.theme--catppuccin-latte .column.is-two-thirds-widescreen{flex:none;width:66.6666%}html.theme--catppuccin-latte .column.is-half-widescreen{flex:none;width:50%}html.theme--catppuccin-latte .column.is-one-third-widescreen{flex:none;width:33.3333%}html.theme--catppuccin-latte .column.is-one-quarter-widescreen{flex:none;width:25%}html.theme--catppuccin-latte .column.is-one-fifth-widescreen{flex:none;width:20%}html.theme--catppuccin-latte .column.is-two-fifths-widescreen{flex:none;width:40%}html.theme--catppuccin-latte .column.is-three-fifths-widescreen{flex:none;width:60%}html.theme--catppuccin-latte .column.is-four-fifths-widescreen{flex:none;width:80%}html.theme--catppuccin-latte .column.is-offset-three-quarters-widescreen{margin-left:75%}html.theme--catppuccin-latte .column.is-offset-two-thirds-widescreen{margin-left:66.6666%}html.theme--catppuccin-latte .column.is-offset-half-widescreen{margin-left:50%}html.theme--catppuccin-latte .column.is-offset-one-third-widescreen{margin-left:33.3333%}html.theme--catppuccin-latte .column.is-offset-one-quarter-widescreen{margin-left:25%}html.theme--catppuccin-latte .column.is-offset-one-fifth-widescreen{margin-left:20%}html.theme--catppuccin-latte .column.is-offset-two-fifths-widescreen{margin-left:40%}html.theme--catppuccin-latte .column.is-offset-three-fifths-widescreen{margin-left:60%}html.theme--catppuccin-latte .column.is-offset-four-fifths-widescreen{margin-left:80%}html.theme--catppuccin-latte .column.is-0-widescreen{flex:none;width:0%}html.theme--catppuccin-latte .column.is-offset-0-widescreen{margin-left:0%}html.theme--catppuccin-latte .column.is-1-widescreen{flex:none;width:8.33333337%}html.theme--catppuccin-latte .column.is-offset-1-widescreen{margin-left:8.33333337%}html.theme--catppuccin-latte .column.is-2-widescreen{flex:none;width:16.66666674%}html.theme--catppuccin-latte .column.is-offset-2-widescreen{margin-left:16.66666674%}html.theme--catppuccin-latte .column.is-3-widescreen{flex:none;width:25%}html.theme--catppuccin-latte .column.is-offset-3-widescreen{margin-left:25%}html.theme--catppuccin-latte .column.is-4-widescreen{flex:none;width:33.33333337%}html.theme--catppuccin-latte .column.is-offset-4-widescreen{margin-left:33.33333337%}html.theme--catppuccin-latte .column.is-5-widescreen{flex:none;width:41.66666674%}html.theme--catppuccin-latte .column.is-offset-5-widescreen{margin-left:41.66666674%}html.theme--catppuccin-latte .column.is-6-widescreen{flex:none;width:50%}html.theme--catppuccin-latte .column.is-offset-6-widescreen{margin-left:50%}html.theme--catppuccin-latte .column.is-7-widescreen{flex:none;width:58.33333337%}html.theme--catppuccin-latte .column.is-offset-7-widescreen{margin-left:58.33333337%}html.theme--catppuccin-latte .column.is-8-widescreen{flex:none;width:66.66666674%}html.theme--catppuccin-latte .column.is-offset-8-widescreen{margin-left:66.66666674%}html.theme--catppuccin-latte .column.is-9-widescreen{flex:none;width:75%}html.theme--catppuccin-latte .column.is-offset-9-widescreen{margin-left:75%}html.theme--catppuccin-latte .column.is-10-widescreen{flex:none;width:83.33333337%}html.theme--catppuccin-latte .column.is-offset-10-widescreen{margin-left:83.33333337%}html.theme--catppuccin-latte .column.is-11-widescreen{flex:none;width:91.66666674%}html.theme--catppuccin-latte .column.is-offset-11-widescreen{margin-left:91.66666674%}html.theme--catppuccin-latte .column.is-12-widescreen{flex:none;width:100%}html.theme--catppuccin-latte .column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){html.theme--catppuccin-latte .column.is-narrow-fullhd{flex:none;width:unset}html.theme--catppuccin-latte .column.is-full-fullhd{flex:none;width:100%}html.theme--catppuccin-latte .column.is-three-quarters-fullhd{flex:none;width:75%}html.theme--catppuccin-latte .column.is-two-thirds-fullhd{flex:none;width:66.6666%}html.theme--catppuccin-latte .column.is-half-fullhd{flex:none;width:50%}html.theme--catppuccin-latte .column.is-one-third-fullhd{flex:none;width:33.3333%}html.theme--catppuccin-latte .column.is-one-quarter-fullhd{flex:none;width:25%}html.theme--catppuccin-latte .column.is-one-fifth-fullhd{flex:none;width:20%}html.theme--catppuccin-latte .column.is-two-fifths-fullhd{flex:none;width:40%}html.theme--catppuccin-latte .column.is-three-fifths-fullhd{flex:none;width:60%}html.theme--catppuccin-latte .column.is-four-fifths-fullhd{flex:none;width:80%}html.theme--catppuccin-latte .column.is-offset-three-quarters-fullhd{margin-left:75%}html.theme--catppuccin-latte .column.is-offset-two-thirds-fullhd{margin-left:66.6666%}html.theme--catppuccin-latte .column.is-offset-half-fullhd{margin-left:50%}html.theme--catppuccin-latte .column.is-offset-one-third-fullhd{margin-left:33.3333%}html.theme--catppuccin-latte .column.is-offset-one-quarter-fullhd{margin-left:25%}html.theme--catppuccin-latte .column.is-offset-one-fifth-fullhd{margin-left:20%}html.theme--catppuccin-latte .column.is-offset-two-fifths-fullhd{margin-left:40%}html.theme--catppuccin-latte .column.is-offset-three-fifths-fullhd{margin-left:60%}html.theme--catppuccin-latte .column.is-offset-four-fifths-fullhd{margin-left:80%}html.theme--catppuccin-latte .column.is-0-fullhd{flex:none;width:0%}html.theme--catppuccin-latte .column.is-offset-0-fullhd{margin-left:0%}html.theme--catppuccin-latte .column.is-1-fullhd{flex:none;width:8.33333337%}html.theme--catppuccin-latte .column.is-offset-1-fullhd{margin-left:8.33333337%}html.theme--catppuccin-latte .column.is-2-fullhd{flex:none;width:16.66666674%}html.theme--catppuccin-latte .column.is-offset-2-fullhd{margin-left:16.66666674%}html.theme--catppuccin-latte .column.is-3-fullhd{flex:none;width:25%}html.theme--catppuccin-latte .column.is-offset-3-fullhd{margin-left:25%}html.theme--catppuccin-latte .column.is-4-fullhd{flex:none;width:33.33333337%}html.theme--catppuccin-latte .column.is-offset-4-fullhd{margin-left:33.33333337%}html.theme--catppuccin-latte .column.is-5-fullhd{flex:none;width:41.66666674%}html.theme--catppuccin-latte .column.is-offset-5-fullhd{margin-left:41.66666674%}html.theme--catppuccin-latte .column.is-6-fullhd{flex:none;width:50%}html.theme--catppuccin-latte .column.is-offset-6-fullhd{margin-left:50%}html.theme--catppuccin-latte .column.is-7-fullhd{flex:none;width:58.33333337%}html.theme--catppuccin-latte .column.is-offset-7-fullhd{margin-left:58.33333337%}html.theme--catppuccin-latte .column.is-8-fullhd{flex:none;width:66.66666674%}html.theme--catppuccin-latte .column.is-offset-8-fullhd{margin-left:66.66666674%}html.theme--catppuccin-latte .column.is-9-fullhd{flex:none;width:75%}html.theme--catppuccin-latte .column.is-offset-9-fullhd{margin-left:75%}html.theme--catppuccin-latte .column.is-10-fullhd{flex:none;width:83.33333337%}html.theme--catppuccin-latte .column.is-offset-10-fullhd{margin-left:83.33333337%}html.theme--catppuccin-latte .column.is-11-fullhd{flex:none;width:91.66666674%}html.theme--catppuccin-latte .column.is-offset-11-fullhd{margin-left:91.66666674%}html.theme--catppuccin-latte .column.is-12-fullhd{flex:none;width:100%}html.theme--catppuccin-latte .column.is-offset-12-fullhd{margin-left:100%}}html.theme--catppuccin-latte .columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--catppuccin-latte .columns:last-child{margin-bottom:-.75rem}html.theme--catppuccin-latte .columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}html.theme--catppuccin-latte .columns.is-centered{justify-content:center}html.theme--catppuccin-latte .columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}html.theme--catppuccin-latte .columns.is-gapless>.column{margin:0;padding:0 !important}html.theme--catppuccin-latte .columns.is-gapless:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-latte .columns.is-gapless:last-child{margin-bottom:0}html.theme--catppuccin-latte .columns.is-mobile{display:flex}html.theme--catppuccin-latte .columns.is-multiline{flex-wrap:wrap}html.theme--catppuccin-latte .columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .columns.is-desktop{display:flex}}html.theme--catppuccin-latte .columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}html.theme--catppuccin-latte .columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}html.theme--catppuccin-latte .columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){html.theme--catppuccin-latte .columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-latte .columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-latte .columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-latte .columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-latte .columns.is-variable.is-0-fullhd{--columnGap: 0rem}}html.theme--catppuccin-latte .columns.is-variable.is-1{--columnGap: .25rem}@media screen and (max-width: 768px){html.theme--catppuccin-latte .columns.is-variable.is-1-mobile{--columnGap: .25rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .columns.is-variable.is-1-tablet{--columnGap: .25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-1-tablet-only{--columnGap: .25rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-1-touch{--columnGap: .25rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .columns.is-variable.is-1-desktop{--columnGap: .25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-latte .columns.is-variable.is-1-desktop-only{--columnGap: .25rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-latte .columns.is-variable.is-1-widescreen{--columnGap: .25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-latte .columns.is-variable.is-1-widescreen-only{--columnGap: .25rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-latte .columns.is-variable.is-1-fullhd{--columnGap: .25rem}}html.theme--catppuccin-latte .columns.is-variable.is-2{--columnGap: .5rem}@media screen and (max-width: 768px){html.theme--catppuccin-latte .columns.is-variable.is-2-mobile{--columnGap: .5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .columns.is-variable.is-2-tablet{--columnGap: .5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-2-tablet-only{--columnGap: .5rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-2-touch{--columnGap: .5rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .columns.is-variable.is-2-desktop{--columnGap: .5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-latte .columns.is-variable.is-2-desktop-only{--columnGap: .5rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-latte .columns.is-variable.is-2-widescreen{--columnGap: .5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-latte .columns.is-variable.is-2-widescreen-only{--columnGap: .5rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-latte .columns.is-variable.is-2-fullhd{--columnGap: .5rem}}html.theme--catppuccin-latte .columns.is-variable.is-3{--columnGap: .75rem}@media screen and (max-width: 768px){html.theme--catppuccin-latte .columns.is-variable.is-3-mobile{--columnGap: .75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .columns.is-variable.is-3-tablet{--columnGap: .75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-3-tablet-only{--columnGap: .75rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-3-touch{--columnGap: .75rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .columns.is-variable.is-3-desktop{--columnGap: .75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-latte .columns.is-variable.is-3-desktop-only{--columnGap: .75rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-latte .columns.is-variable.is-3-widescreen{--columnGap: .75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-latte .columns.is-variable.is-3-widescreen-only{--columnGap: .75rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-latte .columns.is-variable.is-3-fullhd{--columnGap: .75rem}}html.theme--catppuccin-latte .columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){html.theme--catppuccin-latte .columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-latte .columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-latte .columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-latte .columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-latte .columns.is-variable.is-4-fullhd{--columnGap: 1rem}}html.theme--catppuccin-latte .columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){html.theme--catppuccin-latte .columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-latte .columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-latte .columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-latte .columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-latte .columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}html.theme--catppuccin-latte .columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){html.theme--catppuccin-latte .columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-latte .columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-latte .columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-latte .columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-latte .columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}html.theme--catppuccin-latte .columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){html.theme--catppuccin-latte .columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-latte .columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-latte .columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-latte .columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-latte .columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}html.theme--catppuccin-latte .columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){html.theme--catppuccin-latte .columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-latte .columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-latte .columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-latte .columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-latte .columns.is-variable.is-8-fullhd{--columnGap: 2rem}}html.theme--catppuccin-latte .tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}html.theme--catppuccin-latte .tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--catppuccin-latte .tile.is-ancestor:last-child{margin-bottom:-.75rem}html.theme--catppuccin-latte .tile.is-ancestor:not(:last-child){margin-bottom:.75rem}html.theme--catppuccin-latte .tile.is-child{margin:0 !important}html.theme--catppuccin-latte .tile.is-parent{padding:.75rem}html.theme--catppuccin-latte .tile.is-vertical{flex-direction:column}html.theme--catppuccin-latte .tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .tile:not(.is-child){display:flex}html.theme--catppuccin-latte .tile.is-1{flex:none;width:8.33333337%}html.theme--catppuccin-latte .tile.is-2{flex:none;width:16.66666674%}html.theme--catppuccin-latte .tile.is-3{flex:none;width:25%}html.theme--catppuccin-latte .tile.is-4{flex:none;width:33.33333337%}html.theme--catppuccin-latte .tile.is-5{flex:none;width:41.66666674%}html.theme--catppuccin-latte .tile.is-6{flex:none;width:50%}html.theme--catppuccin-latte .tile.is-7{flex:none;width:58.33333337%}html.theme--catppuccin-latte .tile.is-8{flex:none;width:66.66666674%}html.theme--catppuccin-latte .tile.is-9{flex:none;width:75%}html.theme--catppuccin-latte .tile.is-10{flex:none;width:83.33333337%}html.theme--catppuccin-latte .tile.is-11{flex:none;width:91.66666674%}html.theme--catppuccin-latte .tile.is-12{flex:none;width:100%}}html.theme--catppuccin-latte .hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}html.theme--catppuccin-latte .hero .navbar{background:none}html.theme--catppuccin-latte .hero .tabs ul{border-bottom:none}html.theme--catppuccin-latte .hero.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-latte .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .hero.is-white strong{color:inherit}html.theme--catppuccin-latte .hero.is-white .title{color:#0a0a0a}html.theme--catppuccin-latte .hero.is-white .subtitle{color:rgba(10,10,10,0.9)}html.theme--catppuccin-latte .hero.is-white .subtitle a:not(.button),html.theme--catppuccin-latte .hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .hero.is-white .navbar-menu{background-color:#fff}}html.theme--catppuccin-latte .hero.is-white .navbar-item,html.theme--catppuccin-latte .hero.is-white .navbar-link{color:rgba(10,10,10,0.7)}html.theme--catppuccin-latte .hero.is-white a.navbar-item:hover,html.theme--catppuccin-latte .hero.is-white a.navbar-item.is-active,html.theme--catppuccin-latte .hero.is-white .navbar-link:hover,html.theme--catppuccin-latte .hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-latte .hero.is-white .tabs a{color:#0a0a0a;opacity:0.9}html.theme--catppuccin-latte .hero.is-white .tabs a:hover{opacity:1}html.theme--catppuccin-latte .hero.is-white .tabs li.is-active a{color:#fff !important;opacity:1}html.theme--catppuccin-latte .hero.is-white .tabs.is-boxed a,html.theme--catppuccin-latte .hero.is-white .tabs.is-toggle a{color:#0a0a0a}html.theme--catppuccin-latte .hero.is-white .tabs.is-boxed a:hover,html.theme--catppuccin-latte .hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-latte .hero.is-white .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .hero.is-white .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-latte .hero.is-white .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-latte .hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}}html.theme--catppuccin-latte .hero.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-latte .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .hero.is-black strong{color:inherit}html.theme--catppuccin-latte .hero.is-black .title{color:#fff}html.theme--catppuccin-latte .hero.is-black .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-latte .hero.is-black .subtitle a:not(.button),html.theme--catppuccin-latte .hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .hero.is-black .navbar-menu{background-color:#0a0a0a}}html.theme--catppuccin-latte .hero.is-black .navbar-item,html.theme--catppuccin-latte .hero.is-black .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-latte .hero.is-black a.navbar-item:hover,html.theme--catppuccin-latte .hero.is-black a.navbar-item.is-active,html.theme--catppuccin-latte .hero.is-black .navbar-link:hover,html.theme--catppuccin-latte .hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-latte .hero.is-black .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-latte .hero.is-black .tabs a:hover{opacity:1}html.theme--catppuccin-latte .hero.is-black .tabs li.is-active a{color:#0a0a0a !important;opacity:1}html.theme--catppuccin-latte .hero.is-black .tabs.is-boxed a,html.theme--catppuccin-latte .hero.is-black .tabs.is-toggle a{color:#fff}html.theme--catppuccin-latte .hero.is-black .tabs.is-boxed a:hover,html.theme--catppuccin-latte .hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-latte .hero.is-black .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .hero.is-black .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-latte .hero.is-black .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-latte .hero.is-black.is-bold{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}}html.theme--catppuccin-latte .hero.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .hero.is-light strong{color:inherit}html.theme--catppuccin-latte .hero.is-light .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .hero.is-light .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-latte .hero.is-light .subtitle a:not(.button),html.theme--catppuccin-latte .hero.is-light .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .hero.is-light .navbar-menu{background-color:#f5f5f5}}html.theme--catppuccin-latte .hero.is-light .navbar-item,html.theme--catppuccin-latte .hero.is-light .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .hero.is-light a.navbar-item:hover,html.theme--catppuccin-latte .hero.is-light a.navbar-item.is-active,html.theme--catppuccin-latte .hero.is-light .navbar-link:hover,html.theme--catppuccin-latte .hero.is-light .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .hero.is-light .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-latte .hero.is-light .tabs a:hover{opacity:1}html.theme--catppuccin-latte .hero.is-light .tabs li.is-active a{color:#f5f5f5 !important;opacity:1}html.theme--catppuccin-latte .hero.is-light .tabs.is-boxed a,html.theme--catppuccin-latte .hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .hero.is-light .tabs.is-boxed a:hover,html.theme--catppuccin-latte .hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-latte .hero.is-light .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .hero.is-light .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-latte .hero.is-light .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-latte .hero.is-light.is-bold{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}}html.theme--catppuccin-latte .hero.is-dark,html.theme--catppuccin-latte .content kbd.hero{background-color:#ccd0da;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .hero.is-dark strong,html.theme--catppuccin-latte .content kbd.hero strong{color:inherit}html.theme--catppuccin-latte .hero.is-dark .title,html.theme--catppuccin-latte .content kbd.hero .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .hero.is-dark .subtitle,html.theme--catppuccin-latte .content kbd.hero .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-latte .hero.is-dark .subtitle a:not(.button),html.theme--catppuccin-latte .content kbd.hero .subtitle a:not(.button),html.theme--catppuccin-latte .hero.is-dark .subtitle strong,html.theme--catppuccin-latte .content kbd.hero .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .hero.is-dark .navbar-menu,html.theme--catppuccin-latte .content kbd.hero .navbar-menu{background-color:#ccd0da}}html.theme--catppuccin-latte .hero.is-dark .navbar-item,html.theme--catppuccin-latte .content kbd.hero .navbar-item,html.theme--catppuccin-latte .hero.is-dark .navbar-link,html.theme--catppuccin-latte .content kbd.hero .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .hero.is-dark a.navbar-item:hover,html.theme--catppuccin-latte .content kbd.hero a.navbar-item:hover,html.theme--catppuccin-latte .hero.is-dark a.navbar-item.is-active,html.theme--catppuccin-latte .content kbd.hero a.navbar-item.is-active,html.theme--catppuccin-latte .hero.is-dark .navbar-link:hover,html.theme--catppuccin-latte .content kbd.hero .navbar-link:hover,html.theme--catppuccin-latte .hero.is-dark .navbar-link.is-active,html.theme--catppuccin-latte .content kbd.hero .navbar-link.is-active{background-color:#bdc2cf;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .hero.is-dark .tabs a,html.theme--catppuccin-latte .content kbd.hero .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-latte .hero.is-dark .tabs a:hover,html.theme--catppuccin-latte .content kbd.hero .tabs a:hover{opacity:1}html.theme--catppuccin-latte .hero.is-dark .tabs li.is-active a,html.theme--catppuccin-latte .content kbd.hero .tabs li.is-active a{color:#ccd0da !important;opacity:1}html.theme--catppuccin-latte .hero.is-dark .tabs.is-boxed a,html.theme--catppuccin-latte .content kbd.hero .tabs.is-boxed a,html.theme--catppuccin-latte .hero.is-dark .tabs.is-toggle a,html.theme--catppuccin-latte .content kbd.hero .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .hero.is-dark .tabs.is-boxed a:hover,html.theme--catppuccin-latte .content kbd.hero .tabs.is-boxed a:hover,html.theme--catppuccin-latte .hero.is-dark .tabs.is-toggle a:hover,html.theme--catppuccin-latte .content kbd.hero .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-latte .hero.is-dark .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .content kbd.hero .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .hero.is-dark .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-latte .hero.is-dark .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .content kbd.hero .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#ccd0da}html.theme--catppuccin-latte .hero.is-dark.is-bold,html.theme--catppuccin-latte .content kbd.hero.is-bold{background-image:linear-gradient(141deg, #a7b8cc 0%, #ccd0da 71%, #d9dbe6 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero.is-dark.is-bold .navbar-menu,html.theme--catppuccin-latte .content kbd.hero.is-bold .navbar-menu{background-image:linear-gradient(141deg, #a7b8cc 0%, #ccd0da 71%, #d9dbe6 100%)}}html.theme--catppuccin-latte .hero.is-primary,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .hero.is-primary strong,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink strong{color:inherit}html.theme--catppuccin-latte .hero.is-primary .title,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .title{color:#fff}html.theme--catppuccin-latte .hero.is-primary .subtitle,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-latte .hero.is-primary .subtitle a:not(.button),html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .subtitle a:not(.button),html.theme--catppuccin-latte .hero.is-primary .subtitle strong,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .hero.is-primary .navbar-menu,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .navbar-menu{background-color:#1e66f5}}html.theme--catppuccin-latte .hero.is-primary .navbar-item,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .navbar-item,html.theme--catppuccin-latte .hero.is-primary .navbar-link,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-latte .hero.is-primary a.navbar-item:hover,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink a.navbar-item:hover,html.theme--catppuccin-latte .hero.is-primary a.navbar-item.is-active,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink a.navbar-item.is-active,html.theme--catppuccin-latte .hero.is-primary .navbar-link:hover,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .navbar-link:hover,html.theme--catppuccin-latte .hero.is-primary .navbar-link.is-active,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .navbar-link.is-active{background-color:#0b57ef;color:#fff}html.theme--catppuccin-latte .hero.is-primary .tabs a,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-latte .hero.is-primary .tabs a:hover,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .tabs a:hover{opacity:1}html.theme--catppuccin-latte .hero.is-primary .tabs li.is-active a,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .tabs li.is-active a{color:#1e66f5 !important;opacity:1}html.theme--catppuccin-latte .hero.is-primary .tabs.is-boxed a,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a,html.theme--catppuccin-latte .hero.is-primary .tabs.is-toggle a,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a{color:#fff}html.theme--catppuccin-latte .hero.is-primary .tabs.is-boxed a:hover,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a:hover,html.theme--catppuccin-latte .hero.is-primary .tabs.is-toggle a:hover,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-latte .hero.is-primary .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .hero.is-primary .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-latte .hero.is-primary .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#1e66f5}html.theme--catppuccin-latte .hero.is-primary.is-bold,html.theme--catppuccin-latte .docstring>section>a.hero.is-bold.docs-sourcelink{background-image:linear-gradient(141deg, #0070e0 0%, #1e66f5 71%, #3153fb 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero.is-primary.is-bold .navbar-menu,html.theme--catppuccin-latte .docstring>section>a.hero.is-bold.docs-sourcelink .navbar-menu{background-image:linear-gradient(141deg, #0070e0 0%, #1e66f5 71%, #3153fb 100%)}}html.theme--catppuccin-latte .hero.is-link{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .hero.is-link strong{color:inherit}html.theme--catppuccin-latte .hero.is-link .title{color:#fff}html.theme--catppuccin-latte .hero.is-link .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-latte .hero.is-link .subtitle a:not(.button),html.theme--catppuccin-latte .hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .hero.is-link .navbar-menu{background-color:#1e66f5}}html.theme--catppuccin-latte .hero.is-link .navbar-item,html.theme--catppuccin-latte .hero.is-link .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-latte .hero.is-link a.navbar-item:hover,html.theme--catppuccin-latte .hero.is-link a.navbar-item.is-active,html.theme--catppuccin-latte .hero.is-link .navbar-link:hover,html.theme--catppuccin-latte .hero.is-link .navbar-link.is-active{background-color:#0b57ef;color:#fff}html.theme--catppuccin-latte .hero.is-link .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-latte .hero.is-link .tabs a:hover{opacity:1}html.theme--catppuccin-latte .hero.is-link .tabs li.is-active a{color:#1e66f5 !important;opacity:1}html.theme--catppuccin-latte .hero.is-link .tabs.is-boxed a,html.theme--catppuccin-latte .hero.is-link .tabs.is-toggle a{color:#fff}html.theme--catppuccin-latte .hero.is-link .tabs.is-boxed a:hover,html.theme--catppuccin-latte .hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-latte .hero.is-link .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .hero.is-link .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-latte .hero.is-link .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#1e66f5}html.theme--catppuccin-latte .hero.is-link.is-bold{background-image:linear-gradient(141deg, #0070e0 0%, #1e66f5 71%, #3153fb 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #0070e0 0%, #1e66f5 71%, #3153fb 100%)}}html.theme--catppuccin-latte .hero.is-info{background-color:#179299;color:#fff}html.theme--catppuccin-latte .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .hero.is-info strong{color:inherit}html.theme--catppuccin-latte .hero.is-info .title{color:#fff}html.theme--catppuccin-latte .hero.is-info .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-latte .hero.is-info .subtitle a:not(.button),html.theme--catppuccin-latte .hero.is-info .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .hero.is-info .navbar-menu{background-color:#179299}}html.theme--catppuccin-latte .hero.is-info .navbar-item,html.theme--catppuccin-latte .hero.is-info .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-latte .hero.is-info a.navbar-item:hover,html.theme--catppuccin-latte .hero.is-info a.navbar-item.is-active,html.theme--catppuccin-latte .hero.is-info .navbar-link:hover,html.theme--catppuccin-latte .hero.is-info .navbar-link.is-active{background-color:#147d83;color:#fff}html.theme--catppuccin-latte .hero.is-info .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-latte .hero.is-info .tabs a:hover{opacity:1}html.theme--catppuccin-latte .hero.is-info .tabs li.is-active a{color:#179299 !important;opacity:1}html.theme--catppuccin-latte .hero.is-info .tabs.is-boxed a,html.theme--catppuccin-latte .hero.is-info .tabs.is-toggle a{color:#fff}html.theme--catppuccin-latte .hero.is-info .tabs.is-boxed a:hover,html.theme--catppuccin-latte .hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-latte .hero.is-info .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .hero.is-info .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-latte .hero.is-info .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#179299}html.theme--catppuccin-latte .hero.is-info.is-bold{background-image:linear-gradient(141deg, #0a7367 0%, #179299 71%, #1591b4 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #0a7367 0%, #179299 71%, #1591b4 100%)}}html.theme--catppuccin-latte .hero.is-success{background-color:#40a02b;color:#fff}html.theme--catppuccin-latte .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .hero.is-success strong{color:inherit}html.theme--catppuccin-latte .hero.is-success .title{color:#fff}html.theme--catppuccin-latte .hero.is-success .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-latte .hero.is-success .subtitle a:not(.button),html.theme--catppuccin-latte .hero.is-success .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .hero.is-success .navbar-menu{background-color:#40a02b}}html.theme--catppuccin-latte .hero.is-success .navbar-item,html.theme--catppuccin-latte .hero.is-success .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-latte .hero.is-success a.navbar-item:hover,html.theme--catppuccin-latte .hero.is-success a.navbar-item.is-active,html.theme--catppuccin-latte .hero.is-success .navbar-link:hover,html.theme--catppuccin-latte .hero.is-success .navbar-link.is-active{background-color:#388c26;color:#fff}html.theme--catppuccin-latte .hero.is-success .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-latte .hero.is-success .tabs a:hover{opacity:1}html.theme--catppuccin-latte .hero.is-success .tabs li.is-active a{color:#40a02b !important;opacity:1}html.theme--catppuccin-latte .hero.is-success .tabs.is-boxed a,html.theme--catppuccin-latte .hero.is-success .tabs.is-toggle a{color:#fff}html.theme--catppuccin-latte .hero.is-success .tabs.is-boxed a:hover,html.theme--catppuccin-latte .hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-latte .hero.is-success .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .hero.is-success .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-latte .hero.is-success .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#40a02b}html.theme--catppuccin-latte .hero.is-success.is-bold{background-image:linear-gradient(141deg, #3c7f19 0%, #40a02b 71%, #2dba2b 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #3c7f19 0%, #40a02b 71%, #2dba2b 100%)}}html.theme--catppuccin-latte .hero.is-warning{background-color:#df8e1d;color:#fff}html.theme--catppuccin-latte .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .hero.is-warning strong{color:inherit}html.theme--catppuccin-latte .hero.is-warning .title{color:#fff}html.theme--catppuccin-latte .hero.is-warning .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-latte .hero.is-warning .subtitle a:not(.button),html.theme--catppuccin-latte .hero.is-warning .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .hero.is-warning .navbar-menu{background-color:#df8e1d}}html.theme--catppuccin-latte .hero.is-warning .navbar-item,html.theme--catppuccin-latte .hero.is-warning .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-latte .hero.is-warning a.navbar-item:hover,html.theme--catppuccin-latte .hero.is-warning a.navbar-item.is-active,html.theme--catppuccin-latte .hero.is-warning .navbar-link:hover,html.theme--catppuccin-latte .hero.is-warning .navbar-link.is-active{background-color:#c8801a;color:#fff}html.theme--catppuccin-latte .hero.is-warning .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-latte .hero.is-warning .tabs a:hover{opacity:1}html.theme--catppuccin-latte .hero.is-warning .tabs li.is-active a{color:#df8e1d !important;opacity:1}html.theme--catppuccin-latte .hero.is-warning .tabs.is-boxed a,html.theme--catppuccin-latte .hero.is-warning .tabs.is-toggle a{color:#fff}html.theme--catppuccin-latte .hero.is-warning .tabs.is-boxed a:hover,html.theme--catppuccin-latte .hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-latte .hero.is-warning .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .hero.is-warning .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-latte .hero.is-warning .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#df8e1d}html.theme--catppuccin-latte .hero.is-warning.is-bold{background-image:linear-gradient(141deg, #bc560d 0%, #df8e1d 71%, #eaba2b 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #bc560d 0%, #df8e1d 71%, #eaba2b 100%)}}html.theme--catppuccin-latte .hero.is-danger{background-color:#d20f39;color:#fff}html.theme--catppuccin-latte .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .hero.is-danger strong{color:inherit}html.theme--catppuccin-latte .hero.is-danger .title{color:#fff}html.theme--catppuccin-latte .hero.is-danger .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-latte .hero.is-danger .subtitle a:not(.button),html.theme--catppuccin-latte .hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .hero.is-danger .navbar-menu{background-color:#d20f39}}html.theme--catppuccin-latte .hero.is-danger .navbar-item,html.theme--catppuccin-latte .hero.is-danger .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-latte .hero.is-danger a.navbar-item:hover,html.theme--catppuccin-latte .hero.is-danger a.navbar-item.is-active,html.theme--catppuccin-latte .hero.is-danger .navbar-link:hover,html.theme--catppuccin-latte .hero.is-danger .navbar-link.is-active{background-color:#ba0d33;color:#fff}html.theme--catppuccin-latte .hero.is-danger .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-latte .hero.is-danger .tabs a:hover{opacity:1}html.theme--catppuccin-latte .hero.is-danger .tabs li.is-active a{color:#d20f39 !important;opacity:1}html.theme--catppuccin-latte .hero.is-danger .tabs.is-boxed a,html.theme--catppuccin-latte .hero.is-danger .tabs.is-toggle a{color:#fff}html.theme--catppuccin-latte .hero.is-danger .tabs.is-boxed a:hover,html.theme--catppuccin-latte .hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-latte .hero.is-danger .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .hero.is-danger .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-latte .hero.is-danger .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#d20f39}html.theme--catppuccin-latte .hero.is-danger.is-bold{background-image:linear-gradient(141deg, #ab0343 0%, #d20f39 71%, #f00a16 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #ab0343 0%, #d20f39 71%, #f00a16 100%)}}html.theme--catppuccin-latte .hero.is-small .hero-body,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.hero .hero-body{padding:1.5rem}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .hero.is-medium .hero-body{padding:9rem 4.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .hero.is-large .hero-body{padding:18rem 6rem}}html.theme--catppuccin-latte .hero.is-halfheight .hero-body,html.theme--catppuccin-latte .hero.is-fullheight .hero-body,html.theme--catppuccin-latte .hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}html.theme--catppuccin-latte .hero.is-halfheight .hero-body>.container,html.theme--catppuccin-latte .hero.is-fullheight .hero-body>.container,html.theme--catppuccin-latte .hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}html.theme--catppuccin-latte .hero.is-halfheight{min-height:50vh}html.theme--catppuccin-latte .hero.is-fullheight{min-height:100vh}html.theme--catppuccin-latte .hero-video{overflow:hidden}html.theme--catppuccin-latte .hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}html.theme--catppuccin-latte .hero-video.is-transparent{opacity:0.3}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero-video{display:none}}html.theme--catppuccin-latte .hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero-buttons .button{display:flex}html.theme--catppuccin-latte .hero-buttons .button:not(:last-child){margin-bottom:0.75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .hero-buttons{display:flex;justify-content:center}html.theme--catppuccin-latte .hero-buttons .button:not(:last-child){margin-right:1.5rem}}html.theme--catppuccin-latte .hero-head,html.theme--catppuccin-latte .hero-foot{flex-grow:0;flex-shrink:0}html.theme--catppuccin-latte .hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .hero-body{padding:3rem 3rem}}html.theme--catppuccin-latte .section{padding:3rem 1.5rem}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .section{padding:3rem 3rem}html.theme--catppuccin-latte .section.is-medium{padding:9rem 4.5rem}html.theme--catppuccin-latte .section.is-large{padding:18rem 6rem}}html.theme--catppuccin-latte .footer{background-color:#e6e9ef;padding:3rem 1.5rem 6rem}html.theme--catppuccin-latte h1 .docs-heading-anchor,html.theme--catppuccin-latte h1 .docs-heading-anchor:hover,html.theme--catppuccin-latte h1 .docs-heading-anchor:visited,html.theme--catppuccin-latte h2 .docs-heading-anchor,html.theme--catppuccin-latte h2 .docs-heading-anchor:hover,html.theme--catppuccin-latte h2 .docs-heading-anchor:visited,html.theme--catppuccin-latte h3 .docs-heading-anchor,html.theme--catppuccin-latte h3 .docs-heading-anchor:hover,html.theme--catppuccin-latte h3 .docs-heading-anchor:visited,html.theme--catppuccin-latte h4 .docs-heading-anchor,html.theme--catppuccin-latte h4 .docs-heading-anchor:hover,html.theme--catppuccin-latte h4 .docs-heading-anchor:visited,html.theme--catppuccin-latte h5 .docs-heading-anchor,html.theme--catppuccin-latte h5 .docs-heading-anchor:hover,html.theme--catppuccin-latte h5 .docs-heading-anchor:visited,html.theme--catppuccin-latte h6 .docs-heading-anchor,html.theme--catppuccin-latte h6 .docs-heading-anchor:hover,html.theme--catppuccin-latte h6 .docs-heading-anchor:visited{color:#4c4f69}html.theme--catppuccin-latte h1 .docs-heading-anchor-permalink,html.theme--catppuccin-latte h2 .docs-heading-anchor-permalink,html.theme--catppuccin-latte h3 .docs-heading-anchor-permalink,html.theme--catppuccin-latte h4 .docs-heading-anchor-permalink,html.theme--catppuccin-latte h5 .docs-heading-anchor-permalink,html.theme--catppuccin-latte h6 .docs-heading-anchor-permalink{visibility:hidden;vertical-align:middle;margin-left:0.5em;font-size:0.7rem}html.theme--catppuccin-latte h1 .docs-heading-anchor-permalink::before,html.theme--catppuccin-latte h2 .docs-heading-anchor-permalink::before,html.theme--catppuccin-latte h3 .docs-heading-anchor-permalink::before,html.theme--catppuccin-latte h4 .docs-heading-anchor-permalink::before,html.theme--catppuccin-latte h5 .docs-heading-anchor-permalink::before,html.theme--catppuccin-latte h6 .docs-heading-anchor-permalink::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f0c1"}html.theme--catppuccin-latte h1:hover .docs-heading-anchor-permalink,html.theme--catppuccin-latte h2:hover .docs-heading-anchor-permalink,html.theme--catppuccin-latte h3:hover .docs-heading-anchor-permalink,html.theme--catppuccin-latte h4:hover .docs-heading-anchor-permalink,html.theme--catppuccin-latte h5:hover .docs-heading-anchor-permalink,html.theme--catppuccin-latte h6:hover .docs-heading-anchor-permalink{visibility:visible}html.theme--catppuccin-latte .docs-dark-only{display:none !important}html.theme--catppuccin-latte pre{position:relative;overflow:hidden}html.theme--catppuccin-latte pre code,html.theme--catppuccin-latte pre code.hljs{padding:0 .75rem !important;overflow:auto;display:block}html.theme--catppuccin-latte pre code:first-of-type,html.theme--catppuccin-latte pre code.hljs:first-of-type{padding-top:0.5rem !important}html.theme--catppuccin-latte pre code:last-of-type,html.theme--catppuccin-latte pre code.hljs:last-of-type{padding-bottom:0.5rem !important}html.theme--catppuccin-latte pre .copy-button{opacity:0.2;transition:opacity 0.2s;position:absolute;right:0em;top:0em;padding:0.5em;width:2.5em;height:2.5em;background:transparent;border:none;font-family:"Font Awesome 6 Free";color:#4c4f69;cursor:pointer;text-align:center}html.theme--catppuccin-latte pre .copy-button:focus,html.theme--catppuccin-latte pre .copy-button:hover{opacity:1;background:rgba(76,79,105,0.1);color:#1e66f5}html.theme--catppuccin-latte pre .copy-button.success{color:#40a02b;opacity:1}html.theme--catppuccin-latte pre .copy-button.error{color:#d20f39;opacity:1}html.theme--catppuccin-latte pre:hover .copy-button{opacity:1}html.theme--catppuccin-latte .admonition{background-color:#e6e9ef;border-style:solid;border-width:2px;border-color:#5c5f77;border-radius:4px;font-size:1rem}html.theme--catppuccin-latte .admonition strong{color:currentColor}html.theme--catppuccin-latte .admonition.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.admonition{font-size:.75rem}html.theme--catppuccin-latte .admonition.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .admonition.is-large{font-size:1.5rem}html.theme--catppuccin-latte .admonition.is-default{background-color:#e6e9ef;border-color:#5c5f77}html.theme--catppuccin-latte .admonition.is-default>.admonition-header{background-color:rgba(0,0,0,0);color:#5c5f77}html.theme--catppuccin-latte .admonition.is-default>.admonition-body{color:#4c4f69}html.theme--catppuccin-latte .admonition.is-info{background-color:#e6e9ef;border-color:#179299}html.theme--catppuccin-latte .admonition.is-info>.admonition-header{background-color:rgba(0,0,0,0);color:#179299}html.theme--catppuccin-latte .admonition.is-info>.admonition-body{color:#4c4f69}html.theme--catppuccin-latte .admonition.is-success{background-color:#e6e9ef;border-color:#40a02b}html.theme--catppuccin-latte .admonition.is-success>.admonition-header{background-color:rgba(0,0,0,0);color:#40a02b}html.theme--catppuccin-latte .admonition.is-success>.admonition-body{color:#4c4f69}html.theme--catppuccin-latte .admonition.is-warning{background-color:#e6e9ef;border-color:#df8e1d}html.theme--catppuccin-latte .admonition.is-warning>.admonition-header{background-color:rgba(0,0,0,0);color:#df8e1d}html.theme--catppuccin-latte .admonition.is-warning>.admonition-body{color:#4c4f69}html.theme--catppuccin-latte .admonition.is-danger{background-color:#e6e9ef;border-color:#d20f39}html.theme--catppuccin-latte .admonition.is-danger>.admonition-header{background-color:rgba(0,0,0,0);color:#d20f39}html.theme--catppuccin-latte .admonition.is-danger>.admonition-body{color:#4c4f69}html.theme--catppuccin-latte .admonition.is-compat{background-color:#e6e9ef;border-color:#04a5e5}html.theme--catppuccin-latte .admonition.is-compat>.admonition-header{background-color:rgba(0,0,0,0);color:#04a5e5}html.theme--catppuccin-latte .admonition.is-compat>.admonition-body{color:#4c4f69}html.theme--catppuccin-latte .admonition.is-todo{background-color:#e6e9ef;border-color:#8839ef}html.theme--catppuccin-latte .admonition.is-todo>.admonition-header{background-color:rgba(0,0,0,0);color:#8839ef}html.theme--catppuccin-latte .admonition.is-todo>.admonition-body{color:#4c4f69}html.theme--catppuccin-latte .admonition-header{color:#5c5f77;background-color:rgba(0,0,0,0);align-items:center;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.5rem .75rem;position:relative}html.theme--catppuccin-latte .admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;margin-right:.75rem;content:"\f06a"}html.theme--catppuccin-latte details.admonition.is-details>.admonition-header{list-style:none}html.theme--catppuccin-latte details.admonition.is-details>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f055"}html.theme--catppuccin-latte details.admonition.is-details[open]>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f056"}html.theme--catppuccin-latte .admonition-body{color:#4c4f69;padding:0.5rem .75rem}html.theme--catppuccin-latte .admonition-body pre{background-color:#e6e9ef}html.theme--catppuccin-latte .admonition-body code{background-color:#e6e9ef}html.theme--catppuccin-latte .docstring{margin-bottom:1em;background-color:rgba(0,0,0,0);border:2px solid #acb0be;border-radius:4px;box-shadow:none;max-width:100%}html.theme--catppuccin-latte .docstring>header{cursor:pointer;display:flex;flex-grow:1;align-items:stretch;padding:0.5rem .75rem;background-color:#e6e9ef;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);box-shadow:none;border-bottom:1px solid #acb0be;overflow:auto}html.theme--catppuccin-latte .docstring>header code{background-color:transparent}html.theme--catppuccin-latte .docstring>header .docstring-article-toggle-button{min-width:1.1rem;padding:0.2rem 0.2rem 0.2rem 0}html.theme--catppuccin-latte .docstring>header .docstring-binding{margin-right:0.3em}html.theme--catppuccin-latte .docstring>header .docstring-category{margin-left:0.3em}html.theme--catppuccin-latte .docstring>section{position:relative;padding:.75rem .75rem;border-bottom:1px solid #acb0be}html.theme--catppuccin-latte .docstring>section:last-child{border-bottom:none}html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink{transition:opacity 0.3s;opacity:0;position:absolute;right:.375rem;bottom:.375rem}html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink:focus{opacity:1 !important}html.theme--catppuccin-latte .docstring:hover>section>a.docs-sourcelink{opacity:0.2}html.theme--catppuccin-latte .docstring:focus-within>section>a.docs-sourcelink{opacity:0.2}html.theme--catppuccin-latte .docstring>section:hover a.docs-sourcelink{opacity:1}html.theme--catppuccin-latte .documenter-example-output{background-color:#eff1f5}html.theme--catppuccin-latte .outdated-warning-overlay{position:fixed;top:0;left:0;right:0;box-shadow:0 0 10px rgba(0,0,0,0.3);z-index:999;background-color:#e6e9ef;color:#4c4f69;border-bottom:3px solid rgba(0,0,0,0);padding:10px 35px;text-align:center;font-size:15px}html.theme--catppuccin-latte .outdated-warning-overlay .outdated-warning-closer{position:absolute;top:calc(50% - 10px);right:18px;cursor:pointer;width:12px}html.theme--catppuccin-latte .outdated-warning-overlay a{color:#1e66f5}html.theme--catppuccin-latte .outdated-warning-overlay a:hover{color:#04a5e5}html.theme--catppuccin-latte .content pre{border:2px solid #acb0be;border-radius:4px}html.theme--catppuccin-latte .content code{font-weight:inherit}html.theme--catppuccin-latte .content a code{color:#1e66f5}html.theme--catppuccin-latte .content a:hover code{color:#04a5e5}html.theme--catppuccin-latte .content h1 code,html.theme--catppuccin-latte .content h2 code,html.theme--catppuccin-latte .content h3 code,html.theme--catppuccin-latte .content h4 code,html.theme--catppuccin-latte .content h5 code,html.theme--catppuccin-latte .content h6 code{color:#4c4f69}html.theme--catppuccin-latte .content table{display:block;width:initial;max-width:100%;overflow-x:auto}html.theme--catppuccin-latte .content blockquote>ul:first-child,html.theme--catppuccin-latte .content blockquote>ol:first-child,html.theme--catppuccin-latte .content .admonition-body>ul:first-child,html.theme--catppuccin-latte .content .admonition-body>ol:first-child{margin-top:0}html.theme--catppuccin-latte pre,html.theme--catppuccin-latte code{font-variant-ligatures:no-contextual}html.theme--catppuccin-latte .breadcrumb a.is-disabled{cursor:default;pointer-events:none}html.theme--catppuccin-latte .breadcrumb a.is-disabled,html.theme--catppuccin-latte .breadcrumb a.is-disabled:hover{color:#41445a}html.theme--catppuccin-latte .hljs{background:initial !important}html.theme--catppuccin-latte .katex .katex-mathml{top:0;right:0}html.theme--catppuccin-latte .katex-display,html.theme--catppuccin-latte mjx-container,html.theme--catppuccin-latte .MathJax_Display{margin:0.5em 0 !important}html.theme--catppuccin-latte html{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto}html.theme--catppuccin-latte li.no-marker{list-style:none}html.theme--catppuccin-latte #documenter .docs-main>article{overflow-wrap:break-word}html.theme--catppuccin-latte #documenter .docs-main>article .math-container{overflow-x:auto;overflow-y:hidden}@media screen and (min-width: 1056px){html.theme--catppuccin-latte #documenter .docs-main{max-width:52rem;margin-left:20rem;padding-right:1rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte #documenter .docs-main{width:100%}html.theme--catppuccin-latte #documenter .docs-main>article{max-width:52rem;margin-left:auto;margin-right:auto;margin-bottom:1rem;padding:0 1rem}html.theme--catppuccin-latte #documenter .docs-main>header,html.theme--catppuccin-latte #documenter .docs-main>nav{max-width:100%;width:100%;margin:0}}html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar{background-color:#eff1f5;border-bottom:1px solid #acb0be;z-index:2;min-height:4rem;margin-bottom:1rem;display:flex}html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar .breadcrumb{flex-grow:1;overflow-x:hidden}html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar .docs-sidebar-button{display:block;font-size:1.5rem;padding-bottom:0.1rem;margin-right:1rem}html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar .docs-right{display:flex;white-space:nowrap;gap:1rem;align-items:center}html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar .docs-right .docs-icon,html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar .docs-right .docs-label{display:inline-block}html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar .docs-right .docs-label{padding:0;margin-left:0.3em}@media screen and (max-width: 1055px){html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar .docs-right .docs-navbar-link{margin-left:0.4rem;margin-right:0.4rem}}html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar>*{margin:auto 0}@media screen and (max-width: 1055px){html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar{position:sticky;top:0;padding:0 1rem;transition-property:top, box-shadow;-webkit-transition-property:top, box-shadow;transition-duration:0.3s;-webkit-transition-duration:0.3s}html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar.headroom--not-top{box-shadow:.2rem 0rem .4rem #171717;transition-duration:0.7s;-webkit-transition-duration:0.7s}html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom{top:-4.5rem;transition-duration:0.7s;-webkit-transition-duration:0.7s}}html.theme--catppuccin-latte #documenter .docs-main section.footnotes{border-top:1px solid #acb0be}html.theme--catppuccin-latte #documenter .docs-main section.footnotes li .tag:first-child,html.theme--catppuccin-latte #documenter .docs-main section.footnotes li .docstring>section>a.docs-sourcelink:first-child,html.theme--catppuccin-latte #documenter .docs-main section.footnotes li .content kbd:first-child,html.theme--catppuccin-latte .content #documenter .docs-main section.footnotes li kbd:first-child{margin-right:1em;margin-bottom:0.4em}html.theme--catppuccin-latte #documenter .docs-main .docs-footer{display:flex;flex-wrap:wrap;margin-left:0;margin-right:0;border-top:1px solid #acb0be;padding-top:1rem;padding-bottom:1rem}@media screen and (max-width: 1055px){html.theme--catppuccin-latte #documenter .docs-main .docs-footer{padding-left:1rem;padding-right:1rem}}html.theme--catppuccin-latte #documenter .docs-main .docs-footer .docs-footer-nextpage,html.theme--catppuccin-latte #documenter .docs-main .docs-footer .docs-footer-prevpage{flex-grow:1}html.theme--catppuccin-latte #documenter .docs-main .docs-footer .docs-footer-nextpage{text-align:right}html.theme--catppuccin-latte #documenter .docs-main .docs-footer .flexbox-break{flex-basis:100%;height:0}html.theme--catppuccin-latte #documenter .docs-main .docs-footer .footer-message{font-size:0.8em;margin:0.5em auto 0 auto;text-align:center}html.theme--catppuccin-latte #documenter .docs-sidebar{display:flex;flex-direction:column;color:#4c4f69;background-color:#e6e9ef;border-right:1px solid #acb0be;padding:0;flex:0 0 18rem;z-index:5;font-size:1rem;position:fixed;left:-18rem;width:18rem;height:100%;transition:left 0.3s}html.theme--catppuccin-latte #documenter .docs-sidebar.visible{left:0;box-shadow:.4rem 0rem .8rem #171717}@media screen and (min-width: 1056px){html.theme--catppuccin-latte #documenter .docs-sidebar.visible{box-shadow:none}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte #documenter .docs-sidebar{left:0;top:0}}html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo{margin-top:1rem;padding:0 1rem}html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img{max-height:6rem;margin:auto}html.theme--catppuccin-latte #documenter .docs-sidebar .docs-package-name{flex-shrink:0;font-size:1.5rem;font-weight:700;text-align:center;white-space:nowrap;overflow:hidden;padding:0.5rem 0}html.theme--catppuccin-latte #documenter .docs-sidebar .docs-package-name .docs-autofit{max-width:16.2rem}html.theme--catppuccin-latte #documenter .docs-sidebar .docs-package-name a,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-package-name a:hover{color:#4c4f69}html.theme--catppuccin-latte #documenter .docs-sidebar .docs-version-selector{border-top:1px solid #acb0be;display:none;padding:0.5rem}html.theme--catppuccin-latte #documenter .docs-sidebar .docs-version-selector.visible{display:flex}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu{flex-grow:1;user-select:none;border-top:1px solid #acb0be;padding-bottom:1.5rem}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu>li>.tocitem{font-weight:bold}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu>li li{font-size:.95rem;margin-left:1em;border-left:1px solid #acb0be}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu input.collapse-toggle{display:none}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu ul.collapsed{display:none}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu input:checked~ul.collapsed{display:block}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu label.tocitem{display:flex}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label{flex-grow:2}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron{display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;font-size:.75rem;margin-left:1rem;margin-top:auto;margin-bottom:auto}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f054"}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu input:checked~label.tocitem .docs-chevron::before{content:"\f078"}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu .tocitem{display:block;padding:0.5rem 0.5rem}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu .tocitem,html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu .tocitem:hover{color:#4c4f69;background:#e6e9ef}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu a.tocitem:hover,html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu label.tocitem:hover{color:#4c4f69;background-color:#f2f4f7}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu li.is-active{border-top:1px solid #acb0be;border-bottom:1px solid #acb0be;background-color:#dce0e8}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem,html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover{background-color:#dce0e8;color:#4c4f69}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover{background-color:#f2f4f7;color:#4c4f69}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu>li.is-active:first-child{border-top:none}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu ul.internal{margin:0 0.5rem 0.5rem;border-top:1px solid #acb0be}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu ul.internal li{font-size:.85rem;border-left:none;margin-left:0;margin-top:0.5rem}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem{width:100%;padding:0}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before{content:"⚬";margin-right:0.4em}html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search{margin:auto;margin-top:0.5rem;margin-bottom:0.5rem}html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input{width:14.4rem}html.theme--catppuccin-latte #documenter .docs-sidebar #documenter-search-query{color:#868c98;width:14.4rem;box-shadow:inset 0 1px 2px rgba(10,10,10,0.1)}@media screen and (min-width: 1056px){html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar{width:.3rem;background:none}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#fff}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover{background:#fff}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte #documenter .docs-sidebar{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--catppuccin-latte #documenter .docs-sidebar::-webkit-scrollbar{width:.3rem;background:none}html.theme--catppuccin-latte #documenter .docs-sidebar::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#fff}html.theme--catppuccin-latte #documenter .docs-sidebar::-webkit-scrollbar-thumb:hover{background:#fff}}html.theme--catppuccin-latte kbd.search-modal-key-hints{border-radius:0.25rem;border:1px solid rgba(245,245,245,0.6);box-shadow:0 2px 0 1px rgba(245,245,245,0.6);cursor:default;font-size:0.9rem;line-height:1.5;min-width:0.75rem;text-align:center;padding:0.1rem 0.3rem;position:relative;top:-1px}html.theme--catppuccin-latte .search-min-width-50{min-width:50%}html.theme--catppuccin-latte .search-min-height-100{min-height:100%}html.theme--catppuccin-latte .search-modal-card-body{max-height:calc(100vh - 15rem)}html.theme--catppuccin-latte .search-result-link{border-radius:0.7em;transition:all 300ms}html.theme--catppuccin-latte .search-result-link:hover,html.theme--catppuccin-latte .search-result-link:focus{background-color:rgba(0,128,128,0.1)}html.theme--catppuccin-latte .search-result-link .property-search-result-badge,html.theme--catppuccin-latte .search-result-link .search-filter{transition:all 300ms}html.theme--catppuccin-latte .property-search-result-badge,html.theme--catppuccin-latte .search-filter{padding:0.15em 0.5em;font-size:0.8em;font-style:italic;text-transform:none !important;line-height:1.5;color:#f5f5f5;background-color:rgba(51,65,85,0.501961);border-radius:0.6rem}html.theme--catppuccin-latte .search-result-link:hover .property-search-result-badge,html.theme--catppuccin-latte .search-result-link:hover .search-filter,html.theme--catppuccin-latte .search-result-link:focus .property-search-result-badge,html.theme--catppuccin-latte .search-result-link:focus .search-filter{color:#333;background-color:#f1f5f9}html.theme--catppuccin-latte .search-filter{color:#333;background-color:#f5f5f5;transition:all 300ms}html.theme--catppuccin-latte .search-filter:hover,html.theme--catppuccin-latte .search-filter:focus{color:#333}html.theme--catppuccin-latte .search-filter-selected{color:#ccd0da;background-color:#7287fd}html.theme--catppuccin-latte .search-filter-selected:hover,html.theme--catppuccin-latte .search-filter-selected:focus{color:#ccd0da}html.theme--catppuccin-latte .search-result-highlight{background-color:#ffdd57;color:black}html.theme--catppuccin-latte .search-divider{border-bottom:1px solid #acb0be}html.theme--catppuccin-latte .search-result-title{width:85%;color:#f5f5f5}html.theme--catppuccin-latte .search-result-code-title{font-size:0.875rem;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--catppuccin-latte #search-modal .modal-card-body::-webkit-scrollbar,html.theme--catppuccin-latte #search-modal .filter-tabs::-webkit-scrollbar{height:10px;width:10px;background-color:transparent}html.theme--catppuccin-latte #search-modal .modal-card-body::-webkit-scrollbar-thumb,html.theme--catppuccin-latte #search-modal .filter-tabs::-webkit-scrollbar-thumb{background-color:gray;border-radius:1rem}html.theme--catppuccin-latte #search-modal .modal-card-body::-webkit-scrollbar-track,html.theme--catppuccin-latte #search-modal .filter-tabs::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.6);background-color:transparent}html.theme--catppuccin-latte .w-100{width:100%}html.theme--catppuccin-latte .gap-2{gap:0.5rem}html.theme--catppuccin-latte .gap-4{gap:1rem}html.theme--catppuccin-latte .gap-8{gap:2rem}html.theme--catppuccin-latte{background-color:#eff1f5;font-size:16px;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--catppuccin-latte a{transition:all 200ms ease}html.theme--catppuccin-latte .label{color:#4c4f69}html.theme--catppuccin-latte .button,html.theme--catppuccin-latte .control.has-icons-left .icon,html.theme--catppuccin-latte .control.has-icons-right .icon,html.theme--catppuccin-latte .input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-latte .pagination-ellipsis,html.theme--catppuccin-latte .pagination-link,html.theme--catppuccin-latte .pagination-next,html.theme--catppuccin-latte .pagination-previous,html.theme--catppuccin-latte .select,html.theme--catppuccin-latte .select select,html.theme--catppuccin-latte .textarea{height:2.5em;color:#4c4f69}html.theme--catppuccin-latte .input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-latte .textarea{transition:all 200ms ease;box-shadow:none;border-width:1px;padding-left:1em;padding-right:1em;color:#4c4f69}html.theme--catppuccin-latte .select:after,html.theme--catppuccin-latte .select select{border-width:1px}html.theme--catppuccin-latte .menu-list a{transition:all 300ms ease}html.theme--catppuccin-latte .modal-card-foot,html.theme--catppuccin-latte .modal-card-head{border-color:#acb0be}html.theme--catppuccin-latte .navbar{border-radius:.4em}html.theme--catppuccin-latte .navbar.is-transparent{background:none}html.theme--catppuccin-latte .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#1e66f5}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .navbar .navbar-menu{background-color:#1e66f5;border-radius:0 0 .4em .4em}}html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink:not(body){color:#ccd0da}html.theme--catppuccin-latte .tag.is-link:not(body),html.theme--catppuccin-latte .docstring>section>a.is-link.docs-sourcelink:not(body),html.theme--catppuccin-latte .content kbd.is-link:not(body){color:#ccd0da}html.theme--catppuccin-latte .ansi span.sgr1{font-weight:bolder}html.theme--catppuccin-latte .ansi span.sgr2{font-weight:lighter}html.theme--catppuccin-latte .ansi span.sgr3{font-style:italic}html.theme--catppuccin-latte .ansi span.sgr4{text-decoration:underline}html.theme--catppuccin-latte .ansi span.sgr7{color:#eff1f5;background-color:#4c4f69}html.theme--catppuccin-latte .ansi span.sgr8{color:transparent}html.theme--catppuccin-latte .ansi span.sgr8 span{color:transparent}html.theme--catppuccin-latte .ansi span.sgr9{text-decoration:line-through}html.theme--catppuccin-latte .ansi span.sgr30{color:#5c5f77}html.theme--catppuccin-latte .ansi span.sgr31{color:#d20f39}html.theme--catppuccin-latte .ansi span.sgr32{color:#40a02b}html.theme--catppuccin-latte .ansi span.sgr33{color:#df8e1d}html.theme--catppuccin-latte .ansi span.sgr34{color:#1e66f5}html.theme--catppuccin-latte .ansi span.sgr35{color:#ea76cb}html.theme--catppuccin-latte .ansi span.sgr36{color:#179299}html.theme--catppuccin-latte .ansi span.sgr37{color:#acb0be}html.theme--catppuccin-latte .ansi span.sgr40{background-color:#5c5f77}html.theme--catppuccin-latte .ansi span.sgr41{background-color:#d20f39}html.theme--catppuccin-latte .ansi span.sgr42{background-color:#40a02b}html.theme--catppuccin-latte .ansi span.sgr43{background-color:#df8e1d}html.theme--catppuccin-latte .ansi span.sgr44{background-color:#1e66f5}html.theme--catppuccin-latte .ansi span.sgr45{background-color:#ea76cb}html.theme--catppuccin-latte .ansi span.sgr46{background-color:#179299}html.theme--catppuccin-latte .ansi span.sgr47{background-color:#acb0be}html.theme--catppuccin-latte .ansi span.sgr90{color:#6c6f85}html.theme--catppuccin-latte .ansi span.sgr91{color:#d20f39}html.theme--catppuccin-latte .ansi span.sgr92{color:#40a02b}html.theme--catppuccin-latte .ansi span.sgr93{color:#df8e1d}html.theme--catppuccin-latte .ansi span.sgr94{color:#1e66f5}html.theme--catppuccin-latte .ansi span.sgr95{color:#ea76cb}html.theme--catppuccin-latte .ansi span.sgr96{color:#179299}html.theme--catppuccin-latte .ansi span.sgr97{color:#bcc0cc}html.theme--catppuccin-latte .ansi span.sgr100{background-color:#6c6f85}html.theme--catppuccin-latte .ansi span.sgr101{background-color:#d20f39}html.theme--catppuccin-latte .ansi span.sgr102{background-color:#40a02b}html.theme--catppuccin-latte .ansi span.sgr103{background-color:#df8e1d}html.theme--catppuccin-latte .ansi span.sgr104{background-color:#1e66f5}html.theme--catppuccin-latte .ansi span.sgr105{background-color:#ea76cb}html.theme--catppuccin-latte .ansi span.sgr106{background-color:#179299}html.theme--catppuccin-latte .ansi span.sgr107{background-color:#bcc0cc}html.theme--catppuccin-latte code.language-julia-repl>span.hljs-meta{color:#40a02b;font-weight:bolder}html.theme--catppuccin-latte code .hljs{color:#4c4f69;background:#eff1f5}html.theme--catppuccin-latte code .hljs-keyword{color:#8839ef}html.theme--catppuccin-latte code .hljs-built_in{color:#d20f39}html.theme--catppuccin-latte code .hljs-type{color:#df8e1d}html.theme--catppuccin-latte code .hljs-literal{color:#fe640b}html.theme--catppuccin-latte code .hljs-number{color:#fe640b}html.theme--catppuccin-latte code .hljs-operator{color:#179299}html.theme--catppuccin-latte code .hljs-punctuation{color:#5c5f77}html.theme--catppuccin-latte code .hljs-property{color:#179299}html.theme--catppuccin-latte code .hljs-regexp{color:#ea76cb}html.theme--catppuccin-latte code .hljs-string{color:#40a02b}html.theme--catppuccin-latte code .hljs-char.escape_{color:#40a02b}html.theme--catppuccin-latte code .hljs-subst{color:#6c6f85}html.theme--catppuccin-latte code .hljs-symbol{color:#dd7878}html.theme--catppuccin-latte code .hljs-variable{color:#8839ef}html.theme--catppuccin-latte code .hljs-variable.language_{color:#8839ef}html.theme--catppuccin-latte code .hljs-variable.constant_{color:#fe640b}html.theme--catppuccin-latte code .hljs-title{color:#1e66f5}html.theme--catppuccin-latte code .hljs-title.class_{color:#df8e1d}html.theme--catppuccin-latte code .hljs-title.function_{color:#1e66f5}html.theme--catppuccin-latte code .hljs-params{color:#4c4f69}html.theme--catppuccin-latte code .hljs-comment{color:#acb0be}html.theme--catppuccin-latte code .hljs-doctag{color:#d20f39}html.theme--catppuccin-latte code .hljs-meta{color:#fe640b}html.theme--catppuccin-latte code .hljs-section{color:#1e66f5}html.theme--catppuccin-latte code .hljs-tag{color:#6c6f85}html.theme--catppuccin-latte code .hljs-name{color:#8839ef}html.theme--catppuccin-latte code .hljs-attr{color:#1e66f5}html.theme--catppuccin-latte code .hljs-attribute{color:#40a02b}html.theme--catppuccin-latte code .hljs-bullet{color:#179299}html.theme--catppuccin-latte code .hljs-code{color:#40a02b}html.theme--catppuccin-latte code .hljs-emphasis{color:#d20f39;font-style:italic}html.theme--catppuccin-latte code .hljs-strong{color:#d20f39;font-weight:bold}html.theme--catppuccin-latte code .hljs-formula{color:#179299}html.theme--catppuccin-latte code .hljs-link{color:#209fb5;font-style:italic}html.theme--catppuccin-latte code .hljs-quote{color:#40a02b;font-style:italic}html.theme--catppuccin-latte code .hljs-selector-tag{color:#df8e1d}html.theme--catppuccin-latte code .hljs-selector-id{color:#1e66f5}html.theme--catppuccin-latte code .hljs-selector-class{color:#179299}html.theme--catppuccin-latte code .hljs-selector-attr{color:#8839ef}html.theme--catppuccin-latte code .hljs-selector-pseudo{color:#179299}html.theme--catppuccin-latte code .hljs-template-tag{color:#dd7878}html.theme--catppuccin-latte code .hljs-template-variable{color:#dd7878}html.theme--catppuccin-latte code .hljs-addition{color:#40a02b;background:rgba(166,227,161,0.15)}html.theme--catppuccin-latte code .hljs-deletion{color:#d20f39;background:rgba(243,139,168,0.15)}html.theme--catppuccin-latte .search-result-link{border-radius:0.7em;transition:all 300ms}html.theme--catppuccin-latte .search-result-link:hover,html.theme--catppuccin-latte .search-result-link:focus{background-color:#ccd0da}html.theme--catppuccin-latte .search-result-link .property-search-result-badge,html.theme--catppuccin-latte .search-result-link .search-filter{transition:all 300ms}html.theme--catppuccin-latte .search-result-link:hover .property-search-result-badge,html.theme--catppuccin-latte .search-result-link:hover .search-filter,html.theme--catppuccin-latte .search-result-link:focus .property-search-result-badge,html.theme--catppuccin-latte .search-result-link:focus .search-filter{color:#ccd0da !important;background-color:#7287fd !important}html.theme--catppuccin-latte .search-result-title{color:#4c4f69}html.theme--catppuccin-latte .search-result-highlight{background-color:#d20f39;color:#e6e9ef}html.theme--catppuccin-latte .search-divider{border-bottom:1px solid #5e6d6f50}html.theme--catppuccin-latte .w-100{width:100%}html.theme--catppuccin-latte .gap-2{gap:0.5rem}html.theme--catppuccin-latte .gap-4{gap:1rem} diff --git a/v0.5.0/assets/themes/catppuccin-macchiato.css b/v0.5.0/assets/themes/catppuccin-macchiato.css new file mode 100644 index 00000000..a9cf9c57 --- /dev/null +++ b/v0.5.0/assets/themes/catppuccin-macchiato.css @@ -0,0 +1 @@ +html.theme--catppuccin-macchiato .pagination-previous,html.theme--catppuccin-macchiato .pagination-next,html.theme--catppuccin-macchiato .pagination-link,html.theme--catppuccin-macchiato .pagination-ellipsis,html.theme--catppuccin-macchiato .file-cta,html.theme--catppuccin-macchiato .file-name,html.theme--catppuccin-macchiato .select select,html.theme--catppuccin-macchiato .textarea,html.theme--catppuccin-macchiato .input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-macchiato .button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:.4em;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.5em - 1px);padding-left:calc(0.75em - 1px);padding-right:calc(0.75em - 1px);padding-top:calc(0.5em - 1px);position:relative;vertical-align:top}html.theme--catppuccin-macchiato .pagination-previous:focus,html.theme--catppuccin-macchiato .pagination-next:focus,html.theme--catppuccin-macchiato .pagination-link:focus,html.theme--catppuccin-macchiato .pagination-ellipsis:focus,html.theme--catppuccin-macchiato .file-cta:focus,html.theme--catppuccin-macchiato .file-name:focus,html.theme--catppuccin-macchiato .select select:focus,html.theme--catppuccin-macchiato .textarea:focus,html.theme--catppuccin-macchiato .input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input:focus,html.theme--catppuccin-macchiato .button:focus,html.theme--catppuccin-macchiato .is-focused.pagination-previous,html.theme--catppuccin-macchiato .is-focused.pagination-next,html.theme--catppuccin-macchiato .is-focused.pagination-link,html.theme--catppuccin-macchiato .is-focused.pagination-ellipsis,html.theme--catppuccin-macchiato .is-focused.file-cta,html.theme--catppuccin-macchiato .is-focused.file-name,html.theme--catppuccin-macchiato .select select.is-focused,html.theme--catppuccin-macchiato .is-focused.textarea,html.theme--catppuccin-macchiato .is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .is-focused.button,html.theme--catppuccin-macchiato .pagination-previous:active,html.theme--catppuccin-macchiato .pagination-next:active,html.theme--catppuccin-macchiato .pagination-link:active,html.theme--catppuccin-macchiato .pagination-ellipsis:active,html.theme--catppuccin-macchiato .file-cta:active,html.theme--catppuccin-macchiato .file-name:active,html.theme--catppuccin-macchiato .select select:active,html.theme--catppuccin-macchiato .textarea:active,html.theme--catppuccin-macchiato .input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input:active,html.theme--catppuccin-macchiato .button:active,html.theme--catppuccin-macchiato .is-active.pagination-previous,html.theme--catppuccin-macchiato .is-active.pagination-next,html.theme--catppuccin-macchiato .is-active.pagination-link,html.theme--catppuccin-macchiato .is-active.pagination-ellipsis,html.theme--catppuccin-macchiato .is-active.file-cta,html.theme--catppuccin-macchiato .is-active.file-name,html.theme--catppuccin-macchiato .select select.is-active,html.theme--catppuccin-macchiato .is-active.textarea,html.theme--catppuccin-macchiato .is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-macchiato .is-active.button{outline:none}html.theme--catppuccin-macchiato .pagination-previous[disabled],html.theme--catppuccin-macchiato .pagination-next[disabled],html.theme--catppuccin-macchiato .pagination-link[disabled],html.theme--catppuccin-macchiato .pagination-ellipsis[disabled],html.theme--catppuccin-macchiato .file-cta[disabled],html.theme--catppuccin-macchiato .file-name[disabled],html.theme--catppuccin-macchiato .select select[disabled],html.theme--catppuccin-macchiato .textarea[disabled],html.theme--catppuccin-macchiato .input[disabled],html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input[disabled],html.theme--catppuccin-macchiato .button[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .pagination-previous,html.theme--catppuccin-macchiato fieldset[disabled] .pagination-previous,fieldset[disabled] html.theme--catppuccin-macchiato .pagination-next,html.theme--catppuccin-macchiato fieldset[disabled] .pagination-next,fieldset[disabled] html.theme--catppuccin-macchiato .pagination-link,html.theme--catppuccin-macchiato fieldset[disabled] .pagination-link,fieldset[disabled] html.theme--catppuccin-macchiato .pagination-ellipsis,html.theme--catppuccin-macchiato fieldset[disabled] .pagination-ellipsis,fieldset[disabled] html.theme--catppuccin-macchiato .file-cta,html.theme--catppuccin-macchiato fieldset[disabled] .file-cta,fieldset[disabled] html.theme--catppuccin-macchiato .file-name,html.theme--catppuccin-macchiato fieldset[disabled] .file-name,fieldset[disabled] html.theme--catppuccin-macchiato .select select,fieldset[disabled] html.theme--catppuccin-macchiato .textarea,fieldset[disabled] html.theme--catppuccin-macchiato .input,fieldset[disabled] html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-macchiato fieldset[disabled] .select select,html.theme--catppuccin-macchiato .select fieldset[disabled] select,html.theme--catppuccin-macchiato fieldset[disabled] .textarea,html.theme--catppuccin-macchiato fieldset[disabled] .input,html.theme--catppuccin-macchiato fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-macchiato #documenter .docs-sidebar fieldset[disabled] form.docs-search>input,fieldset[disabled] html.theme--catppuccin-macchiato .button,html.theme--catppuccin-macchiato fieldset[disabled] .button{cursor:not-allowed}html.theme--catppuccin-macchiato .tabs,html.theme--catppuccin-macchiato .pagination-previous,html.theme--catppuccin-macchiato .pagination-next,html.theme--catppuccin-macchiato .pagination-link,html.theme--catppuccin-macchiato .pagination-ellipsis,html.theme--catppuccin-macchiato .breadcrumb,html.theme--catppuccin-macchiato .file,html.theme--catppuccin-macchiato .button,.is-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.theme--catppuccin-macchiato .navbar-link:not(.is-arrowless)::after,html.theme--catppuccin-macchiato .select:not(.is-multiple):not(.is-loading)::after{border:3px solid rgba(0,0,0,0);border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:0.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:0.625em}html.theme--catppuccin-macchiato .admonition:not(:last-child),html.theme--catppuccin-macchiato .tabs:not(:last-child),html.theme--catppuccin-macchiato .pagination:not(:last-child),html.theme--catppuccin-macchiato .message:not(:last-child),html.theme--catppuccin-macchiato .level:not(:last-child),html.theme--catppuccin-macchiato .breadcrumb:not(:last-child),html.theme--catppuccin-macchiato .block:not(:last-child),html.theme--catppuccin-macchiato .title:not(:last-child),html.theme--catppuccin-macchiato .subtitle:not(:last-child),html.theme--catppuccin-macchiato .table-container:not(:last-child),html.theme--catppuccin-macchiato .table:not(:last-child),html.theme--catppuccin-macchiato .progress:not(:last-child),html.theme--catppuccin-macchiato .notification:not(:last-child),html.theme--catppuccin-macchiato .content:not(:last-child),html.theme--catppuccin-macchiato .box:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-macchiato .modal-close,html.theme--catppuccin-macchiato .delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,0.2);border:none;border-radius:9999px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}html.theme--catppuccin-macchiato .modal-close::before,html.theme--catppuccin-macchiato .delete::before,html.theme--catppuccin-macchiato .modal-close::after,html.theme--catppuccin-macchiato .delete::after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--catppuccin-macchiato .modal-close::before,html.theme--catppuccin-macchiato .delete::before{height:2px;width:50%}html.theme--catppuccin-macchiato .modal-close::after,html.theme--catppuccin-macchiato .delete::after{height:50%;width:2px}html.theme--catppuccin-macchiato .modal-close:hover,html.theme--catppuccin-macchiato .delete:hover,html.theme--catppuccin-macchiato .modal-close:focus,html.theme--catppuccin-macchiato .delete:focus{background-color:rgba(10,10,10,0.3)}html.theme--catppuccin-macchiato .modal-close:active,html.theme--catppuccin-macchiato .delete:active{background-color:rgba(10,10,10,0.4)}html.theme--catppuccin-macchiato .is-small.modal-close,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.modal-close,html.theme--catppuccin-macchiato .is-small.delete,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}html.theme--catppuccin-macchiato .is-medium.modal-close,html.theme--catppuccin-macchiato .is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}html.theme--catppuccin-macchiato .is-large.modal-close,html.theme--catppuccin-macchiato .is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}html.theme--catppuccin-macchiato .control.is-loading::after,html.theme--catppuccin-macchiato .select.is-loading::after,html.theme--catppuccin-macchiato .loader,html.theme--catppuccin-macchiato .button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #8087a2;border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}html.theme--catppuccin-macchiato .hero-video,html.theme--catppuccin-macchiato .modal-background,html.theme--catppuccin-macchiato .modal,html.theme--catppuccin-macchiato .image.is-square img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--catppuccin-macchiato .image.is-square .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--catppuccin-macchiato .image.is-1by1 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--catppuccin-macchiato .image.is-1by1 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--catppuccin-macchiato .image.is-5by4 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--catppuccin-macchiato .image.is-5by4 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--catppuccin-macchiato .image.is-4by3 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--catppuccin-macchiato .image.is-4by3 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--catppuccin-macchiato .image.is-3by2 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--catppuccin-macchiato .image.is-3by2 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--catppuccin-macchiato .image.is-5by3 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--catppuccin-macchiato .image.is-5by3 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--catppuccin-macchiato .image.is-16by9 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--catppuccin-macchiato .image.is-16by9 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--catppuccin-macchiato .image.is-2by1 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--catppuccin-macchiato .image.is-2by1 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--catppuccin-macchiato .image.is-3by1 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--catppuccin-macchiato .image.is-3by1 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--catppuccin-macchiato .image.is-4by5 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--catppuccin-macchiato .image.is-4by5 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--catppuccin-macchiato .image.is-3by4 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--catppuccin-macchiato .image.is-3by4 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--catppuccin-macchiato .image.is-2by3 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--catppuccin-macchiato .image.is-2by3 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--catppuccin-macchiato .image.is-3by5 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--catppuccin-macchiato .image.is-3by5 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--catppuccin-macchiato .image.is-9by16 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--catppuccin-macchiato .image.is-9by16 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--catppuccin-macchiato .image.is-1by2 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--catppuccin-macchiato .image.is-1by2 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--catppuccin-macchiato .image.is-1by3 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--catppuccin-macchiato .image.is-1by3 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio,.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}html.theme--catppuccin-macchiato .navbar-burger{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#f5f5f5 !important}a.has-text-light:hover,a.has-text-light:focus{color:#dbdbdb !important}.has-background-light{background-color:#f5f5f5 !important}.has-text-dark{color:#363a4f !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#212431 !important}.has-background-dark{background-color:#363a4f !important}.has-text-primary{color:#8aadf4 !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#5b8cf0 !important}.has-background-primary{background-color:#8aadf4 !important}.has-text-primary-light{color:#ecf2fd !important}a.has-text-primary-light:hover,a.has-text-primary-light:focus{color:#bed1f9 !important}.has-background-primary-light{background-color:#ecf2fd !important}.has-text-primary-dark{color:#0e3b95 !important}a.has-text-primary-dark:hover,a.has-text-primary-dark:focus{color:#124dc4 !important}.has-background-primary-dark{background-color:#0e3b95 !important}.has-text-link{color:#8aadf4 !important}a.has-text-link:hover,a.has-text-link:focus{color:#5b8cf0 !important}.has-background-link{background-color:#8aadf4 !important}.has-text-link-light{color:#ecf2fd !important}a.has-text-link-light:hover,a.has-text-link-light:focus{color:#bed1f9 !important}.has-background-link-light{background-color:#ecf2fd !important}.has-text-link-dark{color:#0e3b95 !important}a.has-text-link-dark:hover,a.has-text-link-dark:focus{color:#124dc4 !important}.has-background-link-dark{background-color:#0e3b95 !important}.has-text-info{color:#8bd5ca !important}a.has-text-info:hover,a.has-text-info:focus{color:#66c7b9 !important}.has-background-info{background-color:#8bd5ca !important}.has-text-info-light{color:#f0faf8 !important}a.has-text-info-light:hover,a.has-text-info-light:focus{color:#cbece7 !important}.has-background-info-light{background-color:#f0faf8 !important}.has-text-info-dark{color:#276d62 !important}a.has-text-info-dark:hover,a.has-text-info-dark:focus{color:#359284 !important}.has-background-info-dark{background-color:#276d62 !important}.has-text-success{color:#a6da95 !important}a.has-text-success:hover,a.has-text-success:focus{color:#86cd6f !important}.has-background-success{background-color:#a6da95 !important}.has-text-success-light{color:#f2faf0 !important}a.has-text-success-light:hover,a.has-text-success-light:focus{color:#d3edca !important}.has-background-success-light{background-color:#f2faf0 !important}.has-text-success-dark{color:#386e26 !important}a.has-text-success-dark:hover,a.has-text-success-dark:focus{color:#4b9333 !important}.has-background-success-dark{background-color:#386e26 !important}.has-text-warning{color:#eed49f !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#e6c174 !important}.has-background-warning{background-color:#eed49f !important}.has-text-warning-light{color:#fcf7ee !important}a.has-text-warning-light:hover,a.has-text-warning-light:focus{color:#f4e4c2 !important}.has-background-warning-light{background-color:#fcf7ee !important}.has-text-warning-dark{color:#7e5c16 !important}a.has-text-warning-dark:hover,a.has-text-warning-dark:focus{color:#a97b1e !important}.has-background-warning-dark{background-color:#7e5c16 !important}.has-text-danger{color:#ed8796 !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#e65b6f !important}.has-background-danger{background-color:#ed8796 !important}.has-text-danger-light{color:#fcedef !important}a.has-text-danger-light:hover,a.has-text-danger-light:focus{color:#f6c1c9 !important}.has-background-danger-light{background-color:#fcedef !important}.has-text-danger-dark{color:#971729 !important}a.has-text-danger-dark:hover,a.has-text-danger-dark:focus{color:#c31d36 !important}.has-background-danger-dark{background-color:#971729 !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#363a4f !important}.has-background-grey-darker{background-color:#363a4f !important}.has-text-grey-dark{color:#494d64 !important}.has-background-grey-dark{background-color:#494d64 !important}.has-text-grey{color:#5b6078 !important}.has-background-grey{background-color:#5b6078 !important}.has-text-grey-light{color:#6e738d !important}.has-background-grey-light{background-color:#6e738d !important}.has-text-grey-lighter{color:#8087a2 !important}.has-background-grey-lighter{background-color:#8087a2 !important}.has-text-white-ter{color:#f5f5f5 !important}.has-background-white-ter{background-color:#f5f5f5 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.is-flex-direction-row{flex-direction:row !important}.is-flex-direction-row-reverse{flex-direction:row-reverse !important}.is-flex-direction-column{flex-direction:column !important}.is-flex-direction-column-reverse{flex-direction:column-reverse !important}.is-flex-wrap-nowrap{flex-wrap:nowrap !important}.is-flex-wrap-wrap{flex-wrap:wrap !important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse !important}.is-justify-content-flex-start{justify-content:flex-start !important}.is-justify-content-flex-end{justify-content:flex-end !important}.is-justify-content-center{justify-content:center !important}.is-justify-content-space-between{justify-content:space-between !important}.is-justify-content-space-around{justify-content:space-around !important}.is-justify-content-space-evenly{justify-content:space-evenly !important}.is-justify-content-start{justify-content:start !important}.is-justify-content-end{justify-content:end !important}.is-justify-content-left{justify-content:left !important}.is-justify-content-right{justify-content:right !important}.is-align-content-flex-start{align-content:flex-start !important}.is-align-content-flex-end{align-content:flex-end !important}.is-align-content-center{align-content:center !important}.is-align-content-space-between{align-content:space-between !important}.is-align-content-space-around{align-content:space-around !important}.is-align-content-space-evenly{align-content:space-evenly !important}.is-align-content-stretch{align-content:stretch !important}.is-align-content-start{align-content:start !important}.is-align-content-end{align-content:end !important}.is-align-content-baseline{align-content:baseline !important}.is-align-items-stretch{align-items:stretch !important}.is-align-items-flex-start{align-items:flex-start !important}.is-align-items-flex-end{align-items:flex-end !important}.is-align-items-center{align-items:center !important}.is-align-items-baseline{align-items:baseline !important}.is-align-items-start{align-items:start !important}.is-align-items-end{align-items:end !important}.is-align-items-self-start{align-items:self-start !important}.is-align-items-self-end{align-items:self-end !important}.is-align-self-auto{align-self:auto !important}.is-align-self-flex-start{align-self:flex-start !important}.is-align-self-flex-end{align-self:flex-end !important}.is-align-self-center{align-self:center !important}.is-align-self-baseline{align-self:baseline !important}.is-align-self-stretch{align-self:stretch !important}.is-flex-grow-0{flex-grow:0 !important}.is-flex-grow-1{flex-grow:1 !important}.is-flex-grow-2{flex-grow:2 !important}.is-flex-grow-3{flex-grow:3 !important}.is-flex-grow-4{flex-grow:4 !important}.is-flex-grow-5{flex-grow:5 !important}.is-flex-shrink-0{flex-shrink:0 !important}.is-flex-shrink-1{flex-shrink:1 !important}.is-flex-shrink-2{flex-shrink:2 !important}.is-flex-shrink-3{flex-shrink:3 !important}.is-flex-shrink-4{flex-shrink:4 !important}.is-flex-shrink-5{flex-shrink:5 !important}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-clickable{cursor:pointer !important;pointer-events:all !important}.is-clipped{overflow:hidden !important}.is-relative{position:relative !important}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.m-0{margin:0 !important}.mt-0{margin-top:0 !important}.mr-0{margin-right:0 !important}.mb-0{margin-bottom:0 !important}.ml-0{margin-left:0 !important}.mx-0{margin-left:0 !important;margin-right:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:.25rem !important}.mt-1{margin-top:.25rem !important}.mr-1{margin-right:.25rem !important}.mb-1{margin-bottom:.25rem !important}.ml-1{margin-left:.25rem !important}.mx-1{margin-left:.25rem !important;margin-right:.25rem !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.m-2{margin:.5rem !important}.mt-2{margin-top:.5rem !important}.mr-2{margin-right:.5rem !important}.mb-2{margin-bottom:.5rem !important}.ml-2{margin-left:.5rem !important}.mx-2{margin-left:.5rem !important;margin-right:.5rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.m-3{margin:.75rem !important}.mt-3{margin-top:.75rem !important}.mr-3{margin-right:.75rem !important}.mb-3{margin-bottom:.75rem !important}.ml-3{margin-left:.75rem !important}.mx-3{margin-left:.75rem !important;margin-right:.75rem !important}.my-3{margin-top:.75rem !important;margin-bottom:.75rem !important}.m-4{margin:1rem !important}.mt-4{margin-top:1rem !important}.mr-4{margin-right:1rem !important}.mb-4{margin-bottom:1rem !important}.ml-4{margin-left:1rem !important}.mx-4{margin-left:1rem !important;margin-right:1rem !important}.my-4{margin-top:1rem !important;margin-bottom:1rem !important}.m-5{margin:1.5rem !important}.mt-5{margin-top:1.5rem !important}.mr-5{margin-right:1.5rem !important}.mb-5{margin-bottom:1.5rem !important}.ml-5{margin-left:1.5rem !important}.mx-5{margin-left:1.5rem !important;margin-right:1.5rem !important}.my-5{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-6{margin:3rem !important}.mt-6{margin-top:3rem !important}.mr-6{margin-right:3rem !important}.mb-6{margin-bottom:3rem !important}.ml-6{margin-left:3rem !important}.mx-6{margin-left:3rem !important;margin-right:3rem !important}.my-6{margin-top:3rem !important;margin-bottom:3rem !important}.m-auto{margin:auto !important}.mt-auto{margin-top:auto !important}.mr-auto{margin-right:auto !important}.mb-auto{margin-bottom:auto !important}.ml-auto{margin-left:auto !important}.mx-auto{margin-left:auto !important;margin-right:auto !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.p-0{padding:0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-left:0 !important;padding-right:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:.25rem !important}.pt-1{padding-top:.25rem !important}.pr-1{padding-right:.25rem !important}.pb-1{padding-bottom:.25rem !important}.pl-1{padding-left:.25rem !important}.px-1{padding-left:.25rem !important;padding-right:.25rem !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.p-2{padding:.5rem !important}.pt-2{padding-top:.5rem !important}.pr-2{padding-right:.5rem !important}.pb-2{padding-bottom:.5rem !important}.pl-2{padding-left:.5rem !important}.px-2{padding-left:.5rem !important;padding-right:.5rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.p-3{padding:.75rem !important}.pt-3{padding-top:.75rem !important}.pr-3{padding-right:.75rem !important}.pb-3{padding-bottom:.75rem !important}.pl-3{padding-left:.75rem !important}.px-3{padding-left:.75rem !important;padding-right:.75rem !important}.py-3{padding-top:.75rem !important;padding-bottom:.75rem !important}.p-4{padding:1rem !important}.pt-4{padding-top:1rem !important}.pr-4{padding-right:1rem !important}.pb-4{padding-bottom:1rem !important}.pl-4{padding-left:1rem !important}.px-4{padding-left:1rem !important;padding-right:1rem !important}.py-4{padding-top:1rem !important;padding-bottom:1rem !important}.p-5{padding:1.5rem !important}.pt-5{padding-top:1.5rem !important}.pr-5{padding-right:1.5rem !important}.pb-5{padding-bottom:1.5rem !important}.pl-5{padding-left:1.5rem !important}.px-5{padding-left:1.5rem !important;padding-right:1.5rem !important}.py-5{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-6{padding:3rem !important}.pt-6{padding-top:3rem !important}.pr-6{padding-right:3rem !important}.pb-6{padding-bottom:3rem !important}.pl-6{padding-left:3rem !important}.px-6{padding-left:3rem !important;padding-right:3rem !important}.py-6{padding-top:3rem !important;padding-bottom:3rem !important}.p-auto{padding:auto !important}.pt-auto{padding-top:auto !important}.pr-auto{padding-right:auto !important}.pb-auto{padding-bottom:auto !important}.pl-auto{padding-left:auto !important}.px-auto{padding-left:auto !important;padding-right:auto !important}.py-auto{padding-top:auto !important;padding-bottom:auto !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:1rem !important}.is-size-7,html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink{font-size:.75rem !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:1rem !important}.is-size-7-mobile{font-size:.75rem !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:1rem !important}.is-size-7-tablet{font-size:.75rem !important}}@media screen and (max-width: 1055px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:1rem !important}.is-size-7-touch{font-size:.75rem !important}}@media screen and (min-width: 1056px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:1rem !important}.is-size-7-desktop{font-size:.75rem !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:1rem !important}.is-size-7-widescreen{font-size:.75rem !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:1rem !important}.is-size-7-fullhd{font-size:.75rem !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1055px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1056px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1055px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1056px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1055px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1056px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1055px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1056px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.is-underlined{text-decoration:underline !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-secondary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-sans-serif{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-monospace{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-family-code{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1055px){.is-block-touch{display:block !important}}@media screen and (min-width: 1056px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1055px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1056px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1055px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1056px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1055px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1056px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1055px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1056px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:0.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:0.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1055px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1056px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1055px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1056px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}html.theme--catppuccin-macchiato html{background-color:#24273a;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--catppuccin-macchiato article,html.theme--catppuccin-macchiato aside,html.theme--catppuccin-macchiato figure,html.theme--catppuccin-macchiato footer,html.theme--catppuccin-macchiato header,html.theme--catppuccin-macchiato hgroup,html.theme--catppuccin-macchiato section{display:block}html.theme--catppuccin-macchiato body,html.theme--catppuccin-macchiato button,html.theme--catppuccin-macchiato input,html.theme--catppuccin-macchiato optgroup,html.theme--catppuccin-macchiato select,html.theme--catppuccin-macchiato textarea{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif}html.theme--catppuccin-macchiato code,html.theme--catppuccin-macchiato pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--catppuccin-macchiato body{color:#cad3f5;font-size:1em;font-weight:400;line-height:1.5}html.theme--catppuccin-macchiato a{color:#8aadf4;cursor:pointer;text-decoration:none}html.theme--catppuccin-macchiato a strong{color:currentColor}html.theme--catppuccin-macchiato a:hover{color:#91d7e3}html.theme--catppuccin-macchiato code{background-color:#1e2030;color:#cad3f5;font-size:.875em;font-weight:normal;padding:.1em}html.theme--catppuccin-macchiato hr{background-color:#1e2030;border:none;display:block;height:2px;margin:1.5rem 0}html.theme--catppuccin-macchiato img{height:auto;max-width:100%}html.theme--catppuccin-macchiato input[type="checkbox"],html.theme--catppuccin-macchiato input[type="radio"]{vertical-align:baseline}html.theme--catppuccin-macchiato small{font-size:.875em}html.theme--catppuccin-macchiato span{font-style:inherit;font-weight:inherit}html.theme--catppuccin-macchiato strong{color:#b5c1f1;font-weight:700}html.theme--catppuccin-macchiato fieldset{border:none}html.theme--catppuccin-macchiato pre{-webkit-overflow-scrolling:touch;background-color:#1e2030;color:#cad3f5;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}html.theme--catppuccin-macchiato pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}html.theme--catppuccin-macchiato table td,html.theme--catppuccin-macchiato table th{vertical-align:top}html.theme--catppuccin-macchiato table td:not([align]),html.theme--catppuccin-macchiato table th:not([align]){text-align:inherit}html.theme--catppuccin-macchiato table th{color:#b5c1f1}html.theme--catppuccin-macchiato .box{background-color:#494d64;border-radius:8px;box-shadow:none;color:#cad3f5;display:block;padding:1.25rem}html.theme--catppuccin-macchiato a.box:hover,html.theme--catppuccin-macchiato a.box:focus{box-shadow:0 0.5em 1em -0.125em rgba(10,10,10,0.1),0 0 0 1px #8aadf4}html.theme--catppuccin-macchiato a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2),0 0 0 1px #8aadf4}html.theme--catppuccin-macchiato .button{background-color:#1e2030;border-color:#3b3f5f;border-width:1px;color:#8aadf4;cursor:pointer;justify-content:center;padding-bottom:calc(0.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(0.5em - 1px);text-align:center;white-space:nowrap}html.theme--catppuccin-macchiato .button strong{color:inherit}html.theme--catppuccin-macchiato .button .icon,html.theme--catppuccin-macchiato .button .icon.is-small,html.theme--catppuccin-macchiato .button #documenter .docs-sidebar form.docs-search>input.icon,html.theme--catppuccin-macchiato #documenter .docs-sidebar .button form.docs-search>input.icon,html.theme--catppuccin-macchiato .button .icon.is-medium,html.theme--catppuccin-macchiato .button .icon.is-large{height:1.5em;width:1.5em}html.theme--catppuccin-macchiato .button .icon:first-child:not(:last-child){margin-left:calc(-0.5em - 1px);margin-right:.25em}html.theme--catppuccin-macchiato .button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-0.5em - 1px)}html.theme--catppuccin-macchiato .button .icon:first-child:last-child{margin-left:calc(-0.5em - 1px);margin-right:calc(-0.5em - 1px)}html.theme--catppuccin-macchiato .button:hover,html.theme--catppuccin-macchiato .button.is-hovered{border-color:#6e738d;color:#b5c1f1}html.theme--catppuccin-macchiato .button:focus,html.theme--catppuccin-macchiato .button.is-focused{border-color:#6e738d;color:#739df2}html.theme--catppuccin-macchiato .button:focus:not(:active),html.theme--catppuccin-macchiato .button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(138,173,244,0.25)}html.theme--catppuccin-macchiato .button:active,html.theme--catppuccin-macchiato .button.is-active{border-color:#494d64;color:#b5c1f1}html.theme--catppuccin-macchiato .button.is-text{background-color:transparent;border-color:transparent;color:#cad3f5;text-decoration:underline}html.theme--catppuccin-macchiato .button.is-text:hover,html.theme--catppuccin-macchiato .button.is-text.is-hovered,html.theme--catppuccin-macchiato .button.is-text:focus,html.theme--catppuccin-macchiato .button.is-text.is-focused{background-color:#1e2030;color:#b5c1f1}html.theme--catppuccin-macchiato .button.is-text:active,html.theme--catppuccin-macchiato .button.is-text.is-active{background-color:#141620;color:#b5c1f1}html.theme--catppuccin-macchiato .button.is-text[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}html.theme--catppuccin-macchiato .button.is-ghost{background:none;border-color:rgba(0,0,0,0);color:#8aadf4;text-decoration:none}html.theme--catppuccin-macchiato .button.is-ghost:hover,html.theme--catppuccin-macchiato .button.is-ghost.is-hovered{color:#8aadf4;text-decoration:underline}html.theme--catppuccin-macchiato .button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-white:hover,html.theme--catppuccin-macchiato .button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-white:focus,html.theme--catppuccin-macchiato .button.is-white.is-focused{border-color:transparent;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-white:focus:not(:active),html.theme--catppuccin-macchiato .button.is-white.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-macchiato .button.is-white:active,html.theme--catppuccin-macchiato .button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-white[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-white{background-color:#fff;border-color:#fff;box-shadow:none}html.theme--catppuccin-macchiato .button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-macchiato .button.is-white.is-inverted:hover,html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-hovered{background-color:#000}html.theme--catppuccin-macchiato .button.is-white.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}html.theme--catppuccin-macchiato .button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-macchiato .button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-macchiato .button.is-white.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-white.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-white.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-white.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-white.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-white.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-macchiato .button.is-white.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-black:hover,html.theme--catppuccin-macchiato .button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-black:focus,html.theme--catppuccin-macchiato .button.is-black.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-black:focus:not(:active),html.theme--catppuccin-macchiato .button.is-black.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-macchiato .button.is-black:active,html.theme--catppuccin-macchiato .button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-black[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-black{background-color:#0a0a0a;border-color:#0a0a0a;box-shadow:none}html.theme--catppuccin-macchiato .button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-black.is-inverted:hover,html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-macchiato .button.is-black.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-black.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-black.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-black.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-macchiato .button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-macchiato .button.is-black.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-black.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-black.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-black.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-macchiato .button.is-light{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-light:hover,html.theme--catppuccin-macchiato .button.is-light.is-hovered{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-light:focus,html.theme--catppuccin-macchiato .button.is-light.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-light:focus:not(:active),html.theme--catppuccin-macchiato .button.is-light.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-macchiato .button.is-light:active,html.theme--catppuccin-macchiato .button.is-light.is-active{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-light[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-light{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none}html.theme--catppuccin-macchiato .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-macchiato .button.is-light.is-inverted:hover,html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-light.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#f5f5f5}html.theme--catppuccin-macchiato .button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-macchiato .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}html.theme--catppuccin-macchiato .button.is-light.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-light.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-light.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-light.is-outlined.is-focused{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}html.theme--catppuccin-macchiato .button.is-light.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-light.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-light.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-macchiato .button.is-light.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-dark,html.theme--catppuccin-macchiato .content kbd.button{background-color:#363a4f;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-dark:hover,html.theme--catppuccin-macchiato .content kbd.button:hover,html.theme--catppuccin-macchiato .button.is-dark.is-hovered,html.theme--catppuccin-macchiato .content kbd.button.is-hovered{background-color:#313447;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-dark:focus,html.theme--catppuccin-macchiato .content kbd.button:focus,html.theme--catppuccin-macchiato .button.is-dark.is-focused,html.theme--catppuccin-macchiato .content kbd.button.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-dark:focus:not(:active),html.theme--catppuccin-macchiato .content kbd.button:focus:not(:active),html.theme--catppuccin-macchiato .button.is-dark.is-focused:not(:active),html.theme--catppuccin-macchiato .content kbd.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(54,58,79,0.25)}html.theme--catppuccin-macchiato .button.is-dark:active,html.theme--catppuccin-macchiato .content kbd.button:active,html.theme--catppuccin-macchiato .button.is-dark.is-active,html.theme--catppuccin-macchiato .content kbd.button.is-active{background-color:#2c2f40;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-dark[disabled],html.theme--catppuccin-macchiato .content kbd.button[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-dark,fieldset[disabled] html.theme--catppuccin-macchiato .content kbd.button{background-color:#363a4f;border-color:#363a4f;box-shadow:none}html.theme--catppuccin-macchiato .button.is-dark.is-inverted,html.theme--catppuccin-macchiato .content kbd.button.is-inverted{background-color:#fff;color:#363a4f}html.theme--catppuccin-macchiato .button.is-dark.is-inverted:hover,html.theme--catppuccin-macchiato .content kbd.button.is-inverted:hover,html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-hovered,html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-macchiato .button.is-dark.is-inverted[disabled],html.theme--catppuccin-macchiato .content kbd.button.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-dark.is-inverted,fieldset[disabled] html.theme--catppuccin-macchiato .content kbd.button.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#363a4f}html.theme--catppuccin-macchiato .button.is-dark.is-loading::after,html.theme--catppuccin-macchiato .content kbd.button.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-dark.is-outlined,html.theme--catppuccin-macchiato .content kbd.button.is-outlined{background-color:transparent;border-color:#363a4f;color:#363a4f}html.theme--catppuccin-macchiato .button.is-dark.is-outlined:hover,html.theme--catppuccin-macchiato .content kbd.button.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-dark.is-outlined.is-hovered,html.theme--catppuccin-macchiato .content kbd.button.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-dark.is-outlined:focus,html.theme--catppuccin-macchiato .content kbd.button.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-dark.is-outlined.is-focused,html.theme--catppuccin-macchiato .content kbd.button.is-outlined.is-focused{background-color:#363a4f;border-color:#363a4f;color:#fff}html.theme--catppuccin-macchiato .button.is-dark.is-outlined.is-loading::after,html.theme--catppuccin-macchiato .content kbd.button.is-outlined.is-loading::after{border-color:transparent transparent #363a4f #363a4f !important}html.theme--catppuccin-macchiato .button.is-dark.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .content kbd.button.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-dark.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .content kbd.button.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-dark.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .content kbd.button.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-dark.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-macchiato .content kbd.button.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-dark.is-outlined[disabled],html.theme--catppuccin-macchiato .content kbd.button.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-dark.is-outlined,fieldset[disabled] html.theme--catppuccin-macchiato .content kbd.button.is-outlined{background-color:transparent;border-color:#363a4f;box-shadow:none;color:#363a4f}html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-outlined,html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-outlined:hover,html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-outlined:focus,html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-outlined.is-focused,html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-outlined.is-focused{background-color:#fff;color:#363a4f}html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #363a4f #363a4f !important}html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-outlined[disabled],html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-outlined,fieldset[disabled] html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-macchiato .button.is-primary,html.theme--catppuccin-macchiato .docstring>section>a.button.docs-sourcelink{background-color:#8aadf4;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-primary:hover,html.theme--catppuccin-macchiato .docstring>section>a.button.docs-sourcelink:hover,html.theme--catppuccin-macchiato .button.is-primary.is-hovered,html.theme--catppuccin-macchiato .docstring>section>a.button.is-hovered.docs-sourcelink{background-color:#7ea5f3;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-primary:focus,html.theme--catppuccin-macchiato .docstring>section>a.button.docs-sourcelink:focus,html.theme--catppuccin-macchiato .button.is-primary.is-focused,html.theme--catppuccin-macchiato .docstring>section>a.button.is-focused.docs-sourcelink{border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-primary:focus:not(:active),html.theme--catppuccin-macchiato .docstring>section>a.button.docs-sourcelink:focus:not(:active),html.theme--catppuccin-macchiato .button.is-primary.is-focused:not(:active),html.theme--catppuccin-macchiato .docstring>section>a.button.is-focused.docs-sourcelink:not(:active){box-shadow:0 0 0 0.125em rgba(138,173,244,0.25)}html.theme--catppuccin-macchiato .button.is-primary:active,html.theme--catppuccin-macchiato .docstring>section>a.button.docs-sourcelink:active,html.theme--catppuccin-macchiato .button.is-primary.is-active,html.theme--catppuccin-macchiato .docstring>section>a.button.is-active.docs-sourcelink{background-color:#739df2;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-primary[disabled],html.theme--catppuccin-macchiato .docstring>section>a.button.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-primary,fieldset[disabled] html.theme--catppuccin-macchiato .docstring>section>a.button.docs-sourcelink{background-color:#8aadf4;border-color:#8aadf4;box-shadow:none}html.theme--catppuccin-macchiato .button.is-primary.is-inverted,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;color:#8aadf4}html.theme--catppuccin-macchiato .button.is-primary.is-inverted:hover,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.docs-sourcelink:hover,html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-hovered,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-hovered.docs-sourcelink{background-color:#f2f2f2}html.theme--catppuccin-macchiato .button.is-primary.is-inverted[disabled],html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-primary.is-inverted,fieldset[disabled] html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;border-color:transparent;box-shadow:none;color:#8aadf4}html.theme--catppuccin-macchiato .button.is-primary.is-loading::after,html.theme--catppuccin-macchiato .docstring>section>a.button.is-loading.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-primary.is-outlined,html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#8aadf4;color:#8aadf4}html.theme--catppuccin-macchiato .button.is-primary.is-outlined:hover,html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.docs-sourcelink:hover,html.theme--catppuccin-macchiato .button.is-primary.is-outlined.is-hovered,html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.is-hovered.docs-sourcelink,html.theme--catppuccin-macchiato .button.is-primary.is-outlined:focus,html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.docs-sourcelink:focus,html.theme--catppuccin-macchiato .button.is-primary.is-outlined.is-focused,html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.is-focused.docs-sourcelink{background-color:#8aadf4;border-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .button.is-primary.is-outlined.is-loading::after,html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink::after{border-color:transparent transparent #8aadf4 #8aadf4 !important}html.theme--catppuccin-macchiato .button.is-primary.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--catppuccin-macchiato .button.is-primary.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--catppuccin-macchiato .button.is-primary.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--catppuccin-macchiato .button.is-primary.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-primary.is-outlined[disabled],html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-primary.is-outlined,fieldset[disabled] html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#8aadf4;box-shadow:none;color:#8aadf4}html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-outlined,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-outlined:hover,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:hover,html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink,html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-outlined:focus,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:focus,html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-outlined.is-focused,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-outlined.is-focused.docs-sourcelink{background-color:#fff;color:#8aadf4}html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #8aadf4 #8aadf4 !important}html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-outlined[disabled],html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-outlined,fieldset[disabled] html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-macchiato .button.is-primary.is-light,html.theme--catppuccin-macchiato .docstring>section>a.button.is-light.docs-sourcelink{background-color:#ecf2fd;color:#0e3b95}html.theme--catppuccin-macchiato .button.is-primary.is-light:hover,html.theme--catppuccin-macchiato .docstring>section>a.button.is-light.docs-sourcelink:hover,html.theme--catppuccin-macchiato .button.is-primary.is-light.is-hovered,html.theme--catppuccin-macchiato .docstring>section>a.button.is-light.is-hovered.docs-sourcelink{background-color:#e1eafc;border-color:transparent;color:#0e3b95}html.theme--catppuccin-macchiato .button.is-primary.is-light:active,html.theme--catppuccin-macchiato .docstring>section>a.button.is-light.docs-sourcelink:active,html.theme--catppuccin-macchiato .button.is-primary.is-light.is-active,html.theme--catppuccin-macchiato .docstring>section>a.button.is-light.is-active.docs-sourcelink{background-color:#d5e2fb;border-color:transparent;color:#0e3b95}html.theme--catppuccin-macchiato .button.is-link{background-color:#8aadf4;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-link:hover,html.theme--catppuccin-macchiato .button.is-link.is-hovered{background-color:#7ea5f3;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-link:focus,html.theme--catppuccin-macchiato .button.is-link.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-link:focus:not(:active),html.theme--catppuccin-macchiato .button.is-link.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(138,173,244,0.25)}html.theme--catppuccin-macchiato .button.is-link:active,html.theme--catppuccin-macchiato .button.is-link.is-active{background-color:#739df2;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-link[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-link{background-color:#8aadf4;border-color:#8aadf4;box-shadow:none}html.theme--catppuccin-macchiato .button.is-link.is-inverted{background-color:#fff;color:#8aadf4}html.theme--catppuccin-macchiato .button.is-link.is-inverted:hover,html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-macchiato .button.is-link.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#8aadf4}html.theme--catppuccin-macchiato .button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-link.is-outlined{background-color:transparent;border-color:#8aadf4;color:#8aadf4}html.theme--catppuccin-macchiato .button.is-link.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-link.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-link.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-link.is-outlined.is-focused{background-color:#8aadf4;border-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #8aadf4 #8aadf4 !important}html.theme--catppuccin-macchiato .button.is-link.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-link.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-link.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-link.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-link.is-outlined{background-color:transparent;border-color:#8aadf4;box-shadow:none;color:#8aadf4}html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#8aadf4}html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #8aadf4 #8aadf4 !important}html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-macchiato .button.is-link.is-light{background-color:#ecf2fd;color:#0e3b95}html.theme--catppuccin-macchiato .button.is-link.is-light:hover,html.theme--catppuccin-macchiato .button.is-link.is-light.is-hovered{background-color:#e1eafc;border-color:transparent;color:#0e3b95}html.theme--catppuccin-macchiato .button.is-link.is-light:active,html.theme--catppuccin-macchiato .button.is-link.is-light.is-active{background-color:#d5e2fb;border-color:transparent;color:#0e3b95}html.theme--catppuccin-macchiato .button.is-info{background-color:#8bd5ca;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-info:hover,html.theme--catppuccin-macchiato .button.is-info.is-hovered{background-color:#82d2c6;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-info:focus,html.theme--catppuccin-macchiato .button.is-info.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-info:focus:not(:active),html.theme--catppuccin-macchiato .button.is-info.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(139,213,202,0.25)}html.theme--catppuccin-macchiato .button.is-info:active,html.theme--catppuccin-macchiato .button.is-info.is-active{background-color:#78cec1;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-info[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-info{background-color:#8bd5ca;border-color:#8bd5ca;box-shadow:none}html.theme--catppuccin-macchiato .button.is-info.is-inverted{background-color:rgba(0,0,0,0.7);color:#8bd5ca}html.theme--catppuccin-macchiato .button.is-info.is-inverted:hover,html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-info.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-info.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#8bd5ca}html.theme--catppuccin-macchiato .button.is-info.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-macchiato .button.is-info.is-outlined{background-color:transparent;border-color:#8bd5ca;color:#8bd5ca}html.theme--catppuccin-macchiato .button.is-info.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-info.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-info.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-info.is-outlined.is-focused{background-color:#8bd5ca;border-color:#8bd5ca;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #8bd5ca #8bd5ca !important}html.theme--catppuccin-macchiato .button.is-info.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-info.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-info.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-macchiato .button.is-info.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-info.is-outlined{background-color:transparent;border-color:#8bd5ca;box-shadow:none;color:#8bd5ca}html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#8bd5ca}html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #8bd5ca #8bd5ca !important}html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-info.is-light{background-color:#f0faf8;color:#276d62}html.theme--catppuccin-macchiato .button.is-info.is-light:hover,html.theme--catppuccin-macchiato .button.is-info.is-light.is-hovered{background-color:#e7f6f4;border-color:transparent;color:#276d62}html.theme--catppuccin-macchiato .button.is-info.is-light:active,html.theme--catppuccin-macchiato .button.is-info.is-light.is-active{background-color:#ddf3f0;border-color:transparent;color:#276d62}html.theme--catppuccin-macchiato .button.is-success{background-color:#a6da95;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-success:hover,html.theme--catppuccin-macchiato .button.is-success.is-hovered{background-color:#9ed78c;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-success:focus,html.theme--catppuccin-macchiato .button.is-success.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-success:focus:not(:active),html.theme--catppuccin-macchiato .button.is-success.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(166,218,149,0.25)}html.theme--catppuccin-macchiato .button.is-success:active,html.theme--catppuccin-macchiato .button.is-success.is-active{background-color:#96d382;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-success[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-success{background-color:#a6da95;border-color:#a6da95;box-shadow:none}html.theme--catppuccin-macchiato .button.is-success.is-inverted{background-color:rgba(0,0,0,0.7);color:#a6da95}html.theme--catppuccin-macchiato .button.is-success.is-inverted:hover,html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-success.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-success.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#a6da95}html.theme--catppuccin-macchiato .button.is-success.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-macchiato .button.is-success.is-outlined{background-color:transparent;border-color:#a6da95;color:#a6da95}html.theme--catppuccin-macchiato .button.is-success.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-success.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-success.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-success.is-outlined.is-focused{background-color:#a6da95;border-color:#a6da95;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #a6da95 #a6da95 !important}html.theme--catppuccin-macchiato .button.is-success.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-success.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-success.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-macchiato .button.is-success.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-success.is-outlined{background-color:transparent;border-color:#a6da95;box-shadow:none;color:#a6da95}html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#a6da95}html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #a6da95 #a6da95 !important}html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-success.is-light{background-color:#f2faf0;color:#386e26}html.theme--catppuccin-macchiato .button.is-success.is-light:hover,html.theme--catppuccin-macchiato .button.is-success.is-light.is-hovered{background-color:#eaf6e6;border-color:transparent;color:#386e26}html.theme--catppuccin-macchiato .button.is-success.is-light:active,html.theme--catppuccin-macchiato .button.is-success.is-light.is-active{background-color:#e2f3dd;border-color:transparent;color:#386e26}html.theme--catppuccin-macchiato .button.is-warning{background-color:#eed49f;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-warning:hover,html.theme--catppuccin-macchiato .button.is-warning.is-hovered{background-color:#eccf94;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-warning:focus,html.theme--catppuccin-macchiato .button.is-warning.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-warning:focus:not(:active),html.theme--catppuccin-macchiato .button.is-warning.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(238,212,159,0.25)}html.theme--catppuccin-macchiato .button.is-warning:active,html.theme--catppuccin-macchiato .button.is-warning.is-active{background-color:#eaca89;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-warning[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-warning{background-color:#eed49f;border-color:#eed49f;box-shadow:none}html.theme--catppuccin-macchiato .button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);color:#eed49f}html.theme--catppuccin-macchiato .button.is-warning.is-inverted:hover,html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-warning.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#eed49f}html.theme--catppuccin-macchiato .button.is-warning.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-macchiato .button.is-warning.is-outlined{background-color:transparent;border-color:#eed49f;color:#eed49f}html.theme--catppuccin-macchiato .button.is-warning.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-warning.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-warning.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-warning.is-outlined.is-focused{background-color:#eed49f;border-color:#eed49f;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #eed49f #eed49f !important}html.theme--catppuccin-macchiato .button.is-warning.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-warning.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-warning.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-macchiato .button.is-warning.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-warning.is-outlined{background-color:transparent;border-color:#eed49f;box-shadow:none;color:#eed49f}html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#eed49f}html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #eed49f #eed49f !important}html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-warning.is-light{background-color:#fcf7ee;color:#7e5c16}html.theme--catppuccin-macchiato .button.is-warning.is-light:hover,html.theme--catppuccin-macchiato .button.is-warning.is-light.is-hovered{background-color:#faf2e3;border-color:transparent;color:#7e5c16}html.theme--catppuccin-macchiato .button.is-warning.is-light:active,html.theme--catppuccin-macchiato .button.is-warning.is-light.is-active{background-color:#f8eed8;border-color:transparent;color:#7e5c16}html.theme--catppuccin-macchiato .button.is-danger{background-color:#ed8796;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-danger:hover,html.theme--catppuccin-macchiato .button.is-danger.is-hovered{background-color:#eb7c8c;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-danger:focus,html.theme--catppuccin-macchiato .button.is-danger.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-danger:focus:not(:active),html.theme--catppuccin-macchiato .button.is-danger.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(237,135,150,0.25)}html.theme--catppuccin-macchiato .button.is-danger:active,html.theme--catppuccin-macchiato .button.is-danger.is-active{background-color:#ea7183;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-danger[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-danger{background-color:#ed8796;border-color:#ed8796;box-shadow:none}html.theme--catppuccin-macchiato .button.is-danger.is-inverted{background-color:#fff;color:#ed8796}html.theme--catppuccin-macchiato .button.is-danger.is-inverted:hover,html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-macchiato .button.is-danger.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#ed8796}html.theme--catppuccin-macchiato .button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-danger.is-outlined{background-color:transparent;border-color:#ed8796;color:#ed8796}html.theme--catppuccin-macchiato .button.is-danger.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-danger.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-danger.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-danger.is-outlined.is-focused{background-color:#ed8796;border-color:#ed8796;color:#fff}html.theme--catppuccin-macchiato .button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #ed8796 #ed8796 !important}html.theme--catppuccin-macchiato .button.is-danger.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-danger.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-danger.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-danger.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-danger.is-outlined{background-color:transparent;border-color:#ed8796;box-shadow:none;color:#ed8796}html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#ed8796}html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ed8796 #ed8796 !important}html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-macchiato .button.is-danger.is-light{background-color:#fcedef;color:#971729}html.theme--catppuccin-macchiato .button.is-danger.is-light:hover,html.theme--catppuccin-macchiato .button.is-danger.is-light.is-hovered{background-color:#fbe2e6;border-color:transparent;color:#971729}html.theme--catppuccin-macchiato .button.is-danger.is-light:active,html.theme--catppuccin-macchiato .button.is-danger.is-light.is-active{background-color:#f9d7dc;border-color:transparent;color:#971729}html.theme--catppuccin-macchiato .button.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.button{font-size:.75rem}html.theme--catppuccin-macchiato .button.is-small:not(.is-rounded),html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.button:not(.is-rounded){border-radius:3px}html.theme--catppuccin-macchiato .button.is-normal{font-size:1rem}html.theme--catppuccin-macchiato .button.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .button.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .button[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button{background-color:#6e738d;border-color:#5b6078;box-shadow:none;opacity:.5}html.theme--catppuccin-macchiato .button.is-fullwidth{display:flex;width:100%}html.theme--catppuccin-macchiato .button.is-loading{color:transparent !important;pointer-events:none}html.theme--catppuccin-macchiato .button.is-loading::after{position:absolute;left:calc(50% - (1em * 0.5));top:calc(50% - (1em * 0.5));position:absolute !important}html.theme--catppuccin-macchiato .button.is-static{background-color:#1e2030;border-color:#5b6078;color:#8087a2;box-shadow:none;pointer-events:none}html.theme--catppuccin-macchiato .button.is-rounded,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.button{border-radius:9999px;padding-left:calc(1em + 0.25em);padding-right:calc(1em + 0.25em)}html.theme--catppuccin-macchiato .buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-macchiato .buttons .button{margin-bottom:0.5rem}html.theme--catppuccin-macchiato .buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}html.theme--catppuccin-macchiato .buttons:last-child{margin-bottom:-0.5rem}html.theme--catppuccin-macchiato .buttons:not(:last-child){margin-bottom:1rem}html.theme--catppuccin-macchiato .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}html.theme--catppuccin-macchiato .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:3px}html.theme--catppuccin-macchiato .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}html.theme--catppuccin-macchiato .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}html.theme--catppuccin-macchiato .buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-macchiato .buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}html.theme--catppuccin-macchiato .buttons.has-addons .button:last-child{margin-right:0}html.theme--catppuccin-macchiato .buttons.has-addons .button:hover,html.theme--catppuccin-macchiato .buttons.has-addons .button.is-hovered{z-index:2}html.theme--catppuccin-macchiato .buttons.has-addons .button:focus,html.theme--catppuccin-macchiato .buttons.has-addons .button.is-focused,html.theme--catppuccin-macchiato .buttons.has-addons .button:active,html.theme--catppuccin-macchiato .buttons.has-addons .button.is-active,html.theme--catppuccin-macchiato .buttons.has-addons .button.is-selected{z-index:3}html.theme--catppuccin-macchiato .buttons.has-addons .button:focus:hover,html.theme--catppuccin-macchiato .buttons.has-addons .button.is-focused:hover,html.theme--catppuccin-macchiato .buttons.has-addons .button:active:hover,html.theme--catppuccin-macchiato .buttons.has-addons .button.is-active:hover,html.theme--catppuccin-macchiato .buttons.has-addons .button.is-selected:hover{z-index:4}html.theme--catppuccin-macchiato .buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-macchiato .buttons.is-centered{justify-content:center}html.theme--catppuccin-macchiato .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}html.theme--catppuccin-macchiato .buttons.is-right{justify-content:flex-end}html.theme--catppuccin-macchiato .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .button.is-responsive.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.5625rem}html.theme--catppuccin-macchiato .button.is-responsive,html.theme--catppuccin-macchiato .button.is-responsive.is-normal{font-size:.65625rem}html.theme--catppuccin-macchiato .button.is-responsive.is-medium{font-size:.75rem}html.theme--catppuccin-macchiato .button.is-responsive.is-large{font-size:1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-macchiato .button.is-responsive.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.65625rem}html.theme--catppuccin-macchiato .button.is-responsive,html.theme--catppuccin-macchiato .button.is-responsive.is-normal{font-size:.75rem}html.theme--catppuccin-macchiato .button.is-responsive.is-medium{font-size:1rem}html.theme--catppuccin-macchiato .button.is-responsive.is-large{font-size:1.25rem}}html.theme--catppuccin-macchiato .container{flex-grow:1;margin:0 auto;position:relative;width:auto}html.theme--catppuccin-macchiato .container.is-fluid{max-width:none !important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .container{max-width:992px}}@media screen and (max-width: 1215px){html.theme--catppuccin-macchiato .container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width: 1407px){html.theme--catppuccin-macchiato .container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width: 1216px){html.theme--catppuccin-macchiato .container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width: 1408px){html.theme--catppuccin-macchiato .container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}html.theme--catppuccin-macchiato .content li+li{margin-top:0.25em}html.theme--catppuccin-macchiato .content p:not(:last-child),html.theme--catppuccin-macchiato .content dl:not(:last-child),html.theme--catppuccin-macchiato .content ol:not(:last-child),html.theme--catppuccin-macchiato .content ul:not(:last-child),html.theme--catppuccin-macchiato .content blockquote:not(:last-child),html.theme--catppuccin-macchiato .content pre:not(:last-child),html.theme--catppuccin-macchiato .content table:not(:last-child){margin-bottom:1em}html.theme--catppuccin-macchiato .content h1,html.theme--catppuccin-macchiato .content h2,html.theme--catppuccin-macchiato .content h3,html.theme--catppuccin-macchiato .content h4,html.theme--catppuccin-macchiato .content h5,html.theme--catppuccin-macchiato .content h6{color:#cad3f5;font-weight:600;line-height:1.125}html.theme--catppuccin-macchiato .content h1{font-size:2em;margin-bottom:0.5em}html.theme--catppuccin-macchiato .content h1:not(:first-child){margin-top:1em}html.theme--catppuccin-macchiato .content h2{font-size:1.75em;margin-bottom:0.5714em}html.theme--catppuccin-macchiato .content h2:not(:first-child){margin-top:1.1428em}html.theme--catppuccin-macchiato .content h3{font-size:1.5em;margin-bottom:0.6666em}html.theme--catppuccin-macchiato .content h3:not(:first-child){margin-top:1.3333em}html.theme--catppuccin-macchiato .content h4{font-size:1.25em;margin-bottom:0.8em}html.theme--catppuccin-macchiato .content h5{font-size:1.125em;margin-bottom:0.8888em}html.theme--catppuccin-macchiato .content h6{font-size:1em;margin-bottom:1em}html.theme--catppuccin-macchiato .content blockquote{background-color:#1e2030;border-left:5px solid #5b6078;padding:1.25em 1.5em}html.theme--catppuccin-macchiato .content ol{list-style-position:outside;margin-left:2em;margin-top:1em}html.theme--catppuccin-macchiato .content ol:not([type]){list-style-type:decimal}html.theme--catppuccin-macchiato .content ol.is-lower-alpha:not([type]){list-style-type:lower-alpha}html.theme--catppuccin-macchiato .content ol.is-lower-roman:not([type]){list-style-type:lower-roman}html.theme--catppuccin-macchiato .content ol.is-upper-alpha:not([type]){list-style-type:upper-alpha}html.theme--catppuccin-macchiato .content ol.is-upper-roman:not([type]){list-style-type:upper-roman}html.theme--catppuccin-macchiato .content ul{list-style:disc outside;margin-left:2em;margin-top:1em}html.theme--catppuccin-macchiato .content ul ul{list-style-type:circle;margin-top:0.5em}html.theme--catppuccin-macchiato .content ul ul ul{list-style-type:square}html.theme--catppuccin-macchiato .content dd{margin-left:2em}html.theme--catppuccin-macchiato .content figure{margin-left:2em;margin-right:2em;text-align:center}html.theme--catppuccin-macchiato .content figure:not(:first-child){margin-top:2em}html.theme--catppuccin-macchiato .content figure:not(:last-child){margin-bottom:2em}html.theme--catppuccin-macchiato .content figure img{display:inline-block}html.theme--catppuccin-macchiato .content figure figcaption{font-style:italic}html.theme--catppuccin-macchiato .content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:0;white-space:pre;word-wrap:normal}html.theme--catppuccin-macchiato .content sup,html.theme--catppuccin-macchiato .content sub{font-size:75%}html.theme--catppuccin-macchiato .content table{width:100%}html.theme--catppuccin-macchiato .content table td,html.theme--catppuccin-macchiato .content table th{border:1px solid #5b6078;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--catppuccin-macchiato .content table th{color:#b5c1f1}html.theme--catppuccin-macchiato .content table th:not([align]){text-align:inherit}html.theme--catppuccin-macchiato .content table thead td,html.theme--catppuccin-macchiato .content table thead th{border-width:0 0 2px;color:#b5c1f1}html.theme--catppuccin-macchiato .content table tfoot td,html.theme--catppuccin-macchiato .content table tfoot th{border-width:2px 0 0;color:#b5c1f1}html.theme--catppuccin-macchiato .content table tbody tr:last-child td,html.theme--catppuccin-macchiato .content table tbody tr:last-child th{border-bottom-width:0}html.theme--catppuccin-macchiato .content .tabs li+li{margin-top:0}html.theme--catppuccin-macchiato .content.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.content{font-size:.75rem}html.theme--catppuccin-macchiato .content.is-normal{font-size:1rem}html.theme--catppuccin-macchiato .content.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .content.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}html.theme--catppuccin-macchiato .icon.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.icon{height:1rem;width:1rem}html.theme--catppuccin-macchiato .icon.is-medium{height:2rem;width:2rem}html.theme--catppuccin-macchiato .icon.is-large{height:3rem;width:3rem}html.theme--catppuccin-macchiato .icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}html.theme--catppuccin-macchiato .icon-text .icon{flex-grow:0;flex-shrink:0}html.theme--catppuccin-macchiato .icon-text .icon:not(:last-child){margin-right:.25em}html.theme--catppuccin-macchiato .icon-text .icon:not(:first-child){margin-left:.25em}html.theme--catppuccin-macchiato div.icon-text{display:flex}html.theme--catppuccin-macchiato .image,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img{display:block;position:relative}html.theme--catppuccin-macchiato .image img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img img{display:block;height:auto;width:100%}html.theme--catppuccin-macchiato .image img.is-rounded,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img img.is-rounded{border-radius:9999px}html.theme--catppuccin-macchiato .image.is-fullwidth,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-fullwidth{width:100%}html.theme--catppuccin-macchiato .image.is-square img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--catppuccin-macchiato .image.is-square .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--catppuccin-macchiato .image.is-1by1 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--catppuccin-macchiato .image.is-1by1 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--catppuccin-macchiato .image.is-5by4 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--catppuccin-macchiato .image.is-5by4 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--catppuccin-macchiato .image.is-4by3 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--catppuccin-macchiato .image.is-4by3 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--catppuccin-macchiato .image.is-3by2 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--catppuccin-macchiato .image.is-3by2 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--catppuccin-macchiato .image.is-5by3 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--catppuccin-macchiato .image.is-5by3 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--catppuccin-macchiato .image.is-16by9 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--catppuccin-macchiato .image.is-16by9 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--catppuccin-macchiato .image.is-2by1 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--catppuccin-macchiato .image.is-2by1 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--catppuccin-macchiato .image.is-3by1 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--catppuccin-macchiato .image.is-3by1 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--catppuccin-macchiato .image.is-4by5 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--catppuccin-macchiato .image.is-4by5 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--catppuccin-macchiato .image.is-3by4 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--catppuccin-macchiato .image.is-3by4 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--catppuccin-macchiato .image.is-2by3 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--catppuccin-macchiato .image.is-2by3 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--catppuccin-macchiato .image.is-3by5 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--catppuccin-macchiato .image.is-3by5 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--catppuccin-macchiato .image.is-9by16 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--catppuccin-macchiato .image.is-9by16 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--catppuccin-macchiato .image.is-1by2 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--catppuccin-macchiato .image.is-1by2 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--catppuccin-macchiato .image.is-1by3 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--catppuccin-macchiato .image.is-1by3 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio{height:100%;width:100%}html.theme--catppuccin-macchiato .image.is-square,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-square,html.theme--catppuccin-macchiato .image.is-1by1,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by1{padding-top:100%}html.theme--catppuccin-macchiato .image.is-5by4,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-5by4{padding-top:80%}html.theme--catppuccin-macchiato .image.is-4by3,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-4by3{padding-top:75%}html.theme--catppuccin-macchiato .image.is-3by2,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by2{padding-top:66.6666%}html.theme--catppuccin-macchiato .image.is-5by3,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-5by3{padding-top:60%}html.theme--catppuccin-macchiato .image.is-16by9,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-16by9{padding-top:56.25%}html.theme--catppuccin-macchiato .image.is-2by1,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-2by1{padding-top:50%}html.theme--catppuccin-macchiato .image.is-3by1,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by1{padding-top:33.3333%}html.theme--catppuccin-macchiato .image.is-4by5,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-4by5{padding-top:125%}html.theme--catppuccin-macchiato .image.is-3by4,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by4{padding-top:133.3333%}html.theme--catppuccin-macchiato .image.is-2by3,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-2by3{padding-top:150%}html.theme--catppuccin-macchiato .image.is-3by5,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by5{padding-top:166.6666%}html.theme--catppuccin-macchiato .image.is-9by16,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-9by16{padding-top:177.7777%}html.theme--catppuccin-macchiato .image.is-1by2,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by2{padding-top:200%}html.theme--catppuccin-macchiato .image.is-1by3,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by3{padding-top:300%}html.theme--catppuccin-macchiato .image.is-16x16,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-16x16{height:16px;width:16px}html.theme--catppuccin-macchiato .image.is-24x24,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-24x24{height:24px;width:24px}html.theme--catppuccin-macchiato .image.is-32x32,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-32x32{height:32px;width:32px}html.theme--catppuccin-macchiato .image.is-48x48,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-48x48{height:48px;width:48px}html.theme--catppuccin-macchiato .image.is-64x64,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-64x64{height:64px;width:64px}html.theme--catppuccin-macchiato .image.is-96x96,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-96x96{height:96px;width:96px}html.theme--catppuccin-macchiato .image.is-128x128,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-128x128{height:128px;width:128px}html.theme--catppuccin-macchiato .notification{background-color:#1e2030;border-radius:.4em;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}html.theme--catppuccin-macchiato .notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--catppuccin-macchiato .notification strong{color:currentColor}html.theme--catppuccin-macchiato .notification code,html.theme--catppuccin-macchiato .notification pre{background:#fff}html.theme--catppuccin-macchiato .notification pre code{background:transparent}html.theme--catppuccin-macchiato .notification>.delete{right:.5rem;position:absolute;top:0.5rem}html.theme--catppuccin-macchiato .notification .title,html.theme--catppuccin-macchiato .notification .subtitle,html.theme--catppuccin-macchiato .notification .content{color:currentColor}html.theme--catppuccin-macchiato .notification.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-macchiato .notification.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-macchiato .notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .notification.is-dark,html.theme--catppuccin-macchiato .content kbd.notification{background-color:#363a4f;color:#fff}html.theme--catppuccin-macchiato .notification.is-primary,html.theme--catppuccin-macchiato .docstring>section>a.notification.docs-sourcelink{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .notification.is-primary.is-light,html.theme--catppuccin-macchiato .docstring>section>a.notification.is-light.docs-sourcelink{background-color:#ecf2fd;color:#0e3b95}html.theme--catppuccin-macchiato .notification.is-link{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .notification.is-link.is-light{background-color:#ecf2fd;color:#0e3b95}html.theme--catppuccin-macchiato .notification.is-info{background-color:#8bd5ca;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .notification.is-info.is-light{background-color:#f0faf8;color:#276d62}html.theme--catppuccin-macchiato .notification.is-success{background-color:#a6da95;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .notification.is-success.is-light{background-color:#f2faf0;color:#386e26}html.theme--catppuccin-macchiato .notification.is-warning{background-color:#eed49f;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .notification.is-warning.is-light{background-color:#fcf7ee;color:#7e5c16}html.theme--catppuccin-macchiato .notification.is-danger{background-color:#ed8796;color:#fff}html.theme--catppuccin-macchiato .notification.is-danger.is-light{background-color:#fcedef;color:#971729}html.theme--catppuccin-macchiato .progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}html.theme--catppuccin-macchiato .progress::-webkit-progress-bar{background-color:#494d64}html.theme--catppuccin-macchiato .progress::-webkit-progress-value{background-color:#8087a2}html.theme--catppuccin-macchiato .progress::-moz-progress-bar{background-color:#8087a2}html.theme--catppuccin-macchiato .progress::-ms-fill{background-color:#8087a2;border:none}html.theme--catppuccin-macchiato .progress.is-white::-webkit-progress-value{background-color:#fff}html.theme--catppuccin-macchiato .progress.is-white::-moz-progress-bar{background-color:#fff}html.theme--catppuccin-macchiato .progress.is-white::-ms-fill{background-color:#fff}html.theme--catppuccin-macchiato .progress.is-white:indeterminate{background-image:linear-gradient(to right, #fff 30%, #494d64 30%)}html.theme--catppuccin-macchiato .progress.is-black::-webkit-progress-value{background-color:#0a0a0a}html.theme--catppuccin-macchiato .progress.is-black::-moz-progress-bar{background-color:#0a0a0a}html.theme--catppuccin-macchiato .progress.is-black::-ms-fill{background-color:#0a0a0a}html.theme--catppuccin-macchiato .progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #494d64 30%)}html.theme--catppuccin-macchiato .progress.is-light::-webkit-progress-value{background-color:#f5f5f5}html.theme--catppuccin-macchiato .progress.is-light::-moz-progress-bar{background-color:#f5f5f5}html.theme--catppuccin-macchiato .progress.is-light::-ms-fill{background-color:#f5f5f5}html.theme--catppuccin-macchiato .progress.is-light:indeterminate{background-image:linear-gradient(to right, #f5f5f5 30%, #494d64 30%)}html.theme--catppuccin-macchiato .progress.is-dark::-webkit-progress-value,html.theme--catppuccin-macchiato .content kbd.progress::-webkit-progress-value{background-color:#363a4f}html.theme--catppuccin-macchiato .progress.is-dark::-moz-progress-bar,html.theme--catppuccin-macchiato .content kbd.progress::-moz-progress-bar{background-color:#363a4f}html.theme--catppuccin-macchiato .progress.is-dark::-ms-fill,html.theme--catppuccin-macchiato .content kbd.progress::-ms-fill{background-color:#363a4f}html.theme--catppuccin-macchiato .progress.is-dark:indeterminate,html.theme--catppuccin-macchiato .content kbd.progress:indeterminate{background-image:linear-gradient(to right, #363a4f 30%, #494d64 30%)}html.theme--catppuccin-macchiato .progress.is-primary::-webkit-progress-value,html.theme--catppuccin-macchiato .docstring>section>a.progress.docs-sourcelink::-webkit-progress-value{background-color:#8aadf4}html.theme--catppuccin-macchiato .progress.is-primary::-moz-progress-bar,html.theme--catppuccin-macchiato .docstring>section>a.progress.docs-sourcelink::-moz-progress-bar{background-color:#8aadf4}html.theme--catppuccin-macchiato .progress.is-primary::-ms-fill,html.theme--catppuccin-macchiato .docstring>section>a.progress.docs-sourcelink::-ms-fill{background-color:#8aadf4}html.theme--catppuccin-macchiato .progress.is-primary:indeterminate,html.theme--catppuccin-macchiato .docstring>section>a.progress.docs-sourcelink:indeterminate{background-image:linear-gradient(to right, #8aadf4 30%, #494d64 30%)}html.theme--catppuccin-macchiato .progress.is-link::-webkit-progress-value{background-color:#8aadf4}html.theme--catppuccin-macchiato .progress.is-link::-moz-progress-bar{background-color:#8aadf4}html.theme--catppuccin-macchiato .progress.is-link::-ms-fill{background-color:#8aadf4}html.theme--catppuccin-macchiato .progress.is-link:indeterminate{background-image:linear-gradient(to right, #8aadf4 30%, #494d64 30%)}html.theme--catppuccin-macchiato .progress.is-info::-webkit-progress-value{background-color:#8bd5ca}html.theme--catppuccin-macchiato .progress.is-info::-moz-progress-bar{background-color:#8bd5ca}html.theme--catppuccin-macchiato .progress.is-info::-ms-fill{background-color:#8bd5ca}html.theme--catppuccin-macchiato .progress.is-info:indeterminate{background-image:linear-gradient(to right, #8bd5ca 30%, #494d64 30%)}html.theme--catppuccin-macchiato .progress.is-success::-webkit-progress-value{background-color:#a6da95}html.theme--catppuccin-macchiato .progress.is-success::-moz-progress-bar{background-color:#a6da95}html.theme--catppuccin-macchiato .progress.is-success::-ms-fill{background-color:#a6da95}html.theme--catppuccin-macchiato .progress.is-success:indeterminate{background-image:linear-gradient(to right, #a6da95 30%, #494d64 30%)}html.theme--catppuccin-macchiato .progress.is-warning::-webkit-progress-value{background-color:#eed49f}html.theme--catppuccin-macchiato .progress.is-warning::-moz-progress-bar{background-color:#eed49f}html.theme--catppuccin-macchiato .progress.is-warning::-ms-fill{background-color:#eed49f}html.theme--catppuccin-macchiato .progress.is-warning:indeterminate{background-image:linear-gradient(to right, #eed49f 30%, #494d64 30%)}html.theme--catppuccin-macchiato .progress.is-danger::-webkit-progress-value{background-color:#ed8796}html.theme--catppuccin-macchiato .progress.is-danger::-moz-progress-bar{background-color:#ed8796}html.theme--catppuccin-macchiato .progress.is-danger::-ms-fill{background-color:#ed8796}html.theme--catppuccin-macchiato .progress.is-danger:indeterminate{background-image:linear-gradient(to right, #ed8796 30%, #494d64 30%)}html.theme--catppuccin-macchiato .progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#494d64;background-image:linear-gradient(to right, #cad3f5 30%, #494d64 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}html.theme--catppuccin-macchiato .progress:indeterminate::-webkit-progress-bar{background-color:transparent}html.theme--catppuccin-macchiato .progress:indeterminate::-moz-progress-bar{background-color:transparent}html.theme--catppuccin-macchiato .progress:indeterminate::-ms-fill{animation-name:none}html.theme--catppuccin-macchiato .progress.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.progress{height:.75rem}html.theme--catppuccin-macchiato .progress.is-medium{height:1.25rem}html.theme--catppuccin-macchiato .progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}html.theme--catppuccin-macchiato .table{background-color:#494d64;color:#cad3f5}html.theme--catppuccin-macchiato .table td,html.theme--catppuccin-macchiato .table th{border:1px solid #5b6078;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--catppuccin-macchiato .table td.is-white,html.theme--catppuccin-macchiato .table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-macchiato .table td.is-black,html.theme--catppuccin-macchiato .table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-macchiato .table td.is-light,html.theme--catppuccin-macchiato .table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .table td.is-dark,html.theme--catppuccin-macchiato .table th.is-dark{background-color:#363a4f;border-color:#363a4f;color:#fff}html.theme--catppuccin-macchiato .table td.is-primary,html.theme--catppuccin-macchiato .table th.is-primary{background-color:#8aadf4;border-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .table td.is-link,html.theme--catppuccin-macchiato .table th.is-link{background-color:#8aadf4;border-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .table td.is-info,html.theme--catppuccin-macchiato .table th.is-info{background-color:#8bd5ca;border-color:#8bd5ca;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .table td.is-success,html.theme--catppuccin-macchiato .table th.is-success{background-color:#a6da95;border-color:#a6da95;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .table td.is-warning,html.theme--catppuccin-macchiato .table th.is-warning{background-color:#eed49f;border-color:#eed49f;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .table td.is-danger,html.theme--catppuccin-macchiato .table th.is-danger{background-color:#ed8796;border-color:#ed8796;color:#fff}html.theme--catppuccin-macchiato .table td.is-narrow,html.theme--catppuccin-macchiato .table th.is-narrow{white-space:nowrap;width:1%}html.theme--catppuccin-macchiato .table td.is-selected,html.theme--catppuccin-macchiato .table th.is-selected{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .table td.is-selected a,html.theme--catppuccin-macchiato .table td.is-selected strong,html.theme--catppuccin-macchiato .table th.is-selected a,html.theme--catppuccin-macchiato .table th.is-selected strong{color:currentColor}html.theme--catppuccin-macchiato .table td.is-vcentered,html.theme--catppuccin-macchiato .table th.is-vcentered{vertical-align:middle}html.theme--catppuccin-macchiato .table th{color:#b5c1f1}html.theme--catppuccin-macchiato .table th:not([align]){text-align:left}html.theme--catppuccin-macchiato .table tr.is-selected{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .table tr.is-selected a,html.theme--catppuccin-macchiato .table tr.is-selected strong{color:currentColor}html.theme--catppuccin-macchiato .table tr.is-selected td,html.theme--catppuccin-macchiato .table tr.is-selected th{border-color:#fff;color:currentColor}html.theme--catppuccin-macchiato .table thead{background-color:rgba(0,0,0,0)}html.theme--catppuccin-macchiato .table thead td,html.theme--catppuccin-macchiato .table thead th{border-width:0 0 2px;color:#b5c1f1}html.theme--catppuccin-macchiato .table tfoot{background-color:rgba(0,0,0,0)}html.theme--catppuccin-macchiato .table tfoot td,html.theme--catppuccin-macchiato .table tfoot th{border-width:2px 0 0;color:#b5c1f1}html.theme--catppuccin-macchiato .table tbody{background-color:rgba(0,0,0,0)}html.theme--catppuccin-macchiato .table tbody tr:last-child td,html.theme--catppuccin-macchiato .table tbody tr:last-child th{border-bottom-width:0}html.theme--catppuccin-macchiato .table.is-bordered td,html.theme--catppuccin-macchiato .table.is-bordered th{border-width:1px}html.theme--catppuccin-macchiato .table.is-bordered tr:last-child td,html.theme--catppuccin-macchiato .table.is-bordered tr:last-child th{border-bottom-width:1px}html.theme--catppuccin-macchiato .table.is-fullwidth{width:100%}html.theme--catppuccin-macchiato .table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#363a4f}html.theme--catppuccin-macchiato .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#363a4f}html.theme--catppuccin-macchiato .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#3a3e55}html.theme--catppuccin-macchiato .table.is-narrow td,html.theme--catppuccin-macchiato .table.is-narrow th{padding:0.25em 0.5em}html.theme--catppuccin-macchiato .table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#363a4f}html.theme--catppuccin-macchiato .table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}html.theme--catppuccin-macchiato .tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-macchiato .tags .tag,html.theme--catppuccin-macchiato .tags .content kbd,html.theme--catppuccin-macchiato .content .tags kbd,html.theme--catppuccin-macchiato .tags .docstring>section>a.docs-sourcelink{margin-bottom:0.5rem}html.theme--catppuccin-macchiato .tags .tag:not(:last-child),html.theme--catppuccin-macchiato .tags .content kbd:not(:last-child),html.theme--catppuccin-macchiato .content .tags kbd:not(:last-child),html.theme--catppuccin-macchiato .tags .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:.5rem}html.theme--catppuccin-macchiato .tags:last-child{margin-bottom:-0.5rem}html.theme--catppuccin-macchiato .tags:not(:last-child){margin-bottom:1rem}html.theme--catppuccin-macchiato .tags.are-medium .tag:not(.is-normal):not(.is-large),html.theme--catppuccin-macchiato .tags.are-medium .content kbd:not(.is-normal):not(.is-large),html.theme--catppuccin-macchiato .content .tags.are-medium kbd:not(.is-normal):not(.is-large),html.theme--catppuccin-macchiato .tags.are-medium .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-large){font-size:1rem}html.theme--catppuccin-macchiato .tags.are-large .tag:not(.is-normal):not(.is-medium),html.theme--catppuccin-macchiato .tags.are-large .content kbd:not(.is-normal):not(.is-medium),html.theme--catppuccin-macchiato .content .tags.are-large kbd:not(.is-normal):not(.is-medium),html.theme--catppuccin-macchiato .tags.are-large .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-medium){font-size:1.25rem}html.theme--catppuccin-macchiato .tags.is-centered{justify-content:center}html.theme--catppuccin-macchiato .tags.is-centered .tag,html.theme--catppuccin-macchiato .tags.is-centered .content kbd,html.theme--catppuccin-macchiato .content .tags.is-centered kbd,html.theme--catppuccin-macchiato .tags.is-centered .docstring>section>a.docs-sourcelink{margin-right:0.25rem;margin-left:0.25rem}html.theme--catppuccin-macchiato .tags.is-right{justify-content:flex-end}html.theme--catppuccin-macchiato .tags.is-right .tag:not(:first-child),html.theme--catppuccin-macchiato .tags.is-right .content kbd:not(:first-child),html.theme--catppuccin-macchiato .content .tags.is-right kbd:not(:first-child),html.theme--catppuccin-macchiato .tags.is-right .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0.5rem}html.theme--catppuccin-macchiato .tags.is-right .tag:not(:last-child),html.theme--catppuccin-macchiato .tags.is-right .content kbd:not(:last-child),html.theme--catppuccin-macchiato .content .tags.is-right kbd:not(:last-child),html.theme--catppuccin-macchiato .tags.is-right .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0}html.theme--catppuccin-macchiato .tags.has-addons .tag,html.theme--catppuccin-macchiato .tags.has-addons .content kbd,html.theme--catppuccin-macchiato .content .tags.has-addons kbd,html.theme--catppuccin-macchiato .tags.has-addons .docstring>section>a.docs-sourcelink{margin-right:0}html.theme--catppuccin-macchiato .tags.has-addons .tag:not(:first-child),html.theme--catppuccin-macchiato .tags.has-addons .content kbd:not(:first-child),html.theme--catppuccin-macchiato .content .tags.has-addons kbd:not(:first-child),html.theme--catppuccin-macchiato .tags.has-addons .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}html.theme--catppuccin-macchiato .tags.has-addons .tag:not(:last-child),html.theme--catppuccin-macchiato .tags.has-addons .content kbd:not(:last-child),html.theme--catppuccin-macchiato .content .tags.has-addons kbd:not(:last-child),html.theme--catppuccin-macchiato .tags.has-addons .docstring>section>a.docs-sourcelink:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}html.theme--catppuccin-macchiato .tag:not(body),html.theme--catppuccin-macchiato .content kbd:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink:not(body){align-items:center;background-color:#1e2030;border-radius:.4em;color:#cad3f5;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:0.75em;padding-right:0.75em;white-space:nowrap}html.theme--catppuccin-macchiato .tag:not(body) .delete,html.theme--catppuccin-macchiato .content kbd:not(body) .delete,html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}html.theme--catppuccin-macchiato .tag.is-white:not(body),html.theme--catppuccin-macchiato .content kbd.is-white:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-white:not(body){background-color:#fff;color:#0a0a0a}html.theme--catppuccin-macchiato .tag.is-black:not(body),html.theme--catppuccin-macchiato .content kbd.is-black:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-black:not(body){background-color:#0a0a0a;color:#fff}html.theme--catppuccin-macchiato .tag.is-light:not(body),html.theme--catppuccin-macchiato .content kbd.is-light:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .tag.is-dark:not(body),html.theme--catppuccin-macchiato .content kbd:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-dark:not(body),html.theme--catppuccin-macchiato .content .docstring>section>kbd:not(body){background-color:#363a4f;color:#fff}html.theme--catppuccin-macchiato .tag.is-primary:not(body),html.theme--catppuccin-macchiato .content kbd.is-primary:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink:not(body){background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .tag.is-primary.is-light:not(body),html.theme--catppuccin-macchiato .content kbd.is-primary.is-light:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#ecf2fd;color:#0e3b95}html.theme--catppuccin-macchiato .tag.is-link:not(body),html.theme--catppuccin-macchiato .content kbd.is-link:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-link:not(body){background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .tag.is-link.is-light:not(body),html.theme--catppuccin-macchiato .content kbd.is-link.is-light:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-link.is-light:not(body){background-color:#ecf2fd;color:#0e3b95}html.theme--catppuccin-macchiato .tag.is-info:not(body),html.theme--catppuccin-macchiato .content kbd.is-info:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-info:not(body){background-color:#8bd5ca;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .tag.is-info.is-light:not(body),html.theme--catppuccin-macchiato .content kbd.is-info.is-light:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-info.is-light:not(body){background-color:#f0faf8;color:#276d62}html.theme--catppuccin-macchiato .tag.is-success:not(body),html.theme--catppuccin-macchiato .content kbd.is-success:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-success:not(body){background-color:#a6da95;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .tag.is-success.is-light:not(body),html.theme--catppuccin-macchiato .content kbd.is-success.is-light:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-success.is-light:not(body){background-color:#f2faf0;color:#386e26}html.theme--catppuccin-macchiato .tag.is-warning:not(body),html.theme--catppuccin-macchiato .content kbd.is-warning:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-warning:not(body){background-color:#eed49f;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .tag.is-warning.is-light:not(body),html.theme--catppuccin-macchiato .content kbd.is-warning.is-light:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-warning.is-light:not(body){background-color:#fcf7ee;color:#7e5c16}html.theme--catppuccin-macchiato .tag.is-danger:not(body),html.theme--catppuccin-macchiato .content kbd.is-danger:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-danger:not(body){background-color:#ed8796;color:#fff}html.theme--catppuccin-macchiato .tag.is-danger.is-light:not(body),html.theme--catppuccin-macchiato .content kbd.is-danger.is-light:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-danger.is-light:not(body){background-color:#fcedef;color:#971729}html.theme--catppuccin-macchiato .tag.is-normal:not(body),html.theme--catppuccin-macchiato .content kbd.is-normal:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-normal:not(body){font-size:.75rem}html.theme--catppuccin-macchiato .tag.is-medium:not(body),html.theme--catppuccin-macchiato .content kbd.is-medium:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-medium:not(body){font-size:1rem}html.theme--catppuccin-macchiato .tag.is-large:not(body),html.theme--catppuccin-macchiato .content kbd.is-large:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-large:not(body){font-size:1.25rem}html.theme--catppuccin-macchiato .tag:not(body) .icon:first-child:not(:last-child),html.theme--catppuccin-macchiato .content kbd:not(body) .icon:first-child:not(:last-child),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}html.theme--catppuccin-macchiato .tag:not(body) .icon:last-child:not(:first-child),html.theme--catppuccin-macchiato .content kbd:not(body) .icon:last-child:not(:first-child),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}html.theme--catppuccin-macchiato .tag:not(body) .icon:first-child:last-child,html.theme--catppuccin-macchiato .content kbd:not(body) .icon:first-child:last-child,html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}html.theme--catppuccin-macchiato .tag.is-delete:not(body),html.theme--catppuccin-macchiato .content kbd.is-delete:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-delete:not(body){margin-left:1px;padding:0;position:relative;width:2em}html.theme--catppuccin-macchiato .tag.is-delete:not(body)::before,html.theme--catppuccin-macchiato .content kbd.is-delete:not(body)::before,html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-delete:not(body)::before,html.theme--catppuccin-macchiato .tag.is-delete:not(body)::after,html.theme--catppuccin-macchiato .content kbd.is-delete:not(body)::after,html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--catppuccin-macchiato .tag.is-delete:not(body)::before,html.theme--catppuccin-macchiato .content kbd.is-delete:not(body)::before,html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-delete:not(body)::before{height:1px;width:50%}html.theme--catppuccin-macchiato .tag.is-delete:not(body)::after,html.theme--catppuccin-macchiato .content kbd.is-delete:not(body)::after,html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{height:50%;width:1px}html.theme--catppuccin-macchiato .tag.is-delete:not(body):hover,html.theme--catppuccin-macchiato .content kbd.is-delete:not(body):hover,html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-delete:not(body):hover,html.theme--catppuccin-macchiato .tag.is-delete:not(body):focus,html.theme--catppuccin-macchiato .content kbd.is-delete:not(body):focus,html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-delete:not(body):focus{background-color:#141620}html.theme--catppuccin-macchiato .tag.is-delete:not(body):active,html.theme--catppuccin-macchiato .content kbd.is-delete:not(body):active,html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-delete:not(body):active{background-color:#0a0b11}html.theme--catppuccin-macchiato .tag.is-rounded:not(body),html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input:not(body),html.theme--catppuccin-macchiato .content kbd.is-rounded:not(body),html.theme--catppuccin-macchiato #documenter .docs-sidebar .content form.docs-search>input:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-rounded:not(body){border-radius:9999px}html.theme--catppuccin-macchiato a.tag:hover,html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink:hover{text-decoration:underline}html.theme--catppuccin-macchiato .title,html.theme--catppuccin-macchiato .subtitle{word-break:break-word}html.theme--catppuccin-macchiato .title em,html.theme--catppuccin-macchiato .title span,html.theme--catppuccin-macchiato .subtitle em,html.theme--catppuccin-macchiato .subtitle span{font-weight:inherit}html.theme--catppuccin-macchiato .title sub,html.theme--catppuccin-macchiato .subtitle sub{font-size:.75em}html.theme--catppuccin-macchiato .title sup,html.theme--catppuccin-macchiato .subtitle sup{font-size:.75em}html.theme--catppuccin-macchiato .title .tag,html.theme--catppuccin-macchiato .title .content kbd,html.theme--catppuccin-macchiato .content .title kbd,html.theme--catppuccin-macchiato .title .docstring>section>a.docs-sourcelink,html.theme--catppuccin-macchiato .subtitle .tag,html.theme--catppuccin-macchiato .subtitle .content kbd,html.theme--catppuccin-macchiato .content .subtitle kbd,html.theme--catppuccin-macchiato .subtitle .docstring>section>a.docs-sourcelink{vertical-align:middle}html.theme--catppuccin-macchiato .title{color:#fff;font-size:2rem;font-weight:500;line-height:1.125}html.theme--catppuccin-macchiato .title strong{color:inherit;font-weight:inherit}html.theme--catppuccin-macchiato .title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}html.theme--catppuccin-macchiato .title.is-1{font-size:3rem}html.theme--catppuccin-macchiato .title.is-2{font-size:2.5rem}html.theme--catppuccin-macchiato .title.is-3{font-size:2rem}html.theme--catppuccin-macchiato .title.is-4{font-size:1.5rem}html.theme--catppuccin-macchiato .title.is-5{font-size:1.25rem}html.theme--catppuccin-macchiato .title.is-6{font-size:1rem}html.theme--catppuccin-macchiato .title.is-7{font-size:.75rem}html.theme--catppuccin-macchiato .subtitle{color:#6e738d;font-size:1.25rem;font-weight:400;line-height:1.25}html.theme--catppuccin-macchiato .subtitle strong{color:#6e738d;font-weight:600}html.theme--catppuccin-macchiato .subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}html.theme--catppuccin-macchiato .subtitle.is-1{font-size:3rem}html.theme--catppuccin-macchiato .subtitle.is-2{font-size:2.5rem}html.theme--catppuccin-macchiato .subtitle.is-3{font-size:2rem}html.theme--catppuccin-macchiato .subtitle.is-4{font-size:1.5rem}html.theme--catppuccin-macchiato .subtitle.is-5{font-size:1.25rem}html.theme--catppuccin-macchiato .subtitle.is-6{font-size:1rem}html.theme--catppuccin-macchiato .subtitle.is-7{font-size:.75rem}html.theme--catppuccin-macchiato .heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}html.theme--catppuccin-macchiato .number{align-items:center;background-color:#1e2030;border-radius:9999px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:0.25rem 0.5rem;text-align:center;vertical-align:top}html.theme--catppuccin-macchiato .select select,html.theme--catppuccin-macchiato .textarea,html.theme--catppuccin-macchiato .input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input{background-color:#24273a;border-color:#5b6078;border-radius:.4em;color:#8087a2}html.theme--catppuccin-macchiato .select select::-moz-placeholder,html.theme--catppuccin-macchiato .textarea::-moz-placeholder,html.theme--catppuccin-macchiato .input::-moz-placeholder,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:#868c98}html.theme--catppuccin-macchiato .select select::-webkit-input-placeholder,html.theme--catppuccin-macchiato .textarea::-webkit-input-placeholder,html.theme--catppuccin-macchiato .input::-webkit-input-placeholder,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:#868c98}html.theme--catppuccin-macchiato .select select:-moz-placeholder,html.theme--catppuccin-macchiato .textarea:-moz-placeholder,html.theme--catppuccin-macchiato .input:-moz-placeholder,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:#868c98}html.theme--catppuccin-macchiato .select select:-ms-input-placeholder,html.theme--catppuccin-macchiato .textarea:-ms-input-placeholder,html.theme--catppuccin-macchiato .input:-ms-input-placeholder,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:#868c98}html.theme--catppuccin-macchiato .select select:hover,html.theme--catppuccin-macchiato .textarea:hover,html.theme--catppuccin-macchiato .input:hover,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input:hover,html.theme--catppuccin-macchiato .select select.is-hovered,html.theme--catppuccin-macchiato .is-hovered.textarea,html.theme--catppuccin-macchiato .is-hovered.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-hovered{border-color:#6e738d}html.theme--catppuccin-macchiato .select select:focus,html.theme--catppuccin-macchiato .textarea:focus,html.theme--catppuccin-macchiato .input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input:focus,html.theme--catppuccin-macchiato .select select.is-focused,html.theme--catppuccin-macchiato .is-focused.textarea,html.theme--catppuccin-macchiato .is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .select select:active,html.theme--catppuccin-macchiato .textarea:active,html.theme--catppuccin-macchiato .input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input:active,html.theme--catppuccin-macchiato .select select.is-active,html.theme--catppuccin-macchiato .is-active.textarea,html.theme--catppuccin-macchiato .is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active{border-color:#8aadf4;box-shadow:0 0 0 0.125em rgba(138,173,244,0.25)}html.theme--catppuccin-macchiato .select select[disabled],html.theme--catppuccin-macchiato .textarea[disabled],html.theme--catppuccin-macchiato .input[disabled],html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .select select,fieldset[disabled] html.theme--catppuccin-macchiato .textarea,fieldset[disabled] html.theme--catppuccin-macchiato .input,fieldset[disabled] html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input{background-color:#6e738d;border-color:#1e2030;box-shadow:none;color:#f5f7fd}html.theme--catppuccin-macchiato .select select[disabled]::-moz-placeholder,html.theme--catppuccin-macchiato .textarea[disabled]::-moz-placeholder,html.theme--catppuccin-macchiato .input[disabled]::-moz-placeholder,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input[disabled]::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .select select::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .textarea::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .input::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:rgba(245,247,253,0.3)}html.theme--catppuccin-macchiato .select select[disabled]::-webkit-input-placeholder,html.theme--catppuccin-macchiato .textarea[disabled]::-webkit-input-placeholder,html.theme--catppuccin-macchiato .input[disabled]::-webkit-input-placeholder,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input[disabled]::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .select select::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .textarea::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .input::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:rgba(245,247,253,0.3)}html.theme--catppuccin-macchiato .select select[disabled]:-moz-placeholder,html.theme--catppuccin-macchiato .textarea[disabled]:-moz-placeholder,html.theme--catppuccin-macchiato .input[disabled]:-moz-placeholder,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input[disabled]:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .select select:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .textarea:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .input:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:rgba(245,247,253,0.3)}html.theme--catppuccin-macchiato .select select[disabled]:-ms-input-placeholder,html.theme--catppuccin-macchiato .textarea[disabled]:-ms-input-placeholder,html.theme--catppuccin-macchiato .input[disabled]:-ms-input-placeholder,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input[disabled]:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .select select:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .textarea:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .input:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:rgba(245,247,253,0.3)}html.theme--catppuccin-macchiato .textarea,html.theme--catppuccin-macchiato .input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input{box-shadow:inset 0 0.0625em 0.125em rgba(10,10,10,0.05);max-width:100%;width:100%}html.theme--catppuccin-macchiato .textarea[readonly],html.theme--catppuccin-macchiato .input[readonly],html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input[readonly]{box-shadow:none}html.theme--catppuccin-macchiato .is-white.textarea,html.theme--catppuccin-macchiato .is-white.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-white{border-color:#fff}html.theme--catppuccin-macchiato .is-white.textarea:focus,html.theme--catppuccin-macchiato .is-white.input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-white:focus,html.theme--catppuccin-macchiato .is-white.is-focused.textarea,html.theme--catppuccin-macchiato .is-white.is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .is-white.textarea:active,html.theme--catppuccin-macchiato .is-white.input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-white:active,html.theme--catppuccin-macchiato .is-white.is-active.textarea,html.theme--catppuccin-macchiato .is-white.is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-macchiato .is-black.textarea,html.theme--catppuccin-macchiato .is-black.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-black{border-color:#0a0a0a}html.theme--catppuccin-macchiato .is-black.textarea:focus,html.theme--catppuccin-macchiato .is-black.input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-black:focus,html.theme--catppuccin-macchiato .is-black.is-focused.textarea,html.theme--catppuccin-macchiato .is-black.is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .is-black.textarea:active,html.theme--catppuccin-macchiato .is-black.input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-black:active,html.theme--catppuccin-macchiato .is-black.is-active.textarea,html.theme--catppuccin-macchiato .is-black.is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-macchiato .is-light.textarea,html.theme--catppuccin-macchiato .is-light.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-light{border-color:#f5f5f5}html.theme--catppuccin-macchiato .is-light.textarea:focus,html.theme--catppuccin-macchiato .is-light.input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-light:focus,html.theme--catppuccin-macchiato .is-light.is-focused.textarea,html.theme--catppuccin-macchiato .is-light.is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .is-light.textarea:active,html.theme--catppuccin-macchiato .is-light.input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-light:active,html.theme--catppuccin-macchiato .is-light.is-active.textarea,html.theme--catppuccin-macchiato .is-light.is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-macchiato .is-dark.textarea,html.theme--catppuccin-macchiato .content kbd.textarea,html.theme--catppuccin-macchiato .is-dark.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-dark,html.theme--catppuccin-macchiato .content kbd.input{border-color:#363a4f}html.theme--catppuccin-macchiato .is-dark.textarea:focus,html.theme--catppuccin-macchiato .content kbd.textarea:focus,html.theme--catppuccin-macchiato .is-dark.input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-dark:focus,html.theme--catppuccin-macchiato .content kbd.input:focus,html.theme--catppuccin-macchiato .is-dark.is-focused.textarea,html.theme--catppuccin-macchiato .content kbd.is-focused.textarea,html.theme--catppuccin-macchiato .is-dark.is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .content kbd.is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar .content form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .is-dark.textarea:active,html.theme--catppuccin-macchiato .content kbd.textarea:active,html.theme--catppuccin-macchiato .is-dark.input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-dark:active,html.theme--catppuccin-macchiato .content kbd.input:active,html.theme--catppuccin-macchiato .is-dark.is-active.textarea,html.theme--catppuccin-macchiato .content kbd.is-active.textarea,html.theme--catppuccin-macchiato .is-dark.is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-macchiato .content kbd.is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar .content form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(54,58,79,0.25)}html.theme--catppuccin-macchiato .is-primary.textarea,html.theme--catppuccin-macchiato .docstring>section>a.textarea.docs-sourcelink,html.theme--catppuccin-macchiato .is-primary.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-primary,html.theme--catppuccin-macchiato .docstring>section>a.input.docs-sourcelink{border-color:#8aadf4}html.theme--catppuccin-macchiato .is-primary.textarea:focus,html.theme--catppuccin-macchiato .docstring>section>a.textarea.docs-sourcelink:focus,html.theme--catppuccin-macchiato .is-primary.input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-primary:focus,html.theme--catppuccin-macchiato .docstring>section>a.input.docs-sourcelink:focus,html.theme--catppuccin-macchiato .is-primary.is-focused.textarea,html.theme--catppuccin-macchiato .docstring>section>a.is-focused.textarea.docs-sourcelink,html.theme--catppuccin-macchiato .is-primary.is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .docstring>section>a.is-focused.input.docs-sourcelink,html.theme--catppuccin-macchiato .is-primary.textarea:active,html.theme--catppuccin-macchiato .docstring>section>a.textarea.docs-sourcelink:active,html.theme--catppuccin-macchiato .is-primary.input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-primary:active,html.theme--catppuccin-macchiato .docstring>section>a.input.docs-sourcelink:active,html.theme--catppuccin-macchiato .is-primary.is-active.textarea,html.theme--catppuccin-macchiato .docstring>section>a.is-active.textarea.docs-sourcelink,html.theme--catppuccin-macchiato .is-primary.is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-macchiato .docstring>section>a.is-active.input.docs-sourcelink{box-shadow:0 0 0 0.125em rgba(138,173,244,0.25)}html.theme--catppuccin-macchiato .is-link.textarea,html.theme--catppuccin-macchiato .is-link.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-link{border-color:#8aadf4}html.theme--catppuccin-macchiato .is-link.textarea:focus,html.theme--catppuccin-macchiato .is-link.input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-link:focus,html.theme--catppuccin-macchiato .is-link.is-focused.textarea,html.theme--catppuccin-macchiato .is-link.is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .is-link.textarea:active,html.theme--catppuccin-macchiato .is-link.input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-link:active,html.theme--catppuccin-macchiato .is-link.is-active.textarea,html.theme--catppuccin-macchiato .is-link.is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(138,173,244,0.25)}html.theme--catppuccin-macchiato .is-info.textarea,html.theme--catppuccin-macchiato .is-info.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-info{border-color:#8bd5ca}html.theme--catppuccin-macchiato .is-info.textarea:focus,html.theme--catppuccin-macchiato .is-info.input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-info:focus,html.theme--catppuccin-macchiato .is-info.is-focused.textarea,html.theme--catppuccin-macchiato .is-info.is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .is-info.textarea:active,html.theme--catppuccin-macchiato .is-info.input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-info:active,html.theme--catppuccin-macchiato .is-info.is-active.textarea,html.theme--catppuccin-macchiato .is-info.is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(139,213,202,0.25)}html.theme--catppuccin-macchiato .is-success.textarea,html.theme--catppuccin-macchiato .is-success.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-success{border-color:#a6da95}html.theme--catppuccin-macchiato .is-success.textarea:focus,html.theme--catppuccin-macchiato .is-success.input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-success:focus,html.theme--catppuccin-macchiato .is-success.is-focused.textarea,html.theme--catppuccin-macchiato .is-success.is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .is-success.textarea:active,html.theme--catppuccin-macchiato .is-success.input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-success:active,html.theme--catppuccin-macchiato .is-success.is-active.textarea,html.theme--catppuccin-macchiato .is-success.is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(166,218,149,0.25)}html.theme--catppuccin-macchiato .is-warning.textarea,html.theme--catppuccin-macchiato .is-warning.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-warning{border-color:#eed49f}html.theme--catppuccin-macchiato .is-warning.textarea:focus,html.theme--catppuccin-macchiato .is-warning.input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-warning:focus,html.theme--catppuccin-macchiato .is-warning.is-focused.textarea,html.theme--catppuccin-macchiato .is-warning.is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .is-warning.textarea:active,html.theme--catppuccin-macchiato .is-warning.input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-warning:active,html.theme--catppuccin-macchiato .is-warning.is-active.textarea,html.theme--catppuccin-macchiato .is-warning.is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(238,212,159,0.25)}html.theme--catppuccin-macchiato .is-danger.textarea,html.theme--catppuccin-macchiato .is-danger.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-danger{border-color:#ed8796}html.theme--catppuccin-macchiato .is-danger.textarea:focus,html.theme--catppuccin-macchiato .is-danger.input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-danger:focus,html.theme--catppuccin-macchiato .is-danger.is-focused.textarea,html.theme--catppuccin-macchiato .is-danger.is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .is-danger.textarea:active,html.theme--catppuccin-macchiato .is-danger.input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-danger:active,html.theme--catppuccin-macchiato .is-danger.is-active.textarea,html.theme--catppuccin-macchiato .is-danger.is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(237,135,150,0.25)}html.theme--catppuccin-macchiato .is-small.textarea,html.theme--catppuccin-macchiato .is-small.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input{border-radius:3px;font-size:.75rem}html.theme--catppuccin-macchiato .is-medium.textarea,html.theme--catppuccin-macchiato .is-medium.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .is-large.textarea,html.theme--catppuccin-macchiato .is-large.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .is-fullwidth.textarea,html.theme--catppuccin-macchiato .is-fullwidth.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-fullwidth{display:block;width:100%}html.theme--catppuccin-macchiato .is-inline.textarea,html.theme--catppuccin-macchiato .is-inline.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-inline{display:inline;width:auto}html.theme--catppuccin-macchiato .input.is-rounded,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input{border-radius:9999px;padding-left:calc(calc(0.75em - 1px) + 0.375em);padding-right:calc(calc(0.75em - 1px) + 0.375em)}html.theme--catppuccin-macchiato .input.is-static,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}html.theme--catppuccin-macchiato .textarea{display:block;max-width:100%;min-width:100%;padding:calc(0.75em - 1px);resize:vertical}html.theme--catppuccin-macchiato .textarea:not([rows]){max-height:40em;min-height:8em}html.theme--catppuccin-macchiato .textarea[rows]{height:initial}html.theme--catppuccin-macchiato .textarea.has-fixed-size{resize:none}html.theme--catppuccin-macchiato .radio,html.theme--catppuccin-macchiato .checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}html.theme--catppuccin-macchiato .radio input,html.theme--catppuccin-macchiato .checkbox input{cursor:pointer}html.theme--catppuccin-macchiato .radio:hover,html.theme--catppuccin-macchiato .checkbox:hover{color:#91d7e3}html.theme--catppuccin-macchiato .radio[disabled],html.theme--catppuccin-macchiato .checkbox[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .radio,fieldset[disabled] html.theme--catppuccin-macchiato .checkbox,html.theme--catppuccin-macchiato .radio input[disabled],html.theme--catppuccin-macchiato .checkbox input[disabled]{color:#f5f7fd;cursor:not-allowed}html.theme--catppuccin-macchiato .radio+.radio{margin-left:.5em}html.theme--catppuccin-macchiato .select{display:inline-block;max-width:100%;position:relative;vertical-align:top}html.theme--catppuccin-macchiato .select:not(.is-multiple){height:2.5em}html.theme--catppuccin-macchiato .select:not(.is-multiple):not(.is-loading)::after{border-color:#8aadf4;right:1.125em;z-index:4}html.theme--catppuccin-macchiato .select.is-rounded select,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.select select{border-radius:9999px;padding-left:1em}html.theme--catppuccin-macchiato .select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}html.theme--catppuccin-macchiato .select select::-ms-expand{display:none}html.theme--catppuccin-macchiato .select select[disabled]:hover,fieldset[disabled] html.theme--catppuccin-macchiato .select select:hover{border-color:#1e2030}html.theme--catppuccin-macchiato .select select:not([multiple]){padding-right:2.5em}html.theme--catppuccin-macchiato .select select[multiple]{height:auto;padding:0}html.theme--catppuccin-macchiato .select select[multiple] option{padding:0.5em 1em}html.theme--catppuccin-macchiato .select:not(.is-multiple):not(.is-loading):hover::after{border-color:#91d7e3}html.theme--catppuccin-macchiato .select.is-white:not(:hover)::after{border-color:#fff}html.theme--catppuccin-macchiato .select.is-white select{border-color:#fff}html.theme--catppuccin-macchiato .select.is-white select:hover,html.theme--catppuccin-macchiato .select.is-white select.is-hovered{border-color:#f2f2f2}html.theme--catppuccin-macchiato .select.is-white select:focus,html.theme--catppuccin-macchiato .select.is-white select.is-focused,html.theme--catppuccin-macchiato .select.is-white select:active,html.theme--catppuccin-macchiato .select.is-white select.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-macchiato .select.is-black:not(:hover)::after{border-color:#0a0a0a}html.theme--catppuccin-macchiato .select.is-black select{border-color:#0a0a0a}html.theme--catppuccin-macchiato .select.is-black select:hover,html.theme--catppuccin-macchiato .select.is-black select.is-hovered{border-color:#000}html.theme--catppuccin-macchiato .select.is-black select:focus,html.theme--catppuccin-macchiato .select.is-black select.is-focused,html.theme--catppuccin-macchiato .select.is-black select:active,html.theme--catppuccin-macchiato .select.is-black select.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-macchiato .select.is-light:not(:hover)::after{border-color:#f5f5f5}html.theme--catppuccin-macchiato .select.is-light select{border-color:#f5f5f5}html.theme--catppuccin-macchiato .select.is-light select:hover,html.theme--catppuccin-macchiato .select.is-light select.is-hovered{border-color:#e8e8e8}html.theme--catppuccin-macchiato .select.is-light select:focus,html.theme--catppuccin-macchiato .select.is-light select.is-focused,html.theme--catppuccin-macchiato .select.is-light select:active,html.theme--catppuccin-macchiato .select.is-light select.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-macchiato .select.is-dark:not(:hover)::after,html.theme--catppuccin-macchiato .content kbd.select:not(:hover)::after{border-color:#363a4f}html.theme--catppuccin-macchiato .select.is-dark select,html.theme--catppuccin-macchiato .content kbd.select select{border-color:#363a4f}html.theme--catppuccin-macchiato .select.is-dark select:hover,html.theme--catppuccin-macchiato .content kbd.select select:hover,html.theme--catppuccin-macchiato .select.is-dark select.is-hovered,html.theme--catppuccin-macchiato .content kbd.select select.is-hovered{border-color:#2c2f40}html.theme--catppuccin-macchiato .select.is-dark select:focus,html.theme--catppuccin-macchiato .content kbd.select select:focus,html.theme--catppuccin-macchiato .select.is-dark select.is-focused,html.theme--catppuccin-macchiato .content kbd.select select.is-focused,html.theme--catppuccin-macchiato .select.is-dark select:active,html.theme--catppuccin-macchiato .content kbd.select select:active,html.theme--catppuccin-macchiato .select.is-dark select.is-active,html.theme--catppuccin-macchiato .content kbd.select select.is-active{box-shadow:0 0 0 0.125em rgba(54,58,79,0.25)}html.theme--catppuccin-macchiato .select.is-primary:not(:hover)::after,html.theme--catppuccin-macchiato .docstring>section>a.select.docs-sourcelink:not(:hover)::after{border-color:#8aadf4}html.theme--catppuccin-macchiato .select.is-primary select,html.theme--catppuccin-macchiato .docstring>section>a.select.docs-sourcelink select{border-color:#8aadf4}html.theme--catppuccin-macchiato .select.is-primary select:hover,html.theme--catppuccin-macchiato .docstring>section>a.select.docs-sourcelink select:hover,html.theme--catppuccin-macchiato .select.is-primary select.is-hovered,html.theme--catppuccin-macchiato .docstring>section>a.select.docs-sourcelink select.is-hovered{border-color:#739df2}html.theme--catppuccin-macchiato .select.is-primary select:focus,html.theme--catppuccin-macchiato .docstring>section>a.select.docs-sourcelink select:focus,html.theme--catppuccin-macchiato .select.is-primary select.is-focused,html.theme--catppuccin-macchiato .docstring>section>a.select.docs-sourcelink select.is-focused,html.theme--catppuccin-macchiato .select.is-primary select:active,html.theme--catppuccin-macchiato .docstring>section>a.select.docs-sourcelink select:active,html.theme--catppuccin-macchiato .select.is-primary select.is-active,html.theme--catppuccin-macchiato .docstring>section>a.select.docs-sourcelink select.is-active{box-shadow:0 0 0 0.125em rgba(138,173,244,0.25)}html.theme--catppuccin-macchiato .select.is-link:not(:hover)::after{border-color:#8aadf4}html.theme--catppuccin-macchiato .select.is-link select{border-color:#8aadf4}html.theme--catppuccin-macchiato .select.is-link select:hover,html.theme--catppuccin-macchiato .select.is-link select.is-hovered{border-color:#739df2}html.theme--catppuccin-macchiato .select.is-link select:focus,html.theme--catppuccin-macchiato .select.is-link select.is-focused,html.theme--catppuccin-macchiato .select.is-link select:active,html.theme--catppuccin-macchiato .select.is-link select.is-active{box-shadow:0 0 0 0.125em rgba(138,173,244,0.25)}html.theme--catppuccin-macchiato .select.is-info:not(:hover)::after{border-color:#8bd5ca}html.theme--catppuccin-macchiato .select.is-info select{border-color:#8bd5ca}html.theme--catppuccin-macchiato .select.is-info select:hover,html.theme--catppuccin-macchiato .select.is-info select.is-hovered{border-color:#78cec1}html.theme--catppuccin-macchiato .select.is-info select:focus,html.theme--catppuccin-macchiato .select.is-info select.is-focused,html.theme--catppuccin-macchiato .select.is-info select:active,html.theme--catppuccin-macchiato .select.is-info select.is-active{box-shadow:0 0 0 0.125em rgba(139,213,202,0.25)}html.theme--catppuccin-macchiato .select.is-success:not(:hover)::after{border-color:#a6da95}html.theme--catppuccin-macchiato .select.is-success select{border-color:#a6da95}html.theme--catppuccin-macchiato .select.is-success select:hover,html.theme--catppuccin-macchiato .select.is-success select.is-hovered{border-color:#96d382}html.theme--catppuccin-macchiato .select.is-success select:focus,html.theme--catppuccin-macchiato .select.is-success select.is-focused,html.theme--catppuccin-macchiato .select.is-success select:active,html.theme--catppuccin-macchiato .select.is-success select.is-active{box-shadow:0 0 0 0.125em rgba(166,218,149,0.25)}html.theme--catppuccin-macchiato .select.is-warning:not(:hover)::after{border-color:#eed49f}html.theme--catppuccin-macchiato .select.is-warning select{border-color:#eed49f}html.theme--catppuccin-macchiato .select.is-warning select:hover,html.theme--catppuccin-macchiato .select.is-warning select.is-hovered{border-color:#eaca89}html.theme--catppuccin-macchiato .select.is-warning select:focus,html.theme--catppuccin-macchiato .select.is-warning select.is-focused,html.theme--catppuccin-macchiato .select.is-warning select:active,html.theme--catppuccin-macchiato .select.is-warning select.is-active{box-shadow:0 0 0 0.125em rgba(238,212,159,0.25)}html.theme--catppuccin-macchiato .select.is-danger:not(:hover)::after{border-color:#ed8796}html.theme--catppuccin-macchiato .select.is-danger select{border-color:#ed8796}html.theme--catppuccin-macchiato .select.is-danger select:hover,html.theme--catppuccin-macchiato .select.is-danger select.is-hovered{border-color:#ea7183}html.theme--catppuccin-macchiato .select.is-danger select:focus,html.theme--catppuccin-macchiato .select.is-danger select.is-focused,html.theme--catppuccin-macchiato .select.is-danger select:active,html.theme--catppuccin-macchiato .select.is-danger select.is-active{box-shadow:0 0 0 0.125em rgba(237,135,150,0.25)}html.theme--catppuccin-macchiato .select.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.select{border-radius:3px;font-size:.75rem}html.theme--catppuccin-macchiato .select.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .select.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .select.is-disabled::after{border-color:#f5f7fd !important;opacity:0.5}html.theme--catppuccin-macchiato .select.is-fullwidth{width:100%}html.theme--catppuccin-macchiato .select.is-fullwidth select{width:100%}html.theme--catppuccin-macchiato .select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:0.625em;transform:none}html.theme--catppuccin-macchiato .select.is-loading.is-small:after,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--catppuccin-macchiato .select.is-loading.is-medium:after{font-size:1.25rem}html.theme--catppuccin-macchiato .select.is-loading.is-large:after{font-size:1.5rem}html.theme--catppuccin-macchiato .file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}html.theme--catppuccin-macchiato .file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-macchiato .file.is-white:hover .file-cta,html.theme--catppuccin-macchiato .file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-macchiato .file.is-white:focus .file-cta,html.theme--catppuccin-macchiato .file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,255,255,0.25);color:#0a0a0a}html.theme--catppuccin-macchiato .file.is-white:active .file-cta,html.theme--catppuccin-macchiato .file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-macchiato .file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-black:hover .file-cta,html.theme--catppuccin-macchiato .file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-black:focus .file-cta,html.theme--catppuccin-macchiato .file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(10,10,10,0.25);color:#fff}html.theme--catppuccin-macchiato .file.is-black:active .file-cta,html.theme--catppuccin-macchiato .file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-light:hover .file-cta,html.theme--catppuccin-macchiato .file.is-light.is-hovered .file-cta{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-light:focus .file-cta,html.theme--catppuccin-macchiato .file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(245,245,245,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-light:active .file-cta,html.theme--catppuccin-macchiato .file.is-light.is-active .file-cta{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-dark .file-cta,html.theme--catppuccin-macchiato .content kbd.file .file-cta{background-color:#363a4f;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-dark:hover .file-cta,html.theme--catppuccin-macchiato .content kbd.file:hover .file-cta,html.theme--catppuccin-macchiato .file.is-dark.is-hovered .file-cta,html.theme--catppuccin-macchiato .content kbd.file.is-hovered .file-cta{background-color:#313447;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-dark:focus .file-cta,html.theme--catppuccin-macchiato .content kbd.file:focus .file-cta,html.theme--catppuccin-macchiato .file.is-dark.is-focused .file-cta,html.theme--catppuccin-macchiato .content kbd.file.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(54,58,79,0.25);color:#fff}html.theme--catppuccin-macchiato .file.is-dark:active .file-cta,html.theme--catppuccin-macchiato .content kbd.file:active .file-cta,html.theme--catppuccin-macchiato .file.is-dark.is-active .file-cta,html.theme--catppuccin-macchiato .content kbd.file.is-active .file-cta{background-color:#2c2f40;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-primary .file-cta,html.theme--catppuccin-macchiato .docstring>section>a.file.docs-sourcelink .file-cta{background-color:#8aadf4;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-primary:hover .file-cta,html.theme--catppuccin-macchiato .docstring>section>a.file.docs-sourcelink:hover .file-cta,html.theme--catppuccin-macchiato .file.is-primary.is-hovered .file-cta,html.theme--catppuccin-macchiato .docstring>section>a.file.is-hovered.docs-sourcelink .file-cta{background-color:#7ea5f3;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-primary:focus .file-cta,html.theme--catppuccin-macchiato .docstring>section>a.file.docs-sourcelink:focus .file-cta,html.theme--catppuccin-macchiato .file.is-primary.is-focused .file-cta,html.theme--catppuccin-macchiato .docstring>section>a.file.is-focused.docs-sourcelink .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(138,173,244,0.25);color:#fff}html.theme--catppuccin-macchiato .file.is-primary:active .file-cta,html.theme--catppuccin-macchiato .docstring>section>a.file.docs-sourcelink:active .file-cta,html.theme--catppuccin-macchiato .file.is-primary.is-active .file-cta,html.theme--catppuccin-macchiato .docstring>section>a.file.is-active.docs-sourcelink .file-cta{background-color:#739df2;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-link .file-cta{background-color:#8aadf4;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-link:hover .file-cta,html.theme--catppuccin-macchiato .file.is-link.is-hovered .file-cta{background-color:#7ea5f3;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-link:focus .file-cta,html.theme--catppuccin-macchiato .file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(138,173,244,0.25);color:#fff}html.theme--catppuccin-macchiato .file.is-link:active .file-cta,html.theme--catppuccin-macchiato .file.is-link.is-active .file-cta{background-color:#739df2;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-info .file-cta{background-color:#8bd5ca;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-info:hover .file-cta,html.theme--catppuccin-macchiato .file.is-info.is-hovered .file-cta{background-color:#82d2c6;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-info:focus .file-cta,html.theme--catppuccin-macchiato .file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(139,213,202,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-info:active .file-cta,html.theme--catppuccin-macchiato .file.is-info.is-active .file-cta{background-color:#78cec1;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-success .file-cta{background-color:#a6da95;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-success:hover .file-cta,html.theme--catppuccin-macchiato .file.is-success.is-hovered .file-cta{background-color:#9ed78c;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-success:focus .file-cta,html.theme--catppuccin-macchiato .file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(166,218,149,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-success:active .file-cta,html.theme--catppuccin-macchiato .file.is-success.is-active .file-cta{background-color:#96d382;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-warning .file-cta{background-color:#eed49f;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-warning:hover .file-cta,html.theme--catppuccin-macchiato .file.is-warning.is-hovered .file-cta{background-color:#eccf94;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-warning:focus .file-cta,html.theme--catppuccin-macchiato .file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(238,212,159,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-warning:active .file-cta,html.theme--catppuccin-macchiato .file.is-warning.is-active .file-cta{background-color:#eaca89;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-danger .file-cta{background-color:#ed8796;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-danger:hover .file-cta,html.theme--catppuccin-macchiato .file.is-danger.is-hovered .file-cta{background-color:#eb7c8c;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-danger:focus .file-cta,html.theme--catppuccin-macchiato .file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(237,135,150,0.25);color:#fff}html.theme--catppuccin-macchiato .file.is-danger:active .file-cta,html.theme--catppuccin-macchiato .file.is-danger.is-active .file-cta{background-color:#ea7183;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.file{font-size:.75rem}html.theme--catppuccin-macchiato .file.is-normal{font-size:1rem}html.theme--catppuccin-macchiato .file.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .file.is-medium .file-icon .fa{font-size:21px}html.theme--catppuccin-macchiato .file.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .file.is-large .file-icon .fa{font-size:28px}html.theme--catppuccin-macchiato .file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--catppuccin-macchiato .file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-macchiato .file.has-name.is-empty .file-cta{border-radius:.4em}html.theme--catppuccin-macchiato .file.has-name.is-empty .file-name{display:none}html.theme--catppuccin-macchiato .file.is-boxed .file-label{flex-direction:column}html.theme--catppuccin-macchiato .file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}html.theme--catppuccin-macchiato .file.is-boxed .file-name{border-width:0 1px 1px}html.theme--catppuccin-macchiato .file.is-boxed .file-icon{height:1.5em;width:1.5em}html.theme--catppuccin-macchiato .file.is-boxed .file-icon .fa{font-size:21px}html.theme--catppuccin-macchiato .file.is-boxed.is-small .file-icon .fa,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-boxed .file-icon .fa{font-size:14px}html.theme--catppuccin-macchiato .file.is-boxed.is-medium .file-icon .fa{font-size:28px}html.theme--catppuccin-macchiato .file.is-boxed.is-large .file-icon .fa{font-size:35px}html.theme--catppuccin-macchiato .file.is-boxed.has-name .file-cta{border-radius:.4em .4em 0 0}html.theme--catppuccin-macchiato .file.is-boxed.has-name .file-name{border-radius:0 0 .4em .4em;border-width:0 1px 1px}html.theme--catppuccin-macchiato .file.is-centered{justify-content:center}html.theme--catppuccin-macchiato .file.is-fullwidth .file-label{width:100%}html.theme--catppuccin-macchiato .file.is-fullwidth .file-name{flex-grow:1;max-width:none}html.theme--catppuccin-macchiato .file.is-right{justify-content:flex-end}html.theme--catppuccin-macchiato .file.is-right .file-cta{border-radius:0 .4em .4em 0}html.theme--catppuccin-macchiato .file.is-right .file-name{border-radius:.4em 0 0 .4em;border-width:1px 0 1px 1px;order:-1}html.theme--catppuccin-macchiato .file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}html.theme--catppuccin-macchiato .file-label:hover .file-cta{background-color:#313447;color:#b5c1f1}html.theme--catppuccin-macchiato .file-label:hover .file-name{border-color:#565a71}html.theme--catppuccin-macchiato .file-label:active .file-cta{background-color:#2c2f40;color:#b5c1f1}html.theme--catppuccin-macchiato .file-label:active .file-name{border-color:#505469}html.theme--catppuccin-macchiato .file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}html.theme--catppuccin-macchiato .file-cta,html.theme--catppuccin-macchiato .file-name{border-color:#5b6078;border-radius:.4em;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}html.theme--catppuccin-macchiato .file-cta{background-color:#363a4f;color:#cad3f5}html.theme--catppuccin-macchiato .file-name{border-color:#5b6078;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}html.theme--catppuccin-macchiato .file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}html.theme--catppuccin-macchiato .file-icon .fa{font-size:14px}html.theme--catppuccin-macchiato .label{color:#b5c1f1;display:block;font-size:1rem;font-weight:700}html.theme--catppuccin-macchiato .label:not(:last-child){margin-bottom:0.5em}html.theme--catppuccin-macchiato .label.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.label{font-size:.75rem}html.theme--catppuccin-macchiato .label.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .label.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .help{display:block;font-size:.75rem;margin-top:0.25rem}html.theme--catppuccin-macchiato .help.is-white{color:#fff}html.theme--catppuccin-macchiato .help.is-black{color:#0a0a0a}html.theme--catppuccin-macchiato .help.is-light{color:#f5f5f5}html.theme--catppuccin-macchiato .help.is-dark,html.theme--catppuccin-macchiato .content kbd.help{color:#363a4f}html.theme--catppuccin-macchiato .help.is-primary,html.theme--catppuccin-macchiato .docstring>section>a.help.docs-sourcelink{color:#8aadf4}html.theme--catppuccin-macchiato .help.is-link{color:#8aadf4}html.theme--catppuccin-macchiato .help.is-info{color:#8bd5ca}html.theme--catppuccin-macchiato .help.is-success{color:#a6da95}html.theme--catppuccin-macchiato .help.is-warning{color:#eed49f}html.theme--catppuccin-macchiato .help.is-danger{color:#ed8796}html.theme--catppuccin-macchiato .field:not(:last-child){margin-bottom:0.75rem}html.theme--catppuccin-macchiato .field.has-addons{display:flex;justify-content:flex-start}html.theme--catppuccin-macchiato .field.has-addons .control:not(:last-child){margin-right:-1px}html.theme--catppuccin-macchiato .field.has-addons .control:not(:first-child):not(:last-child) .button,html.theme--catppuccin-macchiato .field.has-addons .control:not(:first-child):not(:last-child) .input,html.theme--catppuccin-macchiato .field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search>input,html.theme--catppuccin-macchiato .field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}html.theme--catppuccin-macchiato .field.has-addons .control:first-child:not(:only-child) .button,html.theme--catppuccin-macchiato .field.has-addons .control:first-child:not(:only-child) .input,html.theme--catppuccin-macchiato .field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search>input,html.theme--catppuccin-macchiato .field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--catppuccin-macchiato .field.has-addons .control:last-child:not(:only-child) .button,html.theme--catppuccin-macchiato .field.has-addons .control:last-child:not(:only-child) .input,html.theme--catppuccin-macchiato .field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search>input,html.theme--catppuccin-macchiato .field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-macchiato .field.has-addons .control .button:not([disabled]):hover,html.theme--catppuccin-macchiato .field.has-addons .control .button.is-hovered:not([disabled]),html.theme--catppuccin-macchiato .field.has-addons .control .input:not([disabled]):hover,html.theme--catppuccin-macchiato .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):hover,html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):hover,html.theme--catppuccin-macchiato .field.has-addons .control .input.is-hovered:not([disabled]),html.theme--catppuccin-macchiato .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-hovered:not([disabled]),html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-hovered:not([disabled]),html.theme--catppuccin-macchiato .field.has-addons .control .select select:not([disabled]):hover,html.theme--catppuccin-macchiato .field.has-addons .control .select select.is-hovered:not([disabled]){z-index:2}html.theme--catppuccin-macchiato .field.has-addons .control .button:not([disabled]):focus,html.theme--catppuccin-macchiato .field.has-addons .control .button.is-focused:not([disabled]),html.theme--catppuccin-macchiato .field.has-addons .control .button:not([disabled]):active,html.theme--catppuccin-macchiato .field.has-addons .control .button.is-active:not([disabled]),html.theme--catppuccin-macchiato .field.has-addons .control .input:not([disabled]):focus,html.theme--catppuccin-macchiato .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus,html.theme--catppuccin-macchiato .field.has-addons .control .input.is-focused:not([disabled]),html.theme--catppuccin-macchiato .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]),html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]),html.theme--catppuccin-macchiato .field.has-addons .control .input:not([disabled]):active,html.theme--catppuccin-macchiato .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active,html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active,html.theme--catppuccin-macchiato .field.has-addons .control .input.is-active:not([disabled]),html.theme--catppuccin-macchiato .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]),html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]),html.theme--catppuccin-macchiato .field.has-addons .control .select select:not([disabled]):focus,html.theme--catppuccin-macchiato .field.has-addons .control .select select.is-focused:not([disabled]),html.theme--catppuccin-macchiato .field.has-addons .control .select select:not([disabled]):active,html.theme--catppuccin-macchiato .field.has-addons .control .select select.is-active:not([disabled]){z-index:3}html.theme--catppuccin-macchiato .field.has-addons .control .button:not([disabled]):focus:hover,html.theme--catppuccin-macchiato .field.has-addons .control .button.is-focused:not([disabled]):hover,html.theme--catppuccin-macchiato .field.has-addons .control .button:not([disabled]):active:hover,html.theme--catppuccin-macchiato .field.has-addons .control .button.is-active:not([disabled]):hover,html.theme--catppuccin-macchiato .field.has-addons .control .input:not([disabled]):focus:hover,html.theme--catppuccin-macchiato .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus:hover,html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus:hover,html.theme--catppuccin-macchiato .field.has-addons .control .input.is-focused:not([disabled]):hover,html.theme--catppuccin-macchiato .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]):hover,html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]):hover,html.theme--catppuccin-macchiato .field.has-addons .control .input:not([disabled]):active:hover,html.theme--catppuccin-macchiato .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active:hover,html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active:hover,html.theme--catppuccin-macchiato .field.has-addons .control .input.is-active:not([disabled]):hover,html.theme--catppuccin-macchiato .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]):hover,html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]):hover,html.theme--catppuccin-macchiato .field.has-addons .control .select select:not([disabled]):focus:hover,html.theme--catppuccin-macchiato .field.has-addons .control .select select.is-focused:not([disabled]):hover,html.theme--catppuccin-macchiato .field.has-addons .control .select select:not([disabled]):active:hover,html.theme--catppuccin-macchiato .field.has-addons .control .select select.is-active:not([disabled]):hover{z-index:4}html.theme--catppuccin-macchiato .field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-macchiato .field.has-addons.has-addons-centered{justify-content:center}html.theme--catppuccin-macchiato .field.has-addons.has-addons-right{justify-content:flex-end}html.theme--catppuccin-macchiato .field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}html.theme--catppuccin-macchiato .field.is-grouped{display:flex;justify-content:flex-start}html.theme--catppuccin-macchiato .field.is-grouped>.control{flex-shrink:0}html.theme--catppuccin-macchiato .field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--catppuccin-macchiato .field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-macchiato .field.is-grouped.is-grouped-centered{justify-content:center}html.theme--catppuccin-macchiato .field.is-grouped.is-grouped-right{justify-content:flex-end}html.theme--catppuccin-macchiato .field.is-grouped.is-grouped-multiline{flex-wrap:wrap}html.theme--catppuccin-macchiato .field.is-grouped.is-grouped-multiline>.control:last-child,html.theme--catppuccin-macchiato .field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:0.75rem}html.theme--catppuccin-macchiato .field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}html.theme--catppuccin-macchiato .field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .field.is-horizontal{display:flex}}html.theme--catppuccin-macchiato .field-label .label{font-size:inherit}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .field-label{margin-bottom:0.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}html.theme--catppuccin-macchiato .field-label.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.field-label{font-size:.75rem;padding-top:0.375em}html.theme--catppuccin-macchiato .field-label.is-normal{padding-top:0.375em}html.theme--catppuccin-macchiato .field-label.is-medium{font-size:1.25rem;padding-top:0.375em}html.theme--catppuccin-macchiato .field-label.is-large{font-size:1.5rem;padding-top:0.375em}}html.theme--catppuccin-macchiato .field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}html.theme--catppuccin-macchiato .field-body .field{margin-bottom:0}html.theme--catppuccin-macchiato .field-body>.field{flex-shrink:1}html.theme--catppuccin-macchiato .field-body>.field:not(.is-narrow){flex-grow:1}html.theme--catppuccin-macchiato .field-body>.field:not(:last-child){margin-right:.75rem}}html.theme--catppuccin-macchiato .control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}html.theme--catppuccin-macchiato .control.has-icons-left .input:focus~.icon,html.theme--catppuccin-macchiato .control.has-icons-left #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--catppuccin-macchiato #documenter .docs-sidebar .control.has-icons-left form.docs-search>input:focus~.icon,html.theme--catppuccin-macchiato .control.has-icons-left .select:focus~.icon,html.theme--catppuccin-macchiato .control.has-icons-right .input:focus~.icon,html.theme--catppuccin-macchiato .control.has-icons-right #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--catppuccin-macchiato #documenter .docs-sidebar .control.has-icons-right form.docs-search>input:focus~.icon,html.theme--catppuccin-macchiato .control.has-icons-right .select:focus~.icon{color:#363a4f}html.theme--catppuccin-macchiato .control.has-icons-left .input.is-small~.icon,html.theme--catppuccin-macchiato .control.has-icons-left #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--catppuccin-macchiato #documenter .docs-sidebar .control.has-icons-left form.docs-search>input~.icon,html.theme--catppuccin-macchiato .control.has-icons-left .select.is-small~.icon,html.theme--catppuccin-macchiato .control.has-icons-right .input.is-small~.icon,html.theme--catppuccin-macchiato .control.has-icons-right #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--catppuccin-macchiato #documenter .docs-sidebar .control.has-icons-right form.docs-search>input~.icon,html.theme--catppuccin-macchiato .control.has-icons-right .select.is-small~.icon{font-size:.75rem}html.theme--catppuccin-macchiato .control.has-icons-left .input.is-medium~.icon,html.theme--catppuccin-macchiato .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--catppuccin-macchiato #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-medium~.icon,html.theme--catppuccin-macchiato .control.has-icons-left .select.is-medium~.icon,html.theme--catppuccin-macchiato .control.has-icons-right .input.is-medium~.icon,html.theme--catppuccin-macchiato .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--catppuccin-macchiato #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-medium~.icon,html.theme--catppuccin-macchiato .control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}html.theme--catppuccin-macchiato .control.has-icons-left .input.is-large~.icon,html.theme--catppuccin-macchiato .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--catppuccin-macchiato #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-large~.icon,html.theme--catppuccin-macchiato .control.has-icons-left .select.is-large~.icon,html.theme--catppuccin-macchiato .control.has-icons-right .input.is-large~.icon,html.theme--catppuccin-macchiato .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--catppuccin-macchiato #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-large~.icon,html.theme--catppuccin-macchiato .control.has-icons-right .select.is-large~.icon{font-size:1.5rem}html.theme--catppuccin-macchiato .control.has-icons-left .icon,html.theme--catppuccin-macchiato .control.has-icons-right .icon{color:#5b6078;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}html.theme--catppuccin-macchiato .control.has-icons-left .input,html.theme--catppuccin-macchiato .control.has-icons-left #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-macchiato #documenter .docs-sidebar .control.has-icons-left form.docs-search>input,html.theme--catppuccin-macchiato .control.has-icons-left .select select{padding-left:2.5em}html.theme--catppuccin-macchiato .control.has-icons-left .icon.is-left{left:0}html.theme--catppuccin-macchiato .control.has-icons-right .input,html.theme--catppuccin-macchiato .control.has-icons-right #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-macchiato #documenter .docs-sidebar .control.has-icons-right form.docs-search>input,html.theme--catppuccin-macchiato .control.has-icons-right .select select{padding-right:2.5em}html.theme--catppuccin-macchiato .control.has-icons-right .icon.is-right{right:0}html.theme--catppuccin-macchiato .control.is-loading::after{position:absolute !important;right:.625em;top:0.625em;z-index:4}html.theme--catppuccin-macchiato .control.is-loading.is-small:after,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--catppuccin-macchiato .control.is-loading.is-medium:after{font-size:1.25rem}html.theme--catppuccin-macchiato .control.is-loading.is-large:after{font-size:1.5rem}html.theme--catppuccin-macchiato .breadcrumb{font-size:1rem;white-space:nowrap}html.theme--catppuccin-macchiato .breadcrumb a{align-items:center;color:#8aadf4;display:flex;justify-content:center;padding:0 .75em}html.theme--catppuccin-macchiato .breadcrumb a:hover{color:#91d7e3}html.theme--catppuccin-macchiato .breadcrumb li{align-items:center;display:flex}html.theme--catppuccin-macchiato .breadcrumb li:first-child a{padding-left:0}html.theme--catppuccin-macchiato .breadcrumb li.is-active a{color:#b5c1f1;cursor:default;pointer-events:none}html.theme--catppuccin-macchiato .breadcrumb li+li::before{color:#6e738d;content:"\0002f"}html.theme--catppuccin-macchiato .breadcrumb ul,html.theme--catppuccin-macchiato .breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-macchiato .breadcrumb .icon:first-child{margin-right:.5em}html.theme--catppuccin-macchiato .breadcrumb .icon:last-child{margin-left:.5em}html.theme--catppuccin-macchiato .breadcrumb.is-centered ol,html.theme--catppuccin-macchiato .breadcrumb.is-centered ul{justify-content:center}html.theme--catppuccin-macchiato .breadcrumb.is-right ol,html.theme--catppuccin-macchiato .breadcrumb.is-right ul{justify-content:flex-end}html.theme--catppuccin-macchiato .breadcrumb.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.breadcrumb{font-size:.75rem}html.theme--catppuccin-macchiato .breadcrumb.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .breadcrumb.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .breadcrumb.has-arrow-separator li+li::before{content:"\02192"}html.theme--catppuccin-macchiato .breadcrumb.has-bullet-separator li+li::before{content:"\02022"}html.theme--catppuccin-macchiato .breadcrumb.has-dot-separator li+li::before{content:"\000b7"}html.theme--catppuccin-macchiato .breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}html.theme--catppuccin-macchiato .card{background-color:#fff;border-radius:.25rem;box-shadow:#171717;color:#cad3f5;max-width:100%;position:relative}html.theme--catppuccin-macchiato .card-footer:first-child,html.theme--catppuccin-macchiato .card-content:first-child,html.theme--catppuccin-macchiato .card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--catppuccin-macchiato .card-footer:last-child,html.theme--catppuccin-macchiato .card-content:last-child,html.theme--catppuccin-macchiato .card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--catppuccin-macchiato .card-header{background-color:rgba(0,0,0,0);align-items:stretch;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);display:flex}html.theme--catppuccin-macchiato .card-header-title{align-items:center;color:#b5c1f1;display:flex;flex-grow:1;font-weight:700;padding:0.75rem 1rem}html.theme--catppuccin-macchiato .card-header-title.is-centered{justify-content:center}html.theme--catppuccin-macchiato .card-header-icon{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0;align-items:center;cursor:pointer;display:flex;justify-content:center;padding:0.75rem 1rem}html.theme--catppuccin-macchiato .card-image{display:block;position:relative}html.theme--catppuccin-macchiato .card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--catppuccin-macchiato .card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--catppuccin-macchiato .card-content{background-color:rgba(0,0,0,0);padding:1.5rem}html.theme--catppuccin-macchiato .card-footer{background-color:rgba(0,0,0,0);border-top:1px solid #ededed;align-items:stretch;display:flex}html.theme--catppuccin-macchiato .card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}html.theme--catppuccin-macchiato .card-footer-item:not(:last-child){border-right:1px solid #ededed}html.theme--catppuccin-macchiato .card .media:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-macchiato .dropdown{display:inline-flex;position:relative;vertical-align:top}html.theme--catppuccin-macchiato .dropdown.is-active .dropdown-menu,html.theme--catppuccin-macchiato .dropdown.is-hoverable:hover .dropdown-menu{display:block}html.theme--catppuccin-macchiato .dropdown.is-right .dropdown-menu{left:auto;right:0}html.theme--catppuccin-macchiato .dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}html.theme--catppuccin-macchiato .dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}html.theme--catppuccin-macchiato .dropdown-content{background-color:#1e2030;border-radius:.4em;box-shadow:#171717;padding-bottom:.5rem;padding-top:.5rem}html.theme--catppuccin-macchiato .dropdown-item{color:#cad3f5;display:block;font-size:0.875rem;line-height:1.5;padding:0.375rem 1rem;position:relative}html.theme--catppuccin-macchiato a.dropdown-item,html.theme--catppuccin-macchiato button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}html.theme--catppuccin-macchiato a.dropdown-item:hover,html.theme--catppuccin-macchiato button.dropdown-item:hover{background-color:#1e2030;color:#0a0a0a}html.theme--catppuccin-macchiato a.dropdown-item.is-active,html.theme--catppuccin-macchiato button.dropdown-item.is-active{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:0.5rem 0}html.theme--catppuccin-macchiato .level{align-items:center;justify-content:space-between}html.theme--catppuccin-macchiato .level code{border-radius:.4em}html.theme--catppuccin-macchiato .level img{display:inline-block;vertical-align:top}html.theme--catppuccin-macchiato .level.is-mobile{display:flex}html.theme--catppuccin-macchiato .level.is-mobile .level-left,html.theme--catppuccin-macchiato .level.is-mobile .level-right{display:flex}html.theme--catppuccin-macchiato .level.is-mobile .level-left+.level-right{margin-top:0}html.theme--catppuccin-macchiato .level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--catppuccin-macchiato .level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .level{display:flex}html.theme--catppuccin-macchiato .level>.level-item:not(.is-narrow){flex-grow:1}}html.theme--catppuccin-macchiato .level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}html.theme--catppuccin-macchiato .level-item .title,html.theme--catppuccin-macchiato .level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .level-item:not(:last-child){margin-bottom:.75rem}}html.theme--catppuccin-macchiato .level-left,html.theme--catppuccin-macchiato .level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--catppuccin-macchiato .level-left .level-item.is-flexible,html.theme--catppuccin-macchiato .level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .level-left .level-item:not(:last-child),html.theme--catppuccin-macchiato .level-right .level-item:not(:last-child){margin-right:.75rem}}html.theme--catppuccin-macchiato .level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .level-left{display:flex}}html.theme--catppuccin-macchiato .level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .level-right{display:flex}}html.theme--catppuccin-macchiato .media{align-items:flex-start;display:flex;text-align:inherit}html.theme--catppuccin-macchiato .media .content:not(:last-child){margin-bottom:.75rem}html.theme--catppuccin-macchiato .media .media{border-top:1px solid rgba(91,96,120,0.5);display:flex;padding-top:.75rem}html.theme--catppuccin-macchiato .media .media .content:not(:last-child),html.theme--catppuccin-macchiato .media .media .control:not(:last-child){margin-bottom:.5rem}html.theme--catppuccin-macchiato .media .media .media{padding-top:.5rem}html.theme--catppuccin-macchiato .media .media .media+.media{margin-top:.5rem}html.theme--catppuccin-macchiato .media+.media{border-top:1px solid rgba(91,96,120,0.5);margin-top:1rem;padding-top:1rem}html.theme--catppuccin-macchiato .media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}html.theme--catppuccin-macchiato .media-left,html.theme--catppuccin-macchiato .media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--catppuccin-macchiato .media-left{margin-right:1rem}html.theme--catppuccin-macchiato .media-right{margin-left:1rem}html.theme--catppuccin-macchiato .media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .media-content{overflow-x:auto}}html.theme--catppuccin-macchiato .menu{font-size:1rem}html.theme--catppuccin-macchiato .menu.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.menu{font-size:.75rem}html.theme--catppuccin-macchiato .menu.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .menu.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .menu-list{line-height:1.25}html.theme--catppuccin-macchiato .menu-list a{border-radius:3px;color:#cad3f5;display:block;padding:0.5em 0.75em}html.theme--catppuccin-macchiato .menu-list a:hover{background-color:#1e2030;color:#b5c1f1}html.theme--catppuccin-macchiato .menu-list a.is-active{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .menu-list li ul{border-left:1px solid #5b6078;margin:.75em;padding-left:.75em}html.theme--catppuccin-macchiato .menu-label{color:#f5f7fd;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}html.theme--catppuccin-macchiato .menu-label:not(:first-child){margin-top:1em}html.theme--catppuccin-macchiato .menu-label:not(:last-child){margin-bottom:1em}html.theme--catppuccin-macchiato .message{background-color:#1e2030;border-radius:.4em;font-size:1rem}html.theme--catppuccin-macchiato .message strong{color:currentColor}html.theme--catppuccin-macchiato .message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--catppuccin-macchiato .message.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.message{font-size:.75rem}html.theme--catppuccin-macchiato .message.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .message.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .message.is-white{background-color:#fff}html.theme--catppuccin-macchiato .message.is-white .message-header{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-macchiato .message.is-white .message-body{border-color:#fff}html.theme--catppuccin-macchiato .message.is-black{background-color:#fafafa}html.theme--catppuccin-macchiato .message.is-black .message-header{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-macchiato .message.is-black .message-body{border-color:#0a0a0a}html.theme--catppuccin-macchiato .message.is-light{background-color:#fafafa}html.theme--catppuccin-macchiato .message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .message.is-light .message-body{border-color:#f5f5f5}html.theme--catppuccin-macchiato .message.is-dark,html.theme--catppuccin-macchiato .content kbd.message{background-color:#f9f9fb}html.theme--catppuccin-macchiato .message.is-dark .message-header,html.theme--catppuccin-macchiato .content kbd.message .message-header{background-color:#363a4f;color:#fff}html.theme--catppuccin-macchiato .message.is-dark .message-body,html.theme--catppuccin-macchiato .content kbd.message .message-body{border-color:#363a4f}html.theme--catppuccin-macchiato .message.is-primary,html.theme--catppuccin-macchiato .docstring>section>a.message.docs-sourcelink{background-color:#ecf2fd}html.theme--catppuccin-macchiato .message.is-primary .message-header,html.theme--catppuccin-macchiato .docstring>section>a.message.docs-sourcelink .message-header{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .message.is-primary .message-body,html.theme--catppuccin-macchiato .docstring>section>a.message.docs-sourcelink .message-body{border-color:#8aadf4;color:#0e3b95}html.theme--catppuccin-macchiato .message.is-link{background-color:#ecf2fd}html.theme--catppuccin-macchiato .message.is-link .message-header{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .message.is-link .message-body{border-color:#8aadf4;color:#0e3b95}html.theme--catppuccin-macchiato .message.is-info{background-color:#f0faf8}html.theme--catppuccin-macchiato .message.is-info .message-header{background-color:#8bd5ca;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .message.is-info .message-body{border-color:#8bd5ca;color:#276d62}html.theme--catppuccin-macchiato .message.is-success{background-color:#f2faf0}html.theme--catppuccin-macchiato .message.is-success .message-header{background-color:#a6da95;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .message.is-success .message-body{border-color:#a6da95;color:#386e26}html.theme--catppuccin-macchiato .message.is-warning{background-color:#fcf7ee}html.theme--catppuccin-macchiato .message.is-warning .message-header{background-color:#eed49f;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .message.is-warning .message-body{border-color:#eed49f;color:#7e5c16}html.theme--catppuccin-macchiato .message.is-danger{background-color:#fcedef}html.theme--catppuccin-macchiato .message.is-danger .message-header{background-color:#ed8796;color:#fff}html.theme--catppuccin-macchiato .message.is-danger .message-body{border-color:#ed8796;color:#971729}html.theme--catppuccin-macchiato .message-header{align-items:center;background-color:#cad3f5;border-radius:.4em .4em 0 0;color:rgba(0,0,0,0.7);display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.75em 1em;position:relative}html.theme--catppuccin-macchiato .message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}html.theme--catppuccin-macchiato .message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}html.theme--catppuccin-macchiato .message-body{border-color:#5b6078;border-radius:.4em;border-style:solid;border-width:0 0 0 4px;color:#cad3f5;padding:1.25em 1.5em}html.theme--catppuccin-macchiato .message-body code,html.theme--catppuccin-macchiato .message-body pre{background-color:#fff}html.theme--catppuccin-macchiato .message-body pre code{background-color:rgba(0,0,0,0)}html.theme--catppuccin-macchiato .modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}html.theme--catppuccin-macchiato .modal.is-active{display:flex}html.theme--catppuccin-macchiato .modal-background{background-color:rgba(10,10,10,0.86)}html.theme--catppuccin-macchiato .modal-content,html.theme--catppuccin-macchiato .modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px){html.theme--catppuccin-macchiato .modal-content,html.theme--catppuccin-macchiato .modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}html.theme--catppuccin-macchiato .modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}html.theme--catppuccin-macchiato .modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}html.theme--catppuccin-macchiato .modal-card-head,html.theme--catppuccin-macchiato .modal-card-foot{align-items:center;background-color:#1e2030;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}html.theme--catppuccin-macchiato .modal-card-head{border-bottom:1px solid #5b6078;border-top-left-radius:8px;border-top-right-radius:8px}html.theme--catppuccin-macchiato .modal-card-title{color:#cad3f5;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}html.theme--catppuccin-macchiato .modal-card-foot{border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid #5b6078}html.theme--catppuccin-macchiato .modal-card-foot .button:not(:last-child){margin-right:.5em}html.theme--catppuccin-macchiato .modal-card-body{-webkit-overflow-scrolling:touch;background-color:#24273a;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}html.theme--catppuccin-macchiato .navbar{background-color:#8aadf4;min-height:4rem;position:relative;z-index:30}html.theme--catppuccin-macchiato .navbar.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-macchiato .navbar.is-white .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}html.theme--catppuccin-macchiato .navbar.is-white .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-white .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-white .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-white .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-white .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-macchiato .navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}html.theme--catppuccin-macchiato .navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .navbar.is-white .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-white .navbar-start .navbar-link,html.theme--catppuccin-macchiato .navbar.is-white .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}html.theme--catppuccin-macchiato .navbar.is-white .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-white .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-white .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-white .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-white .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-white .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .navbar.is-white .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-white .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-white .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-white .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-white .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-macchiato .navbar.is-white .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}html.theme--catppuccin-macchiato .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-macchiato .navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}html.theme--catppuccin-macchiato .navbar.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-macchiato .navbar.is-black .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-black .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-macchiato .navbar.is-black .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-black .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-black .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-black .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-black .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-macchiato .navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-macchiato .navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .navbar.is-black .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-black .navbar-start .navbar-link,html.theme--catppuccin-macchiato .navbar.is-black .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-black .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-macchiato .navbar.is-black .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-black .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-black .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-black .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-black .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-black .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .navbar.is-black .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-black .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-black .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-black .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-black .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-macchiato .navbar.is-black .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-macchiato .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}html.theme--catppuccin-macchiato .navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}html.theme--catppuccin-macchiato .navbar.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-light .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-light .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-light .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-light .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-light .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-light .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-light .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-light .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .navbar.is-light .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-light .navbar-start .navbar-link,html.theme--catppuccin-macchiato .navbar.is-light .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-light .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-light .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-light .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-light .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-light .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-light .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-light .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .navbar.is-light .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-light .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-light .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-light .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-light .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-light .navbar-end .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-light .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .navbar.is-light .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-macchiato .navbar.is-dark,html.theme--catppuccin-macchiato .content kbd.navbar{background-color:#363a4f;color:#fff}html.theme--catppuccin-macchiato .navbar.is-dark .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-brand .navbar-link,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-macchiato .navbar.is-dark .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-brand .navbar-link.is-active,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-brand .navbar-link.is-active{background-color:#2c2f40;color:#fff}html.theme--catppuccin-macchiato .navbar.is-dark .navbar-brand .navbar-link::after,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-macchiato .navbar.is-dark .navbar-burger,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .navbar.is-dark .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-start .navbar-link,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-start .navbar-link,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-end .navbar-link,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-macchiato .navbar.is-dark .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-end .navbar-link.is-active,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-end .navbar-link.is-active{background-color:#2c2f40;color:#fff}html.theme--catppuccin-macchiato .navbar.is-dark .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-end .navbar-link::after,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-macchiato .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link{background-color:#2c2f40;color:#fff}html.theme--catppuccin-macchiato .navbar.is-dark .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-dropdown a.navbar-item.is-active{background-color:#363a4f;color:#fff}}html.theme--catppuccin-macchiato .navbar.is-primary,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .navbar.is-primary .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-brand .navbar-link,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-macchiato .navbar.is-primary .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-brand .navbar-link.is-active,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active{background-color:#739df2;color:#fff}html.theme--catppuccin-macchiato .navbar.is-primary .navbar-brand .navbar-link::after,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-macchiato .navbar.is-primary .navbar-burger,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .navbar.is-primary .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-start .navbar-link,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-end .navbar-link,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-macchiato .navbar.is-primary .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-end .navbar-link.is-active,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active{background-color:#739df2;color:#fff}html.theme--catppuccin-macchiato .navbar.is-primary .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-end .navbar-link::after,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-macchiato .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link{background-color:#739df2;color:#fff}html.theme--catppuccin-macchiato .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#8aadf4;color:#fff}}html.theme--catppuccin-macchiato .navbar.is-link{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .navbar.is-link .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-link .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-macchiato .navbar.is-link .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-link .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-link .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-link .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-link .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#739df2;color:#fff}html.theme--catppuccin-macchiato .navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-macchiato .navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .navbar.is-link .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-link .navbar-start .navbar-link,html.theme--catppuccin-macchiato .navbar.is-link .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-link .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-macchiato .navbar.is-link .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-link .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-link .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-link .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-link .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-link .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .navbar.is-link .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-link .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-link .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-link .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-link .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-link .navbar-end .navbar-link.is-active{background-color:#739df2;color:#fff}html.theme--catppuccin-macchiato .navbar.is-link .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-macchiato .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#739df2;color:#fff}html.theme--catppuccin-macchiato .navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#8aadf4;color:#fff}}html.theme--catppuccin-macchiato .navbar.is-info{background-color:#8bd5ca;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-info .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-info .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-info .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-info .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-info .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-info .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-info .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#78cec1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-info .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-info .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .navbar.is-info .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-info .navbar-start .navbar-link,html.theme--catppuccin-macchiato .navbar.is-info .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-info .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-info .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-info .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-info .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-info .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-info .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-info .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .navbar.is-info .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-info .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-info .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-info .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-info .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-info .navbar-end .navbar-link.is-active{background-color:#78cec1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-info .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .navbar.is-info .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#78cec1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#8bd5ca;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-macchiato .navbar.is-success{background-color:#a6da95;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-success .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-success .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-success .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-success .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-success .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-success .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-success .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#96d382;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-success .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-success .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .navbar.is-success .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-success .navbar-start .navbar-link,html.theme--catppuccin-macchiato .navbar.is-success .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-success .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-success .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-success .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-success .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-success .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-success .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-success .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .navbar.is-success .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-success .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-success .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-success .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-success .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-success .navbar-end .navbar-link.is-active{background-color:#96d382;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-success .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .navbar.is-success .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#96d382;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#a6da95;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-macchiato .navbar.is-warning{background-color:#eed49f;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-warning .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-warning .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#eaca89;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-warning .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-warning .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .navbar.is-warning .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-start .navbar-link,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-warning .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#eaca89;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-warning .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#eaca89;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#eed49f;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-macchiato .navbar.is-danger{background-color:#ed8796;color:#fff}html.theme--catppuccin-macchiato .navbar.is-danger .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-macchiato .navbar.is-danger .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#ea7183;color:#fff}html.theme--catppuccin-macchiato .navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-macchiato .navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .navbar.is-danger .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-start .navbar-link,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-macchiato .navbar.is-danger .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#ea7183;color:#fff}html.theme--catppuccin-macchiato .navbar.is-danger .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-macchiato .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#ea7183;color:#fff}html.theme--catppuccin-macchiato .navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#ed8796;color:#fff}}html.theme--catppuccin-macchiato .navbar>.container{align-items:stretch;display:flex;min-height:4rem;width:100%}html.theme--catppuccin-macchiato .navbar.has-shadow{box-shadow:0 2px 0 0 #1e2030}html.theme--catppuccin-macchiato .navbar.is-fixed-bottom,html.theme--catppuccin-macchiato .navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-macchiato .navbar.is-fixed-bottom{bottom:0}html.theme--catppuccin-macchiato .navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #1e2030}html.theme--catppuccin-macchiato .navbar.is-fixed-top{top:0}html.theme--catppuccin-macchiato html.has-navbar-fixed-top,html.theme--catppuccin-macchiato body.has-navbar-fixed-top{padding-top:4rem}html.theme--catppuccin-macchiato html.has-navbar-fixed-bottom,html.theme--catppuccin-macchiato body.has-navbar-fixed-bottom{padding-bottom:4rem}html.theme--catppuccin-macchiato .navbar-brand,html.theme--catppuccin-macchiato .navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:4rem}html.theme--catppuccin-macchiato .navbar-brand a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar-brand a.navbar-item:hover{background-color:transparent}html.theme--catppuccin-macchiato .navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}html.theme--catppuccin-macchiato .navbar-burger{color:#cad3f5;-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:block;height:4rem;position:relative;width:4rem;margin-left:auto}html.theme--catppuccin-macchiato .navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color, opacity, transform;transition-timing-function:ease-out;width:16px}html.theme--catppuccin-macchiato .navbar-burger span:nth-child(1){top:calc(50% - 6px)}html.theme--catppuccin-macchiato .navbar-burger span:nth-child(2){top:calc(50% - 1px)}html.theme--catppuccin-macchiato .navbar-burger span:nth-child(3){top:calc(50% + 4px)}html.theme--catppuccin-macchiato .navbar-burger:hover{background-color:rgba(0,0,0,0.05)}html.theme--catppuccin-macchiato .navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}html.theme--catppuccin-macchiato .navbar-burger.is-active span:nth-child(2){opacity:0}html.theme--catppuccin-macchiato .navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}html.theme--catppuccin-macchiato .navbar-menu{display:none}html.theme--catppuccin-macchiato .navbar-item,html.theme--catppuccin-macchiato .navbar-link{color:#cad3f5;display:block;line-height:1.5;padding:0.5rem 0.75rem;position:relative}html.theme--catppuccin-macchiato .navbar-item .icon:only-child,html.theme--catppuccin-macchiato .navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}html.theme--catppuccin-macchiato a.navbar-item,html.theme--catppuccin-macchiato .navbar-link{cursor:pointer}html.theme--catppuccin-macchiato a.navbar-item:focus,html.theme--catppuccin-macchiato a.navbar-item:focus-within,html.theme--catppuccin-macchiato a.navbar-item:hover,html.theme--catppuccin-macchiato a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar-link:focus,html.theme--catppuccin-macchiato .navbar-link:focus-within,html.theme--catppuccin-macchiato .navbar-link:hover,html.theme--catppuccin-macchiato .navbar-link.is-active{background-color:rgba(0,0,0,0);color:#8aadf4}html.theme--catppuccin-macchiato .navbar-item{flex-grow:0;flex-shrink:0}html.theme--catppuccin-macchiato .navbar-item img{max-height:1.75rem}html.theme--catppuccin-macchiato .navbar-item.has-dropdown{padding:0}html.theme--catppuccin-macchiato .navbar-item.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-macchiato .navbar-item.is-tab{border-bottom:1px solid transparent;min-height:4rem;padding-bottom:calc(0.5rem - 1px)}html.theme--catppuccin-macchiato .navbar-item.is-tab:focus,html.theme--catppuccin-macchiato .navbar-item.is-tab:hover{background-color:rgba(0,0,0,0);border-bottom-color:#8aadf4}html.theme--catppuccin-macchiato .navbar-item.is-tab.is-active{background-color:rgba(0,0,0,0);border-bottom-color:#8aadf4;border-bottom-style:solid;border-bottom-width:3px;color:#8aadf4;padding-bottom:calc(0.5rem - 3px)}html.theme--catppuccin-macchiato .navbar-content{flex-grow:1;flex-shrink:1}html.theme--catppuccin-macchiato .navbar-link:not(.is-arrowless){padding-right:2.5em}html.theme--catppuccin-macchiato .navbar-link:not(.is-arrowless)::after{border-color:#fff;margin-top:-0.375em;right:1.125em}html.theme--catppuccin-macchiato .navbar-dropdown{font-size:0.875rem;padding-bottom:0.5rem;padding-top:0.5rem}html.theme--catppuccin-macchiato .navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}html.theme--catppuccin-macchiato .navbar-divider{background-color:rgba(0,0,0,0.2);border:none;display:none;height:2px;margin:0.5rem 0}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .navbar>.container{display:block}html.theme--catppuccin-macchiato .navbar-brand .navbar-item,html.theme--catppuccin-macchiato .navbar-tabs .navbar-item{align-items:center;display:flex}html.theme--catppuccin-macchiato .navbar-link::after{display:none}html.theme--catppuccin-macchiato .navbar-menu{background-color:#8aadf4;box-shadow:0 8px 16px rgba(10,10,10,0.1);padding:0.5rem 0}html.theme--catppuccin-macchiato .navbar-menu.is-active{display:block}html.theme--catppuccin-macchiato .navbar.is-fixed-bottom-touch,html.theme--catppuccin-macchiato .navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-macchiato .navbar.is-fixed-bottom-touch{bottom:0}html.theme--catppuccin-macchiato .navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .navbar.is-fixed-top-touch{top:0}html.theme--catppuccin-macchiato .navbar.is-fixed-top .navbar-menu,html.theme--catppuccin-macchiato .navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 4rem);overflow:auto}html.theme--catppuccin-macchiato html.has-navbar-fixed-top-touch,html.theme--catppuccin-macchiato body.has-navbar-fixed-top-touch{padding-top:4rem}html.theme--catppuccin-macchiato html.has-navbar-fixed-bottom-touch,html.theme--catppuccin-macchiato body.has-navbar-fixed-bottom-touch{padding-bottom:4rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .navbar,html.theme--catppuccin-macchiato .navbar-menu,html.theme--catppuccin-macchiato .navbar-start,html.theme--catppuccin-macchiato .navbar-end{align-items:stretch;display:flex}html.theme--catppuccin-macchiato .navbar{min-height:4rem}html.theme--catppuccin-macchiato .navbar.is-spaced{padding:1rem 2rem}html.theme--catppuccin-macchiato .navbar.is-spaced .navbar-start,html.theme--catppuccin-macchiato .navbar.is-spaced .navbar-end{align-items:center}html.theme--catppuccin-macchiato .navbar.is-spaced a.navbar-item,html.theme--catppuccin-macchiato .navbar.is-spaced .navbar-link{border-radius:.4em}html.theme--catppuccin-macchiato .navbar.is-transparent a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-transparent a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-transparent a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-transparent .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-transparent .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}html.theme--catppuccin-macchiato .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-macchiato .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,html.theme--catppuccin-macchiato .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,html.theme--catppuccin-macchiato .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}html.theme--catppuccin-macchiato .navbar.is-transparent .navbar-dropdown a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#8087a2}html.theme--catppuccin-macchiato .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#8aadf4}html.theme--catppuccin-macchiato .navbar-burger{display:none}html.theme--catppuccin-macchiato .navbar-item,html.theme--catppuccin-macchiato .navbar-link{align-items:center;display:flex}html.theme--catppuccin-macchiato .navbar-item.has-dropdown{align-items:stretch}html.theme--catppuccin-macchiato .navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}html.theme--catppuccin-macchiato .navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:1px solid rgba(0,0,0,0.2);border-radius:8px 8px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,0.1);top:auto}html.theme--catppuccin-macchiato .navbar-item.is-active .navbar-dropdown,html.theme--catppuccin-macchiato .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--catppuccin-macchiato .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--catppuccin-macchiato .navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced html.theme--catppuccin-macchiato .navbar-item.is-active .navbar-dropdown,html.theme--catppuccin-macchiato .navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-macchiato .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--catppuccin-macchiato .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-macchiato .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--catppuccin-macchiato .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-macchiato .navbar-item.is-hoverable:hover .navbar-dropdown,html.theme--catppuccin-macchiato .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}html.theme--catppuccin-macchiato .navbar-menu{flex-grow:1;flex-shrink:0}html.theme--catppuccin-macchiato .navbar-start{justify-content:flex-start;margin-right:auto}html.theme--catppuccin-macchiato .navbar-end{justify-content:flex-end;margin-left:auto}html.theme--catppuccin-macchiato .navbar-dropdown{background-color:#8aadf4;border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid rgba(0,0,0,0.2);box-shadow:0 8px 8px rgba(10,10,10,0.1);display:none;font-size:0.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}html.theme--catppuccin-macchiato .navbar-dropdown .navbar-item{padding:0.375rem 1rem;white-space:nowrap}html.theme--catppuccin-macchiato .navbar-dropdown a.navbar-item{padding-right:3rem}html.theme--catppuccin-macchiato .navbar-dropdown a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#8087a2}html.theme--catppuccin-macchiato .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#8aadf4}.navbar.is-spaced html.theme--catppuccin-macchiato .navbar-dropdown,html.theme--catppuccin-macchiato .navbar-dropdown.is-boxed{border-radius:8px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,0.1), 0 0 0 1px rgba(10,10,10,0.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity, transform}html.theme--catppuccin-macchiato .navbar-dropdown.is-right{left:auto;right:0}html.theme--catppuccin-macchiato .navbar-divider{display:block}html.theme--catppuccin-macchiato .navbar>.container .navbar-brand,html.theme--catppuccin-macchiato .container>.navbar .navbar-brand{margin-left:-.75rem}html.theme--catppuccin-macchiato .navbar>.container .navbar-menu,html.theme--catppuccin-macchiato .container>.navbar .navbar-menu{margin-right:-.75rem}html.theme--catppuccin-macchiato .navbar.is-fixed-bottom-desktop,html.theme--catppuccin-macchiato .navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-macchiato .navbar.is-fixed-bottom-desktop{bottom:0}html.theme--catppuccin-macchiato .navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .navbar.is-fixed-top-desktop{top:0}html.theme--catppuccin-macchiato html.has-navbar-fixed-top-desktop,html.theme--catppuccin-macchiato body.has-navbar-fixed-top-desktop{padding-top:4rem}html.theme--catppuccin-macchiato html.has-navbar-fixed-bottom-desktop,html.theme--catppuccin-macchiato body.has-navbar-fixed-bottom-desktop{padding-bottom:4rem}html.theme--catppuccin-macchiato html.has-spaced-navbar-fixed-top,html.theme--catppuccin-macchiato body.has-spaced-navbar-fixed-top{padding-top:6rem}html.theme--catppuccin-macchiato html.has-spaced-navbar-fixed-bottom,html.theme--catppuccin-macchiato body.has-spaced-navbar-fixed-bottom{padding-bottom:6rem}html.theme--catppuccin-macchiato a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar-link.is-active{color:#8aadf4}html.theme--catppuccin-macchiato a.navbar-item.is-active:not(:focus):not(:hover),html.theme--catppuccin-macchiato .navbar-link.is-active:not(:focus):not(:hover){background-color:rgba(0,0,0,0)}html.theme--catppuccin-macchiato .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .navbar-item.has-dropdown.is-active .navbar-link{background-color:rgba(0,0,0,0)}}html.theme--catppuccin-macchiato .hero.is-fullheight-with-navbar{min-height:calc(100vh - 4rem)}html.theme--catppuccin-macchiato .pagination{font-size:1rem;margin:-.25rem}html.theme--catppuccin-macchiato .pagination.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.pagination{font-size:.75rem}html.theme--catppuccin-macchiato .pagination.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .pagination.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .pagination.is-rounded .pagination-previous,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.pagination .pagination-previous,html.theme--catppuccin-macchiato .pagination.is-rounded .pagination-next,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.pagination .pagination-next{padding-left:1em;padding-right:1em;border-radius:9999px}html.theme--catppuccin-macchiato .pagination.is-rounded .pagination-link,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.pagination .pagination-link{border-radius:9999px}html.theme--catppuccin-macchiato .pagination,html.theme--catppuccin-macchiato .pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}html.theme--catppuccin-macchiato .pagination-previous,html.theme--catppuccin-macchiato .pagination-next,html.theme--catppuccin-macchiato .pagination-link,html.theme--catppuccin-macchiato .pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}html.theme--catppuccin-macchiato .pagination-previous,html.theme--catppuccin-macchiato .pagination-next,html.theme--catppuccin-macchiato .pagination-link{border-color:#5b6078;color:#8aadf4;min-width:2.5em}html.theme--catppuccin-macchiato .pagination-previous:hover,html.theme--catppuccin-macchiato .pagination-next:hover,html.theme--catppuccin-macchiato .pagination-link:hover{border-color:#6e738d;color:#91d7e3}html.theme--catppuccin-macchiato .pagination-previous:focus,html.theme--catppuccin-macchiato .pagination-next:focus,html.theme--catppuccin-macchiato .pagination-link:focus{border-color:#6e738d}html.theme--catppuccin-macchiato .pagination-previous:active,html.theme--catppuccin-macchiato .pagination-next:active,html.theme--catppuccin-macchiato .pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2)}html.theme--catppuccin-macchiato .pagination-previous[disabled],html.theme--catppuccin-macchiato .pagination-previous.is-disabled,html.theme--catppuccin-macchiato .pagination-next[disabled],html.theme--catppuccin-macchiato .pagination-next.is-disabled,html.theme--catppuccin-macchiato .pagination-link[disabled],html.theme--catppuccin-macchiato .pagination-link.is-disabled{background-color:#5b6078;border-color:#5b6078;box-shadow:none;color:#f5f7fd;opacity:0.5}html.theme--catppuccin-macchiato .pagination-previous,html.theme--catppuccin-macchiato .pagination-next{padding-left:.75em;padding-right:.75em;white-space:nowrap}html.theme--catppuccin-macchiato .pagination-link.is-current{background-color:#8aadf4;border-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .pagination-ellipsis{color:#6e738d;pointer-events:none}html.theme--catppuccin-macchiato .pagination-list{flex-wrap:wrap}html.theme--catppuccin-macchiato .pagination-list li{list-style:none}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .pagination{flex-wrap:wrap}html.theme--catppuccin-macchiato .pagination-previous,html.theme--catppuccin-macchiato .pagination-next{flex-grow:1;flex-shrink:1}html.theme--catppuccin-macchiato .pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}html.theme--catppuccin-macchiato .pagination-previous,html.theme--catppuccin-macchiato .pagination-next,html.theme--catppuccin-macchiato .pagination-link,html.theme--catppuccin-macchiato .pagination-ellipsis{margin-bottom:0;margin-top:0}html.theme--catppuccin-macchiato .pagination-previous{order:2}html.theme--catppuccin-macchiato .pagination-next{order:3}html.theme--catppuccin-macchiato .pagination{justify-content:space-between;margin-bottom:0;margin-top:0}html.theme--catppuccin-macchiato .pagination.is-centered .pagination-previous{order:1}html.theme--catppuccin-macchiato .pagination.is-centered .pagination-list{justify-content:center;order:2}html.theme--catppuccin-macchiato .pagination.is-centered .pagination-next{order:3}html.theme--catppuccin-macchiato .pagination.is-right .pagination-previous{order:1}html.theme--catppuccin-macchiato .pagination.is-right .pagination-next{order:2}html.theme--catppuccin-macchiato .pagination.is-right .pagination-list{justify-content:flex-end;order:3}}html.theme--catppuccin-macchiato .panel{border-radius:8px;box-shadow:#171717;font-size:1rem}html.theme--catppuccin-macchiato .panel:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-macchiato .panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-macchiato .panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}html.theme--catppuccin-macchiato .panel.is-white .panel-block.is-active .panel-icon{color:#fff}html.theme--catppuccin-macchiato .panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-macchiato .panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}html.theme--catppuccin-macchiato .panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}html.theme--catppuccin-macchiato .panel.is-light .panel-heading{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .panel.is-light .panel-tabs a.is-active{border-bottom-color:#f5f5f5}html.theme--catppuccin-macchiato .panel.is-light .panel-block.is-active .panel-icon{color:#f5f5f5}html.theme--catppuccin-macchiato .panel.is-dark .panel-heading,html.theme--catppuccin-macchiato .content kbd.panel .panel-heading{background-color:#363a4f;color:#fff}html.theme--catppuccin-macchiato .panel.is-dark .panel-tabs a.is-active,html.theme--catppuccin-macchiato .content kbd.panel .panel-tabs a.is-active{border-bottom-color:#363a4f}html.theme--catppuccin-macchiato .panel.is-dark .panel-block.is-active .panel-icon,html.theme--catppuccin-macchiato .content kbd.panel .panel-block.is-active .panel-icon{color:#363a4f}html.theme--catppuccin-macchiato .panel.is-primary .panel-heading,html.theme--catppuccin-macchiato .docstring>section>a.panel.docs-sourcelink .panel-heading{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .panel.is-primary .panel-tabs a.is-active,html.theme--catppuccin-macchiato .docstring>section>a.panel.docs-sourcelink .panel-tabs a.is-active{border-bottom-color:#8aadf4}html.theme--catppuccin-macchiato .panel.is-primary .panel-block.is-active .panel-icon,html.theme--catppuccin-macchiato .docstring>section>a.panel.docs-sourcelink .panel-block.is-active .panel-icon{color:#8aadf4}html.theme--catppuccin-macchiato .panel.is-link .panel-heading{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .panel.is-link .panel-tabs a.is-active{border-bottom-color:#8aadf4}html.theme--catppuccin-macchiato .panel.is-link .panel-block.is-active .panel-icon{color:#8aadf4}html.theme--catppuccin-macchiato .panel.is-info .panel-heading{background-color:#8bd5ca;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .panel.is-info .panel-tabs a.is-active{border-bottom-color:#8bd5ca}html.theme--catppuccin-macchiato .panel.is-info .panel-block.is-active .panel-icon{color:#8bd5ca}html.theme--catppuccin-macchiato .panel.is-success .panel-heading{background-color:#a6da95;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .panel.is-success .panel-tabs a.is-active{border-bottom-color:#a6da95}html.theme--catppuccin-macchiato .panel.is-success .panel-block.is-active .panel-icon{color:#a6da95}html.theme--catppuccin-macchiato .panel.is-warning .panel-heading{background-color:#eed49f;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .panel.is-warning .panel-tabs a.is-active{border-bottom-color:#eed49f}html.theme--catppuccin-macchiato .panel.is-warning .panel-block.is-active .panel-icon{color:#eed49f}html.theme--catppuccin-macchiato .panel.is-danger .panel-heading{background-color:#ed8796;color:#fff}html.theme--catppuccin-macchiato .panel.is-danger .panel-tabs a.is-active{border-bottom-color:#ed8796}html.theme--catppuccin-macchiato .panel.is-danger .panel-block.is-active .panel-icon{color:#ed8796}html.theme--catppuccin-macchiato .panel-tabs:not(:last-child),html.theme--catppuccin-macchiato .panel-block:not(:last-child){border-bottom:1px solid #ededed}html.theme--catppuccin-macchiato .panel-heading{background-color:#494d64;border-radius:8px 8px 0 0;color:#b5c1f1;font-size:1.25em;font-weight:700;line-height:1.25;padding:0.75em 1em}html.theme--catppuccin-macchiato .panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}html.theme--catppuccin-macchiato .panel-tabs a{border-bottom:1px solid #5b6078;margin-bottom:-1px;padding:0.5em}html.theme--catppuccin-macchiato .panel-tabs a.is-active{border-bottom-color:#494d64;color:#739df2}html.theme--catppuccin-macchiato .panel-list a{color:#cad3f5}html.theme--catppuccin-macchiato .panel-list a:hover{color:#8aadf4}html.theme--catppuccin-macchiato .panel-block{align-items:center;color:#b5c1f1;display:flex;justify-content:flex-start;padding:0.5em 0.75em}html.theme--catppuccin-macchiato .panel-block input[type="checkbox"]{margin-right:.75em}html.theme--catppuccin-macchiato .panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}html.theme--catppuccin-macchiato .panel-block.is-wrapped{flex-wrap:wrap}html.theme--catppuccin-macchiato .panel-block.is-active{border-left-color:#8aadf4;color:#739df2}html.theme--catppuccin-macchiato .panel-block.is-active .panel-icon{color:#8aadf4}html.theme--catppuccin-macchiato .panel-block:last-child{border-bottom-left-radius:8px;border-bottom-right-radius:8px}html.theme--catppuccin-macchiato a.panel-block,html.theme--catppuccin-macchiato label.panel-block{cursor:pointer}html.theme--catppuccin-macchiato a.panel-block:hover,html.theme--catppuccin-macchiato label.panel-block:hover{background-color:#1e2030}html.theme--catppuccin-macchiato .panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#f5f7fd;margin-right:.75em}html.theme--catppuccin-macchiato .panel-icon .fa{font-size:inherit;line-height:inherit}html.theme--catppuccin-macchiato .tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}html.theme--catppuccin-macchiato .tabs a{align-items:center;border-bottom-color:#5b6078;border-bottom-style:solid;border-bottom-width:1px;color:#cad3f5;display:flex;justify-content:center;margin-bottom:-1px;padding:0.5em 1em;vertical-align:top}html.theme--catppuccin-macchiato .tabs a:hover{border-bottom-color:#b5c1f1;color:#b5c1f1}html.theme--catppuccin-macchiato .tabs li{display:block}html.theme--catppuccin-macchiato .tabs li.is-active a{border-bottom-color:#8aadf4;color:#8aadf4}html.theme--catppuccin-macchiato .tabs ul{align-items:center;border-bottom-color:#5b6078;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}html.theme--catppuccin-macchiato .tabs ul.is-left{padding-right:0.75em}html.theme--catppuccin-macchiato .tabs ul.is-center{flex:none;justify-content:center;padding-left:0.75em;padding-right:0.75em}html.theme--catppuccin-macchiato .tabs ul.is-right{justify-content:flex-end;padding-left:0.75em}html.theme--catppuccin-macchiato .tabs .icon:first-child{margin-right:.5em}html.theme--catppuccin-macchiato .tabs .icon:last-child{margin-left:.5em}html.theme--catppuccin-macchiato .tabs.is-centered ul{justify-content:center}html.theme--catppuccin-macchiato .tabs.is-right ul{justify-content:flex-end}html.theme--catppuccin-macchiato .tabs.is-boxed a{border:1px solid transparent;border-radius:.4em .4em 0 0}html.theme--catppuccin-macchiato .tabs.is-boxed a:hover{background-color:#1e2030;border-bottom-color:#5b6078}html.theme--catppuccin-macchiato .tabs.is-boxed li.is-active a{background-color:#fff;border-color:#5b6078;border-bottom-color:rgba(0,0,0,0) !important}html.theme--catppuccin-macchiato .tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}html.theme--catppuccin-macchiato .tabs.is-toggle a{border-color:#5b6078;border-style:solid;border-width:1px;margin-bottom:0;position:relative}html.theme--catppuccin-macchiato .tabs.is-toggle a:hover{background-color:#1e2030;border-color:#6e738d;z-index:2}html.theme--catppuccin-macchiato .tabs.is-toggle li+li{margin-left:-1px}html.theme--catppuccin-macchiato .tabs.is-toggle li:first-child a{border-top-left-radius:.4em;border-bottom-left-radius:.4em}html.theme--catppuccin-macchiato .tabs.is-toggle li:last-child a{border-top-right-radius:.4em;border-bottom-right-radius:.4em}html.theme--catppuccin-macchiato .tabs.is-toggle li.is-active a{background-color:#8aadf4;border-color:#8aadf4;color:#fff;z-index:1}html.theme--catppuccin-macchiato .tabs.is-toggle ul{border-bottom:none}html.theme--catppuccin-macchiato .tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:9999px;border-top-left-radius:9999px;padding-left:1.25em}html.theme--catppuccin-macchiato .tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:9999px;border-top-right-radius:9999px;padding-right:1.25em}html.theme--catppuccin-macchiato .tabs.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.tabs{font-size:.75rem}html.theme--catppuccin-macchiato .tabs.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .tabs.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-narrow{flex:none;width:unset}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-full{flex:none;width:100%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-half{flex:none;width:50%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-half{margin-left:50%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-0{flex:none;width:0%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-0{margin-left:0%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-1{flex:none;width:8.33333337%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-1{margin-left:8.33333337%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-2{flex:none;width:16.66666674%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-2{margin-left:16.66666674%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-3{flex:none;width:25%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-3{margin-left:25%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-4{flex:none;width:33.33333337%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-4{margin-left:33.33333337%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-5{flex:none;width:41.66666674%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-5{margin-left:41.66666674%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-6{flex:none;width:50%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-6{margin-left:50%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-7{flex:none;width:58.33333337%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-7{margin-left:58.33333337%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-8{flex:none;width:66.66666674%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-8{margin-left:66.66666674%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-9{flex:none;width:75%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-9{margin-left:75%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-10{flex:none;width:83.33333337%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-10{margin-left:83.33333337%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-11{flex:none;width:91.66666674%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-11{margin-left:91.66666674%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-12{flex:none;width:100%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .column.is-narrow-mobile{flex:none;width:unset}html.theme--catppuccin-macchiato .column.is-full-mobile{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-three-quarters-mobile{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-two-thirds-mobile{flex:none;width:66.6666%}html.theme--catppuccin-macchiato .column.is-half-mobile{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-one-third-mobile{flex:none;width:33.3333%}html.theme--catppuccin-macchiato .column.is-one-quarter-mobile{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-one-fifth-mobile{flex:none;width:20%}html.theme--catppuccin-macchiato .column.is-two-fifths-mobile{flex:none;width:40%}html.theme--catppuccin-macchiato .column.is-three-fifths-mobile{flex:none;width:60%}html.theme--catppuccin-macchiato .column.is-four-fifths-mobile{flex:none;width:80%}html.theme--catppuccin-macchiato .column.is-offset-three-quarters-mobile{margin-left:75%}html.theme--catppuccin-macchiato .column.is-offset-two-thirds-mobile{margin-left:66.6666%}html.theme--catppuccin-macchiato .column.is-offset-half-mobile{margin-left:50%}html.theme--catppuccin-macchiato .column.is-offset-one-third-mobile{margin-left:33.3333%}html.theme--catppuccin-macchiato .column.is-offset-one-quarter-mobile{margin-left:25%}html.theme--catppuccin-macchiato .column.is-offset-one-fifth-mobile{margin-left:20%}html.theme--catppuccin-macchiato .column.is-offset-two-fifths-mobile{margin-left:40%}html.theme--catppuccin-macchiato .column.is-offset-three-fifths-mobile{margin-left:60%}html.theme--catppuccin-macchiato .column.is-offset-four-fifths-mobile{margin-left:80%}html.theme--catppuccin-macchiato .column.is-0-mobile{flex:none;width:0%}html.theme--catppuccin-macchiato .column.is-offset-0-mobile{margin-left:0%}html.theme--catppuccin-macchiato .column.is-1-mobile{flex:none;width:8.33333337%}html.theme--catppuccin-macchiato .column.is-offset-1-mobile{margin-left:8.33333337%}html.theme--catppuccin-macchiato .column.is-2-mobile{flex:none;width:16.66666674%}html.theme--catppuccin-macchiato .column.is-offset-2-mobile{margin-left:16.66666674%}html.theme--catppuccin-macchiato .column.is-3-mobile{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-offset-3-mobile{margin-left:25%}html.theme--catppuccin-macchiato .column.is-4-mobile{flex:none;width:33.33333337%}html.theme--catppuccin-macchiato .column.is-offset-4-mobile{margin-left:33.33333337%}html.theme--catppuccin-macchiato .column.is-5-mobile{flex:none;width:41.66666674%}html.theme--catppuccin-macchiato .column.is-offset-5-mobile{margin-left:41.66666674%}html.theme--catppuccin-macchiato .column.is-6-mobile{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-offset-6-mobile{margin-left:50%}html.theme--catppuccin-macchiato .column.is-7-mobile{flex:none;width:58.33333337%}html.theme--catppuccin-macchiato .column.is-offset-7-mobile{margin-left:58.33333337%}html.theme--catppuccin-macchiato .column.is-8-mobile{flex:none;width:66.66666674%}html.theme--catppuccin-macchiato .column.is-offset-8-mobile{margin-left:66.66666674%}html.theme--catppuccin-macchiato .column.is-9-mobile{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-offset-9-mobile{margin-left:75%}html.theme--catppuccin-macchiato .column.is-10-mobile{flex:none;width:83.33333337%}html.theme--catppuccin-macchiato .column.is-offset-10-mobile{margin-left:83.33333337%}html.theme--catppuccin-macchiato .column.is-11-mobile{flex:none;width:91.66666674%}html.theme--catppuccin-macchiato .column.is-offset-11-mobile{margin-left:91.66666674%}html.theme--catppuccin-macchiato .column.is-12-mobile{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .column.is-narrow,html.theme--catppuccin-macchiato .column.is-narrow-tablet{flex:none;width:unset}html.theme--catppuccin-macchiato .column.is-full,html.theme--catppuccin-macchiato .column.is-full-tablet{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-three-quarters,html.theme--catppuccin-macchiato .column.is-three-quarters-tablet{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-two-thirds,html.theme--catppuccin-macchiato .column.is-two-thirds-tablet{flex:none;width:66.6666%}html.theme--catppuccin-macchiato .column.is-half,html.theme--catppuccin-macchiato .column.is-half-tablet{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-one-third,html.theme--catppuccin-macchiato .column.is-one-third-tablet{flex:none;width:33.3333%}html.theme--catppuccin-macchiato .column.is-one-quarter,html.theme--catppuccin-macchiato .column.is-one-quarter-tablet{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-one-fifth,html.theme--catppuccin-macchiato .column.is-one-fifth-tablet{flex:none;width:20%}html.theme--catppuccin-macchiato .column.is-two-fifths,html.theme--catppuccin-macchiato .column.is-two-fifths-tablet{flex:none;width:40%}html.theme--catppuccin-macchiato .column.is-three-fifths,html.theme--catppuccin-macchiato .column.is-three-fifths-tablet{flex:none;width:60%}html.theme--catppuccin-macchiato .column.is-four-fifths,html.theme--catppuccin-macchiato .column.is-four-fifths-tablet{flex:none;width:80%}html.theme--catppuccin-macchiato .column.is-offset-three-quarters,html.theme--catppuccin-macchiato .column.is-offset-three-quarters-tablet{margin-left:75%}html.theme--catppuccin-macchiato .column.is-offset-two-thirds,html.theme--catppuccin-macchiato .column.is-offset-two-thirds-tablet{margin-left:66.6666%}html.theme--catppuccin-macchiato .column.is-offset-half,html.theme--catppuccin-macchiato .column.is-offset-half-tablet{margin-left:50%}html.theme--catppuccin-macchiato .column.is-offset-one-third,html.theme--catppuccin-macchiato .column.is-offset-one-third-tablet{margin-left:33.3333%}html.theme--catppuccin-macchiato .column.is-offset-one-quarter,html.theme--catppuccin-macchiato .column.is-offset-one-quarter-tablet{margin-left:25%}html.theme--catppuccin-macchiato .column.is-offset-one-fifth,html.theme--catppuccin-macchiato .column.is-offset-one-fifth-tablet{margin-left:20%}html.theme--catppuccin-macchiato .column.is-offset-two-fifths,html.theme--catppuccin-macchiato .column.is-offset-two-fifths-tablet{margin-left:40%}html.theme--catppuccin-macchiato .column.is-offset-three-fifths,html.theme--catppuccin-macchiato .column.is-offset-three-fifths-tablet{margin-left:60%}html.theme--catppuccin-macchiato .column.is-offset-four-fifths,html.theme--catppuccin-macchiato .column.is-offset-four-fifths-tablet{margin-left:80%}html.theme--catppuccin-macchiato .column.is-0,html.theme--catppuccin-macchiato .column.is-0-tablet{flex:none;width:0%}html.theme--catppuccin-macchiato .column.is-offset-0,html.theme--catppuccin-macchiato .column.is-offset-0-tablet{margin-left:0%}html.theme--catppuccin-macchiato .column.is-1,html.theme--catppuccin-macchiato .column.is-1-tablet{flex:none;width:8.33333337%}html.theme--catppuccin-macchiato .column.is-offset-1,html.theme--catppuccin-macchiato .column.is-offset-1-tablet{margin-left:8.33333337%}html.theme--catppuccin-macchiato .column.is-2,html.theme--catppuccin-macchiato .column.is-2-tablet{flex:none;width:16.66666674%}html.theme--catppuccin-macchiato .column.is-offset-2,html.theme--catppuccin-macchiato .column.is-offset-2-tablet{margin-left:16.66666674%}html.theme--catppuccin-macchiato .column.is-3,html.theme--catppuccin-macchiato .column.is-3-tablet{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-offset-3,html.theme--catppuccin-macchiato .column.is-offset-3-tablet{margin-left:25%}html.theme--catppuccin-macchiato .column.is-4,html.theme--catppuccin-macchiato .column.is-4-tablet{flex:none;width:33.33333337%}html.theme--catppuccin-macchiato .column.is-offset-4,html.theme--catppuccin-macchiato .column.is-offset-4-tablet{margin-left:33.33333337%}html.theme--catppuccin-macchiato .column.is-5,html.theme--catppuccin-macchiato .column.is-5-tablet{flex:none;width:41.66666674%}html.theme--catppuccin-macchiato .column.is-offset-5,html.theme--catppuccin-macchiato .column.is-offset-5-tablet{margin-left:41.66666674%}html.theme--catppuccin-macchiato .column.is-6,html.theme--catppuccin-macchiato .column.is-6-tablet{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-offset-6,html.theme--catppuccin-macchiato .column.is-offset-6-tablet{margin-left:50%}html.theme--catppuccin-macchiato .column.is-7,html.theme--catppuccin-macchiato .column.is-7-tablet{flex:none;width:58.33333337%}html.theme--catppuccin-macchiato .column.is-offset-7,html.theme--catppuccin-macchiato .column.is-offset-7-tablet{margin-left:58.33333337%}html.theme--catppuccin-macchiato .column.is-8,html.theme--catppuccin-macchiato .column.is-8-tablet{flex:none;width:66.66666674%}html.theme--catppuccin-macchiato .column.is-offset-8,html.theme--catppuccin-macchiato .column.is-offset-8-tablet{margin-left:66.66666674%}html.theme--catppuccin-macchiato .column.is-9,html.theme--catppuccin-macchiato .column.is-9-tablet{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-offset-9,html.theme--catppuccin-macchiato .column.is-offset-9-tablet{margin-left:75%}html.theme--catppuccin-macchiato .column.is-10,html.theme--catppuccin-macchiato .column.is-10-tablet{flex:none;width:83.33333337%}html.theme--catppuccin-macchiato .column.is-offset-10,html.theme--catppuccin-macchiato .column.is-offset-10-tablet{margin-left:83.33333337%}html.theme--catppuccin-macchiato .column.is-11,html.theme--catppuccin-macchiato .column.is-11-tablet{flex:none;width:91.66666674%}html.theme--catppuccin-macchiato .column.is-offset-11,html.theme--catppuccin-macchiato .column.is-offset-11-tablet{margin-left:91.66666674%}html.theme--catppuccin-macchiato .column.is-12,html.theme--catppuccin-macchiato .column.is-12-tablet{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-offset-12,html.theme--catppuccin-macchiato .column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .column.is-narrow-touch{flex:none;width:unset}html.theme--catppuccin-macchiato .column.is-full-touch{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-three-quarters-touch{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-two-thirds-touch{flex:none;width:66.6666%}html.theme--catppuccin-macchiato .column.is-half-touch{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-one-third-touch{flex:none;width:33.3333%}html.theme--catppuccin-macchiato .column.is-one-quarter-touch{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-one-fifth-touch{flex:none;width:20%}html.theme--catppuccin-macchiato .column.is-two-fifths-touch{flex:none;width:40%}html.theme--catppuccin-macchiato .column.is-three-fifths-touch{flex:none;width:60%}html.theme--catppuccin-macchiato .column.is-four-fifths-touch{flex:none;width:80%}html.theme--catppuccin-macchiato .column.is-offset-three-quarters-touch{margin-left:75%}html.theme--catppuccin-macchiato .column.is-offset-two-thirds-touch{margin-left:66.6666%}html.theme--catppuccin-macchiato .column.is-offset-half-touch{margin-left:50%}html.theme--catppuccin-macchiato .column.is-offset-one-third-touch{margin-left:33.3333%}html.theme--catppuccin-macchiato .column.is-offset-one-quarter-touch{margin-left:25%}html.theme--catppuccin-macchiato .column.is-offset-one-fifth-touch{margin-left:20%}html.theme--catppuccin-macchiato .column.is-offset-two-fifths-touch{margin-left:40%}html.theme--catppuccin-macchiato .column.is-offset-three-fifths-touch{margin-left:60%}html.theme--catppuccin-macchiato .column.is-offset-four-fifths-touch{margin-left:80%}html.theme--catppuccin-macchiato .column.is-0-touch{flex:none;width:0%}html.theme--catppuccin-macchiato .column.is-offset-0-touch{margin-left:0%}html.theme--catppuccin-macchiato .column.is-1-touch{flex:none;width:8.33333337%}html.theme--catppuccin-macchiato .column.is-offset-1-touch{margin-left:8.33333337%}html.theme--catppuccin-macchiato .column.is-2-touch{flex:none;width:16.66666674%}html.theme--catppuccin-macchiato .column.is-offset-2-touch{margin-left:16.66666674%}html.theme--catppuccin-macchiato .column.is-3-touch{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-offset-3-touch{margin-left:25%}html.theme--catppuccin-macchiato .column.is-4-touch{flex:none;width:33.33333337%}html.theme--catppuccin-macchiato .column.is-offset-4-touch{margin-left:33.33333337%}html.theme--catppuccin-macchiato .column.is-5-touch{flex:none;width:41.66666674%}html.theme--catppuccin-macchiato .column.is-offset-5-touch{margin-left:41.66666674%}html.theme--catppuccin-macchiato .column.is-6-touch{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-offset-6-touch{margin-left:50%}html.theme--catppuccin-macchiato .column.is-7-touch{flex:none;width:58.33333337%}html.theme--catppuccin-macchiato .column.is-offset-7-touch{margin-left:58.33333337%}html.theme--catppuccin-macchiato .column.is-8-touch{flex:none;width:66.66666674%}html.theme--catppuccin-macchiato .column.is-offset-8-touch{margin-left:66.66666674%}html.theme--catppuccin-macchiato .column.is-9-touch{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-offset-9-touch{margin-left:75%}html.theme--catppuccin-macchiato .column.is-10-touch{flex:none;width:83.33333337%}html.theme--catppuccin-macchiato .column.is-offset-10-touch{margin-left:83.33333337%}html.theme--catppuccin-macchiato .column.is-11-touch{flex:none;width:91.66666674%}html.theme--catppuccin-macchiato .column.is-offset-11-touch{margin-left:91.66666674%}html.theme--catppuccin-macchiato .column.is-12-touch{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .column.is-narrow-desktop{flex:none;width:unset}html.theme--catppuccin-macchiato .column.is-full-desktop{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-three-quarters-desktop{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-two-thirds-desktop{flex:none;width:66.6666%}html.theme--catppuccin-macchiato .column.is-half-desktop{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-one-third-desktop{flex:none;width:33.3333%}html.theme--catppuccin-macchiato .column.is-one-quarter-desktop{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-one-fifth-desktop{flex:none;width:20%}html.theme--catppuccin-macchiato .column.is-two-fifths-desktop{flex:none;width:40%}html.theme--catppuccin-macchiato .column.is-three-fifths-desktop{flex:none;width:60%}html.theme--catppuccin-macchiato .column.is-four-fifths-desktop{flex:none;width:80%}html.theme--catppuccin-macchiato .column.is-offset-three-quarters-desktop{margin-left:75%}html.theme--catppuccin-macchiato .column.is-offset-two-thirds-desktop{margin-left:66.6666%}html.theme--catppuccin-macchiato .column.is-offset-half-desktop{margin-left:50%}html.theme--catppuccin-macchiato .column.is-offset-one-third-desktop{margin-left:33.3333%}html.theme--catppuccin-macchiato .column.is-offset-one-quarter-desktop{margin-left:25%}html.theme--catppuccin-macchiato .column.is-offset-one-fifth-desktop{margin-left:20%}html.theme--catppuccin-macchiato .column.is-offset-two-fifths-desktop{margin-left:40%}html.theme--catppuccin-macchiato .column.is-offset-three-fifths-desktop{margin-left:60%}html.theme--catppuccin-macchiato .column.is-offset-four-fifths-desktop{margin-left:80%}html.theme--catppuccin-macchiato .column.is-0-desktop{flex:none;width:0%}html.theme--catppuccin-macchiato .column.is-offset-0-desktop{margin-left:0%}html.theme--catppuccin-macchiato .column.is-1-desktop{flex:none;width:8.33333337%}html.theme--catppuccin-macchiato .column.is-offset-1-desktop{margin-left:8.33333337%}html.theme--catppuccin-macchiato .column.is-2-desktop{flex:none;width:16.66666674%}html.theme--catppuccin-macchiato .column.is-offset-2-desktop{margin-left:16.66666674%}html.theme--catppuccin-macchiato .column.is-3-desktop{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-offset-3-desktop{margin-left:25%}html.theme--catppuccin-macchiato .column.is-4-desktop{flex:none;width:33.33333337%}html.theme--catppuccin-macchiato .column.is-offset-4-desktop{margin-left:33.33333337%}html.theme--catppuccin-macchiato .column.is-5-desktop{flex:none;width:41.66666674%}html.theme--catppuccin-macchiato .column.is-offset-5-desktop{margin-left:41.66666674%}html.theme--catppuccin-macchiato .column.is-6-desktop{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-offset-6-desktop{margin-left:50%}html.theme--catppuccin-macchiato .column.is-7-desktop{flex:none;width:58.33333337%}html.theme--catppuccin-macchiato .column.is-offset-7-desktop{margin-left:58.33333337%}html.theme--catppuccin-macchiato .column.is-8-desktop{flex:none;width:66.66666674%}html.theme--catppuccin-macchiato .column.is-offset-8-desktop{margin-left:66.66666674%}html.theme--catppuccin-macchiato .column.is-9-desktop{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-offset-9-desktop{margin-left:75%}html.theme--catppuccin-macchiato .column.is-10-desktop{flex:none;width:83.33333337%}html.theme--catppuccin-macchiato .column.is-offset-10-desktop{margin-left:83.33333337%}html.theme--catppuccin-macchiato .column.is-11-desktop{flex:none;width:91.66666674%}html.theme--catppuccin-macchiato .column.is-offset-11-desktop{margin-left:91.66666674%}html.theme--catppuccin-macchiato .column.is-12-desktop{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){html.theme--catppuccin-macchiato .column.is-narrow-widescreen{flex:none;width:unset}html.theme--catppuccin-macchiato .column.is-full-widescreen{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-three-quarters-widescreen{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-two-thirds-widescreen{flex:none;width:66.6666%}html.theme--catppuccin-macchiato .column.is-half-widescreen{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-one-third-widescreen{flex:none;width:33.3333%}html.theme--catppuccin-macchiato .column.is-one-quarter-widescreen{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-one-fifth-widescreen{flex:none;width:20%}html.theme--catppuccin-macchiato .column.is-two-fifths-widescreen{flex:none;width:40%}html.theme--catppuccin-macchiato .column.is-three-fifths-widescreen{flex:none;width:60%}html.theme--catppuccin-macchiato .column.is-four-fifths-widescreen{flex:none;width:80%}html.theme--catppuccin-macchiato .column.is-offset-three-quarters-widescreen{margin-left:75%}html.theme--catppuccin-macchiato .column.is-offset-two-thirds-widescreen{margin-left:66.6666%}html.theme--catppuccin-macchiato .column.is-offset-half-widescreen{margin-left:50%}html.theme--catppuccin-macchiato .column.is-offset-one-third-widescreen{margin-left:33.3333%}html.theme--catppuccin-macchiato .column.is-offset-one-quarter-widescreen{margin-left:25%}html.theme--catppuccin-macchiato .column.is-offset-one-fifth-widescreen{margin-left:20%}html.theme--catppuccin-macchiato .column.is-offset-two-fifths-widescreen{margin-left:40%}html.theme--catppuccin-macchiato .column.is-offset-three-fifths-widescreen{margin-left:60%}html.theme--catppuccin-macchiato .column.is-offset-four-fifths-widescreen{margin-left:80%}html.theme--catppuccin-macchiato .column.is-0-widescreen{flex:none;width:0%}html.theme--catppuccin-macchiato .column.is-offset-0-widescreen{margin-left:0%}html.theme--catppuccin-macchiato .column.is-1-widescreen{flex:none;width:8.33333337%}html.theme--catppuccin-macchiato .column.is-offset-1-widescreen{margin-left:8.33333337%}html.theme--catppuccin-macchiato .column.is-2-widescreen{flex:none;width:16.66666674%}html.theme--catppuccin-macchiato .column.is-offset-2-widescreen{margin-left:16.66666674%}html.theme--catppuccin-macchiato .column.is-3-widescreen{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-offset-3-widescreen{margin-left:25%}html.theme--catppuccin-macchiato .column.is-4-widescreen{flex:none;width:33.33333337%}html.theme--catppuccin-macchiato .column.is-offset-4-widescreen{margin-left:33.33333337%}html.theme--catppuccin-macchiato .column.is-5-widescreen{flex:none;width:41.66666674%}html.theme--catppuccin-macchiato .column.is-offset-5-widescreen{margin-left:41.66666674%}html.theme--catppuccin-macchiato .column.is-6-widescreen{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-offset-6-widescreen{margin-left:50%}html.theme--catppuccin-macchiato .column.is-7-widescreen{flex:none;width:58.33333337%}html.theme--catppuccin-macchiato .column.is-offset-7-widescreen{margin-left:58.33333337%}html.theme--catppuccin-macchiato .column.is-8-widescreen{flex:none;width:66.66666674%}html.theme--catppuccin-macchiato .column.is-offset-8-widescreen{margin-left:66.66666674%}html.theme--catppuccin-macchiato .column.is-9-widescreen{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-offset-9-widescreen{margin-left:75%}html.theme--catppuccin-macchiato .column.is-10-widescreen{flex:none;width:83.33333337%}html.theme--catppuccin-macchiato .column.is-offset-10-widescreen{margin-left:83.33333337%}html.theme--catppuccin-macchiato .column.is-11-widescreen{flex:none;width:91.66666674%}html.theme--catppuccin-macchiato .column.is-offset-11-widescreen{margin-left:91.66666674%}html.theme--catppuccin-macchiato .column.is-12-widescreen{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){html.theme--catppuccin-macchiato .column.is-narrow-fullhd{flex:none;width:unset}html.theme--catppuccin-macchiato .column.is-full-fullhd{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-three-quarters-fullhd{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-two-thirds-fullhd{flex:none;width:66.6666%}html.theme--catppuccin-macchiato .column.is-half-fullhd{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-one-third-fullhd{flex:none;width:33.3333%}html.theme--catppuccin-macchiato .column.is-one-quarter-fullhd{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-one-fifth-fullhd{flex:none;width:20%}html.theme--catppuccin-macchiato .column.is-two-fifths-fullhd{flex:none;width:40%}html.theme--catppuccin-macchiato .column.is-three-fifths-fullhd{flex:none;width:60%}html.theme--catppuccin-macchiato .column.is-four-fifths-fullhd{flex:none;width:80%}html.theme--catppuccin-macchiato .column.is-offset-three-quarters-fullhd{margin-left:75%}html.theme--catppuccin-macchiato .column.is-offset-two-thirds-fullhd{margin-left:66.6666%}html.theme--catppuccin-macchiato .column.is-offset-half-fullhd{margin-left:50%}html.theme--catppuccin-macchiato .column.is-offset-one-third-fullhd{margin-left:33.3333%}html.theme--catppuccin-macchiato .column.is-offset-one-quarter-fullhd{margin-left:25%}html.theme--catppuccin-macchiato .column.is-offset-one-fifth-fullhd{margin-left:20%}html.theme--catppuccin-macchiato .column.is-offset-two-fifths-fullhd{margin-left:40%}html.theme--catppuccin-macchiato .column.is-offset-three-fifths-fullhd{margin-left:60%}html.theme--catppuccin-macchiato .column.is-offset-four-fifths-fullhd{margin-left:80%}html.theme--catppuccin-macchiato .column.is-0-fullhd{flex:none;width:0%}html.theme--catppuccin-macchiato .column.is-offset-0-fullhd{margin-left:0%}html.theme--catppuccin-macchiato .column.is-1-fullhd{flex:none;width:8.33333337%}html.theme--catppuccin-macchiato .column.is-offset-1-fullhd{margin-left:8.33333337%}html.theme--catppuccin-macchiato .column.is-2-fullhd{flex:none;width:16.66666674%}html.theme--catppuccin-macchiato .column.is-offset-2-fullhd{margin-left:16.66666674%}html.theme--catppuccin-macchiato .column.is-3-fullhd{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-offset-3-fullhd{margin-left:25%}html.theme--catppuccin-macchiato .column.is-4-fullhd{flex:none;width:33.33333337%}html.theme--catppuccin-macchiato .column.is-offset-4-fullhd{margin-left:33.33333337%}html.theme--catppuccin-macchiato .column.is-5-fullhd{flex:none;width:41.66666674%}html.theme--catppuccin-macchiato .column.is-offset-5-fullhd{margin-left:41.66666674%}html.theme--catppuccin-macchiato .column.is-6-fullhd{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-offset-6-fullhd{margin-left:50%}html.theme--catppuccin-macchiato .column.is-7-fullhd{flex:none;width:58.33333337%}html.theme--catppuccin-macchiato .column.is-offset-7-fullhd{margin-left:58.33333337%}html.theme--catppuccin-macchiato .column.is-8-fullhd{flex:none;width:66.66666674%}html.theme--catppuccin-macchiato .column.is-offset-8-fullhd{margin-left:66.66666674%}html.theme--catppuccin-macchiato .column.is-9-fullhd{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-offset-9-fullhd{margin-left:75%}html.theme--catppuccin-macchiato .column.is-10-fullhd{flex:none;width:83.33333337%}html.theme--catppuccin-macchiato .column.is-offset-10-fullhd{margin-left:83.33333337%}html.theme--catppuccin-macchiato .column.is-11-fullhd{flex:none;width:91.66666674%}html.theme--catppuccin-macchiato .column.is-offset-11-fullhd{margin-left:91.66666674%}html.theme--catppuccin-macchiato .column.is-12-fullhd{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-offset-12-fullhd{margin-left:100%}}html.theme--catppuccin-macchiato .columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--catppuccin-macchiato .columns:last-child{margin-bottom:-.75rem}html.theme--catppuccin-macchiato .columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}html.theme--catppuccin-macchiato .columns.is-centered{justify-content:center}html.theme--catppuccin-macchiato .columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}html.theme--catppuccin-macchiato .columns.is-gapless>.column{margin:0;padding:0 !important}html.theme--catppuccin-macchiato .columns.is-gapless:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-macchiato .columns.is-gapless:last-child{margin-bottom:0}html.theme--catppuccin-macchiato .columns.is-mobile{display:flex}html.theme--catppuccin-macchiato .columns.is-multiline{flex-wrap:wrap}html.theme--catppuccin-macchiato .columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .columns.is-desktop{display:flex}}html.theme--catppuccin-macchiato .columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}html.theme--catppuccin-macchiato .columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}html.theme--catppuccin-macchiato .columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-macchiato .columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-macchiato .columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-macchiato .columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-macchiato .columns.is-variable.is-0-fullhd{--columnGap: 0rem}}html.theme--catppuccin-macchiato .columns.is-variable.is-1{--columnGap: .25rem}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .columns.is-variable.is-1-mobile{--columnGap: .25rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .columns.is-variable.is-1-tablet{--columnGap: .25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-1-tablet-only{--columnGap: .25rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-1-touch{--columnGap: .25rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .columns.is-variable.is-1-desktop{--columnGap: .25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-macchiato .columns.is-variable.is-1-desktop-only{--columnGap: .25rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-macchiato .columns.is-variable.is-1-widescreen{--columnGap: .25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-macchiato .columns.is-variable.is-1-widescreen-only{--columnGap: .25rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-macchiato .columns.is-variable.is-1-fullhd{--columnGap: .25rem}}html.theme--catppuccin-macchiato .columns.is-variable.is-2{--columnGap: .5rem}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .columns.is-variable.is-2-mobile{--columnGap: .5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .columns.is-variable.is-2-tablet{--columnGap: .5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-2-tablet-only{--columnGap: .5rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-2-touch{--columnGap: .5rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .columns.is-variable.is-2-desktop{--columnGap: .5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-macchiato .columns.is-variable.is-2-desktop-only{--columnGap: .5rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-macchiato .columns.is-variable.is-2-widescreen{--columnGap: .5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-macchiato .columns.is-variable.is-2-widescreen-only{--columnGap: .5rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-macchiato .columns.is-variable.is-2-fullhd{--columnGap: .5rem}}html.theme--catppuccin-macchiato .columns.is-variable.is-3{--columnGap: .75rem}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .columns.is-variable.is-3-mobile{--columnGap: .75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .columns.is-variable.is-3-tablet{--columnGap: .75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-3-tablet-only{--columnGap: .75rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-3-touch{--columnGap: .75rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .columns.is-variable.is-3-desktop{--columnGap: .75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-macchiato .columns.is-variable.is-3-desktop-only{--columnGap: .75rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-macchiato .columns.is-variable.is-3-widescreen{--columnGap: .75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-macchiato .columns.is-variable.is-3-widescreen-only{--columnGap: .75rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-macchiato .columns.is-variable.is-3-fullhd{--columnGap: .75rem}}html.theme--catppuccin-macchiato .columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-macchiato .columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-macchiato .columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-macchiato .columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-macchiato .columns.is-variable.is-4-fullhd{--columnGap: 1rem}}html.theme--catppuccin-macchiato .columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-macchiato .columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-macchiato .columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-macchiato .columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-macchiato .columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}html.theme--catppuccin-macchiato .columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-macchiato .columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-macchiato .columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-macchiato .columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-macchiato .columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}html.theme--catppuccin-macchiato .columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-macchiato .columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-macchiato .columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-macchiato .columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-macchiato .columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}html.theme--catppuccin-macchiato .columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-macchiato .columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-macchiato .columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-macchiato .columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-macchiato .columns.is-variable.is-8-fullhd{--columnGap: 2rem}}html.theme--catppuccin-macchiato .tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}html.theme--catppuccin-macchiato .tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--catppuccin-macchiato .tile.is-ancestor:last-child{margin-bottom:-.75rem}html.theme--catppuccin-macchiato .tile.is-ancestor:not(:last-child){margin-bottom:.75rem}html.theme--catppuccin-macchiato .tile.is-child{margin:0 !important}html.theme--catppuccin-macchiato .tile.is-parent{padding:.75rem}html.theme--catppuccin-macchiato .tile.is-vertical{flex-direction:column}html.theme--catppuccin-macchiato .tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .tile:not(.is-child){display:flex}html.theme--catppuccin-macchiato .tile.is-1{flex:none;width:8.33333337%}html.theme--catppuccin-macchiato .tile.is-2{flex:none;width:16.66666674%}html.theme--catppuccin-macchiato .tile.is-3{flex:none;width:25%}html.theme--catppuccin-macchiato .tile.is-4{flex:none;width:33.33333337%}html.theme--catppuccin-macchiato .tile.is-5{flex:none;width:41.66666674%}html.theme--catppuccin-macchiato .tile.is-6{flex:none;width:50%}html.theme--catppuccin-macchiato .tile.is-7{flex:none;width:58.33333337%}html.theme--catppuccin-macchiato .tile.is-8{flex:none;width:66.66666674%}html.theme--catppuccin-macchiato .tile.is-9{flex:none;width:75%}html.theme--catppuccin-macchiato .tile.is-10{flex:none;width:83.33333337%}html.theme--catppuccin-macchiato .tile.is-11{flex:none;width:91.66666674%}html.theme--catppuccin-macchiato .tile.is-12{flex:none;width:100%}}html.theme--catppuccin-macchiato .hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}html.theme--catppuccin-macchiato .hero .navbar{background:none}html.theme--catppuccin-macchiato .hero .tabs ul{border-bottom:none}html.theme--catppuccin-macchiato .hero.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-macchiato .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .hero.is-white strong{color:inherit}html.theme--catppuccin-macchiato .hero.is-white .title{color:#0a0a0a}html.theme--catppuccin-macchiato .hero.is-white .subtitle{color:rgba(10,10,10,0.9)}html.theme--catppuccin-macchiato .hero.is-white .subtitle a:not(.button),html.theme--catppuccin-macchiato .hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .hero.is-white .navbar-menu{background-color:#fff}}html.theme--catppuccin-macchiato .hero.is-white .navbar-item,html.theme--catppuccin-macchiato .hero.is-white .navbar-link{color:rgba(10,10,10,0.7)}html.theme--catppuccin-macchiato .hero.is-white a.navbar-item:hover,html.theme--catppuccin-macchiato .hero.is-white a.navbar-item.is-active,html.theme--catppuccin-macchiato .hero.is-white .navbar-link:hover,html.theme--catppuccin-macchiato .hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-macchiato .hero.is-white .tabs a{color:#0a0a0a;opacity:0.9}html.theme--catppuccin-macchiato .hero.is-white .tabs a:hover{opacity:1}html.theme--catppuccin-macchiato .hero.is-white .tabs li.is-active a{color:#fff !important;opacity:1}html.theme--catppuccin-macchiato .hero.is-white .tabs.is-boxed a,html.theme--catppuccin-macchiato .hero.is-white .tabs.is-toggle a{color:#0a0a0a}html.theme--catppuccin-macchiato .hero.is-white .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .hero.is-white .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .hero.is-white .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-macchiato .hero.is-white .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-macchiato .hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}}html.theme--catppuccin-macchiato .hero.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-macchiato .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .hero.is-black strong{color:inherit}html.theme--catppuccin-macchiato .hero.is-black .title{color:#fff}html.theme--catppuccin-macchiato .hero.is-black .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-macchiato .hero.is-black .subtitle a:not(.button),html.theme--catppuccin-macchiato .hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .hero.is-black .navbar-menu{background-color:#0a0a0a}}html.theme--catppuccin-macchiato .hero.is-black .navbar-item,html.theme--catppuccin-macchiato .hero.is-black .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-macchiato .hero.is-black a.navbar-item:hover,html.theme--catppuccin-macchiato .hero.is-black a.navbar-item.is-active,html.theme--catppuccin-macchiato .hero.is-black .navbar-link:hover,html.theme--catppuccin-macchiato .hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-macchiato .hero.is-black .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-macchiato .hero.is-black .tabs a:hover{opacity:1}html.theme--catppuccin-macchiato .hero.is-black .tabs li.is-active a{color:#0a0a0a !important;opacity:1}html.theme--catppuccin-macchiato .hero.is-black .tabs.is-boxed a,html.theme--catppuccin-macchiato .hero.is-black .tabs.is-toggle a{color:#fff}html.theme--catppuccin-macchiato .hero.is-black .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .hero.is-black .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .hero.is-black .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-macchiato .hero.is-black .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-macchiato .hero.is-black.is-bold{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}}html.theme--catppuccin-macchiato .hero.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .hero.is-light strong{color:inherit}html.theme--catppuccin-macchiato .hero.is-light .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-light .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-macchiato .hero.is-light .subtitle a:not(.button),html.theme--catppuccin-macchiato .hero.is-light .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .hero.is-light .navbar-menu{background-color:#f5f5f5}}html.theme--catppuccin-macchiato .hero.is-light .navbar-item,html.theme--catppuccin-macchiato .hero.is-light .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-light a.navbar-item:hover,html.theme--catppuccin-macchiato .hero.is-light a.navbar-item.is-active,html.theme--catppuccin-macchiato .hero.is-light .navbar-link:hover,html.theme--catppuccin-macchiato .hero.is-light .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-light .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-macchiato .hero.is-light .tabs a:hover{opacity:1}html.theme--catppuccin-macchiato .hero.is-light .tabs li.is-active a{color:#f5f5f5 !important;opacity:1}html.theme--catppuccin-macchiato .hero.is-light .tabs.is-boxed a,html.theme--catppuccin-macchiato .hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-light .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .hero.is-light .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .hero.is-light .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-macchiato .hero.is-light .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-macchiato .hero.is-light.is-bold{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}}html.theme--catppuccin-macchiato .hero.is-dark,html.theme--catppuccin-macchiato .content kbd.hero{background-color:#363a4f;color:#fff}html.theme--catppuccin-macchiato .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .hero.is-dark strong,html.theme--catppuccin-macchiato .content kbd.hero strong{color:inherit}html.theme--catppuccin-macchiato .hero.is-dark .title,html.theme--catppuccin-macchiato .content kbd.hero .title{color:#fff}html.theme--catppuccin-macchiato .hero.is-dark .subtitle,html.theme--catppuccin-macchiato .content kbd.hero .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-macchiato .hero.is-dark .subtitle a:not(.button),html.theme--catppuccin-macchiato .content kbd.hero .subtitle a:not(.button),html.theme--catppuccin-macchiato .hero.is-dark .subtitle strong,html.theme--catppuccin-macchiato .content kbd.hero .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .hero.is-dark .navbar-menu,html.theme--catppuccin-macchiato .content kbd.hero .navbar-menu{background-color:#363a4f}}html.theme--catppuccin-macchiato .hero.is-dark .navbar-item,html.theme--catppuccin-macchiato .content kbd.hero .navbar-item,html.theme--catppuccin-macchiato .hero.is-dark .navbar-link,html.theme--catppuccin-macchiato .content kbd.hero .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-macchiato .hero.is-dark a.navbar-item:hover,html.theme--catppuccin-macchiato .content kbd.hero a.navbar-item:hover,html.theme--catppuccin-macchiato .hero.is-dark a.navbar-item.is-active,html.theme--catppuccin-macchiato .content kbd.hero a.navbar-item.is-active,html.theme--catppuccin-macchiato .hero.is-dark .navbar-link:hover,html.theme--catppuccin-macchiato .content kbd.hero .navbar-link:hover,html.theme--catppuccin-macchiato .hero.is-dark .navbar-link.is-active,html.theme--catppuccin-macchiato .content kbd.hero .navbar-link.is-active{background-color:#2c2f40;color:#fff}html.theme--catppuccin-macchiato .hero.is-dark .tabs a,html.theme--catppuccin-macchiato .content kbd.hero .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-macchiato .hero.is-dark .tabs a:hover,html.theme--catppuccin-macchiato .content kbd.hero .tabs a:hover{opacity:1}html.theme--catppuccin-macchiato .hero.is-dark .tabs li.is-active a,html.theme--catppuccin-macchiato .content kbd.hero .tabs li.is-active a{color:#363a4f !important;opacity:1}html.theme--catppuccin-macchiato .hero.is-dark .tabs.is-boxed a,html.theme--catppuccin-macchiato .content kbd.hero .tabs.is-boxed a,html.theme--catppuccin-macchiato .hero.is-dark .tabs.is-toggle a,html.theme--catppuccin-macchiato .content kbd.hero .tabs.is-toggle a{color:#fff}html.theme--catppuccin-macchiato .hero.is-dark .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .content kbd.hero .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .hero.is-dark .tabs.is-toggle a:hover,html.theme--catppuccin-macchiato .content kbd.hero .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .hero.is-dark .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .content kbd.hero .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .hero.is-dark .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-macchiato .hero.is-dark .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .content kbd.hero .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#363a4f}html.theme--catppuccin-macchiato .hero.is-dark.is-bold,html.theme--catppuccin-macchiato .content kbd.hero.is-bold{background-image:linear-gradient(141deg, #1d2535 0%, #363a4f 71%, #3d3c62 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero.is-dark.is-bold .navbar-menu,html.theme--catppuccin-macchiato .content kbd.hero.is-bold .navbar-menu{background-image:linear-gradient(141deg, #1d2535 0%, #363a4f 71%, #3d3c62 100%)}}html.theme--catppuccin-macchiato .hero.is-primary,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .hero.is-primary strong,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink strong{color:inherit}html.theme--catppuccin-macchiato .hero.is-primary .title,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .title{color:#fff}html.theme--catppuccin-macchiato .hero.is-primary .subtitle,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-macchiato .hero.is-primary .subtitle a:not(.button),html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .subtitle a:not(.button),html.theme--catppuccin-macchiato .hero.is-primary .subtitle strong,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .hero.is-primary .navbar-menu,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .navbar-menu{background-color:#8aadf4}}html.theme--catppuccin-macchiato .hero.is-primary .navbar-item,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .navbar-item,html.theme--catppuccin-macchiato .hero.is-primary .navbar-link,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-macchiato .hero.is-primary a.navbar-item:hover,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink a.navbar-item:hover,html.theme--catppuccin-macchiato .hero.is-primary a.navbar-item.is-active,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink a.navbar-item.is-active,html.theme--catppuccin-macchiato .hero.is-primary .navbar-link:hover,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .navbar-link:hover,html.theme--catppuccin-macchiato .hero.is-primary .navbar-link.is-active,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .navbar-link.is-active{background-color:#739df2;color:#fff}html.theme--catppuccin-macchiato .hero.is-primary .tabs a,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-macchiato .hero.is-primary .tabs a:hover,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .tabs a:hover{opacity:1}html.theme--catppuccin-macchiato .hero.is-primary .tabs li.is-active a,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .tabs li.is-active a{color:#8aadf4 !important;opacity:1}html.theme--catppuccin-macchiato .hero.is-primary .tabs.is-boxed a,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a,html.theme--catppuccin-macchiato .hero.is-primary .tabs.is-toggle a,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a{color:#fff}html.theme--catppuccin-macchiato .hero.is-primary .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .hero.is-primary .tabs.is-toggle a:hover,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .hero.is-primary .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .hero.is-primary .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-macchiato .hero.is-primary .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#8aadf4}html.theme--catppuccin-macchiato .hero.is-primary.is-bold,html.theme--catppuccin-macchiato .docstring>section>a.hero.is-bold.docs-sourcelink{background-image:linear-gradient(141deg, #52a5f9 0%, #8aadf4 71%, #9fadf9 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero.is-primary.is-bold .navbar-menu,html.theme--catppuccin-macchiato .docstring>section>a.hero.is-bold.docs-sourcelink .navbar-menu{background-image:linear-gradient(141deg, #52a5f9 0%, #8aadf4 71%, #9fadf9 100%)}}html.theme--catppuccin-macchiato .hero.is-link{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .hero.is-link strong{color:inherit}html.theme--catppuccin-macchiato .hero.is-link .title{color:#fff}html.theme--catppuccin-macchiato .hero.is-link .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-macchiato .hero.is-link .subtitle a:not(.button),html.theme--catppuccin-macchiato .hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .hero.is-link .navbar-menu{background-color:#8aadf4}}html.theme--catppuccin-macchiato .hero.is-link .navbar-item,html.theme--catppuccin-macchiato .hero.is-link .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-macchiato .hero.is-link a.navbar-item:hover,html.theme--catppuccin-macchiato .hero.is-link a.navbar-item.is-active,html.theme--catppuccin-macchiato .hero.is-link .navbar-link:hover,html.theme--catppuccin-macchiato .hero.is-link .navbar-link.is-active{background-color:#739df2;color:#fff}html.theme--catppuccin-macchiato .hero.is-link .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-macchiato .hero.is-link .tabs a:hover{opacity:1}html.theme--catppuccin-macchiato .hero.is-link .tabs li.is-active a{color:#8aadf4 !important;opacity:1}html.theme--catppuccin-macchiato .hero.is-link .tabs.is-boxed a,html.theme--catppuccin-macchiato .hero.is-link .tabs.is-toggle a{color:#fff}html.theme--catppuccin-macchiato .hero.is-link .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .hero.is-link .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .hero.is-link .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-macchiato .hero.is-link .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#8aadf4}html.theme--catppuccin-macchiato .hero.is-link.is-bold{background-image:linear-gradient(141deg, #52a5f9 0%, #8aadf4 71%, #9fadf9 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #52a5f9 0%, #8aadf4 71%, #9fadf9 100%)}}html.theme--catppuccin-macchiato .hero.is-info{background-color:#8bd5ca;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .hero.is-info strong{color:inherit}html.theme--catppuccin-macchiato .hero.is-info .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-info .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-macchiato .hero.is-info .subtitle a:not(.button),html.theme--catppuccin-macchiato .hero.is-info .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .hero.is-info .navbar-menu{background-color:#8bd5ca}}html.theme--catppuccin-macchiato .hero.is-info .navbar-item,html.theme--catppuccin-macchiato .hero.is-info .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-info a.navbar-item:hover,html.theme--catppuccin-macchiato .hero.is-info a.navbar-item.is-active,html.theme--catppuccin-macchiato .hero.is-info .navbar-link:hover,html.theme--catppuccin-macchiato .hero.is-info .navbar-link.is-active{background-color:#78cec1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-info .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-macchiato .hero.is-info .tabs a:hover{opacity:1}html.theme--catppuccin-macchiato .hero.is-info .tabs li.is-active a{color:#8bd5ca !important;opacity:1}html.theme--catppuccin-macchiato .hero.is-info .tabs.is-boxed a,html.theme--catppuccin-macchiato .hero.is-info .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-info .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .hero.is-info .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .hero.is-info .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-macchiato .hero.is-info .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#8bd5ca}html.theme--catppuccin-macchiato .hero.is-info.is-bold{background-image:linear-gradient(141deg, #5bd2ac 0%, #8bd5ca 71%, #9adedf 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #5bd2ac 0%, #8bd5ca 71%, #9adedf 100%)}}html.theme--catppuccin-macchiato .hero.is-success{background-color:#a6da95;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .hero.is-success strong{color:inherit}html.theme--catppuccin-macchiato .hero.is-success .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-success .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-macchiato .hero.is-success .subtitle a:not(.button),html.theme--catppuccin-macchiato .hero.is-success .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .hero.is-success .navbar-menu{background-color:#a6da95}}html.theme--catppuccin-macchiato .hero.is-success .navbar-item,html.theme--catppuccin-macchiato .hero.is-success .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-success a.navbar-item:hover,html.theme--catppuccin-macchiato .hero.is-success a.navbar-item.is-active,html.theme--catppuccin-macchiato .hero.is-success .navbar-link:hover,html.theme--catppuccin-macchiato .hero.is-success .navbar-link.is-active{background-color:#96d382;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-success .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-macchiato .hero.is-success .tabs a:hover{opacity:1}html.theme--catppuccin-macchiato .hero.is-success .tabs li.is-active a{color:#a6da95 !important;opacity:1}html.theme--catppuccin-macchiato .hero.is-success .tabs.is-boxed a,html.theme--catppuccin-macchiato .hero.is-success .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-success .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .hero.is-success .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .hero.is-success .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-macchiato .hero.is-success .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#a6da95}html.theme--catppuccin-macchiato .hero.is-success.is-bold{background-image:linear-gradient(141deg, #94d765 0%, #a6da95 71%, #aae4a5 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #94d765 0%, #a6da95 71%, #aae4a5 100%)}}html.theme--catppuccin-macchiato .hero.is-warning{background-color:#eed49f;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .hero.is-warning strong{color:inherit}html.theme--catppuccin-macchiato .hero.is-warning .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-warning .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-macchiato .hero.is-warning .subtitle a:not(.button),html.theme--catppuccin-macchiato .hero.is-warning .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .hero.is-warning .navbar-menu{background-color:#eed49f}}html.theme--catppuccin-macchiato .hero.is-warning .navbar-item,html.theme--catppuccin-macchiato .hero.is-warning .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-warning a.navbar-item:hover,html.theme--catppuccin-macchiato .hero.is-warning a.navbar-item.is-active,html.theme--catppuccin-macchiato .hero.is-warning .navbar-link:hover,html.theme--catppuccin-macchiato .hero.is-warning .navbar-link.is-active{background-color:#eaca89;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-warning .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-macchiato .hero.is-warning .tabs a:hover{opacity:1}html.theme--catppuccin-macchiato .hero.is-warning .tabs li.is-active a{color:#eed49f !important;opacity:1}html.theme--catppuccin-macchiato .hero.is-warning .tabs.is-boxed a,html.theme--catppuccin-macchiato .hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-warning .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .hero.is-warning .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .hero.is-warning .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-macchiato .hero.is-warning .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#eed49f}html.theme--catppuccin-macchiato .hero.is-warning.is-bold{background-image:linear-gradient(141deg, #efae6b 0%, #eed49f 71%, #f4e9b2 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #efae6b 0%, #eed49f 71%, #f4e9b2 100%)}}html.theme--catppuccin-macchiato .hero.is-danger{background-color:#ed8796;color:#fff}html.theme--catppuccin-macchiato .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .hero.is-danger strong{color:inherit}html.theme--catppuccin-macchiato .hero.is-danger .title{color:#fff}html.theme--catppuccin-macchiato .hero.is-danger .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-macchiato .hero.is-danger .subtitle a:not(.button),html.theme--catppuccin-macchiato .hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .hero.is-danger .navbar-menu{background-color:#ed8796}}html.theme--catppuccin-macchiato .hero.is-danger .navbar-item,html.theme--catppuccin-macchiato .hero.is-danger .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-macchiato .hero.is-danger a.navbar-item:hover,html.theme--catppuccin-macchiato .hero.is-danger a.navbar-item.is-active,html.theme--catppuccin-macchiato .hero.is-danger .navbar-link:hover,html.theme--catppuccin-macchiato .hero.is-danger .navbar-link.is-active{background-color:#ea7183;color:#fff}html.theme--catppuccin-macchiato .hero.is-danger .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-macchiato .hero.is-danger .tabs a:hover{opacity:1}html.theme--catppuccin-macchiato .hero.is-danger .tabs li.is-active a{color:#ed8796 !important;opacity:1}html.theme--catppuccin-macchiato .hero.is-danger .tabs.is-boxed a,html.theme--catppuccin-macchiato .hero.is-danger .tabs.is-toggle a{color:#fff}html.theme--catppuccin-macchiato .hero.is-danger .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .hero.is-danger .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .hero.is-danger .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-macchiato .hero.is-danger .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#ed8796}html.theme--catppuccin-macchiato .hero.is-danger.is-bold{background-image:linear-gradient(141deg, #f05183 0%, #ed8796 71%, #f39c9a 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #f05183 0%, #ed8796 71%, #f39c9a 100%)}}html.theme--catppuccin-macchiato .hero.is-small .hero-body,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.hero .hero-body{padding:1.5rem}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .hero.is-medium .hero-body{padding:9rem 4.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .hero.is-large .hero-body{padding:18rem 6rem}}html.theme--catppuccin-macchiato .hero.is-halfheight .hero-body,html.theme--catppuccin-macchiato .hero.is-fullheight .hero-body,html.theme--catppuccin-macchiato .hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}html.theme--catppuccin-macchiato .hero.is-halfheight .hero-body>.container,html.theme--catppuccin-macchiato .hero.is-fullheight .hero-body>.container,html.theme--catppuccin-macchiato .hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}html.theme--catppuccin-macchiato .hero.is-halfheight{min-height:50vh}html.theme--catppuccin-macchiato .hero.is-fullheight{min-height:100vh}html.theme--catppuccin-macchiato .hero-video{overflow:hidden}html.theme--catppuccin-macchiato .hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}html.theme--catppuccin-macchiato .hero-video.is-transparent{opacity:0.3}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero-video{display:none}}html.theme--catppuccin-macchiato .hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero-buttons .button{display:flex}html.theme--catppuccin-macchiato .hero-buttons .button:not(:last-child){margin-bottom:0.75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .hero-buttons{display:flex;justify-content:center}html.theme--catppuccin-macchiato .hero-buttons .button:not(:last-child){margin-right:1.5rem}}html.theme--catppuccin-macchiato .hero-head,html.theme--catppuccin-macchiato .hero-foot{flex-grow:0;flex-shrink:0}html.theme--catppuccin-macchiato .hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .hero-body{padding:3rem 3rem}}html.theme--catppuccin-macchiato .section{padding:3rem 1.5rem}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .section{padding:3rem 3rem}html.theme--catppuccin-macchiato .section.is-medium{padding:9rem 4.5rem}html.theme--catppuccin-macchiato .section.is-large{padding:18rem 6rem}}html.theme--catppuccin-macchiato .footer{background-color:#1e2030;padding:3rem 1.5rem 6rem}html.theme--catppuccin-macchiato h1 .docs-heading-anchor,html.theme--catppuccin-macchiato h1 .docs-heading-anchor:hover,html.theme--catppuccin-macchiato h1 .docs-heading-anchor:visited,html.theme--catppuccin-macchiato h2 .docs-heading-anchor,html.theme--catppuccin-macchiato h2 .docs-heading-anchor:hover,html.theme--catppuccin-macchiato h2 .docs-heading-anchor:visited,html.theme--catppuccin-macchiato h3 .docs-heading-anchor,html.theme--catppuccin-macchiato h3 .docs-heading-anchor:hover,html.theme--catppuccin-macchiato h3 .docs-heading-anchor:visited,html.theme--catppuccin-macchiato h4 .docs-heading-anchor,html.theme--catppuccin-macchiato h4 .docs-heading-anchor:hover,html.theme--catppuccin-macchiato h4 .docs-heading-anchor:visited,html.theme--catppuccin-macchiato h5 .docs-heading-anchor,html.theme--catppuccin-macchiato h5 .docs-heading-anchor:hover,html.theme--catppuccin-macchiato h5 .docs-heading-anchor:visited,html.theme--catppuccin-macchiato h6 .docs-heading-anchor,html.theme--catppuccin-macchiato h6 .docs-heading-anchor:hover,html.theme--catppuccin-macchiato h6 .docs-heading-anchor:visited{color:#cad3f5}html.theme--catppuccin-macchiato h1 .docs-heading-anchor-permalink,html.theme--catppuccin-macchiato h2 .docs-heading-anchor-permalink,html.theme--catppuccin-macchiato h3 .docs-heading-anchor-permalink,html.theme--catppuccin-macchiato h4 .docs-heading-anchor-permalink,html.theme--catppuccin-macchiato h5 .docs-heading-anchor-permalink,html.theme--catppuccin-macchiato h6 .docs-heading-anchor-permalink{visibility:hidden;vertical-align:middle;margin-left:0.5em;font-size:0.7rem}html.theme--catppuccin-macchiato h1 .docs-heading-anchor-permalink::before,html.theme--catppuccin-macchiato h2 .docs-heading-anchor-permalink::before,html.theme--catppuccin-macchiato h3 .docs-heading-anchor-permalink::before,html.theme--catppuccin-macchiato h4 .docs-heading-anchor-permalink::before,html.theme--catppuccin-macchiato h5 .docs-heading-anchor-permalink::before,html.theme--catppuccin-macchiato h6 .docs-heading-anchor-permalink::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f0c1"}html.theme--catppuccin-macchiato h1:hover .docs-heading-anchor-permalink,html.theme--catppuccin-macchiato h2:hover .docs-heading-anchor-permalink,html.theme--catppuccin-macchiato h3:hover .docs-heading-anchor-permalink,html.theme--catppuccin-macchiato h4:hover .docs-heading-anchor-permalink,html.theme--catppuccin-macchiato h5:hover .docs-heading-anchor-permalink,html.theme--catppuccin-macchiato h6:hover .docs-heading-anchor-permalink{visibility:visible}html.theme--catppuccin-macchiato .docs-light-only{display:none !important}html.theme--catppuccin-macchiato pre{position:relative;overflow:hidden}html.theme--catppuccin-macchiato pre code,html.theme--catppuccin-macchiato pre code.hljs{padding:0 .75rem !important;overflow:auto;display:block}html.theme--catppuccin-macchiato pre code:first-of-type,html.theme--catppuccin-macchiato pre code.hljs:first-of-type{padding-top:0.5rem !important}html.theme--catppuccin-macchiato pre code:last-of-type,html.theme--catppuccin-macchiato pre code.hljs:last-of-type{padding-bottom:0.5rem !important}html.theme--catppuccin-macchiato pre .copy-button{opacity:0.2;transition:opacity 0.2s;position:absolute;right:0em;top:0em;padding:0.5em;width:2.5em;height:2.5em;background:transparent;border:none;font-family:"Font Awesome 6 Free";color:#cad3f5;cursor:pointer;text-align:center}html.theme--catppuccin-macchiato pre .copy-button:focus,html.theme--catppuccin-macchiato pre .copy-button:hover{opacity:1;background:rgba(202,211,245,0.1);color:#8aadf4}html.theme--catppuccin-macchiato pre .copy-button.success{color:#a6da95;opacity:1}html.theme--catppuccin-macchiato pre .copy-button.error{color:#ed8796;opacity:1}html.theme--catppuccin-macchiato pre:hover .copy-button{opacity:1}html.theme--catppuccin-macchiato .admonition{background-color:#1e2030;border-style:solid;border-width:2px;border-color:#b8c0e0;border-radius:4px;font-size:1rem}html.theme--catppuccin-macchiato .admonition strong{color:currentColor}html.theme--catppuccin-macchiato .admonition.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.admonition{font-size:.75rem}html.theme--catppuccin-macchiato .admonition.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .admonition.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .admonition.is-default{background-color:#1e2030;border-color:#b8c0e0}html.theme--catppuccin-macchiato .admonition.is-default>.admonition-header{background-color:rgba(0,0,0,0);color:#b8c0e0}html.theme--catppuccin-macchiato .admonition.is-default>.admonition-body{color:#cad3f5}html.theme--catppuccin-macchiato .admonition.is-info{background-color:#1e2030;border-color:#8bd5ca}html.theme--catppuccin-macchiato .admonition.is-info>.admonition-header{background-color:rgba(0,0,0,0);color:#8bd5ca}html.theme--catppuccin-macchiato .admonition.is-info>.admonition-body{color:#cad3f5}html.theme--catppuccin-macchiato .admonition.is-success{background-color:#1e2030;border-color:#a6da95}html.theme--catppuccin-macchiato .admonition.is-success>.admonition-header{background-color:rgba(0,0,0,0);color:#a6da95}html.theme--catppuccin-macchiato .admonition.is-success>.admonition-body{color:#cad3f5}html.theme--catppuccin-macchiato .admonition.is-warning{background-color:#1e2030;border-color:#eed49f}html.theme--catppuccin-macchiato .admonition.is-warning>.admonition-header{background-color:rgba(0,0,0,0);color:#eed49f}html.theme--catppuccin-macchiato .admonition.is-warning>.admonition-body{color:#cad3f5}html.theme--catppuccin-macchiato .admonition.is-danger{background-color:#1e2030;border-color:#ed8796}html.theme--catppuccin-macchiato .admonition.is-danger>.admonition-header{background-color:rgba(0,0,0,0);color:#ed8796}html.theme--catppuccin-macchiato .admonition.is-danger>.admonition-body{color:#cad3f5}html.theme--catppuccin-macchiato .admonition.is-compat{background-color:#1e2030;border-color:#91d7e3}html.theme--catppuccin-macchiato .admonition.is-compat>.admonition-header{background-color:rgba(0,0,0,0);color:#91d7e3}html.theme--catppuccin-macchiato .admonition.is-compat>.admonition-body{color:#cad3f5}html.theme--catppuccin-macchiato .admonition.is-todo{background-color:#1e2030;border-color:#c6a0f6}html.theme--catppuccin-macchiato .admonition.is-todo>.admonition-header{background-color:rgba(0,0,0,0);color:#c6a0f6}html.theme--catppuccin-macchiato .admonition.is-todo>.admonition-body{color:#cad3f5}html.theme--catppuccin-macchiato .admonition-header{color:#b8c0e0;background-color:rgba(0,0,0,0);align-items:center;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.5rem .75rem;position:relative}html.theme--catppuccin-macchiato .admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;margin-right:.75rem;content:"\f06a"}html.theme--catppuccin-macchiato details.admonition.is-details>.admonition-header{list-style:none}html.theme--catppuccin-macchiato details.admonition.is-details>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f055"}html.theme--catppuccin-macchiato details.admonition.is-details[open]>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f056"}html.theme--catppuccin-macchiato .admonition-body{color:#cad3f5;padding:0.5rem .75rem}html.theme--catppuccin-macchiato .admonition-body pre{background-color:#1e2030}html.theme--catppuccin-macchiato .admonition-body code{background-color:#1e2030}html.theme--catppuccin-macchiato .docstring{margin-bottom:1em;background-color:rgba(0,0,0,0);border:2px solid #5b6078;border-radius:4px;box-shadow:none;max-width:100%}html.theme--catppuccin-macchiato .docstring>header{cursor:pointer;display:flex;flex-grow:1;align-items:stretch;padding:0.5rem .75rem;background-color:#1e2030;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);box-shadow:none;border-bottom:1px solid #5b6078;overflow:auto}html.theme--catppuccin-macchiato .docstring>header code{background-color:transparent}html.theme--catppuccin-macchiato .docstring>header .docstring-article-toggle-button{min-width:1.1rem;padding:0.2rem 0.2rem 0.2rem 0}html.theme--catppuccin-macchiato .docstring>header .docstring-binding{margin-right:0.3em}html.theme--catppuccin-macchiato .docstring>header .docstring-category{margin-left:0.3em}html.theme--catppuccin-macchiato .docstring>section{position:relative;padding:.75rem .75rem;border-bottom:1px solid #5b6078}html.theme--catppuccin-macchiato .docstring>section:last-child{border-bottom:none}html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink{transition:opacity 0.3s;opacity:0;position:absolute;right:.375rem;bottom:.375rem}html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink:focus{opacity:1 !important}html.theme--catppuccin-macchiato .docstring:hover>section>a.docs-sourcelink{opacity:0.2}html.theme--catppuccin-macchiato .docstring:focus-within>section>a.docs-sourcelink{opacity:0.2}html.theme--catppuccin-macchiato .docstring>section:hover a.docs-sourcelink{opacity:1}html.theme--catppuccin-macchiato .documenter-example-output{background-color:#24273a}html.theme--catppuccin-macchiato .outdated-warning-overlay{position:fixed;top:0;left:0;right:0;box-shadow:0 0 10px rgba(0,0,0,0.3);z-index:999;background-color:#1e2030;color:#cad3f5;border-bottom:3px solid rgba(0,0,0,0);padding:10px 35px;text-align:center;font-size:15px}html.theme--catppuccin-macchiato .outdated-warning-overlay .outdated-warning-closer{position:absolute;top:calc(50% - 10px);right:18px;cursor:pointer;width:12px}html.theme--catppuccin-macchiato .outdated-warning-overlay a{color:#8aadf4}html.theme--catppuccin-macchiato .outdated-warning-overlay a:hover{color:#91d7e3}html.theme--catppuccin-macchiato .content pre{border:2px solid #5b6078;border-radius:4px}html.theme--catppuccin-macchiato .content code{font-weight:inherit}html.theme--catppuccin-macchiato .content a code{color:#8aadf4}html.theme--catppuccin-macchiato .content a:hover code{color:#91d7e3}html.theme--catppuccin-macchiato .content h1 code,html.theme--catppuccin-macchiato .content h2 code,html.theme--catppuccin-macchiato .content h3 code,html.theme--catppuccin-macchiato .content h4 code,html.theme--catppuccin-macchiato .content h5 code,html.theme--catppuccin-macchiato .content h6 code{color:#cad3f5}html.theme--catppuccin-macchiato .content table{display:block;width:initial;max-width:100%;overflow-x:auto}html.theme--catppuccin-macchiato .content blockquote>ul:first-child,html.theme--catppuccin-macchiato .content blockquote>ol:first-child,html.theme--catppuccin-macchiato .content .admonition-body>ul:first-child,html.theme--catppuccin-macchiato .content .admonition-body>ol:first-child{margin-top:0}html.theme--catppuccin-macchiato pre,html.theme--catppuccin-macchiato code{font-variant-ligatures:no-contextual}html.theme--catppuccin-macchiato .breadcrumb a.is-disabled{cursor:default;pointer-events:none}html.theme--catppuccin-macchiato .breadcrumb a.is-disabled,html.theme--catppuccin-macchiato .breadcrumb a.is-disabled:hover{color:#b5c1f1}html.theme--catppuccin-macchiato .hljs{background:initial !important}html.theme--catppuccin-macchiato .katex .katex-mathml{top:0;right:0}html.theme--catppuccin-macchiato .katex-display,html.theme--catppuccin-macchiato mjx-container,html.theme--catppuccin-macchiato .MathJax_Display{margin:0.5em 0 !important}html.theme--catppuccin-macchiato html{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto}html.theme--catppuccin-macchiato li.no-marker{list-style:none}html.theme--catppuccin-macchiato #documenter .docs-main>article{overflow-wrap:break-word}html.theme--catppuccin-macchiato #documenter .docs-main>article .math-container{overflow-x:auto;overflow-y:hidden}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato #documenter .docs-main{max-width:52rem;margin-left:20rem;padding-right:1rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato #documenter .docs-main{width:100%}html.theme--catppuccin-macchiato #documenter .docs-main>article{max-width:52rem;margin-left:auto;margin-right:auto;margin-bottom:1rem;padding:0 1rem}html.theme--catppuccin-macchiato #documenter .docs-main>header,html.theme--catppuccin-macchiato #documenter .docs-main>nav{max-width:100%;width:100%;margin:0}}html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar{background-color:#24273a;border-bottom:1px solid #5b6078;z-index:2;min-height:4rem;margin-bottom:1rem;display:flex}html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar .breadcrumb{flex-grow:1;overflow-x:hidden}html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar .docs-sidebar-button{display:block;font-size:1.5rem;padding-bottom:0.1rem;margin-right:1rem}html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar .docs-right{display:flex;white-space:nowrap;gap:1rem;align-items:center}html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar .docs-right .docs-icon,html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar .docs-right .docs-label{display:inline-block}html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar .docs-right .docs-label{padding:0;margin-left:0.3em}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar .docs-right .docs-navbar-link{margin-left:0.4rem;margin-right:0.4rem}}html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar>*{margin:auto 0}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar{position:sticky;top:0;padding:0 1rem;transition-property:top, box-shadow;-webkit-transition-property:top, box-shadow;transition-duration:0.3s;-webkit-transition-duration:0.3s}html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar.headroom--not-top{box-shadow:.2rem 0rem .4rem #171717;transition-duration:0.7s;-webkit-transition-duration:0.7s}html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom{top:-4.5rem;transition-duration:0.7s;-webkit-transition-duration:0.7s}}html.theme--catppuccin-macchiato #documenter .docs-main section.footnotes{border-top:1px solid #5b6078}html.theme--catppuccin-macchiato #documenter .docs-main section.footnotes li .tag:first-child,html.theme--catppuccin-macchiato #documenter .docs-main section.footnotes li .docstring>section>a.docs-sourcelink:first-child,html.theme--catppuccin-macchiato #documenter .docs-main section.footnotes li .content kbd:first-child,html.theme--catppuccin-macchiato .content #documenter .docs-main section.footnotes li kbd:first-child{margin-right:1em;margin-bottom:0.4em}html.theme--catppuccin-macchiato #documenter .docs-main .docs-footer{display:flex;flex-wrap:wrap;margin-left:0;margin-right:0;border-top:1px solid #5b6078;padding-top:1rem;padding-bottom:1rem}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato #documenter .docs-main .docs-footer{padding-left:1rem;padding-right:1rem}}html.theme--catppuccin-macchiato #documenter .docs-main .docs-footer .docs-footer-nextpage,html.theme--catppuccin-macchiato #documenter .docs-main .docs-footer .docs-footer-prevpage{flex-grow:1}html.theme--catppuccin-macchiato #documenter .docs-main .docs-footer .docs-footer-nextpage{text-align:right}html.theme--catppuccin-macchiato #documenter .docs-main .docs-footer .flexbox-break{flex-basis:100%;height:0}html.theme--catppuccin-macchiato #documenter .docs-main .docs-footer .footer-message{font-size:0.8em;margin:0.5em auto 0 auto;text-align:center}html.theme--catppuccin-macchiato #documenter .docs-sidebar{display:flex;flex-direction:column;color:#cad3f5;background-color:#1e2030;border-right:1px solid #5b6078;padding:0;flex:0 0 18rem;z-index:5;font-size:1rem;position:fixed;left:-18rem;width:18rem;height:100%;transition:left 0.3s}html.theme--catppuccin-macchiato #documenter .docs-sidebar.visible{left:0;box-shadow:.4rem 0rem .8rem #171717}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato #documenter .docs-sidebar.visible{box-shadow:none}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato #documenter .docs-sidebar{left:0;top:0}}html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo{margin-top:1rem;padding:0 1rem}html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img{max-height:6rem;margin:auto}html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-package-name{flex-shrink:0;font-size:1.5rem;font-weight:700;text-align:center;white-space:nowrap;overflow:hidden;padding:0.5rem 0}html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-package-name .docs-autofit{max-width:16.2rem}html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-package-name a,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-package-name a:hover{color:#cad3f5}html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-version-selector{border-top:1px solid #5b6078;display:none;padding:0.5rem}html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-version-selector.visible{display:flex}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu{flex-grow:1;user-select:none;border-top:1px solid #5b6078;padding-bottom:1.5rem}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu>li>.tocitem{font-weight:bold}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu>li li{font-size:.95rem;margin-left:1em;border-left:1px solid #5b6078}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu input.collapse-toggle{display:none}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu ul.collapsed{display:none}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu input:checked~ul.collapsed{display:block}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu label.tocitem{display:flex}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label{flex-grow:2}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron{display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;font-size:.75rem;margin-left:1rem;margin-top:auto;margin-bottom:auto}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f054"}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu input:checked~label.tocitem .docs-chevron::before{content:"\f078"}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu .tocitem{display:block;padding:0.5rem 0.5rem}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu .tocitem,html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu .tocitem:hover{color:#cad3f5;background:#1e2030}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu a.tocitem:hover,html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu label.tocitem:hover{color:#cad3f5;background-color:#26283d}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu li.is-active{border-top:1px solid #5b6078;border-bottom:1px solid #5b6078;background-color:#181926}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem,html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover{background-color:#181926;color:#cad3f5}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover{background-color:#26283d;color:#cad3f5}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu>li.is-active:first-child{border-top:none}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu ul.internal{margin:0 0.5rem 0.5rem;border-top:1px solid #5b6078}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu ul.internal li{font-size:.85rem;border-left:none;margin-left:0;margin-top:0.5rem}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem{width:100%;padding:0}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before{content:"⚬";margin-right:0.4em}html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search{margin:auto;margin-top:0.5rem;margin-bottom:0.5rem}html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input{width:14.4rem}html.theme--catppuccin-macchiato #documenter .docs-sidebar #documenter-search-query{color:#868c98;width:14.4rem;box-shadow:inset 0 1px 2px rgba(10,10,10,0.1)}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar{width:.3rem;background:none}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#2e3149}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover{background:#3d4162}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato #documenter .docs-sidebar{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--catppuccin-macchiato #documenter .docs-sidebar::-webkit-scrollbar{width:.3rem;background:none}html.theme--catppuccin-macchiato #documenter .docs-sidebar::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#2e3149}html.theme--catppuccin-macchiato #documenter .docs-sidebar::-webkit-scrollbar-thumb:hover{background:#3d4162}}html.theme--catppuccin-macchiato kbd.search-modal-key-hints{border-radius:0.25rem;border:1px solid rgba(245,245,245,0.6);box-shadow:0 2px 0 1px rgba(245,245,245,0.6);cursor:default;font-size:0.9rem;line-height:1.5;min-width:0.75rem;text-align:center;padding:0.1rem 0.3rem;position:relative;top:-1px}html.theme--catppuccin-macchiato .search-min-width-50{min-width:50%}html.theme--catppuccin-macchiato .search-min-height-100{min-height:100%}html.theme--catppuccin-macchiato .search-modal-card-body{max-height:calc(100vh - 15rem)}html.theme--catppuccin-macchiato .search-result-link{border-radius:0.7em;transition:all 300ms}html.theme--catppuccin-macchiato .search-result-link:hover,html.theme--catppuccin-macchiato .search-result-link:focus{background-color:rgba(0,128,128,0.1)}html.theme--catppuccin-macchiato .search-result-link .property-search-result-badge,html.theme--catppuccin-macchiato .search-result-link .search-filter{transition:all 300ms}html.theme--catppuccin-macchiato .property-search-result-badge,html.theme--catppuccin-macchiato .search-filter{padding:0.15em 0.5em;font-size:0.8em;font-style:italic;text-transform:none !important;line-height:1.5;color:#f5f5f5;background-color:rgba(51,65,85,0.501961);border-radius:0.6rem}html.theme--catppuccin-macchiato .search-result-link:hover .property-search-result-badge,html.theme--catppuccin-macchiato .search-result-link:hover .search-filter,html.theme--catppuccin-macchiato .search-result-link:focus .property-search-result-badge,html.theme--catppuccin-macchiato .search-result-link:focus .search-filter{color:#333;background-color:#f1f5f9}html.theme--catppuccin-macchiato .search-filter{color:#333;background-color:#f5f5f5;transition:all 300ms}html.theme--catppuccin-macchiato .search-filter:hover,html.theme--catppuccin-macchiato .search-filter:focus{color:#333}html.theme--catppuccin-macchiato .search-filter-selected{color:#363a4f;background-color:#b7bdf8}html.theme--catppuccin-macchiato .search-filter-selected:hover,html.theme--catppuccin-macchiato .search-filter-selected:focus{color:#363a4f}html.theme--catppuccin-macchiato .search-result-highlight{background-color:#ffdd57;color:black}html.theme--catppuccin-macchiato .search-divider{border-bottom:1px solid #5b6078}html.theme--catppuccin-macchiato .search-result-title{width:85%;color:#f5f5f5}html.theme--catppuccin-macchiato .search-result-code-title{font-size:0.875rem;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--catppuccin-macchiato #search-modal .modal-card-body::-webkit-scrollbar,html.theme--catppuccin-macchiato #search-modal .filter-tabs::-webkit-scrollbar{height:10px;width:10px;background-color:transparent}html.theme--catppuccin-macchiato #search-modal .modal-card-body::-webkit-scrollbar-thumb,html.theme--catppuccin-macchiato #search-modal .filter-tabs::-webkit-scrollbar-thumb{background-color:gray;border-radius:1rem}html.theme--catppuccin-macchiato #search-modal .modal-card-body::-webkit-scrollbar-track,html.theme--catppuccin-macchiato #search-modal .filter-tabs::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.6);background-color:transparent}html.theme--catppuccin-macchiato .w-100{width:100%}html.theme--catppuccin-macchiato .gap-2{gap:0.5rem}html.theme--catppuccin-macchiato .gap-4{gap:1rem}html.theme--catppuccin-macchiato .gap-8{gap:2rem}html.theme--catppuccin-macchiato{background-color:#24273a;font-size:16px;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--catppuccin-macchiato a{transition:all 200ms ease}html.theme--catppuccin-macchiato .label{color:#cad3f5}html.theme--catppuccin-macchiato .button,html.theme--catppuccin-macchiato .control.has-icons-left .icon,html.theme--catppuccin-macchiato .control.has-icons-right .icon,html.theme--catppuccin-macchiato .input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-macchiato .pagination-ellipsis,html.theme--catppuccin-macchiato .pagination-link,html.theme--catppuccin-macchiato .pagination-next,html.theme--catppuccin-macchiato .pagination-previous,html.theme--catppuccin-macchiato .select,html.theme--catppuccin-macchiato .select select,html.theme--catppuccin-macchiato .textarea{height:2.5em;color:#cad3f5}html.theme--catppuccin-macchiato .input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-macchiato .textarea{transition:all 200ms ease;box-shadow:none;border-width:1px;padding-left:1em;padding-right:1em;color:#cad3f5}html.theme--catppuccin-macchiato .select:after,html.theme--catppuccin-macchiato .select select{border-width:1px}html.theme--catppuccin-macchiato .menu-list a{transition:all 300ms ease}html.theme--catppuccin-macchiato .modal-card-foot,html.theme--catppuccin-macchiato .modal-card-head{border-color:#5b6078}html.theme--catppuccin-macchiato .navbar{border-radius:.4em}html.theme--catppuccin-macchiato .navbar.is-transparent{background:none}html.theme--catppuccin-macchiato .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#8aadf4}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .navbar .navbar-menu{background-color:#8aadf4;border-radius:0 0 .4em .4em}}html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink:not(body){color:#363a4f}html.theme--catppuccin-macchiato .tag.is-link:not(body),html.theme--catppuccin-macchiato .docstring>section>a.is-link.docs-sourcelink:not(body),html.theme--catppuccin-macchiato .content kbd.is-link:not(body){color:#363a4f}html.theme--catppuccin-macchiato .ansi span.sgr1{font-weight:bolder}html.theme--catppuccin-macchiato .ansi span.sgr2{font-weight:lighter}html.theme--catppuccin-macchiato .ansi span.sgr3{font-style:italic}html.theme--catppuccin-macchiato .ansi span.sgr4{text-decoration:underline}html.theme--catppuccin-macchiato .ansi span.sgr7{color:#24273a;background-color:#cad3f5}html.theme--catppuccin-macchiato .ansi span.sgr8{color:transparent}html.theme--catppuccin-macchiato .ansi span.sgr8 span{color:transparent}html.theme--catppuccin-macchiato .ansi span.sgr9{text-decoration:line-through}html.theme--catppuccin-macchiato .ansi span.sgr30{color:#494d64}html.theme--catppuccin-macchiato .ansi span.sgr31{color:#ed8796}html.theme--catppuccin-macchiato .ansi span.sgr32{color:#a6da95}html.theme--catppuccin-macchiato .ansi span.sgr33{color:#eed49f}html.theme--catppuccin-macchiato .ansi span.sgr34{color:#8aadf4}html.theme--catppuccin-macchiato .ansi span.sgr35{color:#f5bde6}html.theme--catppuccin-macchiato .ansi span.sgr36{color:#8bd5ca}html.theme--catppuccin-macchiato .ansi span.sgr37{color:#b8c0e0}html.theme--catppuccin-macchiato .ansi span.sgr40{background-color:#494d64}html.theme--catppuccin-macchiato .ansi span.sgr41{background-color:#ed8796}html.theme--catppuccin-macchiato .ansi span.sgr42{background-color:#a6da95}html.theme--catppuccin-macchiato .ansi span.sgr43{background-color:#eed49f}html.theme--catppuccin-macchiato .ansi span.sgr44{background-color:#8aadf4}html.theme--catppuccin-macchiato .ansi span.sgr45{background-color:#f5bde6}html.theme--catppuccin-macchiato .ansi span.sgr46{background-color:#8bd5ca}html.theme--catppuccin-macchiato .ansi span.sgr47{background-color:#b8c0e0}html.theme--catppuccin-macchiato .ansi span.sgr90{color:#5b6078}html.theme--catppuccin-macchiato .ansi span.sgr91{color:#ed8796}html.theme--catppuccin-macchiato .ansi span.sgr92{color:#a6da95}html.theme--catppuccin-macchiato .ansi span.sgr93{color:#eed49f}html.theme--catppuccin-macchiato .ansi span.sgr94{color:#8aadf4}html.theme--catppuccin-macchiato .ansi span.sgr95{color:#f5bde6}html.theme--catppuccin-macchiato .ansi span.sgr96{color:#8bd5ca}html.theme--catppuccin-macchiato .ansi span.sgr97{color:#a5adcb}html.theme--catppuccin-macchiato .ansi span.sgr100{background-color:#5b6078}html.theme--catppuccin-macchiato .ansi span.sgr101{background-color:#ed8796}html.theme--catppuccin-macchiato .ansi span.sgr102{background-color:#a6da95}html.theme--catppuccin-macchiato .ansi span.sgr103{background-color:#eed49f}html.theme--catppuccin-macchiato .ansi span.sgr104{background-color:#8aadf4}html.theme--catppuccin-macchiato .ansi span.sgr105{background-color:#f5bde6}html.theme--catppuccin-macchiato .ansi span.sgr106{background-color:#8bd5ca}html.theme--catppuccin-macchiato .ansi span.sgr107{background-color:#a5adcb}html.theme--catppuccin-macchiato code.language-julia-repl>span.hljs-meta{color:#a6da95;font-weight:bolder}html.theme--catppuccin-macchiato code .hljs{color:#cad3f5;background:#24273a}html.theme--catppuccin-macchiato code .hljs-keyword{color:#c6a0f6}html.theme--catppuccin-macchiato code .hljs-built_in{color:#ed8796}html.theme--catppuccin-macchiato code .hljs-type{color:#eed49f}html.theme--catppuccin-macchiato code .hljs-literal{color:#f5a97f}html.theme--catppuccin-macchiato code .hljs-number{color:#f5a97f}html.theme--catppuccin-macchiato code .hljs-operator{color:#8bd5ca}html.theme--catppuccin-macchiato code .hljs-punctuation{color:#b8c0e0}html.theme--catppuccin-macchiato code .hljs-property{color:#8bd5ca}html.theme--catppuccin-macchiato code .hljs-regexp{color:#f5bde6}html.theme--catppuccin-macchiato code .hljs-string{color:#a6da95}html.theme--catppuccin-macchiato code .hljs-char.escape_{color:#a6da95}html.theme--catppuccin-macchiato code .hljs-subst{color:#a5adcb}html.theme--catppuccin-macchiato code .hljs-symbol{color:#f0c6c6}html.theme--catppuccin-macchiato code .hljs-variable{color:#c6a0f6}html.theme--catppuccin-macchiato code .hljs-variable.language_{color:#c6a0f6}html.theme--catppuccin-macchiato code .hljs-variable.constant_{color:#f5a97f}html.theme--catppuccin-macchiato code .hljs-title{color:#8aadf4}html.theme--catppuccin-macchiato code .hljs-title.class_{color:#eed49f}html.theme--catppuccin-macchiato code .hljs-title.function_{color:#8aadf4}html.theme--catppuccin-macchiato code .hljs-params{color:#cad3f5}html.theme--catppuccin-macchiato code .hljs-comment{color:#5b6078}html.theme--catppuccin-macchiato code .hljs-doctag{color:#ed8796}html.theme--catppuccin-macchiato code .hljs-meta{color:#f5a97f}html.theme--catppuccin-macchiato code .hljs-section{color:#8aadf4}html.theme--catppuccin-macchiato code .hljs-tag{color:#a5adcb}html.theme--catppuccin-macchiato code .hljs-name{color:#c6a0f6}html.theme--catppuccin-macchiato code .hljs-attr{color:#8aadf4}html.theme--catppuccin-macchiato code .hljs-attribute{color:#a6da95}html.theme--catppuccin-macchiato code .hljs-bullet{color:#8bd5ca}html.theme--catppuccin-macchiato code .hljs-code{color:#a6da95}html.theme--catppuccin-macchiato code .hljs-emphasis{color:#ed8796;font-style:italic}html.theme--catppuccin-macchiato code .hljs-strong{color:#ed8796;font-weight:bold}html.theme--catppuccin-macchiato code .hljs-formula{color:#8bd5ca}html.theme--catppuccin-macchiato code .hljs-link{color:#7dc4e4;font-style:italic}html.theme--catppuccin-macchiato code .hljs-quote{color:#a6da95;font-style:italic}html.theme--catppuccin-macchiato code .hljs-selector-tag{color:#eed49f}html.theme--catppuccin-macchiato code .hljs-selector-id{color:#8aadf4}html.theme--catppuccin-macchiato code .hljs-selector-class{color:#8bd5ca}html.theme--catppuccin-macchiato code .hljs-selector-attr{color:#c6a0f6}html.theme--catppuccin-macchiato code .hljs-selector-pseudo{color:#8bd5ca}html.theme--catppuccin-macchiato code .hljs-template-tag{color:#f0c6c6}html.theme--catppuccin-macchiato code .hljs-template-variable{color:#f0c6c6}html.theme--catppuccin-macchiato code .hljs-addition{color:#a6da95;background:rgba(166,227,161,0.15)}html.theme--catppuccin-macchiato code .hljs-deletion{color:#ed8796;background:rgba(243,139,168,0.15)}html.theme--catppuccin-macchiato .search-result-link{border-radius:0.7em;transition:all 300ms}html.theme--catppuccin-macchiato .search-result-link:hover,html.theme--catppuccin-macchiato .search-result-link:focus{background-color:#363a4f}html.theme--catppuccin-macchiato .search-result-link .property-search-result-badge,html.theme--catppuccin-macchiato .search-result-link .search-filter{transition:all 300ms}html.theme--catppuccin-macchiato .search-result-link:hover .property-search-result-badge,html.theme--catppuccin-macchiato .search-result-link:hover .search-filter,html.theme--catppuccin-macchiato .search-result-link:focus .property-search-result-badge,html.theme--catppuccin-macchiato .search-result-link:focus .search-filter{color:#363a4f !important;background-color:#b7bdf8 !important}html.theme--catppuccin-macchiato .search-result-title{color:#cad3f5}html.theme--catppuccin-macchiato .search-result-highlight{background-color:#ed8796;color:#1e2030}html.theme--catppuccin-macchiato .search-divider{border-bottom:1px solid #5e6d6f50}html.theme--catppuccin-macchiato .w-100{width:100%}html.theme--catppuccin-macchiato .gap-2{gap:0.5rem}html.theme--catppuccin-macchiato .gap-4{gap:1rem} diff --git a/v0.5.0/assets/themes/catppuccin-mocha.css b/v0.5.0/assets/themes/catppuccin-mocha.css new file mode 100644 index 00000000..8b826525 --- /dev/null +++ b/v0.5.0/assets/themes/catppuccin-mocha.css @@ -0,0 +1 @@ +html.theme--catppuccin-mocha .pagination-previous,html.theme--catppuccin-mocha .pagination-next,html.theme--catppuccin-mocha .pagination-link,html.theme--catppuccin-mocha .pagination-ellipsis,html.theme--catppuccin-mocha .file-cta,html.theme--catppuccin-mocha .file-name,html.theme--catppuccin-mocha .select select,html.theme--catppuccin-mocha .textarea,html.theme--catppuccin-mocha .input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-mocha .button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:.4em;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.5em - 1px);padding-left:calc(0.75em - 1px);padding-right:calc(0.75em - 1px);padding-top:calc(0.5em - 1px);position:relative;vertical-align:top}html.theme--catppuccin-mocha .pagination-previous:focus,html.theme--catppuccin-mocha .pagination-next:focus,html.theme--catppuccin-mocha .pagination-link:focus,html.theme--catppuccin-mocha .pagination-ellipsis:focus,html.theme--catppuccin-mocha .file-cta:focus,html.theme--catppuccin-mocha .file-name:focus,html.theme--catppuccin-mocha .select select:focus,html.theme--catppuccin-mocha .textarea:focus,html.theme--catppuccin-mocha .input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input:focus,html.theme--catppuccin-mocha .button:focus,html.theme--catppuccin-mocha .is-focused.pagination-previous,html.theme--catppuccin-mocha .is-focused.pagination-next,html.theme--catppuccin-mocha .is-focused.pagination-link,html.theme--catppuccin-mocha .is-focused.pagination-ellipsis,html.theme--catppuccin-mocha .is-focused.file-cta,html.theme--catppuccin-mocha .is-focused.file-name,html.theme--catppuccin-mocha .select select.is-focused,html.theme--catppuccin-mocha .is-focused.textarea,html.theme--catppuccin-mocha .is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .is-focused.button,html.theme--catppuccin-mocha .pagination-previous:active,html.theme--catppuccin-mocha .pagination-next:active,html.theme--catppuccin-mocha .pagination-link:active,html.theme--catppuccin-mocha .pagination-ellipsis:active,html.theme--catppuccin-mocha .file-cta:active,html.theme--catppuccin-mocha .file-name:active,html.theme--catppuccin-mocha .select select:active,html.theme--catppuccin-mocha .textarea:active,html.theme--catppuccin-mocha .input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input:active,html.theme--catppuccin-mocha .button:active,html.theme--catppuccin-mocha .is-active.pagination-previous,html.theme--catppuccin-mocha .is-active.pagination-next,html.theme--catppuccin-mocha .is-active.pagination-link,html.theme--catppuccin-mocha .is-active.pagination-ellipsis,html.theme--catppuccin-mocha .is-active.file-cta,html.theme--catppuccin-mocha .is-active.file-name,html.theme--catppuccin-mocha .select select.is-active,html.theme--catppuccin-mocha .is-active.textarea,html.theme--catppuccin-mocha .is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-mocha .is-active.button{outline:none}html.theme--catppuccin-mocha .pagination-previous[disabled],html.theme--catppuccin-mocha .pagination-next[disabled],html.theme--catppuccin-mocha .pagination-link[disabled],html.theme--catppuccin-mocha .pagination-ellipsis[disabled],html.theme--catppuccin-mocha .file-cta[disabled],html.theme--catppuccin-mocha .file-name[disabled],html.theme--catppuccin-mocha .select select[disabled],html.theme--catppuccin-mocha .textarea[disabled],html.theme--catppuccin-mocha .input[disabled],html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input[disabled],html.theme--catppuccin-mocha .button[disabled],fieldset[disabled] html.theme--catppuccin-mocha .pagination-previous,html.theme--catppuccin-mocha fieldset[disabled] .pagination-previous,fieldset[disabled] html.theme--catppuccin-mocha .pagination-next,html.theme--catppuccin-mocha fieldset[disabled] .pagination-next,fieldset[disabled] html.theme--catppuccin-mocha .pagination-link,html.theme--catppuccin-mocha fieldset[disabled] .pagination-link,fieldset[disabled] html.theme--catppuccin-mocha .pagination-ellipsis,html.theme--catppuccin-mocha fieldset[disabled] .pagination-ellipsis,fieldset[disabled] html.theme--catppuccin-mocha .file-cta,html.theme--catppuccin-mocha fieldset[disabled] .file-cta,fieldset[disabled] html.theme--catppuccin-mocha .file-name,html.theme--catppuccin-mocha fieldset[disabled] .file-name,fieldset[disabled] html.theme--catppuccin-mocha .select select,fieldset[disabled] html.theme--catppuccin-mocha .textarea,fieldset[disabled] html.theme--catppuccin-mocha .input,fieldset[disabled] html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-mocha fieldset[disabled] .select select,html.theme--catppuccin-mocha .select fieldset[disabled] select,html.theme--catppuccin-mocha fieldset[disabled] .textarea,html.theme--catppuccin-mocha fieldset[disabled] .input,html.theme--catppuccin-mocha fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-mocha #documenter .docs-sidebar fieldset[disabled] form.docs-search>input,fieldset[disabled] html.theme--catppuccin-mocha .button,html.theme--catppuccin-mocha fieldset[disabled] .button{cursor:not-allowed}html.theme--catppuccin-mocha .tabs,html.theme--catppuccin-mocha .pagination-previous,html.theme--catppuccin-mocha .pagination-next,html.theme--catppuccin-mocha .pagination-link,html.theme--catppuccin-mocha .pagination-ellipsis,html.theme--catppuccin-mocha .breadcrumb,html.theme--catppuccin-mocha .file,html.theme--catppuccin-mocha .button,.is-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.theme--catppuccin-mocha .navbar-link:not(.is-arrowless)::after,html.theme--catppuccin-mocha .select:not(.is-multiple):not(.is-loading)::after{border:3px solid rgba(0,0,0,0);border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:0.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:0.625em}html.theme--catppuccin-mocha .admonition:not(:last-child),html.theme--catppuccin-mocha .tabs:not(:last-child),html.theme--catppuccin-mocha .pagination:not(:last-child),html.theme--catppuccin-mocha .message:not(:last-child),html.theme--catppuccin-mocha .level:not(:last-child),html.theme--catppuccin-mocha .breadcrumb:not(:last-child),html.theme--catppuccin-mocha .block:not(:last-child),html.theme--catppuccin-mocha .title:not(:last-child),html.theme--catppuccin-mocha .subtitle:not(:last-child),html.theme--catppuccin-mocha .table-container:not(:last-child),html.theme--catppuccin-mocha .table:not(:last-child),html.theme--catppuccin-mocha .progress:not(:last-child),html.theme--catppuccin-mocha .notification:not(:last-child),html.theme--catppuccin-mocha .content:not(:last-child),html.theme--catppuccin-mocha .box:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-mocha .modal-close,html.theme--catppuccin-mocha .delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,0.2);border:none;border-radius:9999px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}html.theme--catppuccin-mocha .modal-close::before,html.theme--catppuccin-mocha .delete::before,html.theme--catppuccin-mocha .modal-close::after,html.theme--catppuccin-mocha .delete::after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--catppuccin-mocha .modal-close::before,html.theme--catppuccin-mocha .delete::before{height:2px;width:50%}html.theme--catppuccin-mocha .modal-close::after,html.theme--catppuccin-mocha .delete::after{height:50%;width:2px}html.theme--catppuccin-mocha .modal-close:hover,html.theme--catppuccin-mocha .delete:hover,html.theme--catppuccin-mocha .modal-close:focus,html.theme--catppuccin-mocha .delete:focus{background-color:rgba(10,10,10,0.3)}html.theme--catppuccin-mocha .modal-close:active,html.theme--catppuccin-mocha .delete:active{background-color:rgba(10,10,10,0.4)}html.theme--catppuccin-mocha .is-small.modal-close,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.modal-close,html.theme--catppuccin-mocha .is-small.delete,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}html.theme--catppuccin-mocha .is-medium.modal-close,html.theme--catppuccin-mocha .is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}html.theme--catppuccin-mocha .is-large.modal-close,html.theme--catppuccin-mocha .is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}html.theme--catppuccin-mocha .control.is-loading::after,html.theme--catppuccin-mocha .select.is-loading::after,html.theme--catppuccin-mocha .loader,html.theme--catppuccin-mocha .button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #7f849c;border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}html.theme--catppuccin-mocha .hero-video,html.theme--catppuccin-mocha .modal-background,html.theme--catppuccin-mocha .modal,html.theme--catppuccin-mocha .image.is-square img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--catppuccin-mocha .image.is-square .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--catppuccin-mocha .image.is-1by1 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--catppuccin-mocha .image.is-1by1 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--catppuccin-mocha .image.is-5by4 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--catppuccin-mocha .image.is-5by4 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--catppuccin-mocha .image.is-4by3 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--catppuccin-mocha .image.is-4by3 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--catppuccin-mocha .image.is-3by2 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--catppuccin-mocha .image.is-3by2 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--catppuccin-mocha .image.is-5by3 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--catppuccin-mocha .image.is-5by3 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--catppuccin-mocha .image.is-16by9 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--catppuccin-mocha .image.is-16by9 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--catppuccin-mocha .image.is-2by1 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--catppuccin-mocha .image.is-2by1 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--catppuccin-mocha .image.is-3by1 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--catppuccin-mocha .image.is-3by1 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--catppuccin-mocha .image.is-4by5 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--catppuccin-mocha .image.is-4by5 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--catppuccin-mocha .image.is-3by4 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--catppuccin-mocha .image.is-3by4 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--catppuccin-mocha .image.is-2by3 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--catppuccin-mocha .image.is-2by3 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--catppuccin-mocha .image.is-3by5 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--catppuccin-mocha .image.is-3by5 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--catppuccin-mocha .image.is-9by16 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--catppuccin-mocha .image.is-9by16 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--catppuccin-mocha .image.is-1by2 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--catppuccin-mocha .image.is-1by2 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--catppuccin-mocha .image.is-1by3 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--catppuccin-mocha .image.is-1by3 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio,.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}html.theme--catppuccin-mocha .navbar-burger{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#f5f5f5 !important}a.has-text-light:hover,a.has-text-light:focus{color:#dbdbdb !important}.has-background-light{background-color:#f5f5f5 !important}.has-text-dark{color:#313244 !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#1c1c26 !important}.has-background-dark{background-color:#313244 !important}.has-text-primary{color:#89b4fa !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#5895f8 !important}.has-background-primary{background-color:#89b4fa !important}.has-text-primary-light{color:#ebf3fe !important}a.has-text-primary-light:hover,a.has-text-primary-light:focus{color:#bbd3fc !important}.has-background-primary-light{background-color:#ebf3fe !important}.has-text-primary-dark{color:#063c93 !important}a.has-text-primary-dark:hover,a.has-text-primary-dark:focus{color:#0850c4 !important}.has-background-primary-dark{background-color:#063c93 !important}.has-text-link{color:#89b4fa !important}a.has-text-link:hover,a.has-text-link:focus{color:#5895f8 !important}.has-background-link{background-color:#89b4fa !important}.has-text-link-light{color:#ebf3fe !important}a.has-text-link-light:hover,a.has-text-link-light:focus{color:#bbd3fc !important}.has-background-link-light{background-color:#ebf3fe !important}.has-text-link-dark{color:#063c93 !important}a.has-text-link-dark:hover,a.has-text-link-dark:focus{color:#0850c4 !important}.has-background-link-dark{background-color:#063c93 !important}.has-text-info{color:#94e2d5 !important}a.has-text-info:hover,a.has-text-info:focus{color:#6cd7c5 !important}.has-background-info{background-color:#94e2d5 !important}.has-text-info-light{color:#effbf9 !important}a.has-text-info-light:hover,a.has-text-info-light:focus{color:#c7f0e9 !important}.has-background-info-light{background-color:#effbf9 !important}.has-text-info-dark{color:#207466 !important}a.has-text-info-dark:hover,a.has-text-info-dark:focus{color:#2a9c89 !important}.has-background-info-dark{background-color:#207466 !important}.has-text-success{color:#a6e3a1 !important}a.has-text-success:hover,a.has-text-success:focus{color:#81d77a !important}.has-background-success{background-color:#a6e3a1 !important}.has-text-success-light{color:#f0faef !important}a.has-text-success-light:hover,a.has-text-success-light:focus{color:#cbefc8 !important}.has-background-success-light{background-color:#f0faef !important}.has-text-success-dark{color:#287222 !important}a.has-text-success-dark:hover,a.has-text-success-dark:focus{color:#36992e !important}.has-background-success-dark{background-color:#287222 !important}.has-text-warning{color:#f9e2af !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#f5d180 !important}.has-background-warning{background-color:#f9e2af !important}.has-text-warning-light{color:#fef8ec !important}a.has-text-warning-light:hover,a.has-text-warning-light:focus{color:#fae7bd !important}.has-background-warning-light{background-color:#fef8ec !important}.has-text-warning-dark{color:#8a620a !important}a.has-text-warning-dark:hover,a.has-text-warning-dark:focus{color:#b9840e !important}.has-background-warning-dark{background-color:#8a620a !important}.has-text-danger{color:#f38ba8 !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#ee5d85 !important}.has-background-danger{background-color:#f38ba8 !important}.has-text-danger-light{color:#fdedf1 !important}a.has-text-danger-light:hover,a.has-text-danger-light:focus{color:#f8bece !important}.has-background-danger-light{background-color:#fdedf1 !important}.has-text-danger-dark{color:#991036 !important}a.has-text-danger-dark:hover,a.has-text-danger-dark:focus{color:#c71546 !important}.has-background-danger-dark{background-color:#991036 !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#313244 !important}.has-background-grey-darker{background-color:#313244 !important}.has-text-grey-dark{color:#45475a !important}.has-background-grey-dark{background-color:#45475a !important}.has-text-grey{color:#585b70 !important}.has-background-grey{background-color:#585b70 !important}.has-text-grey-light{color:#6c7086 !important}.has-background-grey-light{background-color:#6c7086 !important}.has-text-grey-lighter{color:#7f849c !important}.has-background-grey-lighter{background-color:#7f849c !important}.has-text-white-ter{color:#f5f5f5 !important}.has-background-white-ter{background-color:#f5f5f5 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.is-flex-direction-row{flex-direction:row !important}.is-flex-direction-row-reverse{flex-direction:row-reverse !important}.is-flex-direction-column{flex-direction:column !important}.is-flex-direction-column-reverse{flex-direction:column-reverse !important}.is-flex-wrap-nowrap{flex-wrap:nowrap !important}.is-flex-wrap-wrap{flex-wrap:wrap !important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse !important}.is-justify-content-flex-start{justify-content:flex-start !important}.is-justify-content-flex-end{justify-content:flex-end !important}.is-justify-content-center{justify-content:center !important}.is-justify-content-space-between{justify-content:space-between !important}.is-justify-content-space-around{justify-content:space-around !important}.is-justify-content-space-evenly{justify-content:space-evenly !important}.is-justify-content-start{justify-content:start !important}.is-justify-content-end{justify-content:end !important}.is-justify-content-left{justify-content:left !important}.is-justify-content-right{justify-content:right !important}.is-align-content-flex-start{align-content:flex-start !important}.is-align-content-flex-end{align-content:flex-end !important}.is-align-content-center{align-content:center !important}.is-align-content-space-between{align-content:space-between !important}.is-align-content-space-around{align-content:space-around !important}.is-align-content-space-evenly{align-content:space-evenly !important}.is-align-content-stretch{align-content:stretch !important}.is-align-content-start{align-content:start !important}.is-align-content-end{align-content:end !important}.is-align-content-baseline{align-content:baseline !important}.is-align-items-stretch{align-items:stretch !important}.is-align-items-flex-start{align-items:flex-start !important}.is-align-items-flex-end{align-items:flex-end !important}.is-align-items-center{align-items:center !important}.is-align-items-baseline{align-items:baseline !important}.is-align-items-start{align-items:start !important}.is-align-items-end{align-items:end !important}.is-align-items-self-start{align-items:self-start !important}.is-align-items-self-end{align-items:self-end !important}.is-align-self-auto{align-self:auto !important}.is-align-self-flex-start{align-self:flex-start !important}.is-align-self-flex-end{align-self:flex-end !important}.is-align-self-center{align-self:center !important}.is-align-self-baseline{align-self:baseline !important}.is-align-self-stretch{align-self:stretch !important}.is-flex-grow-0{flex-grow:0 !important}.is-flex-grow-1{flex-grow:1 !important}.is-flex-grow-2{flex-grow:2 !important}.is-flex-grow-3{flex-grow:3 !important}.is-flex-grow-4{flex-grow:4 !important}.is-flex-grow-5{flex-grow:5 !important}.is-flex-shrink-0{flex-shrink:0 !important}.is-flex-shrink-1{flex-shrink:1 !important}.is-flex-shrink-2{flex-shrink:2 !important}.is-flex-shrink-3{flex-shrink:3 !important}.is-flex-shrink-4{flex-shrink:4 !important}.is-flex-shrink-5{flex-shrink:5 !important}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-clickable{cursor:pointer !important;pointer-events:all !important}.is-clipped{overflow:hidden !important}.is-relative{position:relative !important}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.m-0{margin:0 !important}.mt-0{margin-top:0 !important}.mr-0{margin-right:0 !important}.mb-0{margin-bottom:0 !important}.ml-0{margin-left:0 !important}.mx-0{margin-left:0 !important;margin-right:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:.25rem !important}.mt-1{margin-top:.25rem !important}.mr-1{margin-right:.25rem !important}.mb-1{margin-bottom:.25rem !important}.ml-1{margin-left:.25rem !important}.mx-1{margin-left:.25rem !important;margin-right:.25rem !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.m-2{margin:.5rem !important}.mt-2{margin-top:.5rem !important}.mr-2{margin-right:.5rem !important}.mb-2{margin-bottom:.5rem !important}.ml-2{margin-left:.5rem !important}.mx-2{margin-left:.5rem !important;margin-right:.5rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.m-3{margin:.75rem !important}.mt-3{margin-top:.75rem !important}.mr-3{margin-right:.75rem !important}.mb-3{margin-bottom:.75rem !important}.ml-3{margin-left:.75rem !important}.mx-3{margin-left:.75rem !important;margin-right:.75rem !important}.my-3{margin-top:.75rem !important;margin-bottom:.75rem !important}.m-4{margin:1rem !important}.mt-4{margin-top:1rem !important}.mr-4{margin-right:1rem !important}.mb-4{margin-bottom:1rem !important}.ml-4{margin-left:1rem !important}.mx-4{margin-left:1rem !important;margin-right:1rem !important}.my-4{margin-top:1rem !important;margin-bottom:1rem !important}.m-5{margin:1.5rem !important}.mt-5{margin-top:1.5rem !important}.mr-5{margin-right:1.5rem !important}.mb-5{margin-bottom:1.5rem !important}.ml-5{margin-left:1.5rem !important}.mx-5{margin-left:1.5rem !important;margin-right:1.5rem !important}.my-5{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-6{margin:3rem !important}.mt-6{margin-top:3rem !important}.mr-6{margin-right:3rem !important}.mb-6{margin-bottom:3rem !important}.ml-6{margin-left:3rem !important}.mx-6{margin-left:3rem !important;margin-right:3rem !important}.my-6{margin-top:3rem !important;margin-bottom:3rem !important}.m-auto{margin:auto !important}.mt-auto{margin-top:auto !important}.mr-auto{margin-right:auto !important}.mb-auto{margin-bottom:auto !important}.ml-auto{margin-left:auto !important}.mx-auto{margin-left:auto !important;margin-right:auto !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.p-0{padding:0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-left:0 !important;padding-right:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:.25rem !important}.pt-1{padding-top:.25rem !important}.pr-1{padding-right:.25rem !important}.pb-1{padding-bottom:.25rem !important}.pl-1{padding-left:.25rem !important}.px-1{padding-left:.25rem !important;padding-right:.25rem !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.p-2{padding:.5rem !important}.pt-2{padding-top:.5rem !important}.pr-2{padding-right:.5rem !important}.pb-2{padding-bottom:.5rem !important}.pl-2{padding-left:.5rem !important}.px-2{padding-left:.5rem !important;padding-right:.5rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.p-3{padding:.75rem !important}.pt-3{padding-top:.75rem !important}.pr-3{padding-right:.75rem !important}.pb-3{padding-bottom:.75rem !important}.pl-3{padding-left:.75rem !important}.px-3{padding-left:.75rem !important;padding-right:.75rem !important}.py-3{padding-top:.75rem !important;padding-bottom:.75rem !important}.p-4{padding:1rem !important}.pt-4{padding-top:1rem !important}.pr-4{padding-right:1rem !important}.pb-4{padding-bottom:1rem !important}.pl-4{padding-left:1rem !important}.px-4{padding-left:1rem !important;padding-right:1rem !important}.py-4{padding-top:1rem !important;padding-bottom:1rem !important}.p-5{padding:1.5rem !important}.pt-5{padding-top:1.5rem !important}.pr-5{padding-right:1.5rem !important}.pb-5{padding-bottom:1.5rem !important}.pl-5{padding-left:1.5rem !important}.px-5{padding-left:1.5rem !important;padding-right:1.5rem !important}.py-5{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-6{padding:3rem !important}.pt-6{padding-top:3rem !important}.pr-6{padding-right:3rem !important}.pb-6{padding-bottom:3rem !important}.pl-6{padding-left:3rem !important}.px-6{padding-left:3rem !important;padding-right:3rem !important}.py-6{padding-top:3rem !important;padding-bottom:3rem !important}.p-auto{padding:auto !important}.pt-auto{padding-top:auto !important}.pr-auto{padding-right:auto !important}.pb-auto{padding-bottom:auto !important}.pl-auto{padding-left:auto !important}.px-auto{padding-left:auto !important;padding-right:auto !important}.py-auto{padding-top:auto !important;padding-bottom:auto !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:1rem !important}.is-size-7,html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink{font-size:.75rem !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:1rem !important}.is-size-7-mobile{font-size:.75rem !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:1rem !important}.is-size-7-tablet{font-size:.75rem !important}}@media screen and (max-width: 1055px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:1rem !important}.is-size-7-touch{font-size:.75rem !important}}@media screen and (min-width: 1056px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:1rem !important}.is-size-7-desktop{font-size:.75rem !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:1rem !important}.is-size-7-widescreen{font-size:.75rem !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:1rem !important}.is-size-7-fullhd{font-size:.75rem !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1055px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1056px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1055px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1056px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1055px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1056px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1055px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1056px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.is-underlined{text-decoration:underline !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-secondary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-sans-serif{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-monospace{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-family-code{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1055px){.is-block-touch{display:block !important}}@media screen and (min-width: 1056px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1055px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1056px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1055px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1056px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1055px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1056px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1055px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1056px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:0.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:0.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1055px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1056px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1055px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1056px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}html.theme--catppuccin-mocha html{background-color:#1e1e2e;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--catppuccin-mocha article,html.theme--catppuccin-mocha aside,html.theme--catppuccin-mocha figure,html.theme--catppuccin-mocha footer,html.theme--catppuccin-mocha header,html.theme--catppuccin-mocha hgroup,html.theme--catppuccin-mocha section{display:block}html.theme--catppuccin-mocha body,html.theme--catppuccin-mocha button,html.theme--catppuccin-mocha input,html.theme--catppuccin-mocha optgroup,html.theme--catppuccin-mocha select,html.theme--catppuccin-mocha textarea{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif}html.theme--catppuccin-mocha code,html.theme--catppuccin-mocha pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--catppuccin-mocha body{color:#cdd6f4;font-size:1em;font-weight:400;line-height:1.5}html.theme--catppuccin-mocha a{color:#89b4fa;cursor:pointer;text-decoration:none}html.theme--catppuccin-mocha a strong{color:currentColor}html.theme--catppuccin-mocha a:hover{color:#89dceb}html.theme--catppuccin-mocha code{background-color:#181825;color:#cdd6f4;font-size:.875em;font-weight:normal;padding:.1em}html.theme--catppuccin-mocha hr{background-color:#181825;border:none;display:block;height:2px;margin:1.5rem 0}html.theme--catppuccin-mocha img{height:auto;max-width:100%}html.theme--catppuccin-mocha input[type="checkbox"],html.theme--catppuccin-mocha input[type="radio"]{vertical-align:baseline}html.theme--catppuccin-mocha small{font-size:.875em}html.theme--catppuccin-mocha span{font-style:inherit;font-weight:inherit}html.theme--catppuccin-mocha strong{color:#b8c5ef;font-weight:700}html.theme--catppuccin-mocha fieldset{border:none}html.theme--catppuccin-mocha pre{-webkit-overflow-scrolling:touch;background-color:#181825;color:#cdd6f4;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}html.theme--catppuccin-mocha pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}html.theme--catppuccin-mocha table td,html.theme--catppuccin-mocha table th{vertical-align:top}html.theme--catppuccin-mocha table td:not([align]),html.theme--catppuccin-mocha table th:not([align]){text-align:inherit}html.theme--catppuccin-mocha table th{color:#b8c5ef}html.theme--catppuccin-mocha .box{background-color:#45475a;border-radius:8px;box-shadow:none;color:#cdd6f4;display:block;padding:1.25rem}html.theme--catppuccin-mocha a.box:hover,html.theme--catppuccin-mocha a.box:focus{box-shadow:0 0.5em 1em -0.125em rgba(10,10,10,0.1),0 0 0 1px #89b4fa}html.theme--catppuccin-mocha a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2),0 0 0 1px #89b4fa}html.theme--catppuccin-mocha .button{background-color:#181825;border-color:#363653;border-width:1px;color:#89b4fa;cursor:pointer;justify-content:center;padding-bottom:calc(0.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(0.5em - 1px);text-align:center;white-space:nowrap}html.theme--catppuccin-mocha .button strong{color:inherit}html.theme--catppuccin-mocha .button .icon,html.theme--catppuccin-mocha .button .icon.is-small,html.theme--catppuccin-mocha .button #documenter .docs-sidebar form.docs-search>input.icon,html.theme--catppuccin-mocha #documenter .docs-sidebar .button form.docs-search>input.icon,html.theme--catppuccin-mocha .button .icon.is-medium,html.theme--catppuccin-mocha .button .icon.is-large{height:1.5em;width:1.5em}html.theme--catppuccin-mocha .button .icon:first-child:not(:last-child){margin-left:calc(-0.5em - 1px);margin-right:.25em}html.theme--catppuccin-mocha .button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-0.5em - 1px)}html.theme--catppuccin-mocha .button .icon:first-child:last-child{margin-left:calc(-0.5em - 1px);margin-right:calc(-0.5em - 1px)}html.theme--catppuccin-mocha .button:hover,html.theme--catppuccin-mocha .button.is-hovered{border-color:#6c7086;color:#b8c5ef}html.theme--catppuccin-mocha .button:focus,html.theme--catppuccin-mocha .button.is-focused{border-color:#6c7086;color:#71a4f9}html.theme--catppuccin-mocha .button:focus:not(:active),html.theme--catppuccin-mocha .button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(137,180,250,0.25)}html.theme--catppuccin-mocha .button:active,html.theme--catppuccin-mocha .button.is-active{border-color:#45475a;color:#b8c5ef}html.theme--catppuccin-mocha .button.is-text{background-color:transparent;border-color:transparent;color:#cdd6f4;text-decoration:underline}html.theme--catppuccin-mocha .button.is-text:hover,html.theme--catppuccin-mocha .button.is-text.is-hovered,html.theme--catppuccin-mocha .button.is-text:focus,html.theme--catppuccin-mocha .button.is-text.is-focused{background-color:#181825;color:#b8c5ef}html.theme--catppuccin-mocha .button.is-text:active,html.theme--catppuccin-mocha .button.is-text.is-active{background-color:#0e0e16;color:#b8c5ef}html.theme--catppuccin-mocha .button.is-text[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}html.theme--catppuccin-mocha .button.is-ghost{background:none;border-color:rgba(0,0,0,0);color:#89b4fa;text-decoration:none}html.theme--catppuccin-mocha .button.is-ghost:hover,html.theme--catppuccin-mocha .button.is-ghost.is-hovered{color:#89b4fa;text-decoration:underline}html.theme--catppuccin-mocha .button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-white:hover,html.theme--catppuccin-mocha .button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-white:focus,html.theme--catppuccin-mocha .button.is-white.is-focused{border-color:transparent;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-white:focus:not(:active),html.theme--catppuccin-mocha .button.is-white.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-mocha .button.is-white:active,html.theme--catppuccin-mocha .button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-white[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-white{background-color:#fff;border-color:#fff;box-shadow:none}html.theme--catppuccin-mocha .button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-mocha .button.is-white.is-inverted:hover,html.theme--catppuccin-mocha .button.is-white.is-inverted.is-hovered{background-color:#000}html.theme--catppuccin-mocha .button.is-white.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}html.theme--catppuccin-mocha .button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-mocha .button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-mocha .button.is-white.is-outlined:hover,html.theme--catppuccin-mocha .button.is-white.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-white.is-outlined:focus,html.theme--catppuccin-mocha .button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-white.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-white.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-white.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-mocha .button.is-white.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-mocha .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-white.is-inverted.is-outlined:hover,html.theme--catppuccin-mocha .button.is-white.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-white.is-inverted.is-outlined:focus,html.theme--catppuccin-mocha .button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-mocha .button.is-white.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-white.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-black:hover,html.theme--catppuccin-mocha .button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-black:focus,html.theme--catppuccin-mocha .button.is-black.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-black:focus:not(:active),html.theme--catppuccin-mocha .button.is-black.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-mocha .button.is-black:active,html.theme--catppuccin-mocha .button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-black[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-black{background-color:#0a0a0a;border-color:#0a0a0a;box-shadow:none}html.theme--catppuccin-mocha .button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-black.is-inverted:hover,html.theme--catppuccin-mocha .button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-mocha .button.is-black.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-black.is-outlined:hover,html.theme--catppuccin-mocha .button.is-black.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-black.is-outlined:focus,html.theme--catppuccin-mocha .button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-mocha .button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-mocha .button.is-black.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-black.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-black.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-black.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-mocha .button.is-black.is-inverted.is-outlined:hover,html.theme--catppuccin-mocha .button.is-black.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-black.is-inverted.is-outlined:focus,html.theme--catppuccin-mocha .button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-black.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-black.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-mocha .button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-mocha .button.is-light{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-light:hover,html.theme--catppuccin-mocha .button.is-light.is-hovered{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-light:focus,html.theme--catppuccin-mocha .button.is-light.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-light:focus:not(:active),html.theme--catppuccin-mocha .button.is-light.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-mocha .button.is-light:active,html.theme--catppuccin-mocha .button.is-light.is-active{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-light[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-light{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none}html.theme--catppuccin-mocha .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-mocha .button.is-light.is-inverted:hover,html.theme--catppuccin-mocha .button.is-light.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-light.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#f5f5f5}html.theme--catppuccin-mocha .button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-mocha .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}html.theme--catppuccin-mocha .button.is-light.is-outlined:hover,html.theme--catppuccin-mocha .button.is-light.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-light.is-outlined:focus,html.theme--catppuccin-mocha .button.is-light.is-outlined.is-focused{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}html.theme--catppuccin-mocha .button.is-light.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-light.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-light.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-mocha .button.is-light.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}html.theme--catppuccin-mocha .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-light.is-inverted.is-outlined:hover,html.theme--catppuccin-mocha .button.is-light.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-light.is-inverted.is-outlined:focus,html.theme--catppuccin-mocha .button.is-light.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-mocha .button.is-light.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-light.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}html.theme--catppuccin-mocha .button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-dark,html.theme--catppuccin-mocha .content kbd.button{background-color:#313244;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-dark:hover,html.theme--catppuccin-mocha .content kbd.button:hover,html.theme--catppuccin-mocha .button.is-dark.is-hovered,html.theme--catppuccin-mocha .content kbd.button.is-hovered{background-color:#2c2d3d;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-dark:focus,html.theme--catppuccin-mocha .content kbd.button:focus,html.theme--catppuccin-mocha .button.is-dark.is-focused,html.theme--catppuccin-mocha .content kbd.button.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-dark:focus:not(:active),html.theme--catppuccin-mocha .content kbd.button:focus:not(:active),html.theme--catppuccin-mocha .button.is-dark.is-focused:not(:active),html.theme--catppuccin-mocha .content kbd.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(49,50,68,0.25)}html.theme--catppuccin-mocha .button.is-dark:active,html.theme--catppuccin-mocha .content kbd.button:active,html.theme--catppuccin-mocha .button.is-dark.is-active,html.theme--catppuccin-mocha .content kbd.button.is-active{background-color:#262735;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-dark[disabled],html.theme--catppuccin-mocha .content kbd.button[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-dark,fieldset[disabled] html.theme--catppuccin-mocha .content kbd.button{background-color:#313244;border-color:#313244;box-shadow:none}html.theme--catppuccin-mocha .button.is-dark.is-inverted,html.theme--catppuccin-mocha .content kbd.button.is-inverted{background-color:#fff;color:#313244}html.theme--catppuccin-mocha .button.is-dark.is-inverted:hover,html.theme--catppuccin-mocha .content kbd.button.is-inverted:hover,html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-hovered,html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-mocha .button.is-dark.is-inverted[disabled],html.theme--catppuccin-mocha .content kbd.button.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-dark.is-inverted,fieldset[disabled] html.theme--catppuccin-mocha .content kbd.button.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#313244}html.theme--catppuccin-mocha .button.is-dark.is-loading::after,html.theme--catppuccin-mocha .content kbd.button.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-dark.is-outlined,html.theme--catppuccin-mocha .content kbd.button.is-outlined{background-color:transparent;border-color:#313244;color:#313244}html.theme--catppuccin-mocha .button.is-dark.is-outlined:hover,html.theme--catppuccin-mocha .content kbd.button.is-outlined:hover,html.theme--catppuccin-mocha .button.is-dark.is-outlined.is-hovered,html.theme--catppuccin-mocha .content kbd.button.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-dark.is-outlined:focus,html.theme--catppuccin-mocha .content kbd.button.is-outlined:focus,html.theme--catppuccin-mocha .button.is-dark.is-outlined.is-focused,html.theme--catppuccin-mocha .content kbd.button.is-outlined.is-focused{background-color:#313244;border-color:#313244;color:#fff}html.theme--catppuccin-mocha .button.is-dark.is-outlined.is-loading::after,html.theme--catppuccin-mocha .content kbd.button.is-outlined.is-loading::after{border-color:transparent transparent #313244 #313244 !important}html.theme--catppuccin-mocha .button.is-dark.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .content kbd.button.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-dark.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .content kbd.button.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-dark.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .content kbd.button.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-dark.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-mocha .content kbd.button.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-dark.is-outlined[disabled],html.theme--catppuccin-mocha .content kbd.button.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-dark.is-outlined,fieldset[disabled] html.theme--catppuccin-mocha .content kbd.button.is-outlined{background-color:transparent;border-color:#313244;box-shadow:none;color:#313244}html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-outlined,html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-outlined:hover,html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-outlined:hover,html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-outlined:focus,html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-outlined:focus,html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-outlined.is-focused,html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-outlined.is-focused{background-color:#fff;color:#313244}html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #313244 #313244 !important}html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-outlined[disabled],html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-outlined,fieldset[disabled] html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-mocha .button.is-primary,html.theme--catppuccin-mocha .docstring>section>a.button.docs-sourcelink{background-color:#89b4fa;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-primary:hover,html.theme--catppuccin-mocha .docstring>section>a.button.docs-sourcelink:hover,html.theme--catppuccin-mocha .button.is-primary.is-hovered,html.theme--catppuccin-mocha .docstring>section>a.button.is-hovered.docs-sourcelink{background-color:#7dacf9;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-primary:focus,html.theme--catppuccin-mocha .docstring>section>a.button.docs-sourcelink:focus,html.theme--catppuccin-mocha .button.is-primary.is-focused,html.theme--catppuccin-mocha .docstring>section>a.button.is-focused.docs-sourcelink{border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-primary:focus:not(:active),html.theme--catppuccin-mocha .docstring>section>a.button.docs-sourcelink:focus:not(:active),html.theme--catppuccin-mocha .button.is-primary.is-focused:not(:active),html.theme--catppuccin-mocha .docstring>section>a.button.is-focused.docs-sourcelink:not(:active){box-shadow:0 0 0 0.125em rgba(137,180,250,0.25)}html.theme--catppuccin-mocha .button.is-primary:active,html.theme--catppuccin-mocha .docstring>section>a.button.docs-sourcelink:active,html.theme--catppuccin-mocha .button.is-primary.is-active,html.theme--catppuccin-mocha .docstring>section>a.button.is-active.docs-sourcelink{background-color:#71a4f9;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-primary[disabled],html.theme--catppuccin-mocha .docstring>section>a.button.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-primary,fieldset[disabled] html.theme--catppuccin-mocha .docstring>section>a.button.docs-sourcelink{background-color:#89b4fa;border-color:#89b4fa;box-shadow:none}html.theme--catppuccin-mocha .button.is-primary.is-inverted,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;color:#89b4fa}html.theme--catppuccin-mocha .button.is-primary.is-inverted:hover,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.docs-sourcelink:hover,html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-hovered,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-hovered.docs-sourcelink{background-color:#f2f2f2}html.theme--catppuccin-mocha .button.is-primary.is-inverted[disabled],html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-primary.is-inverted,fieldset[disabled] html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;border-color:transparent;box-shadow:none;color:#89b4fa}html.theme--catppuccin-mocha .button.is-primary.is-loading::after,html.theme--catppuccin-mocha .docstring>section>a.button.is-loading.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-primary.is-outlined,html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#89b4fa;color:#89b4fa}html.theme--catppuccin-mocha .button.is-primary.is-outlined:hover,html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.docs-sourcelink:hover,html.theme--catppuccin-mocha .button.is-primary.is-outlined.is-hovered,html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.is-hovered.docs-sourcelink,html.theme--catppuccin-mocha .button.is-primary.is-outlined:focus,html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.docs-sourcelink:focus,html.theme--catppuccin-mocha .button.is-primary.is-outlined.is-focused,html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.is-focused.docs-sourcelink{background-color:#89b4fa;border-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .button.is-primary.is-outlined.is-loading::after,html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink::after{border-color:transparent transparent #89b4fa #89b4fa !important}html.theme--catppuccin-mocha .button.is-primary.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--catppuccin-mocha .button.is-primary.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--catppuccin-mocha .button.is-primary.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--catppuccin-mocha .button.is-primary.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-primary.is-outlined[disabled],html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-primary.is-outlined,fieldset[disabled] html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#89b4fa;box-shadow:none;color:#89b4fa}html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-outlined,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-outlined:hover,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:hover,html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink,html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-outlined:focus,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:focus,html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-outlined.is-focused,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-outlined.is-focused.docs-sourcelink{background-color:#fff;color:#89b4fa}html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #89b4fa #89b4fa !important}html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-outlined[disabled],html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-outlined,fieldset[disabled] html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-mocha .button.is-primary.is-light,html.theme--catppuccin-mocha .docstring>section>a.button.is-light.docs-sourcelink{background-color:#ebf3fe;color:#063c93}html.theme--catppuccin-mocha .button.is-primary.is-light:hover,html.theme--catppuccin-mocha .docstring>section>a.button.is-light.docs-sourcelink:hover,html.theme--catppuccin-mocha .button.is-primary.is-light.is-hovered,html.theme--catppuccin-mocha .docstring>section>a.button.is-light.is-hovered.docs-sourcelink{background-color:#dfebfe;border-color:transparent;color:#063c93}html.theme--catppuccin-mocha .button.is-primary.is-light:active,html.theme--catppuccin-mocha .docstring>section>a.button.is-light.docs-sourcelink:active,html.theme--catppuccin-mocha .button.is-primary.is-light.is-active,html.theme--catppuccin-mocha .docstring>section>a.button.is-light.is-active.docs-sourcelink{background-color:#d3e3fd;border-color:transparent;color:#063c93}html.theme--catppuccin-mocha .button.is-link{background-color:#89b4fa;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-link:hover,html.theme--catppuccin-mocha .button.is-link.is-hovered{background-color:#7dacf9;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-link:focus,html.theme--catppuccin-mocha .button.is-link.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-link:focus:not(:active),html.theme--catppuccin-mocha .button.is-link.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(137,180,250,0.25)}html.theme--catppuccin-mocha .button.is-link:active,html.theme--catppuccin-mocha .button.is-link.is-active{background-color:#71a4f9;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-link[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-link{background-color:#89b4fa;border-color:#89b4fa;box-shadow:none}html.theme--catppuccin-mocha .button.is-link.is-inverted{background-color:#fff;color:#89b4fa}html.theme--catppuccin-mocha .button.is-link.is-inverted:hover,html.theme--catppuccin-mocha .button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-mocha .button.is-link.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#89b4fa}html.theme--catppuccin-mocha .button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-link.is-outlined{background-color:transparent;border-color:#89b4fa;color:#89b4fa}html.theme--catppuccin-mocha .button.is-link.is-outlined:hover,html.theme--catppuccin-mocha .button.is-link.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-link.is-outlined:focus,html.theme--catppuccin-mocha .button.is-link.is-outlined.is-focused{background-color:#89b4fa;border-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #89b4fa #89b4fa !important}html.theme--catppuccin-mocha .button.is-link.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-link.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-link.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-link.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-link.is-outlined{background-color:transparent;border-color:#89b4fa;box-shadow:none;color:#89b4fa}html.theme--catppuccin-mocha .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-mocha .button.is-link.is-inverted.is-outlined:hover,html.theme--catppuccin-mocha .button.is-link.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-link.is-inverted.is-outlined:focus,html.theme--catppuccin-mocha .button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#89b4fa}html.theme--catppuccin-mocha .button.is-link.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-link.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #89b4fa #89b4fa !important}html.theme--catppuccin-mocha .button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-mocha .button.is-link.is-light{background-color:#ebf3fe;color:#063c93}html.theme--catppuccin-mocha .button.is-link.is-light:hover,html.theme--catppuccin-mocha .button.is-link.is-light.is-hovered{background-color:#dfebfe;border-color:transparent;color:#063c93}html.theme--catppuccin-mocha .button.is-link.is-light:active,html.theme--catppuccin-mocha .button.is-link.is-light.is-active{background-color:#d3e3fd;border-color:transparent;color:#063c93}html.theme--catppuccin-mocha .button.is-info{background-color:#94e2d5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-info:hover,html.theme--catppuccin-mocha .button.is-info.is-hovered{background-color:#8adfd1;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-info:focus,html.theme--catppuccin-mocha .button.is-info.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-info:focus:not(:active),html.theme--catppuccin-mocha .button.is-info.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(148,226,213,0.25)}html.theme--catppuccin-mocha .button.is-info:active,html.theme--catppuccin-mocha .button.is-info.is-active{background-color:#80ddcd;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-info[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-info{background-color:#94e2d5;border-color:#94e2d5;box-shadow:none}html.theme--catppuccin-mocha .button.is-info.is-inverted{background-color:rgba(0,0,0,0.7);color:#94e2d5}html.theme--catppuccin-mocha .button.is-info.is-inverted:hover,html.theme--catppuccin-mocha .button.is-info.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-info.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-info.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#94e2d5}html.theme--catppuccin-mocha .button.is-info.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-mocha .button.is-info.is-outlined{background-color:transparent;border-color:#94e2d5;color:#94e2d5}html.theme--catppuccin-mocha .button.is-info.is-outlined:hover,html.theme--catppuccin-mocha .button.is-info.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-info.is-outlined:focus,html.theme--catppuccin-mocha .button.is-info.is-outlined.is-focused{background-color:#94e2d5;border-color:#94e2d5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #94e2d5 #94e2d5 !important}html.theme--catppuccin-mocha .button.is-info.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-info.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-info.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-mocha .button.is-info.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-info.is-outlined{background-color:transparent;border-color:#94e2d5;box-shadow:none;color:#94e2d5}html.theme--catppuccin-mocha .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-info.is-inverted.is-outlined:hover,html.theme--catppuccin-mocha .button.is-info.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-info.is-inverted.is-outlined:focus,html.theme--catppuccin-mocha .button.is-info.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#94e2d5}html.theme--catppuccin-mocha .button.is-info.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-info.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #94e2d5 #94e2d5 !important}html.theme--catppuccin-mocha .button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-info.is-light{background-color:#effbf9;color:#207466}html.theme--catppuccin-mocha .button.is-info.is-light:hover,html.theme--catppuccin-mocha .button.is-info.is-light.is-hovered{background-color:#e5f8f5;border-color:transparent;color:#207466}html.theme--catppuccin-mocha .button.is-info.is-light:active,html.theme--catppuccin-mocha .button.is-info.is-light.is-active{background-color:#dbf5f1;border-color:transparent;color:#207466}html.theme--catppuccin-mocha .button.is-success{background-color:#a6e3a1;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-success:hover,html.theme--catppuccin-mocha .button.is-success.is-hovered{background-color:#9de097;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-success:focus,html.theme--catppuccin-mocha .button.is-success.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-success:focus:not(:active),html.theme--catppuccin-mocha .button.is-success.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(166,227,161,0.25)}html.theme--catppuccin-mocha .button.is-success:active,html.theme--catppuccin-mocha .button.is-success.is-active{background-color:#93dd8d;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-success[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-success{background-color:#a6e3a1;border-color:#a6e3a1;box-shadow:none}html.theme--catppuccin-mocha .button.is-success.is-inverted{background-color:rgba(0,0,0,0.7);color:#a6e3a1}html.theme--catppuccin-mocha .button.is-success.is-inverted:hover,html.theme--catppuccin-mocha .button.is-success.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-success.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-success.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#a6e3a1}html.theme--catppuccin-mocha .button.is-success.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-mocha .button.is-success.is-outlined{background-color:transparent;border-color:#a6e3a1;color:#a6e3a1}html.theme--catppuccin-mocha .button.is-success.is-outlined:hover,html.theme--catppuccin-mocha .button.is-success.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-success.is-outlined:focus,html.theme--catppuccin-mocha .button.is-success.is-outlined.is-focused{background-color:#a6e3a1;border-color:#a6e3a1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #a6e3a1 #a6e3a1 !important}html.theme--catppuccin-mocha .button.is-success.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-success.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-success.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-mocha .button.is-success.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-success.is-outlined{background-color:transparent;border-color:#a6e3a1;box-shadow:none;color:#a6e3a1}html.theme--catppuccin-mocha .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-success.is-inverted.is-outlined:hover,html.theme--catppuccin-mocha .button.is-success.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-success.is-inverted.is-outlined:focus,html.theme--catppuccin-mocha .button.is-success.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#a6e3a1}html.theme--catppuccin-mocha .button.is-success.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-success.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #a6e3a1 #a6e3a1 !important}html.theme--catppuccin-mocha .button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-success.is-light{background-color:#f0faef;color:#287222}html.theme--catppuccin-mocha .button.is-success.is-light:hover,html.theme--catppuccin-mocha .button.is-success.is-light.is-hovered{background-color:#e7f7e5;border-color:transparent;color:#287222}html.theme--catppuccin-mocha .button.is-success.is-light:active,html.theme--catppuccin-mocha .button.is-success.is-light.is-active{background-color:#def4dc;border-color:transparent;color:#287222}html.theme--catppuccin-mocha .button.is-warning{background-color:#f9e2af;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-warning:hover,html.theme--catppuccin-mocha .button.is-warning.is-hovered{background-color:#f8dea3;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-warning:focus,html.theme--catppuccin-mocha .button.is-warning.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-warning:focus:not(:active),html.theme--catppuccin-mocha .button.is-warning.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(249,226,175,0.25)}html.theme--catppuccin-mocha .button.is-warning:active,html.theme--catppuccin-mocha .button.is-warning.is-active{background-color:#f7d997;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-warning[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-warning{background-color:#f9e2af;border-color:#f9e2af;box-shadow:none}html.theme--catppuccin-mocha .button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);color:#f9e2af}html.theme--catppuccin-mocha .button.is-warning.is-inverted:hover,html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-warning.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#f9e2af}html.theme--catppuccin-mocha .button.is-warning.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-mocha .button.is-warning.is-outlined{background-color:transparent;border-color:#f9e2af;color:#f9e2af}html.theme--catppuccin-mocha .button.is-warning.is-outlined:hover,html.theme--catppuccin-mocha .button.is-warning.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-warning.is-outlined:focus,html.theme--catppuccin-mocha .button.is-warning.is-outlined.is-focused{background-color:#f9e2af;border-color:#f9e2af;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #f9e2af #f9e2af !important}html.theme--catppuccin-mocha .button.is-warning.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-warning.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-warning.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-mocha .button.is-warning.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-warning.is-outlined{background-color:transparent;border-color:#f9e2af;box-shadow:none;color:#f9e2af}html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-outlined:hover,html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-outlined:focus,html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#f9e2af}html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f9e2af #f9e2af !important}html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-warning.is-light{background-color:#fef8ec;color:#8a620a}html.theme--catppuccin-mocha .button.is-warning.is-light:hover,html.theme--catppuccin-mocha .button.is-warning.is-light.is-hovered{background-color:#fdf4e0;border-color:transparent;color:#8a620a}html.theme--catppuccin-mocha .button.is-warning.is-light:active,html.theme--catppuccin-mocha .button.is-warning.is-light.is-active{background-color:#fcf0d4;border-color:transparent;color:#8a620a}html.theme--catppuccin-mocha .button.is-danger{background-color:#f38ba8;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-danger:hover,html.theme--catppuccin-mocha .button.is-danger.is-hovered{background-color:#f27f9f;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-danger:focus,html.theme--catppuccin-mocha .button.is-danger.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-danger:focus:not(:active),html.theme--catppuccin-mocha .button.is-danger.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(243,139,168,0.25)}html.theme--catppuccin-mocha .button.is-danger:active,html.theme--catppuccin-mocha .button.is-danger.is-active{background-color:#f17497;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-danger[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-danger{background-color:#f38ba8;border-color:#f38ba8;box-shadow:none}html.theme--catppuccin-mocha .button.is-danger.is-inverted{background-color:#fff;color:#f38ba8}html.theme--catppuccin-mocha .button.is-danger.is-inverted:hover,html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-mocha .button.is-danger.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#f38ba8}html.theme--catppuccin-mocha .button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-danger.is-outlined{background-color:transparent;border-color:#f38ba8;color:#f38ba8}html.theme--catppuccin-mocha .button.is-danger.is-outlined:hover,html.theme--catppuccin-mocha .button.is-danger.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-danger.is-outlined:focus,html.theme--catppuccin-mocha .button.is-danger.is-outlined.is-focused{background-color:#f38ba8;border-color:#f38ba8;color:#fff}html.theme--catppuccin-mocha .button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #f38ba8 #f38ba8 !important}html.theme--catppuccin-mocha .button.is-danger.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-danger.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-danger.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-danger.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-danger.is-outlined{background-color:transparent;border-color:#f38ba8;box-shadow:none;color:#f38ba8}html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-outlined:hover,html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-outlined:focus,html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#f38ba8}html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f38ba8 #f38ba8 !important}html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-mocha .button.is-danger.is-light{background-color:#fdedf1;color:#991036}html.theme--catppuccin-mocha .button.is-danger.is-light:hover,html.theme--catppuccin-mocha .button.is-danger.is-light.is-hovered{background-color:#fce1e8;border-color:transparent;color:#991036}html.theme--catppuccin-mocha .button.is-danger.is-light:active,html.theme--catppuccin-mocha .button.is-danger.is-light.is-active{background-color:#fbd5e0;border-color:transparent;color:#991036}html.theme--catppuccin-mocha .button.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.button{font-size:.75rem}html.theme--catppuccin-mocha .button.is-small:not(.is-rounded),html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.button:not(.is-rounded){border-radius:3px}html.theme--catppuccin-mocha .button.is-normal{font-size:1rem}html.theme--catppuccin-mocha .button.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .button.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .button[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button{background-color:#6c7086;border-color:#585b70;box-shadow:none;opacity:.5}html.theme--catppuccin-mocha .button.is-fullwidth{display:flex;width:100%}html.theme--catppuccin-mocha .button.is-loading{color:transparent !important;pointer-events:none}html.theme--catppuccin-mocha .button.is-loading::after{position:absolute;left:calc(50% - (1em * 0.5));top:calc(50% - (1em * 0.5));position:absolute !important}html.theme--catppuccin-mocha .button.is-static{background-color:#181825;border-color:#585b70;color:#7f849c;box-shadow:none;pointer-events:none}html.theme--catppuccin-mocha .button.is-rounded,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.button{border-radius:9999px;padding-left:calc(1em + 0.25em);padding-right:calc(1em + 0.25em)}html.theme--catppuccin-mocha .buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-mocha .buttons .button{margin-bottom:0.5rem}html.theme--catppuccin-mocha .buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}html.theme--catppuccin-mocha .buttons:last-child{margin-bottom:-0.5rem}html.theme--catppuccin-mocha .buttons:not(:last-child){margin-bottom:1rem}html.theme--catppuccin-mocha .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}html.theme--catppuccin-mocha .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:3px}html.theme--catppuccin-mocha .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}html.theme--catppuccin-mocha .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}html.theme--catppuccin-mocha .buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-mocha .buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}html.theme--catppuccin-mocha .buttons.has-addons .button:last-child{margin-right:0}html.theme--catppuccin-mocha .buttons.has-addons .button:hover,html.theme--catppuccin-mocha .buttons.has-addons .button.is-hovered{z-index:2}html.theme--catppuccin-mocha .buttons.has-addons .button:focus,html.theme--catppuccin-mocha .buttons.has-addons .button.is-focused,html.theme--catppuccin-mocha .buttons.has-addons .button:active,html.theme--catppuccin-mocha .buttons.has-addons .button.is-active,html.theme--catppuccin-mocha .buttons.has-addons .button.is-selected{z-index:3}html.theme--catppuccin-mocha .buttons.has-addons .button:focus:hover,html.theme--catppuccin-mocha .buttons.has-addons .button.is-focused:hover,html.theme--catppuccin-mocha .buttons.has-addons .button:active:hover,html.theme--catppuccin-mocha .buttons.has-addons .button.is-active:hover,html.theme--catppuccin-mocha .buttons.has-addons .button.is-selected:hover{z-index:4}html.theme--catppuccin-mocha .buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-mocha .buttons.is-centered{justify-content:center}html.theme--catppuccin-mocha .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}html.theme--catppuccin-mocha .buttons.is-right{justify-content:flex-end}html.theme--catppuccin-mocha .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .button.is-responsive.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.5625rem}html.theme--catppuccin-mocha .button.is-responsive,html.theme--catppuccin-mocha .button.is-responsive.is-normal{font-size:.65625rem}html.theme--catppuccin-mocha .button.is-responsive.is-medium{font-size:.75rem}html.theme--catppuccin-mocha .button.is-responsive.is-large{font-size:1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-mocha .button.is-responsive.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.65625rem}html.theme--catppuccin-mocha .button.is-responsive,html.theme--catppuccin-mocha .button.is-responsive.is-normal{font-size:.75rem}html.theme--catppuccin-mocha .button.is-responsive.is-medium{font-size:1rem}html.theme--catppuccin-mocha .button.is-responsive.is-large{font-size:1.25rem}}html.theme--catppuccin-mocha .container{flex-grow:1;margin:0 auto;position:relative;width:auto}html.theme--catppuccin-mocha .container.is-fluid{max-width:none !important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .container{max-width:992px}}@media screen and (max-width: 1215px){html.theme--catppuccin-mocha .container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width: 1407px){html.theme--catppuccin-mocha .container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width: 1216px){html.theme--catppuccin-mocha .container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width: 1408px){html.theme--catppuccin-mocha .container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}html.theme--catppuccin-mocha .content li+li{margin-top:0.25em}html.theme--catppuccin-mocha .content p:not(:last-child),html.theme--catppuccin-mocha .content dl:not(:last-child),html.theme--catppuccin-mocha .content ol:not(:last-child),html.theme--catppuccin-mocha .content ul:not(:last-child),html.theme--catppuccin-mocha .content blockquote:not(:last-child),html.theme--catppuccin-mocha .content pre:not(:last-child),html.theme--catppuccin-mocha .content table:not(:last-child){margin-bottom:1em}html.theme--catppuccin-mocha .content h1,html.theme--catppuccin-mocha .content h2,html.theme--catppuccin-mocha .content h3,html.theme--catppuccin-mocha .content h4,html.theme--catppuccin-mocha .content h5,html.theme--catppuccin-mocha .content h6{color:#cdd6f4;font-weight:600;line-height:1.125}html.theme--catppuccin-mocha .content h1{font-size:2em;margin-bottom:0.5em}html.theme--catppuccin-mocha .content h1:not(:first-child){margin-top:1em}html.theme--catppuccin-mocha .content h2{font-size:1.75em;margin-bottom:0.5714em}html.theme--catppuccin-mocha .content h2:not(:first-child){margin-top:1.1428em}html.theme--catppuccin-mocha .content h3{font-size:1.5em;margin-bottom:0.6666em}html.theme--catppuccin-mocha .content h3:not(:first-child){margin-top:1.3333em}html.theme--catppuccin-mocha .content h4{font-size:1.25em;margin-bottom:0.8em}html.theme--catppuccin-mocha .content h5{font-size:1.125em;margin-bottom:0.8888em}html.theme--catppuccin-mocha .content h6{font-size:1em;margin-bottom:1em}html.theme--catppuccin-mocha .content blockquote{background-color:#181825;border-left:5px solid #585b70;padding:1.25em 1.5em}html.theme--catppuccin-mocha .content ol{list-style-position:outside;margin-left:2em;margin-top:1em}html.theme--catppuccin-mocha .content ol:not([type]){list-style-type:decimal}html.theme--catppuccin-mocha .content ol.is-lower-alpha:not([type]){list-style-type:lower-alpha}html.theme--catppuccin-mocha .content ol.is-lower-roman:not([type]){list-style-type:lower-roman}html.theme--catppuccin-mocha .content ol.is-upper-alpha:not([type]){list-style-type:upper-alpha}html.theme--catppuccin-mocha .content ol.is-upper-roman:not([type]){list-style-type:upper-roman}html.theme--catppuccin-mocha .content ul{list-style:disc outside;margin-left:2em;margin-top:1em}html.theme--catppuccin-mocha .content ul ul{list-style-type:circle;margin-top:0.5em}html.theme--catppuccin-mocha .content ul ul ul{list-style-type:square}html.theme--catppuccin-mocha .content dd{margin-left:2em}html.theme--catppuccin-mocha .content figure{margin-left:2em;margin-right:2em;text-align:center}html.theme--catppuccin-mocha .content figure:not(:first-child){margin-top:2em}html.theme--catppuccin-mocha .content figure:not(:last-child){margin-bottom:2em}html.theme--catppuccin-mocha .content figure img{display:inline-block}html.theme--catppuccin-mocha .content figure figcaption{font-style:italic}html.theme--catppuccin-mocha .content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:0;white-space:pre;word-wrap:normal}html.theme--catppuccin-mocha .content sup,html.theme--catppuccin-mocha .content sub{font-size:75%}html.theme--catppuccin-mocha .content table{width:100%}html.theme--catppuccin-mocha .content table td,html.theme--catppuccin-mocha .content table th{border:1px solid #585b70;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--catppuccin-mocha .content table th{color:#b8c5ef}html.theme--catppuccin-mocha .content table th:not([align]){text-align:inherit}html.theme--catppuccin-mocha .content table thead td,html.theme--catppuccin-mocha .content table thead th{border-width:0 0 2px;color:#b8c5ef}html.theme--catppuccin-mocha .content table tfoot td,html.theme--catppuccin-mocha .content table tfoot th{border-width:2px 0 0;color:#b8c5ef}html.theme--catppuccin-mocha .content table tbody tr:last-child td,html.theme--catppuccin-mocha .content table tbody tr:last-child th{border-bottom-width:0}html.theme--catppuccin-mocha .content .tabs li+li{margin-top:0}html.theme--catppuccin-mocha .content.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.content{font-size:.75rem}html.theme--catppuccin-mocha .content.is-normal{font-size:1rem}html.theme--catppuccin-mocha .content.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .content.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}html.theme--catppuccin-mocha .icon.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.icon{height:1rem;width:1rem}html.theme--catppuccin-mocha .icon.is-medium{height:2rem;width:2rem}html.theme--catppuccin-mocha .icon.is-large{height:3rem;width:3rem}html.theme--catppuccin-mocha .icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}html.theme--catppuccin-mocha .icon-text .icon{flex-grow:0;flex-shrink:0}html.theme--catppuccin-mocha .icon-text .icon:not(:last-child){margin-right:.25em}html.theme--catppuccin-mocha .icon-text .icon:not(:first-child){margin-left:.25em}html.theme--catppuccin-mocha div.icon-text{display:flex}html.theme--catppuccin-mocha .image,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img{display:block;position:relative}html.theme--catppuccin-mocha .image img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img img{display:block;height:auto;width:100%}html.theme--catppuccin-mocha .image img.is-rounded,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img img.is-rounded{border-radius:9999px}html.theme--catppuccin-mocha .image.is-fullwidth,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-fullwidth{width:100%}html.theme--catppuccin-mocha .image.is-square img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--catppuccin-mocha .image.is-square .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--catppuccin-mocha .image.is-1by1 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--catppuccin-mocha .image.is-1by1 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--catppuccin-mocha .image.is-5by4 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--catppuccin-mocha .image.is-5by4 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--catppuccin-mocha .image.is-4by3 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--catppuccin-mocha .image.is-4by3 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--catppuccin-mocha .image.is-3by2 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--catppuccin-mocha .image.is-3by2 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--catppuccin-mocha .image.is-5by3 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--catppuccin-mocha .image.is-5by3 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--catppuccin-mocha .image.is-16by9 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--catppuccin-mocha .image.is-16by9 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--catppuccin-mocha .image.is-2by1 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--catppuccin-mocha .image.is-2by1 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--catppuccin-mocha .image.is-3by1 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--catppuccin-mocha .image.is-3by1 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--catppuccin-mocha .image.is-4by5 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--catppuccin-mocha .image.is-4by5 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--catppuccin-mocha .image.is-3by4 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--catppuccin-mocha .image.is-3by4 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--catppuccin-mocha .image.is-2by3 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--catppuccin-mocha .image.is-2by3 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--catppuccin-mocha .image.is-3by5 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--catppuccin-mocha .image.is-3by5 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--catppuccin-mocha .image.is-9by16 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--catppuccin-mocha .image.is-9by16 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--catppuccin-mocha .image.is-1by2 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--catppuccin-mocha .image.is-1by2 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--catppuccin-mocha .image.is-1by3 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--catppuccin-mocha .image.is-1by3 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio{height:100%;width:100%}html.theme--catppuccin-mocha .image.is-square,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-square,html.theme--catppuccin-mocha .image.is-1by1,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by1{padding-top:100%}html.theme--catppuccin-mocha .image.is-5by4,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-5by4{padding-top:80%}html.theme--catppuccin-mocha .image.is-4by3,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-4by3{padding-top:75%}html.theme--catppuccin-mocha .image.is-3by2,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by2{padding-top:66.6666%}html.theme--catppuccin-mocha .image.is-5by3,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-5by3{padding-top:60%}html.theme--catppuccin-mocha .image.is-16by9,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-16by9{padding-top:56.25%}html.theme--catppuccin-mocha .image.is-2by1,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-2by1{padding-top:50%}html.theme--catppuccin-mocha .image.is-3by1,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by1{padding-top:33.3333%}html.theme--catppuccin-mocha .image.is-4by5,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-4by5{padding-top:125%}html.theme--catppuccin-mocha .image.is-3by4,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by4{padding-top:133.3333%}html.theme--catppuccin-mocha .image.is-2by3,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-2by3{padding-top:150%}html.theme--catppuccin-mocha .image.is-3by5,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by5{padding-top:166.6666%}html.theme--catppuccin-mocha .image.is-9by16,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-9by16{padding-top:177.7777%}html.theme--catppuccin-mocha .image.is-1by2,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by2{padding-top:200%}html.theme--catppuccin-mocha .image.is-1by3,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by3{padding-top:300%}html.theme--catppuccin-mocha .image.is-16x16,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-16x16{height:16px;width:16px}html.theme--catppuccin-mocha .image.is-24x24,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-24x24{height:24px;width:24px}html.theme--catppuccin-mocha .image.is-32x32,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-32x32{height:32px;width:32px}html.theme--catppuccin-mocha .image.is-48x48,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-48x48{height:48px;width:48px}html.theme--catppuccin-mocha .image.is-64x64,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-64x64{height:64px;width:64px}html.theme--catppuccin-mocha .image.is-96x96,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-96x96{height:96px;width:96px}html.theme--catppuccin-mocha .image.is-128x128,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-128x128{height:128px;width:128px}html.theme--catppuccin-mocha .notification{background-color:#181825;border-radius:.4em;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}html.theme--catppuccin-mocha .notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--catppuccin-mocha .notification strong{color:currentColor}html.theme--catppuccin-mocha .notification code,html.theme--catppuccin-mocha .notification pre{background:#fff}html.theme--catppuccin-mocha .notification pre code{background:transparent}html.theme--catppuccin-mocha .notification>.delete{right:.5rem;position:absolute;top:0.5rem}html.theme--catppuccin-mocha .notification .title,html.theme--catppuccin-mocha .notification .subtitle,html.theme--catppuccin-mocha .notification .content{color:currentColor}html.theme--catppuccin-mocha .notification.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-mocha .notification.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-mocha .notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .notification.is-dark,html.theme--catppuccin-mocha .content kbd.notification{background-color:#313244;color:#fff}html.theme--catppuccin-mocha .notification.is-primary,html.theme--catppuccin-mocha .docstring>section>a.notification.docs-sourcelink{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .notification.is-primary.is-light,html.theme--catppuccin-mocha .docstring>section>a.notification.is-light.docs-sourcelink{background-color:#ebf3fe;color:#063c93}html.theme--catppuccin-mocha .notification.is-link{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .notification.is-link.is-light{background-color:#ebf3fe;color:#063c93}html.theme--catppuccin-mocha .notification.is-info{background-color:#94e2d5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .notification.is-info.is-light{background-color:#effbf9;color:#207466}html.theme--catppuccin-mocha .notification.is-success{background-color:#a6e3a1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .notification.is-success.is-light{background-color:#f0faef;color:#287222}html.theme--catppuccin-mocha .notification.is-warning{background-color:#f9e2af;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .notification.is-warning.is-light{background-color:#fef8ec;color:#8a620a}html.theme--catppuccin-mocha .notification.is-danger{background-color:#f38ba8;color:#fff}html.theme--catppuccin-mocha .notification.is-danger.is-light{background-color:#fdedf1;color:#991036}html.theme--catppuccin-mocha .progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}html.theme--catppuccin-mocha .progress::-webkit-progress-bar{background-color:#45475a}html.theme--catppuccin-mocha .progress::-webkit-progress-value{background-color:#7f849c}html.theme--catppuccin-mocha .progress::-moz-progress-bar{background-color:#7f849c}html.theme--catppuccin-mocha .progress::-ms-fill{background-color:#7f849c;border:none}html.theme--catppuccin-mocha .progress.is-white::-webkit-progress-value{background-color:#fff}html.theme--catppuccin-mocha .progress.is-white::-moz-progress-bar{background-color:#fff}html.theme--catppuccin-mocha .progress.is-white::-ms-fill{background-color:#fff}html.theme--catppuccin-mocha .progress.is-white:indeterminate{background-image:linear-gradient(to right, #fff 30%, #45475a 30%)}html.theme--catppuccin-mocha .progress.is-black::-webkit-progress-value{background-color:#0a0a0a}html.theme--catppuccin-mocha .progress.is-black::-moz-progress-bar{background-color:#0a0a0a}html.theme--catppuccin-mocha .progress.is-black::-ms-fill{background-color:#0a0a0a}html.theme--catppuccin-mocha .progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #45475a 30%)}html.theme--catppuccin-mocha .progress.is-light::-webkit-progress-value{background-color:#f5f5f5}html.theme--catppuccin-mocha .progress.is-light::-moz-progress-bar{background-color:#f5f5f5}html.theme--catppuccin-mocha .progress.is-light::-ms-fill{background-color:#f5f5f5}html.theme--catppuccin-mocha .progress.is-light:indeterminate{background-image:linear-gradient(to right, #f5f5f5 30%, #45475a 30%)}html.theme--catppuccin-mocha .progress.is-dark::-webkit-progress-value,html.theme--catppuccin-mocha .content kbd.progress::-webkit-progress-value{background-color:#313244}html.theme--catppuccin-mocha .progress.is-dark::-moz-progress-bar,html.theme--catppuccin-mocha .content kbd.progress::-moz-progress-bar{background-color:#313244}html.theme--catppuccin-mocha .progress.is-dark::-ms-fill,html.theme--catppuccin-mocha .content kbd.progress::-ms-fill{background-color:#313244}html.theme--catppuccin-mocha .progress.is-dark:indeterminate,html.theme--catppuccin-mocha .content kbd.progress:indeterminate{background-image:linear-gradient(to right, #313244 30%, #45475a 30%)}html.theme--catppuccin-mocha .progress.is-primary::-webkit-progress-value,html.theme--catppuccin-mocha .docstring>section>a.progress.docs-sourcelink::-webkit-progress-value{background-color:#89b4fa}html.theme--catppuccin-mocha .progress.is-primary::-moz-progress-bar,html.theme--catppuccin-mocha .docstring>section>a.progress.docs-sourcelink::-moz-progress-bar{background-color:#89b4fa}html.theme--catppuccin-mocha .progress.is-primary::-ms-fill,html.theme--catppuccin-mocha .docstring>section>a.progress.docs-sourcelink::-ms-fill{background-color:#89b4fa}html.theme--catppuccin-mocha .progress.is-primary:indeterminate,html.theme--catppuccin-mocha .docstring>section>a.progress.docs-sourcelink:indeterminate{background-image:linear-gradient(to right, #89b4fa 30%, #45475a 30%)}html.theme--catppuccin-mocha .progress.is-link::-webkit-progress-value{background-color:#89b4fa}html.theme--catppuccin-mocha .progress.is-link::-moz-progress-bar{background-color:#89b4fa}html.theme--catppuccin-mocha .progress.is-link::-ms-fill{background-color:#89b4fa}html.theme--catppuccin-mocha .progress.is-link:indeterminate{background-image:linear-gradient(to right, #89b4fa 30%, #45475a 30%)}html.theme--catppuccin-mocha .progress.is-info::-webkit-progress-value{background-color:#94e2d5}html.theme--catppuccin-mocha .progress.is-info::-moz-progress-bar{background-color:#94e2d5}html.theme--catppuccin-mocha .progress.is-info::-ms-fill{background-color:#94e2d5}html.theme--catppuccin-mocha .progress.is-info:indeterminate{background-image:linear-gradient(to right, #94e2d5 30%, #45475a 30%)}html.theme--catppuccin-mocha .progress.is-success::-webkit-progress-value{background-color:#a6e3a1}html.theme--catppuccin-mocha .progress.is-success::-moz-progress-bar{background-color:#a6e3a1}html.theme--catppuccin-mocha .progress.is-success::-ms-fill{background-color:#a6e3a1}html.theme--catppuccin-mocha .progress.is-success:indeterminate{background-image:linear-gradient(to right, #a6e3a1 30%, #45475a 30%)}html.theme--catppuccin-mocha .progress.is-warning::-webkit-progress-value{background-color:#f9e2af}html.theme--catppuccin-mocha .progress.is-warning::-moz-progress-bar{background-color:#f9e2af}html.theme--catppuccin-mocha .progress.is-warning::-ms-fill{background-color:#f9e2af}html.theme--catppuccin-mocha .progress.is-warning:indeterminate{background-image:linear-gradient(to right, #f9e2af 30%, #45475a 30%)}html.theme--catppuccin-mocha .progress.is-danger::-webkit-progress-value{background-color:#f38ba8}html.theme--catppuccin-mocha .progress.is-danger::-moz-progress-bar{background-color:#f38ba8}html.theme--catppuccin-mocha .progress.is-danger::-ms-fill{background-color:#f38ba8}html.theme--catppuccin-mocha .progress.is-danger:indeterminate{background-image:linear-gradient(to right, #f38ba8 30%, #45475a 30%)}html.theme--catppuccin-mocha .progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#45475a;background-image:linear-gradient(to right, #cdd6f4 30%, #45475a 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}html.theme--catppuccin-mocha .progress:indeterminate::-webkit-progress-bar{background-color:transparent}html.theme--catppuccin-mocha .progress:indeterminate::-moz-progress-bar{background-color:transparent}html.theme--catppuccin-mocha .progress:indeterminate::-ms-fill{animation-name:none}html.theme--catppuccin-mocha .progress.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.progress{height:.75rem}html.theme--catppuccin-mocha .progress.is-medium{height:1.25rem}html.theme--catppuccin-mocha .progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}html.theme--catppuccin-mocha .table{background-color:#45475a;color:#cdd6f4}html.theme--catppuccin-mocha .table td,html.theme--catppuccin-mocha .table th{border:1px solid #585b70;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--catppuccin-mocha .table td.is-white,html.theme--catppuccin-mocha .table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-mocha .table td.is-black,html.theme--catppuccin-mocha .table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-mocha .table td.is-light,html.theme--catppuccin-mocha .table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .table td.is-dark,html.theme--catppuccin-mocha .table th.is-dark{background-color:#313244;border-color:#313244;color:#fff}html.theme--catppuccin-mocha .table td.is-primary,html.theme--catppuccin-mocha .table th.is-primary{background-color:#89b4fa;border-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .table td.is-link,html.theme--catppuccin-mocha .table th.is-link{background-color:#89b4fa;border-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .table td.is-info,html.theme--catppuccin-mocha .table th.is-info{background-color:#94e2d5;border-color:#94e2d5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .table td.is-success,html.theme--catppuccin-mocha .table th.is-success{background-color:#a6e3a1;border-color:#a6e3a1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .table td.is-warning,html.theme--catppuccin-mocha .table th.is-warning{background-color:#f9e2af;border-color:#f9e2af;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .table td.is-danger,html.theme--catppuccin-mocha .table th.is-danger{background-color:#f38ba8;border-color:#f38ba8;color:#fff}html.theme--catppuccin-mocha .table td.is-narrow,html.theme--catppuccin-mocha .table th.is-narrow{white-space:nowrap;width:1%}html.theme--catppuccin-mocha .table td.is-selected,html.theme--catppuccin-mocha .table th.is-selected{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .table td.is-selected a,html.theme--catppuccin-mocha .table td.is-selected strong,html.theme--catppuccin-mocha .table th.is-selected a,html.theme--catppuccin-mocha .table th.is-selected strong{color:currentColor}html.theme--catppuccin-mocha .table td.is-vcentered,html.theme--catppuccin-mocha .table th.is-vcentered{vertical-align:middle}html.theme--catppuccin-mocha .table th{color:#b8c5ef}html.theme--catppuccin-mocha .table th:not([align]){text-align:left}html.theme--catppuccin-mocha .table tr.is-selected{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .table tr.is-selected a,html.theme--catppuccin-mocha .table tr.is-selected strong{color:currentColor}html.theme--catppuccin-mocha .table tr.is-selected td,html.theme--catppuccin-mocha .table tr.is-selected th{border-color:#fff;color:currentColor}html.theme--catppuccin-mocha .table thead{background-color:rgba(0,0,0,0)}html.theme--catppuccin-mocha .table thead td,html.theme--catppuccin-mocha .table thead th{border-width:0 0 2px;color:#b8c5ef}html.theme--catppuccin-mocha .table tfoot{background-color:rgba(0,0,0,0)}html.theme--catppuccin-mocha .table tfoot td,html.theme--catppuccin-mocha .table tfoot th{border-width:2px 0 0;color:#b8c5ef}html.theme--catppuccin-mocha .table tbody{background-color:rgba(0,0,0,0)}html.theme--catppuccin-mocha .table tbody tr:last-child td,html.theme--catppuccin-mocha .table tbody tr:last-child th{border-bottom-width:0}html.theme--catppuccin-mocha .table.is-bordered td,html.theme--catppuccin-mocha .table.is-bordered th{border-width:1px}html.theme--catppuccin-mocha .table.is-bordered tr:last-child td,html.theme--catppuccin-mocha .table.is-bordered tr:last-child th{border-bottom-width:1px}html.theme--catppuccin-mocha .table.is-fullwidth{width:100%}html.theme--catppuccin-mocha .table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#313244}html.theme--catppuccin-mocha .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#313244}html.theme--catppuccin-mocha .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#35364a}html.theme--catppuccin-mocha .table.is-narrow td,html.theme--catppuccin-mocha .table.is-narrow th{padding:0.25em 0.5em}html.theme--catppuccin-mocha .table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#313244}html.theme--catppuccin-mocha .table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}html.theme--catppuccin-mocha .tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-mocha .tags .tag,html.theme--catppuccin-mocha .tags .content kbd,html.theme--catppuccin-mocha .content .tags kbd,html.theme--catppuccin-mocha .tags .docstring>section>a.docs-sourcelink{margin-bottom:0.5rem}html.theme--catppuccin-mocha .tags .tag:not(:last-child),html.theme--catppuccin-mocha .tags .content kbd:not(:last-child),html.theme--catppuccin-mocha .content .tags kbd:not(:last-child),html.theme--catppuccin-mocha .tags .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:.5rem}html.theme--catppuccin-mocha .tags:last-child{margin-bottom:-0.5rem}html.theme--catppuccin-mocha .tags:not(:last-child){margin-bottom:1rem}html.theme--catppuccin-mocha .tags.are-medium .tag:not(.is-normal):not(.is-large),html.theme--catppuccin-mocha .tags.are-medium .content kbd:not(.is-normal):not(.is-large),html.theme--catppuccin-mocha .content .tags.are-medium kbd:not(.is-normal):not(.is-large),html.theme--catppuccin-mocha .tags.are-medium .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-large){font-size:1rem}html.theme--catppuccin-mocha .tags.are-large .tag:not(.is-normal):not(.is-medium),html.theme--catppuccin-mocha .tags.are-large .content kbd:not(.is-normal):not(.is-medium),html.theme--catppuccin-mocha .content .tags.are-large kbd:not(.is-normal):not(.is-medium),html.theme--catppuccin-mocha .tags.are-large .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-medium){font-size:1.25rem}html.theme--catppuccin-mocha .tags.is-centered{justify-content:center}html.theme--catppuccin-mocha .tags.is-centered .tag,html.theme--catppuccin-mocha .tags.is-centered .content kbd,html.theme--catppuccin-mocha .content .tags.is-centered kbd,html.theme--catppuccin-mocha .tags.is-centered .docstring>section>a.docs-sourcelink{margin-right:0.25rem;margin-left:0.25rem}html.theme--catppuccin-mocha .tags.is-right{justify-content:flex-end}html.theme--catppuccin-mocha .tags.is-right .tag:not(:first-child),html.theme--catppuccin-mocha .tags.is-right .content kbd:not(:first-child),html.theme--catppuccin-mocha .content .tags.is-right kbd:not(:first-child),html.theme--catppuccin-mocha .tags.is-right .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0.5rem}html.theme--catppuccin-mocha .tags.is-right .tag:not(:last-child),html.theme--catppuccin-mocha .tags.is-right .content kbd:not(:last-child),html.theme--catppuccin-mocha .content .tags.is-right kbd:not(:last-child),html.theme--catppuccin-mocha .tags.is-right .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0}html.theme--catppuccin-mocha .tags.has-addons .tag,html.theme--catppuccin-mocha .tags.has-addons .content kbd,html.theme--catppuccin-mocha .content .tags.has-addons kbd,html.theme--catppuccin-mocha .tags.has-addons .docstring>section>a.docs-sourcelink{margin-right:0}html.theme--catppuccin-mocha .tags.has-addons .tag:not(:first-child),html.theme--catppuccin-mocha .tags.has-addons .content kbd:not(:first-child),html.theme--catppuccin-mocha .content .tags.has-addons kbd:not(:first-child),html.theme--catppuccin-mocha .tags.has-addons .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}html.theme--catppuccin-mocha .tags.has-addons .tag:not(:last-child),html.theme--catppuccin-mocha .tags.has-addons .content kbd:not(:last-child),html.theme--catppuccin-mocha .content .tags.has-addons kbd:not(:last-child),html.theme--catppuccin-mocha .tags.has-addons .docstring>section>a.docs-sourcelink:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}html.theme--catppuccin-mocha .tag:not(body),html.theme--catppuccin-mocha .content kbd:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink:not(body){align-items:center;background-color:#181825;border-radius:.4em;color:#cdd6f4;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:0.75em;padding-right:0.75em;white-space:nowrap}html.theme--catppuccin-mocha .tag:not(body) .delete,html.theme--catppuccin-mocha .content kbd:not(body) .delete,html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}html.theme--catppuccin-mocha .tag.is-white:not(body),html.theme--catppuccin-mocha .content kbd.is-white:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-white:not(body){background-color:#fff;color:#0a0a0a}html.theme--catppuccin-mocha .tag.is-black:not(body),html.theme--catppuccin-mocha .content kbd.is-black:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-black:not(body){background-color:#0a0a0a;color:#fff}html.theme--catppuccin-mocha .tag.is-light:not(body),html.theme--catppuccin-mocha .content kbd.is-light:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .tag.is-dark:not(body),html.theme--catppuccin-mocha .content kbd:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-dark:not(body),html.theme--catppuccin-mocha .content .docstring>section>kbd:not(body){background-color:#313244;color:#fff}html.theme--catppuccin-mocha .tag.is-primary:not(body),html.theme--catppuccin-mocha .content kbd.is-primary:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink:not(body){background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .tag.is-primary.is-light:not(body),html.theme--catppuccin-mocha .content kbd.is-primary.is-light:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#ebf3fe;color:#063c93}html.theme--catppuccin-mocha .tag.is-link:not(body),html.theme--catppuccin-mocha .content kbd.is-link:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-link:not(body){background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .tag.is-link.is-light:not(body),html.theme--catppuccin-mocha .content kbd.is-link.is-light:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-link.is-light:not(body){background-color:#ebf3fe;color:#063c93}html.theme--catppuccin-mocha .tag.is-info:not(body),html.theme--catppuccin-mocha .content kbd.is-info:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-info:not(body){background-color:#94e2d5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .tag.is-info.is-light:not(body),html.theme--catppuccin-mocha .content kbd.is-info.is-light:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-info.is-light:not(body){background-color:#effbf9;color:#207466}html.theme--catppuccin-mocha .tag.is-success:not(body),html.theme--catppuccin-mocha .content kbd.is-success:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-success:not(body){background-color:#a6e3a1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .tag.is-success.is-light:not(body),html.theme--catppuccin-mocha .content kbd.is-success.is-light:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-success.is-light:not(body){background-color:#f0faef;color:#287222}html.theme--catppuccin-mocha .tag.is-warning:not(body),html.theme--catppuccin-mocha .content kbd.is-warning:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-warning:not(body){background-color:#f9e2af;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .tag.is-warning.is-light:not(body),html.theme--catppuccin-mocha .content kbd.is-warning.is-light:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-warning.is-light:not(body){background-color:#fef8ec;color:#8a620a}html.theme--catppuccin-mocha .tag.is-danger:not(body),html.theme--catppuccin-mocha .content kbd.is-danger:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-danger:not(body){background-color:#f38ba8;color:#fff}html.theme--catppuccin-mocha .tag.is-danger.is-light:not(body),html.theme--catppuccin-mocha .content kbd.is-danger.is-light:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-danger.is-light:not(body){background-color:#fdedf1;color:#991036}html.theme--catppuccin-mocha .tag.is-normal:not(body),html.theme--catppuccin-mocha .content kbd.is-normal:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-normal:not(body){font-size:.75rem}html.theme--catppuccin-mocha .tag.is-medium:not(body),html.theme--catppuccin-mocha .content kbd.is-medium:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-medium:not(body){font-size:1rem}html.theme--catppuccin-mocha .tag.is-large:not(body),html.theme--catppuccin-mocha .content kbd.is-large:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-large:not(body){font-size:1.25rem}html.theme--catppuccin-mocha .tag:not(body) .icon:first-child:not(:last-child),html.theme--catppuccin-mocha .content kbd:not(body) .icon:first-child:not(:last-child),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}html.theme--catppuccin-mocha .tag:not(body) .icon:last-child:not(:first-child),html.theme--catppuccin-mocha .content kbd:not(body) .icon:last-child:not(:first-child),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}html.theme--catppuccin-mocha .tag:not(body) .icon:first-child:last-child,html.theme--catppuccin-mocha .content kbd:not(body) .icon:first-child:last-child,html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}html.theme--catppuccin-mocha .tag.is-delete:not(body),html.theme--catppuccin-mocha .content kbd.is-delete:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-delete:not(body){margin-left:1px;padding:0;position:relative;width:2em}html.theme--catppuccin-mocha .tag.is-delete:not(body)::before,html.theme--catppuccin-mocha .content kbd.is-delete:not(body)::before,html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-delete:not(body)::before,html.theme--catppuccin-mocha .tag.is-delete:not(body)::after,html.theme--catppuccin-mocha .content kbd.is-delete:not(body)::after,html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--catppuccin-mocha .tag.is-delete:not(body)::before,html.theme--catppuccin-mocha .content kbd.is-delete:not(body)::before,html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-delete:not(body)::before{height:1px;width:50%}html.theme--catppuccin-mocha .tag.is-delete:not(body)::after,html.theme--catppuccin-mocha .content kbd.is-delete:not(body)::after,html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{height:50%;width:1px}html.theme--catppuccin-mocha .tag.is-delete:not(body):hover,html.theme--catppuccin-mocha .content kbd.is-delete:not(body):hover,html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-delete:not(body):hover,html.theme--catppuccin-mocha .tag.is-delete:not(body):focus,html.theme--catppuccin-mocha .content kbd.is-delete:not(body):focus,html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-delete:not(body):focus{background-color:#0e0e16}html.theme--catppuccin-mocha .tag.is-delete:not(body):active,html.theme--catppuccin-mocha .content kbd.is-delete:not(body):active,html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-delete:not(body):active{background-color:#040406}html.theme--catppuccin-mocha .tag.is-rounded:not(body),html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input:not(body),html.theme--catppuccin-mocha .content kbd.is-rounded:not(body),html.theme--catppuccin-mocha #documenter .docs-sidebar .content form.docs-search>input:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-rounded:not(body){border-radius:9999px}html.theme--catppuccin-mocha a.tag:hover,html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink:hover{text-decoration:underline}html.theme--catppuccin-mocha .title,html.theme--catppuccin-mocha .subtitle{word-break:break-word}html.theme--catppuccin-mocha .title em,html.theme--catppuccin-mocha .title span,html.theme--catppuccin-mocha .subtitle em,html.theme--catppuccin-mocha .subtitle span{font-weight:inherit}html.theme--catppuccin-mocha .title sub,html.theme--catppuccin-mocha .subtitle sub{font-size:.75em}html.theme--catppuccin-mocha .title sup,html.theme--catppuccin-mocha .subtitle sup{font-size:.75em}html.theme--catppuccin-mocha .title .tag,html.theme--catppuccin-mocha .title .content kbd,html.theme--catppuccin-mocha .content .title kbd,html.theme--catppuccin-mocha .title .docstring>section>a.docs-sourcelink,html.theme--catppuccin-mocha .subtitle .tag,html.theme--catppuccin-mocha .subtitle .content kbd,html.theme--catppuccin-mocha .content .subtitle kbd,html.theme--catppuccin-mocha .subtitle .docstring>section>a.docs-sourcelink{vertical-align:middle}html.theme--catppuccin-mocha .title{color:#fff;font-size:2rem;font-weight:500;line-height:1.125}html.theme--catppuccin-mocha .title strong{color:inherit;font-weight:inherit}html.theme--catppuccin-mocha .title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}html.theme--catppuccin-mocha .title.is-1{font-size:3rem}html.theme--catppuccin-mocha .title.is-2{font-size:2.5rem}html.theme--catppuccin-mocha .title.is-3{font-size:2rem}html.theme--catppuccin-mocha .title.is-4{font-size:1.5rem}html.theme--catppuccin-mocha .title.is-5{font-size:1.25rem}html.theme--catppuccin-mocha .title.is-6{font-size:1rem}html.theme--catppuccin-mocha .title.is-7{font-size:.75rem}html.theme--catppuccin-mocha .subtitle{color:#6c7086;font-size:1.25rem;font-weight:400;line-height:1.25}html.theme--catppuccin-mocha .subtitle strong{color:#6c7086;font-weight:600}html.theme--catppuccin-mocha .subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}html.theme--catppuccin-mocha .subtitle.is-1{font-size:3rem}html.theme--catppuccin-mocha .subtitle.is-2{font-size:2.5rem}html.theme--catppuccin-mocha .subtitle.is-3{font-size:2rem}html.theme--catppuccin-mocha .subtitle.is-4{font-size:1.5rem}html.theme--catppuccin-mocha .subtitle.is-5{font-size:1.25rem}html.theme--catppuccin-mocha .subtitle.is-6{font-size:1rem}html.theme--catppuccin-mocha .subtitle.is-7{font-size:.75rem}html.theme--catppuccin-mocha .heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}html.theme--catppuccin-mocha .number{align-items:center;background-color:#181825;border-radius:9999px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:0.25rem 0.5rem;text-align:center;vertical-align:top}html.theme--catppuccin-mocha .select select,html.theme--catppuccin-mocha .textarea,html.theme--catppuccin-mocha .input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input{background-color:#1e1e2e;border-color:#585b70;border-radius:.4em;color:#7f849c}html.theme--catppuccin-mocha .select select::-moz-placeholder,html.theme--catppuccin-mocha .textarea::-moz-placeholder,html.theme--catppuccin-mocha .input::-moz-placeholder,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:#868c98}html.theme--catppuccin-mocha .select select::-webkit-input-placeholder,html.theme--catppuccin-mocha .textarea::-webkit-input-placeholder,html.theme--catppuccin-mocha .input::-webkit-input-placeholder,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:#868c98}html.theme--catppuccin-mocha .select select:-moz-placeholder,html.theme--catppuccin-mocha .textarea:-moz-placeholder,html.theme--catppuccin-mocha .input:-moz-placeholder,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:#868c98}html.theme--catppuccin-mocha .select select:-ms-input-placeholder,html.theme--catppuccin-mocha .textarea:-ms-input-placeholder,html.theme--catppuccin-mocha .input:-ms-input-placeholder,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:#868c98}html.theme--catppuccin-mocha .select select:hover,html.theme--catppuccin-mocha .textarea:hover,html.theme--catppuccin-mocha .input:hover,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input:hover,html.theme--catppuccin-mocha .select select.is-hovered,html.theme--catppuccin-mocha .is-hovered.textarea,html.theme--catppuccin-mocha .is-hovered.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-hovered{border-color:#6c7086}html.theme--catppuccin-mocha .select select:focus,html.theme--catppuccin-mocha .textarea:focus,html.theme--catppuccin-mocha .input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input:focus,html.theme--catppuccin-mocha .select select.is-focused,html.theme--catppuccin-mocha .is-focused.textarea,html.theme--catppuccin-mocha .is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .select select:active,html.theme--catppuccin-mocha .textarea:active,html.theme--catppuccin-mocha .input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input:active,html.theme--catppuccin-mocha .select select.is-active,html.theme--catppuccin-mocha .is-active.textarea,html.theme--catppuccin-mocha .is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active{border-color:#89b4fa;box-shadow:0 0 0 0.125em rgba(137,180,250,0.25)}html.theme--catppuccin-mocha .select select[disabled],html.theme--catppuccin-mocha .textarea[disabled],html.theme--catppuccin-mocha .input[disabled],html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input[disabled],fieldset[disabled] html.theme--catppuccin-mocha .select select,fieldset[disabled] html.theme--catppuccin-mocha .textarea,fieldset[disabled] html.theme--catppuccin-mocha .input,fieldset[disabled] html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input{background-color:#6c7086;border-color:#181825;box-shadow:none;color:#f7f8fd}html.theme--catppuccin-mocha .select select[disabled]::-moz-placeholder,html.theme--catppuccin-mocha .textarea[disabled]::-moz-placeholder,html.theme--catppuccin-mocha .input[disabled]::-moz-placeholder,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input[disabled]::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .select select::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .textarea::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .input::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:rgba(247,248,253,0.3)}html.theme--catppuccin-mocha .select select[disabled]::-webkit-input-placeholder,html.theme--catppuccin-mocha .textarea[disabled]::-webkit-input-placeholder,html.theme--catppuccin-mocha .input[disabled]::-webkit-input-placeholder,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input[disabled]::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .select select::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .textarea::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .input::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:rgba(247,248,253,0.3)}html.theme--catppuccin-mocha .select select[disabled]:-moz-placeholder,html.theme--catppuccin-mocha .textarea[disabled]:-moz-placeholder,html.theme--catppuccin-mocha .input[disabled]:-moz-placeholder,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input[disabled]:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .select select:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .textarea:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .input:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:rgba(247,248,253,0.3)}html.theme--catppuccin-mocha .select select[disabled]:-ms-input-placeholder,html.theme--catppuccin-mocha .textarea[disabled]:-ms-input-placeholder,html.theme--catppuccin-mocha .input[disabled]:-ms-input-placeholder,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input[disabled]:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .select select:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .textarea:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .input:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:rgba(247,248,253,0.3)}html.theme--catppuccin-mocha .textarea,html.theme--catppuccin-mocha .input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input{box-shadow:inset 0 0.0625em 0.125em rgba(10,10,10,0.05);max-width:100%;width:100%}html.theme--catppuccin-mocha .textarea[readonly],html.theme--catppuccin-mocha .input[readonly],html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input[readonly]{box-shadow:none}html.theme--catppuccin-mocha .is-white.textarea,html.theme--catppuccin-mocha .is-white.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-white{border-color:#fff}html.theme--catppuccin-mocha .is-white.textarea:focus,html.theme--catppuccin-mocha .is-white.input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-white:focus,html.theme--catppuccin-mocha .is-white.is-focused.textarea,html.theme--catppuccin-mocha .is-white.is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .is-white.textarea:active,html.theme--catppuccin-mocha .is-white.input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-white:active,html.theme--catppuccin-mocha .is-white.is-active.textarea,html.theme--catppuccin-mocha .is-white.is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-mocha .is-black.textarea,html.theme--catppuccin-mocha .is-black.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-black{border-color:#0a0a0a}html.theme--catppuccin-mocha .is-black.textarea:focus,html.theme--catppuccin-mocha .is-black.input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-black:focus,html.theme--catppuccin-mocha .is-black.is-focused.textarea,html.theme--catppuccin-mocha .is-black.is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .is-black.textarea:active,html.theme--catppuccin-mocha .is-black.input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-black:active,html.theme--catppuccin-mocha .is-black.is-active.textarea,html.theme--catppuccin-mocha .is-black.is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-mocha .is-light.textarea,html.theme--catppuccin-mocha .is-light.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-light{border-color:#f5f5f5}html.theme--catppuccin-mocha .is-light.textarea:focus,html.theme--catppuccin-mocha .is-light.input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-light:focus,html.theme--catppuccin-mocha .is-light.is-focused.textarea,html.theme--catppuccin-mocha .is-light.is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .is-light.textarea:active,html.theme--catppuccin-mocha .is-light.input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-light:active,html.theme--catppuccin-mocha .is-light.is-active.textarea,html.theme--catppuccin-mocha .is-light.is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-mocha .is-dark.textarea,html.theme--catppuccin-mocha .content kbd.textarea,html.theme--catppuccin-mocha .is-dark.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-dark,html.theme--catppuccin-mocha .content kbd.input{border-color:#313244}html.theme--catppuccin-mocha .is-dark.textarea:focus,html.theme--catppuccin-mocha .content kbd.textarea:focus,html.theme--catppuccin-mocha .is-dark.input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-dark:focus,html.theme--catppuccin-mocha .content kbd.input:focus,html.theme--catppuccin-mocha .is-dark.is-focused.textarea,html.theme--catppuccin-mocha .content kbd.is-focused.textarea,html.theme--catppuccin-mocha .is-dark.is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .content kbd.is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar .content form.docs-search>input.is-focused,html.theme--catppuccin-mocha .is-dark.textarea:active,html.theme--catppuccin-mocha .content kbd.textarea:active,html.theme--catppuccin-mocha .is-dark.input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-dark:active,html.theme--catppuccin-mocha .content kbd.input:active,html.theme--catppuccin-mocha .is-dark.is-active.textarea,html.theme--catppuccin-mocha .content kbd.is-active.textarea,html.theme--catppuccin-mocha .is-dark.is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-mocha .content kbd.is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar .content form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(49,50,68,0.25)}html.theme--catppuccin-mocha .is-primary.textarea,html.theme--catppuccin-mocha .docstring>section>a.textarea.docs-sourcelink,html.theme--catppuccin-mocha .is-primary.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-primary,html.theme--catppuccin-mocha .docstring>section>a.input.docs-sourcelink{border-color:#89b4fa}html.theme--catppuccin-mocha .is-primary.textarea:focus,html.theme--catppuccin-mocha .docstring>section>a.textarea.docs-sourcelink:focus,html.theme--catppuccin-mocha .is-primary.input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-primary:focus,html.theme--catppuccin-mocha .docstring>section>a.input.docs-sourcelink:focus,html.theme--catppuccin-mocha .is-primary.is-focused.textarea,html.theme--catppuccin-mocha .docstring>section>a.is-focused.textarea.docs-sourcelink,html.theme--catppuccin-mocha .is-primary.is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .docstring>section>a.is-focused.input.docs-sourcelink,html.theme--catppuccin-mocha .is-primary.textarea:active,html.theme--catppuccin-mocha .docstring>section>a.textarea.docs-sourcelink:active,html.theme--catppuccin-mocha .is-primary.input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-primary:active,html.theme--catppuccin-mocha .docstring>section>a.input.docs-sourcelink:active,html.theme--catppuccin-mocha .is-primary.is-active.textarea,html.theme--catppuccin-mocha .docstring>section>a.is-active.textarea.docs-sourcelink,html.theme--catppuccin-mocha .is-primary.is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-mocha .docstring>section>a.is-active.input.docs-sourcelink{box-shadow:0 0 0 0.125em rgba(137,180,250,0.25)}html.theme--catppuccin-mocha .is-link.textarea,html.theme--catppuccin-mocha .is-link.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-link{border-color:#89b4fa}html.theme--catppuccin-mocha .is-link.textarea:focus,html.theme--catppuccin-mocha .is-link.input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-link:focus,html.theme--catppuccin-mocha .is-link.is-focused.textarea,html.theme--catppuccin-mocha .is-link.is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .is-link.textarea:active,html.theme--catppuccin-mocha .is-link.input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-link:active,html.theme--catppuccin-mocha .is-link.is-active.textarea,html.theme--catppuccin-mocha .is-link.is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(137,180,250,0.25)}html.theme--catppuccin-mocha .is-info.textarea,html.theme--catppuccin-mocha .is-info.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-info{border-color:#94e2d5}html.theme--catppuccin-mocha .is-info.textarea:focus,html.theme--catppuccin-mocha .is-info.input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-info:focus,html.theme--catppuccin-mocha .is-info.is-focused.textarea,html.theme--catppuccin-mocha .is-info.is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .is-info.textarea:active,html.theme--catppuccin-mocha .is-info.input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-info:active,html.theme--catppuccin-mocha .is-info.is-active.textarea,html.theme--catppuccin-mocha .is-info.is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(148,226,213,0.25)}html.theme--catppuccin-mocha .is-success.textarea,html.theme--catppuccin-mocha .is-success.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-success{border-color:#a6e3a1}html.theme--catppuccin-mocha .is-success.textarea:focus,html.theme--catppuccin-mocha .is-success.input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-success:focus,html.theme--catppuccin-mocha .is-success.is-focused.textarea,html.theme--catppuccin-mocha .is-success.is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .is-success.textarea:active,html.theme--catppuccin-mocha .is-success.input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-success:active,html.theme--catppuccin-mocha .is-success.is-active.textarea,html.theme--catppuccin-mocha .is-success.is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(166,227,161,0.25)}html.theme--catppuccin-mocha .is-warning.textarea,html.theme--catppuccin-mocha .is-warning.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-warning{border-color:#f9e2af}html.theme--catppuccin-mocha .is-warning.textarea:focus,html.theme--catppuccin-mocha .is-warning.input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-warning:focus,html.theme--catppuccin-mocha .is-warning.is-focused.textarea,html.theme--catppuccin-mocha .is-warning.is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .is-warning.textarea:active,html.theme--catppuccin-mocha .is-warning.input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-warning:active,html.theme--catppuccin-mocha .is-warning.is-active.textarea,html.theme--catppuccin-mocha .is-warning.is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(249,226,175,0.25)}html.theme--catppuccin-mocha .is-danger.textarea,html.theme--catppuccin-mocha .is-danger.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-danger{border-color:#f38ba8}html.theme--catppuccin-mocha .is-danger.textarea:focus,html.theme--catppuccin-mocha .is-danger.input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-danger:focus,html.theme--catppuccin-mocha .is-danger.is-focused.textarea,html.theme--catppuccin-mocha .is-danger.is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .is-danger.textarea:active,html.theme--catppuccin-mocha .is-danger.input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-danger:active,html.theme--catppuccin-mocha .is-danger.is-active.textarea,html.theme--catppuccin-mocha .is-danger.is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(243,139,168,0.25)}html.theme--catppuccin-mocha .is-small.textarea,html.theme--catppuccin-mocha .is-small.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input{border-radius:3px;font-size:.75rem}html.theme--catppuccin-mocha .is-medium.textarea,html.theme--catppuccin-mocha .is-medium.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .is-large.textarea,html.theme--catppuccin-mocha .is-large.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .is-fullwidth.textarea,html.theme--catppuccin-mocha .is-fullwidth.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-fullwidth{display:block;width:100%}html.theme--catppuccin-mocha .is-inline.textarea,html.theme--catppuccin-mocha .is-inline.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-inline{display:inline;width:auto}html.theme--catppuccin-mocha .input.is-rounded,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input{border-radius:9999px;padding-left:calc(calc(0.75em - 1px) + 0.375em);padding-right:calc(calc(0.75em - 1px) + 0.375em)}html.theme--catppuccin-mocha .input.is-static,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}html.theme--catppuccin-mocha .textarea{display:block;max-width:100%;min-width:100%;padding:calc(0.75em - 1px);resize:vertical}html.theme--catppuccin-mocha .textarea:not([rows]){max-height:40em;min-height:8em}html.theme--catppuccin-mocha .textarea[rows]{height:initial}html.theme--catppuccin-mocha .textarea.has-fixed-size{resize:none}html.theme--catppuccin-mocha .radio,html.theme--catppuccin-mocha .checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}html.theme--catppuccin-mocha .radio input,html.theme--catppuccin-mocha .checkbox input{cursor:pointer}html.theme--catppuccin-mocha .radio:hover,html.theme--catppuccin-mocha .checkbox:hover{color:#89dceb}html.theme--catppuccin-mocha .radio[disabled],html.theme--catppuccin-mocha .checkbox[disabled],fieldset[disabled] html.theme--catppuccin-mocha .radio,fieldset[disabled] html.theme--catppuccin-mocha .checkbox,html.theme--catppuccin-mocha .radio input[disabled],html.theme--catppuccin-mocha .checkbox input[disabled]{color:#f7f8fd;cursor:not-allowed}html.theme--catppuccin-mocha .radio+.radio{margin-left:.5em}html.theme--catppuccin-mocha .select{display:inline-block;max-width:100%;position:relative;vertical-align:top}html.theme--catppuccin-mocha .select:not(.is-multiple){height:2.5em}html.theme--catppuccin-mocha .select:not(.is-multiple):not(.is-loading)::after{border-color:#89b4fa;right:1.125em;z-index:4}html.theme--catppuccin-mocha .select.is-rounded select,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.select select{border-radius:9999px;padding-left:1em}html.theme--catppuccin-mocha .select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}html.theme--catppuccin-mocha .select select::-ms-expand{display:none}html.theme--catppuccin-mocha .select select[disabled]:hover,fieldset[disabled] html.theme--catppuccin-mocha .select select:hover{border-color:#181825}html.theme--catppuccin-mocha .select select:not([multiple]){padding-right:2.5em}html.theme--catppuccin-mocha .select select[multiple]{height:auto;padding:0}html.theme--catppuccin-mocha .select select[multiple] option{padding:0.5em 1em}html.theme--catppuccin-mocha .select:not(.is-multiple):not(.is-loading):hover::after{border-color:#89dceb}html.theme--catppuccin-mocha .select.is-white:not(:hover)::after{border-color:#fff}html.theme--catppuccin-mocha .select.is-white select{border-color:#fff}html.theme--catppuccin-mocha .select.is-white select:hover,html.theme--catppuccin-mocha .select.is-white select.is-hovered{border-color:#f2f2f2}html.theme--catppuccin-mocha .select.is-white select:focus,html.theme--catppuccin-mocha .select.is-white select.is-focused,html.theme--catppuccin-mocha .select.is-white select:active,html.theme--catppuccin-mocha .select.is-white select.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-mocha .select.is-black:not(:hover)::after{border-color:#0a0a0a}html.theme--catppuccin-mocha .select.is-black select{border-color:#0a0a0a}html.theme--catppuccin-mocha .select.is-black select:hover,html.theme--catppuccin-mocha .select.is-black select.is-hovered{border-color:#000}html.theme--catppuccin-mocha .select.is-black select:focus,html.theme--catppuccin-mocha .select.is-black select.is-focused,html.theme--catppuccin-mocha .select.is-black select:active,html.theme--catppuccin-mocha .select.is-black select.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-mocha .select.is-light:not(:hover)::after{border-color:#f5f5f5}html.theme--catppuccin-mocha .select.is-light select{border-color:#f5f5f5}html.theme--catppuccin-mocha .select.is-light select:hover,html.theme--catppuccin-mocha .select.is-light select.is-hovered{border-color:#e8e8e8}html.theme--catppuccin-mocha .select.is-light select:focus,html.theme--catppuccin-mocha .select.is-light select.is-focused,html.theme--catppuccin-mocha .select.is-light select:active,html.theme--catppuccin-mocha .select.is-light select.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-mocha .select.is-dark:not(:hover)::after,html.theme--catppuccin-mocha .content kbd.select:not(:hover)::after{border-color:#313244}html.theme--catppuccin-mocha .select.is-dark select,html.theme--catppuccin-mocha .content kbd.select select{border-color:#313244}html.theme--catppuccin-mocha .select.is-dark select:hover,html.theme--catppuccin-mocha .content kbd.select select:hover,html.theme--catppuccin-mocha .select.is-dark select.is-hovered,html.theme--catppuccin-mocha .content kbd.select select.is-hovered{border-color:#262735}html.theme--catppuccin-mocha .select.is-dark select:focus,html.theme--catppuccin-mocha .content kbd.select select:focus,html.theme--catppuccin-mocha .select.is-dark select.is-focused,html.theme--catppuccin-mocha .content kbd.select select.is-focused,html.theme--catppuccin-mocha .select.is-dark select:active,html.theme--catppuccin-mocha .content kbd.select select:active,html.theme--catppuccin-mocha .select.is-dark select.is-active,html.theme--catppuccin-mocha .content kbd.select select.is-active{box-shadow:0 0 0 0.125em rgba(49,50,68,0.25)}html.theme--catppuccin-mocha .select.is-primary:not(:hover)::after,html.theme--catppuccin-mocha .docstring>section>a.select.docs-sourcelink:not(:hover)::after{border-color:#89b4fa}html.theme--catppuccin-mocha .select.is-primary select,html.theme--catppuccin-mocha .docstring>section>a.select.docs-sourcelink select{border-color:#89b4fa}html.theme--catppuccin-mocha .select.is-primary select:hover,html.theme--catppuccin-mocha .docstring>section>a.select.docs-sourcelink select:hover,html.theme--catppuccin-mocha .select.is-primary select.is-hovered,html.theme--catppuccin-mocha .docstring>section>a.select.docs-sourcelink select.is-hovered{border-color:#71a4f9}html.theme--catppuccin-mocha .select.is-primary select:focus,html.theme--catppuccin-mocha .docstring>section>a.select.docs-sourcelink select:focus,html.theme--catppuccin-mocha .select.is-primary select.is-focused,html.theme--catppuccin-mocha .docstring>section>a.select.docs-sourcelink select.is-focused,html.theme--catppuccin-mocha .select.is-primary select:active,html.theme--catppuccin-mocha .docstring>section>a.select.docs-sourcelink select:active,html.theme--catppuccin-mocha .select.is-primary select.is-active,html.theme--catppuccin-mocha .docstring>section>a.select.docs-sourcelink select.is-active{box-shadow:0 0 0 0.125em rgba(137,180,250,0.25)}html.theme--catppuccin-mocha .select.is-link:not(:hover)::after{border-color:#89b4fa}html.theme--catppuccin-mocha .select.is-link select{border-color:#89b4fa}html.theme--catppuccin-mocha .select.is-link select:hover,html.theme--catppuccin-mocha .select.is-link select.is-hovered{border-color:#71a4f9}html.theme--catppuccin-mocha .select.is-link select:focus,html.theme--catppuccin-mocha .select.is-link select.is-focused,html.theme--catppuccin-mocha .select.is-link select:active,html.theme--catppuccin-mocha .select.is-link select.is-active{box-shadow:0 0 0 0.125em rgba(137,180,250,0.25)}html.theme--catppuccin-mocha .select.is-info:not(:hover)::after{border-color:#94e2d5}html.theme--catppuccin-mocha .select.is-info select{border-color:#94e2d5}html.theme--catppuccin-mocha .select.is-info select:hover,html.theme--catppuccin-mocha .select.is-info select.is-hovered{border-color:#80ddcd}html.theme--catppuccin-mocha .select.is-info select:focus,html.theme--catppuccin-mocha .select.is-info select.is-focused,html.theme--catppuccin-mocha .select.is-info select:active,html.theme--catppuccin-mocha .select.is-info select.is-active{box-shadow:0 0 0 0.125em rgba(148,226,213,0.25)}html.theme--catppuccin-mocha .select.is-success:not(:hover)::after{border-color:#a6e3a1}html.theme--catppuccin-mocha .select.is-success select{border-color:#a6e3a1}html.theme--catppuccin-mocha .select.is-success select:hover,html.theme--catppuccin-mocha .select.is-success select.is-hovered{border-color:#93dd8d}html.theme--catppuccin-mocha .select.is-success select:focus,html.theme--catppuccin-mocha .select.is-success select.is-focused,html.theme--catppuccin-mocha .select.is-success select:active,html.theme--catppuccin-mocha .select.is-success select.is-active{box-shadow:0 0 0 0.125em rgba(166,227,161,0.25)}html.theme--catppuccin-mocha .select.is-warning:not(:hover)::after{border-color:#f9e2af}html.theme--catppuccin-mocha .select.is-warning select{border-color:#f9e2af}html.theme--catppuccin-mocha .select.is-warning select:hover,html.theme--catppuccin-mocha .select.is-warning select.is-hovered{border-color:#f7d997}html.theme--catppuccin-mocha .select.is-warning select:focus,html.theme--catppuccin-mocha .select.is-warning select.is-focused,html.theme--catppuccin-mocha .select.is-warning select:active,html.theme--catppuccin-mocha .select.is-warning select.is-active{box-shadow:0 0 0 0.125em rgba(249,226,175,0.25)}html.theme--catppuccin-mocha .select.is-danger:not(:hover)::after{border-color:#f38ba8}html.theme--catppuccin-mocha .select.is-danger select{border-color:#f38ba8}html.theme--catppuccin-mocha .select.is-danger select:hover,html.theme--catppuccin-mocha .select.is-danger select.is-hovered{border-color:#f17497}html.theme--catppuccin-mocha .select.is-danger select:focus,html.theme--catppuccin-mocha .select.is-danger select.is-focused,html.theme--catppuccin-mocha .select.is-danger select:active,html.theme--catppuccin-mocha .select.is-danger select.is-active{box-shadow:0 0 0 0.125em rgba(243,139,168,0.25)}html.theme--catppuccin-mocha .select.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.select{border-radius:3px;font-size:.75rem}html.theme--catppuccin-mocha .select.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .select.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .select.is-disabled::after{border-color:#f7f8fd !important;opacity:0.5}html.theme--catppuccin-mocha .select.is-fullwidth{width:100%}html.theme--catppuccin-mocha .select.is-fullwidth select{width:100%}html.theme--catppuccin-mocha .select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:0.625em;transform:none}html.theme--catppuccin-mocha .select.is-loading.is-small:after,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--catppuccin-mocha .select.is-loading.is-medium:after{font-size:1.25rem}html.theme--catppuccin-mocha .select.is-loading.is-large:after{font-size:1.5rem}html.theme--catppuccin-mocha .file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}html.theme--catppuccin-mocha .file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-mocha .file.is-white:hover .file-cta,html.theme--catppuccin-mocha .file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-mocha .file.is-white:focus .file-cta,html.theme--catppuccin-mocha .file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,255,255,0.25);color:#0a0a0a}html.theme--catppuccin-mocha .file.is-white:active .file-cta,html.theme--catppuccin-mocha .file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-mocha .file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-black:hover .file-cta,html.theme--catppuccin-mocha .file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-black:focus .file-cta,html.theme--catppuccin-mocha .file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(10,10,10,0.25);color:#fff}html.theme--catppuccin-mocha .file.is-black:active .file-cta,html.theme--catppuccin-mocha .file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-light:hover .file-cta,html.theme--catppuccin-mocha .file.is-light.is-hovered .file-cta{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-light:focus .file-cta,html.theme--catppuccin-mocha .file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(245,245,245,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-light:active .file-cta,html.theme--catppuccin-mocha .file.is-light.is-active .file-cta{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-dark .file-cta,html.theme--catppuccin-mocha .content kbd.file .file-cta{background-color:#313244;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-dark:hover .file-cta,html.theme--catppuccin-mocha .content kbd.file:hover .file-cta,html.theme--catppuccin-mocha .file.is-dark.is-hovered .file-cta,html.theme--catppuccin-mocha .content kbd.file.is-hovered .file-cta{background-color:#2c2d3d;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-dark:focus .file-cta,html.theme--catppuccin-mocha .content kbd.file:focus .file-cta,html.theme--catppuccin-mocha .file.is-dark.is-focused .file-cta,html.theme--catppuccin-mocha .content kbd.file.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(49,50,68,0.25);color:#fff}html.theme--catppuccin-mocha .file.is-dark:active .file-cta,html.theme--catppuccin-mocha .content kbd.file:active .file-cta,html.theme--catppuccin-mocha .file.is-dark.is-active .file-cta,html.theme--catppuccin-mocha .content kbd.file.is-active .file-cta{background-color:#262735;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-primary .file-cta,html.theme--catppuccin-mocha .docstring>section>a.file.docs-sourcelink .file-cta{background-color:#89b4fa;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-primary:hover .file-cta,html.theme--catppuccin-mocha .docstring>section>a.file.docs-sourcelink:hover .file-cta,html.theme--catppuccin-mocha .file.is-primary.is-hovered .file-cta,html.theme--catppuccin-mocha .docstring>section>a.file.is-hovered.docs-sourcelink .file-cta{background-color:#7dacf9;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-primary:focus .file-cta,html.theme--catppuccin-mocha .docstring>section>a.file.docs-sourcelink:focus .file-cta,html.theme--catppuccin-mocha .file.is-primary.is-focused .file-cta,html.theme--catppuccin-mocha .docstring>section>a.file.is-focused.docs-sourcelink .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(137,180,250,0.25);color:#fff}html.theme--catppuccin-mocha .file.is-primary:active .file-cta,html.theme--catppuccin-mocha .docstring>section>a.file.docs-sourcelink:active .file-cta,html.theme--catppuccin-mocha .file.is-primary.is-active .file-cta,html.theme--catppuccin-mocha .docstring>section>a.file.is-active.docs-sourcelink .file-cta{background-color:#71a4f9;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-link .file-cta{background-color:#89b4fa;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-link:hover .file-cta,html.theme--catppuccin-mocha .file.is-link.is-hovered .file-cta{background-color:#7dacf9;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-link:focus .file-cta,html.theme--catppuccin-mocha .file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(137,180,250,0.25);color:#fff}html.theme--catppuccin-mocha .file.is-link:active .file-cta,html.theme--catppuccin-mocha .file.is-link.is-active .file-cta{background-color:#71a4f9;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-info .file-cta{background-color:#94e2d5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-info:hover .file-cta,html.theme--catppuccin-mocha .file.is-info.is-hovered .file-cta{background-color:#8adfd1;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-info:focus .file-cta,html.theme--catppuccin-mocha .file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(148,226,213,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-info:active .file-cta,html.theme--catppuccin-mocha .file.is-info.is-active .file-cta{background-color:#80ddcd;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-success .file-cta{background-color:#a6e3a1;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-success:hover .file-cta,html.theme--catppuccin-mocha .file.is-success.is-hovered .file-cta{background-color:#9de097;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-success:focus .file-cta,html.theme--catppuccin-mocha .file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(166,227,161,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-success:active .file-cta,html.theme--catppuccin-mocha .file.is-success.is-active .file-cta{background-color:#93dd8d;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-warning .file-cta{background-color:#f9e2af;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-warning:hover .file-cta,html.theme--catppuccin-mocha .file.is-warning.is-hovered .file-cta{background-color:#f8dea3;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-warning:focus .file-cta,html.theme--catppuccin-mocha .file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(249,226,175,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-warning:active .file-cta,html.theme--catppuccin-mocha .file.is-warning.is-active .file-cta{background-color:#f7d997;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-danger .file-cta{background-color:#f38ba8;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-danger:hover .file-cta,html.theme--catppuccin-mocha .file.is-danger.is-hovered .file-cta{background-color:#f27f9f;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-danger:focus .file-cta,html.theme--catppuccin-mocha .file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(243,139,168,0.25);color:#fff}html.theme--catppuccin-mocha .file.is-danger:active .file-cta,html.theme--catppuccin-mocha .file.is-danger.is-active .file-cta{background-color:#f17497;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.file{font-size:.75rem}html.theme--catppuccin-mocha .file.is-normal{font-size:1rem}html.theme--catppuccin-mocha .file.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .file.is-medium .file-icon .fa{font-size:21px}html.theme--catppuccin-mocha .file.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .file.is-large .file-icon .fa{font-size:28px}html.theme--catppuccin-mocha .file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--catppuccin-mocha .file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-mocha .file.has-name.is-empty .file-cta{border-radius:.4em}html.theme--catppuccin-mocha .file.has-name.is-empty .file-name{display:none}html.theme--catppuccin-mocha .file.is-boxed .file-label{flex-direction:column}html.theme--catppuccin-mocha .file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}html.theme--catppuccin-mocha .file.is-boxed .file-name{border-width:0 1px 1px}html.theme--catppuccin-mocha .file.is-boxed .file-icon{height:1.5em;width:1.5em}html.theme--catppuccin-mocha .file.is-boxed .file-icon .fa{font-size:21px}html.theme--catppuccin-mocha .file.is-boxed.is-small .file-icon .fa,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-boxed .file-icon .fa{font-size:14px}html.theme--catppuccin-mocha .file.is-boxed.is-medium .file-icon .fa{font-size:28px}html.theme--catppuccin-mocha .file.is-boxed.is-large .file-icon .fa{font-size:35px}html.theme--catppuccin-mocha .file.is-boxed.has-name .file-cta{border-radius:.4em .4em 0 0}html.theme--catppuccin-mocha .file.is-boxed.has-name .file-name{border-radius:0 0 .4em .4em;border-width:0 1px 1px}html.theme--catppuccin-mocha .file.is-centered{justify-content:center}html.theme--catppuccin-mocha .file.is-fullwidth .file-label{width:100%}html.theme--catppuccin-mocha .file.is-fullwidth .file-name{flex-grow:1;max-width:none}html.theme--catppuccin-mocha .file.is-right{justify-content:flex-end}html.theme--catppuccin-mocha .file.is-right .file-cta{border-radius:0 .4em .4em 0}html.theme--catppuccin-mocha .file.is-right .file-name{border-radius:.4em 0 0 .4em;border-width:1px 0 1px 1px;order:-1}html.theme--catppuccin-mocha .file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}html.theme--catppuccin-mocha .file-label:hover .file-cta{background-color:#2c2d3d;color:#b8c5ef}html.theme--catppuccin-mocha .file-label:hover .file-name{border-color:#525569}html.theme--catppuccin-mocha .file-label:active .file-cta{background-color:#262735;color:#b8c5ef}html.theme--catppuccin-mocha .file-label:active .file-name{border-color:#4d4f62}html.theme--catppuccin-mocha .file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}html.theme--catppuccin-mocha .file-cta,html.theme--catppuccin-mocha .file-name{border-color:#585b70;border-radius:.4em;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}html.theme--catppuccin-mocha .file-cta{background-color:#313244;color:#cdd6f4}html.theme--catppuccin-mocha .file-name{border-color:#585b70;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}html.theme--catppuccin-mocha .file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}html.theme--catppuccin-mocha .file-icon .fa{font-size:14px}html.theme--catppuccin-mocha .label{color:#b8c5ef;display:block;font-size:1rem;font-weight:700}html.theme--catppuccin-mocha .label:not(:last-child){margin-bottom:0.5em}html.theme--catppuccin-mocha .label.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.label{font-size:.75rem}html.theme--catppuccin-mocha .label.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .label.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .help{display:block;font-size:.75rem;margin-top:0.25rem}html.theme--catppuccin-mocha .help.is-white{color:#fff}html.theme--catppuccin-mocha .help.is-black{color:#0a0a0a}html.theme--catppuccin-mocha .help.is-light{color:#f5f5f5}html.theme--catppuccin-mocha .help.is-dark,html.theme--catppuccin-mocha .content kbd.help{color:#313244}html.theme--catppuccin-mocha .help.is-primary,html.theme--catppuccin-mocha .docstring>section>a.help.docs-sourcelink{color:#89b4fa}html.theme--catppuccin-mocha .help.is-link{color:#89b4fa}html.theme--catppuccin-mocha .help.is-info{color:#94e2d5}html.theme--catppuccin-mocha .help.is-success{color:#a6e3a1}html.theme--catppuccin-mocha .help.is-warning{color:#f9e2af}html.theme--catppuccin-mocha .help.is-danger{color:#f38ba8}html.theme--catppuccin-mocha .field:not(:last-child){margin-bottom:0.75rem}html.theme--catppuccin-mocha .field.has-addons{display:flex;justify-content:flex-start}html.theme--catppuccin-mocha .field.has-addons .control:not(:last-child){margin-right:-1px}html.theme--catppuccin-mocha .field.has-addons .control:not(:first-child):not(:last-child) .button,html.theme--catppuccin-mocha .field.has-addons .control:not(:first-child):not(:last-child) .input,html.theme--catppuccin-mocha .field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search>input,html.theme--catppuccin-mocha .field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}html.theme--catppuccin-mocha .field.has-addons .control:first-child:not(:only-child) .button,html.theme--catppuccin-mocha .field.has-addons .control:first-child:not(:only-child) .input,html.theme--catppuccin-mocha .field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search>input,html.theme--catppuccin-mocha .field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--catppuccin-mocha .field.has-addons .control:last-child:not(:only-child) .button,html.theme--catppuccin-mocha .field.has-addons .control:last-child:not(:only-child) .input,html.theme--catppuccin-mocha .field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search>input,html.theme--catppuccin-mocha .field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-mocha .field.has-addons .control .button:not([disabled]):hover,html.theme--catppuccin-mocha .field.has-addons .control .button.is-hovered:not([disabled]),html.theme--catppuccin-mocha .field.has-addons .control .input:not([disabled]):hover,html.theme--catppuccin-mocha .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):hover,html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):hover,html.theme--catppuccin-mocha .field.has-addons .control .input.is-hovered:not([disabled]),html.theme--catppuccin-mocha .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-hovered:not([disabled]),html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-hovered:not([disabled]),html.theme--catppuccin-mocha .field.has-addons .control .select select:not([disabled]):hover,html.theme--catppuccin-mocha .field.has-addons .control .select select.is-hovered:not([disabled]){z-index:2}html.theme--catppuccin-mocha .field.has-addons .control .button:not([disabled]):focus,html.theme--catppuccin-mocha .field.has-addons .control .button.is-focused:not([disabled]),html.theme--catppuccin-mocha .field.has-addons .control .button:not([disabled]):active,html.theme--catppuccin-mocha .field.has-addons .control .button.is-active:not([disabled]),html.theme--catppuccin-mocha .field.has-addons .control .input:not([disabled]):focus,html.theme--catppuccin-mocha .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus,html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus,html.theme--catppuccin-mocha .field.has-addons .control .input.is-focused:not([disabled]),html.theme--catppuccin-mocha .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]),html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]),html.theme--catppuccin-mocha .field.has-addons .control .input:not([disabled]):active,html.theme--catppuccin-mocha .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active,html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active,html.theme--catppuccin-mocha .field.has-addons .control .input.is-active:not([disabled]),html.theme--catppuccin-mocha .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]),html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]),html.theme--catppuccin-mocha .field.has-addons .control .select select:not([disabled]):focus,html.theme--catppuccin-mocha .field.has-addons .control .select select.is-focused:not([disabled]),html.theme--catppuccin-mocha .field.has-addons .control .select select:not([disabled]):active,html.theme--catppuccin-mocha .field.has-addons .control .select select.is-active:not([disabled]){z-index:3}html.theme--catppuccin-mocha .field.has-addons .control .button:not([disabled]):focus:hover,html.theme--catppuccin-mocha .field.has-addons .control .button.is-focused:not([disabled]):hover,html.theme--catppuccin-mocha .field.has-addons .control .button:not([disabled]):active:hover,html.theme--catppuccin-mocha .field.has-addons .control .button.is-active:not([disabled]):hover,html.theme--catppuccin-mocha .field.has-addons .control .input:not([disabled]):focus:hover,html.theme--catppuccin-mocha .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus:hover,html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus:hover,html.theme--catppuccin-mocha .field.has-addons .control .input.is-focused:not([disabled]):hover,html.theme--catppuccin-mocha .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]):hover,html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]):hover,html.theme--catppuccin-mocha .field.has-addons .control .input:not([disabled]):active:hover,html.theme--catppuccin-mocha .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active:hover,html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active:hover,html.theme--catppuccin-mocha .field.has-addons .control .input.is-active:not([disabled]):hover,html.theme--catppuccin-mocha .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]):hover,html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]):hover,html.theme--catppuccin-mocha .field.has-addons .control .select select:not([disabled]):focus:hover,html.theme--catppuccin-mocha .field.has-addons .control .select select.is-focused:not([disabled]):hover,html.theme--catppuccin-mocha .field.has-addons .control .select select:not([disabled]):active:hover,html.theme--catppuccin-mocha .field.has-addons .control .select select.is-active:not([disabled]):hover{z-index:4}html.theme--catppuccin-mocha .field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-mocha .field.has-addons.has-addons-centered{justify-content:center}html.theme--catppuccin-mocha .field.has-addons.has-addons-right{justify-content:flex-end}html.theme--catppuccin-mocha .field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}html.theme--catppuccin-mocha .field.is-grouped{display:flex;justify-content:flex-start}html.theme--catppuccin-mocha .field.is-grouped>.control{flex-shrink:0}html.theme--catppuccin-mocha .field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--catppuccin-mocha .field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-mocha .field.is-grouped.is-grouped-centered{justify-content:center}html.theme--catppuccin-mocha .field.is-grouped.is-grouped-right{justify-content:flex-end}html.theme--catppuccin-mocha .field.is-grouped.is-grouped-multiline{flex-wrap:wrap}html.theme--catppuccin-mocha .field.is-grouped.is-grouped-multiline>.control:last-child,html.theme--catppuccin-mocha .field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:0.75rem}html.theme--catppuccin-mocha .field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}html.theme--catppuccin-mocha .field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .field.is-horizontal{display:flex}}html.theme--catppuccin-mocha .field-label .label{font-size:inherit}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .field-label{margin-bottom:0.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}html.theme--catppuccin-mocha .field-label.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.field-label{font-size:.75rem;padding-top:0.375em}html.theme--catppuccin-mocha .field-label.is-normal{padding-top:0.375em}html.theme--catppuccin-mocha .field-label.is-medium{font-size:1.25rem;padding-top:0.375em}html.theme--catppuccin-mocha .field-label.is-large{font-size:1.5rem;padding-top:0.375em}}html.theme--catppuccin-mocha .field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}html.theme--catppuccin-mocha .field-body .field{margin-bottom:0}html.theme--catppuccin-mocha .field-body>.field{flex-shrink:1}html.theme--catppuccin-mocha .field-body>.field:not(.is-narrow){flex-grow:1}html.theme--catppuccin-mocha .field-body>.field:not(:last-child){margin-right:.75rem}}html.theme--catppuccin-mocha .control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}html.theme--catppuccin-mocha .control.has-icons-left .input:focus~.icon,html.theme--catppuccin-mocha .control.has-icons-left #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--catppuccin-mocha #documenter .docs-sidebar .control.has-icons-left form.docs-search>input:focus~.icon,html.theme--catppuccin-mocha .control.has-icons-left .select:focus~.icon,html.theme--catppuccin-mocha .control.has-icons-right .input:focus~.icon,html.theme--catppuccin-mocha .control.has-icons-right #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--catppuccin-mocha #documenter .docs-sidebar .control.has-icons-right form.docs-search>input:focus~.icon,html.theme--catppuccin-mocha .control.has-icons-right .select:focus~.icon{color:#313244}html.theme--catppuccin-mocha .control.has-icons-left .input.is-small~.icon,html.theme--catppuccin-mocha .control.has-icons-left #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--catppuccin-mocha #documenter .docs-sidebar .control.has-icons-left form.docs-search>input~.icon,html.theme--catppuccin-mocha .control.has-icons-left .select.is-small~.icon,html.theme--catppuccin-mocha .control.has-icons-right .input.is-small~.icon,html.theme--catppuccin-mocha .control.has-icons-right #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--catppuccin-mocha #documenter .docs-sidebar .control.has-icons-right form.docs-search>input~.icon,html.theme--catppuccin-mocha .control.has-icons-right .select.is-small~.icon{font-size:.75rem}html.theme--catppuccin-mocha .control.has-icons-left .input.is-medium~.icon,html.theme--catppuccin-mocha .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--catppuccin-mocha #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-medium~.icon,html.theme--catppuccin-mocha .control.has-icons-left .select.is-medium~.icon,html.theme--catppuccin-mocha .control.has-icons-right .input.is-medium~.icon,html.theme--catppuccin-mocha .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--catppuccin-mocha #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-medium~.icon,html.theme--catppuccin-mocha .control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}html.theme--catppuccin-mocha .control.has-icons-left .input.is-large~.icon,html.theme--catppuccin-mocha .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--catppuccin-mocha #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-large~.icon,html.theme--catppuccin-mocha .control.has-icons-left .select.is-large~.icon,html.theme--catppuccin-mocha .control.has-icons-right .input.is-large~.icon,html.theme--catppuccin-mocha .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--catppuccin-mocha #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-large~.icon,html.theme--catppuccin-mocha .control.has-icons-right .select.is-large~.icon{font-size:1.5rem}html.theme--catppuccin-mocha .control.has-icons-left .icon,html.theme--catppuccin-mocha .control.has-icons-right .icon{color:#585b70;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}html.theme--catppuccin-mocha .control.has-icons-left .input,html.theme--catppuccin-mocha .control.has-icons-left #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-mocha #documenter .docs-sidebar .control.has-icons-left form.docs-search>input,html.theme--catppuccin-mocha .control.has-icons-left .select select{padding-left:2.5em}html.theme--catppuccin-mocha .control.has-icons-left .icon.is-left{left:0}html.theme--catppuccin-mocha .control.has-icons-right .input,html.theme--catppuccin-mocha .control.has-icons-right #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-mocha #documenter .docs-sidebar .control.has-icons-right form.docs-search>input,html.theme--catppuccin-mocha .control.has-icons-right .select select{padding-right:2.5em}html.theme--catppuccin-mocha .control.has-icons-right .icon.is-right{right:0}html.theme--catppuccin-mocha .control.is-loading::after{position:absolute !important;right:.625em;top:0.625em;z-index:4}html.theme--catppuccin-mocha .control.is-loading.is-small:after,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--catppuccin-mocha .control.is-loading.is-medium:after{font-size:1.25rem}html.theme--catppuccin-mocha .control.is-loading.is-large:after{font-size:1.5rem}html.theme--catppuccin-mocha .breadcrumb{font-size:1rem;white-space:nowrap}html.theme--catppuccin-mocha .breadcrumb a{align-items:center;color:#89b4fa;display:flex;justify-content:center;padding:0 .75em}html.theme--catppuccin-mocha .breadcrumb a:hover{color:#89dceb}html.theme--catppuccin-mocha .breadcrumb li{align-items:center;display:flex}html.theme--catppuccin-mocha .breadcrumb li:first-child a{padding-left:0}html.theme--catppuccin-mocha .breadcrumb li.is-active a{color:#b8c5ef;cursor:default;pointer-events:none}html.theme--catppuccin-mocha .breadcrumb li+li::before{color:#6c7086;content:"\0002f"}html.theme--catppuccin-mocha .breadcrumb ul,html.theme--catppuccin-mocha .breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-mocha .breadcrumb .icon:first-child{margin-right:.5em}html.theme--catppuccin-mocha .breadcrumb .icon:last-child{margin-left:.5em}html.theme--catppuccin-mocha .breadcrumb.is-centered ol,html.theme--catppuccin-mocha .breadcrumb.is-centered ul{justify-content:center}html.theme--catppuccin-mocha .breadcrumb.is-right ol,html.theme--catppuccin-mocha .breadcrumb.is-right ul{justify-content:flex-end}html.theme--catppuccin-mocha .breadcrumb.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.breadcrumb{font-size:.75rem}html.theme--catppuccin-mocha .breadcrumb.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .breadcrumb.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .breadcrumb.has-arrow-separator li+li::before{content:"\02192"}html.theme--catppuccin-mocha .breadcrumb.has-bullet-separator li+li::before{content:"\02022"}html.theme--catppuccin-mocha .breadcrumb.has-dot-separator li+li::before{content:"\000b7"}html.theme--catppuccin-mocha .breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}html.theme--catppuccin-mocha .card{background-color:#fff;border-radius:.25rem;box-shadow:#171717;color:#cdd6f4;max-width:100%;position:relative}html.theme--catppuccin-mocha .card-footer:first-child,html.theme--catppuccin-mocha .card-content:first-child,html.theme--catppuccin-mocha .card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--catppuccin-mocha .card-footer:last-child,html.theme--catppuccin-mocha .card-content:last-child,html.theme--catppuccin-mocha .card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--catppuccin-mocha .card-header{background-color:rgba(0,0,0,0);align-items:stretch;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);display:flex}html.theme--catppuccin-mocha .card-header-title{align-items:center;color:#b8c5ef;display:flex;flex-grow:1;font-weight:700;padding:0.75rem 1rem}html.theme--catppuccin-mocha .card-header-title.is-centered{justify-content:center}html.theme--catppuccin-mocha .card-header-icon{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0;align-items:center;cursor:pointer;display:flex;justify-content:center;padding:0.75rem 1rem}html.theme--catppuccin-mocha .card-image{display:block;position:relative}html.theme--catppuccin-mocha .card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--catppuccin-mocha .card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--catppuccin-mocha .card-content{background-color:rgba(0,0,0,0);padding:1.5rem}html.theme--catppuccin-mocha .card-footer{background-color:rgba(0,0,0,0);border-top:1px solid #ededed;align-items:stretch;display:flex}html.theme--catppuccin-mocha .card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}html.theme--catppuccin-mocha .card-footer-item:not(:last-child){border-right:1px solid #ededed}html.theme--catppuccin-mocha .card .media:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-mocha .dropdown{display:inline-flex;position:relative;vertical-align:top}html.theme--catppuccin-mocha .dropdown.is-active .dropdown-menu,html.theme--catppuccin-mocha .dropdown.is-hoverable:hover .dropdown-menu{display:block}html.theme--catppuccin-mocha .dropdown.is-right .dropdown-menu{left:auto;right:0}html.theme--catppuccin-mocha .dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}html.theme--catppuccin-mocha .dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}html.theme--catppuccin-mocha .dropdown-content{background-color:#181825;border-radius:.4em;box-shadow:#171717;padding-bottom:.5rem;padding-top:.5rem}html.theme--catppuccin-mocha .dropdown-item{color:#cdd6f4;display:block;font-size:0.875rem;line-height:1.5;padding:0.375rem 1rem;position:relative}html.theme--catppuccin-mocha a.dropdown-item,html.theme--catppuccin-mocha button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}html.theme--catppuccin-mocha a.dropdown-item:hover,html.theme--catppuccin-mocha button.dropdown-item:hover{background-color:#181825;color:#0a0a0a}html.theme--catppuccin-mocha a.dropdown-item.is-active,html.theme--catppuccin-mocha button.dropdown-item.is-active{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:0.5rem 0}html.theme--catppuccin-mocha .level{align-items:center;justify-content:space-between}html.theme--catppuccin-mocha .level code{border-radius:.4em}html.theme--catppuccin-mocha .level img{display:inline-block;vertical-align:top}html.theme--catppuccin-mocha .level.is-mobile{display:flex}html.theme--catppuccin-mocha .level.is-mobile .level-left,html.theme--catppuccin-mocha .level.is-mobile .level-right{display:flex}html.theme--catppuccin-mocha .level.is-mobile .level-left+.level-right{margin-top:0}html.theme--catppuccin-mocha .level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--catppuccin-mocha .level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .level{display:flex}html.theme--catppuccin-mocha .level>.level-item:not(.is-narrow){flex-grow:1}}html.theme--catppuccin-mocha .level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}html.theme--catppuccin-mocha .level-item .title,html.theme--catppuccin-mocha .level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .level-item:not(:last-child){margin-bottom:.75rem}}html.theme--catppuccin-mocha .level-left,html.theme--catppuccin-mocha .level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--catppuccin-mocha .level-left .level-item.is-flexible,html.theme--catppuccin-mocha .level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .level-left .level-item:not(:last-child),html.theme--catppuccin-mocha .level-right .level-item:not(:last-child){margin-right:.75rem}}html.theme--catppuccin-mocha .level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .level-left{display:flex}}html.theme--catppuccin-mocha .level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .level-right{display:flex}}html.theme--catppuccin-mocha .media{align-items:flex-start;display:flex;text-align:inherit}html.theme--catppuccin-mocha .media .content:not(:last-child){margin-bottom:.75rem}html.theme--catppuccin-mocha .media .media{border-top:1px solid rgba(88,91,112,0.5);display:flex;padding-top:.75rem}html.theme--catppuccin-mocha .media .media .content:not(:last-child),html.theme--catppuccin-mocha .media .media .control:not(:last-child){margin-bottom:.5rem}html.theme--catppuccin-mocha .media .media .media{padding-top:.5rem}html.theme--catppuccin-mocha .media .media .media+.media{margin-top:.5rem}html.theme--catppuccin-mocha .media+.media{border-top:1px solid rgba(88,91,112,0.5);margin-top:1rem;padding-top:1rem}html.theme--catppuccin-mocha .media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}html.theme--catppuccin-mocha .media-left,html.theme--catppuccin-mocha .media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--catppuccin-mocha .media-left{margin-right:1rem}html.theme--catppuccin-mocha .media-right{margin-left:1rem}html.theme--catppuccin-mocha .media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .media-content{overflow-x:auto}}html.theme--catppuccin-mocha .menu{font-size:1rem}html.theme--catppuccin-mocha .menu.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.menu{font-size:.75rem}html.theme--catppuccin-mocha .menu.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .menu.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .menu-list{line-height:1.25}html.theme--catppuccin-mocha .menu-list a{border-radius:3px;color:#cdd6f4;display:block;padding:0.5em 0.75em}html.theme--catppuccin-mocha .menu-list a:hover{background-color:#181825;color:#b8c5ef}html.theme--catppuccin-mocha .menu-list a.is-active{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .menu-list li ul{border-left:1px solid #585b70;margin:.75em;padding-left:.75em}html.theme--catppuccin-mocha .menu-label{color:#f7f8fd;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}html.theme--catppuccin-mocha .menu-label:not(:first-child){margin-top:1em}html.theme--catppuccin-mocha .menu-label:not(:last-child){margin-bottom:1em}html.theme--catppuccin-mocha .message{background-color:#181825;border-radius:.4em;font-size:1rem}html.theme--catppuccin-mocha .message strong{color:currentColor}html.theme--catppuccin-mocha .message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--catppuccin-mocha .message.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.message{font-size:.75rem}html.theme--catppuccin-mocha .message.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .message.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .message.is-white{background-color:#fff}html.theme--catppuccin-mocha .message.is-white .message-header{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-mocha .message.is-white .message-body{border-color:#fff}html.theme--catppuccin-mocha .message.is-black{background-color:#fafafa}html.theme--catppuccin-mocha .message.is-black .message-header{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-mocha .message.is-black .message-body{border-color:#0a0a0a}html.theme--catppuccin-mocha .message.is-light{background-color:#fafafa}html.theme--catppuccin-mocha .message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .message.is-light .message-body{border-color:#f5f5f5}html.theme--catppuccin-mocha .message.is-dark,html.theme--catppuccin-mocha .content kbd.message{background-color:#f9f9fb}html.theme--catppuccin-mocha .message.is-dark .message-header,html.theme--catppuccin-mocha .content kbd.message .message-header{background-color:#313244;color:#fff}html.theme--catppuccin-mocha .message.is-dark .message-body,html.theme--catppuccin-mocha .content kbd.message .message-body{border-color:#313244}html.theme--catppuccin-mocha .message.is-primary,html.theme--catppuccin-mocha .docstring>section>a.message.docs-sourcelink{background-color:#ebf3fe}html.theme--catppuccin-mocha .message.is-primary .message-header,html.theme--catppuccin-mocha .docstring>section>a.message.docs-sourcelink .message-header{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .message.is-primary .message-body,html.theme--catppuccin-mocha .docstring>section>a.message.docs-sourcelink .message-body{border-color:#89b4fa;color:#063c93}html.theme--catppuccin-mocha .message.is-link{background-color:#ebf3fe}html.theme--catppuccin-mocha .message.is-link .message-header{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .message.is-link .message-body{border-color:#89b4fa;color:#063c93}html.theme--catppuccin-mocha .message.is-info{background-color:#effbf9}html.theme--catppuccin-mocha .message.is-info .message-header{background-color:#94e2d5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .message.is-info .message-body{border-color:#94e2d5;color:#207466}html.theme--catppuccin-mocha .message.is-success{background-color:#f0faef}html.theme--catppuccin-mocha .message.is-success .message-header{background-color:#a6e3a1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .message.is-success .message-body{border-color:#a6e3a1;color:#287222}html.theme--catppuccin-mocha .message.is-warning{background-color:#fef8ec}html.theme--catppuccin-mocha .message.is-warning .message-header{background-color:#f9e2af;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .message.is-warning .message-body{border-color:#f9e2af;color:#8a620a}html.theme--catppuccin-mocha .message.is-danger{background-color:#fdedf1}html.theme--catppuccin-mocha .message.is-danger .message-header{background-color:#f38ba8;color:#fff}html.theme--catppuccin-mocha .message.is-danger .message-body{border-color:#f38ba8;color:#991036}html.theme--catppuccin-mocha .message-header{align-items:center;background-color:#cdd6f4;border-radius:.4em .4em 0 0;color:rgba(0,0,0,0.7);display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.75em 1em;position:relative}html.theme--catppuccin-mocha .message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}html.theme--catppuccin-mocha .message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}html.theme--catppuccin-mocha .message-body{border-color:#585b70;border-radius:.4em;border-style:solid;border-width:0 0 0 4px;color:#cdd6f4;padding:1.25em 1.5em}html.theme--catppuccin-mocha .message-body code,html.theme--catppuccin-mocha .message-body pre{background-color:#fff}html.theme--catppuccin-mocha .message-body pre code{background-color:rgba(0,0,0,0)}html.theme--catppuccin-mocha .modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}html.theme--catppuccin-mocha .modal.is-active{display:flex}html.theme--catppuccin-mocha .modal-background{background-color:rgba(10,10,10,0.86)}html.theme--catppuccin-mocha .modal-content,html.theme--catppuccin-mocha .modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px){html.theme--catppuccin-mocha .modal-content,html.theme--catppuccin-mocha .modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}html.theme--catppuccin-mocha .modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}html.theme--catppuccin-mocha .modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}html.theme--catppuccin-mocha .modal-card-head,html.theme--catppuccin-mocha .modal-card-foot{align-items:center;background-color:#181825;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}html.theme--catppuccin-mocha .modal-card-head{border-bottom:1px solid #585b70;border-top-left-radius:8px;border-top-right-radius:8px}html.theme--catppuccin-mocha .modal-card-title{color:#cdd6f4;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}html.theme--catppuccin-mocha .modal-card-foot{border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid #585b70}html.theme--catppuccin-mocha .modal-card-foot .button:not(:last-child){margin-right:.5em}html.theme--catppuccin-mocha .modal-card-body{-webkit-overflow-scrolling:touch;background-color:#1e1e2e;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}html.theme--catppuccin-mocha .navbar{background-color:#89b4fa;min-height:4rem;position:relative;z-index:30}html.theme--catppuccin-mocha .navbar.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-mocha .navbar.is-white .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}html.theme--catppuccin-mocha .navbar.is-white .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-white .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-white .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-white .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-white .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-mocha .navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}html.theme--catppuccin-mocha .navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .navbar.is-white .navbar-start>.navbar-item,html.theme--catppuccin-mocha .navbar.is-white .navbar-start .navbar-link,html.theme--catppuccin-mocha .navbar.is-white .navbar-end>.navbar-item,html.theme--catppuccin-mocha .navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}html.theme--catppuccin-mocha .navbar.is-white .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-white .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-white .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-white .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-white .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-white .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .navbar.is-white .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-white .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-white .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-white .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-white .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-mocha .navbar.is-white .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}html.theme--catppuccin-mocha .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-mocha .navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}html.theme--catppuccin-mocha .navbar.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-mocha .navbar.is-black .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .navbar.is-black .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-mocha .navbar.is-black .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-black .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-black .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-black .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-black .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-mocha .navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-mocha .navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .navbar.is-black .navbar-start>.navbar-item,html.theme--catppuccin-mocha .navbar.is-black .navbar-start .navbar-link,html.theme--catppuccin-mocha .navbar.is-black .navbar-end>.navbar-item,html.theme--catppuccin-mocha .navbar.is-black .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-mocha .navbar.is-black .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-black .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-black .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-black .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-black .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-black .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .navbar.is-black .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-black .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-black .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-black .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-black .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-mocha .navbar.is-black .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-mocha .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}html.theme--catppuccin-mocha .navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}html.theme--catppuccin-mocha .navbar.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-light .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .navbar.is-light .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-light .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-light .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-light .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-light .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-light .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-light .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .navbar.is-light .navbar-start>.navbar-item,html.theme--catppuccin-mocha .navbar.is-light .navbar-start .navbar-link,html.theme--catppuccin-mocha .navbar.is-light .navbar-end>.navbar-item,html.theme--catppuccin-mocha .navbar.is-light .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-light .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-light .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-light .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-light .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-light .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-light .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .navbar.is-light .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-light .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-light .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-light .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-light .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-light .navbar-end .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-light .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .navbar.is-light .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-mocha .navbar.is-dark,html.theme--catppuccin-mocha .content kbd.navbar{background-color:#313244;color:#fff}html.theme--catppuccin-mocha .navbar.is-dark .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .content kbd.navbar .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .navbar.is-dark .navbar-brand .navbar-link,html.theme--catppuccin-mocha .content kbd.navbar .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-mocha .navbar.is-dark .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .content kbd.navbar .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-dark .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .content kbd.navbar .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-dark .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .content kbd.navbar .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-dark .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .content kbd.navbar .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-dark .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .content kbd.navbar .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-dark .navbar-brand .navbar-link.is-active,html.theme--catppuccin-mocha .content kbd.navbar .navbar-brand .navbar-link.is-active{background-color:#262735;color:#fff}html.theme--catppuccin-mocha .navbar.is-dark .navbar-brand .navbar-link::after,html.theme--catppuccin-mocha .content kbd.navbar .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-mocha .navbar.is-dark .navbar-burger,html.theme--catppuccin-mocha .content kbd.navbar .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .navbar.is-dark .navbar-start>.navbar-item,html.theme--catppuccin-mocha .content kbd.navbar .navbar-start>.navbar-item,html.theme--catppuccin-mocha .navbar.is-dark .navbar-start .navbar-link,html.theme--catppuccin-mocha .content kbd.navbar .navbar-start .navbar-link,html.theme--catppuccin-mocha .navbar.is-dark .navbar-end>.navbar-item,html.theme--catppuccin-mocha .content kbd.navbar .navbar-end>.navbar-item,html.theme--catppuccin-mocha .navbar.is-dark .navbar-end .navbar-link,html.theme--catppuccin-mocha .content kbd.navbar .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-mocha .navbar.is-dark .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .content kbd.navbar .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-dark .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .content kbd.navbar .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-dark .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .content kbd.navbar .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-dark .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .content kbd.navbar .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-dark .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .content kbd.navbar .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-dark .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .content kbd.navbar .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .navbar.is-dark .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .content kbd.navbar .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-dark .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .content kbd.navbar .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-dark .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .content kbd.navbar .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-dark .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .content kbd.navbar .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-dark .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .content kbd.navbar .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-dark .navbar-end .navbar-link.is-active,html.theme--catppuccin-mocha .content kbd.navbar .navbar-end .navbar-link.is-active{background-color:#262735;color:#fff}html.theme--catppuccin-mocha .navbar.is-dark .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .content kbd.navbar .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .navbar.is-dark .navbar-end .navbar-link::after,html.theme--catppuccin-mocha .content kbd.navbar .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-mocha .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-mocha .content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link{background-color:#262735;color:#fff}html.theme--catppuccin-mocha .navbar.is-dark .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-mocha .content kbd.navbar .navbar-dropdown a.navbar-item.is-active{background-color:#313244;color:#fff}}html.theme--catppuccin-mocha .navbar.is-primary,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .navbar.is-primary .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .navbar.is-primary .navbar-brand .navbar-link,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-mocha .navbar.is-primary .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-primary .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-primary .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-primary .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-primary .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-primary .navbar-brand .navbar-link.is-active,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active{background-color:#71a4f9;color:#fff}html.theme--catppuccin-mocha .navbar.is-primary .navbar-brand .navbar-link::after,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-mocha .navbar.is-primary .navbar-burger,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .navbar.is-primary .navbar-start>.navbar-item,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-start>.navbar-item,html.theme--catppuccin-mocha .navbar.is-primary .navbar-start .navbar-link,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link,html.theme--catppuccin-mocha .navbar.is-primary .navbar-end>.navbar-item,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-end>.navbar-item,html.theme--catppuccin-mocha .navbar.is-primary .navbar-end .navbar-link,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-mocha .navbar.is-primary .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-primary .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-primary .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-primary .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-primary .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-primary .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .navbar.is-primary .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-primary .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-primary .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-primary .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-primary .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-primary .navbar-end .navbar-link.is-active,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active{background-color:#71a4f9;color:#fff}html.theme--catppuccin-mocha .navbar.is-primary .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .navbar.is-primary .navbar-end .navbar-link::after,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-mocha .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link{background-color:#71a4f9;color:#fff}html.theme--catppuccin-mocha .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#89b4fa;color:#fff}}html.theme--catppuccin-mocha .navbar.is-link{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .navbar.is-link .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .navbar.is-link .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-mocha .navbar.is-link .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-link .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-link .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-link .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-link .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#71a4f9;color:#fff}html.theme--catppuccin-mocha .navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-mocha .navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .navbar.is-link .navbar-start>.navbar-item,html.theme--catppuccin-mocha .navbar.is-link .navbar-start .navbar-link,html.theme--catppuccin-mocha .navbar.is-link .navbar-end>.navbar-item,html.theme--catppuccin-mocha .navbar.is-link .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-mocha .navbar.is-link .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-link .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-link .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-link .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-link .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-link .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .navbar.is-link .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-link .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-link .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-link .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-link .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-link .navbar-end .navbar-link.is-active{background-color:#71a4f9;color:#fff}html.theme--catppuccin-mocha .navbar.is-link .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-mocha .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#71a4f9;color:#fff}html.theme--catppuccin-mocha .navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#89b4fa;color:#fff}}html.theme--catppuccin-mocha .navbar.is-info{background-color:#94e2d5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-info .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .navbar.is-info .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-info .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-info .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-info .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-info .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-info .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#80ddcd;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-info .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-info .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .navbar.is-info .navbar-start>.navbar-item,html.theme--catppuccin-mocha .navbar.is-info .navbar-start .navbar-link,html.theme--catppuccin-mocha .navbar.is-info .navbar-end>.navbar-item,html.theme--catppuccin-mocha .navbar.is-info .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-info .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-info .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-info .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-info .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-info .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-info .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .navbar.is-info .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-info .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-info .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-info .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-info .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-info .navbar-end .navbar-link.is-active{background-color:#80ddcd;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-info .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .navbar.is-info .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#80ddcd;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#94e2d5;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-mocha .navbar.is-success{background-color:#a6e3a1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-success .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .navbar.is-success .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-success .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-success .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-success .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-success .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-success .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#93dd8d;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-success .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-success .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .navbar.is-success .navbar-start>.navbar-item,html.theme--catppuccin-mocha .navbar.is-success .navbar-start .navbar-link,html.theme--catppuccin-mocha .navbar.is-success .navbar-end>.navbar-item,html.theme--catppuccin-mocha .navbar.is-success .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-success .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-success .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-success .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-success .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-success .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-success .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .navbar.is-success .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-success .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-success .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-success .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-success .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-success .navbar-end .navbar-link.is-active{background-color:#93dd8d;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-success .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .navbar.is-success .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#93dd8d;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#a6e3a1;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-mocha .navbar.is-warning{background-color:#f9e2af;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-warning .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .navbar.is-warning .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-warning .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-warning .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-warning .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-warning .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-warning .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#f7d997;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-warning .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-warning .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .navbar.is-warning .navbar-start>.navbar-item,html.theme--catppuccin-mocha .navbar.is-warning .navbar-start .navbar-link,html.theme--catppuccin-mocha .navbar.is-warning .navbar-end>.navbar-item,html.theme--catppuccin-mocha .navbar.is-warning .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-warning .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-warning .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-warning .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-warning .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-warning .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-warning .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .navbar.is-warning .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-warning .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-warning .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-warning .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-warning .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#f7d997;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-warning .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .navbar.is-warning .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f7d997;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#f9e2af;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-mocha .navbar.is-danger{background-color:#f38ba8;color:#fff}html.theme--catppuccin-mocha .navbar.is-danger .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .navbar.is-danger .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-mocha .navbar.is-danger .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-danger .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-danger .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-danger .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-danger .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#f17497;color:#fff}html.theme--catppuccin-mocha .navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-mocha .navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .navbar.is-danger .navbar-start>.navbar-item,html.theme--catppuccin-mocha .navbar.is-danger .navbar-start .navbar-link,html.theme--catppuccin-mocha .navbar.is-danger .navbar-end>.navbar-item,html.theme--catppuccin-mocha .navbar.is-danger .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-mocha .navbar.is-danger .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-danger .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-danger .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-danger .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-danger .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-danger .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .navbar.is-danger .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-danger .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-danger .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-danger .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-danger .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#f17497;color:#fff}html.theme--catppuccin-mocha .navbar.is-danger .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-mocha .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f17497;color:#fff}html.theme--catppuccin-mocha .navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#f38ba8;color:#fff}}html.theme--catppuccin-mocha .navbar>.container{align-items:stretch;display:flex;min-height:4rem;width:100%}html.theme--catppuccin-mocha .navbar.has-shadow{box-shadow:0 2px 0 0 #181825}html.theme--catppuccin-mocha .navbar.is-fixed-bottom,html.theme--catppuccin-mocha .navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-mocha .navbar.is-fixed-bottom{bottom:0}html.theme--catppuccin-mocha .navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #181825}html.theme--catppuccin-mocha .navbar.is-fixed-top{top:0}html.theme--catppuccin-mocha html.has-navbar-fixed-top,html.theme--catppuccin-mocha body.has-navbar-fixed-top{padding-top:4rem}html.theme--catppuccin-mocha html.has-navbar-fixed-bottom,html.theme--catppuccin-mocha body.has-navbar-fixed-bottom{padding-bottom:4rem}html.theme--catppuccin-mocha .navbar-brand,html.theme--catppuccin-mocha .navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:4rem}html.theme--catppuccin-mocha .navbar-brand a.navbar-item:focus,html.theme--catppuccin-mocha .navbar-brand a.navbar-item:hover{background-color:transparent}html.theme--catppuccin-mocha .navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}html.theme--catppuccin-mocha .navbar-burger{color:#cdd6f4;-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:block;height:4rem;position:relative;width:4rem;margin-left:auto}html.theme--catppuccin-mocha .navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color, opacity, transform;transition-timing-function:ease-out;width:16px}html.theme--catppuccin-mocha .navbar-burger span:nth-child(1){top:calc(50% - 6px)}html.theme--catppuccin-mocha .navbar-burger span:nth-child(2){top:calc(50% - 1px)}html.theme--catppuccin-mocha .navbar-burger span:nth-child(3){top:calc(50% + 4px)}html.theme--catppuccin-mocha .navbar-burger:hover{background-color:rgba(0,0,0,0.05)}html.theme--catppuccin-mocha .navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}html.theme--catppuccin-mocha .navbar-burger.is-active span:nth-child(2){opacity:0}html.theme--catppuccin-mocha .navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}html.theme--catppuccin-mocha .navbar-menu{display:none}html.theme--catppuccin-mocha .navbar-item,html.theme--catppuccin-mocha .navbar-link{color:#cdd6f4;display:block;line-height:1.5;padding:0.5rem 0.75rem;position:relative}html.theme--catppuccin-mocha .navbar-item .icon:only-child,html.theme--catppuccin-mocha .navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}html.theme--catppuccin-mocha a.navbar-item,html.theme--catppuccin-mocha .navbar-link{cursor:pointer}html.theme--catppuccin-mocha a.navbar-item:focus,html.theme--catppuccin-mocha a.navbar-item:focus-within,html.theme--catppuccin-mocha a.navbar-item:hover,html.theme--catppuccin-mocha a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar-link:focus,html.theme--catppuccin-mocha .navbar-link:focus-within,html.theme--catppuccin-mocha .navbar-link:hover,html.theme--catppuccin-mocha .navbar-link.is-active{background-color:rgba(0,0,0,0);color:#89b4fa}html.theme--catppuccin-mocha .navbar-item{flex-grow:0;flex-shrink:0}html.theme--catppuccin-mocha .navbar-item img{max-height:1.75rem}html.theme--catppuccin-mocha .navbar-item.has-dropdown{padding:0}html.theme--catppuccin-mocha .navbar-item.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-mocha .navbar-item.is-tab{border-bottom:1px solid transparent;min-height:4rem;padding-bottom:calc(0.5rem - 1px)}html.theme--catppuccin-mocha .navbar-item.is-tab:focus,html.theme--catppuccin-mocha .navbar-item.is-tab:hover{background-color:rgba(0,0,0,0);border-bottom-color:#89b4fa}html.theme--catppuccin-mocha .navbar-item.is-tab.is-active{background-color:rgba(0,0,0,0);border-bottom-color:#89b4fa;border-bottom-style:solid;border-bottom-width:3px;color:#89b4fa;padding-bottom:calc(0.5rem - 3px)}html.theme--catppuccin-mocha .navbar-content{flex-grow:1;flex-shrink:1}html.theme--catppuccin-mocha .navbar-link:not(.is-arrowless){padding-right:2.5em}html.theme--catppuccin-mocha .navbar-link:not(.is-arrowless)::after{border-color:#fff;margin-top:-0.375em;right:1.125em}html.theme--catppuccin-mocha .navbar-dropdown{font-size:0.875rem;padding-bottom:0.5rem;padding-top:0.5rem}html.theme--catppuccin-mocha .navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}html.theme--catppuccin-mocha .navbar-divider{background-color:rgba(0,0,0,0.2);border:none;display:none;height:2px;margin:0.5rem 0}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .navbar>.container{display:block}html.theme--catppuccin-mocha .navbar-brand .navbar-item,html.theme--catppuccin-mocha .navbar-tabs .navbar-item{align-items:center;display:flex}html.theme--catppuccin-mocha .navbar-link::after{display:none}html.theme--catppuccin-mocha .navbar-menu{background-color:#89b4fa;box-shadow:0 8px 16px rgba(10,10,10,0.1);padding:0.5rem 0}html.theme--catppuccin-mocha .navbar-menu.is-active{display:block}html.theme--catppuccin-mocha .navbar.is-fixed-bottom-touch,html.theme--catppuccin-mocha .navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-mocha .navbar.is-fixed-bottom-touch{bottom:0}html.theme--catppuccin-mocha .navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .navbar.is-fixed-top-touch{top:0}html.theme--catppuccin-mocha .navbar.is-fixed-top .navbar-menu,html.theme--catppuccin-mocha .navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 4rem);overflow:auto}html.theme--catppuccin-mocha html.has-navbar-fixed-top-touch,html.theme--catppuccin-mocha body.has-navbar-fixed-top-touch{padding-top:4rem}html.theme--catppuccin-mocha html.has-navbar-fixed-bottom-touch,html.theme--catppuccin-mocha body.has-navbar-fixed-bottom-touch{padding-bottom:4rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .navbar,html.theme--catppuccin-mocha .navbar-menu,html.theme--catppuccin-mocha .navbar-start,html.theme--catppuccin-mocha .navbar-end{align-items:stretch;display:flex}html.theme--catppuccin-mocha .navbar{min-height:4rem}html.theme--catppuccin-mocha .navbar.is-spaced{padding:1rem 2rem}html.theme--catppuccin-mocha .navbar.is-spaced .navbar-start,html.theme--catppuccin-mocha .navbar.is-spaced .navbar-end{align-items:center}html.theme--catppuccin-mocha .navbar.is-spaced a.navbar-item,html.theme--catppuccin-mocha .navbar.is-spaced .navbar-link{border-radius:.4em}html.theme--catppuccin-mocha .navbar.is-transparent a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-transparent a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-transparent a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-transparent .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-transparent .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}html.theme--catppuccin-mocha .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-mocha .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,html.theme--catppuccin-mocha .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,html.theme--catppuccin-mocha .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}html.theme--catppuccin-mocha .navbar.is-transparent .navbar-dropdown a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#7f849c}html.theme--catppuccin-mocha .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#89b4fa}html.theme--catppuccin-mocha .navbar-burger{display:none}html.theme--catppuccin-mocha .navbar-item,html.theme--catppuccin-mocha .navbar-link{align-items:center;display:flex}html.theme--catppuccin-mocha .navbar-item.has-dropdown{align-items:stretch}html.theme--catppuccin-mocha .navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}html.theme--catppuccin-mocha .navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:1px solid rgba(0,0,0,0.2);border-radius:8px 8px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,0.1);top:auto}html.theme--catppuccin-mocha .navbar-item.is-active .navbar-dropdown,html.theme--catppuccin-mocha .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--catppuccin-mocha .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--catppuccin-mocha .navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced html.theme--catppuccin-mocha .navbar-item.is-active .navbar-dropdown,html.theme--catppuccin-mocha .navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-mocha .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--catppuccin-mocha .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-mocha .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--catppuccin-mocha .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-mocha .navbar-item.is-hoverable:hover .navbar-dropdown,html.theme--catppuccin-mocha .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}html.theme--catppuccin-mocha .navbar-menu{flex-grow:1;flex-shrink:0}html.theme--catppuccin-mocha .navbar-start{justify-content:flex-start;margin-right:auto}html.theme--catppuccin-mocha .navbar-end{justify-content:flex-end;margin-left:auto}html.theme--catppuccin-mocha .navbar-dropdown{background-color:#89b4fa;border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid rgba(0,0,0,0.2);box-shadow:0 8px 8px rgba(10,10,10,0.1);display:none;font-size:0.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}html.theme--catppuccin-mocha .navbar-dropdown .navbar-item{padding:0.375rem 1rem;white-space:nowrap}html.theme--catppuccin-mocha .navbar-dropdown a.navbar-item{padding-right:3rem}html.theme--catppuccin-mocha .navbar-dropdown a.navbar-item:focus,html.theme--catppuccin-mocha .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#7f849c}html.theme--catppuccin-mocha .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#89b4fa}.navbar.is-spaced html.theme--catppuccin-mocha .navbar-dropdown,html.theme--catppuccin-mocha .navbar-dropdown.is-boxed{border-radius:8px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,0.1), 0 0 0 1px rgba(10,10,10,0.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity, transform}html.theme--catppuccin-mocha .navbar-dropdown.is-right{left:auto;right:0}html.theme--catppuccin-mocha .navbar-divider{display:block}html.theme--catppuccin-mocha .navbar>.container .navbar-brand,html.theme--catppuccin-mocha .container>.navbar .navbar-brand{margin-left:-.75rem}html.theme--catppuccin-mocha .navbar>.container .navbar-menu,html.theme--catppuccin-mocha .container>.navbar .navbar-menu{margin-right:-.75rem}html.theme--catppuccin-mocha .navbar.is-fixed-bottom-desktop,html.theme--catppuccin-mocha .navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-mocha .navbar.is-fixed-bottom-desktop{bottom:0}html.theme--catppuccin-mocha .navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .navbar.is-fixed-top-desktop{top:0}html.theme--catppuccin-mocha html.has-navbar-fixed-top-desktop,html.theme--catppuccin-mocha body.has-navbar-fixed-top-desktop{padding-top:4rem}html.theme--catppuccin-mocha html.has-navbar-fixed-bottom-desktop,html.theme--catppuccin-mocha body.has-navbar-fixed-bottom-desktop{padding-bottom:4rem}html.theme--catppuccin-mocha html.has-spaced-navbar-fixed-top,html.theme--catppuccin-mocha body.has-spaced-navbar-fixed-top{padding-top:6rem}html.theme--catppuccin-mocha html.has-spaced-navbar-fixed-bottom,html.theme--catppuccin-mocha body.has-spaced-navbar-fixed-bottom{padding-bottom:6rem}html.theme--catppuccin-mocha a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar-link.is-active{color:#89b4fa}html.theme--catppuccin-mocha a.navbar-item.is-active:not(:focus):not(:hover),html.theme--catppuccin-mocha .navbar-link.is-active:not(:focus):not(:hover){background-color:rgba(0,0,0,0)}html.theme--catppuccin-mocha .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .navbar-item.has-dropdown.is-active .navbar-link{background-color:rgba(0,0,0,0)}}html.theme--catppuccin-mocha .hero.is-fullheight-with-navbar{min-height:calc(100vh - 4rem)}html.theme--catppuccin-mocha .pagination{font-size:1rem;margin:-.25rem}html.theme--catppuccin-mocha .pagination.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.pagination{font-size:.75rem}html.theme--catppuccin-mocha .pagination.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .pagination.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .pagination.is-rounded .pagination-previous,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.pagination .pagination-previous,html.theme--catppuccin-mocha .pagination.is-rounded .pagination-next,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.pagination .pagination-next{padding-left:1em;padding-right:1em;border-radius:9999px}html.theme--catppuccin-mocha .pagination.is-rounded .pagination-link,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.pagination .pagination-link{border-radius:9999px}html.theme--catppuccin-mocha .pagination,html.theme--catppuccin-mocha .pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}html.theme--catppuccin-mocha .pagination-previous,html.theme--catppuccin-mocha .pagination-next,html.theme--catppuccin-mocha .pagination-link,html.theme--catppuccin-mocha .pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}html.theme--catppuccin-mocha .pagination-previous,html.theme--catppuccin-mocha .pagination-next,html.theme--catppuccin-mocha .pagination-link{border-color:#585b70;color:#89b4fa;min-width:2.5em}html.theme--catppuccin-mocha .pagination-previous:hover,html.theme--catppuccin-mocha .pagination-next:hover,html.theme--catppuccin-mocha .pagination-link:hover{border-color:#6c7086;color:#89dceb}html.theme--catppuccin-mocha .pagination-previous:focus,html.theme--catppuccin-mocha .pagination-next:focus,html.theme--catppuccin-mocha .pagination-link:focus{border-color:#6c7086}html.theme--catppuccin-mocha .pagination-previous:active,html.theme--catppuccin-mocha .pagination-next:active,html.theme--catppuccin-mocha .pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2)}html.theme--catppuccin-mocha .pagination-previous[disabled],html.theme--catppuccin-mocha .pagination-previous.is-disabled,html.theme--catppuccin-mocha .pagination-next[disabled],html.theme--catppuccin-mocha .pagination-next.is-disabled,html.theme--catppuccin-mocha .pagination-link[disabled],html.theme--catppuccin-mocha .pagination-link.is-disabled{background-color:#585b70;border-color:#585b70;box-shadow:none;color:#f7f8fd;opacity:0.5}html.theme--catppuccin-mocha .pagination-previous,html.theme--catppuccin-mocha .pagination-next{padding-left:.75em;padding-right:.75em;white-space:nowrap}html.theme--catppuccin-mocha .pagination-link.is-current{background-color:#89b4fa;border-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .pagination-ellipsis{color:#6c7086;pointer-events:none}html.theme--catppuccin-mocha .pagination-list{flex-wrap:wrap}html.theme--catppuccin-mocha .pagination-list li{list-style:none}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .pagination{flex-wrap:wrap}html.theme--catppuccin-mocha .pagination-previous,html.theme--catppuccin-mocha .pagination-next{flex-grow:1;flex-shrink:1}html.theme--catppuccin-mocha .pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}html.theme--catppuccin-mocha .pagination-previous,html.theme--catppuccin-mocha .pagination-next,html.theme--catppuccin-mocha .pagination-link,html.theme--catppuccin-mocha .pagination-ellipsis{margin-bottom:0;margin-top:0}html.theme--catppuccin-mocha .pagination-previous{order:2}html.theme--catppuccin-mocha .pagination-next{order:3}html.theme--catppuccin-mocha .pagination{justify-content:space-between;margin-bottom:0;margin-top:0}html.theme--catppuccin-mocha .pagination.is-centered .pagination-previous{order:1}html.theme--catppuccin-mocha .pagination.is-centered .pagination-list{justify-content:center;order:2}html.theme--catppuccin-mocha .pagination.is-centered .pagination-next{order:3}html.theme--catppuccin-mocha .pagination.is-right .pagination-previous{order:1}html.theme--catppuccin-mocha .pagination.is-right .pagination-next{order:2}html.theme--catppuccin-mocha .pagination.is-right .pagination-list{justify-content:flex-end;order:3}}html.theme--catppuccin-mocha .panel{border-radius:8px;box-shadow:#171717;font-size:1rem}html.theme--catppuccin-mocha .panel:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-mocha .panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-mocha .panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}html.theme--catppuccin-mocha .panel.is-white .panel-block.is-active .panel-icon{color:#fff}html.theme--catppuccin-mocha .panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-mocha .panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}html.theme--catppuccin-mocha .panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}html.theme--catppuccin-mocha .panel.is-light .panel-heading{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .panel.is-light .panel-tabs a.is-active{border-bottom-color:#f5f5f5}html.theme--catppuccin-mocha .panel.is-light .panel-block.is-active .panel-icon{color:#f5f5f5}html.theme--catppuccin-mocha .panel.is-dark .panel-heading,html.theme--catppuccin-mocha .content kbd.panel .panel-heading{background-color:#313244;color:#fff}html.theme--catppuccin-mocha .panel.is-dark .panel-tabs a.is-active,html.theme--catppuccin-mocha .content kbd.panel .panel-tabs a.is-active{border-bottom-color:#313244}html.theme--catppuccin-mocha .panel.is-dark .panel-block.is-active .panel-icon,html.theme--catppuccin-mocha .content kbd.panel .panel-block.is-active .panel-icon{color:#313244}html.theme--catppuccin-mocha .panel.is-primary .panel-heading,html.theme--catppuccin-mocha .docstring>section>a.panel.docs-sourcelink .panel-heading{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .panel.is-primary .panel-tabs a.is-active,html.theme--catppuccin-mocha .docstring>section>a.panel.docs-sourcelink .panel-tabs a.is-active{border-bottom-color:#89b4fa}html.theme--catppuccin-mocha .panel.is-primary .panel-block.is-active .panel-icon,html.theme--catppuccin-mocha .docstring>section>a.panel.docs-sourcelink .panel-block.is-active .panel-icon{color:#89b4fa}html.theme--catppuccin-mocha .panel.is-link .panel-heading{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .panel.is-link .panel-tabs a.is-active{border-bottom-color:#89b4fa}html.theme--catppuccin-mocha .panel.is-link .panel-block.is-active .panel-icon{color:#89b4fa}html.theme--catppuccin-mocha .panel.is-info .panel-heading{background-color:#94e2d5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .panel.is-info .panel-tabs a.is-active{border-bottom-color:#94e2d5}html.theme--catppuccin-mocha .panel.is-info .panel-block.is-active .panel-icon{color:#94e2d5}html.theme--catppuccin-mocha .panel.is-success .panel-heading{background-color:#a6e3a1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .panel.is-success .panel-tabs a.is-active{border-bottom-color:#a6e3a1}html.theme--catppuccin-mocha .panel.is-success .panel-block.is-active .panel-icon{color:#a6e3a1}html.theme--catppuccin-mocha .panel.is-warning .panel-heading{background-color:#f9e2af;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .panel.is-warning .panel-tabs a.is-active{border-bottom-color:#f9e2af}html.theme--catppuccin-mocha .panel.is-warning .panel-block.is-active .panel-icon{color:#f9e2af}html.theme--catppuccin-mocha .panel.is-danger .panel-heading{background-color:#f38ba8;color:#fff}html.theme--catppuccin-mocha .panel.is-danger .panel-tabs a.is-active{border-bottom-color:#f38ba8}html.theme--catppuccin-mocha .panel.is-danger .panel-block.is-active .panel-icon{color:#f38ba8}html.theme--catppuccin-mocha .panel-tabs:not(:last-child),html.theme--catppuccin-mocha .panel-block:not(:last-child){border-bottom:1px solid #ededed}html.theme--catppuccin-mocha .panel-heading{background-color:#45475a;border-radius:8px 8px 0 0;color:#b8c5ef;font-size:1.25em;font-weight:700;line-height:1.25;padding:0.75em 1em}html.theme--catppuccin-mocha .panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}html.theme--catppuccin-mocha .panel-tabs a{border-bottom:1px solid #585b70;margin-bottom:-1px;padding:0.5em}html.theme--catppuccin-mocha .panel-tabs a.is-active{border-bottom-color:#45475a;color:#71a4f9}html.theme--catppuccin-mocha .panel-list a{color:#cdd6f4}html.theme--catppuccin-mocha .panel-list a:hover{color:#89b4fa}html.theme--catppuccin-mocha .panel-block{align-items:center;color:#b8c5ef;display:flex;justify-content:flex-start;padding:0.5em 0.75em}html.theme--catppuccin-mocha .panel-block input[type="checkbox"]{margin-right:.75em}html.theme--catppuccin-mocha .panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}html.theme--catppuccin-mocha .panel-block.is-wrapped{flex-wrap:wrap}html.theme--catppuccin-mocha .panel-block.is-active{border-left-color:#89b4fa;color:#71a4f9}html.theme--catppuccin-mocha .panel-block.is-active .panel-icon{color:#89b4fa}html.theme--catppuccin-mocha .panel-block:last-child{border-bottom-left-radius:8px;border-bottom-right-radius:8px}html.theme--catppuccin-mocha a.panel-block,html.theme--catppuccin-mocha label.panel-block{cursor:pointer}html.theme--catppuccin-mocha a.panel-block:hover,html.theme--catppuccin-mocha label.panel-block:hover{background-color:#181825}html.theme--catppuccin-mocha .panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#f7f8fd;margin-right:.75em}html.theme--catppuccin-mocha .panel-icon .fa{font-size:inherit;line-height:inherit}html.theme--catppuccin-mocha .tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}html.theme--catppuccin-mocha .tabs a{align-items:center;border-bottom-color:#585b70;border-bottom-style:solid;border-bottom-width:1px;color:#cdd6f4;display:flex;justify-content:center;margin-bottom:-1px;padding:0.5em 1em;vertical-align:top}html.theme--catppuccin-mocha .tabs a:hover{border-bottom-color:#b8c5ef;color:#b8c5ef}html.theme--catppuccin-mocha .tabs li{display:block}html.theme--catppuccin-mocha .tabs li.is-active a{border-bottom-color:#89b4fa;color:#89b4fa}html.theme--catppuccin-mocha .tabs ul{align-items:center;border-bottom-color:#585b70;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}html.theme--catppuccin-mocha .tabs ul.is-left{padding-right:0.75em}html.theme--catppuccin-mocha .tabs ul.is-center{flex:none;justify-content:center;padding-left:0.75em;padding-right:0.75em}html.theme--catppuccin-mocha .tabs ul.is-right{justify-content:flex-end;padding-left:0.75em}html.theme--catppuccin-mocha .tabs .icon:first-child{margin-right:.5em}html.theme--catppuccin-mocha .tabs .icon:last-child{margin-left:.5em}html.theme--catppuccin-mocha .tabs.is-centered ul{justify-content:center}html.theme--catppuccin-mocha .tabs.is-right ul{justify-content:flex-end}html.theme--catppuccin-mocha .tabs.is-boxed a{border:1px solid transparent;border-radius:.4em .4em 0 0}html.theme--catppuccin-mocha .tabs.is-boxed a:hover{background-color:#181825;border-bottom-color:#585b70}html.theme--catppuccin-mocha .tabs.is-boxed li.is-active a{background-color:#fff;border-color:#585b70;border-bottom-color:rgba(0,0,0,0) !important}html.theme--catppuccin-mocha .tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}html.theme--catppuccin-mocha .tabs.is-toggle a{border-color:#585b70;border-style:solid;border-width:1px;margin-bottom:0;position:relative}html.theme--catppuccin-mocha .tabs.is-toggle a:hover{background-color:#181825;border-color:#6c7086;z-index:2}html.theme--catppuccin-mocha .tabs.is-toggle li+li{margin-left:-1px}html.theme--catppuccin-mocha .tabs.is-toggle li:first-child a{border-top-left-radius:.4em;border-bottom-left-radius:.4em}html.theme--catppuccin-mocha .tabs.is-toggle li:last-child a{border-top-right-radius:.4em;border-bottom-right-radius:.4em}html.theme--catppuccin-mocha .tabs.is-toggle li.is-active a{background-color:#89b4fa;border-color:#89b4fa;color:#fff;z-index:1}html.theme--catppuccin-mocha .tabs.is-toggle ul{border-bottom:none}html.theme--catppuccin-mocha .tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:9999px;border-top-left-radius:9999px;padding-left:1.25em}html.theme--catppuccin-mocha .tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:9999px;border-top-right-radius:9999px;padding-right:1.25em}html.theme--catppuccin-mocha .tabs.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.tabs{font-size:.75rem}html.theme--catppuccin-mocha .tabs.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .tabs.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-narrow{flex:none;width:unset}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-full{flex:none;width:100%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-half{flex:none;width:50%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-half{margin-left:50%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-0{flex:none;width:0%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-0{margin-left:0%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-1{flex:none;width:8.33333337%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-1{margin-left:8.33333337%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-2{flex:none;width:16.66666674%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-2{margin-left:16.66666674%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-3{flex:none;width:25%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-3{margin-left:25%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-4{flex:none;width:33.33333337%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-4{margin-left:33.33333337%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-5{flex:none;width:41.66666674%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-5{margin-left:41.66666674%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-6{flex:none;width:50%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-6{margin-left:50%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-7{flex:none;width:58.33333337%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-7{margin-left:58.33333337%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-8{flex:none;width:66.66666674%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-8{margin-left:66.66666674%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-9{flex:none;width:75%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-9{margin-left:75%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-10{flex:none;width:83.33333337%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-10{margin-left:83.33333337%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-11{flex:none;width:91.66666674%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-11{margin-left:91.66666674%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-12{flex:none;width:100%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .column.is-narrow-mobile{flex:none;width:unset}html.theme--catppuccin-mocha .column.is-full-mobile{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-three-quarters-mobile{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-two-thirds-mobile{flex:none;width:66.6666%}html.theme--catppuccin-mocha .column.is-half-mobile{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-one-third-mobile{flex:none;width:33.3333%}html.theme--catppuccin-mocha .column.is-one-quarter-mobile{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-one-fifth-mobile{flex:none;width:20%}html.theme--catppuccin-mocha .column.is-two-fifths-mobile{flex:none;width:40%}html.theme--catppuccin-mocha .column.is-three-fifths-mobile{flex:none;width:60%}html.theme--catppuccin-mocha .column.is-four-fifths-mobile{flex:none;width:80%}html.theme--catppuccin-mocha .column.is-offset-three-quarters-mobile{margin-left:75%}html.theme--catppuccin-mocha .column.is-offset-two-thirds-mobile{margin-left:66.6666%}html.theme--catppuccin-mocha .column.is-offset-half-mobile{margin-left:50%}html.theme--catppuccin-mocha .column.is-offset-one-third-mobile{margin-left:33.3333%}html.theme--catppuccin-mocha .column.is-offset-one-quarter-mobile{margin-left:25%}html.theme--catppuccin-mocha .column.is-offset-one-fifth-mobile{margin-left:20%}html.theme--catppuccin-mocha .column.is-offset-two-fifths-mobile{margin-left:40%}html.theme--catppuccin-mocha .column.is-offset-three-fifths-mobile{margin-left:60%}html.theme--catppuccin-mocha .column.is-offset-four-fifths-mobile{margin-left:80%}html.theme--catppuccin-mocha .column.is-0-mobile{flex:none;width:0%}html.theme--catppuccin-mocha .column.is-offset-0-mobile{margin-left:0%}html.theme--catppuccin-mocha .column.is-1-mobile{flex:none;width:8.33333337%}html.theme--catppuccin-mocha .column.is-offset-1-mobile{margin-left:8.33333337%}html.theme--catppuccin-mocha .column.is-2-mobile{flex:none;width:16.66666674%}html.theme--catppuccin-mocha .column.is-offset-2-mobile{margin-left:16.66666674%}html.theme--catppuccin-mocha .column.is-3-mobile{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-offset-3-mobile{margin-left:25%}html.theme--catppuccin-mocha .column.is-4-mobile{flex:none;width:33.33333337%}html.theme--catppuccin-mocha .column.is-offset-4-mobile{margin-left:33.33333337%}html.theme--catppuccin-mocha .column.is-5-mobile{flex:none;width:41.66666674%}html.theme--catppuccin-mocha .column.is-offset-5-mobile{margin-left:41.66666674%}html.theme--catppuccin-mocha .column.is-6-mobile{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-offset-6-mobile{margin-left:50%}html.theme--catppuccin-mocha .column.is-7-mobile{flex:none;width:58.33333337%}html.theme--catppuccin-mocha .column.is-offset-7-mobile{margin-left:58.33333337%}html.theme--catppuccin-mocha .column.is-8-mobile{flex:none;width:66.66666674%}html.theme--catppuccin-mocha .column.is-offset-8-mobile{margin-left:66.66666674%}html.theme--catppuccin-mocha .column.is-9-mobile{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-offset-9-mobile{margin-left:75%}html.theme--catppuccin-mocha .column.is-10-mobile{flex:none;width:83.33333337%}html.theme--catppuccin-mocha .column.is-offset-10-mobile{margin-left:83.33333337%}html.theme--catppuccin-mocha .column.is-11-mobile{flex:none;width:91.66666674%}html.theme--catppuccin-mocha .column.is-offset-11-mobile{margin-left:91.66666674%}html.theme--catppuccin-mocha .column.is-12-mobile{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .column.is-narrow,html.theme--catppuccin-mocha .column.is-narrow-tablet{flex:none;width:unset}html.theme--catppuccin-mocha .column.is-full,html.theme--catppuccin-mocha .column.is-full-tablet{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-three-quarters,html.theme--catppuccin-mocha .column.is-three-quarters-tablet{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-two-thirds,html.theme--catppuccin-mocha .column.is-two-thirds-tablet{flex:none;width:66.6666%}html.theme--catppuccin-mocha .column.is-half,html.theme--catppuccin-mocha .column.is-half-tablet{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-one-third,html.theme--catppuccin-mocha .column.is-one-third-tablet{flex:none;width:33.3333%}html.theme--catppuccin-mocha .column.is-one-quarter,html.theme--catppuccin-mocha .column.is-one-quarter-tablet{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-one-fifth,html.theme--catppuccin-mocha .column.is-one-fifth-tablet{flex:none;width:20%}html.theme--catppuccin-mocha .column.is-two-fifths,html.theme--catppuccin-mocha .column.is-two-fifths-tablet{flex:none;width:40%}html.theme--catppuccin-mocha .column.is-three-fifths,html.theme--catppuccin-mocha .column.is-three-fifths-tablet{flex:none;width:60%}html.theme--catppuccin-mocha .column.is-four-fifths,html.theme--catppuccin-mocha .column.is-four-fifths-tablet{flex:none;width:80%}html.theme--catppuccin-mocha .column.is-offset-three-quarters,html.theme--catppuccin-mocha .column.is-offset-three-quarters-tablet{margin-left:75%}html.theme--catppuccin-mocha .column.is-offset-two-thirds,html.theme--catppuccin-mocha .column.is-offset-two-thirds-tablet{margin-left:66.6666%}html.theme--catppuccin-mocha .column.is-offset-half,html.theme--catppuccin-mocha .column.is-offset-half-tablet{margin-left:50%}html.theme--catppuccin-mocha .column.is-offset-one-third,html.theme--catppuccin-mocha .column.is-offset-one-third-tablet{margin-left:33.3333%}html.theme--catppuccin-mocha .column.is-offset-one-quarter,html.theme--catppuccin-mocha .column.is-offset-one-quarter-tablet{margin-left:25%}html.theme--catppuccin-mocha .column.is-offset-one-fifth,html.theme--catppuccin-mocha .column.is-offset-one-fifth-tablet{margin-left:20%}html.theme--catppuccin-mocha .column.is-offset-two-fifths,html.theme--catppuccin-mocha .column.is-offset-two-fifths-tablet{margin-left:40%}html.theme--catppuccin-mocha .column.is-offset-three-fifths,html.theme--catppuccin-mocha .column.is-offset-three-fifths-tablet{margin-left:60%}html.theme--catppuccin-mocha .column.is-offset-four-fifths,html.theme--catppuccin-mocha .column.is-offset-four-fifths-tablet{margin-left:80%}html.theme--catppuccin-mocha .column.is-0,html.theme--catppuccin-mocha .column.is-0-tablet{flex:none;width:0%}html.theme--catppuccin-mocha .column.is-offset-0,html.theme--catppuccin-mocha .column.is-offset-0-tablet{margin-left:0%}html.theme--catppuccin-mocha .column.is-1,html.theme--catppuccin-mocha .column.is-1-tablet{flex:none;width:8.33333337%}html.theme--catppuccin-mocha .column.is-offset-1,html.theme--catppuccin-mocha .column.is-offset-1-tablet{margin-left:8.33333337%}html.theme--catppuccin-mocha .column.is-2,html.theme--catppuccin-mocha .column.is-2-tablet{flex:none;width:16.66666674%}html.theme--catppuccin-mocha .column.is-offset-2,html.theme--catppuccin-mocha .column.is-offset-2-tablet{margin-left:16.66666674%}html.theme--catppuccin-mocha .column.is-3,html.theme--catppuccin-mocha .column.is-3-tablet{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-offset-3,html.theme--catppuccin-mocha .column.is-offset-3-tablet{margin-left:25%}html.theme--catppuccin-mocha .column.is-4,html.theme--catppuccin-mocha .column.is-4-tablet{flex:none;width:33.33333337%}html.theme--catppuccin-mocha .column.is-offset-4,html.theme--catppuccin-mocha .column.is-offset-4-tablet{margin-left:33.33333337%}html.theme--catppuccin-mocha .column.is-5,html.theme--catppuccin-mocha .column.is-5-tablet{flex:none;width:41.66666674%}html.theme--catppuccin-mocha .column.is-offset-5,html.theme--catppuccin-mocha .column.is-offset-5-tablet{margin-left:41.66666674%}html.theme--catppuccin-mocha .column.is-6,html.theme--catppuccin-mocha .column.is-6-tablet{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-offset-6,html.theme--catppuccin-mocha .column.is-offset-6-tablet{margin-left:50%}html.theme--catppuccin-mocha .column.is-7,html.theme--catppuccin-mocha .column.is-7-tablet{flex:none;width:58.33333337%}html.theme--catppuccin-mocha .column.is-offset-7,html.theme--catppuccin-mocha .column.is-offset-7-tablet{margin-left:58.33333337%}html.theme--catppuccin-mocha .column.is-8,html.theme--catppuccin-mocha .column.is-8-tablet{flex:none;width:66.66666674%}html.theme--catppuccin-mocha .column.is-offset-8,html.theme--catppuccin-mocha .column.is-offset-8-tablet{margin-left:66.66666674%}html.theme--catppuccin-mocha .column.is-9,html.theme--catppuccin-mocha .column.is-9-tablet{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-offset-9,html.theme--catppuccin-mocha .column.is-offset-9-tablet{margin-left:75%}html.theme--catppuccin-mocha .column.is-10,html.theme--catppuccin-mocha .column.is-10-tablet{flex:none;width:83.33333337%}html.theme--catppuccin-mocha .column.is-offset-10,html.theme--catppuccin-mocha .column.is-offset-10-tablet{margin-left:83.33333337%}html.theme--catppuccin-mocha .column.is-11,html.theme--catppuccin-mocha .column.is-11-tablet{flex:none;width:91.66666674%}html.theme--catppuccin-mocha .column.is-offset-11,html.theme--catppuccin-mocha .column.is-offset-11-tablet{margin-left:91.66666674%}html.theme--catppuccin-mocha .column.is-12,html.theme--catppuccin-mocha .column.is-12-tablet{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-offset-12,html.theme--catppuccin-mocha .column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .column.is-narrow-touch{flex:none;width:unset}html.theme--catppuccin-mocha .column.is-full-touch{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-three-quarters-touch{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-two-thirds-touch{flex:none;width:66.6666%}html.theme--catppuccin-mocha .column.is-half-touch{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-one-third-touch{flex:none;width:33.3333%}html.theme--catppuccin-mocha .column.is-one-quarter-touch{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-one-fifth-touch{flex:none;width:20%}html.theme--catppuccin-mocha .column.is-two-fifths-touch{flex:none;width:40%}html.theme--catppuccin-mocha .column.is-three-fifths-touch{flex:none;width:60%}html.theme--catppuccin-mocha .column.is-four-fifths-touch{flex:none;width:80%}html.theme--catppuccin-mocha .column.is-offset-three-quarters-touch{margin-left:75%}html.theme--catppuccin-mocha .column.is-offset-two-thirds-touch{margin-left:66.6666%}html.theme--catppuccin-mocha .column.is-offset-half-touch{margin-left:50%}html.theme--catppuccin-mocha .column.is-offset-one-third-touch{margin-left:33.3333%}html.theme--catppuccin-mocha .column.is-offset-one-quarter-touch{margin-left:25%}html.theme--catppuccin-mocha .column.is-offset-one-fifth-touch{margin-left:20%}html.theme--catppuccin-mocha .column.is-offset-two-fifths-touch{margin-left:40%}html.theme--catppuccin-mocha .column.is-offset-three-fifths-touch{margin-left:60%}html.theme--catppuccin-mocha .column.is-offset-four-fifths-touch{margin-left:80%}html.theme--catppuccin-mocha .column.is-0-touch{flex:none;width:0%}html.theme--catppuccin-mocha .column.is-offset-0-touch{margin-left:0%}html.theme--catppuccin-mocha .column.is-1-touch{flex:none;width:8.33333337%}html.theme--catppuccin-mocha .column.is-offset-1-touch{margin-left:8.33333337%}html.theme--catppuccin-mocha .column.is-2-touch{flex:none;width:16.66666674%}html.theme--catppuccin-mocha .column.is-offset-2-touch{margin-left:16.66666674%}html.theme--catppuccin-mocha .column.is-3-touch{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-offset-3-touch{margin-left:25%}html.theme--catppuccin-mocha .column.is-4-touch{flex:none;width:33.33333337%}html.theme--catppuccin-mocha .column.is-offset-4-touch{margin-left:33.33333337%}html.theme--catppuccin-mocha .column.is-5-touch{flex:none;width:41.66666674%}html.theme--catppuccin-mocha .column.is-offset-5-touch{margin-left:41.66666674%}html.theme--catppuccin-mocha .column.is-6-touch{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-offset-6-touch{margin-left:50%}html.theme--catppuccin-mocha .column.is-7-touch{flex:none;width:58.33333337%}html.theme--catppuccin-mocha .column.is-offset-7-touch{margin-left:58.33333337%}html.theme--catppuccin-mocha .column.is-8-touch{flex:none;width:66.66666674%}html.theme--catppuccin-mocha .column.is-offset-8-touch{margin-left:66.66666674%}html.theme--catppuccin-mocha .column.is-9-touch{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-offset-9-touch{margin-left:75%}html.theme--catppuccin-mocha .column.is-10-touch{flex:none;width:83.33333337%}html.theme--catppuccin-mocha .column.is-offset-10-touch{margin-left:83.33333337%}html.theme--catppuccin-mocha .column.is-11-touch{flex:none;width:91.66666674%}html.theme--catppuccin-mocha .column.is-offset-11-touch{margin-left:91.66666674%}html.theme--catppuccin-mocha .column.is-12-touch{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .column.is-narrow-desktop{flex:none;width:unset}html.theme--catppuccin-mocha .column.is-full-desktop{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-three-quarters-desktop{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-two-thirds-desktop{flex:none;width:66.6666%}html.theme--catppuccin-mocha .column.is-half-desktop{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-one-third-desktop{flex:none;width:33.3333%}html.theme--catppuccin-mocha .column.is-one-quarter-desktop{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-one-fifth-desktop{flex:none;width:20%}html.theme--catppuccin-mocha .column.is-two-fifths-desktop{flex:none;width:40%}html.theme--catppuccin-mocha .column.is-three-fifths-desktop{flex:none;width:60%}html.theme--catppuccin-mocha .column.is-four-fifths-desktop{flex:none;width:80%}html.theme--catppuccin-mocha .column.is-offset-three-quarters-desktop{margin-left:75%}html.theme--catppuccin-mocha .column.is-offset-two-thirds-desktop{margin-left:66.6666%}html.theme--catppuccin-mocha .column.is-offset-half-desktop{margin-left:50%}html.theme--catppuccin-mocha .column.is-offset-one-third-desktop{margin-left:33.3333%}html.theme--catppuccin-mocha .column.is-offset-one-quarter-desktop{margin-left:25%}html.theme--catppuccin-mocha .column.is-offset-one-fifth-desktop{margin-left:20%}html.theme--catppuccin-mocha .column.is-offset-two-fifths-desktop{margin-left:40%}html.theme--catppuccin-mocha .column.is-offset-three-fifths-desktop{margin-left:60%}html.theme--catppuccin-mocha .column.is-offset-four-fifths-desktop{margin-left:80%}html.theme--catppuccin-mocha .column.is-0-desktop{flex:none;width:0%}html.theme--catppuccin-mocha .column.is-offset-0-desktop{margin-left:0%}html.theme--catppuccin-mocha .column.is-1-desktop{flex:none;width:8.33333337%}html.theme--catppuccin-mocha .column.is-offset-1-desktop{margin-left:8.33333337%}html.theme--catppuccin-mocha .column.is-2-desktop{flex:none;width:16.66666674%}html.theme--catppuccin-mocha .column.is-offset-2-desktop{margin-left:16.66666674%}html.theme--catppuccin-mocha .column.is-3-desktop{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-offset-3-desktop{margin-left:25%}html.theme--catppuccin-mocha .column.is-4-desktop{flex:none;width:33.33333337%}html.theme--catppuccin-mocha .column.is-offset-4-desktop{margin-left:33.33333337%}html.theme--catppuccin-mocha .column.is-5-desktop{flex:none;width:41.66666674%}html.theme--catppuccin-mocha .column.is-offset-5-desktop{margin-left:41.66666674%}html.theme--catppuccin-mocha .column.is-6-desktop{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-offset-6-desktop{margin-left:50%}html.theme--catppuccin-mocha .column.is-7-desktop{flex:none;width:58.33333337%}html.theme--catppuccin-mocha .column.is-offset-7-desktop{margin-left:58.33333337%}html.theme--catppuccin-mocha .column.is-8-desktop{flex:none;width:66.66666674%}html.theme--catppuccin-mocha .column.is-offset-8-desktop{margin-left:66.66666674%}html.theme--catppuccin-mocha .column.is-9-desktop{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-offset-9-desktop{margin-left:75%}html.theme--catppuccin-mocha .column.is-10-desktop{flex:none;width:83.33333337%}html.theme--catppuccin-mocha .column.is-offset-10-desktop{margin-left:83.33333337%}html.theme--catppuccin-mocha .column.is-11-desktop{flex:none;width:91.66666674%}html.theme--catppuccin-mocha .column.is-offset-11-desktop{margin-left:91.66666674%}html.theme--catppuccin-mocha .column.is-12-desktop{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){html.theme--catppuccin-mocha .column.is-narrow-widescreen{flex:none;width:unset}html.theme--catppuccin-mocha .column.is-full-widescreen{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-three-quarters-widescreen{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-two-thirds-widescreen{flex:none;width:66.6666%}html.theme--catppuccin-mocha .column.is-half-widescreen{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-one-third-widescreen{flex:none;width:33.3333%}html.theme--catppuccin-mocha .column.is-one-quarter-widescreen{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-one-fifth-widescreen{flex:none;width:20%}html.theme--catppuccin-mocha .column.is-two-fifths-widescreen{flex:none;width:40%}html.theme--catppuccin-mocha .column.is-three-fifths-widescreen{flex:none;width:60%}html.theme--catppuccin-mocha .column.is-four-fifths-widescreen{flex:none;width:80%}html.theme--catppuccin-mocha .column.is-offset-three-quarters-widescreen{margin-left:75%}html.theme--catppuccin-mocha .column.is-offset-two-thirds-widescreen{margin-left:66.6666%}html.theme--catppuccin-mocha .column.is-offset-half-widescreen{margin-left:50%}html.theme--catppuccin-mocha .column.is-offset-one-third-widescreen{margin-left:33.3333%}html.theme--catppuccin-mocha .column.is-offset-one-quarter-widescreen{margin-left:25%}html.theme--catppuccin-mocha .column.is-offset-one-fifth-widescreen{margin-left:20%}html.theme--catppuccin-mocha .column.is-offset-two-fifths-widescreen{margin-left:40%}html.theme--catppuccin-mocha .column.is-offset-three-fifths-widescreen{margin-left:60%}html.theme--catppuccin-mocha .column.is-offset-four-fifths-widescreen{margin-left:80%}html.theme--catppuccin-mocha .column.is-0-widescreen{flex:none;width:0%}html.theme--catppuccin-mocha .column.is-offset-0-widescreen{margin-left:0%}html.theme--catppuccin-mocha .column.is-1-widescreen{flex:none;width:8.33333337%}html.theme--catppuccin-mocha .column.is-offset-1-widescreen{margin-left:8.33333337%}html.theme--catppuccin-mocha .column.is-2-widescreen{flex:none;width:16.66666674%}html.theme--catppuccin-mocha .column.is-offset-2-widescreen{margin-left:16.66666674%}html.theme--catppuccin-mocha .column.is-3-widescreen{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-offset-3-widescreen{margin-left:25%}html.theme--catppuccin-mocha .column.is-4-widescreen{flex:none;width:33.33333337%}html.theme--catppuccin-mocha .column.is-offset-4-widescreen{margin-left:33.33333337%}html.theme--catppuccin-mocha .column.is-5-widescreen{flex:none;width:41.66666674%}html.theme--catppuccin-mocha .column.is-offset-5-widescreen{margin-left:41.66666674%}html.theme--catppuccin-mocha .column.is-6-widescreen{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-offset-6-widescreen{margin-left:50%}html.theme--catppuccin-mocha .column.is-7-widescreen{flex:none;width:58.33333337%}html.theme--catppuccin-mocha .column.is-offset-7-widescreen{margin-left:58.33333337%}html.theme--catppuccin-mocha .column.is-8-widescreen{flex:none;width:66.66666674%}html.theme--catppuccin-mocha .column.is-offset-8-widescreen{margin-left:66.66666674%}html.theme--catppuccin-mocha .column.is-9-widescreen{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-offset-9-widescreen{margin-left:75%}html.theme--catppuccin-mocha .column.is-10-widescreen{flex:none;width:83.33333337%}html.theme--catppuccin-mocha .column.is-offset-10-widescreen{margin-left:83.33333337%}html.theme--catppuccin-mocha .column.is-11-widescreen{flex:none;width:91.66666674%}html.theme--catppuccin-mocha .column.is-offset-11-widescreen{margin-left:91.66666674%}html.theme--catppuccin-mocha .column.is-12-widescreen{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){html.theme--catppuccin-mocha .column.is-narrow-fullhd{flex:none;width:unset}html.theme--catppuccin-mocha .column.is-full-fullhd{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-three-quarters-fullhd{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-two-thirds-fullhd{flex:none;width:66.6666%}html.theme--catppuccin-mocha .column.is-half-fullhd{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-one-third-fullhd{flex:none;width:33.3333%}html.theme--catppuccin-mocha .column.is-one-quarter-fullhd{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-one-fifth-fullhd{flex:none;width:20%}html.theme--catppuccin-mocha .column.is-two-fifths-fullhd{flex:none;width:40%}html.theme--catppuccin-mocha .column.is-three-fifths-fullhd{flex:none;width:60%}html.theme--catppuccin-mocha .column.is-four-fifths-fullhd{flex:none;width:80%}html.theme--catppuccin-mocha .column.is-offset-three-quarters-fullhd{margin-left:75%}html.theme--catppuccin-mocha .column.is-offset-two-thirds-fullhd{margin-left:66.6666%}html.theme--catppuccin-mocha .column.is-offset-half-fullhd{margin-left:50%}html.theme--catppuccin-mocha .column.is-offset-one-third-fullhd{margin-left:33.3333%}html.theme--catppuccin-mocha .column.is-offset-one-quarter-fullhd{margin-left:25%}html.theme--catppuccin-mocha .column.is-offset-one-fifth-fullhd{margin-left:20%}html.theme--catppuccin-mocha .column.is-offset-two-fifths-fullhd{margin-left:40%}html.theme--catppuccin-mocha .column.is-offset-three-fifths-fullhd{margin-left:60%}html.theme--catppuccin-mocha .column.is-offset-four-fifths-fullhd{margin-left:80%}html.theme--catppuccin-mocha .column.is-0-fullhd{flex:none;width:0%}html.theme--catppuccin-mocha .column.is-offset-0-fullhd{margin-left:0%}html.theme--catppuccin-mocha .column.is-1-fullhd{flex:none;width:8.33333337%}html.theme--catppuccin-mocha .column.is-offset-1-fullhd{margin-left:8.33333337%}html.theme--catppuccin-mocha .column.is-2-fullhd{flex:none;width:16.66666674%}html.theme--catppuccin-mocha .column.is-offset-2-fullhd{margin-left:16.66666674%}html.theme--catppuccin-mocha .column.is-3-fullhd{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-offset-3-fullhd{margin-left:25%}html.theme--catppuccin-mocha .column.is-4-fullhd{flex:none;width:33.33333337%}html.theme--catppuccin-mocha .column.is-offset-4-fullhd{margin-left:33.33333337%}html.theme--catppuccin-mocha .column.is-5-fullhd{flex:none;width:41.66666674%}html.theme--catppuccin-mocha .column.is-offset-5-fullhd{margin-left:41.66666674%}html.theme--catppuccin-mocha .column.is-6-fullhd{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-offset-6-fullhd{margin-left:50%}html.theme--catppuccin-mocha .column.is-7-fullhd{flex:none;width:58.33333337%}html.theme--catppuccin-mocha .column.is-offset-7-fullhd{margin-left:58.33333337%}html.theme--catppuccin-mocha .column.is-8-fullhd{flex:none;width:66.66666674%}html.theme--catppuccin-mocha .column.is-offset-8-fullhd{margin-left:66.66666674%}html.theme--catppuccin-mocha .column.is-9-fullhd{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-offset-9-fullhd{margin-left:75%}html.theme--catppuccin-mocha .column.is-10-fullhd{flex:none;width:83.33333337%}html.theme--catppuccin-mocha .column.is-offset-10-fullhd{margin-left:83.33333337%}html.theme--catppuccin-mocha .column.is-11-fullhd{flex:none;width:91.66666674%}html.theme--catppuccin-mocha .column.is-offset-11-fullhd{margin-left:91.66666674%}html.theme--catppuccin-mocha .column.is-12-fullhd{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-offset-12-fullhd{margin-left:100%}}html.theme--catppuccin-mocha .columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--catppuccin-mocha .columns:last-child{margin-bottom:-.75rem}html.theme--catppuccin-mocha .columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}html.theme--catppuccin-mocha .columns.is-centered{justify-content:center}html.theme--catppuccin-mocha .columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}html.theme--catppuccin-mocha .columns.is-gapless>.column{margin:0;padding:0 !important}html.theme--catppuccin-mocha .columns.is-gapless:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-mocha .columns.is-gapless:last-child{margin-bottom:0}html.theme--catppuccin-mocha .columns.is-mobile{display:flex}html.theme--catppuccin-mocha .columns.is-multiline{flex-wrap:wrap}html.theme--catppuccin-mocha .columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .columns.is-desktop{display:flex}}html.theme--catppuccin-mocha .columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}html.theme--catppuccin-mocha .columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}html.theme--catppuccin-mocha .columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-mocha .columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-mocha .columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-mocha .columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-mocha .columns.is-variable.is-0-fullhd{--columnGap: 0rem}}html.theme--catppuccin-mocha .columns.is-variable.is-1{--columnGap: .25rem}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .columns.is-variable.is-1-mobile{--columnGap: .25rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .columns.is-variable.is-1-tablet{--columnGap: .25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-1-tablet-only{--columnGap: .25rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-1-touch{--columnGap: .25rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .columns.is-variable.is-1-desktop{--columnGap: .25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-mocha .columns.is-variable.is-1-desktop-only{--columnGap: .25rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-mocha .columns.is-variable.is-1-widescreen{--columnGap: .25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-mocha .columns.is-variable.is-1-widescreen-only{--columnGap: .25rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-mocha .columns.is-variable.is-1-fullhd{--columnGap: .25rem}}html.theme--catppuccin-mocha .columns.is-variable.is-2{--columnGap: .5rem}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .columns.is-variable.is-2-mobile{--columnGap: .5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .columns.is-variable.is-2-tablet{--columnGap: .5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-2-tablet-only{--columnGap: .5rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-2-touch{--columnGap: .5rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .columns.is-variable.is-2-desktop{--columnGap: .5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-mocha .columns.is-variable.is-2-desktop-only{--columnGap: .5rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-mocha .columns.is-variable.is-2-widescreen{--columnGap: .5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-mocha .columns.is-variable.is-2-widescreen-only{--columnGap: .5rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-mocha .columns.is-variable.is-2-fullhd{--columnGap: .5rem}}html.theme--catppuccin-mocha .columns.is-variable.is-3{--columnGap: .75rem}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .columns.is-variable.is-3-mobile{--columnGap: .75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .columns.is-variable.is-3-tablet{--columnGap: .75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-3-tablet-only{--columnGap: .75rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-3-touch{--columnGap: .75rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .columns.is-variable.is-3-desktop{--columnGap: .75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-mocha .columns.is-variable.is-3-desktop-only{--columnGap: .75rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-mocha .columns.is-variable.is-3-widescreen{--columnGap: .75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-mocha .columns.is-variable.is-3-widescreen-only{--columnGap: .75rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-mocha .columns.is-variable.is-3-fullhd{--columnGap: .75rem}}html.theme--catppuccin-mocha .columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-mocha .columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-mocha .columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-mocha .columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-mocha .columns.is-variable.is-4-fullhd{--columnGap: 1rem}}html.theme--catppuccin-mocha .columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-mocha .columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-mocha .columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-mocha .columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-mocha .columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}html.theme--catppuccin-mocha .columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-mocha .columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-mocha .columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-mocha .columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-mocha .columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}html.theme--catppuccin-mocha .columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-mocha .columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-mocha .columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-mocha .columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-mocha .columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}html.theme--catppuccin-mocha .columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-mocha .columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-mocha .columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-mocha .columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-mocha .columns.is-variable.is-8-fullhd{--columnGap: 2rem}}html.theme--catppuccin-mocha .tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}html.theme--catppuccin-mocha .tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--catppuccin-mocha .tile.is-ancestor:last-child{margin-bottom:-.75rem}html.theme--catppuccin-mocha .tile.is-ancestor:not(:last-child){margin-bottom:.75rem}html.theme--catppuccin-mocha .tile.is-child{margin:0 !important}html.theme--catppuccin-mocha .tile.is-parent{padding:.75rem}html.theme--catppuccin-mocha .tile.is-vertical{flex-direction:column}html.theme--catppuccin-mocha .tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .tile:not(.is-child){display:flex}html.theme--catppuccin-mocha .tile.is-1{flex:none;width:8.33333337%}html.theme--catppuccin-mocha .tile.is-2{flex:none;width:16.66666674%}html.theme--catppuccin-mocha .tile.is-3{flex:none;width:25%}html.theme--catppuccin-mocha .tile.is-4{flex:none;width:33.33333337%}html.theme--catppuccin-mocha .tile.is-5{flex:none;width:41.66666674%}html.theme--catppuccin-mocha .tile.is-6{flex:none;width:50%}html.theme--catppuccin-mocha .tile.is-7{flex:none;width:58.33333337%}html.theme--catppuccin-mocha .tile.is-8{flex:none;width:66.66666674%}html.theme--catppuccin-mocha .tile.is-9{flex:none;width:75%}html.theme--catppuccin-mocha .tile.is-10{flex:none;width:83.33333337%}html.theme--catppuccin-mocha .tile.is-11{flex:none;width:91.66666674%}html.theme--catppuccin-mocha .tile.is-12{flex:none;width:100%}}html.theme--catppuccin-mocha .hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}html.theme--catppuccin-mocha .hero .navbar{background:none}html.theme--catppuccin-mocha .hero .tabs ul{border-bottom:none}html.theme--catppuccin-mocha .hero.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-mocha .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .hero.is-white strong{color:inherit}html.theme--catppuccin-mocha .hero.is-white .title{color:#0a0a0a}html.theme--catppuccin-mocha .hero.is-white .subtitle{color:rgba(10,10,10,0.9)}html.theme--catppuccin-mocha .hero.is-white .subtitle a:not(.button),html.theme--catppuccin-mocha .hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .hero.is-white .navbar-menu{background-color:#fff}}html.theme--catppuccin-mocha .hero.is-white .navbar-item,html.theme--catppuccin-mocha .hero.is-white .navbar-link{color:rgba(10,10,10,0.7)}html.theme--catppuccin-mocha .hero.is-white a.navbar-item:hover,html.theme--catppuccin-mocha .hero.is-white a.navbar-item.is-active,html.theme--catppuccin-mocha .hero.is-white .navbar-link:hover,html.theme--catppuccin-mocha .hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-mocha .hero.is-white .tabs a{color:#0a0a0a;opacity:0.9}html.theme--catppuccin-mocha .hero.is-white .tabs a:hover{opacity:1}html.theme--catppuccin-mocha .hero.is-white .tabs li.is-active a{color:#fff !important;opacity:1}html.theme--catppuccin-mocha .hero.is-white .tabs.is-boxed a,html.theme--catppuccin-mocha .hero.is-white .tabs.is-toggle a{color:#0a0a0a}html.theme--catppuccin-mocha .hero.is-white .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .hero.is-white .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .hero.is-white .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-mocha .hero.is-white .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-mocha .hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}}html.theme--catppuccin-mocha .hero.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-mocha .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .hero.is-black strong{color:inherit}html.theme--catppuccin-mocha .hero.is-black .title{color:#fff}html.theme--catppuccin-mocha .hero.is-black .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-mocha .hero.is-black .subtitle a:not(.button),html.theme--catppuccin-mocha .hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .hero.is-black .navbar-menu{background-color:#0a0a0a}}html.theme--catppuccin-mocha .hero.is-black .navbar-item,html.theme--catppuccin-mocha .hero.is-black .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-mocha .hero.is-black a.navbar-item:hover,html.theme--catppuccin-mocha .hero.is-black a.navbar-item.is-active,html.theme--catppuccin-mocha .hero.is-black .navbar-link:hover,html.theme--catppuccin-mocha .hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-mocha .hero.is-black .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-mocha .hero.is-black .tabs a:hover{opacity:1}html.theme--catppuccin-mocha .hero.is-black .tabs li.is-active a{color:#0a0a0a !important;opacity:1}html.theme--catppuccin-mocha .hero.is-black .tabs.is-boxed a,html.theme--catppuccin-mocha .hero.is-black .tabs.is-toggle a{color:#fff}html.theme--catppuccin-mocha .hero.is-black .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .hero.is-black .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .hero.is-black .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-mocha .hero.is-black .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-mocha .hero.is-black.is-bold{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}}html.theme--catppuccin-mocha .hero.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .hero.is-light strong{color:inherit}html.theme--catppuccin-mocha .hero.is-light .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-light .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-mocha .hero.is-light .subtitle a:not(.button),html.theme--catppuccin-mocha .hero.is-light .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .hero.is-light .navbar-menu{background-color:#f5f5f5}}html.theme--catppuccin-mocha .hero.is-light .navbar-item,html.theme--catppuccin-mocha .hero.is-light .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-light a.navbar-item:hover,html.theme--catppuccin-mocha .hero.is-light a.navbar-item.is-active,html.theme--catppuccin-mocha .hero.is-light .navbar-link:hover,html.theme--catppuccin-mocha .hero.is-light .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-light .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-mocha .hero.is-light .tabs a:hover{opacity:1}html.theme--catppuccin-mocha .hero.is-light .tabs li.is-active a{color:#f5f5f5 !important;opacity:1}html.theme--catppuccin-mocha .hero.is-light .tabs.is-boxed a,html.theme--catppuccin-mocha .hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-light .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .hero.is-light .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .hero.is-light .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-mocha .hero.is-light .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-mocha .hero.is-light.is-bold{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}}html.theme--catppuccin-mocha .hero.is-dark,html.theme--catppuccin-mocha .content kbd.hero{background-color:#313244;color:#fff}html.theme--catppuccin-mocha .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .hero.is-dark strong,html.theme--catppuccin-mocha .content kbd.hero strong{color:inherit}html.theme--catppuccin-mocha .hero.is-dark .title,html.theme--catppuccin-mocha .content kbd.hero .title{color:#fff}html.theme--catppuccin-mocha .hero.is-dark .subtitle,html.theme--catppuccin-mocha .content kbd.hero .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-mocha .hero.is-dark .subtitle a:not(.button),html.theme--catppuccin-mocha .content kbd.hero .subtitle a:not(.button),html.theme--catppuccin-mocha .hero.is-dark .subtitle strong,html.theme--catppuccin-mocha .content kbd.hero .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .hero.is-dark .navbar-menu,html.theme--catppuccin-mocha .content kbd.hero .navbar-menu{background-color:#313244}}html.theme--catppuccin-mocha .hero.is-dark .navbar-item,html.theme--catppuccin-mocha .content kbd.hero .navbar-item,html.theme--catppuccin-mocha .hero.is-dark .navbar-link,html.theme--catppuccin-mocha .content kbd.hero .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-mocha .hero.is-dark a.navbar-item:hover,html.theme--catppuccin-mocha .content kbd.hero a.navbar-item:hover,html.theme--catppuccin-mocha .hero.is-dark a.navbar-item.is-active,html.theme--catppuccin-mocha .content kbd.hero a.navbar-item.is-active,html.theme--catppuccin-mocha .hero.is-dark .navbar-link:hover,html.theme--catppuccin-mocha .content kbd.hero .navbar-link:hover,html.theme--catppuccin-mocha .hero.is-dark .navbar-link.is-active,html.theme--catppuccin-mocha .content kbd.hero .navbar-link.is-active{background-color:#262735;color:#fff}html.theme--catppuccin-mocha .hero.is-dark .tabs a,html.theme--catppuccin-mocha .content kbd.hero .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-mocha .hero.is-dark .tabs a:hover,html.theme--catppuccin-mocha .content kbd.hero .tabs a:hover{opacity:1}html.theme--catppuccin-mocha .hero.is-dark .tabs li.is-active a,html.theme--catppuccin-mocha .content kbd.hero .tabs li.is-active a{color:#313244 !important;opacity:1}html.theme--catppuccin-mocha .hero.is-dark .tabs.is-boxed a,html.theme--catppuccin-mocha .content kbd.hero .tabs.is-boxed a,html.theme--catppuccin-mocha .hero.is-dark .tabs.is-toggle a,html.theme--catppuccin-mocha .content kbd.hero .tabs.is-toggle a{color:#fff}html.theme--catppuccin-mocha .hero.is-dark .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .content kbd.hero .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .hero.is-dark .tabs.is-toggle a:hover,html.theme--catppuccin-mocha .content kbd.hero .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .hero.is-dark .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .content kbd.hero .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .hero.is-dark .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-mocha .hero.is-dark .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .content kbd.hero .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#313244}html.theme--catppuccin-mocha .hero.is-dark.is-bold,html.theme--catppuccin-mocha .content kbd.hero.is-bold{background-image:linear-gradient(141deg, #181c2a 0%, #313244 71%, #3c3856 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero.is-dark.is-bold .navbar-menu,html.theme--catppuccin-mocha .content kbd.hero.is-bold .navbar-menu{background-image:linear-gradient(141deg, #181c2a 0%, #313244 71%, #3c3856 100%)}}html.theme--catppuccin-mocha .hero.is-primary,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .hero.is-primary strong,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink strong{color:inherit}html.theme--catppuccin-mocha .hero.is-primary .title,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .title{color:#fff}html.theme--catppuccin-mocha .hero.is-primary .subtitle,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-mocha .hero.is-primary .subtitle a:not(.button),html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .subtitle a:not(.button),html.theme--catppuccin-mocha .hero.is-primary .subtitle strong,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .hero.is-primary .navbar-menu,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .navbar-menu{background-color:#89b4fa}}html.theme--catppuccin-mocha .hero.is-primary .navbar-item,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .navbar-item,html.theme--catppuccin-mocha .hero.is-primary .navbar-link,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-mocha .hero.is-primary a.navbar-item:hover,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink a.navbar-item:hover,html.theme--catppuccin-mocha .hero.is-primary a.navbar-item.is-active,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink a.navbar-item.is-active,html.theme--catppuccin-mocha .hero.is-primary .navbar-link:hover,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .navbar-link:hover,html.theme--catppuccin-mocha .hero.is-primary .navbar-link.is-active,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .navbar-link.is-active{background-color:#71a4f9;color:#fff}html.theme--catppuccin-mocha .hero.is-primary .tabs a,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-mocha .hero.is-primary .tabs a:hover,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .tabs a:hover{opacity:1}html.theme--catppuccin-mocha .hero.is-primary .tabs li.is-active a,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .tabs li.is-active a{color:#89b4fa !important;opacity:1}html.theme--catppuccin-mocha .hero.is-primary .tabs.is-boxed a,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a,html.theme--catppuccin-mocha .hero.is-primary .tabs.is-toggle a,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a{color:#fff}html.theme--catppuccin-mocha .hero.is-primary .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .hero.is-primary .tabs.is-toggle a:hover,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .hero.is-primary .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .hero.is-primary .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-mocha .hero.is-primary .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#89b4fa}html.theme--catppuccin-mocha .hero.is-primary.is-bold,html.theme--catppuccin-mocha .docstring>section>a.hero.is-bold.docs-sourcelink{background-image:linear-gradient(141deg, #51b0ff 0%, #89b4fa 71%, #9fb3fd 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero.is-primary.is-bold .navbar-menu,html.theme--catppuccin-mocha .docstring>section>a.hero.is-bold.docs-sourcelink .navbar-menu{background-image:linear-gradient(141deg, #51b0ff 0%, #89b4fa 71%, #9fb3fd 100%)}}html.theme--catppuccin-mocha .hero.is-link{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .hero.is-link strong{color:inherit}html.theme--catppuccin-mocha .hero.is-link .title{color:#fff}html.theme--catppuccin-mocha .hero.is-link .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-mocha .hero.is-link .subtitle a:not(.button),html.theme--catppuccin-mocha .hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .hero.is-link .navbar-menu{background-color:#89b4fa}}html.theme--catppuccin-mocha .hero.is-link .navbar-item,html.theme--catppuccin-mocha .hero.is-link .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-mocha .hero.is-link a.navbar-item:hover,html.theme--catppuccin-mocha .hero.is-link a.navbar-item.is-active,html.theme--catppuccin-mocha .hero.is-link .navbar-link:hover,html.theme--catppuccin-mocha .hero.is-link .navbar-link.is-active{background-color:#71a4f9;color:#fff}html.theme--catppuccin-mocha .hero.is-link .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-mocha .hero.is-link .tabs a:hover{opacity:1}html.theme--catppuccin-mocha .hero.is-link .tabs li.is-active a{color:#89b4fa !important;opacity:1}html.theme--catppuccin-mocha .hero.is-link .tabs.is-boxed a,html.theme--catppuccin-mocha .hero.is-link .tabs.is-toggle a{color:#fff}html.theme--catppuccin-mocha .hero.is-link .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .hero.is-link .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .hero.is-link .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-mocha .hero.is-link .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#89b4fa}html.theme--catppuccin-mocha .hero.is-link.is-bold{background-image:linear-gradient(141deg, #51b0ff 0%, #89b4fa 71%, #9fb3fd 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #51b0ff 0%, #89b4fa 71%, #9fb3fd 100%)}}html.theme--catppuccin-mocha .hero.is-info{background-color:#94e2d5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .hero.is-info strong{color:inherit}html.theme--catppuccin-mocha .hero.is-info .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-info .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-mocha .hero.is-info .subtitle a:not(.button),html.theme--catppuccin-mocha .hero.is-info .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .hero.is-info .navbar-menu{background-color:#94e2d5}}html.theme--catppuccin-mocha .hero.is-info .navbar-item,html.theme--catppuccin-mocha .hero.is-info .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-info a.navbar-item:hover,html.theme--catppuccin-mocha .hero.is-info a.navbar-item.is-active,html.theme--catppuccin-mocha .hero.is-info .navbar-link:hover,html.theme--catppuccin-mocha .hero.is-info .navbar-link.is-active{background-color:#80ddcd;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-info .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-mocha .hero.is-info .tabs a:hover{opacity:1}html.theme--catppuccin-mocha .hero.is-info .tabs li.is-active a{color:#94e2d5 !important;opacity:1}html.theme--catppuccin-mocha .hero.is-info .tabs.is-boxed a,html.theme--catppuccin-mocha .hero.is-info .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-info .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .hero.is-info .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .hero.is-info .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-mocha .hero.is-info .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#94e2d5}html.theme--catppuccin-mocha .hero.is-info.is-bold{background-image:linear-gradient(141deg, #63e0b6 0%, #94e2d5 71%, #a5eaea 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #63e0b6 0%, #94e2d5 71%, #a5eaea 100%)}}html.theme--catppuccin-mocha .hero.is-success{background-color:#a6e3a1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .hero.is-success strong{color:inherit}html.theme--catppuccin-mocha .hero.is-success .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-success .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-mocha .hero.is-success .subtitle a:not(.button),html.theme--catppuccin-mocha .hero.is-success .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .hero.is-success .navbar-menu{background-color:#a6e3a1}}html.theme--catppuccin-mocha .hero.is-success .navbar-item,html.theme--catppuccin-mocha .hero.is-success .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-success a.navbar-item:hover,html.theme--catppuccin-mocha .hero.is-success a.navbar-item.is-active,html.theme--catppuccin-mocha .hero.is-success .navbar-link:hover,html.theme--catppuccin-mocha .hero.is-success .navbar-link.is-active{background-color:#93dd8d;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-success .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-mocha .hero.is-success .tabs a:hover{opacity:1}html.theme--catppuccin-mocha .hero.is-success .tabs li.is-active a{color:#a6e3a1 !important;opacity:1}html.theme--catppuccin-mocha .hero.is-success .tabs.is-boxed a,html.theme--catppuccin-mocha .hero.is-success .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-success .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .hero.is-success .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .hero.is-success .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-mocha .hero.is-success .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#a6e3a1}html.theme--catppuccin-mocha .hero.is-success.is-bold{background-image:linear-gradient(141deg, #8ce071 0%, #a6e3a1 71%, #b2ebb7 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #8ce071 0%, #a6e3a1 71%, #b2ebb7 100%)}}html.theme--catppuccin-mocha .hero.is-warning{background-color:#f9e2af;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .hero.is-warning strong{color:inherit}html.theme--catppuccin-mocha .hero.is-warning .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-warning .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-mocha .hero.is-warning .subtitle a:not(.button),html.theme--catppuccin-mocha .hero.is-warning .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .hero.is-warning .navbar-menu{background-color:#f9e2af}}html.theme--catppuccin-mocha .hero.is-warning .navbar-item,html.theme--catppuccin-mocha .hero.is-warning .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-warning a.navbar-item:hover,html.theme--catppuccin-mocha .hero.is-warning a.navbar-item.is-active,html.theme--catppuccin-mocha .hero.is-warning .navbar-link:hover,html.theme--catppuccin-mocha .hero.is-warning .navbar-link.is-active{background-color:#f7d997;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-warning .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-mocha .hero.is-warning .tabs a:hover{opacity:1}html.theme--catppuccin-mocha .hero.is-warning .tabs li.is-active a{color:#f9e2af !important;opacity:1}html.theme--catppuccin-mocha .hero.is-warning .tabs.is-boxed a,html.theme--catppuccin-mocha .hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-warning .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .hero.is-warning .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .hero.is-warning .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-mocha .hero.is-warning .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#f9e2af}html.theme--catppuccin-mocha .hero.is-warning.is-bold{background-image:linear-gradient(141deg, #fcbd79 0%, #f9e2af 71%, #fcf4c5 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #fcbd79 0%, #f9e2af 71%, #fcf4c5 100%)}}html.theme--catppuccin-mocha .hero.is-danger{background-color:#f38ba8;color:#fff}html.theme--catppuccin-mocha .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .hero.is-danger strong{color:inherit}html.theme--catppuccin-mocha .hero.is-danger .title{color:#fff}html.theme--catppuccin-mocha .hero.is-danger .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-mocha .hero.is-danger .subtitle a:not(.button),html.theme--catppuccin-mocha .hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .hero.is-danger .navbar-menu{background-color:#f38ba8}}html.theme--catppuccin-mocha .hero.is-danger .navbar-item,html.theme--catppuccin-mocha .hero.is-danger .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-mocha .hero.is-danger a.navbar-item:hover,html.theme--catppuccin-mocha .hero.is-danger a.navbar-item.is-active,html.theme--catppuccin-mocha .hero.is-danger .navbar-link:hover,html.theme--catppuccin-mocha .hero.is-danger .navbar-link.is-active{background-color:#f17497;color:#fff}html.theme--catppuccin-mocha .hero.is-danger .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-mocha .hero.is-danger .tabs a:hover{opacity:1}html.theme--catppuccin-mocha .hero.is-danger .tabs li.is-active a{color:#f38ba8 !important;opacity:1}html.theme--catppuccin-mocha .hero.is-danger .tabs.is-boxed a,html.theme--catppuccin-mocha .hero.is-danger .tabs.is-toggle a{color:#fff}html.theme--catppuccin-mocha .hero.is-danger .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .hero.is-danger .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .hero.is-danger .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-mocha .hero.is-danger .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#f38ba8}html.theme--catppuccin-mocha .hero.is-danger.is-bold{background-image:linear-gradient(141deg, #f7549d 0%, #f38ba8 71%, #f8a0a9 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #f7549d 0%, #f38ba8 71%, #f8a0a9 100%)}}html.theme--catppuccin-mocha .hero.is-small .hero-body,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.hero .hero-body{padding:1.5rem}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .hero.is-medium .hero-body{padding:9rem 4.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .hero.is-large .hero-body{padding:18rem 6rem}}html.theme--catppuccin-mocha .hero.is-halfheight .hero-body,html.theme--catppuccin-mocha .hero.is-fullheight .hero-body,html.theme--catppuccin-mocha .hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}html.theme--catppuccin-mocha .hero.is-halfheight .hero-body>.container,html.theme--catppuccin-mocha .hero.is-fullheight .hero-body>.container,html.theme--catppuccin-mocha .hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}html.theme--catppuccin-mocha .hero.is-halfheight{min-height:50vh}html.theme--catppuccin-mocha .hero.is-fullheight{min-height:100vh}html.theme--catppuccin-mocha .hero-video{overflow:hidden}html.theme--catppuccin-mocha .hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}html.theme--catppuccin-mocha .hero-video.is-transparent{opacity:0.3}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero-video{display:none}}html.theme--catppuccin-mocha .hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero-buttons .button{display:flex}html.theme--catppuccin-mocha .hero-buttons .button:not(:last-child){margin-bottom:0.75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .hero-buttons{display:flex;justify-content:center}html.theme--catppuccin-mocha .hero-buttons .button:not(:last-child){margin-right:1.5rem}}html.theme--catppuccin-mocha .hero-head,html.theme--catppuccin-mocha .hero-foot{flex-grow:0;flex-shrink:0}html.theme--catppuccin-mocha .hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .hero-body{padding:3rem 3rem}}html.theme--catppuccin-mocha .section{padding:3rem 1.5rem}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .section{padding:3rem 3rem}html.theme--catppuccin-mocha .section.is-medium{padding:9rem 4.5rem}html.theme--catppuccin-mocha .section.is-large{padding:18rem 6rem}}html.theme--catppuccin-mocha .footer{background-color:#181825;padding:3rem 1.5rem 6rem}html.theme--catppuccin-mocha h1 .docs-heading-anchor,html.theme--catppuccin-mocha h1 .docs-heading-anchor:hover,html.theme--catppuccin-mocha h1 .docs-heading-anchor:visited,html.theme--catppuccin-mocha h2 .docs-heading-anchor,html.theme--catppuccin-mocha h2 .docs-heading-anchor:hover,html.theme--catppuccin-mocha h2 .docs-heading-anchor:visited,html.theme--catppuccin-mocha h3 .docs-heading-anchor,html.theme--catppuccin-mocha h3 .docs-heading-anchor:hover,html.theme--catppuccin-mocha h3 .docs-heading-anchor:visited,html.theme--catppuccin-mocha h4 .docs-heading-anchor,html.theme--catppuccin-mocha h4 .docs-heading-anchor:hover,html.theme--catppuccin-mocha h4 .docs-heading-anchor:visited,html.theme--catppuccin-mocha h5 .docs-heading-anchor,html.theme--catppuccin-mocha h5 .docs-heading-anchor:hover,html.theme--catppuccin-mocha h5 .docs-heading-anchor:visited,html.theme--catppuccin-mocha h6 .docs-heading-anchor,html.theme--catppuccin-mocha h6 .docs-heading-anchor:hover,html.theme--catppuccin-mocha h6 .docs-heading-anchor:visited{color:#cdd6f4}html.theme--catppuccin-mocha h1 .docs-heading-anchor-permalink,html.theme--catppuccin-mocha h2 .docs-heading-anchor-permalink,html.theme--catppuccin-mocha h3 .docs-heading-anchor-permalink,html.theme--catppuccin-mocha h4 .docs-heading-anchor-permalink,html.theme--catppuccin-mocha h5 .docs-heading-anchor-permalink,html.theme--catppuccin-mocha h6 .docs-heading-anchor-permalink{visibility:hidden;vertical-align:middle;margin-left:0.5em;font-size:0.7rem}html.theme--catppuccin-mocha h1 .docs-heading-anchor-permalink::before,html.theme--catppuccin-mocha h2 .docs-heading-anchor-permalink::before,html.theme--catppuccin-mocha h3 .docs-heading-anchor-permalink::before,html.theme--catppuccin-mocha h4 .docs-heading-anchor-permalink::before,html.theme--catppuccin-mocha h5 .docs-heading-anchor-permalink::before,html.theme--catppuccin-mocha h6 .docs-heading-anchor-permalink::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f0c1"}html.theme--catppuccin-mocha h1:hover .docs-heading-anchor-permalink,html.theme--catppuccin-mocha h2:hover .docs-heading-anchor-permalink,html.theme--catppuccin-mocha h3:hover .docs-heading-anchor-permalink,html.theme--catppuccin-mocha h4:hover .docs-heading-anchor-permalink,html.theme--catppuccin-mocha h5:hover .docs-heading-anchor-permalink,html.theme--catppuccin-mocha h6:hover .docs-heading-anchor-permalink{visibility:visible}html.theme--catppuccin-mocha .docs-light-only{display:none !important}html.theme--catppuccin-mocha pre{position:relative;overflow:hidden}html.theme--catppuccin-mocha pre code,html.theme--catppuccin-mocha pre code.hljs{padding:0 .75rem !important;overflow:auto;display:block}html.theme--catppuccin-mocha pre code:first-of-type,html.theme--catppuccin-mocha pre code.hljs:first-of-type{padding-top:0.5rem !important}html.theme--catppuccin-mocha pre code:last-of-type,html.theme--catppuccin-mocha pre code.hljs:last-of-type{padding-bottom:0.5rem !important}html.theme--catppuccin-mocha pre .copy-button{opacity:0.2;transition:opacity 0.2s;position:absolute;right:0em;top:0em;padding:0.5em;width:2.5em;height:2.5em;background:transparent;border:none;font-family:"Font Awesome 6 Free";color:#cdd6f4;cursor:pointer;text-align:center}html.theme--catppuccin-mocha pre .copy-button:focus,html.theme--catppuccin-mocha pre .copy-button:hover{opacity:1;background:rgba(205,214,244,0.1);color:#89b4fa}html.theme--catppuccin-mocha pre .copy-button.success{color:#a6e3a1;opacity:1}html.theme--catppuccin-mocha pre .copy-button.error{color:#f38ba8;opacity:1}html.theme--catppuccin-mocha pre:hover .copy-button{opacity:1}html.theme--catppuccin-mocha .admonition{background-color:#181825;border-style:solid;border-width:2px;border-color:#bac2de;border-radius:4px;font-size:1rem}html.theme--catppuccin-mocha .admonition strong{color:currentColor}html.theme--catppuccin-mocha .admonition.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.admonition{font-size:.75rem}html.theme--catppuccin-mocha .admonition.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .admonition.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .admonition.is-default{background-color:#181825;border-color:#bac2de}html.theme--catppuccin-mocha .admonition.is-default>.admonition-header{background-color:rgba(0,0,0,0);color:#bac2de}html.theme--catppuccin-mocha .admonition.is-default>.admonition-body{color:#cdd6f4}html.theme--catppuccin-mocha .admonition.is-info{background-color:#181825;border-color:#94e2d5}html.theme--catppuccin-mocha .admonition.is-info>.admonition-header{background-color:rgba(0,0,0,0);color:#94e2d5}html.theme--catppuccin-mocha .admonition.is-info>.admonition-body{color:#cdd6f4}html.theme--catppuccin-mocha .admonition.is-success{background-color:#181825;border-color:#a6e3a1}html.theme--catppuccin-mocha .admonition.is-success>.admonition-header{background-color:rgba(0,0,0,0);color:#a6e3a1}html.theme--catppuccin-mocha .admonition.is-success>.admonition-body{color:#cdd6f4}html.theme--catppuccin-mocha .admonition.is-warning{background-color:#181825;border-color:#f9e2af}html.theme--catppuccin-mocha .admonition.is-warning>.admonition-header{background-color:rgba(0,0,0,0);color:#f9e2af}html.theme--catppuccin-mocha .admonition.is-warning>.admonition-body{color:#cdd6f4}html.theme--catppuccin-mocha .admonition.is-danger{background-color:#181825;border-color:#f38ba8}html.theme--catppuccin-mocha .admonition.is-danger>.admonition-header{background-color:rgba(0,0,0,0);color:#f38ba8}html.theme--catppuccin-mocha .admonition.is-danger>.admonition-body{color:#cdd6f4}html.theme--catppuccin-mocha .admonition.is-compat{background-color:#181825;border-color:#89dceb}html.theme--catppuccin-mocha .admonition.is-compat>.admonition-header{background-color:rgba(0,0,0,0);color:#89dceb}html.theme--catppuccin-mocha .admonition.is-compat>.admonition-body{color:#cdd6f4}html.theme--catppuccin-mocha .admonition.is-todo{background-color:#181825;border-color:#cba6f7}html.theme--catppuccin-mocha .admonition.is-todo>.admonition-header{background-color:rgba(0,0,0,0);color:#cba6f7}html.theme--catppuccin-mocha .admonition.is-todo>.admonition-body{color:#cdd6f4}html.theme--catppuccin-mocha .admonition-header{color:#bac2de;background-color:rgba(0,0,0,0);align-items:center;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.5rem .75rem;position:relative}html.theme--catppuccin-mocha .admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;margin-right:.75rem;content:"\f06a"}html.theme--catppuccin-mocha details.admonition.is-details>.admonition-header{list-style:none}html.theme--catppuccin-mocha details.admonition.is-details>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f055"}html.theme--catppuccin-mocha details.admonition.is-details[open]>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f056"}html.theme--catppuccin-mocha .admonition-body{color:#cdd6f4;padding:0.5rem .75rem}html.theme--catppuccin-mocha .admonition-body pre{background-color:#181825}html.theme--catppuccin-mocha .admonition-body code{background-color:#181825}html.theme--catppuccin-mocha .docstring{margin-bottom:1em;background-color:rgba(0,0,0,0);border:2px solid #585b70;border-radius:4px;box-shadow:none;max-width:100%}html.theme--catppuccin-mocha .docstring>header{cursor:pointer;display:flex;flex-grow:1;align-items:stretch;padding:0.5rem .75rem;background-color:#181825;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);box-shadow:none;border-bottom:1px solid #585b70;overflow:auto}html.theme--catppuccin-mocha .docstring>header code{background-color:transparent}html.theme--catppuccin-mocha .docstring>header .docstring-article-toggle-button{min-width:1.1rem;padding:0.2rem 0.2rem 0.2rem 0}html.theme--catppuccin-mocha .docstring>header .docstring-binding{margin-right:0.3em}html.theme--catppuccin-mocha .docstring>header .docstring-category{margin-left:0.3em}html.theme--catppuccin-mocha .docstring>section{position:relative;padding:.75rem .75rem;border-bottom:1px solid #585b70}html.theme--catppuccin-mocha .docstring>section:last-child{border-bottom:none}html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink{transition:opacity 0.3s;opacity:0;position:absolute;right:.375rem;bottom:.375rem}html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink:focus{opacity:1 !important}html.theme--catppuccin-mocha .docstring:hover>section>a.docs-sourcelink{opacity:0.2}html.theme--catppuccin-mocha .docstring:focus-within>section>a.docs-sourcelink{opacity:0.2}html.theme--catppuccin-mocha .docstring>section:hover a.docs-sourcelink{opacity:1}html.theme--catppuccin-mocha .documenter-example-output{background-color:#1e1e2e}html.theme--catppuccin-mocha .outdated-warning-overlay{position:fixed;top:0;left:0;right:0;box-shadow:0 0 10px rgba(0,0,0,0.3);z-index:999;background-color:#181825;color:#cdd6f4;border-bottom:3px solid rgba(0,0,0,0);padding:10px 35px;text-align:center;font-size:15px}html.theme--catppuccin-mocha .outdated-warning-overlay .outdated-warning-closer{position:absolute;top:calc(50% - 10px);right:18px;cursor:pointer;width:12px}html.theme--catppuccin-mocha .outdated-warning-overlay a{color:#89b4fa}html.theme--catppuccin-mocha .outdated-warning-overlay a:hover{color:#89dceb}html.theme--catppuccin-mocha .content pre{border:2px solid #585b70;border-radius:4px}html.theme--catppuccin-mocha .content code{font-weight:inherit}html.theme--catppuccin-mocha .content a code{color:#89b4fa}html.theme--catppuccin-mocha .content a:hover code{color:#89dceb}html.theme--catppuccin-mocha .content h1 code,html.theme--catppuccin-mocha .content h2 code,html.theme--catppuccin-mocha .content h3 code,html.theme--catppuccin-mocha .content h4 code,html.theme--catppuccin-mocha .content h5 code,html.theme--catppuccin-mocha .content h6 code{color:#cdd6f4}html.theme--catppuccin-mocha .content table{display:block;width:initial;max-width:100%;overflow-x:auto}html.theme--catppuccin-mocha .content blockquote>ul:first-child,html.theme--catppuccin-mocha .content blockquote>ol:first-child,html.theme--catppuccin-mocha .content .admonition-body>ul:first-child,html.theme--catppuccin-mocha .content .admonition-body>ol:first-child{margin-top:0}html.theme--catppuccin-mocha pre,html.theme--catppuccin-mocha code{font-variant-ligatures:no-contextual}html.theme--catppuccin-mocha .breadcrumb a.is-disabled{cursor:default;pointer-events:none}html.theme--catppuccin-mocha .breadcrumb a.is-disabled,html.theme--catppuccin-mocha .breadcrumb a.is-disabled:hover{color:#b8c5ef}html.theme--catppuccin-mocha .hljs{background:initial !important}html.theme--catppuccin-mocha .katex .katex-mathml{top:0;right:0}html.theme--catppuccin-mocha .katex-display,html.theme--catppuccin-mocha mjx-container,html.theme--catppuccin-mocha .MathJax_Display{margin:0.5em 0 !important}html.theme--catppuccin-mocha html{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto}html.theme--catppuccin-mocha li.no-marker{list-style:none}html.theme--catppuccin-mocha #documenter .docs-main>article{overflow-wrap:break-word}html.theme--catppuccin-mocha #documenter .docs-main>article .math-container{overflow-x:auto;overflow-y:hidden}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha #documenter .docs-main{max-width:52rem;margin-left:20rem;padding-right:1rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha #documenter .docs-main{width:100%}html.theme--catppuccin-mocha #documenter .docs-main>article{max-width:52rem;margin-left:auto;margin-right:auto;margin-bottom:1rem;padding:0 1rem}html.theme--catppuccin-mocha #documenter .docs-main>header,html.theme--catppuccin-mocha #documenter .docs-main>nav{max-width:100%;width:100%;margin:0}}html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar{background-color:#1e1e2e;border-bottom:1px solid #585b70;z-index:2;min-height:4rem;margin-bottom:1rem;display:flex}html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar .breadcrumb{flex-grow:1;overflow-x:hidden}html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar .docs-sidebar-button{display:block;font-size:1.5rem;padding-bottom:0.1rem;margin-right:1rem}html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar .docs-right{display:flex;white-space:nowrap;gap:1rem;align-items:center}html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar .docs-right .docs-icon,html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar .docs-right .docs-label{display:inline-block}html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar .docs-right .docs-label{padding:0;margin-left:0.3em}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar .docs-right .docs-navbar-link{margin-left:0.4rem;margin-right:0.4rem}}html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar>*{margin:auto 0}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar{position:sticky;top:0;padding:0 1rem;transition-property:top, box-shadow;-webkit-transition-property:top, box-shadow;transition-duration:0.3s;-webkit-transition-duration:0.3s}html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar.headroom--not-top{box-shadow:.2rem 0rem .4rem #171717;transition-duration:0.7s;-webkit-transition-duration:0.7s}html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom{top:-4.5rem;transition-duration:0.7s;-webkit-transition-duration:0.7s}}html.theme--catppuccin-mocha #documenter .docs-main section.footnotes{border-top:1px solid #585b70}html.theme--catppuccin-mocha #documenter .docs-main section.footnotes li .tag:first-child,html.theme--catppuccin-mocha #documenter .docs-main section.footnotes li .docstring>section>a.docs-sourcelink:first-child,html.theme--catppuccin-mocha #documenter .docs-main section.footnotes li .content kbd:first-child,html.theme--catppuccin-mocha .content #documenter .docs-main section.footnotes li kbd:first-child{margin-right:1em;margin-bottom:0.4em}html.theme--catppuccin-mocha #documenter .docs-main .docs-footer{display:flex;flex-wrap:wrap;margin-left:0;margin-right:0;border-top:1px solid #585b70;padding-top:1rem;padding-bottom:1rem}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha #documenter .docs-main .docs-footer{padding-left:1rem;padding-right:1rem}}html.theme--catppuccin-mocha #documenter .docs-main .docs-footer .docs-footer-nextpage,html.theme--catppuccin-mocha #documenter .docs-main .docs-footer .docs-footer-prevpage{flex-grow:1}html.theme--catppuccin-mocha #documenter .docs-main .docs-footer .docs-footer-nextpage{text-align:right}html.theme--catppuccin-mocha #documenter .docs-main .docs-footer .flexbox-break{flex-basis:100%;height:0}html.theme--catppuccin-mocha #documenter .docs-main .docs-footer .footer-message{font-size:0.8em;margin:0.5em auto 0 auto;text-align:center}html.theme--catppuccin-mocha #documenter .docs-sidebar{display:flex;flex-direction:column;color:#cdd6f4;background-color:#181825;border-right:1px solid #585b70;padding:0;flex:0 0 18rem;z-index:5;font-size:1rem;position:fixed;left:-18rem;width:18rem;height:100%;transition:left 0.3s}html.theme--catppuccin-mocha #documenter .docs-sidebar.visible{left:0;box-shadow:.4rem 0rem .8rem #171717}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha #documenter .docs-sidebar.visible{box-shadow:none}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha #documenter .docs-sidebar{left:0;top:0}}html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo{margin-top:1rem;padding:0 1rem}html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img{max-height:6rem;margin:auto}html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-package-name{flex-shrink:0;font-size:1.5rem;font-weight:700;text-align:center;white-space:nowrap;overflow:hidden;padding:0.5rem 0}html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-package-name .docs-autofit{max-width:16.2rem}html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-package-name a,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-package-name a:hover{color:#cdd6f4}html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-version-selector{border-top:1px solid #585b70;display:none;padding:0.5rem}html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-version-selector.visible{display:flex}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu{flex-grow:1;user-select:none;border-top:1px solid #585b70;padding-bottom:1.5rem}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu>li>.tocitem{font-weight:bold}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu>li li{font-size:.95rem;margin-left:1em;border-left:1px solid #585b70}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu input.collapse-toggle{display:none}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu ul.collapsed{display:none}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu input:checked~ul.collapsed{display:block}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu label.tocitem{display:flex}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label{flex-grow:2}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron{display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;font-size:.75rem;margin-left:1rem;margin-top:auto;margin-bottom:auto}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f054"}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu input:checked~label.tocitem .docs-chevron::before{content:"\f078"}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu .tocitem{display:block;padding:0.5rem 0.5rem}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu .tocitem,html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu .tocitem:hover{color:#cdd6f4;background:#181825}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu a.tocitem:hover,html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu label.tocitem:hover{color:#cdd6f4;background-color:#202031}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu li.is-active{border-top:1px solid #585b70;border-bottom:1px solid #585b70;background-color:#11111b}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem,html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover{background-color:#11111b;color:#cdd6f4}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover{background-color:#202031;color:#cdd6f4}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu>li.is-active:first-child{border-top:none}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu ul.internal{margin:0 0.5rem 0.5rem;border-top:1px solid #585b70}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu ul.internal li{font-size:.85rem;border-left:none;margin-left:0;margin-top:0.5rem}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem{width:100%;padding:0}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before{content:"⚬";margin-right:0.4em}html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search{margin:auto;margin-top:0.5rem;margin-bottom:0.5rem}html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input{width:14.4rem}html.theme--catppuccin-mocha #documenter .docs-sidebar #documenter-search-query{color:#868c98;width:14.4rem;box-shadow:inset 0 1px 2px rgba(10,10,10,0.1)}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar{width:.3rem;background:none}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#28283e}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover{background:#383856}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha #documenter .docs-sidebar{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--catppuccin-mocha #documenter .docs-sidebar::-webkit-scrollbar{width:.3rem;background:none}html.theme--catppuccin-mocha #documenter .docs-sidebar::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#28283e}html.theme--catppuccin-mocha #documenter .docs-sidebar::-webkit-scrollbar-thumb:hover{background:#383856}}html.theme--catppuccin-mocha kbd.search-modal-key-hints{border-radius:0.25rem;border:1px solid rgba(245,245,245,0.6);box-shadow:0 2px 0 1px rgba(245,245,245,0.6);cursor:default;font-size:0.9rem;line-height:1.5;min-width:0.75rem;text-align:center;padding:0.1rem 0.3rem;position:relative;top:-1px}html.theme--catppuccin-mocha .search-min-width-50{min-width:50%}html.theme--catppuccin-mocha .search-min-height-100{min-height:100%}html.theme--catppuccin-mocha .search-modal-card-body{max-height:calc(100vh - 15rem)}html.theme--catppuccin-mocha .search-result-link{border-radius:0.7em;transition:all 300ms}html.theme--catppuccin-mocha .search-result-link:hover,html.theme--catppuccin-mocha .search-result-link:focus{background-color:rgba(0,128,128,0.1)}html.theme--catppuccin-mocha .search-result-link .property-search-result-badge,html.theme--catppuccin-mocha .search-result-link .search-filter{transition:all 300ms}html.theme--catppuccin-mocha .property-search-result-badge,html.theme--catppuccin-mocha .search-filter{padding:0.15em 0.5em;font-size:0.8em;font-style:italic;text-transform:none !important;line-height:1.5;color:#f5f5f5;background-color:rgba(51,65,85,0.501961);border-radius:0.6rem}html.theme--catppuccin-mocha .search-result-link:hover .property-search-result-badge,html.theme--catppuccin-mocha .search-result-link:hover .search-filter,html.theme--catppuccin-mocha .search-result-link:focus .property-search-result-badge,html.theme--catppuccin-mocha .search-result-link:focus .search-filter{color:#333;background-color:#f1f5f9}html.theme--catppuccin-mocha .search-filter{color:#333;background-color:#f5f5f5;transition:all 300ms}html.theme--catppuccin-mocha .search-filter:hover,html.theme--catppuccin-mocha .search-filter:focus{color:#333}html.theme--catppuccin-mocha .search-filter-selected{color:#313244;background-color:#b4befe}html.theme--catppuccin-mocha .search-filter-selected:hover,html.theme--catppuccin-mocha .search-filter-selected:focus{color:#313244}html.theme--catppuccin-mocha .search-result-highlight{background-color:#ffdd57;color:black}html.theme--catppuccin-mocha .search-divider{border-bottom:1px solid #585b70}html.theme--catppuccin-mocha .search-result-title{width:85%;color:#f5f5f5}html.theme--catppuccin-mocha .search-result-code-title{font-size:0.875rem;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--catppuccin-mocha #search-modal .modal-card-body::-webkit-scrollbar,html.theme--catppuccin-mocha #search-modal .filter-tabs::-webkit-scrollbar{height:10px;width:10px;background-color:transparent}html.theme--catppuccin-mocha #search-modal .modal-card-body::-webkit-scrollbar-thumb,html.theme--catppuccin-mocha #search-modal .filter-tabs::-webkit-scrollbar-thumb{background-color:gray;border-radius:1rem}html.theme--catppuccin-mocha #search-modal .modal-card-body::-webkit-scrollbar-track,html.theme--catppuccin-mocha #search-modal .filter-tabs::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.6);background-color:transparent}html.theme--catppuccin-mocha .w-100{width:100%}html.theme--catppuccin-mocha .gap-2{gap:0.5rem}html.theme--catppuccin-mocha .gap-4{gap:1rem}html.theme--catppuccin-mocha .gap-8{gap:2rem}html.theme--catppuccin-mocha{background-color:#1e1e2e;font-size:16px;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--catppuccin-mocha a{transition:all 200ms ease}html.theme--catppuccin-mocha .label{color:#cdd6f4}html.theme--catppuccin-mocha .button,html.theme--catppuccin-mocha .control.has-icons-left .icon,html.theme--catppuccin-mocha .control.has-icons-right .icon,html.theme--catppuccin-mocha .input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-mocha .pagination-ellipsis,html.theme--catppuccin-mocha .pagination-link,html.theme--catppuccin-mocha .pagination-next,html.theme--catppuccin-mocha .pagination-previous,html.theme--catppuccin-mocha .select,html.theme--catppuccin-mocha .select select,html.theme--catppuccin-mocha .textarea{height:2.5em;color:#cdd6f4}html.theme--catppuccin-mocha .input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-mocha .textarea{transition:all 200ms ease;box-shadow:none;border-width:1px;padding-left:1em;padding-right:1em;color:#cdd6f4}html.theme--catppuccin-mocha .select:after,html.theme--catppuccin-mocha .select select{border-width:1px}html.theme--catppuccin-mocha .menu-list a{transition:all 300ms ease}html.theme--catppuccin-mocha .modal-card-foot,html.theme--catppuccin-mocha .modal-card-head{border-color:#585b70}html.theme--catppuccin-mocha .navbar{border-radius:.4em}html.theme--catppuccin-mocha .navbar.is-transparent{background:none}html.theme--catppuccin-mocha .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#89b4fa}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .navbar .navbar-menu{background-color:#89b4fa;border-radius:0 0 .4em .4em}}html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink:not(body){color:#313244}html.theme--catppuccin-mocha .tag.is-link:not(body),html.theme--catppuccin-mocha .docstring>section>a.is-link.docs-sourcelink:not(body),html.theme--catppuccin-mocha .content kbd.is-link:not(body){color:#313244}html.theme--catppuccin-mocha .ansi span.sgr1{font-weight:bolder}html.theme--catppuccin-mocha .ansi span.sgr2{font-weight:lighter}html.theme--catppuccin-mocha .ansi span.sgr3{font-style:italic}html.theme--catppuccin-mocha .ansi span.sgr4{text-decoration:underline}html.theme--catppuccin-mocha .ansi span.sgr7{color:#1e1e2e;background-color:#cdd6f4}html.theme--catppuccin-mocha .ansi span.sgr8{color:transparent}html.theme--catppuccin-mocha .ansi span.sgr8 span{color:transparent}html.theme--catppuccin-mocha .ansi span.sgr9{text-decoration:line-through}html.theme--catppuccin-mocha .ansi span.sgr30{color:#45475a}html.theme--catppuccin-mocha .ansi span.sgr31{color:#f38ba8}html.theme--catppuccin-mocha .ansi span.sgr32{color:#a6e3a1}html.theme--catppuccin-mocha .ansi span.sgr33{color:#f9e2af}html.theme--catppuccin-mocha .ansi span.sgr34{color:#89b4fa}html.theme--catppuccin-mocha .ansi span.sgr35{color:#f5c2e7}html.theme--catppuccin-mocha .ansi span.sgr36{color:#94e2d5}html.theme--catppuccin-mocha .ansi span.sgr37{color:#bac2de}html.theme--catppuccin-mocha .ansi span.sgr40{background-color:#45475a}html.theme--catppuccin-mocha .ansi span.sgr41{background-color:#f38ba8}html.theme--catppuccin-mocha .ansi span.sgr42{background-color:#a6e3a1}html.theme--catppuccin-mocha .ansi span.sgr43{background-color:#f9e2af}html.theme--catppuccin-mocha .ansi span.sgr44{background-color:#89b4fa}html.theme--catppuccin-mocha .ansi span.sgr45{background-color:#f5c2e7}html.theme--catppuccin-mocha .ansi span.sgr46{background-color:#94e2d5}html.theme--catppuccin-mocha .ansi span.sgr47{background-color:#bac2de}html.theme--catppuccin-mocha .ansi span.sgr90{color:#585b70}html.theme--catppuccin-mocha .ansi span.sgr91{color:#f38ba8}html.theme--catppuccin-mocha .ansi span.sgr92{color:#a6e3a1}html.theme--catppuccin-mocha .ansi span.sgr93{color:#f9e2af}html.theme--catppuccin-mocha .ansi span.sgr94{color:#89b4fa}html.theme--catppuccin-mocha .ansi span.sgr95{color:#f5c2e7}html.theme--catppuccin-mocha .ansi span.sgr96{color:#94e2d5}html.theme--catppuccin-mocha .ansi span.sgr97{color:#a6adc8}html.theme--catppuccin-mocha .ansi span.sgr100{background-color:#585b70}html.theme--catppuccin-mocha .ansi span.sgr101{background-color:#f38ba8}html.theme--catppuccin-mocha .ansi span.sgr102{background-color:#a6e3a1}html.theme--catppuccin-mocha .ansi span.sgr103{background-color:#f9e2af}html.theme--catppuccin-mocha .ansi span.sgr104{background-color:#89b4fa}html.theme--catppuccin-mocha .ansi span.sgr105{background-color:#f5c2e7}html.theme--catppuccin-mocha .ansi span.sgr106{background-color:#94e2d5}html.theme--catppuccin-mocha .ansi span.sgr107{background-color:#a6adc8}html.theme--catppuccin-mocha code.language-julia-repl>span.hljs-meta{color:#a6e3a1;font-weight:bolder}html.theme--catppuccin-mocha code .hljs{color:#cdd6f4;background:#1e1e2e}html.theme--catppuccin-mocha code .hljs-keyword{color:#cba6f7}html.theme--catppuccin-mocha code .hljs-built_in{color:#f38ba8}html.theme--catppuccin-mocha code .hljs-type{color:#f9e2af}html.theme--catppuccin-mocha code .hljs-literal{color:#fab387}html.theme--catppuccin-mocha code .hljs-number{color:#fab387}html.theme--catppuccin-mocha code .hljs-operator{color:#94e2d5}html.theme--catppuccin-mocha code .hljs-punctuation{color:#bac2de}html.theme--catppuccin-mocha code .hljs-property{color:#94e2d5}html.theme--catppuccin-mocha code .hljs-regexp{color:#f5c2e7}html.theme--catppuccin-mocha code .hljs-string{color:#a6e3a1}html.theme--catppuccin-mocha code .hljs-char.escape_{color:#a6e3a1}html.theme--catppuccin-mocha code .hljs-subst{color:#a6adc8}html.theme--catppuccin-mocha code .hljs-symbol{color:#f2cdcd}html.theme--catppuccin-mocha code .hljs-variable{color:#cba6f7}html.theme--catppuccin-mocha code .hljs-variable.language_{color:#cba6f7}html.theme--catppuccin-mocha code .hljs-variable.constant_{color:#fab387}html.theme--catppuccin-mocha code .hljs-title{color:#89b4fa}html.theme--catppuccin-mocha code .hljs-title.class_{color:#f9e2af}html.theme--catppuccin-mocha code .hljs-title.function_{color:#89b4fa}html.theme--catppuccin-mocha code .hljs-params{color:#cdd6f4}html.theme--catppuccin-mocha code .hljs-comment{color:#585b70}html.theme--catppuccin-mocha code .hljs-doctag{color:#f38ba8}html.theme--catppuccin-mocha code .hljs-meta{color:#fab387}html.theme--catppuccin-mocha code .hljs-section{color:#89b4fa}html.theme--catppuccin-mocha code .hljs-tag{color:#a6adc8}html.theme--catppuccin-mocha code .hljs-name{color:#cba6f7}html.theme--catppuccin-mocha code .hljs-attr{color:#89b4fa}html.theme--catppuccin-mocha code .hljs-attribute{color:#a6e3a1}html.theme--catppuccin-mocha code .hljs-bullet{color:#94e2d5}html.theme--catppuccin-mocha code .hljs-code{color:#a6e3a1}html.theme--catppuccin-mocha code .hljs-emphasis{color:#f38ba8;font-style:italic}html.theme--catppuccin-mocha code .hljs-strong{color:#f38ba8;font-weight:bold}html.theme--catppuccin-mocha code .hljs-formula{color:#94e2d5}html.theme--catppuccin-mocha code .hljs-link{color:#74c7ec;font-style:italic}html.theme--catppuccin-mocha code .hljs-quote{color:#a6e3a1;font-style:italic}html.theme--catppuccin-mocha code .hljs-selector-tag{color:#f9e2af}html.theme--catppuccin-mocha code .hljs-selector-id{color:#89b4fa}html.theme--catppuccin-mocha code .hljs-selector-class{color:#94e2d5}html.theme--catppuccin-mocha code .hljs-selector-attr{color:#cba6f7}html.theme--catppuccin-mocha code .hljs-selector-pseudo{color:#94e2d5}html.theme--catppuccin-mocha code .hljs-template-tag{color:#f2cdcd}html.theme--catppuccin-mocha code .hljs-template-variable{color:#f2cdcd}html.theme--catppuccin-mocha code .hljs-addition{color:#a6e3a1;background:rgba(166,227,161,0.15)}html.theme--catppuccin-mocha code .hljs-deletion{color:#f38ba8;background:rgba(243,139,168,0.15)}html.theme--catppuccin-mocha .search-result-link{border-radius:0.7em;transition:all 300ms}html.theme--catppuccin-mocha .search-result-link:hover,html.theme--catppuccin-mocha .search-result-link:focus{background-color:#313244}html.theme--catppuccin-mocha .search-result-link .property-search-result-badge,html.theme--catppuccin-mocha .search-result-link .search-filter{transition:all 300ms}html.theme--catppuccin-mocha .search-result-link:hover .property-search-result-badge,html.theme--catppuccin-mocha .search-result-link:hover .search-filter,html.theme--catppuccin-mocha .search-result-link:focus .property-search-result-badge,html.theme--catppuccin-mocha .search-result-link:focus .search-filter{color:#313244 !important;background-color:#b4befe !important}html.theme--catppuccin-mocha .search-result-title{color:#cdd6f4}html.theme--catppuccin-mocha .search-result-highlight{background-color:#f38ba8;color:#181825}html.theme--catppuccin-mocha .search-divider{border-bottom:1px solid #5e6d6f50}html.theme--catppuccin-mocha .w-100{width:100%}html.theme--catppuccin-mocha .gap-2{gap:0.5rem}html.theme--catppuccin-mocha .gap-4{gap:1rem} diff --git a/v0.5.0/assets/themes/documenter-dark.css b/v0.5.0/assets/themes/documenter-dark.css new file mode 100644 index 00000000..c41c82f2 --- /dev/null +++ b/v0.5.0/assets/themes/documenter-dark.css @@ -0,0 +1,7 @@ +html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-ellipsis,html.theme--documenter-dark .file-cta,html.theme--documenter-dark .file-name,html.theme--documenter-dark .select select,html.theme--documenter-dark .textarea,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark .button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:.4em;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.5em - 1px);padding-left:calc(0.75em - 1px);padding-right:calc(0.75em - 1px);padding-top:calc(0.5em - 1px);position:relative;vertical-align:top}html.theme--documenter-dark .pagination-previous:focus,html.theme--documenter-dark .pagination-next:focus,html.theme--documenter-dark .pagination-link:focus,html.theme--documenter-dark .pagination-ellipsis:focus,html.theme--documenter-dark .file-cta:focus,html.theme--documenter-dark .file-name:focus,html.theme--documenter-dark .select select:focus,html.theme--documenter-dark .textarea:focus,html.theme--documenter-dark .input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:focus,html.theme--documenter-dark .button:focus,html.theme--documenter-dark .is-focused.pagination-previous,html.theme--documenter-dark .is-focused.pagination-next,html.theme--documenter-dark .is-focused.pagination-link,html.theme--documenter-dark .is-focused.pagination-ellipsis,html.theme--documenter-dark .is-focused.file-cta,html.theme--documenter-dark .is-focused.file-name,html.theme--documenter-dark .select select.is-focused,html.theme--documenter-dark .is-focused.textarea,html.theme--documenter-dark .is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-focused.button,html.theme--documenter-dark .pagination-previous:active,html.theme--documenter-dark .pagination-next:active,html.theme--documenter-dark .pagination-link:active,html.theme--documenter-dark .pagination-ellipsis:active,html.theme--documenter-dark .file-cta:active,html.theme--documenter-dark .file-name:active,html.theme--documenter-dark .select select:active,html.theme--documenter-dark .textarea:active,html.theme--documenter-dark .input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:active,html.theme--documenter-dark .button:active,html.theme--documenter-dark .is-active.pagination-previous,html.theme--documenter-dark .is-active.pagination-next,html.theme--documenter-dark .is-active.pagination-link,html.theme--documenter-dark .is-active.pagination-ellipsis,html.theme--documenter-dark .is-active.file-cta,html.theme--documenter-dark .is-active.file-name,html.theme--documenter-dark .select select.is-active,html.theme--documenter-dark .is-active.textarea,html.theme--documenter-dark .is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--documenter-dark .is-active.button{outline:none}html.theme--documenter-dark .pagination-previous[disabled],html.theme--documenter-dark .pagination-next[disabled],html.theme--documenter-dark .pagination-link[disabled],html.theme--documenter-dark .pagination-ellipsis[disabled],html.theme--documenter-dark .file-cta[disabled],html.theme--documenter-dark .file-name[disabled],html.theme--documenter-dark .select select[disabled],html.theme--documenter-dark .textarea[disabled],html.theme--documenter-dark .input[disabled],html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled],html.theme--documenter-dark .button[disabled],fieldset[disabled] html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark fieldset[disabled] .pagination-previous,fieldset[disabled] html.theme--documenter-dark .pagination-next,html.theme--documenter-dark fieldset[disabled] .pagination-next,fieldset[disabled] html.theme--documenter-dark .pagination-link,html.theme--documenter-dark fieldset[disabled] .pagination-link,fieldset[disabled] html.theme--documenter-dark .pagination-ellipsis,html.theme--documenter-dark fieldset[disabled] .pagination-ellipsis,fieldset[disabled] html.theme--documenter-dark .file-cta,html.theme--documenter-dark fieldset[disabled] .file-cta,fieldset[disabled] html.theme--documenter-dark .file-name,html.theme--documenter-dark fieldset[disabled] .file-name,fieldset[disabled] html.theme--documenter-dark .select select,fieldset[disabled] html.theme--documenter-dark .textarea,fieldset[disabled] html.theme--documenter-dark .input,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark fieldset[disabled] .select select,html.theme--documenter-dark .select fieldset[disabled] select,html.theme--documenter-dark fieldset[disabled] .textarea,html.theme--documenter-dark fieldset[disabled] .input,html.theme--documenter-dark fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar fieldset[disabled] form.docs-search>input,fieldset[disabled] html.theme--documenter-dark .button,html.theme--documenter-dark fieldset[disabled] .button{cursor:not-allowed}html.theme--documenter-dark .tabs,html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-ellipsis,html.theme--documenter-dark .breadcrumb,html.theme--documenter-dark .file,html.theme--documenter-dark .button,.is-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.theme--documenter-dark .navbar-link:not(.is-arrowless)::after,html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading)::after{border:3px solid rgba(0,0,0,0);border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:0.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:0.625em}html.theme--documenter-dark .admonition:not(:last-child),html.theme--documenter-dark .tabs:not(:last-child),html.theme--documenter-dark .pagination:not(:last-child),html.theme--documenter-dark .message:not(:last-child),html.theme--documenter-dark .level:not(:last-child),html.theme--documenter-dark .breadcrumb:not(:last-child),html.theme--documenter-dark .block:not(:last-child),html.theme--documenter-dark .title:not(:last-child),html.theme--documenter-dark .subtitle:not(:last-child),html.theme--documenter-dark .table-container:not(:last-child),html.theme--documenter-dark .table:not(:last-child),html.theme--documenter-dark .progress:not(:last-child),html.theme--documenter-dark .notification:not(:last-child),html.theme--documenter-dark .content:not(:last-child),html.theme--documenter-dark .box:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .modal-close,html.theme--documenter-dark .delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,0.2);border:none;border-radius:9999px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}html.theme--documenter-dark .modal-close::before,html.theme--documenter-dark .delete::before,html.theme--documenter-dark .modal-close::after,html.theme--documenter-dark .delete::after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--documenter-dark .modal-close::before,html.theme--documenter-dark .delete::before{height:2px;width:50%}html.theme--documenter-dark .modal-close::after,html.theme--documenter-dark .delete::after{height:50%;width:2px}html.theme--documenter-dark .modal-close:hover,html.theme--documenter-dark .delete:hover,html.theme--documenter-dark .modal-close:focus,html.theme--documenter-dark .delete:focus{background-color:rgba(10,10,10,0.3)}html.theme--documenter-dark .modal-close:active,html.theme--documenter-dark .delete:active{background-color:rgba(10,10,10,0.4)}html.theme--documenter-dark .is-small.modal-close,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.modal-close,html.theme--documenter-dark .is-small.delete,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}html.theme--documenter-dark .is-medium.modal-close,html.theme--documenter-dark .is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}html.theme--documenter-dark .is-large.modal-close,html.theme--documenter-dark .is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}html.theme--documenter-dark .control.is-loading::after,html.theme--documenter-dark .select.is-loading::after,html.theme--documenter-dark .loader,html.theme--documenter-dark .button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #dbdee0;border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}html.theme--documenter-dark .hero-video,html.theme--documenter-dark .modal-background,html.theme--documenter-dark .modal,html.theme--documenter-dark .image.is-square img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--documenter-dark .image.is-square .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--documenter-dark .image.is-1by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--documenter-dark .image.is-1by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--documenter-dark .image.is-5by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--documenter-dark .image.is-5by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--documenter-dark .image.is-4by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--documenter-dark .image.is-4by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--documenter-dark .image.is-3by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--documenter-dark .image.is-3by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--documenter-dark .image.is-5by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--documenter-dark .image.is-5by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--documenter-dark .image.is-16by9 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--documenter-dark .image.is-16by9 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--documenter-dark .image.is-2by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--documenter-dark .image.is-2by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--documenter-dark .image.is-3by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--documenter-dark .image.is-3by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--documenter-dark .image.is-4by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--documenter-dark .image.is-4by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--documenter-dark .image.is-3by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--documenter-dark .image.is-3by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--documenter-dark .image.is-2by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--documenter-dark .image.is-2by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--documenter-dark .image.is-3by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--documenter-dark .image.is-3by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--documenter-dark .image.is-9by16 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--documenter-dark .image.is-9by16 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--documenter-dark .image.is-1by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--documenter-dark .image.is-1by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--documenter-dark .image.is-1by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--documenter-dark .image.is-1by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio,.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}html.theme--documenter-dark .navbar-burger{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#ecf0f1 !important}a.has-text-light:hover,a.has-text-light:focus{color:#cfd9db !important}.has-background-light{background-color:#ecf0f1 !important}.has-text-dark{color:#282f2f !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#111414 !important}.has-background-dark{background-color:#282f2f !important}.has-text-primary{color:#375a7f !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#28415b !important}.has-background-primary{background-color:#375a7f !important}.has-text-primary-light{color:#f1f5f9 !important}a.has-text-primary-light:hover,a.has-text-primary-light:focus{color:#cddbe9 !important}.has-background-primary-light{background-color:#f1f5f9 !important}.has-text-primary-dark{color:#4d7eb2 !important}a.has-text-primary-dark:hover,a.has-text-primary-dark:focus{color:#7198c1 !important}.has-background-primary-dark{background-color:#4d7eb2 !important}.has-text-link{color:#1abc9c !important}a.has-text-link:hover,a.has-text-link:focus{color:#148f77 !important}.has-background-link{background-color:#1abc9c !important}.has-text-link-light{color:#edfdf9 !important}a.has-text-link-light:hover,a.has-text-link-light:focus{color:#c0f6ec !important}.has-background-link-light{background-color:#edfdf9 !important}.has-text-link-dark{color:#15987e !important}a.has-text-link-dark:hover,a.has-text-link-dark:focus{color:#1bc5a4 !important}.has-background-link-dark{background-color:#15987e !important}.has-text-info{color:#3c5dcd !important}a.has-text-info:hover,a.has-text-info:focus{color:#2c48aa !important}.has-background-info{background-color:#3c5dcd !important}.has-text-info-light{color:#eff2fb !important}a.has-text-info-light:hover,a.has-text-info-light:focus{color:#c6d0f0 !important}.has-background-info-light{background-color:#eff2fb !important}.has-text-info-dark{color:#3253c3 !important}a.has-text-info-dark:hover,a.has-text-info-dark:focus{color:#5571d3 !important}.has-background-info-dark{background-color:#3253c3 !important}.has-text-success{color:#259a12 !important}a.has-text-success:hover,a.has-text-success:focus{color:#1a6c0d !important}.has-background-success{background-color:#259a12 !important}.has-text-success-light{color:#effded !important}a.has-text-success-light:hover,a.has-text-success-light:focus{color:#c7f8bf !important}.has-background-success-light{background-color:#effded !important}.has-text-success-dark{color:#2ec016 !important}a.has-text-success-dark:hover,a.has-text-success-dark:focus{color:#3fe524 !important}.has-background-success-dark{background-color:#2ec016 !important}.has-text-warning{color:#f4c72f !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#e4b30c !important}.has-background-warning{background-color:#f4c72f !important}.has-text-warning-light{color:#fefaec !important}a.has-text-warning-light:hover,a.has-text-warning-light:focus{color:#fbedbb !important}.has-background-warning-light{background-color:#fefaec !important}.has-text-warning-dark{color:#8c6e07 !important}a.has-text-warning-dark:hover,a.has-text-warning-dark:focus{color:#bd940a !important}.has-background-warning-dark{background-color:#8c6e07 !important}.has-text-danger{color:#cb3c33 !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#a23029 !important}.has-background-danger{background-color:#cb3c33 !important}.has-text-danger-light{color:#fbefef !important}a.has-text-danger-light:hover,a.has-text-danger-light:focus{color:#f1c8c6 !important}.has-background-danger-light{background-color:#fbefef !important}.has-text-danger-dark{color:#c03930 !important}a.has-text-danger-dark:hover,a.has-text-danger-dark:focus{color:#d35850 !important}.has-background-danger-dark{background-color:#c03930 !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#282f2f !important}.has-background-grey-darker{background-color:#282f2f !important}.has-text-grey-dark{color:#343c3d !important}.has-background-grey-dark{background-color:#343c3d !important}.has-text-grey{color:#5e6d6f !important}.has-background-grey{background-color:#5e6d6f !important}.has-text-grey-light{color:#8c9b9d !important}.has-background-grey-light{background-color:#8c9b9d !important}.has-text-grey-lighter{color:#dbdee0 !important}.has-background-grey-lighter{background-color:#dbdee0 !important}.has-text-white-ter{color:#ecf0f1 !important}.has-background-white-ter{background-color:#ecf0f1 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.is-flex-direction-row{flex-direction:row !important}.is-flex-direction-row-reverse{flex-direction:row-reverse !important}.is-flex-direction-column{flex-direction:column !important}.is-flex-direction-column-reverse{flex-direction:column-reverse !important}.is-flex-wrap-nowrap{flex-wrap:nowrap !important}.is-flex-wrap-wrap{flex-wrap:wrap !important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse !important}.is-justify-content-flex-start{justify-content:flex-start !important}.is-justify-content-flex-end{justify-content:flex-end !important}.is-justify-content-center{justify-content:center !important}.is-justify-content-space-between{justify-content:space-between !important}.is-justify-content-space-around{justify-content:space-around !important}.is-justify-content-space-evenly{justify-content:space-evenly !important}.is-justify-content-start{justify-content:start !important}.is-justify-content-end{justify-content:end !important}.is-justify-content-left{justify-content:left !important}.is-justify-content-right{justify-content:right !important}.is-align-content-flex-start{align-content:flex-start !important}.is-align-content-flex-end{align-content:flex-end !important}.is-align-content-center{align-content:center !important}.is-align-content-space-between{align-content:space-between !important}.is-align-content-space-around{align-content:space-around !important}.is-align-content-space-evenly{align-content:space-evenly !important}.is-align-content-stretch{align-content:stretch !important}.is-align-content-start{align-content:start !important}.is-align-content-end{align-content:end !important}.is-align-content-baseline{align-content:baseline !important}.is-align-items-stretch{align-items:stretch !important}.is-align-items-flex-start{align-items:flex-start !important}.is-align-items-flex-end{align-items:flex-end !important}.is-align-items-center{align-items:center !important}.is-align-items-baseline{align-items:baseline !important}.is-align-items-start{align-items:start !important}.is-align-items-end{align-items:end !important}.is-align-items-self-start{align-items:self-start !important}.is-align-items-self-end{align-items:self-end !important}.is-align-self-auto{align-self:auto !important}.is-align-self-flex-start{align-self:flex-start !important}.is-align-self-flex-end{align-self:flex-end !important}.is-align-self-center{align-self:center !important}.is-align-self-baseline{align-self:baseline !important}.is-align-self-stretch{align-self:stretch !important}.is-flex-grow-0{flex-grow:0 !important}.is-flex-grow-1{flex-grow:1 !important}.is-flex-grow-2{flex-grow:2 !important}.is-flex-grow-3{flex-grow:3 !important}.is-flex-grow-4{flex-grow:4 !important}.is-flex-grow-5{flex-grow:5 !important}.is-flex-shrink-0{flex-shrink:0 !important}.is-flex-shrink-1{flex-shrink:1 !important}.is-flex-shrink-2{flex-shrink:2 !important}.is-flex-shrink-3{flex-shrink:3 !important}.is-flex-shrink-4{flex-shrink:4 !important}.is-flex-shrink-5{flex-shrink:5 !important}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-clickable{cursor:pointer !important;pointer-events:all !important}.is-clipped{overflow:hidden !important}.is-relative{position:relative !important}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.m-0{margin:0 !important}.mt-0{margin-top:0 !important}.mr-0{margin-right:0 !important}.mb-0{margin-bottom:0 !important}.ml-0{margin-left:0 !important}.mx-0{margin-left:0 !important;margin-right:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:.25rem !important}.mt-1{margin-top:.25rem !important}.mr-1{margin-right:.25rem !important}.mb-1{margin-bottom:.25rem !important}.ml-1{margin-left:.25rem !important}.mx-1{margin-left:.25rem !important;margin-right:.25rem !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.m-2{margin:.5rem !important}.mt-2{margin-top:.5rem !important}.mr-2{margin-right:.5rem !important}.mb-2{margin-bottom:.5rem !important}.ml-2{margin-left:.5rem !important}.mx-2{margin-left:.5rem !important;margin-right:.5rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.m-3{margin:.75rem !important}.mt-3{margin-top:.75rem !important}.mr-3{margin-right:.75rem !important}.mb-3{margin-bottom:.75rem !important}.ml-3{margin-left:.75rem !important}.mx-3{margin-left:.75rem !important;margin-right:.75rem !important}.my-3{margin-top:.75rem !important;margin-bottom:.75rem !important}.m-4{margin:1rem !important}.mt-4{margin-top:1rem !important}.mr-4{margin-right:1rem !important}.mb-4{margin-bottom:1rem !important}.ml-4{margin-left:1rem !important}.mx-4{margin-left:1rem !important;margin-right:1rem !important}.my-4{margin-top:1rem !important;margin-bottom:1rem !important}.m-5{margin:1.5rem !important}.mt-5{margin-top:1.5rem !important}.mr-5{margin-right:1.5rem !important}.mb-5{margin-bottom:1.5rem !important}.ml-5{margin-left:1.5rem !important}.mx-5{margin-left:1.5rem !important;margin-right:1.5rem !important}.my-5{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-6{margin:3rem !important}.mt-6{margin-top:3rem !important}.mr-6{margin-right:3rem !important}.mb-6{margin-bottom:3rem !important}.ml-6{margin-left:3rem !important}.mx-6{margin-left:3rem !important;margin-right:3rem !important}.my-6{margin-top:3rem !important;margin-bottom:3rem !important}.m-auto{margin:auto !important}.mt-auto{margin-top:auto !important}.mr-auto{margin-right:auto !important}.mb-auto{margin-bottom:auto !important}.ml-auto{margin-left:auto !important}.mx-auto{margin-left:auto !important;margin-right:auto !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.p-0{padding:0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-left:0 !important;padding-right:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:.25rem !important}.pt-1{padding-top:.25rem !important}.pr-1{padding-right:.25rem !important}.pb-1{padding-bottom:.25rem !important}.pl-1{padding-left:.25rem !important}.px-1{padding-left:.25rem !important;padding-right:.25rem !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.p-2{padding:.5rem !important}.pt-2{padding-top:.5rem !important}.pr-2{padding-right:.5rem !important}.pb-2{padding-bottom:.5rem !important}.pl-2{padding-left:.5rem !important}.px-2{padding-left:.5rem !important;padding-right:.5rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.p-3{padding:.75rem !important}.pt-3{padding-top:.75rem !important}.pr-3{padding-right:.75rem !important}.pb-3{padding-bottom:.75rem !important}.pl-3{padding-left:.75rem !important}.px-3{padding-left:.75rem !important;padding-right:.75rem !important}.py-3{padding-top:.75rem !important;padding-bottom:.75rem !important}.p-4{padding:1rem !important}.pt-4{padding-top:1rem !important}.pr-4{padding-right:1rem !important}.pb-4{padding-bottom:1rem !important}.pl-4{padding-left:1rem !important}.px-4{padding-left:1rem !important;padding-right:1rem !important}.py-4{padding-top:1rem !important;padding-bottom:1rem !important}.p-5{padding:1.5rem !important}.pt-5{padding-top:1.5rem !important}.pr-5{padding-right:1.5rem !important}.pb-5{padding-bottom:1.5rem !important}.pl-5{padding-left:1.5rem !important}.px-5{padding-left:1.5rem !important;padding-right:1.5rem !important}.py-5{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-6{padding:3rem !important}.pt-6{padding-top:3rem !important}.pr-6{padding-right:3rem !important}.pb-6{padding-bottom:3rem !important}.pl-6{padding-left:3rem !important}.px-6{padding-left:3rem !important;padding-right:3rem !important}.py-6{padding-top:3rem !important;padding-bottom:3rem !important}.p-auto{padding:auto !important}.pt-auto{padding-top:auto !important}.pr-auto{padding-right:auto !important}.pb-auto{padding-bottom:auto !important}.pl-auto{padding-left:auto !important}.px-auto{padding-left:auto !important;padding-right:auto !important}.py-auto{padding-top:auto !important;padding-bottom:auto !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:1rem !important}.is-size-7,html.theme--documenter-dark .docstring>section>a.docs-sourcelink{font-size:.75rem !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:1rem !important}.is-size-7-mobile{font-size:.75rem !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:1rem !important}.is-size-7-tablet{font-size:.75rem !important}}@media screen and (max-width: 1055px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:1rem !important}.is-size-7-touch{font-size:.75rem !important}}@media screen and (min-width: 1056px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:1rem !important}.is-size-7-desktop{font-size:.75rem !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:1rem !important}.is-size-7-widescreen{font-size:.75rem !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:1rem !important}.is-size-7-fullhd{font-size:.75rem !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1055px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1056px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1055px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1056px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1055px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1056px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1055px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1056px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.is-underlined{text-decoration:underline !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-secondary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-sans-serif{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-monospace{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-family-code{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1055px){.is-block-touch{display:block !important}}@media screen and (min-width: 1056px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1055px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1056px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1055px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1056px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1055px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1056px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1055px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1056px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:0.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:0.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1055px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1056px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1055px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1056px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}html.theme--documenter-dark{/*! + Theme: a11y-dark + Author: @ericwbailey + Maintainer: @ericwbailey + + Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css +*/}html.theme--documenter-dark html{background-color:#1f2424;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--documenter-dark article,html.theme--documenter-dark aside,html.theme--documenter-dark figure,html.theme--documenter-dark footer,html.theme--documenter-dark header,html.theme--documenter-dark hgroup,html.theme--documenter-dark section{display:block}html.theme--documenter-dark body,html.theme--documenter-dark button,html.theme--documenter-dark input,html.theme--documenter-dark optgroup,html.theme--documenter-dark select,html.theme--documenter-dark textarea{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif}html.theme--documenter-dark code,html.theme--documenter-dark pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--documenter-dark body{color:#fff;font-size:1em;font-weight:400;line-height:1.5}html.theme--documenter-dark a{color:#1abc9c;cursor:pointer;text-decoration:none}html.theme--documenter-dark a strong{color:currentColor}html.theme--documenter-dark a:hover{color:#1dd2af}html.theme--documenter-dark code{background-color:rgba(255,255,255,0.05);color:#ececec;font-size:.875em;font-weight:normal;padding:.1em}html.theme--documenter-dark hr{background-color:#282f2f;border:none;display:block;height:2px;margin:1.5rem 0}html.theme--documenter-dark img{height:auto;max-width:100%}html.theme--documenter-dark input[type="checkbox"],html.theme--documenter-dark input[type="radio"]{vertical-align:baseline}html.theme--documenter-dark small{font-size:.875em}html.theme--documenter-dark span{font-style:inherit;font-weight:inherit}html.theme--documenter-dark strong{color:#f2f2f2;font-weight:700}html.theme--documenter-dark fieldset{border:none}html.theme--documenter-dark pre{-webkit-overflow-scrolling:touch;background-color:#282f2f;color:#fff;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}html.theme--documenter-dark pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}html.theme--documenter-dark table td,html.theme--documenter-dark table th{vertical-align:top}html.theme--documenter-dark table td:not([align]),html.theme--documenter-dark table th:not([align]){text-align:inherit}html.theme--documenter-dark table th{color:#f2f2f2}html.theme--documenter-dark .box{background-color:#343c3d;border-radius:8px;box-shadow:none;color:#fff;display:block;padding:1.25rem}html.theme--documenter-dark a.box:hover,html.theme--documenter-dark a.box:focus{box-shadow:0 0.5em 1em -0.125em rgba(10,10,10,0.1),0 0 0 1px #1abc9c}html.theme--documenter-dark a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2),0 0 0 1px #1abc9c}html.theme--documenter-dark .button{background-color:#282f2f;border-color:#4c5759;border-width:1px;color:#375a7f;cursor:pointer;justify-content:center;padding-bottom:calc(0.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(0.5em - 1px);text-align:center;white-space:nowrap}html.theme--documenter-dark .button strong{color:inherit}html.theme--documenter-dark .button .icon,html.theme--documenter-dark .button .icon.is-small,html.theme--documenter-dark .button #documenter .docs-sidebar form.docs-search>input.icon,html.theme--documenter-dark #documenter .docs-sidebar .button form.docs-search>input.icon,html.theme--documenter-dark .button .icon.is-medium,html.theme--documenter-dark .button .icon.is-large{height:1.5em;width:1.5em}html.theme--documenter-dark .button .icon:first-child:not(:last-child){margin-left:calc(-0.5em - 1px);margin-right:.25em}html.theme--documenter-dark .button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-0.5em - 1px)}html.theme--documenter-dark .button .icon:first-child:last-child{margin-left:calc(-0.5em - 1px);margin-right:calc(-0.5em - 1px)}html.theme--documenter-dark .button:hover,html.theme--documenter-dark .button.is-hovered{border-color:#8c9b9d;color:#f2f2f2}html.theme--documenter-dark .button:focus,html.theme--documenter-dark .button.is-focused{border-color:#8c9b9d;color:#17a689}html.theme--documenter-dark .button:focus:not(:active),html.theme--documenter-dark .button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .button:active,html.theme--documenter-dark .button.is-active{border-color:#343c3d;color:#f2f2f2}html.theme--documenter-dark .button.is-text{background-color:transparent;border-color:transparent;color:#fff;text-decoration:underline}html.theme--documenter-dark .button.is-text:hover,html.theme--documenter-dark .button.is-text.is-hovered,html.theme--documenter-dark .button.is-text:focus,html.theme--documenter-dark .button.is-text.is-focused{background-color:#282f2f;color:#f2f2f2}html.theme--documenter-dark .button.is-text:active,html.theme--documenter-dark .button.is-text.is-active{background-color:#1d2122;color:#f2f2f2}html.theme--documenter-dark .button.is-text[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-ghost{background:none;border-color:rgba(0,0,0,0);color:#1abc9c;text-decoration:none}html.theme--documenter-dark .button.is-ghost:hover,html.theme--documenter-dark .button.is-ghost.is-hovered{color:#1abc9c;text-decoration:underline}html.theme--documenter-dark .button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white:hover,html.theme--documenter-dark .button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white:focus,html.theme--documenter-dark .button.is-white.is-focused{border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white:focus:not(:active),html.theme--documenter-dark .button.is-white.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--documenter-dark .button.is-white:active,html.theme--documenter-dark .button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white{background-color:#fff;border-color:#fff;box-shadow:none}html.theme--documenter-dark .button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .button.is-white.is-inverted:hover,html.theme--documenter-dark .button.is-white.is-inverted.is-hovered{background-color:#000}html.theme--documenter-dark .button.is-white.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-white.is-outlined:hover,html.theme--documenter-dark .button.is-white.is-outlined.is-hovered,html.theme--documenter-dark .button.is-white.is-outlined:focus,html.theme--documenter-dark .button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--documenter-dark .button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-white.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-white.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-white.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-white.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--documenter-dark .button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black:hover,html.theme--documenter-dark .button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black:focus,html.theme--documenter-dark .button.is-black.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black:focus:not(:active),html.theme--documenter-dark .button.is-black.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--documenter-dark .button.is-black:active,html.theme--documenter-dark .button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black{background-color:#0a0a0a;border-color:#0a0a0a;box-shadow:none}html.theme--documenter-dark .button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-inverted:hover,html.theme--documenter-dark .button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-black.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-outlined:hover,html.theme--documenter-dark .button.is-black.is-outlined.is-hovered,html.theme--documenter-dark .button.is-black.is-outlined:focus,html.theme--documenter-dark .button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--documenter-dark .button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-black.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-black.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-black.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-black.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-light{background-color:#ecf0f1;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light:hover,html.theme--documenter-dark .button.is-light.is-hovered{background-color:#e5eaec;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light:focus,html.theme--documenter-dark .button.is-light.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light:focus:not(:active),html.theme--documenter-dark .button.is-light.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(236,240,241,0.25)}html.theme--documenter-dark .button.is-light:active,html.theme--documenter-dark .button.is-light.is-active{background-color:#dde4e6;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light{background-color:#ecf0f1;border-color:#ecf0f1;box-shadow:none}html.theme--documenter-dark .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-inverted:hover,html.theme--documenter-dark .button.is-light.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--documenter-dark .button.is-light.is-outlined{background-color:transparent;border-color:#ecf0f1;color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-outlined:hover,html.theme--documenter-dark .button.is-light.is-outlined.is-hovered,html.theme--documenter-dark .button.is-light.is-outlined:focus,html.theme--documenter-dark .button.is-light.is-outlined.is-focused{background-color:#ecf0f1;border-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #ecf0f1 #ecf0f1 !important}html.theme--documenter-dark .button.is-light.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-light.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-light.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--documenter-dark .button.is-light.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light.is-outlined{background-color:transparent;border-color:#ecf0f1;box-shadow:none;color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ecf0f1 #ecf0f1 !important}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-dark,html.theme--documenter-dark .content kbd.button{background-color:#282f2f;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-dark:hover,html.theme--documenter-dark .content kbd.button:hover,html.theme--documenter-dark .button.is-dark.is-hovered,html.theme--documenter-dark .content kbd.button.is-hovered{background-color:#232829;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-dark:focus,html.theme--documenter-dark .content kbd.button:focus,html.theme--documenter-dark .button.is-dark.is-focused,html.theme--documenter-dark .content kbd.button.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-dark:focus:not(:active),html.theme--documenter-dark .content kbd.button:focus:not(:active),html.theme--documenter-dark .button.is-dark.is-focused:not(:active),html.theme--documenter-dark .content kbd.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(40,47,47,0.25)}html.theme--documenter-dark .button.is-dark:active,html.theme--documenter-dark .content kbd.button:active,html.theme--documenter-dark .button.is-dark.is-active,html.theme--documenter-dark .content kbd.button.is-active{background-color:#1d2122;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-dark[disabled],html.theme--documenter-dark .content kbd.button[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark,fieldset[disabled] html.theme--documenter-dark .content kbd.button{background-color:#282f2f;border-color:#282f2f;box-shadow:none}html.theme--documenter-dark .button.is-dark.is-inverted,html.theme--documenter-dark .content kbd.button.is-inverted{background-color:#fff;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-inverted:hover,html.theme--documenter-dark .content kbd.button.is-inverted:hover,html.theme--documenter-dark .button.is-dark.is-inverted.is-hovered,html.theme--documenter-dark .content kbd.button.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-dark.is-inverted[disabled],html.theme--documenter-dark .content kbd.button.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-inverted,fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-loading::after,html.theme--documenter-dark .content kbd.button.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-dark.is-outlined,html.theme--documenter-dark .content kbd.button.is-outlined{background-color:transparent;border-color:#282f2f;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-outlined:hover,html.theme--documenter-dark .content kbd.button.is-outlined:hover,html.theme--documenter-dark .button.is-dark.is-outlined.is-hovered,html.theme--documenter-dark .content kbd.button.is-outlined.is-hovered,html.theme--documenter-dark .button.is-dark.is-outlined:focus,html.theme--documenter-dark .content kbd.button.is-outlined:focus,html.theme--documenter-dark .button.is-dark.is-outlined.is-focused,html.theme--documenter-dark .content kbd.button.is-outlined.is-focused{background-color:#282f2f;border-color:#282f2f;color:#fff}html.theme--documenter-dark .button.is-dark.is-outlined.is-loading::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading::after{border-color:transparent transparent #282f2f #282f2f !important}html.theme--documenter-dark .button.is-dark.is-outlined.is-loading:hover::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-dark.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-dark.is-outlined.is-loading:focus::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-dark.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-dark.is-outlined[disabled],html.theme--documenter-dark .content kbd.button.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-outlined,fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-outlined{background-color:transparent;border-color:#282f2f;box-shadow:none;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined:hover,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined:focus,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-focused,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-focused{background-color:#fff;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #282f2f #282f2f !important}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined[disabled],html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined,fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-primary,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink{background-color:#375a7f;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary:hover,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-hovered.docs-sourcelink{background-color:#335476;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary:focus,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:focus,html.theme--documenter-dark .button.is-primary.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-focused.docs-sourcelink{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary:focus:not(:active),html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:focus:not(:active),html.theme--documenter-dark .button.is-primary.is-focused:not(:active),html.theme--documenter-dark .docstring>section>a.button.is-focused.docs-sourcelink:not(:active){box-shadow:0 0 0 0.125em rgba(55,90,127,0.25)}html.theme--documenter-dark .button.is-primary:active,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:active,html.theme--documenter-dark .button.is-primary.is-active,html.theme--documenter-dark .docstring>section>a.button.is-active.docs-sourcelink{background-color:#2f4d6d;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary[disabled],html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink{background-color:#375a7f;border-color:#375a7f;box-shadow:none}html.theme--documenter-dark .button.is-primary.is-inverted,html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-inverted:hover,html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-inverted.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-hovered.docs-sourcelink{background-color:#f2f2f2}html.theme--documenter-dark .button.is-primary.is-inverted[disabled],html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-inverted,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;border-color:transparent;box-shadow:none;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-loading::after,html.theme--documenter-dark .docstring>section>a.button.is-loading.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-primary.is-outlined,html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#375a7f;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-outlined:hover,html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-outlined.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-hovered.docs-sourcelink,html.theme--documenter-dark .button.is-primary.is-outlined:focus,html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink:focus,html.theme--documenter-dark .button.is-primary.is-outlined.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-focused.docs-sourcelink{background-color:#375a7f;border-color:#375a7f;color:#fff}html.theme--documenter-dark .button.is-primary.is-outlined.is-loading::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink::after{border-color:transparent transparent #375a7f #375a7f !important}html.theme--documenter-dark .button.is-primary.is-outlined.is-loading:hover::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--documenter-dark .button.is-primary.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--documenter-dark .button.is-primary.is-outlined.is-loading:focus::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--documenter-dark .button.is-primary.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-primary.is-outlined[disabled],html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-outlined,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#375a7f;box-shadow:none;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined:hover,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined:focus,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:focus,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-focused.docs-sourcelink{background-color:#fff;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #375a7f #375a7f !important}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined[disabled],html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-primary.is-light,html.theme--documenter-dark .docstring>section>a.button.is-light.docs-sourcelink{background-color:#f1f5f9;color:#4d7eb2}html.theme--documenter-dark .button.is-primary.is-light:hover,html.theme--documenter-dark .docstring>section>a.button.is-light.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-light.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-light.is-hovered.docs-sourcelink{background-color:#e8eef5;border-color:transparent;color:#4d7eb2}html.theme--documenter-dark .button.is-primary.is-light:active,html.theme--documenter-dark .docstring>section>a.button.is-light.docs-sourcelink:active,html.theme--documenter-dark .button.is-primary.is-light.is-active,html.theme--documenter-dark .docstring>section>a.button.is-light.is-active.docs-sourcelink{background-color:#dfe8f1;border-color:transparent;color:#4d7eb2}html.theme--documenter-dark .button.is-link{background-color:#1abc9c;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link:hover,html.theme--documenter-dark .button.is-link.is-hovered{background-color:#18b193;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link:focus,html.theme--documenter-dark .button.is-link.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link:focus:not(:active),html.theme--documenter-dark .button.is-link.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .button.is-link:active,html.theme--documenter-dark .button.is-link.is-active{background-color:#17a689;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link{background-color:#1abc9c;border-color:#1abc9c;box-shadow:none}html.theme--documenter-dark .button.is-link.is-inverted{background-color:#fff;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-inverted:hover,html.theme--documenter-dark .button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-link.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-link.is-outlined{background-color:transparent;border-color:#1abc9c;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-outlined:hover,html.theme--documenter-dark .button.is-link.is-outlined.is-hovered,html.theme--documenter-dark .button.is-link.is-outlined:focus,html.theme--documenter-dark .button.is-link.is-outlined.is-focused{background-color:#1abc9c;border-color:#1abc9c;color:#fff}html.theme--documenter-dark .button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #1abc9c #1abc9c !important}html.theme--documenter-dark .button.is-link.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-link.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-link.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-link.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link.is-outlined{background-color:transparent;border-color:#1abc9c;box-shadow:none;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #1abc9c #1abc9c !important}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-link.is-light{background-color:#edfdf9;color:#15987e}html.theme--documenter-dark .button.is-link.is-light:hover,html.theme--documenter-dark .button.is-link.is-light.is-hovered{background-color:#e2fbf6;border-color:transparent;color:#15987e}html.theme--documenter-dark .button.is-link.is-light:active,html.theme--documenter-dark .button.is-link.is-light.is-active{background-color:#d7f9f3;border-color:transparent;color:#15987e}html.theme--documenter-dark .button.is-info{background-color:#3c5dcd;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info:hover,html.theme--documenter-dark .button.is-info.is-hovered{background-color:#3355c9;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info:focus,html.theme--documenter-dark .button.is-info.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info:focus:not(:active),html.theme--documenter-dark .button.is-info.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(60,93,205,0.25)}html.theme--documenter-dark .button.is-info:active,html.theme--documenter-dark .button.is-info.is-active{background-color:#3151bf;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info{background-color:#3c5dcd;border-color:#3c5dcd;box-shadow:none}html.theme--documenter-dark .button.is-info.is-inverted{background-color:#fff;color:#3c5dcd}html.theme--documenter-dark .button.is-info.is-inverted:hover,html.theme--documenter-dark .button.is-info.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-info.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#3c5dcd}html.theme--documenter-dark .button.is-info.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-info.is-outlined{background-color:transparent;border-color:#3c5dcd;color:#3c5dcd}html.theme--documenter-dark .button.is-info.is-outlined:hover,html.theme--documenter-dark .button.is-info.is-outlined.is-hovered,html.theme--documenter-dark .button.is-info.is-outlined:focus,html.theme--documenter-dark .button.is-info.is-outlined.is-focused{background-color:#3c5dcd;border-color:#3c5dcd;color:#fff}html.theme--documenter-dark .button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #3c5dcd #3c5dcd !important}html.theme--documenter-dark .button.is-info.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-info.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-info.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-info.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info.is-outlined{background-color:transparent;border-color:#3c5dcd;box-shadow:none;color:#3c5dcd}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-focused{background-color:#fff;color:#3c5dcd}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #3c5dcd #3c5dcd !important}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-info.is-light{background-color:#eff2fb;color:#3253c3}html.theme--documenter-dark .button.is-info.is-light:hover,html.theme--documenter-dark .button.is-info.is-light.is-hovered{background-color:#e5e9f8;border-color:transparent;color:#3253c3}html.theme--documenter-dark .button.is-info.is-light:active,html.theme--documenter-dark .button.is-info.is-light.is-active{background-color:#dae1f6;border-color:transparent;color:#3253c3}html.theme--documenter-dark .button.is-success{background-color:#259a12;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success:hover,html.theme--documenter-dark .button.is-success.is-hovered{background-color:#228f11;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success:focus,html.theme--documenter-dark .button.is-success.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success:focus:not(:active),html.theme--documenter-dark .button.is-success.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(37,154,18,0.25)}html.theme--documenter-dark .button.is-success:active,html.theme--documenter-dark .button.is-success.is-active{background-color:#20830f;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success{background-color:#259a12;border-color:#259a12;box-shadow:none}html.theme--documenter-dark .button.is-success.is-inverted{background-color:#fff;color:#259a12}html.theme--documenter-dark .button.is-success.is-inverted:hover,html.theme--documenter-dark .button.is-success.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-success.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#259a12}html.theme--documenter-dark .button.is-success.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-success.is-outlined{background-color:transparent;border-color:#259a12;color:#259a12}html.theme--documenter-dark .button.is-success.is-outlined:hover,html.theme--documenter-dark .button.is-success.is-outlined.is-hovered,html.theme--documenter-dark .button.is-success.is-outlined:focus,html.theme--documenter-dark .button.is-success.is-outlined.is-focused{background-color:#259a12;border-color:#259a12;color:#fff}html.theme--documenter-dark .button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #259a12 #259a12 !important}html.theme--documenter-dark .button.is-success.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-success.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-success.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-success.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success.is-outlined{background-color:transparent;border-color:#259a12;box-shadow:none;color:#259a12}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-focused{background-color:#fff;color:#259a12}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #259a12 #259a12 !important}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-success.is-light{background-color:#effded;color:#2ec016}html.theme--documenter-dark .button.is-success.is-light:hover,html.theme--documenter-dark .button.is-success.is-light.is-hovered{background-color:#e5fce1;border-color:transparent;color:#2ec016}html.theme--documenter-dark .button.is-success.is-light:active,html.theme--documenter-dark .button.is-success.is-light.is-active{background-color:#dbfad6;border-color:transparent;color:#2ec016}html.theme--documenter-dark .button.is-warning{background-color:#f4c72f;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-warning:hover,html.theme--documenter-dark .button.is-warning.is-hovered{background-color:#f3c423;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-warning:focus,html.theme--documenter-dark .button.is-warning.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-warning:focus:not(:active),html.theme--documenter-dark .button.is-warning.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(244,199,47,0.25)}html.theme--documenter-dark .button.is-warning:active,html.theme--documenter-dark .button.is-warning.is-active{background-color:#f3c017;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-warning[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning{background-color:#f4c72f;border-color:#f4c72f;box-shadow:none}html.theme--documenter-dark .button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);color:#f4c72f}html.theme--documenter-dark .button.is-warning.is-inverted:hover,html.theme--documenter-dark .button.is-warning.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-warning.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#f4c72f}html.theme--documenter-dark .button.is-warning.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--documenter-dark .button.is-warning.is-outlined{background-color:transparent;border-color:#f4c72f;color:#f4c72f}html.theme--documenter-dark .button.is-warning.is-outlined:hover,html.theme--documenter-dark .button.is-warning.is-outlined.is-hovered,html.theme--documenter-dark .button.is-warning.is-outlined:focus,html.theme--documenter-dark .button.is-warning.is-outlined.is-focused{background-color:#f4c72f;border-color:#f4c72f;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #f4c72f #f4c72f !important}html.theme--documenter-dark .button.is-warning.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-warning.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-warning.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--documenter-dark .button.is-warning.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-outlined{background-color:transparent;border-color:#f4c72f;box-shadow:none;color:#f4c72f}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#f4c72f}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f4c72f #f4c72f !important}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-warning.is-light{background-color:#fefaec;color:#8c6e07}html.theme--documenter-dark .button.is-warning.is-light:hover,html.theme--documenter-dark .button.is-warning.is-light.is-hovered{background-color:#fdf7e0;border-color:transparent;color:#8c6e07}html.theme--documenter-dark .button.is-warning.is-light:active,html.theme--documenter-dark .button.is-warning.is-light.is-active{background-color:#fdf3d3;border-color:transparent;color:#8c6e07}html.theme--documenter-dark .button.is-danger{background-color:#cb3c33;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger:hover,html.theme--documenter-dark .button.is-danger.is-hovered{background-color:#c13930;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger:focus,html.theme--documenter-dark .button.is-danger.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger:focus:not(:active),html.theme--documenter-dark .button.is-danger.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(203,60,51,0.25)}html.theme--documenter-dark .button.is-danger:active,html.theme--documenter-dark .button.is-danger.is-active{background-color:#b7362e;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger{background-color:#cb3c33;border-color:#cb3c33;box-shadow:none}html.theme--documenter-dark .button.is-danger.is-inverted{background-color:#fff;color:#cb3c33}html.theme--documenter-dark .button.is-danger.is-inverted:hover,html.theme--documenter-dark .button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-danger.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#cb3c33}html.theme--documenter-dark .button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-danger.is-outlined{background-color:transparent;border-color:#cb3c33;color:#cb3c33}html.theme--documenter-dark .button.is-danger.is-outlined:hover,html.theme--documenter-dark .button.is-danger.is-outlined.is-hovered,html.theme--documenter-dark .button.is-danger.is-outlined:focus,html.theme--documenter-dark .button.is-danger.is-outlined.is-focused{background-color:#cb3c33;border-color:#cb3c33;color:#fff}html.theme--documenter-dark .button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #cb3c33 #cb3c33 !important}html.theme--documenter-dark .button.is-danger.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-danger.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-danger.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-danger.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-outlined{background-color:transparent;border-color:#cb3c33;box-shadow:none;color:#cb3c33}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#cb3c33}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #cb3c33 #cb3c33 !important}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-danger.is-light{background-color:#fbefef;color:#c03930}html.theme--documenter-dark .button.is-danger.is-light:hover,html.theme--documenter-dark .button.is-danger.is-light.is-hovered{background-color:#f8e6e5;border-color:transparent;color:#c03930}html.theme--documenter-dark .button.is-danger.is-light:active,html.theme--documenter-dark .button.is-danger.is-light.is-active{background-color:#f6dcda;border-color:transparent;color:#c03930}html.theme--documenter-dark .button.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.button{font-size:.75rem}html.theme--documenter-dark .button.is-small:not(.is-rounded),html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.button:not(.is-rounded){border-radius:3px}html.theme--documenter-dark .button.is-normal{font-size:1rem}html.theme--documenter-dark .button.is-medium{font-size:1.25rem}html.theme--documenter-dark .button.is-large{font-size:1.5rem}html.theme--documenter-dark .button[disabled],fieldset[disabled] html.theme--documenter-dark .button{background-color:#8c9b9d;border-color:#5e6d6f;box-shadow:none;opacity:.5}html.theme--documenter-dark .button.is-fullwidth{display:flex;width:100%}html.theme--documenter-dark .button.is-loading{color:transparent !important;pointer-events:none}html.theme--documenter-dark .button.is-loading::after{position:absolute;left:calc(50% - (1em * 0.5));top:calc(50% - (1em * 0.5));position:absolute !important}html.theme--documenter-dark .button.is-static{background-color:#282f2f;border-color:#5e6d6f;color:#dbdee0;box-shadow:none;pointer-events:none}html.theme--documenter-dark .button.is-rounded,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.button{border-radius:9999px;padding-left:calc(1em + 0.25em);padding-right:calc(1em + 0.25em)}html.theme--documenter-dark .buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--documenter-dark .buttons .button{margin-bottom:0.5rem}html.theme--documenter-dark .buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}html.theme--documenter-dark .buttons:last-child{margin-bottom:-0.5rem}html.theme--documenter-dark .buttons:not(:last-child){margin-bottom:1rem}html.theme--documenter-dark .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}html.theme--documenter-dark .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:3px}html.theme--documenter-dark .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}html.theme--documenter-dark .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}html.theme--documenter-dark .buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}html.theme--documenter-dark .buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}html.theme--documenter-dark .buttons.has-addons .button:last-child{margin-right:0}html.theme--documenter-dark .buttons.has-addons .button:hover,html.theme--documenter-dark .buttons.has-addons .button.is-hovered{z-index:2}html.theme--documenter-dark .buttons.has-addons .button:focus,html.theme--documenter-dark .buttons.has-addons .button.is-focused,html.theme--documenter-dark .buttons.has-addons .button:active,html.theme--documenter-dark .buttons.has-addons .button.is-active,html.theme--documenter-dark .buttons.has-addons .button.is-selected{z-index:3}html.theme--documenter-dark .buttons.has-addons .button:focus:hover,html.theme--documenter-dark .buttons.has-addons .button.is-focused:hover,html.theme--documenter-dark .buttons.has-addons .button:active:hover,html.theme--documenter-dark .buttons.has-addons .button.is-active:hover,html.theme--documenter-dark .buttons.has-addons .button.is-selected:hover{z-index:4}html.theme--documenter-dark .buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .buttons.is-centered{justify-content:center}html.theme--documenter-dark .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}html.theme--documenter-dark .buttons.is-right{justify-content:flex-end}html.theme--documenter-dark .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}@media screen and (max-width: 768px){html.theme--documenter-dark .button.is-responsive.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.5625rem}html.theme--documenter-dark .button.is-responsive,html.theme--documenter-dark .button.is-responsive.is-normal{font-size:.65625rem}html.theme--documenter-dark .button.is-responsive.is-medium{font-size:.75rem}html.theme--documenter-dark .button.is-responsive.is-large{font-size:1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .button.is-responsive.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.65625rem}html.theme--documenter-dark .button.is-responsive,html.theme--documenter-dark .button.is-responsive.is-normal{font-size:.75rem}html.theme--documenter-dark .button.is-responsive.is-medium{font-size:1rem}html.theme--documenter-dark .button.is-responsive.is-large{font-size:1.25rem}}html.theme--documenter-dark .container{flex-grow:1;margin:0 auto;position:relative;width:auto}html.theme--documenter-dark .container.is-fluid{max-width:none !important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width: 1056px){html.theme--documenter-dark .container{max-width:992px}}@media screen and (max-width: 1215px){html.theme--documenter-dark .container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width: 1407px){html.theme--documenter-dark .container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width: 1216px){html.theme--documenter-dark .container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width: 1408px){html.theme--documenter-dark .container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}html.theme--documenter-dark .content li+li{margin-top:0.25em}html.theme--documenter-dark .content p:not(:last-child),html.theme--documenter-dark .content dl:not(:last-child),html.theme--documenter-dark .content ol:not(:last-child),html.theme--documenter-dark .content ul:not(:last-child),html.theme--documenter-dark .content blockquote:not(:last-child),html.theme--documenter-dark .content pre:not(:last-child),html.theme--documenter-dark .content table:not(:last-child){margin-bottom:1em}html.theme--documenter-dark .content h1,html.theme--documenter-dark .content h2,html.theme--documenter-dark .content h3,html.theme--documenter-dark .content h4,html.theme--documenter-dark .content h5,html.theme--documenter-dark .content h6{color:#f2f2f2;font-weight:600;line-height:1.125}html.theme--documenter-dark .content h1{font-size:2em;margin-bottom:0.5em}html.theme--documenter-dark .content h1:not(:first-child){margin-top:1em}html.theme--documenter-dark .content h2{font-size:1.75em;margin-bottom:0.5714em}html.theme--documenter-dark .content h2:not(:first-child){margin-top:1.1428em}html.theme--documenter-dark .content h3{font-size:1.5em;margin-bottom:0.6666em}html.theme--documenter-dark .content h3:not(:first-child){margin-top:1.3333em}html.theme--documenter-dark .content h4{font-size:1.25em;margin-bottom:0.8em}html.theme--documenter-dark .content h5{font-size:1.125em;margin-bottom:0.8888em}html.theme--documenter-dark .content h6{font-size:1em;margin-bottom:1em}html.theme--documenter-dark .content blockquote{background-color:#282f2f;border-left:5px solid #5e6d6f;padding:1.25em 1.5em}html.theme--documenter-dark .content ol{list-style-position:outside;margin-left:2em;margin-top:1em}html.theme--documenter-dark .content ol:not([type]){list-style-type:decimal}html.theme--documenter-dark .content ol.is-lower-alpha:not([type]){list-style-type:lower-alpha}html.theme--documenter-dark .content ol.is-lower-roman:not([type]){list-style-type:lower-roman}html.theme--documenter-dark .content ol.is-upper-alpha:not([type]){list-style-type:upper-alpha}html.theme--documenter-dark .content ol.is-upper-roman:not([type]){list-style-type:upper-roman}html.theme--documenter-dark .content ul{list-style:disc outside;margin-left:2em;margin-top:1em}html.theme--documenter-dark .content ul ul{list-style-type:circle;margin-top:0.5em}html.theme--documenter-dark .content ul ul ul{list-style-type:square}html.theme--documenter-dark .content dd{margin-left:2em}html.theme--documenter-dark .content figure{margin-left:2em;margin-right:2em;text-align:center}html.theme--documenter-dark .content figure:not(:first-child){margin-top:2em}html.theme--documenter-dark .content figure:not(:last-child){margin-bottom:2em}html.theme--documenter-dark .content figure img{display:inline-block}html.theme--documenter-dark .content figure figcaption{font-style:italic}html.theme--documenter-dark .content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:0;white-space:pre;word-wrap:normal}html.theme--documenter-dark .content sup,html.theme--documenter-dark .content sub{font-size:75%}html.theme--documenter-dark .content table{width:100%}html.theme--documenter-dark .content table td,html.theme--documenter-dark .content table th{border:1px solid #5e6d6f;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--documenter-dark .content table th{color:#f2f2f2}html.theme--documenter-dark .content table th:not([align]){text-align:inherit}html.theme--documenter-dark .content table thead td,html.theme--documenter-dark .content table thead th{border-width:0 0 2px;color:#f2f2f2}html.theme--documenter-dark .content table tfoot td,html.theme--documenter-dark .content table tfoot th{border-width:2px 0 0;color:#f2f2f2}html.theme--documenter-dark .content table tbody tr:last-child td,html.theme--documenter-dark .content table tbody tr:last-child th{border-bottom-width:0}html.theme--documenter-dark .content .tabs li+li{margin-top:0}html.theme--documenter-dark .content.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.content{font-size:.75rem}html.theme--documenter-dark .content.is-normal{font-size:1rem}html.theme--documenter-dark .content.is-medium{font-size:1.25rem}html.theme--documenter-dark .content.is-large{font-size:1.5rem}html.theme--documenter-dark .icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}html.theme--documenter-dark .icon.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.icon{height:1rem;width:1rem}html.theme--documenter-dark .icon.is-medium{height:2rem;width:2rem}html.theme--documenter-dark .icon.is-large{height:3rem;width:3rem}html.theme--documenter-dark .icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}html.theme--documenter-dark .icon-text .icon{flex-grow:0;flex-shrink:0}html.theme--documenter-dark .icon-text .icon:not(:last-child){margin-right:.25em}html.theme--documenter-dark .icon-text .icon:not(:first-child){margin-left:.25em}html.theme--documenter-dark div.icon-text{display:flex}html.theme--documenter-dark .image,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img{display:block;position:relative}html.theme--documenter-dark .image img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img img{display:block;height:auto;width:100%}html.theme--documenter-dark .image img.is-rounded,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img img.is-rounded{border-radius:9999px}html.theme--documenter-dark .image.is-fullwidth,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-fullwidth{width:100%}html.theme--documenter-dark .image.is-square img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--documenter-dark .image.is-square .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--documenter-dark .image.is-1by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--documenter-dark .image.is-1by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--documenter-dark .image.is-5by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--documenter-dark .image.is-5by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--documenter-dark .image.is-4by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--documenter-dark .image.is-4by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--documenter-dark .image.is-3by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--documenter-dark .image.is-3by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--documenter-dark .image.is-5by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--documenter-dark .image.is-5by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--documenter-dark .image.is-16by9 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--documenter-dark .image.is-16by9 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--documenter-dark .image.is-2by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--documenter-dark .image.is-2by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--documenter-dark .image.is-3by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--documenter-dark .image.is-3by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--documenter-dark .image.is-4by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--documenter-dark .image.is-4by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--documenter-dark .image.is-3by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--documenter-dark .image.is-3by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--documenter-dark .image.is-2by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--documenter-dark .image.is-2by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--documenter-dark .image.is-3by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--documenter-dark .image.is-3by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--documenter-dark .image.is-9by16 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--documenter-dark .image.is-9by16 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--documenter-dark .image.is-1by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--documenter-dark .image.is-1by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--documenter-dark .image.is-1by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--documenter-dark .image.is-1by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio{height:100%;width:100%}html.theme--documenter-dark .image.is-square,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square,html.theme--documenter-dark .image.is-1by1,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1{padding-top:100%}html.theme--documenter-dark .image.is-5by4,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4{padding-top:80%}html.theme--documenter-dark .image.is-4by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3{padding-top:75%}html.theme--documenter-dark .image.is-3by2,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2{padding-top:66.6666%}html.theme--documenter-dark .image.is-5by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3{padding-top:60%}html.theme--documenter-dark .image.is-16by9,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9{padding-top:56.25%}html.theme--documenter-dark .image.is-2by1,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1{padding-top:50%}html.theme--documenter-dark .image.is-3by1,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1{padding-top:33.3333%}html.theme--documenter-dark .image.is-4by5,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5{padding-top:125%}html.theme--documenter-dark .image.is-3by4,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4{padding-top:133.3333%}html.theme--documenter-dark .image.is-2by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3{padding-top:150%}html.theme--documenter-dark .image.is-3by5,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5{padding-top:166.6666%}html.theme--documenter-dark .image.is-9by16,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16{padding-top:177.7777%}html.theme--documenter-dark .image.is-1by2,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2{padding-top:200%}html.theme--documenter-dark .image.is-1by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3{padding-top:300%}html.theme--documenter-dark .image.is-16x16,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16x16{height:16px;width:16px}html.theme--documenter-dark .image.is-24x24,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-24x24{height:24px;width:24px}html.theme--documenter-dark .image.is-32x32,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-32x32{height:32px;width:32px}html.theme--documenter-dark .image.is-48x48,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-48x48{height:48px;width:48px}html.theme--documenter-dark .image.is-64x64,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-64x64{height:64px;width:64px}html.theme--documenter-dark .image.is-96x96,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-96x96{height:96px;width:96px}html.theme--documenter-dark .image.is-128x128,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-128x128{height:128px;width:128px}html.theme--documenter-dark .notification{background-color:#282f2f;border-radius:.4em;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}html.theme--documenter-dark .notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--documenter-dark .notification strong{color:currentColor}html.theme--documenter-dark .notification code,html.theme--documenter-dark .notification pre{background:#fff}html.theme--documenter-dark .notification pre code{background:transparent}html.theme--documenter-dark .notification>.delete{right:.5rem;position:absolute;top:0.5rem}html.theme--documenter-dark .notification .title,html.theme--documenter-dark .notification .subtitle,html.theme--documenter-dark .notification .content{color:currentColor}html.theme--documenter-dark .notification.is-white{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .notification.is-black{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .notification.is-light{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .notification.is-dark,html.theme--documenter-dark .content kbd.notification{background-color:#282f2f;color:#fff}html.theme--documenter-dark .notification.is-primary,html.theme--documenter-dark .docstring>section>a.notification.docs-sourcelink{background-color:#375a7f;color:#fff}html.theme--documenter-dark .notification.is-primary.is-light,html.theme--documenter-dark .docstring>section>a.notification.is-light.docs-sourcelink{background-color:#f1f5f9;color:#4d7eb2}html.theme--documenter-dark .notification.is-link{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .notification.is-link.is-light{background-color:#edfdf9;color:#15987e}html.theme--documenter-dark .notification.is-info{background-color:#3c5dcd;color:#fff}html.theme--documenter-dark .notification.is-info.is-light{background-color:#eff2fb;color:#3253c3}html.theme--documenter-dark .notification.is-success{background-color:#259a12;color:#fff}html.theme--documenter-dark .notification.is-success.is-light{background-color:#effded;color:#2ec016}html.theme--documenter-dark .notification.is-warning{background-color:#f4c72f;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .notification.is-warning.is-light{background-color:#fefaec;color:#8c6e07}html.theme--documenter-dark .notification.is-danger{background-color:#cb3c33;color:#fff}html.theme--documenter-dark .notification.is-danger.is-light{background-color:#fbefef;color:#c03930}html.theme--documenter-dark .progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}html.theme--documenter-dark .progress::-webkit-progress-bar{background-color:#343c3d}html.theme--documenter-dark .progress::-webkit-progress-value{background-color:#dbdee0}html.theme--documenter-dark .progress::-moz-progress-bar{background-color:#dbdee0}html.theme--documenter-dark .progress::-ms-fill{background-color:#dbdee0;border:none}html.theme--documenter-dark .progress.is-white::-webkit-progress-value{background-color:#fff}html.theme--documenter-dark .progress.is-white::-moz-progress-bar{background-color:#fff}html.theme--documenter-dark .progress.is-white::-ms-fill{background-color:#fff}html.theme--documenter-dark .progress.is-white:indeterminate{background-image:linear-gradient(to right, #fff 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-black::-webkit-progress-value{background-color:#0a0a0a}html.theme--documenter-dark .progress.is-black::-moz-progress-bar{background-color:#0a0a0a}html.theme--documenter-dark .progress.is-black::-ms-fill{background-color:#0a0a0a}html.theme--documenter-dark .progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-light::-webkit-progress-value{background-color:#ecf0f1}html.theme--documenter-dark .progress.is-light::-moz-progress-bar{background-color:#ecf0f1}html.theme--documenter-dark .progress.is-light::-ms-fill{background-color:#ecf0f1}html.theme--documenter-dark .progress.is-light:indeterminate{background-image:linear-gradient(to right, #ecf0f1 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-dark::-webkit-progress-value,html.theme--documenter-dark .content kbd.progress::-webkit-progress-value{background-color:#282f2f}html.theme--documenter-dark .progress.is-dark::-moz-progress-bar,html.theme--documenter-dark .content kbd.progress::-moz-progress-bar{background-color:#282f2f}html.theme--documenter-dark .progress.is-dark::-ms-fill,html.theme--documenter-dark .content kbd.progress::-ms-fill{background-color:#282f2f}html.theme--documenter-dark .progress.is-dark:indeterminate,html.theme--documenter-dark .content kbd.progress:indeterminate{background-image:linear-gradient(to right, #282f2f 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-primary::-webkit-progress-value,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink::-webkit-progress-value{background-color:#375a7f}html.theme--documenter-dark .progress.is-primary::-moz-progress-bar,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink::-moz-progress-bar{background-color:#375a7f}html.theme--documenter-dark .progress.is-primary::-ms-fill,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink::-ms-fill{background-color:#375a7f}html.theme--documenter-dark .progress.is-primary:indeterminate,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink:indeterminate{background-image:linear-gradient(to right, #375a7f 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-link::-webkit-progress-value{background-color:#1abc9c}html.theme--documenter-dark .progress.is-link::-moz-progress-bar{background-color:#1abc9c}html.theme--documenter-dark .progress.is-link::-ms-fill{background-color:#1abc9c}html.theme--documenter-dark .progress.is-link:indeterminate{background-image:linear-gradient(to right, #1abc9c 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-info::-webkit-progress-value{background-color:#3c5dcd}html.theme--documenter-dark .progress.is-info::-moz-progress-bar{background-color:#3c5dcd}html.theme--documenter-dark .progress.is-info::-ms-fill{background-color:#3c5dcd}html.theme--documenter-dark .progress.is-info:indeterminate{background-image:linear-gradient(to right, #3c5dcd 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-success::-webkit-progress-value{background-color:#259a12}html.theme--documenter-dark .progress.is-success::-moz-progress-bar{background-color:#259a12}html.theme--documenter-dark .progress.is-success::-ms-fill{background-color:#259a12}html.theme--documenter-dark .progress.is-success:indeterminate{background-image:linear-gradient(to right, #259a12 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-warning::-webkit-progress-value{background-color:#f4c72f}html.theme--documenter-dark .progress.is-warning::-moz-progress-bar{background-color:#f4c72f}html.theme--documenter-dark .progress.is-warning::-ms-fill{background-color:#f4c72f}html.theme--documenter-dark .progress.is-warning:indeterminate{background-image:linear-gradient(to right, #f4c72f 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-danger::-webkit-progress-value{background-color:#cb3c33}html.theme--documenter-dark .progress.is-danger::-moz-progress-bar{background-color:#cb3c33}html.theme--documenter-dark .progress.is-danger::-ms-fill{background-color:#cb3c33}html.theme--documenter-dark .progress.is-danger:indeterminate{background-image:linear-gradient(to right, #cb3c33 30%, #343c3d 30%)}html.theme--documenter-dark .progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#343c3d;background-image:linear-gradient(to right, #fff 30%, #343c3d 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}html.theme--documenter-dark .progress:indeterminate::-webkit-progress-bar{background-color:transparent}html.theme--documenter-dark .progress:indeterminate::-moz-progress-bar{background-color:transparent}html.theme--documenter-dark .progress:indeterminate::-ms-fill{animation-name:none}html.theme--documenter-dark .progress.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.progress{height:.75rem}html.theme--documenter-dark .progress.is-medium{height:1.25rem}html.theme--documenter-dark .progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}html.theme--documenter-dark .table{background-color:#343c3d;color:#fff}html.theme--documenter-dark .table td,html.theme--documenter-dark .table th{border:1px solid #5e6d6f;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--documenter-dark .table td.is-white,html.theme--documenter-dark .table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--documenter-dark .table td.is-black,html.theme--documenter-dark .table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--documenter-dark .table td.is-light,html.theme--documenter-dark .table th.is-light{background-color:#ecf0f1;border-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .table td.is-dark,html.theme--documenter-dark .table th.is-dark{background-color:#282f2f;border-color:#282f2f;color:#fff}html.theme--documenter-dark .table td.is-primary,html.theme--documenter-dark .table th.is-primary{background-color:#375a7f;border-color:#375a7f;color:#fff}html.theme--documenter-dark .table td.is-link,html.theme--documenter-dark .table th.is-link{background-color:#1abc9c;border-color:#1abc9c;color:#fff}html.theme--documenter-dark .table td.is-info,html.theme--documenter-dark .table th.is-info{background-color:#3c5dcd;border-color:#3c5dcd;color:#fff}html.theme--documenter-dark .table td.is-success,html.theme--documenter-dark .table th.is-success{background-color:#259a12;border-color:#259a12;color:#fff}html.theme--documenter-dark .table td.is-warning,html.theme--documenter-dark .table th.is-warning{background-color:#f4c72f;border-color:#f4c72f;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .table td.is-danger,html.theme--documenter-dark .table th.is-danger{background-color:#cb3c33;border-color:#cb3c33;color:#fff}html.theme--documenter-dark .table td.is-narrow,html.theme--documenter-dark .table th.is-narrow{white-space:nowrap;width:1%}html.theme--documenter-dark .table td.is-selected,html.theme--documenter-dark .table th.is-selected{background-color:#375a7f;color:#fff}html.theme--documenter-dark .table td.is-selected a,html.theme--documenter-dark .table td.is-selected strong,html.theme--documenter-dark .table th.is-selected a,html.theme--documenter-dark .table th.is-selected strong{color:currentColor}html.theme--documenter-dark .table td.is-vcentered,html.theme--documenter-dark .table th.is-vcentered{vertical-align:middle}html.theme--documenter-dark .table th{color:#f2f2f2}html.theme--documenter-dark .table th:not([align]){text-align:left}html.theme--documenter-dark .table tr.is-selected{background-color:#375a7f;color:#fff}html.theme--documenter-dark .table tr.is-selected a,html.theme--documenter-dark .table tr.is-selected strong{color:currentColor}html.theme--documenter-dark .table tr.is-selected td,html.theme--documenter-dark .table tr.is-selected th{border-color:#fff;color:currentColor}html.theme--documenter-dark .table thead{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .table thead td,html.theme--documenter-dark .table thead th{border-width:0 0 2px;color:#f2f2f2}html.theme--documenter-dark .table tfoot{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .table tfoot td,html.theme--documenter-dark .table tfoot th{border-width:2px 0 0;color:#f2f2f2}html.theme--documenter-dark .table tbody{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .table tbody tr:last-child td,html.theme--documenter-dark .table tbody tr:last-child th{border-bottom-width:0}html.theme--documenter-dark .table.is-bordered td,html.theme--documenter-dark .table.is-bordered th{border-width:1px}html.theme--documenter-dark .table.is-bordered tr:last-child td,html.theme--documenter-dark .table.is-bordered tr:last-child th{border-bottom-width:1px}html.theme--documenter-dark .table.is-fullwidth{width:100%}html.theme--documenter-dark .table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#282f2f}html.theme--documenter-dark .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#282f2f}html.theme--documenter-dark .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#2d3435}html.theme--documenter-dark .table.is-narrow td,html.theme--documenter-dark .table.is-narrow th{padding:0.25em 0.5em}html.theme--documenter-dark .table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#282f2f}html.theme--documenter-dark .table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}html.theme--documenter-dark .tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--documenter-dark .tags .tag,html.theme--documenter-dark .tags .content kbd,html.theme--documenter-dark .content .tags kbd,html.theme--documenter-dark .tags .docstring>section>a.docs-sourcelink{margin-bottom:0.5rem}html.theme--documenter-dark .tags .tag:not(:last-child),html.theme--documenter-dark .tags .content kbd:not(:last-child),html.theme--documenter-dark .content .tags kbd:not(:last-child),html.theme--documenter-dark .tags .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:.5rem}html.theme--documenter-dark .tags:last-child{margin-bottom:-0.5rem}html.theme--documenter-dark .tags:not(:last-child){margin-bottom:1rem}html.theme--documenter-dark .tags.are-medium .tag:not(.is-normal):not(.is-large),html.theme--documenter-dark .tags.are-medium .content kbd:not(.is-normal):not(.is-large),html.theme--documenter-dark .content .tags.are-medium kbd:not(.is-normal):not(.is-large),html.theme--documenter-dark .tags.are-medium .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-large){font-size:1rem}html.theme--documenter-dark .tags.are-large .tag:not(.is-normal):not(.is-medium),html.theme--documenter-dark .tags.are-large .content kbd:not(.is-normal):not(.is-medium),html.theme--documenter-dark .content .tags.are-large kbd:not(.is-normal):not(.is-medium),html.theme--documenter-dark .tags.are-large .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-medium){font-size:1.25rem}html.theme--documenter-dark .tags.is-centered{justify-content:center}html.theme--documenter-dark .tags.is-centered .tag,html.theme--documenter-dark .tags.is-centered .content kbd,html.theme--documenter-dark .content .tags.is-centered kbd,html.theme--documenter-dark .tags.is-centered .docstring>section>a.docs-sourcelink{margin-right:0.25rem;margin-left:0.25rem}html.theme--documenter-dark .tags.is-right{justify-content:flex-end}html.theme--documenter-dark .tags.is-right .tag:not(:first-child),html.theme--documenter-dark .tags.is-right .content kbd:not(:first-child),html.theme--documenter-dark .content .tags.is-right kbd:not(:first-child),html.theme--documenter-dark .tags.is-right .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0.5rem}html.theme--documenter-dark .tags.is-right .tag:not(:last-child),html.theme--documenter-dark .tags.is-right .content kbd:not(:last-child),html.theme--documenter-dark .content .tags.is-right kbd:not(:last-child),html.theme--documenter-dark .tags.is-right .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0}html.theme--documenter-dark .tags.has-addons .tag,html.theme--documenter-dark .tags.has-addons .content kbd,html.theme--documenter-dark .content .tags.has-addons kbd,html.theme--documenter-dark .tags.has-addons .docstring>section>a.docs-sourcelink{margin-right:0}html.theme--documenter-dark .tags.has-addons .tag:not(:first-child),html.theme--documenter-dark .tags.has-addons .content kbd:not(:first-child),html.theme--documenter-dark .content .tags.has-addons kbd:not(:first-child),html.theme--documenter-dark .tags.has-addons .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}html.theme--documenter-dark .tags.has-addons .tag:not(:last-child),html.theme--documenter-dark .tags.has-addons .content kbd:not(:last-child),html.theme--documenter-dark .content .tags.has-addons kbd:not(:last-child),html.theme--documenter-dark .tags.has-addons .docstring>section>a.docs-sourcelink:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}html.theme--documenter-dark .tag:not(body),html.theme--documenter-dark .content kbd:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body){align-items:center;background-color:#282f2f;border-radius:.4em;color:#fff;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:0.75em;padding-right:0.75em;white-space:nowrap}html.theme--documenter-dark .tag:not(body) .delete,html.theme--documenter-dark .content kbd:not(body) .delete,html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}html.theme--documenter-dark .tag.is-white:not(body),html.theme--documenter-dark .content kbd.is-white:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-white:not(body){background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .tag.is-black:not(body),html.theme--documenter-dark .content kbd.is-black:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-black:not(body){background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .tag.is-light:not(body),html.theme--documenter-dark .content kbd.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .tag.is-dark:not(body),html.theme--documenter-dark .content kbd:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-dark:not(body),html.theme--documenter-dark .content .docstring>section>kbd:not(body){background-color:#282f2f;color:#fff}html.theme--documenter-dark .tag.is-primary:not(body),html.theme--documenter-dark .content kbd.is-primary:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body){background-color:#375a7f;color:#fff}html.theme--documenter-dark .tag.is-primary.is-light:not(body),html.theme--documenter-dark .content kbd.is-primary.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#f1f5f9;color:#4d7eb2}html.theme--documenter-dark .tag.is-link:not(body),html.theme--documenter-dark .content kbd.is-link:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-link:not(body){background-color:#1abc9c;color:#fff}html.theme--documenter-dark .tag.is-link.is-light:not(body),html.theme--documenter-dark .content kbd.is-link.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-link.is-light:not(body){background-color:#edfdf9;color:#15987e}html.theme--documenter-dark .tag.is-info:not(body),html.theme--documenter-dark .content kbd.is-info:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-info:not(body){background-color:#3c5dcd;color:#fff}html.theme--documenter-dark .tag.is-info.is-light:not(body),html.theme--documenter-dark .content kbd.is-info.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-info.is-light:not(body){background-color:#eff2fb;color:#3253c3}html.theme--documenter-dark .tag.is-success:not(body),html.theme--documenter-dark .content kbd.is-success:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-success:not(body){background-color:#259a12;color:#fff}html.theme--documenter-dark .tag.is-success.is-light:not(body),html.theme--documenter-dark .content kbd.is-success.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-success.is-light:not(body){background-color:#effded;color:#2ec016}html.theme--documenter-dark .tag.is-warning:not(body),html.theme--documenter-dark .content kbd.is-warning:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-warning:not(body){background-color:#f4c72f;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .tag.is-warning.is-light:not(body),html.theme--documenter-dark .content kbd.is-warning.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-warning.is-light:not(body){background-color:#fefaec;color:#8c6e07}html.theme--documenter-dark .tag.is-danger:not(body),html.theme--documenter-dark .content kbd.is-danger:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-danger:not(body){background-color:#cb3c33;color:#fff}html.theme--documenter-dark .tag.is-danger.is-light:not(body),html.theme--documenter-dark .content kbd.is-danger.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-danger.is-light:not(body){background-color:#fbefef;color:#c03930}html.theme--documenter-dark .tag.is-normal:not(body),html.theme--documenter-dark .content kbd.is-normal:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-normal:not(body){font-size:.75rem}html.theme--documenter-dark .tag.is-medium:not(body),html.theme--documenter-dark .content kbd.is-medium:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-medium:not(body){font-size:1rem}html.theme--documenter-dark .tag.is-large:not(body),html.theme--documenter-dark .content kbd.is-large:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-large:not(body){font-size:1.25rem}html.theme--documenter-dark .tag:not(body) .icon:first-child:not(:last-child),html.theme--documenter-dark .content kbd:not(body) .icon:first-child:not(:last-child),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}html.theme--documenter-dark .tag:not(body) .icon:last-child:not(:first-child),html.theme--documenter-dark .content kbd:not(body) .icon:last-child:not(:first-child),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}html.theme--documenter-dark .tag:not(body) .icon:first-child:last-child,html.theme--documenter-dark .content kbd:not(body) .icon:first-child:last-child,html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}html.theme--documenter-dark .tag.is-delete:not(body),html.theme--documenter-dark .content kbd.is-delete:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body){margin-left:1px;padding:0;position:relative;width:2em}html.theme--documenter-dark .tag.is-delete:not(body)::before,html.theme--documenter-dark .content kbd.is-delete:not(body)::before,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::before,html.theme--documenter-dark .tag.is-delete:not(body)::after,html.theme--documenter-dark .content kbd.is-delete:not(body)::after,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--documenter-dark .tag.is-delete:not(body)::before,html.theme--documenter-dark .content kbd.is-delete:not(body)::before,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::before{height:1px;width:50%}html.theme--documenter-dark .tag.is-delete:not(body)::after,html.theme--documenter-dark .content kbd.is-delete:not(body)::after,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{height:50%;width:1px}html.theme--documenter-dark .tag.is-delete:not(body):hover,html.theme--documenter-dark .content kbd.is-delete:not(body):hover,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body):hover,html.theme--documenter-dark .tag.is-delete:not(body):focus,html.theme--documenter-dark .content kbd.is-delete:not(body):focus,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body):focus{background-color:#1d2122}html.theme--documenter-dark .tag.is-delete:not(body):active,html.theme--documenter-dark .content kbd.is-delete:not(body):active,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body):active{background-color:#111414}html.theme--documenter-dark .tag.is-rounded:not(body),html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:not(body),html.theme--documenter-dark .content kbd.is-rounded:not(body),html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search>input:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-rounded:not(body){border-radius:9999px}html.theme--documenter-dark a.tag:hover,html.theme--documenter-dark .docstring>section>a.docs-sourcelink:hover{text-decoration:underline}html.theme--documenter-dark .title,html.theme--documenter-dark .subtitle{word-break:break-word}html.theme--documenter-dark .title em,html.theme--documenter-dark .title span,html.theme--documenter-dark .subtitle em,html.theme--documenter-dark .subtitle span{font-weight:inherit}html.theme--documenter-dark .title sub,html.theme--documenter-dark .subtitle sub{font-size:.75em}html.theme--documenter-dark .title sup,html.theme--documenter-dark .subtitle sup{font-size:.75em}html.theme--documenter-dark .title .tag,html.theme--documenter-dark .title .content kbd,html.theme--documenter-dark .content .title kbd,html.theme--documenter-dark .title .docstring>section>a.docs-sourcelink,html.theme--documenter-dark .subtitle .tag,html.theme--documenter-dark .subtitle .content kbd,html.theme--documenter-dark .content .subtitle kbd,html.theme--documenter-dark .subtitle .docstring>section>a.docs-sourcelink{vertical-align:middle}html.theme--documenter-dark .title{color:#fff;font-size:2rem;font-weight:500;line-height:1.125}html.theme--documenter-dark .title strong{color:inherit;font-weight:inherit}html.theme--documenter-dark .title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}html.theme--documenter-dark .title.is-1{font-size:3rem}html.theme--documenter-dark .title.is-2{font-size:2.5rem}html.theme--documenter-dark .title.is-3{font-size:2rem}html.theme--documenter-dark .title.is-4{font-size:1.5rem}html.theme--documenter-dark .title.is-5{font-size:1.25rem}html.theme--documenter-dark .title.is-6{font-size:1rem}html.theme--documenter-dark .title.is-7{font-size:.75rem}html.theme--documenter-dark .subtitle{color:#8c9b9d;font-size:1.25rem;font-weight:400;line-height:1.25}html.theme--documenter-dark .subtitle strong{color:#8c9b9d;font-weight:600}html.theme--documenter-dark .subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}html.theme--documenter-dark .subtitle.is-1{font-size:3rem}html.theme--documenter-dark .subtitle.is-2{font-size:2.5rem}html.theme--documenter-dark .subtitle.is-3{font-size:2rem}html.theme--documenter-dark .subtitle.is-4{font-size:1.5rem}html.theme--documenter-dark .subtitle.is-5{font-size:1.25rem}html.theme--documenter-dark .subtitle.is-6{font-size:1rem}html.theme--documenter-dark .subtitle.is-7{font-size:.75rem}html.theme--documenter-dark .heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}html.theme--documenter-dark .number{align-items:center;background-color:#282f2f;border-radius:9999px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:0.25rem 0.5rem;text-align:center;vertical-align:top}html.theme--documenter-dark .select select,html.theme--documenter-dark .textarea,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{background-color:#1f2424;border-color:#5e6d6f;border-radius:.4em;color:#dbdee0}html.theme--documenter-dark .select select::-moz-placeholder,html.theme--documenter-dark .textarea::-moz-placeholder,html.theme--documenter-dark .input::-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:#868c98}html.theme--documenter-dark .select select::-webkit-input-placeholder,html.theme--documenter-dark .textarea::-webkit-input-placeholder,html.theme--documenter-dark .input::-webkit-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:#868c98}html.theme--documenter-dark .select select:-moz-placeholder,html.theme--documenter-dark .textarea:-moz-placeholder,html.theme--documenter-dark .input:-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:#868c98}html.theme--documenter-dark .select select:-ms-input-placeholder,html.theme--documenter-dark .textarea:-ms-input-placeholder,html.theme--documenter-dark .input:-ms-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:#868c98}html.theme--documenter-dark .select select:hover,html.theme--documenter-dark .textarea:hover,html.theme--documenter-dark .input:hover,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:hover,html.theme--documenter-dark .select select.is-hovered,html.theme--documenter-dark .is-hovered.textarea,html.theme--documenter-dark .is-hovered.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-hovered{border-color:#8c9b9d}html.theme--documenter-dark .select select:focus,html.theme--documenter-dark .textarea:focus,html.theme--documenter-dark .input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:focus,html.theme--documenter-dark .select select.is-focused,html.theme--documenter-dark .is-focused.textarea,html.theme--documenter-dark .is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .select select:active,html.theme--documenter-dark .textarea:active,html.theme--documenter-dark .input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:active,html.theme--documenter-dark .select select.is-active,html.theme--documenter-dark .is-active.textarea,html.theme--documenter-dark .is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{border-color:#1abc9c;box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .select select[disabled],html.theme--documenter-dark .textarea[disabled],html.theme--documenter-dark .input[disabled],html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled],fieldset[disabled] html.theme--documenter-dark .select select,fieldset[disabled] html.theme--documenter-dark .textarea,fieldset[disabled] html.theme--documenter-dark .input,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{background-color:#8c9b9d;border-color:#282f2f;box-shadow:none;color:#fff}html.theme--documenter-dark .select select[disabled]::-moz-placeholder,html.theme--documenter-dark .textarea[disabled]::-moz-placeholder,html.theme--documenter-dark .input[disabled]::-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .select select::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .input::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .select select[disabled]::-webkit-input-placeholder,html.theme--documenter-dark .textarea[disabled]::-webkit-input-placeholder,html.theme--documenter-dark .input[disabled]::-webkit-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark .select select::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark .input::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .select select[disabled]:-moz-placeholder,html.theme--documenter-dark .textarea[disabled]:-moz-placeholder,html.theme--documenter-dark .input[disabled]:-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .select select:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .input:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .select select[disabled]:-ms-input-placeholder,html.theme--documenter-dark .textarea[disabled]:-ms-input-placeholder,html.theme--documenter-dark .input[disabled]:-ms-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark .select select:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark .input:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .textarea,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{box-shadow:inset 0 0.0625em 0.125em rgba(10,10,10,0.05);max-width:100%;width:100%}html.theme--documenter-dark .textarea[readonly],html.theme--documenter-dark .input[readonly],html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[readonly]{box-shadow:none}html.theme--documenter-dark .is-white.textarea,html.theme--documenter-dark .is-white.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-white{border-color:#fff}html.theme--documenter-dark .is-white.textarea:focus,html.theme--documenter-dark .is-white.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-white:focus,html.theme--documenter-dark .is-white.is-focused.textarea,html.theme--documenter-dark .is-white.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-white.textarea:active,html.theme--documenter-dark .is-white.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-white:active,html.theme--documenter-dark .is-white.is-active.textarea,html.theme--documenter-dark .is-white.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--documenter-dark .is-black.textarea,html.theme--documenter-dark .is-black.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-black{border-color:#0a0a0a}html.theme--documenter-dark .is-black.textarea:focus,html.theme--documenter-dark .is-black.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-black:focus,html.theme--documenter-dark .is-black.is-focused.textarea,html.theme--documenter-dark .is-black.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-black.textarea:active,html.theme--documenter-dark .is-black.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-black:active,html.theme--documenter-dark .is-black.is-active.textarea,html.theme--documenter-dark .is-black.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--documenter-dark .is-light.textarea,html.theme--documenter-dark .is-light.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-light{border-color:#ecf0f1}html.theme--documenter-dark .is-light.textarea:focus,html.theme--documenter-dark .is-light.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-light:focus,html.theme--documenter-dark .is-light.is-focused.textarea,html.theme--documenter-dark .is-light.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-light.textarea:active,html.theme--documenter-dark .is-light.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-light:active,html.theme--documenter-dark .is-light.is-active.textarea,html.theme--documenter-dark .is-light.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(236,240,241,0.25)}html.theme--documenter-dark .is-dark.textarea,html.theme--documenter-dark .content kbd.textarea,html.theme--documenter-dark .is-dark.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-dark,html.theme--documenter-dark .content kbd.input{border-color:#282f2f}html.theme--documenter-dark .is-dark.textarea:focus,html.theme--documenter-dark .content kbd.textarea:focus,html.theme--documenter-dark .is-dark.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-dark:focus,html.theme--documenter-dark .content kbd.input:focus,html.theme--documenter-dark .is-dark.is-focused.textarea,html.theme--documenter-dark .content kbd.is-focused.textarea,html.theme--documenter-dark .is-dark.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .content kbd.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search>input.is-focused,html.theme--documenter-dark .is-dark.textarea:active,html.theme--documenter-dark .content kbd.textarea:active,html.theme--documenter-dark .is-dark.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-dark:active,html.theme--documenter-dark .content kbd.input:active,html.theme--documenter-dark .is-dark.is-active.textarea,html.theme--documenter-dark .content kbd.is-active.textarea,html.theme--documenter-dark .is-dark.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--documenter-dark .content kbd.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(40,47,47,0.25)}html.theme--documenter-dark .is-primary.textarea,html.theme--documenter-dark .docstring>section>a.textarea.docs-sourcelink,html.theme--documenter-dark .is-primary.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-primary,html.theme--documenter-dark .docstring>section>a.input.docs-sourcelink{border-color:#375a7f}html.theme--documenter-dark .is-primary.textarea:focus,html.theme--documenter-dark .docstring>section>a.textarea.docs-sourcelink:focus,html.theme--documenter-dark .is-primary.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-primary:focus,html.theme--documenter-dark .docstring>section>a.input.docs-sourcelink:focus,html.theme--documenter-dark .is-primary.is-focused.textarea,html.theme--documenter-dark .docstring>section>a.is-focused.textarea.docs-sourcelink,html.theme--documenter-dark .is-primary.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .docstring>section>a.is-focused.input.docs-sourcelink,html.theme--documenter-dark .is-primary.textarea:active,html.theme--documenter-dark .docstring>section>a.textarea.docs-sourcelink:active,html.theme--documenter-dark .is-primary.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-primary:active,html.theme--documenter-dark .docstring>section>a.input.docs-sourcelink:active,html.theme--documenter-dark .is-primary.is-active.textarea,html.theme--documenter-dark .docstring>section>a.is-active.textarea.docs-sourcelink,html.theme--documenter-dark .is-primary.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--documenter-dark .docstring>section>a.is-active.input.docs-sourcelink{box-shadow:0 0 0 0.125em rgba(55,90,127,0.25)}html.theme--documenter-dark .is-link.textarea,html.theme--documenter-dark .is-link.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-link{border-color:#1abc9c}html.theme--documenter-dark .is-link.textarea:focus,html.theme--documenter-dark .is-link.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-link:focus,html.theme--documenter-dark .is-link.is-focused.textarea,html.theme--documenter-dark .is-link.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-link.textarea:active,html.theme--documenter-dark .is-link.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-link:active,html.theme--documenter-dark .is-link.is-active.textarea,html.theme--documenter-dark .is-link.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .is-info.textarea,html.theme--documenter-dark .is-info.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-info{border-color:#3c5dcd}html.theme--documenter-dark .is-info.textarea:focus,html.theme--documenter-dark .is-info.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-info:focus,html.theme--documenter-dark .is-info.is-focused.textarea,html.theme--documenter-dark .is-info.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-info.textarea:active,html.theme--documenter-dark .is-info.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-info:active,html.theme--documenter-dark .is-info.is-active.textarea,html.theme--documenter-dark .is-info.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(60,93,205,0.25)}html.theme--documenter-dark .is-success.textarea,html.theme--documenter-dark .is-success.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-success{border-color:#259a12}html.theme--documenter-dark .is-success.textarea:focus,html.theme--documenter-dark .is-success.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-success:focus,html.theme--documenter-dark .is-success.is-focused.textarea,html.theme--documenter-dark .is-success.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-success.textarea:active,html.theme--documenter-dark .is-success.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-success:active,html.theme--documenter-dark .is-success.is-active.textarea,html.theme--documenter-dark .is-success.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(37,154,18,0.25)}html.theme--documenter-dark .is-warning.textarea,html.theme--documenter-dark .is-warning.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-warning{border-color:#f4c72f}html.theme--documenter-dark .is-warning.textarea:focus,html.theme--documenter-dark .is-warning.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-warning:focus,html.theme--documenter-dark .is-warning.is-focused.textarea,html.theme--documenter-dark .is-warning.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-warning.textarea:active,html.theme--documenter-dark .is-warning.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-warning:active,html.theme--documenter-dark .is-warning.is-active.textarea,html.theme--documenter-dark .is-warning.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(244,199,47,0.25)}html.theme--documenter-dark .is-danger.textarea,html.theme--documenter-dark .is-danger.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-danger{border-color:#cb3c33}html.theme--documenter-dark .is-danger.textarea:focus,html.theme--documenter-dark .is-danger.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-danger:focus,html.theme--documenter-dark .is-danger.is-focused.textarea,html.theme--documenter-dark .is-danger.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-danger.textarea:active,html.theme--documenter-dark .is-danger.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-danger:active,html.theme--documenter-dark .is-danger.is-active.textarea,html.theme--documenter-dark .is-danger.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(203,60,51,0.25)}html.theme--documenter-dark .is-small.textarea,html.theme--documenter-dark .is-small.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{border-radius:3px;font-size:.75rem}html.theme--documenter-dark .is-medium.textarea,html.theme--documenter-dark .is-medium.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-medium{font-size:1.25rem}html.theme--documenter-dark .is-large.textarea,html.theme--documenter-dark .is-large.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-large{font-size:1.5rem}html.theme--documenter-dark .is-fullwidth.textarea,html.theme--documenter-dark .is-fullwidth.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-fullwidth{display:block;width:100%}html.theme--documenter-dark .is-inline.textarea,html.theme--documenter-dark .is-inline.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-inline{display:inline;width:auto}html.theme--documenter-dark .input.is-rounded,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{border-radius:9999px;padding-left:calc(calc(0.75em - 1px) + 0.375em);padding-right:calc(calc(0.75em - 1px) + 0.375em)}html.theme--documenter-dark .input.is-static,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}html.theme--documenter-dark .textarea{display:block;max-width:100%;min-width:100%;padding:calc(0.75em - 1px);resize:vertical}html.theme--documenter-dark .textarea:not([rows]){max-height:40em;min-height:8em}html.theme--documenter-dark .textarea[rows]{height:initial}html.theme--documenter-dark .textarea.has-fixed-size{resize:none}html.theme--documenter-dark .radio,html.theme--documenter-dark .checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}html.theme--documenter-dark .radio input,html.theme--documenter-dark .checkbox input{cursor:pointer}html.theme--documenter-dark .radio:hover,html.theme--documenter-dark .checkbox:hover{color:#8c9b9d}html.theme--documenter-dark .radio[disabled],html.theme--documenter-dark .checkbox[disabled],fieldset[disabled] html.theme--documenter-dark .radio,fieldset[disabled] html.theme--documenter-dark .checkbox,html.theme--documenter-dark .radio input[disabled],html.theme--documenter-dark .checkbox input[disabled]{color:#fff;cursor:not-allowed}html.theme--documenter-dark .radio+.radio{margin-left:.5em}html.theme--documenter-dark .select{display:inline-block;max-width:100%;position:relative;vertical-align:top}html.theme--documenter-dark .select:not(.is-multiple){height:2.5em}html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading)::after{border-color:#1abc9c;right:1.125em;z-index:4}html.theme--documenter-dark .select.is-rounded select,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.select select{border-radius:9999px;padding-left:1em}html.theme--documenter-dark .select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}html.theme--documenter-dark .select select::-ms-expand{display:none}html.theme--documenter-dark .select select[disabled]:hover,fieldset[disabled] html.theme--documenter-dark .select select:hover{border-color:#282f2f}html.theme--documenter-dark .select select:not([multiple]){padding-right:2.5em}html.theme--documenter-dark .select select[multiple]{height:auto;padding:0}html.theme--documenter-dark .select select[multiple] option{padding:0.5em 1em}html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading):hover::after{border-color:#8c9b9d}html.theme--documenter-dark .select.is-white:not(:hover)::after{border-color:#fff}html.theme--documenter-dark .select.is-white select{border-color:#fff}html.theme--documenter-dark .select.is-white select:hover,html.theme--documenter-dark .select.is-white select.is-hovered{border-color:#f2f2f2}html.theme--documenter-dark .select.is-white select:focus,html.theme--documenter-dark .select.is-white select.is-focused,html.theme--documenter-dark .select.is-white select:active,html.theme--documenter-dark .select.is-white select.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--documenter-dark .select.is-black:not(:hover)::after{border-color:#0a0a0a}html.theme--documenter-dark .select.is-black select{border-color:#0a0a0a}html.theme--documenter-dark .select.is-black select:hover,html.theme--documenter-dark .select.is-black select.is-hovered{border-color:#000}html.theme--documenter-dark .select.is-black select:focus,html.theme--documenter-dark .select.is-black select.is-focused,html.theme--documenter-dark .select.is-black select:active,html.theme--documenter-dark .select.is-black select.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--documenter-dark .select.is-light:not(:hover)::after{border-color:#ecf0f1}html.theme--documenter-dark .select.is-light select{border-color:#ecf0f1}html.theme--documenter-dark .select.is-light select:hover,html.theme--documenter-dark .select.is-light select.is-hovered{border-color:#dde4e6}html.theme--documenter-dark .select.is-light select:focus,html.theme--documenter-dark .select.is-light select.is-focused,html.theme--documenter-dark .select.is-light select:active,html.theme--documenter-dark .select.is-light select.is-active{box-shadow:0 0 0 0.125em rgba(236,240,241,0.25)}html.theme--documenter-dark .select.is-dark:not(:hover)::after,html.theme--documenter-dark .content kbd.select:not(:hover)::after{border-color:#282f2f}html.theme--documenter-dark .select.is-dark select,html.theme--documenter-dark .content kbd.select select{border-color:#282f2f}html.theme--documenter-dark .select.is-dark select:hover,html.theme--documenter-dark .content kbd.select select:hover,html.theme--documenter-dark .select.is-dark select.is-hovered,html.theme--documenter-dark .content kbd.select select.is-hovered{border-color:#1d2122}html.theme--documenter-dark .select.is-dark select:focus,html.theme--documenter-dark .content kbd.select select:focus,html.theme--documenter-dark .select.is-dark select.is-focused,html.theme--documenter-dark .content kbd.select select.is-focused,html.theme--documenter-dark .select.is-dark select:active,html.theme--documenter-dark .content kbd.select select:active,html.theme--documenter-dark .select.is-dark select.is-active,html.theme--documenter-dark .content kbd.select select.is-active{box-shadow:0 0 0 0.125em rgba(40,47,47,0.25)}html.theme--documenter-dark .select.is-primary:not(:hover)::after,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink:not(:hover)::after{border-color:#375a7f}html.theme--documenter-dark .select.is-primary select,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select{border-color:#375a7f}html.theme--documenter-dark .select.is-primary select:hover,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select:hover,html.theme--documenter-dark .select.is-primary select.is-hovered,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select.is-hovered{border-color:#2f4d6d}html.theme--documenter-dark .select.is-primary select:focus,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select:focus,html.theme--documenter-dark .select.is-primary select.is-focused,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select.is-focused,html.theme--documenter-dark .select.is-primary select:active,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select:active,html.theme--documenter-dark .select.is-primary select.is-active,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select.is-active{box-shadow:0 0 0 0.125em rgba(55,90,127,0.25)}html.theme--documenter-dark .select.is-link:not(:hover)::after{border-color:#1abc9c}html.theme--documenter-dark .select.is-link select{border-color:#1abc9c}html.theme--documenter-dark .select.is-link select:hover,html.theme--documenter-dark .select.is-link select.is-hovered{border-color:#17a689}html.theme--documenter-dark .select.is-link select:focus,html.theme--documenter-dark .select.is-link select.is-focused,html.theme--documenter-dark .select.is-link select:active,html.theme--documenter-dark .select.is-link select.is-active{box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .select.is-info:not(:hover)::after{border-color:#3c5dcd}html.theme--documenter-dark .select.is-info select{border-color:#3c5dcd}html.theme--documenter-dark .select.is-info select:hover,html.theme--documenter-dark .select.is-info select.is-hovered{border-color:#3151bf}html.theme--documenter-dark .select.is-info select:focus,html.theme--documenter-dark .select.is-info select.is-focused,html.theme--documenter-dark .select.is-info select:active,html.theme--documenter-dark .select.is-info select.is-active{box-shadow:0 0 0 0.125em rgba(60,93,205,0.25)}html.theme--documenter-dark .select.is-success:not(:hover)::after{border-color:#259a12}html.theme--documenter-dark .select.is-success select{border-color:#259a12}html.theme--documenter-dark .select.is-success select:hover,html.theme--documenter-dark .select.is-success select.is-hovered{border-color:#20830f}html.theme--documenter-dark .select.is-success select:focus,html.theme--documenter-dark .select.is-success select.is-focused,html.theme--documenter-dark .select.is-success select:active,html.theme--documenter-dark .select.is-success select.is-active{box-shadow:0 0 0 0.125em rgba(37,154,18,0.25)}html.theme--documenter-dark .select.is-warning:not(:hover)::after{border-color:#f4c72f}html.theme--documenter-dark .select.is-warning select{border-color:#f4c72f}html.theme--documenter-dark .select.is-warning select:hover,html.theme--documenter-dark .select.is-warning select.is-hovered{border-color:#f3c017}html.theme--documenter-dark .select.is-warning select:focus,html.theme--documenter-dark .select.is-warning select.is-focused,html.theme--documenter-dark .select.is-warning select:active,html.theme--documenter-dark .select.is-warning select.is-active{box-shadow:0 0 0 0.125em rgba(244,199,47,0.25)}html.theme--documenter-dark .select.is-danger:not(:hover)::after{border-color:#cb3c33}html.theme--documenter-dark .select.is-danger select{border-color:#cb3c33}html.theme--documenter-dark .select.is-danger select:hover,html.theme--documenter-dark .select.is-danger select.is-hovered{border-color:#b7362e}html.theme--documenter-dark .select.is-danger select:focus,html.theme--documenter-dark .select.is-danger select.is-focused,html.theme--documenter-dark .select.is-danger select:active,html.theme--documenter-dark .select.is-danger select.is-active{box-shadow:0 0 0 0.125em rgba(203,60,51,0.25)}html.theme--documenter-dark .select.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.select{border-radius:3px;font-size:.75rem}html.theme--documenter-dark .select.is-medium{font-size:1.25rem}html.theme--documenter-dark .select.is-large{font-size:1.5rem}html.theme--documenter-dark .select.is-disabled::after{border-color:#fff !important;opacity:0.5}html.theme--documenter-dark .select.is-fullwidth{width:100%}html.theme--documenter-dark .select.is-fullwidth select{width:100%}html.theme--documenter-dark .select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:0.625em;transform:none}html.theme--documenter-dark .select.is-loading.is-small:after,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--documenter-dark .select.is-loading.is-medium:after{font-size:1.25rem}html.theme--documenter-dark .select.is-loading.is-large:after{font-size:1.5rem}html.theme--documenter-dark .file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}html.theme--documenter-dark .file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .file.is-white:hover .file-cta,html.theme--documenter-dark .file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .file.is-white:focus .file-cta,html.theme--documenter-dark .file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,255,255,0.25);color:#0a0a0a}html.theme--documenter-dark .file.is-white:active .file-cta,html.theme--documenter-dark .file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-black:hover .file-cta,html.theme--documenter-dark .file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-black:focus .file-cta,html.theme--documenter-dark .file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(10,10,10,0.25);color:#fff}html.theme--documenter-dark .file.is-black:active .file-cta,html.theme--documenter-dark .file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-light .file-cta{background-color:#ecf0f1;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-light:hover .file-cta,html.theme--documenter-dark .file.is-light.is-hovered .file-cta{background-color:#e5eaec;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-light:focus .file-cta,html.theme--documenter-dark .file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(236,240,241,0.25);color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-light:active .file-cta,html.theme--documenter-dark .file.is-light.is-active .file-cta{background-color:#dde4e6;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-dark .file-cta,html.theme--documenter-dark .content kbd.file .file-cta{background-color:#282f2f;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-dark:hover .file-cta,html.theme--documenter-dark .content kbd.file:hover .file-cta,html.theme--documenter-dark .file.is-dark.is-hovered .file-cta,html.theme--documenter-dark .content kbd.file.is-hovered .file-cta{background-color:#232829;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-dark:focus .file-cta,html.theme--documenter-dark .content kbd.file:focus .file-cta,html.theme--documenter-dark .file.is-dark.is-focused .file-cta,html.theme--documenter-dark .content kbd.file.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(40,47,47,0.25);color:#fff}html.theme--documenter-dark .file.is-dark:active .file-cta,html.theme--documenter-dark .content kbd.file:active .file-cta,html.theme--documenter-dark .file.is-dark.is-active .file-cta,html.theme--documenter-dark .content kbd.file.is-active .file-cta{background-color:#1d2122;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-primary .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink .file-cta{background-color:#375a7f;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-primary:hover .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink:hover .file-cta,html.theme--documenter-dark .file.is-primary.is-hovered .file-cta,html.theme--documenter-dark .docstring>section>a.file.is-hovered.docs-sourcelink .file-cta{background-color:#335476;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-primary:focus .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink:focus .file-cta,html.theme--documenter-dark .file.is-primary.is-focused .file-cta,html.theme--documenter-dark .docstring>section>a.file.is-focused.docs-sourcelink .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(55,90,127,0.25);color:#fff}html.theme--documenter-dark .file.is-primary:active .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink:active .file-cta,html.theme--documenter-dark .file.is-primary.is-active .file-cta,html.theme--documenter-dark .docstring>section>a.file.is-active.docs-sourcelink .file-cta{background-color:#2f4d6d;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-link .file-cta{background-color:#1abc9c;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-link:hover .file-cta,html.theme--documenter-dark .file.is-link.is-hovered .file-cta{background-color:#18b193;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-link:focus .file-cta,html.theme--documenter-dark .file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(26,188,156,0.25);color:#fff}html.theme--documenter-dark .file.is-link:active .file-cta,html.theme--documenter-dark .file.is-link.is-active .file-cta{background-color:#17a689;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-info .file-cta{background-color:#3c5dcd;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-info:hover .file-cta,html.theme--documenter-dark .file.is-info.is-hovered .file-cta{background-color:#3355c9;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-info:focus .file-cta,html.theme--documenter-dark .file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(60,93,205,0.25);color:#fff}html.theme--documenter-dark .file.is-info:active .file-cta,html.theme--documenter-dark .file.is-info.is-active .file-cta{background-color:#3151bf;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-success .file-cta{background-color:#259a12;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-success:hover .file-cta,html.theme--documenter-dark .file.is-success.is-hovered .file-cta{background-color:#228f11;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-success:focus .file-cta,html.theme--documenter-dark .file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(37,154,18,0.25);color:#fff}html.theme--documenter-dark .file.is-success:active .file-cta,html.theme--documenter-dark .file.is-success.is-active .file-cta{background-color:#20830f;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-warning .file-cta{background-color:#f4c72f;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-warning:hover .file-cta,html.theme--documenter-dark .file.is-warning.is-hovered .file-cta{background-color:#f3c423;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-warning:focus .file-cta,html.theme--documenter-dark .file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(244,199,47,0.25);color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-warning:active .file-cta,html.theme--documenter-dark .file.is-warning.is-active .file-cta{background-color:#f3c017;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-danger .file-cta{background-color:#cb3c33;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-danger:hover .file-cta,html.theme--documenter-dark .file.is-danger.is-hovered .file-cta{background-color:#c13930;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-danger:focus .file-cta,html.theme--documenter-dark .file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(203,60,51,0.25);color:#fff}html.theme--documenter-dark .file.is-danger:active .file-cta,html.theme--documenter-dark .file.is-danger.is-active .file-cta{background-color:#b7362e;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.file{font-size:.75rem}html.theme--documenter-dark .file.is-normal{font-size:1rem}html.theme--documenter-dark .file.is-medium{font-size:1.25rem}html.theme--documenter-dark .file.is-medium .file-icon .fa{font-size:21px}html.theme--documenter-dark .file.is-large{font-size:1.5rem}html.theme--documenter-dark .file.is-large .file-icon .fa{font-size:28px}html.theme--documenter-dark .file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--documenter-dark .file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--documenter-dark .file.has-name.is-empty .file-cta{border-radius:.4em}html.theme--documenter-dark .file.has-name.is-empty .file-name{display:none}html.theme--documenter-dark .file.is-boxed .file-label{flex-direction:column}html.theme--documenter-dark .file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}html.theme--documenter-dark .file.is-boxed .file-name{border-width:0 1px 1px}html.theme--documenter-dark .file.is-boxed .file-icon{height:1.5em;width:1.5em}html.theme--documenter-dark .file.is-boxed .file-icon .fa{font-size:21px}html.theme--documenter-dark .file.is-boxed.is-small .file-icon .fa,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-boxed .file-icon .fa{font-size:14px}html.theme--documenter-dark .file.is-boxed.is-medium .file-icon .fa{font-size:28px}html.theme--documenter-dark .file.is-boxed.is-large .file-icon .fa{font-size:35px}html.theme--documenter-dark .file.is-boxed.has-name .file-cta{border-radius:.4em .4em 0 0}html.theme--documenter-dark .file.is-boxed.has-name .file-name{border-radius:0 0 .4em .4em;border-width:0 1px 1px}html.theme--documenter-dark .file.is-centered{justify-content:center}html.theme--documenter-dark .file.is-fullwidth .file-label{width:100%}html.theme--documenter-dark .file.is-fullwidth .file-name{flex-grow:1;max-width:none}html.theme--documenter-dark .file.is-right{justify-content:flex-end}html.theme--documenter-dark .file.is-right .file-cta{border-radius:0 .4em .4em 0}html.theme--documenter-dark .file.is-right .file-name{border-radius:.4em 0 0 .4em;border-width:1px 0 1px 1px;order:-1}html.theme--documenter-dark .file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}html.theme--documenter-dark .file-label:hover .file-cta{background-color:#232829;color:#f2f2f2}html.theme--documenter-dark .file-label:hover .file-name{border-color:#596668}html.theme--documenter-dark .file-label:active .file-cta{background-color:#1d2122;color:#f2f2f2}html.theme--documenter-dark .file-label:active .file-name{border-color:#535f61}html.theme--documenter-dark .file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}html.theme--documenter-dark .file-cta,html.theme--documenter-dark .file-name{border-color:#5e6d6f;border-radius:.4em;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}html.theme--documenter-dark .file-cta{background-color:#282f2f;color:#fff}html.theme--documenter-dark .file-name{border-color:#5e6d6f;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}html.theme--documenter-dark .file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}html.theme--documenter-dark .file-icon .fa{font-size:14px}html.theme--documenter-dark .label{color:#f2f2f2;display:block;font-size:1rem;font-weight:700}html.theme--documenter-dark .label:not(:last-child){margin-bottom:0.5em}html.theme--documenter-dark .label.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.label{font-size:.75rem}html.theme--documenter-dark .label.is-medium{font-size:1.25rem}html.theme--documenter-dark .label.is-large{font-size:1.5rem}html.theme--documenter-dark .help{display:block;font-size:.75rem;margin-top:0.25rem}html.theme--documenter-dark .help.is-white{color:#fff}html.theme--documenter-dark .help.is-black{color:#0a0a0a}html.theme--documenter-dark .help.is-light{color:#ecf0f1}html.theme--documenter-dark .help.is-dark,html.theme--documenter-dark .content kbd.help{color:#282f2f}html.theme--documenter-dark .help.is-primary,html.theme--documenter-dark .docstring>section>a.help.docs-sourcelink{color:#375a7f}html.theme--documenter-dark .help.is-link{color:#1abc9c}html.theme--documenter-dark .help.is-info{color:#3c5dcd}html.theme--documenter-dark .help.is-success{color:#259a12}html.theme--documenter-dark .help.is-warning{color:#f4c72f}html.theme--documenter-dark .help.is-danger{color:#cb3c33}html.theme--documenter-dark .field:not(:last-child){margin-bottom:0.75rem}html.theme--documenter-dark .field.has-addons{display:flex;justify-content:flex-start}html.theme--documenter-dark .field.has-addons .control:not(:last-child){margin-right:-1px}html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .button,html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .input,html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search>input,html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .button,html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .input,html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search>input,html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .button,html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .input,html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search>input,html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .button.is-hovered:not([disabled]),html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .input.is-hovered:not([disabled]),html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-hovered:not([disabled]),html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-hovered:not([disabled]),html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .select select.is-hovered:not([disabled]){z-index:2}html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control .button.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control .button.is-active:not([disabled]),html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control .input.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]),html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control .input.is-active:not([disabled]),html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]),html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]),html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control .select select.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control .select select.is-active:not([disabled]){z-index:3}html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control .button.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control .button.is-active:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus:hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control .input.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]):hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active:hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control .input.is-active:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]):hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control .select select.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control .select select.is-active:not([disabled]):hover{z-index:4}html.theme--documenter-dark .field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .field.has-addons.has-addons-centered{justify-content:center}html.theme--documenter-dark .field.has-addons.has-addons-right{justify-content:flex-end}html.theme--documenter-dark .field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}html.theme--documenter-dark .field.is-grouped{display:flex;justify-content:flex-start}html.theme--documenter-dark .field.is-grouped>.control{flex-shrink:0}html.theme--documenter-dark .field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--documenter-dark .field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .field.is-grouped.is-grouped-centered{justify-content:center}html.theme--documenter-dark .field.is-grouped.is-grouped-right{justify-content:flex-end}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline{flex-wrap:wrap}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline>.control:last-child,html.theme--documenter-dark .field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:0.75rem}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--documenter-dark .field.is-horizontal{display:flex}}html.theme--documenter-dark .field-label .label{font-size:inherit}@media screen and (max-width: 768px){html.theme--documenter-dark .field-label{margin-bottom:0.5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}html.theme--documenter-dark .field-label.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.field-label{font-size:.75rem;padding-top:0.375em}html.theme--documenter-dark .field-label.is-normal{padding-top:0.375em}html.theme--documenter-dark .field-label.is-medium{font-size:1.25rem;padding-top:0.375em}html.theme--documenter-dark .field-label.is-large{font-size:1.5rem;padding-top:0.375em}}html.theme--documenter-dark .field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--documenter-dark .field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}html.theme--documenter-dark .field-body .field{margin-bottom:0}html.theme--documenter-dark .field-body>.field{flex-shrink:1}html.theme--documenter-dark .field-body>.field:not(.is-narrow){flex-grow:1}html.theme--documenter-dark .field-body>.field:not(:last-child){margin-right:.75rem}}html.theme--documenter-dark .control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}html.theme--documenter-dark .control.has-icons-left .input:focus~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input:focus~.icon,html.theme--documenter-dark .control.has-icons-left .select:focus~.icon,html.theme--documenter-dark .control.has-icons-right .input:focus~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input:focus~.icon,html.theme--documenter-dark .control.has-icons-right .select:focus~.icon{color:#282f2f}html.theme--documenter-dark .control.has-icons-left .input.is-small~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input~.icon,html.theme--documenter-dark .control.has-icons-left .select.is-small~.icon,html.theme--documenter-dark .control.has-icons-right .input.is-small~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input~.icon,html.theme--documenter-dark .control.has-icons-right .select.is-small~.icon{font-size:.75rem}html.theme--documenter-dark .control.has-icons-left .input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-left .select.is-medium~.icon,html.theme--documenter-dark .control.has-icons-right .input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}html.theme--documenter-dark .control.has-icons-left .input.is-large~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-large~.icon,html.theme--documenter-dark .control.has-icons-left .select.is-large~.icon,html.theme--documenter-dark .control.has-icons-right .input.is-large~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-large~.icon,html.theme--documenter-dark .control.has-icons-right .select.is-large~.icon{font-size:1.5rem}html.theme--documenter-dark .control.has-icons-left .icon,html.theme--documenter-dark .control.has-icons-right .icon{color:#5e6d6f;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}html.theme--documenter-dark .control.has-icons-left .input,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input,html.theme--documenter-dark .control.has-icons-left .select select{padding-left:2.5em}html.theme--documenter-dark .control.has-icons-left .icon.is-left{left:0}html.theme--documenter-dark .control.has-icons-right .input,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input,html.theme--documenter-dark .control.has-icons-right .select select{padding-right:2.5em}html.theme--documenter-dark .control.has-icons-right .icon.is-right{right:0}html.theme--documenter-dark .control.is-loading::after{position:absolute !important;right:.625em;top:0.625em;z-index:4}html.theme--documenter-dark .control.is-loading.is-small:after,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--documenter-dark .control.is-loading.is-medium:after{font-size:1.25rem}html.theme--documenter-dark .control.is-loading.is-large:after{font-size:1.5rem}html.theme--documenter-dark .breadcrumb{font-size:1rem;white-space:nowrap}html.theme--documenter-dark .breadcrumb a{align-items:center;color:#1abc9c;display:flex;justify-content:center;padding:0 .75em}html.theme--documenter-dark .breadcrumb a:hover{color:#1dd2af}html.theme--documenter-dark .breadcrumb li{align-items:center;display:flex}html.theme--documenter-dark .breadcrumb li:first-child a{padding-left:0}html.theme--documenter-dark .breadcrumb li.is-active a{color:#f2f2f2;cursor:default;pointer-events:none}html.theme--documenter-dark .breadcrumb li+li::before{color:#8c9b9d;content:"\0002f"}html.theme--documenter-dark .breadcrumb ul,html.theme--documenter-dark .breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--documenter-dark .breadcrumb .icon:first-child{margin-right:.5em}html.theme--documenter-dark .breadcrumb .icon:last-child{margin-left:.5em}html.theme--documenter-dark .breadcrumb.is-centered ol,html.theme--documenter-dark .breadcrumb.is-centered ul{justify-content:center}html.theme--documenter-dark .breadcrumb.is-right ol,html.theme--documenter-dark .breadcrumb.is-right ul{justify-content:flex-end}html.theme--documenter-dark .breadcrumb.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.breadcrumb{font-size:.75rem}html.theme--documenter-dark .breadcrumb.is-medium{font-size:1.25rem}html.theme--documenter-dark .breadcrumb.is-large{font-size:1.5rem}html.theme--documenter-dark .breadcrumb.has-arrow-separator li+li::before{content:"\02192"}html.theme--documenter-dark .breadcrumb.has-bullet-separator li+li::before{content:"\02022"}html.theme--documenter-dark .breadcrumb.has-dot-separator li+li::before{content:"\000b7"}html.theme--documenter-dark .breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}html.theme--documenter-dark .card{background-color:#fff;border-radius:.25rem;box-shadow:#171717;color:#fff;max-width:100%;position:relative}html.theme--documenter-dark .card-footer:first-child,html.theme--documenter-dark .card-content:first-child,html.theme--documenter-dark .card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--documenter-dark .card-footer:last-child,html.theme--documenter-dark .card-content:last-child,html.theme--documenter-dark .card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--documenter-dark .card-header{background-color:rgba(0,0,0,0);align-items:stretch;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);display:flex}html.theme--documenter-dark .card-header-title{align-items:center;color:#f2f2f2;display:flex;flex-grow:1;font-weight:700;padding:0.75rem 1rem}html.theme--documenter-dark .card-header-title.is-centered{justify-content:center}html.theme--documenter-dark .card-header-icon{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0;align-items:center;cursor:pointer;display:flex;justify-content:center;padding:0.75rem 1rem}html.theme--documenter-dark .card-image{display:block;position:relative}html.theme--documenter-dark .card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--documenter-dark .card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--documenter-dark .card-content{background-color:rgba(0,0,0,0);padding:1.5rem}html.theme--documenter-dark .card-footer{background-color:rgba(0,0,0,0);border-top:1px solid #ededed;align-items:stretch;display:flex}html.theme--documenter-dark .card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}html.theme--documenter-dark .card-footer-item:not(:last-child){border-right:1px solid #ededed}html.theme--documenter-dark .card .media:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .dropdown{display:inline-flex;position:relative;vertical-align:top}html.theme--documenter-dark .dropdown.is-active .dropdown-menu,html.theme--documenter-dark .dropdown.is-hoverable:hover .dropdown-menu{display:block}html.theme--documenter-dark .dropdown.is-right .dropdown-menu{left:auto;right:0}html.theme--documenter-dark .dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}html.theme--documenter-dark .dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}html.theme--documenter-dark .dropdown-content{background-color:#282f2f;border-radius:.4em;box-shadow:#171717;padding-bottom:.5rem;padding-top:.5rem}html.theme--documenter-dark .dropdown-item{color:#fff;display:block;font-size:0.875rem;line-height:1.5;padding:0.375rem 1rem;position:relative}html.theme--documenter-dark a.dropdown-item,html.theme--documenter-dark button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}html.theme--documenter-dark a.dropdown-item:hover,html.theme--documenter-dark button.dropdown-item:hover{background-color:#282f2f;color:#0a0a0a}html.theme--documenter-dark a.dropdown-item.is-active,html.theme--documenter-dark button.dropdown-item.is-active{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:0.5rem 0}html.theme--documenter-dark .level{align-items:center;justify-content:space-between}html.theme--documenter-dark .level code{border-radius:.4em}html.theme--documenter-dark .level img{display:inline-block;vertical-align:top}html.theme--documenter-dark .level.is-mobile{display:flex}html.theme--documenter-dark .level.is-mobile .level-left,html.theme--documenter-dark .level.is-mobile .level-right{display:flex}html.theme--documenter-dark .level.is-mobile .level-left+.level-right{margin-top:0}html.theme--documenter-dark .level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--documenter-dark .level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level{display:flex}html.theme--documenter-dark .level>.level-item:not(.is-narrow){flex-grow:1}}html.theme--documenter-dark .level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}html.theme--documenter-dark .level-item .title,html.theme--documenter-dark .level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){html.theme--documenter-dark .level-item:not(:last-child){margin-bottom:.75rem}}html.theme--documenter-dark .level-left,html.theme--documenter-dark .level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--documenter-dark .level-left .level-item.is-flexible,html.theme--documenter-dark .level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level-left .level-item:not(:last-child),html.theme--documenter-dark .level-right .level-item:not(:last-child){margin-right:.75rem}}html.theme--documenter-dark .level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){html.theme--documenter-dark .level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level-left{display:flex}}html.theme--documenter-dark .level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level-right{display:flex}}html.theme--documenter-dark .media{align-items:flex-start;display:flex;text-align:inherit}html.theme--documenter-dark .media .content:not(:last-child){margin-bottom:.75rem}html.theme--documenter-dark .media .media{border-top:1px solid rgba(94,109,111,0.5);display:flex;padding-top:.75rem}html.theme--documenter-dark .media .media .content:not(:last-child),html.theme--documenter-dark .media .media .control:not(:last-child){margin-bottom:.5rem}html.theme--documenter-dark .media .media .media{padding-top:.5rem}html.theme--documenter-dark .media .media .media+.media{margin-top:.5rem}html.theme--documenter-dark .media+.media{border-top:1px solid rgba(94,109,111,0.5);margin-top:1rem;padding-top:1rem}html.theme--documenter-dark .media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}html.theme--documenter-dark .media-left,html.theme--documenter-dark .media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--documenter-dark .media-left{margin-right:1rem}html.theme--documenter-dark .media-right{margin-left:1rem}html.theme--documenter-dark .media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width: 768px){html.theme--documenter-dark .media-content{overflow-x:auto}}html.theme--documenter-dark .menu{font-size:1rem}html.theme--documenter-dark .menu.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.menu{font-size:.75rem}html.theme--documenter-dark .menu.is-medium{font-size:1.25rem}html.theme--documenter-dark .menu.is-large{font-size:1.5rem}html.theme--documenter-dark .menu-list{line-height:1.25}html.theme--documenter-dark .menu-list a{border-radius:3px;color:#fff;display:block;padding:0.5em 0.75em}html.theme--documenter-dark .menu-list a:hover{background-color:#282f2f;color:#f2f2f2}html.theme--documenter-dark .menu-list a.is-active{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .menu-list li ul{border-left:1px solid #5e6d6f;margin:.75em;padding-left:.75em}html.theme--documenter-dark .menu-label{color:#fff;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}html.theme--documenter-dark .menu-label:not(:first-child){margin-top:1em}html.theme--documenter-dark .menu-label:not(:last-child){margin-bottom:1em}html.theme--documenter-dark .message{background-color:#282f2f;border-radius:.4em;font-size:1rem}html.theme--documenter-dark .message strong{color:currentColor}html.theme--documenter-dark .message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--documenter-dark .message.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.message{font-size:.75rem}html.theme--documenter-dark .message.is-medium{font-size:1.25rem}html.theme--documenter-dark .message.is-large{font-size:1.5rem}html.theme--documenter-dark .message.is-white{background-color:#fff}html.theme--documenter-dark .message.is-white .message-header{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .message.is-white .message-body{border-color:#fff}html.theme--documenter-dark .message.is-black{background-color:#fafafa}html.theme--documenter-dark .message.is-black .message-header{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .message.is-black .message-body{border-color:#0a0a0a}html.theme--documenter-dark .message.is-light{background-color:#f9fafb}html.theme--documenter-dark .message.is-light .message-header{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .message.is-light .message-body{border-color:#ecf0f1}html.theme--documenter-dark .message.is-dark,html.theme--documenter-dark .content kbd.message{background-color:#f9fafa}html.theme--documenter-dark .message.is-dark .message-header,html.theme--documenter-dark .content kbd.message .message-header{background-color:#282f2f;color:#fff}html.theme--documenter-dark .message.is-dark .message-body,html.theme--documenter-dark .content kbd.message .message-body{border-color:#282f2f}html.theme--documenter-dark .message.is-primary,html.theme--documenter-dark .docstring>section>a.message.docs-sourcelink{background-color:#f1f5f9}html.theme--documenter-dark .message.is-primary .message-header,html.theme--documenter-dark .docstring>section>a.message.docs-sourcelink .message-header{background-color:#375a7f;color:#fff}html.theme--documenter-dark .message.is-primary .message-body,html.theme--documenter-dark .docstring>section>a.message.docs-sourcelink .message-body{border-color:#375a7f;color:#4d7eb2}html.theme--documenter-dark .message.is-link{background-color:#edfdf9}html.theme--documenter-dark .message.is-link .message-header{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .message.is-link .message-body{border-color:#1abc9c;color:#15987e}html.theme--documenter-dark .message.is-info{background-color:#eff2fb}html.theme--documenter-dark .message.is-info .message-header{background-color:#3c5dcd;color:#fff}html.theme--documenter-dark .message.is-info .message-body{border-color:#3c5dcd;color:#3253c3}html.theme--documenter-dark .message.is-success{background-color:#effded}html.theme--documenter-dark .message.is-success .message-header{background-color:#259a12;color:#fff}html.theme--documenter-dark .message.is-success .message-body{border-color:#259a12;color:#2ec016}html.theme--documenter-dark .message.is-warning{background-color:#fefaec}html.theme--documenter-dark .message.is-warning .message-header{background-color:#f4c72f;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .message.is-warning .message-body{border-color:#f4c72f;color:#8c6e07}html.theme--documenter-dark .message.is-danger{background-color:#fbefef}html.theme--documenter-dark .message.is-danger .message-header{background-color:#cb3c33;color:#fff}html.theme--documenter-dark .message.is-danger .message-body{border-color:#cb3c33;color:#c03930}html.theme--documenter-dark .message-header{align-items:center;background-color:#fff;border-radius:.4em .4em 0 0;color:rgba(0,0,0,0.7);display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.75em 1em;position:relative}html.theme--documenter-dark .message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}html.theme--documenter-dark .message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}html.theme--documenter-dark .message-body{border-color:#5e6d6f;border-radius:.4em;border-style:solid;border-width:0 0 0 4px;color:#fff;padding:1.25em 1.5em}html.theme--documenter-dark .message-body code,html.theme--documenter-dark .message-body pre{background-color:#fff}html.theme--documenter-dark .message-body pre code{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}html.theme--documenter-dark .modal.is-active{display:flex}html.theme--documenter-dark .modal-background{background-color:rgba(10,10,10,0.86)}html.theme--documenter-dark .modal-content,html.theme--documenter-dark .modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px){html.theme--documenter-dark .modal-content,html.theme--documenter-dark .modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}html.theme--documenter-dark .modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}html.theme--documenter-dark .modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}html.theme--documenter-dark .modal-card-head,html.theme--documenter-dark .modal-card-foot{align-items:center;background-color:#282f2f;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}html.theme--documenter-dark .modal-card-head{border-bottom:1px solid #5e6d6f;border-top-left-radius:8px;border-top-right-radius:8px}html.theme--documenter-dark .modal-card-title{color:#f2f2f2;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}html.theme--documenter-dark .modal-card-foot{border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid #5e6d6f}html.theme--documenter-dark .modal-card-foot .button:not(:last-child){margin-right:.5em}html.theme--documenter-dark .modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}html.theme--documenter-dark .navbar{background-color:#375a7f;min-height:4rem;position:relative;z-index:30}html.theme--documenter-dark .navbar.is-white{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-white .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-white .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-white .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-white .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-white .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-white .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-white .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-white .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-white .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}html.theme--documenter-dark .navbar.is-black{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-black .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-black .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-black .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-black .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-black .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-black .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-black .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-black .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-black .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}html.theme--documenter-dark .navbar.is-light{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-light .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-light .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#dde4e6;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-light .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-light .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-light .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-light .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-light .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-light .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-light .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link.is-active{background-color:#dde4e6;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#dde4e6;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}}html.theme--documenter-dark .navbar.is-dark,html.theme--documenter-dark .content kbd.navbar{background-color:#282f2f;color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-brand>.navbar-item,html.theme--documenter-dark .content kbd.navbar .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .content kbd.navbar .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-dark .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .content kbd.navbar .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-dark .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link:focus,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link:hover,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link.is-active{background-color:#1d2122;color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link::after,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-burger,html.theme--documenter-dark .content kbd.navbar .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-dark .navbar-start>.navbar-item,html.theme--documenter-dark .content kbd.navbar .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-dark .navbar-end>.navbar-item,html.theme--documenter-dark .content kbd.navbar .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .content kbd.navbar .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-dark .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .content kbd.navbar .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-dark .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link:focus,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link:hover,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .content kbd.navbar .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-dark .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .content kbd.navbar .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-dark .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link:focus,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link:hover,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link.is-active{background-color:#1d2122;color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link::after,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link::after,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link{background-color:#1d2122;color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-dropdown a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-dropdown a.navbar-item.is-active{background-color:#282f2f;color:#fff}}html.theme--documenter-dark .navbar.is-primary,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink{background-color:#375a7f;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-brand>.navbar-item,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-primary .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-primary .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link::after,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-burger,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-primary .navbar-start>.navbar-item,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-primary .navbar-end>.navbar-item,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-primary .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-primary .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-primary .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-primary .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link::after,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link::after,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#375a7f;color:#fff}}html.theme--documenter-dark .navbar.is-link{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-link .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-link .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#17a689;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-link .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-link .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-link .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-link .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-link .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-link .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-link .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link.is-active{background-color:#17a689;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#17a689;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#1abc9c;color:#fff}}html.theme--documenter-dark .navbar.is-info{background-color:#3c5dcd;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-info .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-info .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#3151bf;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-info .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-info .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-info .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-info .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-info .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-info .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-info .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link.is-active{background-color:#3151bf;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#3151bf;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#3c5dcd;color:#fff}}html.theme--documenter-dark .navbar.is-success{background-color:#259a12;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-success .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-success .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#20830f;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-success .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-success .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-success .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-success .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-success .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-success .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-success .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link.is-active{background-color:#20830f;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#20830f;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#259a12;color:#fff}}html.theme--documenter-dark .navbar.is-warning{background-color:#f4c72f;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-warning .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-warning .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-warning .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-warning .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#f3c017;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-warning .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-warning .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-warning .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-warning .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-warning .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-warning .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-warning .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-warning .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#f3c017;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f3c017;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#f4c72f;color:rgba(0,0,0,0.7)}}html.theme--documenter-dark .navbar.is-danger{background-color:#cb3c33;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-danger .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-danger .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#b7362e;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-danger .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-danger .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-danger .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-danger .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-danger .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-danger .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#b7362e;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#b7362e;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#cb3c33;color:#fff}}html.theme--documenter-dark .navbar>.container{align-items:stretch;display:flex;min-height:4rem;width:100%}html.theme--documenter-dark .navbar.has-shadow{box-shadow:0 2px 0 0 #282f2f}html.theme--documenter-dark .navbar.is-fixed-bottom,html.theme--documenter-dark .navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}html.theme--documenter-dark .navbar.is-fixed-bottom{bottom:0}html.theme--documenter-dark .navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #282f2f}html.theme--documenter-dark .navbar.is-fixed-top{top:0}html.theme--documenter-dark html.has-navbar-fixed-top,html.theme--documenter-dark body.has-navbar-fixed-top{padding-top:4rem}html.theme--documenter-dark html.has-navbar-fixed-bottom,html.theme--documenter-dark body.has-navbar-fixed-bottom{padding-bottom:4rem}html.theme--documenter-dark .navbar-brand,html.theme--documenter-dark .navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:4rem}html.theme--documenter-dark .navbar-brand a.navbar-item:focus,html.theme--documenter-dark .navbar-brand a.navbar-item:hover{background-color:transparent}html.theme--documenter-dark .navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}html.theme--documenter-dark .navbar-burger{color:#fff;-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:block;height:4rem;position:relative;width:4rem;margin-left:auto}html.theme--documenter-dark .navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color, opacity, transform;transition-timing-function:ease-out;width:16px}html.theme--documenter-dark .navbar-burger span:nth-child(1){top:calc(50% - 6px)}html.theme--documenter-dark .navbar-burger span:nth-child(2){top:calc(50% - 1px)}html.theme--documenter-dark .navbar-burger span:nth-child(3){top:calc(50% + 4px)}html.theme--documenter-dark .navbar-burger:hover{background-color:rgba(0,0,0,0.05)}html.theme--documenter-dark .navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}html.theme--documenter-dark .navbar-burger.is-active span:nth-child(2){opacity:0}html.theme--documenter-dark .navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}html.theme--documenter-dark .navbar-menu{display:none}html.theme--documenter-dark .navbar-item,html.theme--documenter-dark .navbar-link{color:#fff;display:block;line-height:1.5;padding:0.5rem 0.75rem;position:relative}html.theme--documenter-dark .navbar-item .icon:only-child,html.theme--documenter-dark .navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}html.theme--documenter-dark a.navbar-item,html.theme--documenter-dark .navbar-link{cursor:pointer}html.theme--documenter-dark a.navbar-item:focus,html.theme--documenter-dark a.navbar-item:focus-within,html.theme--documenter-dark a.navbar-item:hover,html.theme--documenter-dark a.navbar-item.is-active,html.theme--documenter-dark .navbar-link:focus,html.theme--documenter-dark .navbar-link:focus-within,html.theme--documenter-dark .navbar-link:hover,html.theme--documenter-dark .navbar-link.is-active{background-color:rgba(0,0,0,0);color:#1abc9c}html.theme--documenter-dark .navbar-item{flex-grow:0;flex-shrink:0}html.theme--documenter-dark .navbar-item img{max-height:1.75rem}html.theme--documenter-dark .navbar-item.has-dropdown{padding:0}html.theme--documenter-dark .navbar-item.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .navbar-item.is-tab{border-bottom:1px solid transparent;min-height:4rem;padding-bottom:calc(0.5rem - 1px)}html.theme--documenter-dark .navbar-item.is-tab:focus,html.theme--documenter-dark .navbar-item.is-tab:hover{background-color:rgba(0,0,0,0);border-bottom-color:#1abc9c}html.theme--documenter-dark .navbar-item.is-tab.is-active{background-color:rgba(0,0,0,0);border-bottom-color:#1abc9c;border-bottom-style:solid;border-bottom-width:3px;color:#1abc9c;padding-bottom:calc(0.5rem - 3px)}html.theme--documenter-dark .navbar-content{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .navbar-link:not(.is-arrowless){padding-right:2.5em}html.theme--documenter-dark .navbar-link:not(.is-arrowless)::after{border-color:#fff;margin-top:-0.375em;right:1.125em}html.theme--documenter-dark .navbar-dropdown{font-size:0.875rem;padding-bottom:0.5rem;padding-top:0.5rem}html.theme--documenter-dark .navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}html.theme--documenter-dark .navbar-divider{background-color:rgba(0,0,0,0.2);border:none;display:none;height:2px;margin:0.5rem 0}@media screen and (max-width: 1055px){html.theme--documenter-dark .navbar>.container{display:block}html.theme--documenter-dark .navbar-brand .navbar-item,html.theme--documenter-dark .navbar-tabs .navbar-item{align-items:center;display:flex}html.theme--documenter-dark .navbar-link::after{display:none}html.theme--documenter-dark .navbar-menu{background-color:#375a7f;box-shadow:0 8px 16px rgba(10,10,10,0.1);padding:0.5rem 0}html.theme--documenter-dark .navbar-menu.is-active{display:block}html.theme--documenter-dark .navbar.is-fixed-bottom-touch,html.theme--documenter-dark .navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}html.theme--documenter-dark .navbar.is-fixed-bottom-touch{bottom:0}html.theme--documenter-dark .navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--documenter-dark .navbar.is-fixed-top-touch{top:0}html.theme--documenter-dark .navbar.is-fixed-top .navbar-menu,html.theme--documenter-dark .navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 4rem);overflow:auto}html.theme--documenter-dark html.has-navbar-fixed-top-touch,html.theme--documenter-dark body.has-navbar-fixed-top-touch{padding-top:4rem}html.theme--documenter-dark html.has-navbar-fixed-bottom-touch,html.theme--documenter-dark body.has-navbar-fixed-bottom-touch{padding-bottom:4rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar,html.theme--documenter-dark .navbar-menu,html.theme--documenter-dark .navbar-start,html.theme--documenter-dark .navbar-end{align-items:stretch;display:flex}html.theme--documenter-dark .navbar{min-height:4rem}html.theme--documenter-dark .navbar.is-spaced{padding:1rem 2rem}html.theme--documenter-dark .navbar.is-spaced .navbar-start,html.theme--documenter-dark .navbar.is-spaced .navbar-end{align-items:center}html.theme--documenter-dark .navbar.is-spaced a.navbar-item,html.theme--documenter-dark .navbar.is-spaced .navbar-link{border-radius:.4em}html.theme--documenter-dark .navbar.is-transparent a.navbar-item:focus,html.theme--documenter-dark .navbar.is-transparent a.navbar-item:hover,html.theme--documenter-dark .navbar.is-transparent a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-transparent .navbar-link:focus,html.theme--documenter-dark .navbar.is-transparent .navbar-link:hover,html.theme--documenter-dark .navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item:focus,html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#dbdee0}html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#1abc9c}html.theme--documenter-dark .navbar-burger{display:none}html.theme--documenter-dark .navbar-item,html.theme--documenter-dark .navbar-link{align-items:center;display:flex}html.theme--documenter-dark .navbar-item.has-dropdown{align-items:stretch}html.theme--documenter-dark .navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}html.theme--documenter-dark .navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:1px solid rgba(0,0,0,0.2);border-radius:8px 8px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,0.1);top:auto}html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}html.theme--documenter-dark .navbar-menu{flex-grow:1;flex-shrink:0}html.theme--documenter-dark .navbar-start{justify-content:flex-start;margin-right:auto}html.theme--documenter-dark .navbar-end{justify-content:flex-end;margin-left:auto}html.theme--documenter-dark .navbar-dropdown{background-color:#375a7f;border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid rgba(0,0,0,0.2);box-shadow:0 8px 8px rgba(10,10,10,0.1);display:none;font-size:0.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}html.theme--documenter-dark .navbar-dropdown .navbar-item{padding:0.375rem 1rem;white-space:nowrap}html.theme--documenter-dark .navbar-dropdown a.navbar-item{padding-right:3rem}html.theme--documenter-dark .navbar-dropdown a.navbar-item:focus,html.theme--documenter-dark .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#dbdee0}html.theme--documenter-dark .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#1abc9c}.navbar.is-spaced html.theme--documenter-dark .navbar-dropdown,html.theme--documenter-dark .navbar-dropdown.is-boxed{border-radius:8px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,0.1), 0 0 0 1px rgba(10,10,10,0.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity, transform}html.theme--documenter-dark .navbar-dropdown.is-right{left:auto;right:0}html.theme--documenter-dark .navbar-divider{display:block}html.theme--documenter-dark .navbar>.container .navbar-brand,html.theme--documenter-dark .container>.navbar .navbar-brand{margin-left:-.75rem}html.theme--documenter-dark .navbar>.container .navbar-menu,html.theme--documenter-dark .container>.navbar .navbar-menu{margin-right:-.75rem}html.theme--documenter-dark .navbar.is-fixed-bottom-desktop,html.theme--documenter-dark .navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}html.theme--documenter-dark .navbar.is-fixed-bottom-desktop{bottom:0}html.theme--documenter-dark .navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--documenter-dark .navbar.is-fixed-top-desktop{top:0}html.theme--documenter-dark html.has-navbar-fixed-top-desktop,html.theme--documenter-dark body.has-navbar-fixed-top-desktop{padding-top:4rem}html.theme--documenter-dark html.has-navbar-fixed-bottom-desktop,html.theme--documenter-dark body.has-navbar-fixed-bottom-desktop{padding-bottom:4rem}html.theme--documenter-dark html.has-spaced-navbar-fixed-top,html.theme--documenter-dark body.has-spaced-navbar-fixed-top{padding-top:6rem}html.theme--documenter-dark html.has-spaced-navbar-fixed-bottom,html.theme--documenter-dark body.has-spaced-navbar-fixed-bottom{padding-bottom:6rem}html.theme--documenter-dark a.navbar-item.is-active,html.theme--documenter-dark .navbar-link.is-active{color:#1abc9c}html.theme--documenter-dark a.navbar-item.is-active:not(:focus):not(:hover),html.theme--documenter-dark .navbar-link.is-active:not(:focus):not(:hover){background-color:rgba(0,0,0,0)}html.theme--documenter-dark .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar-item.has-dropdown.is-active .navbar-link{background-color:rgba(0,0,0,0)}}html.theme--documenter-dark .hero.is-fullheight-with-navbar{min-height:calc(100vh - 4rem)}html.theme--documenter-dark .pagination{font-size:1rem;margin:-.25rem}html.theme--documenter-dark .pagination.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination{font-size:.75rem}html.theme--documenter-dark .pagination.is-medium{font-size:1.25rem}html.theme--documenter-dark .pagination.is-large{font-size:1.5rem}html.theme--documenter-dark .pagination.is-rounded .pagination-previous,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination .pagination-previous,html.theme--documenter-dark .pagination.is-rounded .pagination-next,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination .pagination-next{padding-left:1em;padding-right:1em;border-radius:9999px}html.theme--documenter-dark .pagination.is-rounded .pagination-link,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination .pagination-link{border-radius:9999px}html.theme--documenter-dark .pagination,html.theme--documenter-dark .pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link{border-color:#5e6d6f;color:#1abc9c;min-width:2.5em}html.theme--documenter-dark .pagination-previous:hover,html.theme--documenter-dark .pagination-next:hover,html.theme--documenter-dark .pagination-link:hover{border-color:#8c9b9d;color:#1dd2af}html.theme--documenter-dark .pagination-previous:focus,html.theme--documenter-dark .pagination-next:focus,html.theme--documenter-dark .pagination-link:focus{border-color:#8c9b9d}html.theme--documenter-dark .pagination-previous:active,html.theme--documenter-dark .pagination-next:active,html.theme--documenter-dark .pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2)}html.theme--documenter-dark .pagination-previous[disabled],html.theme--documenter-dark .pagination-previous.is-disabled,html.theme--documenter-dark .pagination-next[disabled],html.theme--documenter-dark .pagination-next.is-disabled,html.theme--documenter-dark .pagination-link[disabled],html.theme--documenter-dark .pagination-link.is-disabled{background-color:#5e6d6f;border-color:#5e6d6f;box-shadow:none;color:#fff;opacity:0.5}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next{padding-left:.75em;padding-right:.75em;white-space:nowrap}html.theme--documenter-dark .pagination-link.is-current{background-color:#1abc9c;border-color:#1abc9c;color:#fff}html.theme--documenter-dark .pagination-ellipsis{color:#8c9b9d;pointer-events:none}html.theme--documenter-dark .pagination-list{flex-wrap:wrap}html.theme--documenter-dark .pagination-list li{list-style:none}@media screen and (max-width: 768px){html.theme--documenter-dark .pagination{flex-wrap:wrap}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-ellipsis{margin-bottom:0;margin-top:0}html.theme--documenter-dark .pagination-previous{order:2}html.theme--documenter-dark .pagination-next{order:3}html.theme--documenter-dark .pagination{justify-content:space-between;margin-bottom:0;margin-top:0}html.theme--documenter-dark .pagination.is-centered .pagination-previous{order:1}html.theme--documenter-dark .pagination.is-centered .pagination-list{justify-content:center;order:2}html.theme--documenter-dark .pagination.is-centered .pagination-next{order:3}html.theme--documenter-dark .pagination.is-right .pagination-previous{order:1}html.theme--documenter-dark .pagination.is-right .pagination-next{order:2}html.theme--documenter-dark .pagination.is-right .pagination-list{justify-content:flex-end;order:3}}html.theme--documenter-dark .panel{border-radius:8px;box-shadow:#171717;font-size:1rem}html.theme--documenter-dark .panel:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}html.theme--documenter-dark .panel.is-white .panel-block.is-active .panel-icon{color:#fff}html.theme--documenter-dark .panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}html.theme--documenter-dark .panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}html.theme--documenter-dark .panel.is-light .panel-heading{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .panel.is-light .panel-tabs a.is-active{border-bottom-color:#ecf0f1}html.theme--documenter-dark .panel.is-light .panel-block.is-active .panel-icon{color:#ecf0f1}html.theme--documenter-dark .panel.is-dark .panel-heading,html.theme--documenter-dark .content kbd.panel .panel-heading{background-color:#282f2f;color:#fff}html.theme--documenter-dark .panel.is-dark .panel-tabs a.is-active,html.theme--documenter-dark .content kbd.panel .panel-tabs a.is-active{border-bottom-color:#282f2f}html.theme--documenter-dark .panel.is-dark .panel-block.is-active .panel-icon,html.theme--documenter-dark .content kbd.panel .panel-block.is-active .panel-icon{color:#282f2f}html.theme--documenter-dark .panel.is-primary .panel-heading,html.theme--documenter-dark .docstring>section>a.panel.docs-sourcelink .panel-heading{background-color:#375a7f;color:#fff}html.theme--documenter-dark .panel.is-primary .panel-tabs a.is-active,html.theme--documenter-dark .docstring>section>a.panel.docs-sourcelink .panel-tabs a.is-active{border-bottom-color:#375a7f}html.theme--documenter-dark .panel.is-primary .panel-block.is-active .panel-icon,html.theme--documenter-dark .docstring>section>a.panel.docs-sourcelink .panel-block.is-active .panel-icon{color:#375a7f}html.theme--documenter-dark .panel.is-link .panel-heading{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .panel.is-link .panel-tabs a.is-active{border-bottom-color:#1abc9c}html.theme--documenter-dark .panel.is-link .panel-block.is-active .panel-icon{color:#1abc9c}html.theme--documenter-dark .panel.is-info .panel-heading{background-color:#3c5dcd;color:#fff}html.theme--documenter-dark .panel.is-info .panel-tabs a.is-active{border-bottom-color:#3c5dcd}html.theme--documenter-dark .panel.is-info .panel-block.is-active .panel-icon{color:#3c5dcd}html.theme--documenter-dark .panel.is-success .panel-heading{background-color:#259a12;color:#fff}html.theme--documenter-dark .panel.is-success .panel-tabs a.is-active{border-bottom-color:#259a12}html.theme--documenter-dark .panel.is-success .panel-block.is-active .panel-icon{color:#259a12}html.theme--documenter-dark .panel.is-warning .panel-heading{background-color:#f4c72f;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .panel.is-warning .panel-tabs a.is-active{border-bottom-color:#f4c72f}html.theme--documenter-dark .panel.is-warning .panel-block.is-active .panel-icon{color:#f4c72f}html.theme--documenter-dark .panel.is-danger .panel-heading{background-color:#cb3c33;color:#fff}html.theme--documenter-dark .panel.is-danger .panel-tabs a.is-active{border-bottom-color:#cb3c33}html.theme--documenter-dark .panel.is-danger .panel-block.is-active .panel-icon{color:#cb3c33}html.theme--documenter-dark .panel-tabs:not(:last-child),html.theme--documenter-dark .panel-block:not(:last-child){border-bottom:1px solid #ededed}html.theme--documenter-dark .panel-heading{background-color:#343c3d;border-radius:8px 8px 0 0;color:#f2f2f2;font-size:1.25em;font-weight:700;line-height:1.25;padding:0.75em 1em}html.theme--documenter-dark .panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}html.theme--documenter-dark .panel-tabs a{border-bottom:1px solid #5e6d6f;margin-bottom:-1px;padding:0.5em}html.theme--documenter-dark .panel-tabs a.is-active{border-bottom-color:#343c3d;color:#17a689}html.theme--documenter-dark .panel-list a{color:#fff}html.theme--documenter-dark .panel-list a:hover{color:#1abc9c}html.theme--documenter-dark .panel-block{align-items:center;color:#f2f2f2;display:flex;justify-content:flex-start;padding:0.5em 0.75em}html.theme--documenter-dark .panel-block input[type="checkbox"]{margin-right:.75em}html.theme--documenter-dark .panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}html.theme--documenter-dark .panel-block.is-wrapped{flex-wrap:wrap}html.theme--documenter-dark .panel-block.is-active{border-left-color:#1abc9c;color:#17a689}html.theme--documenter-dark .panel-block.is-active .panel-icon{color:#1abc9c}html.theme--documenter-dark .panel-block:last-child{border-bottom-left-radius:8px;border-bottom-right-radius:8px}html.theme--documenter-dark a.panel-block,html.theme--documenter-dark label.panel-block{cursor:pointer}html.theme--documenter-dark a.panel-block:hover,html.theme--documenter-dark label.panel-block:hover{background-color:#282f2f}html.theme--documenter-dark .panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#fff;margin-right:.75em}html.theme--documenter-dark .panel-icon .fa{font-size:inherit;line-height:inherit}html.theme--documenter-dark .tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}html.theme--documenter-dark .tabs a{align-items:center;border-bottom-color:#5e6d6f;border-bottom-style:solid;border-bottom-width:1px;color:#fff;display:flex;justify-content:center;margin-bottom:-1px;padding:0.5em 1em;vertical-align:top}html.theme--documenter-dark .tabs a:hover{border-bottom-color:#f2f2f2;color:#f2f2f2}html.theme--documenter-dark .tabs li{display:block}html.theme--documenter-dark .tabs li.is-active a{border-bottom-color:#1abc9c;color:#1abc9c}html.theme--documenter-dark .tabs ul{align-items:center;border-bottom-color:#5e6d6f;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}html.theme--documenter-dark .tabs ul.is-left{padding-right:0.75em}html.theme--documenter-dark .tabs ul.is-center{flex:none;justify-content:center;padding-left:0.75em;padding-right:0.75em}html.theme--documenter-dark .tabs ul.is-right{justify-content:flex-end;padding-left:0.75em}html.theme--documenter-dark .tabs .icon:first-child{margin-right:.5em}html.theme--documenter-dark .tabs .icon:last-child{margin-left:.5em}html.theme--documenter-dark .tabs.is-centered ul{justify-content:center}html.theme--documenter-dark .tabs.is-right ul{justify-content:flex-end}html.theme--documenter-dark .tabs.is-boxed a{border:1px solid transparent;border-radius:.4em .4em 0 0}html.theme--documenter-dark .tabs.is-boxed a:hover{background-color:#282f2f;border-bottom-color:#5e6d6f}html.theme--documenter-dark .tabs.is-boxed li.is-active a{background-color:#fff;border-color:#5e6d6f;border-bottom-color:rgba(0,0,0,0) !important}html.theme--documenter-dark .tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}html.theme--documenter-dark .tabs.is-toggle a{border-color:#5e6d6f;border-style:solid;border-width:1px;margin-bottom:0;position:relative}html.theme--documenter-dark .tabs.is-toggle a:hover{background-color:#282f2f;border-color:#8c9b9d;z-index:2}html.theme--documenter-dark .tabs.is-toggle li+li{margin-left:-1px}html.theme--documenter-dark .tabs.is-toggle li:first-child a{border-top-left-radius:.4em;border-bottom-left-radius:.4em}html.theme--documenter-dark .tabs.is-toggle li:last-child a{border-top-right-radius:.4em;border-bottom-right-radius:.4em}html.theme--documenter-dark .tabs.is-toggle li.is-active a{background-color:#1abc9c;border-color:#1abc9c;color:#fff;z-index:1}html.theme--documenter-dark .tabs.is-toggle ul{border-bottom:none}html.theme--documenter-dark .tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:9999px;border-top-left-radius:9999px;padding-left:1.25em}html.theme--documenter-dark .tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:9999px;border-top-right-radius:9999px;padding-right:1.25em}html.theme--documenter-dark .tabs.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.tabs{font-size:.75rem}html.theme--documenter-dark .tabs.is-medium{font-size:1.25rem}html.theme--documenter-dark .tabs.is-large{font-size:1.5rem}html.theme--documenter-dark .column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>html.theme--documenter-dark .column.is-narrow{flex:none;width:unset}.columns.is-mobile>html.theme--documenter-dark .column.is-full{flex:none;width:100%}.columns.is-mobile>html.theme--documenter-dark .column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>html.theme--documenter-dark .column.is-half{flex:none;width:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>html.theme--documenter-dark .column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>html.theme--documenter-dark .column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>html.theme--documenter-dark .column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>html.theme--documenter-dark .column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-half{margin-left:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>html.theme--documenter-dark .column.is-0{flex:none;width:0%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-0{margin-left:0%}.columns.is-mobile>html.theme--documenter-dark .column.is-1{flex:none;width:8.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-1{margin-left:8.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-2{flex:none;width:16.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-2{margin-left:16.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-3{flex:none;width:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-3{margin-left:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-4{flex:none;width:33.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-4{margin-left:33.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-5{flex:none;width:41.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-5{margin-left:41.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-6{flex:none;width:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-6{margin-left:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-7{flex:none;width:58.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-7{margin-left:58.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-8{flex:none;width:66.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-8{margin-left:66.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-9{flex:none;width:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-9{margin-left:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-10{flex:none;width:83.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-10{margin-left:83.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-11{flex:none;width:91.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-11{margin-left:91.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-12{flex:none;width:100%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){html.theme--documenter-dark .column.is-narrow-mobile{flex:none;width:unset}html.theme--documenter-dark .column.is-full-mobile{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-mobile{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-mobile{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-mobile{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-mobile{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-mobile{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-mobile{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-mobile{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-mobile{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-mobile{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-mobile{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-mobile{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-mobile{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-mobile{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-mobile{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-mobile{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-mobile{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-mobile{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-mobile{margin-left:80%}html.theme--documenter-dark .column.is-0-mobile{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-mobile{margin-left:0%}html.theme--documenter-dark .column.is-1-mobile{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1-mobile{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2-mobile{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2-mobile{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3-mobile{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-mobile{margin-left:25%}html.theme--documenter-dark .column.is-4-mobile{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4-mobile{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5-mobile{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5-mobile{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6-mobile{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-mobile{margin-left:50%}html.theme--documenter-dark .column.is-7-mobile{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7-mobile{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8-mobile{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8-mobile{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9-mobile{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-mobile{margin-left:75%}html.theme--documenter-dark .column.is-10-mobile{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10-mobile{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11-mobile{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11-mobile{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12-mobile{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .column.is-narrow,html.theme--documenter-dark .column.is-narrow-tablet{flex:none;width:unset}html.theme--documenter-dark .column.is-full,html.theme--documenter-dark .column.is-full-tablet{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters,html.theme--documenter-dark .column.is-three-quarters-tablet{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds,html.theme--documenter-dark .column.is-two-thirds-tablet{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half,html.theme--documenter-dark .column.is-half-tablet{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third,html.theme--documenter-dark .column.is-one-third-tablet{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter,html.theme--documenter-dark .column.is-one-quarter-tablet{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth,html.theme--documenter-dark .column.is-one-fifth-tablet{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths,html.theme--documenter-dark .column.is-two-fifths-tablet{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths,html.theme--documenter-dark .column.is-three-fifths-tablet{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths,html.theme--documenter-dark .column.is-four-fifths-tablet{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters,html.theme--documenter-dark .column.is-offset-three-quarters-tablet{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds,html.theme--documenter-dark .column.is-offset-two-thirds-tablet{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half,html.theme--documenter-dark .column.is-offset-half-tablet{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third,html.theme--documenter-dark .column.is-offset-one-third-tablet{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter,html.theme--documenter-dark .column.is-offset-one-quarter-tablet{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth,html.theme--documenter-dark .column.is-offset-one-fifth-tablet{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths,html.theme--documenter-dark .column.is-offset-two-fifths-tablet{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths,html.theme--documenter-dark .column.is-offset-three-fifths-tablet{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths,html.theme--documenter-dark .column.is-offset-four-fifths-tablet{margin-left:80%}html.theme--documenter-dark .column.is-0,html.theme--documenter-dark .column.is-0-tablet{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0,html.theme--documenter-dark .column.is-offset-0-tablet{margin-left:0%}html.theme--documenter-dark .column.is-1,html.theme--documenter-dark .column.is-1-tablet{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1,html.theme--documenter-dark .column.is-offset-1-tablet{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2,html.theme--documenter-dark .column.is-2-tablet{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2,html.theme--documenter-dark .column.is-offset-2-tablet{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3,html.theme--documenter-dark .column.is-3-tablet{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3,html.theme--documenter-dark .column.is-offset-3-tablet{margin-left:25%}html.theme--documenter-dark .column.is-4,html.theme--documenter-dark .column.is-4-tablet{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4,html.theme--documenter-dark .column.is-offset-4-tablet{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5,html.theme--documenter-dark .column.is-5-tablet{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5,html.theme--documenter-dark .column.is-offset-5-tablet{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6,html.theme--documenter-dark .column.is-6-tablet{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6,html.theme--documenter-dark .column.is-offset-6-tablet{margin-left:50%}html.theme--documenter-dark .column.is-7,html.theme--documenter-dark .column.is-7-tablet{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7,html.theme--documenter-dark .column.is-offset-7-tablet{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8,html.theme--documenter-dark .column.is-8-tablet{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8,html.theme--documenter-dark .column.is-offset-8-tablet{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9,html.theme--documenter-dark .column.is-9-tablet{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9,html.theme--documenter-dark .column.is-offset-9-tablet{margin-left:75%}html.theme--documenter-dark .column.is-10,html.theme--documenter-dark .column.is-10-tablet{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10,html.theme--documenter-dark .column.is-offset-10-tablet{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11,html.theme--documenter-dark .column.is-11-tablet{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11,html.theme--documenter-dark .column.is-offset-11-tablet{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12,html.theme--documenter-dark .column.is-12-tablet{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12,html.theme--documenter-dark .column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1055px){html.theme--documenter-dark .column.is-narrow-touch{flex:none;width:unset}html.theme--documenter-dark .column.is-full-touch{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-touch{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-touch{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-touch{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-touch{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-touch{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-touch{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-touch{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-touch{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-touch{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-touch{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-touch{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-touch{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-touch{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-touch{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-touch{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-touch{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-touch{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-touch{margin-left:80%}html.theme--documenter-dark .column.is-0-touch{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-touch{margin-left:0%}html.theme--documenter-dark .column.is-1-touch{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1-touch{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2-touch{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2-touch{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3-touch{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-touch{margin-left:25%}html.theme--documenter-dark .column.is-4-touch{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4-touch{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5-touch{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5-touch{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6-touch{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-touch{margin-left:50%}html.theme--documenter-dark .column.is-7-touch{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7-touch{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8-touch{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8-touch{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9-touch{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-touch{margin-left:75%}html.theme--documenter-dark .column.is-10-touch{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10-touch{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11-touch{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11-touch{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12-touch{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1056px){html.theme--documenter-dark .column.is-narrow-desktop{flex:none;width:unset}html.theme--documenter-dark .column.is-full-desktop{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-desktop{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-desktop{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-desktop{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-desktop{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-desktop{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-desktop{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-desktop{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-desktop{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-desktop{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-desktop{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-desktop{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-desktop{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-desktop{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-desktop{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-desktop{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-desktop{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-desktop{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-desktop{margin-left:80%}html.theme--documenter-dark .column.is-0-desktop{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-desktop{margin-left:0%}html.theme--documenter-dark .column.is-1-desktop{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1-desktop{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2-desktop{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2-desktop{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3-desktop{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-desktop{margin-left:25%}html.theme--documenter-dark .column.is-4-desktop{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4-desktop{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5-desktop{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5-desktop{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6-desktop{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-desktop{margin-left:50%}html.theme--documenter-dark .column.is-7-desktop{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7-desktop{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8-desktop{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8-desktop{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9-desktop{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-desktop{margin-left:75%}html.theme--documenter-dark .column.is-10-desktop{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10-desktop{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11-desktop{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11-desktop{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12-desktop{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){html.theme--documenter-dark .column.is-narrow-widescreen{flex:none;width:unset}html.theme--documenter-dark .column.is-full-widescreen{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-widescreen{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-widescreen{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-widescreen{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-widescreen{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-widescreen{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-widescreen{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-widescreen{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-widescreen{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-widescreen{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-widescreen{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-widescreen{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-widescreen{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-widescreen{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-widescreen{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-widescreen{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-widescreen{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-widescreen{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-widescreen{margin-left:80%}html.theme--documenter-dark .column.is-0-widescreen{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-widescreen{margin-left:0%}html.theme--documenter-dark .column.is-1-widescreen{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1-widescreen{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2-widescreen{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2-widescreen{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3-widescreen{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-widescreen{margin-left:25%}html.theme--documenter-dark .column.is-4-widescreen{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4-widescreen{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5-widescreen{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5-widescreen{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6-widescreen{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-widescreen{margin-left:50%}html.theme--documenter-dark .column.is-7-widescreen{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7-widescreen{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8-widescreen{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8-widescreen{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9-widescreen{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-widescreen{margin-left:75%}html.theme--documenter-dark .column.is-10-widescreen{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10-widescreen{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11-widescreen{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11-widescreen{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12-widescreen{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){html.theme--documenter-dark .column.is-narrow-fullhd{flex:none;width:unset}html.theme--documenter-dark .column.is-full-fullhd{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-fullhd{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-fullhd{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-fullhd{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-fullhd{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-fullhd{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-fullhd{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-fullhd{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-fullhd{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-fullhd{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-fullhd{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-fullhd{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-fullhd{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-fullhd{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-fullhd{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-fullhd{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-fullhd{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-fullhd{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-fullhd{margin-left:80%}html.theme--documenter-dark .column.is-0-fullhd{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-fullhd{margin-left:0%}html.theme--documenter-dark .column.is-1-fullhd{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1-fullhd{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2-fullhd{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2-fullhd{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3-fullhd{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-fullhd{margin-left:25%}html.theme--documenter-dark .column.is-4-fullhd{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4-fullhd{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5-fullhd{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5-fullhd{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6-fullhd{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-fullhd{margin-left:50%}html.theme--documenter-dark .column.is-7-fullhd{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7-fullhd{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8-fullhd{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8-fullhd{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9-fullhd{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-fullhd{margin-left:75%}html.theme--documenter-dark .column.is-10-fullhd{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10-fullhd{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11-fullhd{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11-fullhd{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12-fullhd{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-fullhd{margin-left:100%}}html.theme--documenter-dark .columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--documenter-dark .columns:last-child{margin-bottom:-.75rem}html.theme--documenter-dark .columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}html.theme--documenter-dark .columns.is-centered{justify-content:center}html.theme--documenter-dark .columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}html.theme--documenter-dark .columns.is-gapless>.column{margin:0;padding:0 !important}html.theme--documenter-dark .columns.is-gapless:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .columns.is-gapless:last-child{margin-bottom:0}html.theme--documenter-dark .columns.is-mobile{display:flex}html.theme--documenter-dark .columns.is-multiline{flex-wrap:wrap}html.theme--documenter-dark .columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-desktop{display:flex}}html.theme--documenter-dark .columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}html.theme--documenter-dark .columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}html.theme--documenter-dark .columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-0-fullhd{--columnGap: 0rem}}html.theme--documenter-dark .columns.is-variable.is-1{--columnGap: .25rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-1-mobile{--columnGap: .25rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-1-tablet{--columnGap: .25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-1-tablet-only{--columnGap: .25rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-1-touch{--columnGap: .25rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-1-desktop{--columnGap: .25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-1-desktop-only{--columnGap: .25rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-1-widescreen{--columnGap: .25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-1-widescreen-only{--columnGap: .25rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-1-fullhd{--columnGap: .25rem}}html.theme--documenter-dark .columns.is-variable.is-2{--columnGap: .5rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-2-mobile{--columnGap: .5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-2-tablet{--columnGap: .5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-2-tablet-only{--columnGap: .5rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-2-touch{--columnGap: .5rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-2-desktop{--columnGap: .5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-2-desktop-only{--columnGap: .5rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-2-widescreen{--columnGap: .5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-2-widescreen-only{--columnGap: .5rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-2-fullhd{--columnGap: .5rem}}html.theme--documenter-dark .columns.is-variable.is-3{--columnGap: .75rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-3-mobile{--columnGap: .75rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-3-tablet{--columnGap: .75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-3-tablet-only{--columnGap: .75rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-3-touch{--columnGap: .75rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-3-desktop{--columnGap: .75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-3-desktop-only{--columnGap: .75rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-3-widescreen{--columnGap: .75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-3-widescreen-only{--columnGap: .75rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-3-fullhd{--columnGap: .75rem}}html.theme--documenter-dark .columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-4-fullhd{--columnGap: 1rem}}html.theme--documenter-dark .columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}html.theme--documenter-dark .columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}html.theme--documenter-dark .columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}html.theme--documenter-dark .columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-8-fullhd{--columnGap: 2rem}}html.theme--documenter-dark .tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}html.theme--documenter-dark .tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--documenter-dark .tile.is-ancestor:last-child{margin-bottom:-.75rem}html.theme--documenter-dark .tile.is-ancestor:not(:last-child){margin-bottom:.75rem}html.theme--documenter-dark .tile.is-child{margin:0 !important}html.theme--documenter-dark .tile.is-parent{padding:.75rem}html.theme--documenter-dark .tile.is-vertical{flex-direction:column}html.theme--documenter-dark .tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{html.theme--documenter-dark .tile:not(.is-child){display:flex}html.theme--documenter-dark .tile.is-1{flex:none;width:8.33333337%}html.theme--documenter-dark .tile.is-2{flex:none;width:16.66666674%}html.theme--documenter-dark .tile.is-3{flex:none;width:25%}html.theme--documenter-dark .tile.is-4{flex:none;width:33.33333337%}html.theme--documenter-dark .tile.is-5{flex:none;width:41.66666674%}html.theme--documenter-dark .tile.is-6{flex:none;width:50%}html.theme--documenter-dark .tile.is-7{flex:none;width:58.33333337%}html.theme--documenter-dark .tile.is-8{flex:none;width:66.66666674%}html.theme--documenter-dark .tile.is-9{flex:none;width:75%}html.theme--documenter-dark .tile.is-10{flex:none;width:83.33333337%}html.theme--documenter-dark .tile.is-11{flex:none;width:91.66666674%}html.theme--documenter-dark .tile.is-12{flex:none;width:100%}}html.theme--documenter-dark .hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}html.theme--documenter-dark .hero .navbar{background:none}html.theme--documenter-dark .hero .tabs ul{border-bottom:none}html.theme--documenter-dark .hero.is-white{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-white strong{color:inherit}html.theme--documenter-dark .hero.is-white .title{color:#0a0a0a}html.theme--documenter-dark .hero.is-white .subtitle{color:rgba(10,10,10,0.9)}html.theme--documenter-dark .hero.is-white .subtitle a:not(.button),html.theme--documenter-dark .hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-white .navbar-menu{background-color:#fff}}html.theme--documenter-dark .hero.is-white .navbar-item,html.theme--documenter-dark .hero.is-white .navbar-link{color:rgba(10,10,10,0.7)}html.theme--documenter-dark .hero.is-white a.navbar-item:hover,html.theme--documenter-dark .hero.is-white a.navbar-item.is-active,html.theme--documenter-dark .hero.is-white .navbar-link:hover,html.theme--documenter-dark .hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .hero.is-white .tabs a{color:#0a0a0a;opacity:0.9}html.theme--documenter-dark .hero.is-white .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-white .tabs li.is-active a{color:#fff !important;opacity:1}html.theme--documenter-dark .hero.is-white .tabs.is-boxed a,html.theme--documenter-dark .hero.is-white .tabs.is-toggle a{color:#0a0a0a}html.theme--documenter-dark .hero.is-white .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-white .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-white .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-white .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--documenter-dark .hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}}html.theme--documenter-dark .hero.is-black{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-black strong{color:inherit}html.theme--documenter-dark .hero.is-black .title{color:#fff}html.theme--documenter-dark .hero.is-black .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-black .subtitle a:not(.button),html.theme--documenter-dark .hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-black .navbar-menu{background-color:#0a0a0a}}html.theme--documenter-dark .hero.is-black .navbar-item,html.theme--documenter-dark .hero.is-black .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-black a.navbar-item:hover,html.theme--documenter-dark .hero.is-black a.navbar-item.is-active,html.theme--documenter-dark .hero.is-black .navbar-link:hover,html.theme--documenter-dark .hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}html.theme--documenter-dark .hero.is-black .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-black .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-black .tabs li.is-active a{color:#0a0a0a !important;opacity:1}html.theme--documenter-dark .hero.is-black .tabs.is-boxed a,html.theme--documenter-dark .hero.is-black .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-black .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-black .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-black .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-black .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--documenter-dark .hero.is-black.is-bold{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}}html.theme--documenter-dark .hero.is-light{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-light strong{color:inherit}html.theme--documenter-dark .hero.is-light .title{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-light .subtitle{color:rgba(0,0,0,0.9)}html.theme--documenter-dark .hero.is-light .subtitle a:not(.button),html.theme--documenter-dark .hero.is-light .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-light .navbar-menu{background-color:#ecf0f1}}html.theme--documenter-dark .hero.is-light .navbar-item,html.theme--documenter-dark .hero.is-light .navbar-link{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-light a.navbar-item:hover,html.theme--documenter-dark .hero.is-light a.navbar-item.is-active,html.theme--documenter-dark .hero.is-light .navbar-link:hover,html.theme--documenter-dark .hero.is-light .navbar-link.is-active{background-color:#dde4e6;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-light .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--documenter-dark .hero.is-light .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-light .tabs li.is-active a{color:#ecf0f1 !important;opacity:1}html.theme--documenter-dark .hero.is-light .tabs.is-boxed a,html.theme--documenter-dark .hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-light .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-light .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-light .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-light .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#ecf0f1}html.theme--documenter-dark .hero.is-light.is-bold{background-image:linear-gradient(141deg, #cadfe0 0%, #ecf0f1 71%, #fafbfc 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #cadfe0 0%, #ecf0f1 71%, #fafbfc 100%)}}html.theme--documenter-dark .hero.is-dark,html.theme--documenter-dark .content kbd.hero{background-color:#282f2f;color:#fff}html.theme--documenter-dark .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-dark strong,html.theme--documenter-dark .content kbd.hero strong{color:inherit}html.theme--documenter-dark .hero.is-dark .title,html.theme--documenter-dark .content kbd.hero .title{color:#fff}html.theme--documenter-dark .hero.is-dark .subtitle,html.theme--documenter-dark .content kbd.hero .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-dark .subtitle a:not(.button),html.theme--documenter-dark .content kbd.hero .subtitle a:not(.button),html.theme--documenter-dark .hero.is-dark .subtitle strong,html.theme--documenter-dark .content kbd.hero .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-dark .navbar-menu,html.theme--documenter-dark .content kbd.hero .navbar-menu{background-color:#282f2f}}html.theme--documenter-dark .hero.is-dark .navbar-item,html.theme--documenter-dark .content kbd.hero .navbar-item,html.theme--documenter-dark .hero.is-dark .navbar-link,html.theme--documenter-dark .content kbd.hero .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-dark a.navbar-item:hover,html.theme--documenter-dark .content kbd.hero a.navbar-item:hover,html.theme--documenter-dark .hero.is-dark a.navbar-item.is-active,html.theme--documenter-dark .content kbd.hero a.navbar-item.is-active,html.theme--documenter-dark .hero.is-dark .navbar-link:hover,html.theme--documenter-dark .content kbd.hero .navbar-link:hover,html.theme--documenter-dark .hero.is-dark .navbar-link.is-active,html.theme--documenter-dark .content kbd.hero .navbar-link.is-active{background-color:#1d2122;color:#fff}html.theme--documenter-dark .hero.is-dark .tabs a,html.theme--documenter-dark .content kbd.hero .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-dark .tabs a:hover,html.theme--documenter-dark .content kbd.hero .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-dark .tabs li.is-active a,html.theme--documenter-dark .content kbd.hero .tabs li.is-active a{color:#282f2f !important;opacity:1}html.theme--documenter-dark .hero.is-dark .tabs.is-boxed a,html.theme--documenter-dark .content kbd.hero .tabs.is-boxed a,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle a,html.theme--documenter-dark .content kbd.hero .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-dark .tabs.is-boxed a:hover,html.theme--documenter-dark .content kbd.hero .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle a:hover,html.theme--documenter-dark .content kbd.hero .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-dark .tabs.is-boxed li.is-active a,html.theme--documenter-dark .content kbd.hero .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-dark .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle li.is-active a,html.theme--documenter-dark .content kbd.hero .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#282f2f}html.theme--documenter-dark .hero.is-dark.is-bold,html.theme--documenter-dark .content kbd.hero.is-bold{background-image:linear-gradient(141deg, #0f1615 0%, #282f2f 71%, #313c40 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-dark.is-bold .navbar-menu,html.theme--documenter-dark .content kbd.hero.is-bold .navbar-menu{background-image:linear-gradient(141deg, #0f1615 0%, #282f2f 71%, #313c40 100%)}}html.theme--documenter-dark .hero.is-primary,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink{background-color:#375a7f;color:#fff}html.theme--documenter-dark .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-primary strong,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink strong{color:inherit}html.theme--documenter-dark .hero.is-primary .title,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .title{color:#fff}html.theme--documenter-dark .hero.is-primary .subtitle,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-primary .subtitle a:not(.button),html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .subtitle a:not(.button),html.theme--documenter-dark .hero.is-primary .subtitle strong,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-primary .navbar-menu,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-menu{background-color:#375a7f}}html.theme--documenter-dark .hero.is-primary .navbar-item,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-item,html.theme--documenter-dark .hero.is-primary .navbar-link,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-primary a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink a.navbar-item:hover,html.theme--documenter-dark .hero.is-primary a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink a.navbar-item.is-active,html.theme--documenter-dark .hero.is-primary .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-link:hover,html.theme--documenter-dark .hero.is-primary .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-link.is-active{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .hero.is-primary .tabs a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-primary .tabs a:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-primary .tabs li.is-active a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs li.is-active a{color:#375a7f !important;opacity:1}html.theme--documenter-dark .hero.is-primary .tabs.is-boxed a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-primary .tabs.is-boxed a:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle a:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-primary .tabs.is-boxed li.is-active a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-primary .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle li.is-active a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#375a7f}html.theme--documenter-dark .hero.is-primary.is-bold,html.theme--documenter-dark .docstring>section>a.hero.is-bold.docs-sourcelink{background-image:linear-gradient(141deg, #214b62 0%, #375a7f 71%, #3a5796 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-primary.is-bold .navbar-menu,html.theme--documenter-dark .docstring>section>a.hero.is-bold.docs-sourcelink .navbar-menu{background-image:linear-gradient(141deg, #214b62 0%, #375a7f 71%, #3a5796 100%)}}html.theme--documenter-dark .hero.is-link{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-link strong{color:inherit}html.theme--documenter-dark .hero.is-link .title{color:#fff}html.theme--documenter-dark .hero.is-link .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-link .subtitle a:not(.button),html.theme--documenter-dark .hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-link .navbar-menu{background-color:#1abc9c}}html.theme--documenter-dark .hero.is-link .navbar-item,html.theme--documenter-dark .hero.is-link .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-link a.navbar-item:hover,html.theme--documenter-dark .hero.is-link a.navbar-item.is-active,html.theme--documenter-dark .hero.is-link .navbar-link:hover,html.theme--documenter-dark .hero.is-link .navbar-link.is-active{background-color:#17a689;color:#fff}html.theme--documenter-dark .hero.is-link .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-link .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-link .tabs li.is-active a{color:#1abc9c !important;opacity:1}html.theme--documenter-dark .hero.is-link .tabs.is-boxed a,html.theme--documenter-dark .hero.is-link .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-link .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-link .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-link .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-link .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#1abc9c}html.theme--documenter-dark .hero.is-link.is-bold{background-image:linear-gradient(141deg, #0c9764 0%, #1abc9c 71%, #17d8d2 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #0c9764 0%, #1abc9c 71%, #17d8d2 100%)}}html.theme--documenter-dark .hero.is-info{background-color:#3c5dcd;color:#fff}html.theme--documenter-dark .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-info strong{color:inherit}html.theme--documenter-dark .hero.is-info .title{color:#fff}html.theme--documenter-dark .hero.is-info .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-info .subtitle a:not(.button),html.theme--documenter-dark .hero.is-info .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-info .navbar-menu{background-color:#3c5dcd}}html.theme--documenter-dark .hero.is-info .navbar-item,html.theme--documenter-dark .hero.is-info .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-info a.navbar-item:hover,html.theme--documenter-dark .hero.is-info a.navbar-item.is-active,html.theme--documenter-dark .hero.is-info .navbar-link:hover,html.theme--documenter-dark .hero.is-info .navbar-link.is-active{background-color:#3151bf;color:#fff}html.theme--documenter-dark .hero.is-info .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-info .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-info .tabs li.is-active a{color:#3c5dcd !important;opacity:1}html.theme--documenter-dark .hero.is-info .tabs.is-boxed a,html.theme--documenter-dark .hero.is-info .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-info .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-info .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-info .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-info .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#3c5dcd}html.theme--documenter-dark .hero.is-info.is-bold{background-image:linear-gradient(141deg, #215bb5 0%, #3c5dcd 71%, #4b53d8 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #215bb5 0%, #3c5dcd 71%, #4b53d8 100%)}}html.theme--documenter-dark .hero.is-success{background-color:#259a12;color:#fff}html.theme--documenter-dark .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-success strong{color:inherit}html.theme--documenter-dark .hero.is-success .title{color:#fff}html.theme--documenter-dark .hero.is-success .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-success .subtitle a:not(.button),html.theme--documenter-dark .hero.is-success .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-success .navbar-menu{background-color:#259a12}}html.theme--documenter-dark .hero.is-success .navbar-item,html.theme--documenter-dark .hero.is-success .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-success a.navbar-item:hover,html.theme--documenter-dark .hero.is-success a.navbar-item.is-active,html.theme--documenter-dark .hero.is-success .navbar-link:hover,html.theme--documenter-dark .hero.is-success .navbar-link.is-active{background-color:#20830f;color:#fff}html.theme--documenter-dark .hero.is-success .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-success .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-success .tabs li.is-active a{color:#259a12 !important;opacity:1}html.theme--documenter-dark .hero.is-success .tabs.is-boxed a,html.theme--documenter-dark .hero.is-success .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-success .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-success .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-success .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-success .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#259a12}html.theme--documenter-dark .hero.is-success.is-bold{background-image:linear-gradient(141deg, #287207 0%, #259a12 71%, #10b614 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #287207 0%, #259a12 71%, #10b614 100%)}}html.theme--documenter-dark .hero.is-warning{background-color:#f4c72f;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-warning strong{color:inherit}html.theme--documenter-dark .hero.is-warning .title{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-warning .subtitle{color:rgba(0,0,0,0.9)}html.theme--documenter-dark .hero.is-warning .subtitle a:not(.button),html.theme--documenter-dark .hero.is-warning .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-warning .navbar-menu{background-color:#f4c72f}}html.theme--documenter-dark .hero.is-warning .navbar-item,html.theme--documenter-dark .hero.is-warning .navbar-link{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-warning a.navbar-item:hover,html.theme--documenter-dark .hero.is-warning a.navbar-item.is-active,html.theme--documenter-dark .hero.is-warning .navbar-link:hover,html.theme--documenter-dark .hero.is-warning .navbar-link.is-active{background-color:#f3c017;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-warning .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--documenter-dark .hero.is-warning .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-warning .tabs li.is-active a{color:#f4c72f !important;opacity:1}html.theme--documenter-dark .hero.is-warning .tabs.is-boxed a,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-warning .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-warning .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-warning .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#f4c72f}html.theme--documenter-dark .hero.is-warning.is-bold{background-image:linear-gradient(141deg, #f09100 0%, #f4c72f 71%, #faef42 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #f09100 0%, #f4c72f 71%, #faef42 100%)}}html.theme--documenter-dark .hero.is-danger{background-color:#cb3c33;color:#fff}html.theme--documenter-dark .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-danger strong{color:inherit}html.theme--documenter-dark .hero.is-danger .title{color:#fff}html.theme--documenter-dark .hero.is-danger .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-danger .subtitle a:not(.button),html.theme--documenter-dark .hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-danger .navbar-menu{background-color:#cb3c33}}html.theme--documenter-dark .hero.is-danger .navbar-item,html.theme--documenter-dark .hero.is-danger .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-danger a.navbar-item:hover,html.theme--documenter-dark .hero.is-danger a.navbar-item.is-active,html.theme--documenter-dark .hero.is-danger .navbar-link:hover,html.theme--documenter-dark .hero.is-danger .navbar-link.is-active{background-color:#b7362e;color:#fff}html.theme--documenter-dark .hero.is-danger .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-danger .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-danger .tabs li.is-active a{color:#cb3c33 !important;opacity:1}html.theme--documenter-dark .hero.is-danger .tabs.is-boxed a,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-danger .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-danger .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-danger .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#cb3c33}html.theme--documenter-dark .hero.is-danger.is-bold{background-image:linear-gradient(141deg, #ac1f2e 0%, #cb3c33 71%, #d66341 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #ac1f2e 0%, #cb3c33 71%, #d66341 100%)}}html.theme--documenter-dark .hero.is-small .hero-body,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.hero .hero-body{padding:1.5rem}@media screen and (min-width: 769px),print{html.theme--documenter-dark .hero.is-medium .hero-body{padding:9rem 4.5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .hero.is-large .hero-body{padding:18rem 6rem}}html.theme--documenter-dark .hero.is-halfheight .hero-body,html.theme--documenter-dark .hero.is-fullheight .hero-body,html.theme--documenter-dark .hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}html.theme--documenter-dark .hero.is-halfheight .hero-body>.container,html.theme--documenter-dark .hero.is-fullheight .hero-body>.container,html.theme--documenter-dark .hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .hero.is-halfheight{min-height:50vh}html.theme--documenter-dark .hero.is-fullheight{min-height:100vh}html.theme--documenter-dark .hero-video{overflow:hidden}html.theme--documenter-dark .hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}html.theme--documenter-dark .hero-video.is-transparent{opacity:0.3}@media screen and (max-width: 768px){html.theme--documenter-dark .hero-video{display:none}}html.theme--documenter-dark .hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){html.theme--documenter-dark .hero-buttons .button{display:flex}html.theme--documenter-dark .hero-buttons .button:not(:last-child){margin-bottom:0.75rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .hero-buttons{display:flex;justify-content:center}html.theme--documenter-dark .hero-buttons .button:not(:last-child){margin-right:1.5rem}}html.theme--documenter-dark .hero-head,html.theme--documenter-dark .hero-foot{flex-grow:0;flex-shrink:0}html.theme--documenter-dark .hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width: 769px),print{html.theme--documenter-dark .hero-body{padding:3rem 3rem}}html.theme--documenter-dark .section{padding:3rem 1.5rem}@media screen and (min-width: 1056px){html.theme--documenter-dark .section{padding:3rem 3rem}html.theme--documenter-dark .section.is-medium{padding:9rem 4.5rem}html.theme--documenter-dark .section.is-large{padding:18rem 6rem}}html.theme--documenter-dark .footer{background-color:#282f2f;padding:3rem 1.5rem 6rem}html.theme--documenter-dark hr{height:1px}html.theme--documenter-dark h6{text-transform:uppercase;letter-spacing:0.5px}html.theme--documenter-dark .hero{background-color:#343c3d}html.theme--documenter-dark a{transition:all 200ms ease}html.theme--documenter-dark .button{transition:all 200ms ease;border-width:1px;color:#fff}html.theme--documenter-dark .button.is-active,html.theme--documenter-dark .button.is-focused,html.theme--documenter-dark .button:active,html.theme--documenter-dark .button:focus{box-shadow:0 0 0 2px rgba(140,155,157,0.5)}html.theme--documenter-dark .button.is-white.is-hovered,html.theme--documenter-dark .button.is-white:hover{background-color:#fff}html.theme--documenter-dark .button.is-white.is-active,html.theme--documenter-dark .button.is-white.is-focused,html.theme--documenter-dark .button.is-white:active,html.theme--documenter-dark .button.is-white:focus{border-color:#fff;box-shadow:0 0 0 2px rgba(255,255,255,0.5)}html.theme--documenter-dark .button.is-black.is-hovered,html.theme--documenter-dark .button.is-black:hover{background-color:#1d1d1d}html.theme--documenter-dark .button.is-black.is-active,html.theme--documenter-dark .button.is-black.is-focused,html.theme--documenter-dark .button.is-black:active,html.theme--documenter-dark .button.is-black:focus{border-color:#0a0a0a;box-shadow:0 0 0 2px rgba(10,10,10,0.5)}html.theme--documenter-dark .button.is-light.is-hovered,html.theme--documenter-dark .button.is-light:hover{background-color:#fff}html.theme--documenter-dark .button.is-light.is-active,html.theme--documenter-dark .button.is-light.is-focused,html.theme--documenter-dark .button.is-light:active,html.theme--documenter-dark .button.is-light:focus{border-color:#ecf0f1;box-shadow:0 0 0 2px rgba(236,240,241,0.5)}html.theme--documenter-dark .button.is-dark.is-hovered,html.theme--documenter-dark .content kbd.button.is-hovered,html.theme--documenter-dark .button.is-dark:hover,html.theme--documenter-dark .content kbd.button:hover{background-color:#3a4344}html.theme--documenter-dark .button.is-dark.is-active,html.theme--documenter-dark .content kbd.button.is-active,html.theme--documenter-dark .button.is-dark.is-focused,html.theme--documenter-dark .content kbd.button.is-focused,html.theme--documenter-dark .button.is-dark:active,html.theme--documenter-dark .content kbd.button:active,html.theme--documenter-dark .button.is-dark:focus,html.theme--documenter-dark .content kbd.button:focus{border-color:#282f2f;box-shadow:0 0 0 2px rgba(40,47,47,0.5)}html.theme--documenter-dark .button.is-primary.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-hovered.docs-sourcelink,html.theme--documenter-dark .button.is-primary:hover,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:hover{background-color:#436d9a}html.theme--documenter-dark .button.is-primary.is-active,html.theme--documenter-dark .docstring>section>a.button.is-active.docs-sourcelink,html.theme--documenter-dark .button.is-primary.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-focused.docs-sourcelink,html.theme--documenter-dark .button.is-primary:active,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:active,html.theme--documenter-dark .button.is-primary:focus,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:focus{border-color:#375a7f;box-shadow:0 0 0 2px rgba(55,90,127,0.5)}html.theme--documenter-dark .button.is-link.is-hovered,html.theme--documenter-dark .button.is-link:hover{background-color:#1fdeb8}html.theme--documenter-dark .button.is-link.is-active,html.theme--documenter-dark .button.is-link.is-focused,html.theme--documenter-dark .button.is-link:active,html.theme--documenter-dark .button.is-link:focus{border-color:#1abc9c;box-shadow:0 0 0 2px rgba(26,188,156,0.5)}html.theme--documenter-dark .button.is-info.is-hovered,html.theme--documenter-dark .button.is-info:hover{background-color:#5a76d5}html.theme--documenter-dark .button.is-info.is-active,html.theme--documenter-dark .button.is-info.is-focused,html.theme--documenter-dark .button.is-info:active,html.theme--documenter-dark .button.is-info:focus{border-color:#3c5dcd;box-shadow:0 0 0 2px rgba(60,93,205,0.5)}html.theme--documenter-dark .button.is-success.is-hovered,html.theme--documenter-dark .button.is-success:hover{background-color:#2dbc16}html.theme--documenter-dark .button.is-success.is-active,html.theme--documenter-dark .button.is-success.is-focused,html.theme--documenter-dark .button.is-success:active,html.theme--documenter-dark .button.is-success:focus{border-color:#259a12;box-shadow:0 0 0 2px rgba(37,154,18,0.5)}html.theme--documenter-dark .button.is-warning.is-hovered,html.theme--documenter-dark .button.is-warning:hover{background-color:#f6d153}html.theme--documenter-dark .button.is-warning.is-active,html.theme--documenter-dark .button.is-warning.is-focused,html.theme--documenter-dark .button.is-warning:active,html.theme--documenter-dark .button.is-warning:focus{border-color:#f4c72f;box-shadow:0 0 0 2px rgba(244,199,47,0.5)}html.theme--documenter-dark .button.is-danger.is-hovered,html.theme--documenter-dark .button.is-danger:hover{background-color:#d35951}html.theme--documenter-dark .button.is-danger.is-active,html.theme--documenter-dark .button.is-danger.is-focused,html.theme--documenter-dark .button.is-danger:active,html.theme--documenter-dark .button.is-danger:focus{border-color:#cb3c33;box-shadow:0 0 0 2px rgba(203,60,51,0.5)}html.theme--documenter-dark .label{color:#dbdee0}html.theme--documenter-dark .button,html.theme--documenter-dark .control.has-icons-left .icon,html.theme--documenter-dark .control.has-icons-right .icon,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark .pagination-ellipsis,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .select,html.theme--documenter-dark .select select,html.theme--documenter-dark .textarea{height:2.5em}html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark .textarea{transition:all 200ms ease;box-shadow:none;border-width:1px;padding-left:1em;padding-right:1em}html.theme--documenter-dark .select:after,html.theme--documenter-dark .select select{border-width:1px}html.theme--documenter-dark .control.has-addons .button,html.theme--documenter-dark .control.has-addons .input,html.theme--documenter-dark .control.has-addons #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .control.has-addons form.docs-search>input,html.theme--documenter-dark .control.has-addons .select{margin-right:-1px}html.theme--documenter-dark .notification{background-color:#343c3d}html.theme--documenter-dark .card{box-shadow:none;border:1px solid #343c3d;background-color:#282f2f;border-radius:.4em}html.theme--documenter-dark .card .card-image img{border-radius:.4em .4em 0 0}html.theme--documenter-dark .card .card-header{box-shadow:none;background-color:rgba(18,18,18,0.2);border-radius:.4em .4em 0 0}html.theme--documenter-dark .card .card-footer{background-color:rgba(18,18,18,0.2)}html.theme--documenter-dark .card .card-footer,html.theme--documenter-dark .card .card-footer-item{border-width:1px;border-color:#343c3d}html.theme--documenter-dark .notification.is-white a:not(.button){color:#0a0a0a;text-decoration:underline}html.theme--documenter-dark .notification.is-black a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-light a:not(.button){color:rgba(0,0,0,0.7);text-decoration:underline}html.theme--documenter-dark .notification.is-dark a:not(.button),html.theme--documenter-dark .content kbd.notification a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-primary a:not(.button),html.theme--documenter-dark .docstring>section>a.notification.docs-sourcelink a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-link a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-info a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-success a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-warning a:not(.button){color:rgba(0,0,0,0.7);text-decoration:underline}html.theme--documenter-dark .notification.is-danger a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .tag,html.theme--documenter-dark .content kbd,html.theme--documenter-dark .docstring>section>a.docs-sourcelink{border-radius:.4em}html.theme--documenter-dark .menu-list a{transition:all 300ms ease}html.theme--documenter-dark .modal-card-body{background-color:#282f2f}html.theme--documenter-dark .modal-card-foot,html.theme--documenter-dark .modal-card-head{border-color:#343c3d}html.theme--documenter-dark .message-header{font-weight:700;background-color:#343c3d;color:#fff}html.theme--documenter-dark .message-body{border-width:1px;border-color:#343c3d}html.theme--documenter-dark .navbar{border-radius:.4em}html.theme--documenter-dark .navbar.is-transparent{background:none}html.theme--documenter-dark .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#1abc9c}@media screen and (max-width: 1055px){html.theme--documenter-dark .navbar .navbar-menu{background-color:#375a7f;border-radius:0 0 .4em .4em}}html.theme--documenter-dark .hero .navbar,html.theme--documenter-dark body>.navbar{border-radius:0}html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-previous{border-width:1px}html.theme--documenter-dark .panel-block,html.theme--documenter-dark .panel-heading,html.theme--documenter-dark .panel-tabs{border-width:1px}html.theme--documenter-dark .panel-block:first-child,html.theme--documenter-dark .panel-heading:first-child,html.theme--documenter-dark .panel-tabs:first-child{border-top-width:1px}html.theme--documenter-dark .panel-heading{font-weight:700}html.theme--documenter-dark .panel-tabs a{border-width:1px;margin-bottom:-1px}html.theme--documenter-dark .panel-tabs a.is-active{border-bottom-color:#17a689}html.theme--documenter-dark .panel-block:hover{color:#1dd2af}html.theme--documenter-dark .panel-block:hover .panel-icon{color:#1dd2af}html.theme--documenter-dark .panel-block.is-active .panel-icon{color:#17a689}html.theme--documenter-dark .tabs a{border-bottom-width:1px;margin-bottom:-1px}html.theme--documenter-dark .tabs ul{border-bottom-width:1px}html.theme--documenter-dark .tabs.is-boxed a{border-width:1px}html.theme--documenter-dark .tabs.is-boxed li.is-active a{background-color:#1f2424}html.theme--documenter-dark .tabs.is-toggle li a{border-width:1px;margin-bottom:0}html.theme--documenter-dark .tabs.is-toggle li+li{margin-left:-1px}html.theme--documenter-dark .hero.is-white .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-black .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-light .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-dark .navbar .navbar-dropdown .navbar-item:hover,html.theme--documenter-dark .content kbd.hero .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-primary .navbar .navbar-dropdown .navbar-item:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-link .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-info .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-success .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-warning .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-danger .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark h1 .docs-heading-anchor,html.theme--documenter-dark h1 .docs-heading-anchor:hover,html.theme--documenter-dark h1 .docs-heading-anchor:visited,html.theme--documenter-dark h2 .docs-heading-anchor,html.theme--documenter-dark h2 .docs-heading-anchor:hover,html.theme--documenter-dark h2 .docs-heading-anchor:visited,html.theme--documenter-dark h3 .docs-heading-anchor,html.theme--documenter-dark h3 .docs-heading-anchor:hover,html.theme--documenter-dark h3 .docs-heading-anchor:visited,html.theme--documenter-dark h4 .docs-heading-anchor,html.theme--documenter-dark h4 .docs-heading-anchor:hover,html.theme--documenter-dark h4 .docs-heading-anchor:visited,html.theme--documenter-dark h5 .docs-heading-anchor,html.theme--documenter-dark h5 .docs-heading-anchor:hover,html.theme--documenter-dark h5 .docs-heading-anchor:visited,html.theme--documenter-dark h6 .docs-heading-anchor,html.theme--documenter-dark h6 .docs-heading-anchor:hover,html.theme--documenter-dark h6 .docs-heading-anchor:visited{color:#f2f2f2}html.theme--documenter-dark h1 .docs-heading-anchor-permalink,html.theme--documenter-dark h2 .docs-heading-anchor-permalink,html.theme--documenter-dark h3 .docs-heading-anchor-permalink,html.theme--documenter-dark h4 .docs-heading-anchor-permalink,html.theme--documenter-dark h5 .docs-heading-anchor-permalink,html.theme--documenter-dark h6 .docs-heading-anchor-permalink{visibility:hidden;vertical-align:middle;margin-left:0.5em;font-size:0.7rem}html.theme--documenter-dark h1 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h2 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h3 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h4 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h5 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h6 .docs-heading-anchor-permalink::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f0c1"}html.theme--documenter-dark h1:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h2:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h3:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h4:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h5:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h6:hover .docs-heading-anchor-permalink{visibility:visible}html.theme--documenter-dark .docs-light-only{display:none !important}html.theme--documenter-dark pre{position:relative;overflow:hidden}html.theme--documenter-dark pre code,html.theme--documenter-dark pre code.hljs{padding:0 .75rem !important;overflow:auto;display:block}html.theme--documenter-dark pre code:first-of-type,html.theme--documenter-dark pre code.hljs:first-of-type{padding-top:0.5rem !important}html.theme--documenter-dark pre code:last-of-type,html.theme--documenter-dark pre code.hljs:last-of-type{padding-bottom:0.5rem !important}html.theme--documenter-dark pre .copy-button{opacity:0.2;transition:opacity 0.2s;position:absolute;right:0em;top:0em;padding:0.5em;width:2.5em;height:2.5em;background:transparent;border:none;font-family:"Font Awesome 6 Free";color:#fff;cursor:pointer;text-align:center}html.theme--documenter-dark pre .copy-button:focus,html.theme--documenter-dark pre .copy-button:hover{opacity:1;background:rgba(255,255,255,0.1);color:#1abc9c}html.theme--documenter-dark pre .copy-button.success{color:#259a12;opacity:1}html.theme--documenter-dark pre .copy-button.error{color:#cb3c33;opacity:1}html.theme--documenter-dark pre:hover .copy-button{opacity:1}html.theme--documenter-dark .admonition{background-color:#282f2f;border-style:solid;border-width:2px;border-color:#dbdee0;border-radius:4px;font-size:1rem}html.theme--documenter-dark .admonition strong{color:currentColor}html.theme--documenter-dark .admonition.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.admonition{font-size:.75rem}html.theme--documenter-dark .admonition.is-medium{font-size:1.25rem}html.theme--documenter-dark .admonition.is-large{font-size:1.5rem}html.theme--documenter-dark .admonition.is-default{background-color:#282f2f;border-color:#dbdee0}html.theme--documenter-dark .admonition.is-default>.admonition-header{background-color:rgba(0,0,0,0);color:#dbdee0}html.theme--documenter-dark .admonition.is-default>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-info{background-color:#282f2f;border-color:#3c5dcd}html.theme--documenter-dark .admonition.is-info>.admonition-header{background-color:rgba(0,0,0,0);color:#3c5dcd}html.theme--documenter-dark .admonition.is-info>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-success{background-color:#282f2f;border-color:#259a12}html.theme--documenter-dark .admonition.is-success>.admonition-header{background-color:rgba(0,0,0,0);color:#259a12}html.theme--documenter-dark .admonition.is-success>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-warning{background-color:#282f2f;border-color:#f4c72f}html.theme--documenter-dark .admonition.is-warning>.admonition-header{background-color:rgba(0,0,0,0);color:#f4c72f}html.theme--documenter-dark .admonition.is-warning>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-danger{background-color:#282f2f;border-color:#cb3c33}html.theme--documenter-dark .admonition.is-danger>.admonition-header{background-color:rgba(0,0,0,0);color:#cb3c33}html.theme--documenter-dark .admonition.is-danger>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-compat{background-color:#282f2f;border-color:#3489da}html.theme--documenter-dark .admonition.is-compat>.admonition-header{background-color:rgba(0,0,0,0);color:#3489da}html.theme--documenter-dark .admonition.is-compat>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-todo{background-color:#282f2f;border-color:#9558b2}html.theme--documenter-dark .admonition.is-todo>.admonition-header{background-color:rgba(0,0,0,0);color:#9558b2}html.theme--documenter-dark .admonition.is-todo>.admonition-body{color:#fff}html.theme--documenter-dark .admonition-header{color:#dbdee0;background-color:rgba(0,0,0,0);align-items:center;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.5rem .75rem;position:relative}html.theme--documenter-dark .admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;margin-right:.75rem;content:"\f06a"}html.theme--documenter-dark details.admonition.is-details>.admonition-header{list-style:none}html.theme--documenter-dark details.admonition.is-details>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f055"}html.theme--documenter-dark details.admonition.is-details[open]>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f056"}html.theme--documenter-dark .admonition-body{color:#fff;padding:0.5rem .75rem}html.theme--documenter-dark .admonition-body pre{background-color:#282f2f}html.theme--documenter-dark .admonition-body code{background-color:rgba(255,255,255,0.05)}html.theme--documenter-dark .docstring{margin-bottom:1em;background-color:rgba(0,0,0,0);border:2px solid #5e6d6f;border-radius:4px;box-shadow:none;max-width:100%}html.theme--documenter-dark .docstring>header{cursor:pointer;display:flex;flex-grow:1;align-items:stretch;padding:0.5rem .75rem;background-color:#282f2f;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);box-shadow:none;border-bottom:1px solid #5e6d6f;overflow:auto}html.theme--documenter-dark .docstring>header code{background-color:transparent}html.theme--documenter-dark .docstring>header .docstring-article-toggle-button{min-width:1.1rem;padding:0.2rem 0.2rem 0.2rem 0}html.theme--documenter-dark .docstring>header .docstring-binding{margin-right:0.3em}html.theme--documenter-dark .docstring>header .docstring-category{margin-left:0.3em}html.theme--documenter-dark .docstring>section{position:relative;padding:.75rem .75rem;border-bottom:1px solid #5e6d6f}html.theme--documenter-dark .docstring>section:last-child{border-bottom:none}html.theme--documenter-dark .docstring>section>a.docs-sourcelink{transition:opacity 0.3s;opacity:0;position:absolute;right:.375rem;bottom:.375rem}html.theme--documenter-dark .docstring>section>a.docs-sourcelink:focus{opacity:1 !important}html.theme--documenter-dark .docstring:hover>section>a.docs-sourcelink{opacity:0.2}html.theme--documenter-dark .docstring:focus-within>section>a.docs-sourcelink{opacity:0.2}html.theme--documenter-dark .docstring>section:hover a.docs-sourcelink{opacity:1}html.theme--documenter-dark .documenter-example-output{background-color:#1f2424}html.theme--documenter-dark .outdated-warning-overlay{position:fixed;top:0;left:0;right:0;box-shadow:0 0 10px rgba(0,0,0,0.3);z-index:999;background-color:#282f2f;color:#fff;border-bottom:3px solid rgba(0,0,0,0);padding:10px 35px;text-align:center;font-size:15px}html.theme--documenter-dark .outdated-warning-overlay .outdated-warning-closer{position:absolute;top:calc(50% - 10px);right:18px;cursor:pointer;width:12px}html.theme--documenter-dark .outdated-warning-overlay a{color:#1abc9c}html.theme--documenter-dark .outdated-warning-overlay a:hover{color:#1dd2af}html.theme--documenter-dark .content pre{border:2px solid #5e6d6f;border-radius:4px}html.theme--documenter-dark .content code{font-weight:inherit}html.theme--documenter-dark .content a code{color:#1abc9c}html.theme--documenter-dark .content a:hover code{color:#1dd2af}html.theme--documenter-dark .content h1 code,html.theme--documenter-dark .content h2 code,html.theme--documenter-dark .content h3 code,html.theme--documenter-dark .content h4 code,html.theme--documenter-dark .content h5 code,html.theme--documenter-dark .content h6 code{color:#f2f2f2}html.theme--documenter-dark .content table{display:block;width:initial;max-width:100%;overflow-x:auto}html.theme--documenter-dark .content blockquote>ul:first-child,html.theme--documenter-dark .content blockquote>ol:first-child,html.theme--documenter-dark .content .admonition-body>ul:first-child,html.theme--documenter-dark .content .admonition-body>ol:first-child{margin-top:0}html.theme--documenter-dark pre,html.theme--documenter-dark code{font-variant-ligatures:no-contextual}html.theme--documenter-dark .breadcrumb a.is-disabled{cursor:default;pointer-events:none}html.theme--documenter-dark .breadcrumb a.is-disabled,html.theme--documenter-dark .breadcrumb a.is-disabled:hover{color:#f2f2f2}html.theme--documenter-dark .hljs{background:initial !important}html.theme--documenter-dark .katex .katex-mathml{top:0;right:0}html.theme--documenter-dark .katex-display,html.theme--documenter-dark mjx-container,html.theme--documenter-dark .MathJax_Display{margin:0.5em 0 !important}html.theme--documenter-dark html{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto}html.theme--documenter-dark li.no-marker{list-style:none}html.theme--documenter-dark #documenter .docs-main>article{overflow-wrap:break-word}html.theme--documenter-dark #documenter .docs-main>article .math-container{overflow-x:auto;overflow-y:hidden}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-main{max-width:52rem;margin-left:20rem;padding-right:1rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-main{width:100%}html.theme--documenter-dark #documenter .docs-main>article{max-width:52rem;margin-left:auto;margin-right:auto;margin-bottom:1rem;padding:0 1rem}html.theme--documenter-dark #documenter .docs-main>header,html.theme--documenter-dark #documenter .docs-main>nav{max-width:100%;width:100%;margin:0}}html.theme--documenter-dark #documenter .docs-main header.docs-navbar{background-color:#1f2424;border-bottom:1px solid #5e6d6f;z-index:2;min-height:4rem;margin-bottom:1rem;display:flex}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .breadcrumb{flex-grow:1;overflow-x:hidden}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-sidebar-button{display:block;font-size:1.5rem;padding-bottom:0.1rem;margin-right:1rem}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right{display:flex;white-space:nowrap;gap:1rem;align-items:center}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-icon,html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-label{display:inline-block}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-label{padding:0;margin-left:0.3em}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-navbar-link{margin-left:0.4rem;margin-right:0.4rem}}html.theme--documenter-dark #documenter .docs-main header.docs-navbar>*{margin:auto 0}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-main header.docs-navbar{position:sticky;top:0;padding:0 1rem;transition-property:top, box-shadow;-webkit-transition-property:top, box-shadow;transition-duration:0.3s;-webkit-transition-duration:0.3s}html.theme--documenter-dark #documenter .docs-main header.docs-navbar.headroom--not-top{box-shadow:.2rem 0rem .4rem #171717;transition-duration:0.7s;-webkit-transition-duration:0.7s}html.theme--documenter-dark #documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom{top:-4.5rem;transition-duration:0.7s;-webkit-transition-duration:0.7s}}html.theme--documenter-dark #documenter .docs-main section.footnotes{border-top:1px solid #5e6d6f}html.theme--documenter-dark #documenter .docs-main section.footnotes li .tag:first-child,html.theme--documenter-dark #documenter .docs-main section.footnotes li .docstring>section>a.docs-sourcelink:first-child,html.theme--documenter-dark #documenter .docs-main section.footnotes li .content kbd:first-child,html.theme--documenter-dark .content #documenter .docs-main section.footnotes li kbd:first-child{margin-right:1em;margin-bottom:0.4em}html.theme--documenter-dark #documenter .docs-main .docs-footer{display:flex;flex-wrap:wrap;margin-left:0;margin-right:0;border-top:1px solid #5e6d6f;padding-top:1rem;padding-bottom:1rem}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-main .docs-footer{padding-left:1rem;padding-right:1rem}}html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-nextpage,html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-prevpage{flex-grow:1}html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-nextpage{text-align:right}html.theme--documenter-dark #documenter .docs-main .docs-footer .flexbox-break{flex-basis:100%;height:0}html.theme--documenter-dark #documenter .docs-main .docs-footer .footer-message{font-size:0.8em;margin:0.5em auto 0 auto;text-align:center}html.theme--documenter-dark #documenter .docs-sidebar{display:flex;flex-direction:column;color:#fff;background-color:#282f2f;border-right:1px solid #5e6d6f;padding:0;flex:0 0 18rem;z-index:5;font-size:1rem;position:fixed;left:-18rem;width:18rem;height:100%;transition:left 0.3s}html.theme--documenter-dark #documenter .docs-sidebar.visible{left:0;box-shadow:.4rem 0rem .8rem #171717}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-sidebar.visible{box-shadow:none}}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-sidebar{left:0;top:0}}html.theme--documenter-dark #documenter .docs-sidebar .docs-logo{margin-top:1rem;padding:0 1rem}html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img{max-height:6rem;margin:auto}html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name{flex-shrink:0;font-size:1.5rem;font-weight:700;text-align:center;white-space:nowrap;overflow:hidden;padding:0.5rem 0}html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name .docs-autofit{max-width:16.2rem}html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name a,html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name a:hover{color:#fff}html.theme--documenter-dark #documenter .docs-sidebar .docs-version-selector{border-top:1px solid #5e6d6f;display:none;padding:0.5rem}html.theme--documenter-dark #documenter .docs-sidebar .docs-version-selector.visible{display:flex}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu{flex-grow:1;user-select:none;border-top:1px solid #5e6d6f;padding-bottom:1.5rem}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu>li>.tocitem{font-weight:bold}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu>li li{font-size:.95rem;margin-left:1em;border-left:1px solid #5e6d6f}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input.collapse-toggle{display:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.collapsed{display:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input:checked~ul.collapsed{display:block}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem{display:flex}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label{flex-grow:2}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron{display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;font-size:.75rem;margin-left:1rem;margin-top:auto;margin-bottom:auto}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f054"}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input:checked~label.tocitem .docs-chevron::before{content:"\f078"}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem{display:block;padding:0.5rem 0.5rem}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem,html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem:hover{color:#fff;background:#282f2f}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu a.tocitem:hover,html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem:hover{color:#fff;background-color:#32393a}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active{border-top:1px solid #5e6d6f;border-bottom:1px solid #5e6d6f;background-color:#1f2424}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem,html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover{background-color:#1f2424;color:#fff}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover{background-color:#32393a;color:#fff}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu>li.is-active:first-child{border-top:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal{margin:0 0.5rem 0.5rem;border-top:1px solid #5e6d6f}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal li{font-size:.85rem;border-left:none;margin-left:0;margin-top:0.5rem}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem{width:100%;padding:0}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before{content:"⚬";margin-right:0.4em}html.theme--documenter-dark #documenter .docs-sidebar form.docs-search{margin:auto;margin-top:0.5rem;margin-bottom:0.5rem}html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{width:14.4rem}html.theme--documenter-dark #documenter .docs-sidebar #documenter-search-query{color:#868c98;width:14.4rem;box-shadow:inset 0 1px 2px rgba(10,10,10,0.1)}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar{width:.3rem;background:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#3b4445}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover{background:#4e5a5c}}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-sidebar{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar{width:.3rem;background:none}html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#3b4445}html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar-thumb:hover{background:#4e5a5c}}html.theme--documenter-dark kbd.search-modal-key-hints{border-radius:0.25rem;border:1px solid rgba(245,245,245,0.6);box-shadow:0 2px 0 1px rgba(245,245,245,0.6);cursor:default;font-size:0.9rem;line-height:1.5;min-width:0.75rem;text-align:center;padding:0.1rem 0.3rem;position:relative;top:-1px}html.theme--documenter-dark .search-min-width-50{min-width:50%}html.theme--documenter-dark .search-min-height-100{min-height:100%}html.theme--documenter-dark .search-modal-card-body{max-height:calc(100vh - 15rem)}html.theme--documenter-dark .search-result-link{border-radius:0.7em;transition:all 300ms}html.theme--documenter-dark .search-result-link:hover,html.theme--documenter-dark .search-result-link:focus{background-color:rgba(0,128,128,0.1)}html.theme--documenter-dark .search-result-link .property-search-result-badge,html.theme--documenter-dark .search-result-link .search-filter{transition:all 300ms}html.theme--documenter-dark .property-search-result-badge,html.theme--documenter-dark .search-filter{padding:0.15em 0.5em;font-size:0.8em;font-style:italic;text-transform:none !important;line-height:1.5;color:#f5f5f5;background-color:rgba(51,65,85,0.501961);border-radius:0.6rem}html.theme--documenter-dark .search-result-link:hover .property-search-result-badge,html.theme--documenter-dark .search-result-link:hover .search-filter,html.theme--documenter-dark .search-result-link:focus .property-search-result-badge,html.theme--documenter-dark .search-result-link:focus .search-filter{color:#333;background-color:#f1f5f9}html.theme--documenter-dark .search-filter{color:#333;background-color:#f5f5f5;transition:all 300ms}html.theme--documenter-dark .search-filter:hover,html.theme--documenter-dark .search-filter:focus{color:#333}html.theme--documenter-dark .search-filter-selected{color:#f5f5f5;background-color:rgba(139,0,139,0.5)}html.theme--documenter-dark .search-filter-selected:hover,html.theme--documenter-dark .search-filter-selected:focus{color:#f5f5f5}html.theme--documenter-dark .search-result-highlight{background-color:#ffdd57;color:black}html.theme--documenter-dark .search-divider{border-bottom:1px solid #5e6d6f}html.theme--documenter-dark .search-result-title{width:85%;color:#f5f5f5}html.theme--documenter-dark .search-result-code-title{font-size:0.875rem;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--documenter-dark #search-modal .modal-card-body::-webkit-scrollbar,html.theme--documenter-dark #search-modal .filter-tabs::-webkit-scrollbar{height:10px;width:10px;background-color:transparent}html.theme--documenter-dark #search-modal .modal-card-body::-webkit-scrollbar-thumb,html.theme--documenter-dark #search-modal .filter-tabs::-webkit-scrollbar-thumb{background-color:gray;border-radius:1rem}html.theme--documenter-dark #search-modal .modal-card-body::-webkit-scrollbar-track,html.theme--documenter-dark #search-modal .filter-tabs::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.6);background-color:transparent}html.theme--documenter-dark .w-100{width:100%}html.theme--documenter-dark .gap-2{gap:0.5rem}html.theme--documenter-dark .gap-4{gap:1rem}html.theme--documenter-dark .gap-8{gap:2rem}html.theme--documenter-dark{background-color:#1f2424;font-size:16px;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--documenter-dark .ansi span.sgr1{font-weight:bolder}html.theme--documenter-dark .ansi span.sgr2{font-weight:lighter}html.theme--documenter-dark .ansi span.sgr3{font-style:italic}html.theme--documenter-dark .ansi span.sgr4{text-decoration:underline}html.theme--documenter-dark .ansi span.sgr7{color:#1f2424;background-color:#fff}html.theme--documenter-dark .ansi span.sgr8{color:transparent}html.theme--documenter-dark .ansi span.sgr8 span{color:transparent}html.theme--documenter-dark .ansi span.sgr9{text-decoration:line-through}html.theme--documenter-dark .ansi span.sgr30{color:#242424}html.theme--documenter-dark .ansi span.sgr31{color:#f6705f}html.theme--documenter-dark .ansi span.sgr32{color:#4fb43a}html.theme--documenter-dark .ansi span.sgr33{color:#f4c72f}html.theme--documenter-dark .ansi span.sgr34{color:#7587f0}html.theme--documenter-dark .ansi span.sgr35{color:#bc89d3}html.theme--documenter-dark .ansi span.sgr36{color:#49b6ca}html.theme--documenter-dark .ansi span.sgr37{color:#b3bdbe}html.theme--documenter-dark .ansi span.sgr40{background-color:#242424}html.theme--documenter-dark .ansi span.sgr41{background-color:#f6705f}html.theme--documenter-dark .ansi span.sgr42{background-color:#4fb43a}html.theme--documenter-dark .ansi span.sgr43{background-color:#f4c72f}html.theme--documenter-dark .ansi span.sgr44{background-color:#7587f0}html.theme--documenter-dark .ansi span.sgr45{background-color:#bc89d3}html.theme--documenter-dark .ansi span.sgr46{background-color:#49b6ca}html.theme--documenter-dark .ansi span.sgr47{background-color:#b3bdbe}html.theme--documenter-dark .ansi span.sgr90{color:#92a0a2}html.theme--documenter-dark .ansi span.sgr91{color:#ff8674}html.theme--documenter-dark .ansi span.sgr92{color:#79d462}html.theme--documenter-dark .ansi span.sgr93{color:#ffe76b}html.theme--documenter-dark .ansi span.sgr94{color:#8a98ff}html.theme--documenter-dark .ansi span.sgr95{color:#d2a4e6}html.theme--documenter-dark .ansi span.sgr96{color:#6bc8db}html.theme--documenter-dark .ansi span.sgr97{color:#ecf0f1}html.theme--documenter-dark .ansi span.sgr100{background-color:#92a0a2}html.theme--documenter-dark .ansi span.sgr101{background-color:#ff8674}html.theme--documenter-dark .ansi span.sgr102{background-color:#79d462}html.theme--documenter-dark .ansi span.sgr103{background-color:#ffe76b}html.theme--documenter-dark .ansi span.sgr104{background-color:#8a98ff}html.theme--documenter-dark .ansi span.sgr105{background-color:#d2a4e6}html.theme--documenter-dark .ansi span.sgr106{background-color:#6bc8db}html.theme--documenter-dark .ansi span.sgr107{background-color:#ecf0f1}html.theme--documenter-dark code.language-julia-repl>span.hljs-meta{color:#4fb43a;font-weight:bolder}html.theme--documenter-dark .hljs{background:#2b2b2b;color:#f8f8f2}html.theme--documenter-dark .hljs-comment,html.theme--documenter-dark .hljs-quote{color:#d4d0ab}html.theme--documenter-dark .hljs-variable,html.theme--documenter-dark .hljs-template-variable,html.theme--documenter-dark .hljs-tag,html.theme--documenter-dark .hljs-name,html.theme--documenter-dark .hljs-selector-id,html.theme--documenter-dark .hljs-selector-class,html.theme--documenter-dark .hljs-regexp,html.theme--documenter-dark .hljs-deletion{color:#ffa07a}html.theme--documenter-dark .hljs-number,html.theme--documenter-dark .hljs-built_in,html.theme--documenter-dark .hljs-literal,html.theme--documenter-dark .hljs-type,html.theme--documenter-dark .hljs-params,html.theme--documenter-dark .hljs-meta,html.theme--documenter-dark .hljs-link{color:#f5ab35}html.theme--documenter-dark .hljs-attribute{color:#ffd700}html.theme--documenter-dark .hljs-string,html.theme--documenter-dark .hljs-symbol,html.theme--documenter-dark .hljs-bullet,html.theme--documenter-dark .hljs-addition{color:#abe338}html.theme--documenter-dark .hljs-title,html.theme--documenter-dark .hljs-section{color:#00e0e0}html.theme--documenter-dark .hljs-keyword,html.theme--documenter-dark .hljs-selector-tag{color:#dcc6e0}html.theme--documenter-dark .hljs-emphasis{font-style:italic}html.theme--documenter-dark .hljs-strong{font-weight:bold}@media screen and (-ms-high-contrast: active){html.theme--documenter-dark .hljs-addition,html.theme--documenter-dark .hljs-attribute,html.theme--documenter-dark .hljs-built_in,html.theme--documenter-dark .hljs-bullet,html.theme--documenter-dark .hljs-comment,html.theme--documenter-dark .hljs-link,html.theme--documenter-dark .hljs-literal,html.theme--documenter-dark .hljs-meta,html.theme--documenter-dark .hljs-number,html.theme--documenter-dark .hljs-params,html.theme--documenter-dark .hljs-string,html.theme--documenter-dark .hljs-symbol,html.theme--documenter-dark .hljs-type,html.theme--documenter-dark .hljs-quote{color:highlight}html.theme--documenter-dark .hljs-keyword,html.theme--documenter-dark .hljs-selector-tag{font-weight:bold}}html.theme--documenter-dark .hljs-subst{color:#f8f8f2}html.theme--documenter-dark .search-result-link{border-radius:0.7em;transition:all 300ms}html.theme--documenter-dark .search-result-link:hover,html.theme--documenter-dark .search-result-link:focus{background-color:rgba(0,128,128,0.1)}html.theme--documenter-dark .search-result-link .property-search-result-badge,html.theme--documenter-dark .search-result-link .search-filter{transition:all 300ms}html.theme--documenter-dark .search-result-link:hover .property-search-result-badge,html.theme--documenter-dark .search-result-link:hover .search-filter,html.theme--documenter-dark .search-result-link:focus .property-search-result-badge,html.theme--documenter-dark .search-result-link:focus .search-filter{color:#333 !important;background-color:#f1f5f9 !important}html.theme--documenter-dark .search-result-title{color:whitesmoke}html.theme--documenter-dark .search-result-highlight{background-color:greenyellow;color:black}html.theme--documenter-dark .search-divider{border-bottom:1px solid #5e6d6f50}html.theme--documenter-dark .w-100{width:100%}html.theme--documenter-dark .gap-2{gap:0.5rem}html.theme--documenter-dark .gap-4{gap:1rem} diff --git a/v0.5.0/assets/themes/documenter-light.css b/v0.5.0/assets/themes/documenter-light.css new file mode 100644 index 00000000..e000447e --- /dev/null +++ b/v0.5.0/assets/themes/documenter-light.css @@ -0,0 +1,9 @@ +.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis,.file-cta,.file-name,.select select,.textarea,.input,#documenter .docs-sidebar form.docs-search>input,.button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:4px;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.5em - 1px);padding-left:calc(0.75em - 1px);padding-right:calc(0.75em - 1px);padding-top:calc(0.5em - 1px);position:relative;vertical-align:top}.pagination-previous:focus,.pagination-next:focus,.pagination-link:focus,.pagination-ellipsis:focus,.file-cta:focus,.file-name:focus,.select select:focus,.textarea:focus,.input:focus,#documenter .docs-sidebar form.docs-search>input:focus,.button:focus,.is-focused.pagination-previous,.is-focused.pagination-next,.is-focused.pagination-link,.is-focused.pagination-ellipsis,.is-focused.file-cta,.is-focused.file-name,.select select.is-focused,.is-focused.textarea,.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-focused.button,.pagination-previous:active,.pagination-next:active,.pagination-link:active,.pagination-ellipsis:active,.file-cta:active,.file-name:active,.select select:active,.textarea:active,.input:active,#documenter .docs-sidebar form.docs-search>input:active,.button:active,.is-active.pagination-previous,.is-active.pagination-next,.is-active.pagination-link,.is-active.pagination-ellipsis,.is-active.file-cta,.is-active.file-name,.select select.is-active,.is-active.textarea,.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active,.is-active.button{outline:none}.pagination-previous[disabled],.pagination-next[disabled],.pagination-link[disabled],.pagination-ellipsis[disabled],.file-cta[disabled],.file-name[disabled],.select select[disabled],.textarea[disabled],.input[disabled],#documenter .docs-sidebar form.docs-search>input[disabled],.button[disabled],fieldset[disabled] .pagination-previous,fieldset[disabled] .pagination-next,fieldset[disabled] .pagination-link,fieldset[disabled] .pagination-ellipsis,fieldset[disabled] .file-cta,fieldset[disabled] .file-name,fieldset[disabled] .select select,.select fieldset[disabled] select,fieldset[disabled] .textarea,fieldset[disabled] .input,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input,fieldset[disabled] .button{cursor:not-allowed}.tabs,.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis,.breadcrumb,.file,.button,.is-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.navbar-link:not(.is-arrowless)::after,.select:not(.is-multiple):not(.is-loading)::after{border:3px solid rgba(0,0,0,0);border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:0.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:0.625em}.admonition:not(:last-child),.tabs:not(:last-child),.pagination:not(:last-child),.message:not(:last-child),.level:not(:last-child),.breadcrumb:not(:last-child),.block:not(:last-child),.title:not(:last-child),.subtitle:not(:last-child),.table-container:not(:last-child),.table:not(:last-child),.progress:not(:last-child),.notification:not(:last-child),.content:not(:last-child),.box:not(:last-child){margin-bottom:1.5rem}.modal-close,.delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,0.2);border:none;border-radius:9999px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}.modal-close::before,.delete::before,.modal-close::after,.delete::after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.modal-close::before,.delete::before{height:2px;width:50%}.modal-close::after,.delete::after{height:50%;width:2px}.modal-close:hover,.delete:hover,.modal-close:focus,.delete:focus{background-color:rgba(10,10,10,0.3)}.modal-close:active,.delete:active{background-color:rgba(10,10,10,0.4)}.is-small.modal-close,#documenter .docs-sidebar form.docs-search>input.modal-close,.is-small.delete,#documenter .docs-sidebar form.docs-search>input.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}.is-medium.modal-close,.is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}.is-large.modal-close,.is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}.control.is-loading::after,.select.is-loading::after,.loader,.button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #dbdbdb;border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}.hero-video,.modal-background,.modal,.image.is-square img,#documenter .docs-sidebar .docs-logo>img.is-square img,.image.is-square .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,.image.is-1by1 img,#documenter .docs-sidebar .docs-logo>img.is-1by1 img,.image.is-1by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,.image.is-5by4 img,#documenter .docs-sidebar .docs-logo>img.is-5by4 img,.image.is-5by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,.image.is-4by3 img,#documenter .docs-sidebar .docs-logo>img.is-4by3 img,.image.is-4by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,.image.is-3by2 img,#documenter .docs-sidebar .docs-logo>img.is-3by2 img,.image.is-3by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,.image.is-5by3 img,#documenter .docs-sidebar .docs-logo>img.is-5by3 img,.image.is-5by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,.image.is-16by9 img,#documenter .docs-sidebar .docs-logo>img.is-16by9 img,.image.is-16by9 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,.image.is-2by1 img,#documenter .docs-sidebar .docs-logo>img.is-2by1 img,.image.is-2by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,.image.is-3by1 img,#documenter .docs-sidebar .docs-logo>img.is-3by1 img,.image.is-3by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,.image.is-4by5 img,#documenter .docs-sidebar .docs-logo>img.is-4by5 img,.image.is-4by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,.image.is-3by4 img,#documenter .docs-sidebar .docs-logo>img.is-3by4 img,.image.is-3by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,.image.is-2by3 img,#documenter .docs-sidebar .docs-logo>img.is-2by3 img,.image.is-2by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,.image.is-3by5 img,#documenter .docs-sidebar .docs-logo>img.is-3by5 img,.image.is-3by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,.image.is-9by16 img,#documenter .docs-sidebar .docs-logo>img.is-9by16 img,.image.is-9by16 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,.image.is-1by2 img,#documenter .docs-sidebar .docs-logo>img.is-1by2 img,.image.is-1by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,.image.is-1by3 img,#documenter .docs-sidebar .docs-logo>img.is-1by3 img,.image.is-1by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio,.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}.navbar-burger{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#f5f5f5 !important}a.has-text-light:hover,a.has-text-light:focus{color:#dbdbdb !important}.has-background-light{background-color:#f5f5f5 !important}.has-text-dark{color:#363636 !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#1c1c1c !important}.has-background-dark{background-color:#363636 !important}.has-text-primary{color:#4eb5de !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#27a1d2 !important}.has-background-primary{background-color:#4eb5de !important}.has-text-primary-light{color:#eef8fc !important}a.has-text-primary-light:hover,a.has-text-primary-light:focus{color:#c3e6f4 !important}.has-background-primary-light{background-color:#eef8fc !important}.has-text-primary-dark{color:#1a6d8e !important}a.has-text-primary-dark:hover,a.has-text-primary-dark:focus{color:#228eb9 !important}.has-background-primary-dark{background-color:#1a6d8e !important}.has-text-link{color:#2e63b8 !important}a.has-text-link:hover,a.has-text-link:focus{color:#244d8f !important}.has-background-link{background-color:#2e63b8 !important}.has-text-link-light{color:#eff3fb !important}a.has-text-link-light:hover,a.has-text-link-light:focus{color:#c6d6f1 !important}.has-background-link-light{background-color:#eff3fb !important}.has-text-link-dark{color:#3169c4 !important}a.has-text-link-dark:hover,a.has-text-link-dark:focus{color:#5485d4 !important}.has-background-link-dark{background-color:#3169c4 !important}.has-text-info{color:#3c5dcd !important}a.has-text-info:hover,a.has-text-info:focus{color:#2c48aa !important}.has-background-info{background-color:#3c5dcd !important}.has-text-info-light{color:#eff2fb !important}a.has-text-info-light:hover,a.has-text-info-light:focus{color:#c6d0f0 !important}.has-background-info-light{background-color:#eff2fb !important}.has-text-info-dark{color:#3253c3 !important}a.has-text-info-dark:hover,a.has-text-info-dark:focus{color:#5571d3 !important}.has-background-info-dark{background-color:#3253c3 !important}.has-text-success{color:#259a12 !important}a.has-text-success:hover,a.has-text-success:focus{color:#1a6c0d !important}.has-background-success{background-color:#259a12 !important}.has-text-success-light{color:#effded !important}a.has-text-success-light:hover,a.has-text-success-light:focus{color:#c7f8bf !important}.has-background-success-light{background-color:#effded !important}.has-text-success-dark{color:#2ec016 !important}a.has-text-success-dark:hover,a.has-text-success-dark:focus{color:#3fe524 !important}.has-background-success-dark{background-color:#2ec016 !important}.has-text-warning{color:#a98800 !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#765f00 !important}.has-background-warning{background-color:#a98800 !important}.has-text-warning-light{color:#fffbeb !important}a.has-text-warning-light:hover,a.has-text-warning-light:focus{color:#fff1b8 !important}.has-background-warning-light{background-color:#fffbeb !important}.has-text-warning-dark{color:#cca400 !important}a.has-text-warning-dark:hover,a.has-text-warning-dark:focus{color:#ffcd00 !important}.has-background-warning-dark{background-color:#cca400 !important}.has-text-danger{color:#cb3c33 !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#a23029 !important}.has-background-danger{background-color:#cb3c33 !important}.has-text-danger-light{color:#fbefef !important}a.has-text-danger-light:hover,a.has-text-danger-light:focus{color:#f1c8c6 !important}.has-background-danger-light{background-color:#fbefef !important}.has-text-danger-dark{color:#c03930 !important}a.has-text-danger-dark:hover,a.has-text-danger-dark:focus{color:#d35850 !important}.has-background-danger-dark{background-color:#c03930 !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#363636 !important}.has-background-grey-darker{background-color:#363636 !important}.has-text-grey-dark{color:#4a4a4a !important}.has-background-grey-dark{background-color:#4a4a4a !important}.has-text-grey{color:#6b6b6b !important}.has-background-grey{background-color:#6b6b6b !important}.has-text-grey-light{color:#b5b5b5 !important}.has-background-grey-light{background-color:#b5b5b5 !important}.has-text-grey-lighter{color:#dbdbdb !important}.has-background-grey-lighter{background-color:#dbdbdb !important}.has-text-white-ter{color:#f5f5f5 !important}.has-background-white-ter{background-color:#f5f5f5 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.is-flex-direction-row{flex-direction:row !important}.is-flex-direction-row-reverse{flex-direction:row-reverse !important}.is-flex-direction-column{flex-direction:column !important}.is-flex-direction-column-reverse{flex-direction:column-reverse !important}.is-flex-wrap-nowrap{flex-wrap:nowrap !important}.is-flex-wrap-wrap{flex-wrap:wrap !important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse !important}.is-justify-content-flex-start{justify-content:flex-start !important}.is-justify-content-flex-end{justify-content:flex-end !important}.is-justify-content-center{justify-content:center !important}.is-justify-content-space-between{justify-content:space-between !important}.is-justify-content-space-around{justify-content:space-around !important}.is-justify-content-space-evenly{justify-content:space-evenly !important}.is-justify-content-start{justify-content:start !important}.is-justify-content-end{justify-content:end !important}.is-justify-content-left{justify-content:left !important}.is-justify-content-right{justify-content:right !important}.is-align-content-flex-start{align-content:flex-start !important}.is-align-content-flex-end{align-content:flex-end !important}.is-align-content-center{align-content:center !important}.is-align-content-space-between{align-content:space-between !important}.is-align-content-space-around{align-content:space-around !important}.is-align-content-space-evenly{align-content:space-evenly !important}.is-align-content-stretch{align-content:stretch !important}.is-align-content-start{align-content:start !important}.is-align-content-end{align-content:end !important}.is-align-content-baseline{align-content:baseline !important}.is-align-items-stretch{align-items:stretch !important}.is-align-items-flex-start{align-items:flex-start !important}.is-align-items-flex-end{align-items:flex-end !important}.is-align-items-center{align-items:center !important}.is-align-items-baseline{align-items:baseline !important}.is-align-items-start{align-items:start !important}.is-align-items-end{align-items:end !important}.is-align-items-self-start{align-items:self-start !important}.is-align-items-self-end{align-items:self-end !important}.is-align-self-auto{align-self:auto !important}.is-align-self-flex-start{align-self:flex-start !important}.is-align-self-flex-end{align-self:flex-end !important}.is-align-self-center{align-self:center !important}.is-align-self-baseline{align-self:baseline !important}.is-align-self-stretch{align-self:stretch !important}.is-flex-grow-0{flex-grow:0 !important}.is-flex-grow-1{flex-grow:1 !important}.is-flex-grow-2{flex-grow:2 !important}.is-flex-grow-3{flex-grow:3 !important}.is-flex-grow-4{flex-grow:4 !important}.is-flex-grow-5{flex-grow:5 !important}.is-flex-shrink-0{flex-shrink:0 !important}.is-flex-shrink-1{flex-shrink:1 !important}.is-flex-shrink-2{flex-shrink:2 !important}.is-flex-shrink-3{flex-shrink:3 !important}.is-flex-shrink-4{flex-shrink:4 !important}.is-flex-shrink-5{flex-shrink:5 !important}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-clickable{cursor:pointer !important;pointer-events:all !important}.is-clipped{overflow:hidden !important}.is-relative{position:relative !important}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.m-0{margin:0 !important}.mt-0{margin-top:0 !important}.mr-0{margin-right:0 !important}.mb-0{margin-bottom:0 !important}.ml-0{margin-left:0 !important}.mx-0{margin-left:0 !important;margin-right:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:.25rem !important}.mt-1{margin-top:.25rem !important}.mr-1{margin-right:.25rem !important}.mb-1{margin-bottom:.25rem !important}.ml-1{margin-left:.25rem !important}.mx-1{margin-left:.25rem !important;margin-right:.25rem !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.m-2{margin:.5rem !important}.mt-2{margin-top:.5rem !important}.mr-2{margin-right:.5rem !important}.mb-2{margin-bottom:.5rem !important}.ml-2{margin-left:.5rem !important}.mx-2{margin-left:.5rem !important;margin-right:.5rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.m-3{margin:.75rem !important}.mt-3{margin-top:.75rem !important}.mr-3{margin-right:.75rem !important}.mb-3{margin-bottom:.75rem !important}.ml-3{margin-left:.75rem !important}.mx-3{margin-left:.75rem !important;margin-right:.75rem !important}.my-3{margin-top:.75rem !important;margin-bottom:.75rem !important}.m-4{margin:1rem !important}.mt-4{margin-top:1rem !important}.mr-4{margin-right:1rem !important}.mb-4{margin-bottom:1rem !important}.ml-4{margin-left:1rem !important}.mx-4{margin-left:1rem !important;margin-right:1rem !important}.my-4{margin-top:1rem !important;margin-bottom:1rem !important}.m-5{margin:1.5rem !important}.mt-5{margin-top:1.5rem !important}.mr-5{margin-right:1.5rem !important}.mb-5{margin-bottom:1.5rem !important}.ml-5{margin-left:1.5rem !important}.mx-5{margin-left:1.5rem !important;margin-right:1.5rem !important}.my-5{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-6{margin:3rem !important}.mt-6{margin-top:3rem !important}.mr-6{margin-right:3rem !important}.mb-6{margin-bottom:3rem !important}.ml-6{margin-left:3rem !important}.mx-6{margin-left:3rem !important;margin-right:3rem !important}.my-6{margin-top:3rem !important;margin-bottom:3rem !important}.m-auto{margin:auto !important}.mt-auto{margin-top:auto !important}.mr-auto{margin-right:auto !important}.mb-auto{margin-bottom:auto !important}.ml-auto{margin-left:auto !important}.mx-auto{margin-left:auto !important;margin-right:auto !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.p-0{padding:0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-left:0 !important;padding-right:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:.25rem !important}.pt-1{padding-top:.25rem !important}.pr-1{padding-right:.25rem !important}.pb-1{padding-bottom:.25rem !important}.pl-1{padding-left:.25rem !important}.px-1{padding-left:.25rem !important;padding-right:.25rem !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.p-2{padding:.5rem !important}.pt-2{padding-top:.5rem !important}.pr-2{padding-right:.5rem !important}.pb-2{padding-bottom:.5rem !important}.pl-2{padding-left:.5rem !important}.px-2{padding-left:.5rem !important;padding-right:.5rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.p-3{padding:.75rem !important}.pt-3{padding-top:.75rem !important}.pr-3{padding-right:.75rem !important}.pb-3{padding-bottom:.75rem !important}.pl-3{padding-left:.75rem !important}.px-3{padding-left:.75rem !important;padding-right:.75rem !important}.py-3{padding-top:.75rem !important;padding-bottom:.75rem !important}.p-4{padding:1rem !important}.pt-4{padding-top:1rem !important}.pr-4{padding-right:1rem !important}.pb-4{padding-bottom:1rem !important}.pl-4{padding-left:1rem !important}.px-4{padding-left:1rem !important;padding-right:1rem !important}.py-4{padding-top:1rem !important;padding-bottom:1rem !important}.p-5{padding:1.5rem !important}.pt-5{padding-top:1.5rem !important}.pr-5{padding-right:1.5rem !important}.pb-5{padding-bottom:1.5rem !important}.pl-5{padding-left:1.5rem !important}.px-5{padding-left:1.5rem !important;padding-right:1.5rem !important}.py-5{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-6{padding:3rem !important}.pt-6{padding-top:3rem !important}.pr-6{padding-right:3rem !important}.pb-6{padding-bottom:3rem !important}.pl-6{padding-left:3rem !important}.px-6{padding-left:3rem !important;padding-right:3rem !important}.py-6{padding-top:3rem !important;padding-bottom:3rem !important}.p-auto{padding:auto !important}.pt-auto{padding-top:auto !important}.pr-auto{padding-right:auto !important}.pb-auto{padding-bottom:auto !important}.pl-auto{padding-left:auto !important}.px-auto{padding-left:auto !important;padding-right:auto !important}.py-auto{padding-top:auto !important;padding-bottom:auto !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:1rem !important}.is-size-7,.docstring>section>a.docs-sourcelink{font-size:.75rem !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:1rem !important}.is-size-7-mobile{font-size:.75rem !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:1rem !important}.is-size-7-tablet{font-size:.75rem !important}}@media screen and (max-width: 1055px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:1rem !important}.is-size-7-touch{font-size:.75rem !important}}@media screen and (min-width: 1056px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:1rem !important}.is-size-7-desktop{font-size:.75rem !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:1rem !important}.is-size-7-widescreen{font-size:.75rem !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:1rem !important}.is-size-7-fullhd{font-size:.75rem !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1055px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1056px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1055px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1056px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1055px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1056px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1055px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1056px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.is-underlined{text-decoration:underline !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-secondary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-sans-serif{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-monospace{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-family-code{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1055px){.is-block-touch{display:block !important}}@media screen and (min-width: 1056px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1055px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1056px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1055px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1056px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1055px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1056px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1055px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1056px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:0.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:0.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1055px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1056px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1055px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1056px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}html{background-color:#fff;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}article,aside,figure,footer,header,hgroup,section{display:block}body,button,input,optgroup,select,textarea{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}body{color:#222;font-size:1em;font-weight:400;line-height:1.5}a{color:#2e63b8;cursor:pointer;text-decoration:none}a strong{color:currentColor}a:hover{color:#363636}code{background-color:rgba(0,0,0,0.05);color:#000;font-size:.875em;font-weight:normal;padding:.1em}hr{background-color:#f5f5f5;border:none;display:block;height:2px;margin:1.5rem 0}img{height:auto;max-width:100%}input[type="checkbox"],input[type="radio"]{vertical-align:baseline}small{font-size:.875em}span{font-style:inherit;font-weight:inherit}strong{color:#222;font-weight:700}fieldset{border:none}pre{-webkit-overflow-scrolling:touch;background-color:#f5f5f5;color:#222;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}table td,table th{vertical-align:top}table td:not([align]),table th:not([align]){text-align:inherit}table th{color:#222}@keyframes spinAround{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}.box{background-color:#fff;border-radius:6px;box-shadow:#bbb;color:#222;display:block;padding:1.25rem}a.box:hover,a.box:focus{box-shadow:0 0.5em 1em -0.125em rgba(10,10,10,0.1),0 0 0 1px #2e63b8}a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2),0 0 0 1px #2e63b8}.button{background-color:#fff;border-color:#dbdbdb;border-width:1px;color:#222;cursor:pointer;justify-content:center;padding-bottom:calc(0.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(0.5em - 1px);text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon,.button .icon.is-small,.button #documenter .docs-sidebar form.docs-search>input.icon,#documenter .docs-sidebar .button form.docs-search>input.icon,.button .icon.is-medium,.button .icon.is-large{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-left:calc(-0.5em - 1px);margin-right:.25em}.button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-0.5em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-0.5em - 1px);margin-right:calc(-0.5em - 1px)}.button:hover,.button.is-hovered{border-color:#b5b5b5;color:#363636}.button:focus,.button.is-focused{border-color:#3c5dcd;color:#363636}.button:focus:not(:active),.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.button:active,.button.is-active{border-color:#4a4a4a;color:#363636}.button.is-text{background-color:transparent;border-color:transparent;color:#222;text-decoration:underline}.button.is-text:hover,.button.is-text.is-hovered,.button.is-text:focus,.button.is-text.is-focused{background-color:#f5f5f5;color:#222}.button.is-text:active,.button.is-text.is-active{background-color:#e8e8e8;color:#222}.button.is-text[disabled],fieldset[disabled] .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}.button.is-ghost{background:none;border-color:rgba(0,0,0,0);color:#2e63b8;text-decoration:none}.button.is-ghost:hover,.button.is-ghost.is-hovered{color:#2e63b8;text-decoration:underline}.button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}.button.is-white:hover,.button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.button.is-white:focus,.button.is-white.is-focused{border-color:transparent;color:#0a0a0a}.button.is-white:focus:not(:active),.button.is-white.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}.button.is-white:active,.button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.button.is-white[disabled],fieldset[disabled] .button.is-white{background-color:#fff;border-color:#fff;box-shadow:none}.button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted:hover,.button.is-white.is-inverted.is-hovered{background-color:#000}.button.is-white.is-inverted[disabled],fieldset[disabled] .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}.button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-white.is-outlined:hover,.button.is-white.is-outlined.is-hovered,.button.is-white.is-outlined:focus,.button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}.button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-white.is-outlined.is-loading:hover::after,.button.is-white.is-outlined.is-loading.is-hovered::after,.button.is-white.is-outlined.is-loading:focus::after,.button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-white.is-outlined[disabled],fieldset[disabled] .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-white.is-inverted.is-outlined:hover,.button.is-white.is-inverted.is-outlined.is-hovered,.button.is-white.is-inverted.is-outlined:focus,.button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted.is-outlined.is-loading:hover::after,.button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-white.is-inverted.is-outlined.is-loading:focus::after,.button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}.button.is-black:hover,.button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}.button.is-black:focus,.button.is-black.is-focused{border-color:transparent;color:#fff}.button.is-black:focus:not(:active),.button.is-black.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}.button.is-black:active,.button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}.button.is-black[disabled],fieldset[disabled] .button.is-black{background-color:#0a0a0a;border-color:#0a0a0a;box-shadow:none}.button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted:hover,.button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-black.is-inverted[disabled],fieldset[disabled] .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}.button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-black.is-outlined:hover,.button.is-black.is-outlined.is-hovered,.button.is-black.is-outlined:focus,.button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-black.is-outlined.is-loading:hover::after,.button.is-black.is-outlined.is-loading.is-hovered::after,.button.is-black.is-outlined.is-loading:focus::after,.button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-black.is-outlined[disabled],fieldset[disabled] .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-black.is-inverted.is-outlined:hover,.button.is-black.is-inverted.is-outlined.is-hovered,.button.is-black.is-inverted.is-outlined:focus,.button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted.is-outlined.is-loading:hover::after,.button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-black.is-inverted.is-outlined.is-loading:focus::after,.button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-light{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-light:hover,.button.is-light.is-hovered{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-light:focus,.button.is-light.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-light:focus:not(:active),.button.is-light.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}.button.is-light:active,.button.is-light.is-active{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-light[disabled],fieldset[disabled] .button.is-light{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none}.button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);color:#f5f5f5}.button.is-light.is-inverted:hover,.button.is-light.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}.button.is-light.is-inverted[disabled],fieldset[disabled] .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#f5f5f5}.button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}.button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}.button.is-light.is-outlined:hover,.button.is-light.is-outlined.is-hovered,.button.is-light.is-outlined:focus,.button.is-light.is-outlined.is-focused{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}.button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-light.is-outlined.is-loading:hover::after,.button.is-light.is-outlined.is-loading.is-hovered::after,.button.is-light.is-outlined.is-loading:focus::after,.button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}.button.is-light.is-outlined[disabled],fieldset[disabled] .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}.button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}.button.is-light.is-inverted.is-outlined:hover,.button.is-light.is-inverted.is-outlined.is-hovered,.button.is-light.is-inverted.is-outlined:focus,.button.is-light.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#f5f5f5}.button.is-light.is-inverted.is-outlined.is-loading:hover::after,.button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-light.is-inverted.is-outlined.is-loading:focus::after,.button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}.button.is-dark,.content kbd.button{background-color:#363636;border-color:transparent;color:#fff}.button.is-dark:hover,.content kbd.button:hover,.button.is-dark.is-hovered,.content kbd.button.is-hovered{background-color:#2f2f2f;border-color:transparent;color:#fff}.button.is-dark:focus,.content kbd.button:focus,.button.is-dark.is-focused,.content kbd.button.is-focused{border-color:transparent;color:#fff}.button.is-dark:focus:not(:active),.content kbd.button:focus:not(:active),.button.is-dark.is-focused:not(:active),.content kbd.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(54,54,54,0.25)}.button.is-dark:active,.content kbd.button:active,.button.is-dark.is-active,.content kbd.button.is-active{background-color:#292929;border-color:transparent;color:#fff}.button.is-dark[disabled],.content kbd.button[disabled],fieldset[disabled] .button.is-dark,fieldset[disabled] .content kbd.button,.content fieldset[disabled] kbd.button{background-color:#363636;border-color:#363636;box-shadow:none}.button.is-dark.is-inverted,.content kbd.button.is-inverted{background-color:#fff;color:#363636}.button.is-dark.is-inverted:hover,.content kbd.button.is-inverted:hover,.button.is-dark.is-inverted.is-hovered,.content kbd.button.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-dark.is-inverted[disabled],.content kbd.button.is-inverted[disabled],fieldset[disabled] .button.is-dark.is-inverted,fieldset[disabled] .content kbd.button.is-inverted,.content fieldset[disabled] kbd.button.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#363636}.button.is-dark.is-loading::after,.content kbd.button.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-dark.is-outlined,.content kbd.button.is-outlined{background-color:transparent;border-color:#363636;color:#363636}.button.is-dark.is-outlined:hover,.content kbd.button.is-outlined:hover,.button.is-dark.is-outlined.is-hovered,.content kbd.button.is-outlined.is-hovered,.button.is-dark.is-outlined:focus,.content kbd.button.is-outlined:focus,.button.is-dark.is-outlined.is-focused,.content kbd.button.is-outlined.is-focused{background-color:#363636;border-color:#363636;color:#fff}.button.is-dark.is-outlined.is-loading::after,.content kbd.button.is-outlined.is-loading::after{border-color:transparent transparent #363636 #363636 !important}.button.is-dark.is-outlined.is-loading:hover::after,.content kbd.button.is-outlined.is-loading:hover::after,.button.is-dark.is-outlined.is-loading.is-hovered::after,.content kbd.button.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-outlined.is-loading:focus::after,.content kbd.button.is-outlined.is-loading:focus::after,.button.is-dark.is-outlined.is-loading.is-focused::after,.content kbd.button.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-dark.is-outlined[disabled],.content kbd.button.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-outlined,fieldset[disabled] .content kbd.button.is-outlined,.content fieldset[disabled] kbd.button.is-outlined{background-color:transparent;border-color:#363636;box-shadow:none;color:#363636}.button.is-dark.is-inverted.is-outlined,.content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-dark.is-inverted.is-outlined:hover,.content kbd.button.is-inverted.is-outlined:hover,.button.is-dark.is-inverted.is-outlined.is-hovered,.content kbd.button.is-inverted.is-outlined.is-hovered,.button.is-dark.is-inverted.is-outlined:focus,.content kbd.button.is-inverted.is-outlined:focus,.button.is-dark.is-inverted.is-outlined.is-focused,.content kbd.button.is-inverted.is-outlined.is-focused{background-color:#fff;color:#363636}.button.is-dark.is-inverted.is-outlined.is-loading:hover::after,.content kbd.button.is-inverted.is-outlined.is-loading:hover::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,.content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-inverted.is-outlined.is-loading:focus::after,.content kbd.button.is-inverted.is-outlined.is-loading:focus::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,.content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #363636 #363636 !important}.button.is-dark.is-inverted.is-outlined[disabled],.content kbd.button.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-inverted.is-outlined,fieldset[disabled] .content kbd.button.is-inverted.is-outlined,.content fieldset[disabled] kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary,.docstring>section>a.button.docs-sourcelink{background-color:#4eb5de;border-color:transparent;color:#fff}.button.is-primary:hover,.docstring>section>a.button.docs-sourcelink:hover,.button.is-primary.is-hovered,.docstring>section>a.button.is-hovered.docs-sourcelink{background-color:#43b1dc;border-color:transparent;color:#fff}.button.is-primary:focus,.docstring>section>a.button.docs-sourcelink:focus,.button.is-primary.is-focused,.docstring>section>a.button.is-focused.docs-sourcelink{border-color:transparent;color:#fff}.button.is-primary:focus:not(:active),.docstring>section>a.button.docs-sourcelink:focus:not(:active),.button.is-primary.is-focused:not(:active),.docstring>section>a.button.is-focused.docs-sourcelink:not(:active){box-shadow:0 0 0 0.125em rgba(78,181,222,0.25)}.button.is-primary:active,.docstring>section>a.button.docs-sourcelink:active,.button.is-primary.is-active,.docstring>section>a.button.is-active.docs-sourcelink{background-color:#39acda;border-color:transparent;color:#fff}.button.is-primary[disabled],.docstring>section>a.button.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary,fieldset[disabled] .docstring>section>a.button.docs-sourcelink{background-color:#4eb5de;border-color:#4eb5de;box-shadow:none}.button.is-primary.is-inverted,.docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;color:#4eb5de}.button.is-primary.is-inverted:hover,.docstring>section>a.button.is-inverted.docs-sourcelink:hover,.button.is-primary.is-inverted.is-hovered,.docstring>section>a.button.is-inverted.is-hovered.docs-sourcelink{background-color:#f2f2f2}.button.is-primary.is-inverted[disabled],.docstring>section>a.button.is-inverted.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary.is-inverted,fieldset[disabled] .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;border-color:transparent;box-shadow:none;color:#4eb5de}.button.is-primary.is-loading::after,.docstring>section>a.button.is-loading.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}.button.is-primary.is-outlined,.docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#4eb5de;color:#4eb5de}.button.is-primary.is-outlined:hover,.docstring>section>a.button.is-outlined.docs-sourcelink:hover,.button.is-primary.is-outlined.is-hovered,.docstring>section>a.button.is-outlined.is-hovered.docs-sourcelink,.button.is-primary.is-outlined:focus,.docstring>section>a.button.is-outlined.docs-sourcelink:focus,.button.is-primary.is-outlined.is-focused,.docstring>section>a.button.is-outlined.is-focused.docs-sourcelink{background-color:#4eb5de;border-color:#4eb5de;color:#fff}.button.is-primary.is-outlined.is-loading::after,.docstring>section>a.button.is-outlined.is-loading.docs-sourcelink::after{border-color:transparent transparent #4eb5de #4eb5de !important}.button.is-primary.is-outlined.is-loading:hover::after,.docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:hover::after,.button.is-primary.is-outlined.is-loading.is-hovered::after,.docstring>section>a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after,.button.is-primary.is-outlined.is-loading:focus::after,.docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:focus::after,.button.is-primary.is-outlined.is-loading.is-focused::after,.docstring>section>a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}.button.is-primary.is-outlined[disabled],.docstring>section>a.button.is-outlined.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary.is-outlined,fieldset[disabled] .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#4eb5de;box-shadow:none;color:#4eb5de}.button.is-primary.is-inverted.is-outlined,.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;color:#fff}.button.is-primary.is-inverted.is-outlined:hover,.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:hover,.button.is-primary.is-inverted.is-outlined.is-hovered,.docstring>section>a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink,.button.is-primary.is-inverted.is-outlined:focus,.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:focus,.button.is-primary.is-inverted.is-outlined.is-focused,.docstring>section>a.button.is-inverted.is-outlined.is-focused.docs-sourcelink{background-color:#fff;color:#4eb5de}.button.is-primary.is-inverted.is-outlined.is-loading:hover::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after,.button.is-primary.is-inverted.is-outlined.is-loading:focus::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #4eb5de #4eb5de !important}.button.is-primary.is-inverted.is-outlined[disabled],.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary.is-inverted.is-outlined,fieldset[disabled] .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary.is-light,.docstring>section>a.button.is-light.docs-sourcelink{background-color:#eef8fc;color:#1a6d8e}.button.is-primary.is-light:hover,.docstring>section>a.button.is-light.docs-sourcelink:hover,.button.is-primary.is-light.is-hovered,.docstring>section>a.button.is-light.is-hovered.docs-sourcelink{background-color:#e3f3fa;border-color:transparent;color:#1a6d8e}.button.is-primary.is-light:active,.docstring>section>a.button.is-light.docs-sourcelink:active,.button.is-primary.is-light.is-active,.docstring>section>a.button.is-light.is-active.docs-sourcelink{background-color:#d8eff8;border-color:transparent;color:#1a6d8e}.button.is-link{background-color:#2e63b8;border-color:transparent;color:#fff}.button.is-link:hover,.button.is-link.is-hovered{background-color:#2b5eae;border-color:transparent;color:#fff}.button.is-link:focus,.button.is-link.is-focused{border-color:transparent;color:#fff}.button.is-link:focus:not(:active),.button.is-link.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.button.is-link:active,.button.is-link.is-active{background-color:#2958a4;border-color:transparent;color:#fff}.button.is-link[disabled],fieldset[disabled] .button.is-link{background-color:#2e63b8;border-color:#2e63b8;box-shadow:none}.button.is-link.is-inverted{background-color:#fff;color:#2e63b8}.button.is-link.is-inverted:hover,.button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-link.is-inverted[disabled],fieldset[disabled] .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#2e63b8}.button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-link.is-outlined{background-color:transparent;border-color:#2e63b8;color:#2e63b8}.button.is-link.is-outlined:hover,.button.is-link.is-outlined.is-hovered,.button.is-link.is-outlined:focus,.button.is-link.is-outlined.is-focused{background-color:#2e63b8;border-color:#2e63b8;color:#fff}.button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #2e63b8 #2e63b8 !important}.button.is-link.is-outlined.is-loading:hover::after,.button.is-link.is-outlined.is-loading.is-hovered::after,.button.is-link.is-outlined.is-loading:focus::after,.button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-link.is-outlined[disabled],fieldset[disabled] .button.is-link.is-outlined{background-color:transparent;border-color:#2e63b8;box-shadow:none;color:#2e63b8}.button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-link.is-inverted.is-outlined:hover,.button.is-link.is-inverted.is-outlined.is-hovered,.button.is-link.is-inverted.is-outlined:focus,.button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#2e63b8}.button.is-link.is-inverted.is-outlined.is-loading:hover::after,.button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-link.is-inverted.is-outlined.is-loading:focus::after,.button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #2e63b8 #2e63b8 !important}.button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-link.is-light{background-color:#eff3fb;color:#3169c4}.button.is-link.is-light:hover,.button.is-link.is-light.is-hovered{background-color:#e4ecf8;border-color:transparent;color:#3169c4}.button.is-link.is-light:active,.button.is-link.is-light.is-active{background-color:#dae5f6;border-color:transparent;color:#3169c4}.button.is-info{background-color:#3c5dcd;border-color:transparent;color:#fff}.button.is-info:hover,.button.is-info.is-hovered{background-color:#3355c9;border-color:transparent;color:#fff}.button.is-info:focus,.button.is-info.is-focused{border-color:transparent;color:#fff}.button.is-info:focus:not(:active),.button.is-info.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(60,93,205,0.25)}.button.is-info:active,.button.is-info.is-active{background-color:#3151bf;border-color:transparent;color:#fff}.button.is-info[disabled],fieldset[disabled] .button.is-info{background-color:#3c5dcd;border-color:#3c5dcd;box-shadow:none}.button.is-info.is-inverted{background-color:#fff;color:#3c5dcd}.button.is-info.is-inverted:hover,.button.is-info.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-info.is-inverted[disabled],fieldset[disabled] .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#3c5dcd}.button.is-info.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-info.is-outlined{background-color:transparent;border-color:#3c5dcd;color:#3c5dcd}.button.is-info.is-outlined:hover,.button.is-info.is-outlined.is-hovered,.button.is-info.is-outlined:focus,.button.is-info.is-outlined.is-focused{background-color:#3c5dcd;border-color:#3c5dcd;color:#fff}.button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #3c5dcd #3c5dcd !important}.button.is-info.is-outlined.is-loading:hover::after,.button.is-info.is-outlined.is-loading.is-hovered::after,.button.is-info.is-outlined.is-loading:focus::after,.button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-info.is-outlined[disabled],fieldset[disabled] .button.is-info.is-outlined{background-color:transparent;border-color:#3c5dcd;box-shadow:none;color:#3c5dcd}.button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-info.is-inverted.is-outlined:hover,.button.is-info.is-inverted.is-outlined.is-hovered,.button.is-info.is-inverted.is-outlined:focus,.button.is-info.is-inverted.is-outlined.is-focused{background-color:#fff;color:#3c5dcd}.button.is-info.is-inverted.is-outlined.is-loading:hover::after,.button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-info.is-inverted.is-outlined.is-loading:focus::after,.button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #3c5dcd #3c5dcd !important}.button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-info.is-light{background-color:#eff2fb;color:#3253c3}.button.is-info.is-light:hover,.button.is-info.is-light.is-hovered{background-color:#e5e9f8;border-color:transparent;color:#3253c3}.button.is-info.is-light:active,.button.is-info.is-light.is-active{background-color:#dae1f6;border-color:transparent;color:#3253c3}.button.is-success{background-color:#259a12;border-color:transparent;color:#fff}.button.is-success:hover,.button.is-success.is-hovered{background-color:#228f11;border-color:transparent;color:#fff}.button.is-success:focus,.button.is-success.is-focused{border-color:transparent;color:#fff}.button.is-success:focus:not(:active),.button.is-success.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(37,154,18,0.25)}.button.is-success:active,.button.is-success.is-active{background-color:#20830f;border-color:transparent;color:#fff}.button.is-success[disabled],fieldset[disabled] .button.is-success{background-color:#259a12;border-color:#259a12;box-shadow:none}.button.is-success.is-inverted{background-color:#fff;color:#259a12}.button.is-success.is-inverted:hover,.button.is-success.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-success.is-inverted[disabled],fieldset[disabled] .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#259a12}.button.is-success.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-success.is-outlined{background-color:transparent;border-color:#259a12;color:#259a12}.button.is-success.is-outlined:hover,.button.is-success.is-outlined.is-hovered,.button.is-success.is-outlined:focus,.button.is-success.is-outlined.is-focused{background-color:#259a12;border-color:#259a12;color:#fff}.button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #259a12 #259a12 !important}.button.is-success.is-outlined.is-loading:hover::after,.button.is-success.is-outlined.is-loading.is-hovered::after,.button.is-success.is-outlined.is-loading:focus::after,.button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-success.is-outlined[disabled],fieldset[disabled] .button.is-success.is-outlined{background-color:transparent;border-color:#259a12;box-shadow:none;color:#259a12}.button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-success.is-inverted.is-outlined:hover,.button.is-success.is-inverted.is-outlined.is-hovered,.button.is-success.is-inverted.is-outlined:focus,.button.is-success.is-inverted.is-outlined.is-focused{background-color:#fff;color:#259a12}.button.is-success.is-inverted.is-outlined.is-loading:hover::after,.button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-success.is-inverted.is-outlined.is-loading:focus::after,.button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #259a12 #259a12 !important}.button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-success.is-light{background-color:#effded;color:#2ec016}.button.is-success.is-light:hover,.button.is-success.is-light.is-hovered{background-color:#e5fce1;border-color:transparent;color:#2ec016}.button.is-success.is-light:active,.button.is-success.is-light.is-active{background-color:#dbfad6;border-color:transparent;color:#2ec016}.button.is-warning{background-color:#a98800;border-color:transparent;color:#fff}.button.is-warning:hover,.button.is-warning.is-hovered{background-color:#9c7d00;border-color:transparent;color:#fff}.button.is-warning:focus,.button.is-warning.is-focused{border-color:transparent;color:#fff}.button.is-warning:focus:not(:active),.button.is-warning.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(169,136,0,0.25)}.button.is-warning:active,.button.is-warning.is-active{background-color:#8f7300;border-color:transparent;color:#fff}.button.is-warning[disabled],fieldset[disabled] .button.is-warning{background-color:#a98800;border-color:#a98800;box-shadow:none}.button.is-warning.is-inverted{background-color:#fff;color:#a98800}.button.is-warning.is-inverted:hover,.button.is-warning.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-warning.is-inverted[disabled],fieldset[disabled] .button.is-warning.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#a98800}.button.is-warning.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-warning.is-outlined{background-color:transparent;border-color:#a98800;color:#a98800}.button.is-warning.is-outlined:hover,.button.is-warning.is-outlined.is-hovered,.button.is-warning.is-outlined:focus,.button.is-warning.is-outlined.is-focused{background-color:#a98800;border-color:#a98800;color:#fff}.button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #a98800 #a98800 !important}.button.is-warning.is-outlined.is-loading:hover::after,.button.is-warning.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-outlined.is-loading:focus::after,.button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-warning.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-outlined{background-color:transparent;border-color:#a98800;box-shadow:none;color:#a98800}.button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-warning.is-inverted.is-outlined:hover,.button.is-warning.is-inverted.is-outlined.is-hovered,.button.is-warning.is-inverted.is-outlined:focus,.button.is-warning.is-inverted.is-outlined.is-focused{background-color:#fff;color:#a98800}.button.is-warning.is-inverted.is-outlined.is-loading:hover::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-inverted.is-outlined.is-loading:focus::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #a98800 #a98800 !important}.button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-warning.is-light{background-color:#fffbeb;color:#cca400}.button.is-warning.is-light:hover,.button.is-warning.is-light.is-hovered{background-color:#fff9de;border-color:transparent;color:#cca400}.button.is-warning.is-light:active,.button.is-warning.is-light.is-active{background-color:#fff6d1;border-color:transparent;color:#cca400}.button.is-danger{background-color:#cb3c33;border-color:transparent;color:#fff}.button.is-danger:hover,.button.is-danger.is-hovered{background-color:#c13930;border-color:transparent;color:#fff}.button.is-danger:focus,.button.is-danger.is-focused{border-color:transparent;color:#fff}.button.is-danger:focus:not(:active),.button.is-danger.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(203,60,51,0.25)}.button.is-danger:active,.button.is-danger.is-active{background-color:#b7362e;border-color:transparent;color:#fff}.button.is-danger[disabled],fieldset[disabled] .button.is-danger{background-color:#cb3c33;border-color:#cb3c33;box-shadow:none}.button.is-danger.is-inverted{background-color:#fff;color:#cb3c33}.button.is-danger.is-inverted:hover,.button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-danger.is-inverted[disabled],fieldset[disabled] .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#cb3c33}.button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-danger.is-outlined{background-color:transparent;border-color:#cb3c33;color:#cb3c33}.button.is-danger.is-outlined:hover,.button.is-danger.is-outlined.is-hovered,.button.is-danger.is-outlined:focus,.button.is-danger.is-outlined.is-focused{background-color:#cb3c33;border-color:#cb3c33;color:#fff}.button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #cb3c33 #cb3c33 !important}.button.is-danger.is-outlined.is-loading:hover::after,.button.is-danger.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-outlined.is-loading:focus::after,.button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-danger.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-outlined{background-color:transparent;border-color:#cb3c33;box-shadow:none;color:#cb3c33}.button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-danger.is-inverted.is-outlined:hover,.button.is-danger.is-inverted.is-outlined.is-hovered,.button.is-danger.is-inverted.is-outlined:focus,.button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#cb3c33}.button.is-danger.is-inverted.is-outlined.is-loading:hover::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-inverted.is-outlined.is-loading:focus::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #cb3c33 #cb3c33 !important}.button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-danger.is-light{background-color:#fbefef;color:#c03930}.button.is-danger.is-light:hover,.button.is-danger.is-light.is-hovered{background-color:#f8e6e5;border-color:transparent;color:#c03930}.button.is-danger.is-light:active,.button.is-danger.is-light.is-active{background-color:#f6dcda;border-color:transparent;color:#c03930}.button.is-small,#documenter .docs-sidebar form.docs-search>input.button{font-size:.75rem}.button.is-small:not(.is-rounded),#documenter .docs-sidebar form.docs-search>input.button:not(.is-rounded){border-radius:2px}.button.is-normal{font-size:1rem}.button.is-medium{font-size:1.25rem}.button.is-large{font-size:1.5rem}.button[disabled],fieldset[disabled] .button{background-color:#fff;border-color:#dbdbdb;box-shadow:none;opacity:.5}.button.is-fullwidth{display:flex;width:100%}.button.is-loading{color:transparent !important;pointer-events:none}.button.is-loading::after{position:absolute;left:calc(50% - (1em * 0.5));top:calc(50% - (1em * 0.5));position:absolute !important}.button.is-static{background-color:#f5f5f5;border-color:#dbdbdb;color:#6b6b6b;box-shadow:none;pointer-events:none}.button.is-rounded,#documenter .docs-sidebar form.docs-search>input.button{border-radius:9999px;padding-left:calc(1em + 0.25em);padding-right:calc(1em + 0.25em)}.buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.buttons .button{margin-bottom:0.5rem}.buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}.buttons:last-child{margin-bottom:-0.5rem}.buttons:not(:last-child){margin-bottom:1rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:2px}.buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}.buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}.buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.buttons.has-addons .button:last-child{margin-right:0}.buttons.has-addons .button:hover,.buttons.has-addons .button.is-hovered{z-index:2}.buttons.has-addons .button:focus,.buttons.has-addons .button.is-focused,.buttons.has-addons .button:active,.buttons.has-addons .button.is-active,.buttons.has-addons .button.is-selected{z-index:3}.buttons.has-addons .button:focus:hover,.buttons.has-addons .button.is-focused:hover,.buttons.has-addons .button:active:hover,.buttons.has-addons .button.is-active:hover,.buttons.has-addons .button.is-selected:hover{z-index:4}.buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}.buttons.is-centered{justify-content:center}.buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}.buttons.is-right{justify-content:flex-end}.buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}@media screen and (max-width: 768px){.button.is-responsive.is-small,#documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.5625rem}.button.is-responsive,.button.is-responsive.is-normal{font-size:.65625rem}.button.is-responsive.is-medium{font-size:.75rem}.button.is-responsive.is-large{font-size:1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.button.is-responsive.is-small,#documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.65625rem}.button.is-responsive,.button.is-responsive.is-normal{font-size:.75rem}.button.is-responsive.is-medium{font-size:1rem}.button.is-responsive.is-large{font-size:1.25rem}}.container{flex-grow:1;margin:0 auto;position:relative;width:auto}.container.is-fluid{max-width:none !important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width: 1056px){.container{max-width:992px}}@media screen and (max-width: 1215px){.container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width: 1407px){.container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width: 1216px){.container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width: 1408px){.container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}.content li+li{margin-top:0.25em}.content p:not(:last-child),.content dl:not(:last-child),.content ol:not(:last-child),.content ul:not(:last-child),.content blockquote:not(:last-child),.content pre:not(:last-child),.content table:not(:last-child){margin-bottom:1em}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{color:#222;font-weight:600;line-height:1.125}.content h1{font-size:2em;margin-bottom:0.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:0.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:0.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:0.8em}.content h5{font-size:1.125em;margin-bottom:0.8888em}.content h6{font-size:1em;margin-bottom:1em}.content blockquote{background-color:#f5f5f5;border-left:5px solid #dbdbdb;padding:1.25em 1.5em}.content ol{list-style-position:outside;margin-left:2em;margin-top:1em}.content ol:not([type]){list-style-type:decimal}.content ol.is-lower-alpha:not([type]){list-style-type:lower-alpha}.content ol.is-lower-roman:not([type]){list-style-type:lower-roman}.content ol.is-upper-alpha:not([type]){list-style-type:upper-alpha}.content ol.is-upper-roman:not([type]){list-style-type:upper-roman}.content ul{list-style:disc outside;margin-left:2em;margin-top:1em}.content ul ul{list-style-type:circle;margin-top:0.5em}.content ul ul ul{list-style-type:square}.content dd{margin-left:2em}.content figure{margin-left:2em;margin-right:2em;text-align:center}.content figure:not(:first-child){margin-top:2em}.content figure:not(:last-child){margin-bottom:2em}.content figure img{display:inline-block}.content figure figcaption{font-style:italic}.content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:0;white-space:pre;word-wrap:normal}.content sup,.content sub{font-size:75%}.content table{width:100%}.content table td,.content table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}.content table th{color:#222}.content table th:not([align]){text-align:inherit}.content table thead td,.content table thead th{border-width:0 0 2px;color:#222}.content table tfoot td,.content table tfoot th{border-width:2px 0 0;color:#222}.content table tbody tr:last-child td,.content table tbody tr:last-child th{border-bottom-width:0}.content .tabs li+li{margin-top:0}.content.is-small,#documenter .docs-sidebar form.docs-search>input.content{font-size:.75rem}.content.is-normal{font-size:1rem}.content.is-medium{font-size:1.25rem}.content.is-large{font-size:1.5rem}.icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}.icon.is-small,#documenter .docs-sidebar form.docs-search>input.icon{height:1rem;width:1rem}.icon.is-medium{height:2rem;width:2rem}.icon.is-large{height:3rem;width:3rem}.icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}.icon-text .icon{flex-grow:0;flex-shrink:0}.icon-text .icon:not(:last-child){margin-right:.25em}.icon-text .icon:not(:first-child){margin-left:.25em}div.icon-text{display:flex}.image,#documenter .docs-sidebar .docs-logo>img{display:block;position:relative}.image img,#documenter .docs-sidebar .docs-logo>img img{display:block;height:auto;width:100%}.image img.is-rounded,#documenter .docs-sidebar .docs-logo>img img.is-rounded{border-radius:9999px}.image.is-fullwidth,#documenter .docs-sidebar .docs-logo>img.is-fullwidth{width:100%}.image.is-square img,#documenter .docs-sidebar .docs-logo>img.is-square img,.image.is-square .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,.image.is-1by1 img,#documenter .docs-sidebar .docs-logo>img.is-1by1 img,.image.is-1by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,.image.is-5by4 img,#documenter .docs-sidebar .docs-logo>img.is-5by4 img,.image.is-5by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,.image.is-4by3 img,#documenter .docs-sidebar .docs-logo>img.is-4by3 img,.image.is-4by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,.image.is-3by2 img,#documenter .docs-sidebar .docs-logo>img.is-3by2 img,.image.is-3by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,.image.is-5by3 img,#documenter .docs-sidebar .docs-logo>img.is-5by3 img,.image.is-5by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,.image.is-16by9 img,#documenter .docs-sidebar .docs-logo>img.is-16by9 img,.image.is-16by9 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,.image.is-2by1 img,#documenter .docs-sidebar .docs-logo>img.is-2by1 img,.image.is-2by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,.image.is-3by1 img,#documenter .docs-sidebar .docs-logo>img.is-3by1 img,.image.is-3by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,.image.is-4by5 img,#documenter .docs-sidebar .docs-logo>img.is-4by5 img,.image.is-4by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,.image.is-3by4 img,#documenter .docs-sidebar .docs-logo>img.is-3by4 img,.image.is-3by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,.image.is-2by3 img,#documenter .docs-sidebar .docs-logo>img.is-2by3 img,.image.is-2by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,.image.is-3by5 img,#documenter .docs-sidebar .docs-logo>img.is-3by5 img,.image.is-3by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,.image.is-9by16 img,#documenter .docs-sidebar .docs-logo>img.is-9by16 img,.image.is-9by16 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,.image.is-1by2 img,#documenter .docs-sidebar .docs-logo>img.is-1by2 img,.image.is-1by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,.image.is-1by3 img,#documenter .docs-sidebar .docs-logo>img.is-1by3 img,.image.is-1by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio{height:100%;width:100%}.image.is-square,#documenter .docs-sidebar .docs-logo>img.is-square,.image.is-1by1,#documenter .docs-sidebar .docs-logo>img.is-1by1{padding-top:100%}.image.is-5by4,#documenter .docs-sidebar .docs-logo>img.is-5by4{padding-top:80%}.image.is-4by3,#documenter .docs-sidebar .docs-logo>img.is-4by3{padding-top:75%}.image.is-3by2,#documenter .docs-sidebar .docs-logo>img.is-3by2{padding-top:66.6666%}.image.is-5by3,#documenter .docs-sidebar .docs-logo>img.is-5by3{padding-top:60%}.image.is-16by9,#documenter .docs-sidebar .docs-logo>img.is-16by9{padding-top:56.25%}.image.is-2by1,#documenter .docs-sidebar .docs-logo>img.is-2by1{padding-top:50%}.image.is-3by1,#documenter .docs-sidebar .docs-logo>img.is-3by1{padding-top:33.3333%}.image.is-4by5,#documenter .docs-sidebar .docs-logo>img.is-4by5{padding-top:125%}.image.is-3by4,#documenter .docs-sidebar .docs-logo>img.is-3by4{padding-top:133.3333%}.image.is-2by3,#documenter .docs-sidebar .docs-logo>img.is-2by3{padding-top:150%}.image.is-3by5,#documenter .docs-sidebar .docs-logo>img.is-3by5{padding-top:166.6666%}.image.is-9by16,#documenter .docs-sidebar .docs-logo>img.is-9by16{padding-top:177.7777%}.image.is-1by2,#documenter .docs-sidebar .docs-logo>img.is-1by2{padding-top:200%}.image.is-1by3,#documenter .docs-sidebar .docs-logo>img.is-1by3{padding-top:300%}.image.is-16x16,#documenter .docs-sidebar .docs-logo>img.is-16x16{height:16px;width:16px}.image.is-24x24,#documenter .docs-sidebar .docs-logo>img.is-24x24{height:24px;width:24px}.image.is-32x32,#documenter .docs-sidebar .docs-logo>img.is-32x32{height:32px;width:32px}.image.is-48x48,#documenter .docs-sidebar .docs-logo>img.is-48x48{height:48px;width:48px}.image.is-64x64,#documenter .docs-sidebar .docs-logo>img.is-64x64{height:64px;width:64px}.image.is-96x96,#documenter .docs-sidebar .docs-logo>img.is-96x96{height:96px;width:96px}.image.is-128x128,#documenter .docs-sidebar .docs-logo>img.is-128x128{height:128px;width:128px}.notification{background-color:#f5f5f5;border-radius:4px;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}.notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code,.notification pre{background:#fff}.notification pre code{background:transparent}.notification>.delete{right:.5rem;position:absolute;top:0.5rem}.notification .title,.notification .subtitle,.notification .content{color:currentColor}.notification.is-white{background-color:#fff;color:#0a0a0a}.notification.is-black{background-color:#0a0a0a;color:#fff}.notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.notification.is-dark,.content kbd.notification{background-color:#363636;color:#fff}.notification.is-primary,.docstring>section>a.notification.docs-sourcelink{background-color:#4eb5de;color:#fff}.notification.is-primary.is-light,.docstring>section>a.notification.is-light.docs-sourcelink{background-color:#eef8fc;color:#1a6d8e}.notification.is-link{background-color:#2e63b8;color:#fff}.notification.is-link.is-light{background-color:#eff3fb;color:#3169c4}.notification.is-info{background-color:#3c5dcd;color:#fff}.notification.is-info.is-light{background-color:#eff2fb;color:#3253c3}.notification.is-success{background-color:#259a12;color:#fff}.notification.is-success.is-light{background-color:#effded;color:#2ec016}.notification.is-warning{background-color:#a98800;color:#fff}.notification.is-warning.is-light{background-color:#fffbeb;color:#cca400}.notification.is-danger{background-color:#cb3c33;color:#fff}.notification.is-danger.is-light{background-color:#fbefef;color:#c03930}.progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}.progress::-webkit-progress-bar{background-color:#ededed}.progress::-webkit-progress-value{background-color:#222}.progress::-moz-progress-bar{background-color:#222}.progress::-ms-fill{background-color:#222;border:none}.progress.is-white::-webkit-progress-value{background-color:#fff}.progress.is-white::-moz-progress-bar{background-color:#fff}.progress.is-white::-ms-fill{background-color:#fff}.progress.is-white:indeterminate{background-image:linear-gradient(to right, #fff 30%, #ededed 30%)}.progress.is-black::-webkit-progress-value{background-color:#0a0a0a}.progress.is-black::-moz-progress-bar{background-color:#0a0a0a}.progress.is-black::-ms-fill{background-color:#0a0a0a}.progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #ededed 30%)}.progress.is-light::-webkit-progress-value{background-color:#f5f5f5}.progress.is-light::-moz-progress-bar{background-color:#f5f5f5}.progress.is-light::-ms-fill{background-color:#f5f5f5}.progress.is-light:indeterminate{background-image:linear-gradient(to right, #f5f5f5 30%, #ededed 30%)}.progress.is-dark::-webkit-progress-value,.content kbd.progress::-webkit-progress-value{background-color:#363636}.progress.is-dark::-moz-progress-bar,.content kbd.progress::-moz-progress-bar{background-color:#363636}.progress.is-dark::-ms-fill,.content kbd.progress::-ms-fill{background-color:#363636}.progress.is-dark:indeterminate,.content kbd.progress:indeterminate{background-image:linear-gradient(to right, #363636 30%, #ededed 30%)}.progress.is-primary::-webkit-progress-value,.docstring>section>a.progress.docs-sourcelink::-webkit-progress-value{background-color:#4eb5de}.progress.is-primary::-moz-progress-bar,.docstring>section>a.progress.docs-sourcelink::-moz-progress-bar{background-color:#4eb5de}.progress.is-primary::-ms-fill,.docstring>section>a.progress.docs-sourcelink::-ms-fill{background-color:#4eb5de}.progress.is-primary:indeterminate,.docstring>section>a.progress.docs-sourcelink:indeterminate{background-image:linear-gradient(to right, #4eb5de 30%, #ededed 30%)}.progress.is-link::-webkit-progress-value{background-color:#2e63b8}.progress.is-link::-moz-progress-bar{background-color:#2e63b8}.progress.is-link::-ms-fill{background-color:#2e63b8}.progress.is-link:indeterminate{background-image:linear-gradient(to right, #2e63b8 30%, #ededed 30%)}.progress.is-info::-webkit-progress-value{background-color:#3c5dcd}.progress.is-info::-moz-progress-bar{background-color:#3c5dcd}.progress.is-info::-ms-fill{background-color:#3c5dcd}.progress.is-info:indeterminate{background-image:linear-gradient(to right, #3c5dcd 30%, #ededed 30%)}.progress.is-success::-webkit-progress-value{background-color:#259a12}.progress.is-success::-moz-progress-bar{background-color:#259a12}.progress.is-success::-ms-fill{background-color:#259a12}.progress.is-success:indeterminate{background-image:linear-gradient(to right, #259a12 30%, #ededed 30%)}.progress.is-warning::-webkit-progress-value{background-color:#a98800}.progress.is-warning::-moz-progress-bar{background-color:#a98800}.progress.is-warning::-ms-fill{background-color:#a98800}.progress.is-warning:indeterminate{background-image:linear-gradient(to right, #a98800 30%, #ededed 30%)}.progress.is-danger::-webkit-progress-value{background-color:#cb3c33}.progress.is-danger::-moz-progress-bar{background-color:#cb3c33}.progress.is-danger::-ms-fill{background-color:#cb3c33}.progress.is-danger:indeterminate{background-image:linear-gradient(to right, #cb3c33 30%, #ededed 30%)}.progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#ededed;background-image:linear-gradient(to right, #222 30%, #ededed 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}.progress:indeterminate::-webkit-progress-bar{background-color:transparent}.progress:indeterminate::-moz-progress-bar{background-color:transparent}.progress:indeterminate::-ms-fill{animation-name:none}.progress.is-small,#documenter .docs-sidebar form.docs-search>input.progress{height:.75rem}.progress.is-medium{height:1.25rem}.progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}.table{background-color:#fff;color:#222}.table td,.table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}.table td.is-white,.table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}.table td.is-black,.table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.table td.is-light,.table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}.table td.is-dark,.table th.is-dark{background-color:#363636;border-color:#363636;color:#fff}.table td.is-primary,.table th.is-primary{background-color:#4eb5de;border-color:#4eb5de;color:#fff}.table td.is-link,.table th.is-link{background-color:#2e63b8;border-color:#2e63b8;color:#fff}.table td.is-info,.table th.is-info{background-color:#3c5dcd;border-color:#3c5dcd;color:#fff}.table td.is-success,.table th.is-success{background-color:#259a12;border-color:#259a12;color:#fff}.table td.is-warning,.table th.is-warning{background-color:#a98800;border-color:#a98800;color:#fff}.table td.is-danger,.table th.is-danger{background-color:#cb3c33;border-color:#cb3c33;color:#fff}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table td.is-selected,.table th.is-selected{background-color:#4eb5de;color:#fff}.table td.is-selected a,.table td.is-selected strong,.table th.is-selected a,.table th.is-selected strong{color:currentColor}.table td.is-vcentered,.table th.is-vcentered{vertical-align:middle}.table th{color:#222}.table th:not([align]){text-align:left}.table tr.is-selected{background-color:#4eb5de;color:#fff}.table tr.is-selected a,.table tr.is-selected strong{color:currentColor}.table tr.is-selected td,.table tr.is-selected th{border-color:#fff;color:currentColor}.table thead{background-color:rgba(0,0,0,0)}.table thead td,.table thead th{border-width:0 0 2px;color:#222}.table tfoot{background-color:rgba(0,0,0,0)}.table tfoot td,.table tfoot th{border-width:2px 0 0;color:#222}.table tbody{background-color:rgba(0,0,0,0)}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-bordered td,.table.is-bordered th{border-width:1px}.table.is-bordered tr:last-child td,.table.is-bordered tr:last-child th{border-bottom-width:1px}.table.is-fullwidth{width:100%}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#f5f5f5}.table.is-narrow td,.table.is-narrow th{padding:0.25em 0.5em}.table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#fafafa}.table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}.tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.tags .tag,.tags .content kbd,.content .tags kbd,.tags .docstring>section>a.docs-sourcelink{margin-bottom:0.5rem}.tags .tag:not(:last-child),.tags .content kbd:not(:last-child),.content .tags kbd:not(:last-child),.tags .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:.5rem}.tags:last-child{margin-bottom:-0.5rem}.tags:not(:last-child){margin-bottom:1rem}.tags.are-medium .tag:not(.is-normal):not(.is-large),.tags.are-medium .content kbd:not(.is-normal):not(.is-large),.content .tags.are-medium kbd:not(.is-normal):not(.is-large),.tags.are-medium .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-large){font-size:1rem}.tags.are-large .tag:not(.is-normal):not(.is-medium),.tags.are-large .content kbd:not(.is-normal):not(.is-medium),.content .tags.are-large kbd:not(.is-normal):not(.is-medium),.tags.are-large .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-medium){font-size:1.25rem}.tags.is-centered{justify-content:center}.tags.is-centered .tag,.tags.is-centered .content kbd,.content .tags.is-centered kbd,.tags.is-centered .docstring>section>a.docs-sourcelink{margin-right:0.25rem;margin-left:0.25rem}.tags.is-right{justify-content:flex-end}.tags.is-right .tag:not(:first-child),.tags.is-right .content kbd:not(:first-child),.content .tags.is-right kbd:not(:first-child),.tags.is-right .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0.5rem}.tags.is-right .tag:not(:last-child),.tags.is-right .content kbd:not(:last-child),.content .tags.is-right kbd:not(:last-child),.tags.is-right .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0}.tags.has-addons .tag,.tags.has-addons .content kbd,.content .tags.has-addons kbd,.tags.has-addons .docstring>section>a.docs-sourcelink{margin-right:0}.tags.has-addons .tag:not(:first-child),.tags.has-addons .content kbd:not(:first-child),.content .tags.has-addons kbd:not(:first-child),.tags.has-addons .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.tags.has-addons .tag:not(:last-child),.tags.has-addons .content kbd:not(:last-child),.content .tags.has-addons kbd:not(:last-child),.tags.has-addons .docstring>section>a.docs-sourcelink:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.tag:not(body),.content kbd:not(body),.docstring>section>a.docs-sourcelink:not(body){align-items:center;background-color:#f5f5f5;border-radius:4px;color:#222;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:0.75em;padding-right:0.75em;white-space:nowrap}.tag:not(body) .delete,.content kbd:not(body) .delete,.docstring>section>a.docs-sourcelink:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}.tag.is-white:not(body),.content kbd.is-white:not(body),.docstring>section>a.docs-sourcelink.is-white:not(body){background-color:#fff;color:#0a0a0a}.tag.is-black:not(body),.content kbd.is-black:not(body),.docstring>section>a.docs-sourcelink.is-black:not(body){background-color:#0a0a0a;color:#fff}.tag.is-light:not(body),.content kbd.is-light:not(body),.docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.tag.is-dark:not(body),.content kbd:not(body),.docstring>section>a.docs-sourcelink.is-dark:not(body),.content .docstring>section>kbd:not(body){background-color:#363636;color:#fff}.tag.is-primary:not(body),.content kbd.is-primary:not(body),.docstring>section>a.docs-sourcelink:not(body){background-color:#4eb5de;color:#fff}.tag.is-primary.is-light:not(body),.content kbd.is-primary.is-light:not(body),.docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#eef8fc;color:#1a6d8e}.tag.is-link:not(body),.content kbd.is-link:not(body),.docstring>section>a.docs-sourcelink.is-link:not(body){background-color:#2e63b8;color:#fff}.tag.is-link.is-light:not(body),.content kbd.is-link.is-light:not(body),.docstring>section>a.docs-sourcelink.is-link.is-light:not(body){background-color:#eff3fb;color:#3169c4}.tag.is-info:not(body),.content kbd.is-info:not(body),.docstring>section>a.docs-sourcelink.is-info:not(body){background-color:#3c5dcd;color:#fff}.tag.is-info.is-light:not(body),.content kbd.is-info.is-light:not(body),.docstring>section>a.docs-sourcelink.is-info.is-light:not(body){background-color:#eff2fb;color:#3253c3}.tag.is-success:not(body),.content kbd.is-success:not(body),.docstring>section>a.docs-sourcelink.is-success:not(body){background-color:#259a12;color:#fff}.tag.is-success.is-light:not(body),.content kbd.is-success.is-light:not(body),.docstring>section>a.docs-sourcelink.is-success.is-light:not(body){background-color:#effded;color:#2ec016}.tag.is-warning:not(body),.content kbd.is-warning:not(body),.docstring>section>a.docs-sourcelink.is-warning:not(body){background-color:#a98800;color:#fff}.tag.is-warning.is-light:not(body),.content kbd.is-warning.is-light:not(body),.docstring>section>a.docs-sourcelink.is-warning.is-light:not(body){background-color:#fffbeb;color:#cca400}.tag.is-danger:not(body),.content kbd.is-danger:not(body),.docstring>section>a.docs-sourcelink.is-danger:not(body){background-color:#cb3c33;color:#fff}.tag.is-danger.is-light:not(body),.content kbd.is-danger.is-light:not(body),.docstring>section>a.docs-sourcelink.is-danger.is-light:not(body){background-color:#fbefef;color:#c03930}.tag.is-normal:not(body),.content kbd.is-normal:not(body),.docstring>section>a.docs-sourcelink.is-normal:not(body){font-size:.75rem}.tag.is-medium:not(body),.content kbd.is-medium:not(body),.docstring>section>a.docs-sourcelink.is-medium:not(body){font-size:1rem}.tag.is-large:not(body),.content kbd.is-large:not(body),.docstring>section>a.docs-sourcelink.is-large:not(body){font-size:1.25rem}.tag:not(body) .icon:first-child:not(:last-child),.content kbd:not(body) .icon:first-child:not(:last-child),.docstring>section>a.docs-sourcelink:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}.tag:not(body) .icon:last-child:not(:first-child),.content kbd:not(body) .icon:last-child:not(:first-child),.docstring>section>a.docs-sourcelink:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}.tag:not(body) .icon:first-child:last-child,.content kbd:not(body) .icon:first-child:last-child,.docstring>section>a.docs-sourcelink:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}.tag.is-delete:not(body),.content kbd.is-delete:not(body),.docstring>section>a.docs-sourcelink.is-delete:not(body){margin-left:1px;padding:0;position:relative;width:2em}.tag.is-delete:not(body)::before,.content kbd.is-delete:not(body)::before,.docstring>section>a.docs-sourcelink.is-delete:not(body)::before,.tag.is-delete:not(body)::after,.content kbd.is-delete:not(body)::after,.docstring>section>a.docs-sourcelink.is-delete:not(body)::after{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.tag.is-delete:not(body)::before,.content kbd.is-delete:not(body)::before,.docstring>section>a.docs-sourcelink.is-delete:not(body)::before{height:1px;width:50%}.tag.is-delete:not(body)::after,.content kbd.is-delete:not(body)::after,.docstring>section>a.docs-sourcelink.is-delete:not(body)::after{height:50%;width:1px}.tag.is-delete:not(body):hover,.content kbd.is-delete:not(body):hover,.docstring>section>a.docs-sourcelink.is-delete:not(body):hover,.tag.is-delete:not(body):focus,.content kbd.is-delete:not(body):focus,.docstring>section>a.docs-sourcelink.is-delete:not(body):focus{background-color:#e8e8e8}.tag.is-delete:not(body):active,.content kbd.is-delete:not(body):active,.docstring>section>a.docs-sourcelink.is-delete:not(body):active{background-color:#dbdbdb}.tag.is-rounded:not(body),#documenter .docs-sidebar form.docs-search>input:not(body),.content kbd.is-rounded:not(body),#documenter .docs-sidebar .content form.docs-search>input:not(body),.docstring>section>a.docs-sourcelink.is-rounded:not(body){border-radius:9999px}a.tag:hover,.docstring>section>a.docs-sourcelink:hover{text-decoration:underline}.title,.subtitle{word-break:break-word}.title em,.title span,.subtitle em,.subtitle span{font-weight:inherit}.title sub,.subtitle sub{font-size:.75em}.title sup,.subtitle sup{font-size:.75em}.title .tag,.title .content kbd,.content .title kbd,.title .docstring>section>a.docs-sourcelink,.subtitle .tag,.subtitle .content kbd,.content .subtitle kbd,.subtitle .docstring>section>a.docs-sourcelink{vertical-align:middle}.title{color:#222;font-size:2rem;font-weight:600;line-height:1.125}.title strong{color:inherit;font-weight:inherit}.title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.title.is-7{font-size:.75rem}.subtitle{color:#222;font-size:1.25rem;font-weight:400;line-height:1.25}.subtitle strong{color:#222;font-weight:600}.subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem}.subtitle.is-7{font-size:.75rem}.heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.number{align-items:center;background-color:#f5f5f5;border-radius:9999px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:0.25rem 0.5rem;text-align:center;vertical-align:top}.select select,.textarea,.input,#documenter .docs-sidebar form.docs-search>input{background-color:#fff;border-color:#dbdbdb;border-radius:4px;color:#222}.select select::-moz-placeholder,.textarea::-moz-placeholder,.input::-moz-placeholder,#documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:#707070}.select select::-webkit-input-placeholder,.textarea::-webkit-input-placeholder,.input::-webkit-input-placeholder,#documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:#707070}.select select:-moz-placeholder,.textarea:-moz-placeholder,.input:-moz-placeholder,#documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:#707070}.select select:-ms-input-placeholder,.textarea:-ms-input-placeholder,.input:-ms-input-placeholder,#documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:#707070}.select select:hover,.textarea:hover,.input:hover,#documenter .docs-sidebar form.docs-search>input:hover,.select select.is-hovered,.is-hovered.textarea,.is-hovered.input,#documenter .docs-sidebar form.docs-search>input.is-hovered{border-color:#b5b5b5}.select select:focus,.textarea:focus,.input:focus,#documenter .docs-sidebar form.docs-search>input:focus,.select select.is-focused,.is-focused.textarea,.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.select select:active,.textarea:active,.input:active,#documenter .docs-sidebar form.docs-search>input:active,.select select.is-active,.is-active.textarea,.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{border-color:#2e63b8;box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.select select[disabled],.textarea[disabled],.input[disabled],#documenter .docs-sidebar form.docs-search>input[disabled],fieldset[disabled] .select select,.select fieldset[disabled] select,fieldset[disabled] .textarea,fieldset[disabled] .input,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none;color:#6b6b6b}.select select[disabled]::-moz-placeholder,.textarea[disabled]::-moz-placeholder,.input[disabled]::-moz-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]::-moz-placeholder,fieldset[disabled] .select select::-moz-placeholder,.select fieldset[disabled] select::-moz-placeholder,fieldset[disabled] .textarea::-moz-placeholder,fieldset[disabled] .input::-moz-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input::-moz-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input::-moz-placeholder{color:rgba(107,107,107,0.3)}.select select[disabled]::-webkit-input-placeholder,.textarea[disabled]::-webkit-input-placeholder,.input[disabled]::-webkit-input-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]::-webkit-input-placeholder,fieldset[disabled] .select select::-webkit-input-placeholder,.select fieldset[disabled] select::-webkit-input-placeholder,fieldset[disabled] .textarea::-webkit-input-placeholder,fieldset[disabled] .input::-webkit-input-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input::-webkit-input-placeholder{color:rgba(107,107,107,0.3)}.select select[disabled]:-moz-placeholder,.textarea[disabled]:-moz-placeholder,.input[disabled]:-moz-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]:-moz-placeholder,fieldset[disabled] .select select:-moz-placeholder,.select fieldset[disabled] select:-moz-placeholder,fieldset[disabled] .textarea:-moz-placeholder,fieldset[disabled] .input:-moz-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input:-moz-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input:-moz-placeholder{color:rgba(107,107,107,0.3)}.select select[disabled]:-ms-input-placeholder,.textarea[disabled]:-ms-input-placeholder,.input[disabled]:-ms-input-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]:-ms-input-placeholder,fieldset[disabled] .select select:-ms-input-placeholder,.select fieldset[disabled] select:-ms-input-placeholder,fieldset[disabled] .textarea:-ms-input-placeholder,fieldset[disabled] .input:-ms-input-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input:-ms-input-placeholder{color:rgba(107,107,107,0.3)}.textarea,.input,#documenter .docs-sidebar form.docs-search>input{box-shadow:inset 0 0.0625em 0.125em rgba(10,10,10,0.05);max-width:100%;width:100%}.textarea[readonly],.input[readonly],#documenter .docs-sidebar form.docs-search>input[readonly]{box-shadow:none}.is-white.textarea,.is-white.input,#documenter .docs-sidebar form.docs-search>input.is-white{border-color:#fff}.is-white.textarea:focus,.is-white.input:focus,#documenter .docs-sidebar form.docs-search>input.is-white:focus,.is-white.is-focused.textarea,.is-white.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-white.textarea:active,.is-white.input:active,#documenter .docs-sidebar form.docs-search>input.is-white:active,.is-white.is-active.textarea,.is-white.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}.is-black.textarea,.is-black.input,#documenter .docs-sidebar form.docs-search>input.is-black{border-color:#0a0a0a}.is-black.textarea:focus,.is-black.input:focus,#documenter .docs-sidebar form.docs-search>input.is-black:focus,.is-black.is-focused.textarea,.is-black.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-black.textarea:active,.is-black.input:active,#documenter .docs-sidebar form.docs-search>input.is-black:active,.is-black.is-active.textarea,.is-black.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}.is-light.textarea,.is-light.input,#documenter .docs-sidebar form.docs-search>input.is-light{border-color:#f5f5f5}.is-light.textarea:focus,.is-light.input:focus,#documenter .docs-sidebar form.docs-search>input.is-light:focus,.is-light.is-focused.textarea,.is-light.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-light.textarea:active,.is-light.input:active,#documenter .docs-sidebar form.docs-search>input.is-light:active,.is-light.is-active.textarea,.is-light.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}.is-dark.textarea,.content kbd.textarea,.is-dark.input,#documenter .docs-sidebar form.docs-search>input.is-dark,.content kbd.input{border-color:#363636}.is-dark.textarea:focus,.content kbd.textarea:focus,.is-dark.input:focus,#documenter .docs-sidebar form.docs-search>input.is-dark:focus,.content kbd.input:focus,.is-dark.is-focused.textarea,.content kbd.is-focused.textarea,.is-dark.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.content kbd.is-focused.input,#documenter .docs-sidebar .content form.docs-search>input.is-focused,.is-dark.textarea:active,.content kbd.textarea:active,.is-dark.input:active,#documenter .docs-sidebar form.docs-search>input.is-dark:active,.content kbd.input:active,.is-dark.is-active.textarea,.content kbd.is-active.textarea,.is-dark.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active,.content kbd.is-active.input,#documenter .docs-sidebar .content form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(54,54,54,0.25)}.is-primary.textarea,.docstring>section>a.textarea.docs-sourcelink,.is-primary.input,#documenter .docs-sidebar form.docs-search>input.is-primary,.docstring>section>a.input.docs-sourcelink{border-color:#4eb5de}.is-primary.textarea:focus,.docstring>section>a.textarea.docs-sourcelink:focus,.is-primary.input:focus,#documenter .docs-sidebar form.docs-search>input.is-primary:focus,.docstring>section>a.input.docs-sourcelink:focus,.is-primary.is-focused.textarea,.docstring>section>a.is-focused.textarea.docs-sourcelink,.is-primary.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.docstring>section>a.is-focused.input.docs-sourcelink,.is-primary.textarea:active,.docstring>section>a.textarea.docs-sourcelink:active,.is-primary.input:active,#documenter .docs-sidebar form.docs-search>input.is-primary:active,.docstring>section>a.input.docs-sourcelink:active,.is-primary.is-active.textarea,.docstring>section>a.is-active.textarea.docs-sourcelink,.is-primary.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active,.docstring>section>a.is-active.input.docs-sourcelink{box-shadow:0 0 0 0.125em rgba(78,181,222,0.25)}.is-link.textarea,.is-link.input,#documenter .docs-sidebar form.docs-search>input.is-link{border-color:#2e63b8}.is-link.textarea:focus,.is-link.input:focus,#documenter .docs-sidebar form.docs-search>input.is-link:focus,.is-link.is-focused.textarea,.is-link.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-link.textarea:active,.is-link.input:active,#documenter .docs-sidebar form.docs-search>input.is-link:active,.is-link.is-active.textarea,.is-link.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.is-info.textarea,.is-info.input,#documenter .docs-sidebar form.docs-search>input.is-info{border-color:#3c5dcd}.is-info.textarea:focus,.is-info.input:focus,#documenter .docs-sidebar form.docs-search>input.is-info:focus,.is-info.is-focused.textarea,.is-info.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-info.textarea:active,.is-info.input:active,#documenter .docs-sidebar form.docs-search>input.is-info:active,.is-info.is-active.textarea,.is-info.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(60,93,205,0.25)}.is-success.textarea,.is-success.input,#documenter .docs-sidebar form.docs-search>input.is-success{border-color:#259a12}.is-success.textarea:focus,.is-success.input:focus,#documenter .docs-sidebar form.docs-search>input.is-success:focus,.is-success.is-focused.textarea,.is-success.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-success.textarea:active,.is-success.input:active,#documenter .docs-sidebar form.docs-search>input.is-success:active,.is-success.is-active.textarea,.is-success.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(37,154,18,0.25)}.is-warning.textarea,.is-warning.input,#documenter .docs-sidebar form.docs-search>input.is-warning{border-color:#a98800}.is-warning.textarea:focus,.is-warning.input:focus,#documenter .docs-sidebar form.docs-search>input.is-warning:focus,.is-warning.is-focused.textarea,.is-warning.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-warning.textarea:active,.is-warning.input:active,#documenter .docs-sidebar form.docs-search>input.is-warning:active,.is-warning.is-active.textarea,.is-warning.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(169,136,0,0.25)}.is-danger.textarea,.is-danger.input,#documenter .docs-sidebar form.docs-search>input.is-danger{border-color:#cb3c33}.is-danger.textarea:focus,.is-danger.input:focus,#documenter .docs-sidebar form.docs-search>input.is-danger:focus,.is-danger.is-focused.textarea,.is-danger.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-danger.textarea:active,.is-danger.input:active,#documenter .docs-sidebar form.docs-search>input.is-danger:active,.is-danger.is-active.textarea,.is-danger.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(203,60,51,0.25)}.is-small.textarea,.is-small.input,#documenter .docs-sidebar form.docs-search>input{border-radius:2px;font-size:.75rem}.is-medium.textarea,.is-medium.input,#documenter .docs-sidebar form.docs-search>input.is-medium{font-size:1.25rem}.is-large.textarea,.is-large.input,#documenter .docs-sidebar form.docs-search>input.is-large{font-size:1.5rem}.is-fullwidth.textarea,.is-fullwidth.input,#documenter .docs-sidebar form.docs-search>input.is-fullwidth{display:block;width:100%}.is-inline.textarea,.is-inline.input,#documenter .docs-sidebar form.docs-search>input.is-inline{display:inline;width:auto}.input.is-rounded,#documenter .docs-sidebar form.docs-search>input{border-radius:9999px;padding-left:calc(calc(0.75em - 1px) + 0.375em);padding-right:calc(calc(0.75em - 1px) + 0.375em)}.input.is-static,#documenter .docs-sidebar form.docs-search>input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}.textarea{display:block;max-width:100%;min-width:100%;padding:calc(0.75em - 1px);resize:vertical}.textarea:not([rows]){max-height:40em;min-height:8em}.textarea[rows]{height:initial}.textarea.has-fixed-size{resize:none}.radio,.checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}.radio input,.checkbox input{cursor:pointer}.radio:hover,.checkbox:hover{color:#222}.radio[disabled],.checkbox[disabled],fieldset[disabled] .radio,fieldset[disabled] .checkbox,.radio input[disabled],.checkbox input[disabled]{color:#6b6b6b;cursor:not-allowed}.radio+.radio{margin-left:.5em}.select{display:inline-block;max-width:100%;position:relative;vertical-align:top}.select:not(.is-multiple){height:2.5em}.select:not(.is-multiple):not(.is-loading)::after{border-color:#2e63b8;right:1.125em;z-index:4}.select.is-rounded select,#documenter .docs-sidebar form.docs-search>input.select select{border-radius:9999px;padding-left:1em}.select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}.select select::-ms-expand{display:none}.select select[disabled]:hover,fieldset[disabled] .select select:hover{border-color:#f5f5f5}.select select:not([multiple]){padding-right:2.5em}.select select[multiple]{height:auto;padding:0}.select select[multiple] option{padding:0.5em 1em}.select:not(.is-multiple):not(.is-loading):hover::after{border-color:#222}.select.is-white:not(:hover)::after{border-color:#fff}.select.is-white select{border-color:#fff}.select.is-white select:hover,.select.is-white select.is-hovered{border-color:#f2f2f2}.select.is-white select:focus,.select.is-white select.is-focused,.select.is-white select:active,.select.is-white select.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}.select.is-black:not(:hover)::after{border-color:#0a0a0a}.select.is-black select{border-color:#0a0a0a}.select.is-black select:hover,.select.is-black select.is-hovered{border-color:#000}.select.is-black select:focus,.select.is-black select.is-focused,.select.is-black select:active,.select.is-black select.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}.select.is-light:not(:hover)::after{border-color:#f5f5f5}.select.is-light select{border-color:#f5f5f5}.select.is-light select:hover,.select.is-light select.is-hovered{border-color:#e8e8e8}.select.is-light select:focus,.select.is-light select.is-focused,.select.is-light select:active,.select.is-light select.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}.select.is-dark:not(:hover)::after,.content kbd.select:not(:hover)::after{border-color:#363636}.select.is-dark select,.content kbd.select select{border-color:#363636}.select.is-dark select:hover,.content kbd.select select:hover,.select.is-dark select.is-hovered,.content kbd.select select.is-hovered{border-color:#292929}.select.is-dark select:focus,.content kbd.select select:focus,.select.is-dark select.is-focused,.content kbd.select select.is-focused,.select.is-dark select:active,.content kbd.select select:active,.select.is-dark select.is-active,.content kbd.select select.is-active{box-shadow:0 0 0 0.125em rgba(54,54,54,0.25)}.select.is-primary:not(:hover)::after,.docstring>section>a.select.docs-sourcelink:not(:hover)::after{border-color:#4eb5de}.select.is-primary select,.docstring>section>a.select.docs-sourcelink select{border-color:#4eb5de}.select.is-primary select:hover,.docstring>section>a.select.docs-sourcelink select:hover,.select.is-primary select.is-hovered,.docstring>section>a.select.docs-sourcelink select.is-hovered{border-color:#39acda}.select.is-primary select:focus,.docstring>section>a.select.docs-sourcelink select:focus,.select.is-primary select.is-focused,.docstring>section>a.select.docs-sourcelink select.is-focused,.select.is-primary select:active,.docstring>section>a.select.docs-sourcelink select:active,.select.is-primary select.is-active,.docstring>section>a.select.docs-sourcelink select.is-active{box-shadow:0 0 0 0.125em rgba(78,181,222,0.25)}.select.is-link:not(:hover)::after{border-color:#2e63b8}.select.is-link select{border-color:#2e63b8}.select.is-link select:hover,.select.is-link select.is-hovered{border-color:#2958a4}.select.is-link select:focus,.select.is-link select.is-focused,.select.is-link select:active,.select.is-link select.is-active{box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.select.is-info:not(:hover)::after{border-color:#3c5dcd}.select.is-info select{border-color:#3c5dcd}.select.is-info select:hover,.select.is-info select.is-hovered{border-color:#3151bf}.select.is-info select:focus,.select.is-info select.is-focused,.select.is-info select:active,.select.is-info select.is-active{box-shadow:0 0 0 0.125em rgba(60,93,205,0.25)}.select.is-success:not(:hover)::after{border-color:#259a12}.select.is-success select{border-color:#259a12}.select.is-success select:hover,.select.is-success select.is-hovered{border-color:#20830f}.select.is-success select:focus,.select.is-success select.is-focused,.select.is-success select:active,.select.is-success select.is-active{box-shadow:0 0 0 0.125em rgba(37,154,18,0.25)}.select.is-warning:not(:hover)::after{border-color:#a98800}.select.is-warning select{border-color:#a98800}.select.is-warning select:hover,.select.is-warning select.is-hovered{border-color:#8f7300}.select.is-warning select:focus,.select.is-warning select.is-focused,.select.is-warning select:active,.select.is-warning select.is-active{box-shadow:0 0 0 0.125em rgba(169,136,0,0.25)}.select.is-danger:not(:hover)::after{border-color:#cb3c33}.select.is-danger select{border-color:#cb3c33}.select.is-danger select:hover,.select.is-danger select.is-hovered{border-color:#b7362e}.select.is-danger select:focus,.select.is-danger select.is-focused,.select.is-danger select:active,.select.is-danger select.is-active{box-shadow:0 0 0 0.125em rgba(203,60,51,0.25)}.select.is-small,#documenter .docs-sidebar form.docs-search>input.select{border-radius:2px;font-size:.75rem}.select.is-medium{font-size:1.25rem}.select.is-large{font-size:1.5rem}.select.is-disabled::after{border-color:#6b6b6b !important;opacity:0.5}.select.is-fullwidth{width:100%}.select.is-fullwidth select{width:100%}.select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:0.625em;transform:none}.select.is-loading.is-small:after,#documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}.select.is-loading.is-medium:after{font-size:1.25rem}.select.is-loading.is-large:after{font-size:1.5rem}.file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}.file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}.file.is-white:hover .file-cta,.file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.file.is-white:focus .file-cta,.file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,255,255,0.25);color:#0a0a0a}.file.is-white:active .file-cta,.file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}.file.is-black:hover .file-cta,.file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}.file.is-black:focus .file-cta,.file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(10,10,10,0.25);color:#fff}.file.is-black:active .file-cta,.file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}.file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-light:hover .file-cta,.file.is-light.is-hovered .file-cta{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-light:focus .file-cta,.file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(245,245,245,0.25);color:rgba(0,0,0,0.7)}.file.is-light:active .file-cta,.file.is-light.is-active .file-cta{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-dark .file-cta,.content kbd.file .file-cta{background-color:#363636;border-color:transparent;color:#fff}.file.is-dark:hover .file-cta,.content kbd.file:hover .file-cta,.file.is-dark.is-hovered .file-cta,.content kbd.file.is-hovered .file-cta{background-color:#2f2f2f;border-color:transparent;color:#fff}.file.is-dark:focus .file-cta,.content kbd.file:focus .file-cta,.file.is-dark.is-focused .file-cta,.content kbd.file.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(54,54,54,0.25);color:#fff}.file.is-dark:active .file-cta,.content kbd.file:active .file-cta,.file.is-dark.is-active .file-cta,.content kbd.file.is-active .file-cta{background-color:#292929;border-color:transparent;color:#fff}.file.is-primary .file-cta,.docstring>section>a.file.docs-sourcelink .file-cta{background-color:#4eb5de;border-color:transparent;color:#fff}.file.is-primary:hover .file-cta,.docstring>section>a.file.docs-sourcelink:hover .file-cta,.file.is-primary.is-hovered .file-cta,.docstring>section>a.file.is-hovered.docs-sourcelink .file-cta{background-color:#43b1dc;border-color:transparent;color:#fff}.file.is-primary:focus .file-cta,.docstring>section>a.file.docs-sourcelink:focus .file-cta,.file.is-primary.is-focused .file-cta,.docstring>section>a.file.is-focused.docs-sourcelink .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(78,181,222,0.25);color:#fff}.file.is-primary:active .file-cta,.docstring>section>a.file.docs-sourcelink:active .file-cta,.file.is-primary.is-active .file-cta,.docstring>section>a.file.is-active.docs-sourcelink .file-cta{background-color:#39acda;border-color:transparent;color:#fff}.file.is-link .file-cta{background-color:#2e63b8;border-color:transparent;color:#fff}.file.is-link:hover .file-cta,.file.is-link.is-hovered .file-cta{background-color:#2b5eae;border-color:transparent;color:#fff}.file.is-link:focus .file-cta,.file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(46,99,184,0.25);color:#fff}.file.is-link:active .file-cta,.file.is-link.is-active .file-cta{background-color:#2958a4;border-color:transparent;color:#fff}.file.is-info .file-cta{background-color:#3c5dcd;border-color:transparent;color:#fff}.file.is-info:hover .file-cta,.file.is-info.is-hovered .file-cta{background-color:#3355c9;border-color:transparent;color:#fff}.file.is-info:focus .file-cta,.file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(60,93,205,0.25);color:#fff}.file.is-info:active .file-cta,.file.is-info.is-active .file-cta{background-color:#3151bf;border-color:transparent;color:#fff}.file.is-success .file-cta{background-color:#259a12;border-color:transparent;color:#fff}.file.is-success:hover .file-cta,.file.is-success.is-hovered .file-cta{background-color:#228f11;border-color:transparent;color:#fff}.file.is-success:focus .file-cta,.file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(37,154,18,0.25);color:#fff}.file.is-success:active .file-cta,.file.is-success.is-active .file-cta{background-color:#20830f;border-color:transparent;color:#fff}.file.is-warning .file-cta{background-color:#a98800;border-color:transparent;color:#fff}.file.is-warning:hover .file-cta,.file.is-warning.is-hovered .file-cta{background-color:#9c7d00;border-color:transparent;color:#fff}.file.is-warning:focus .file-cta,.file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(169,136,0,0.25);color:#fff}.file.is-warning:active .file-cta,.file.is-warning.is-active .file-cta{background-color:#8f7300;border-color:transparent;color:#fff}.file.is-danger .file-cta{background-color:#cb3c33;border-color:transparent;color:#fff}.file.is-danger:hover .file-cta,.file.is-danger.is-hovered .file-cta{background-color:#c13930;border-color:transparent;color:#fff}.file.is-danger:focus .file-cta,.file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(203,60,51,0.25);color:#fff}.file.is-danger:active .file-cta,.file.is-danger.is-active .file-cta{background-color:#b7362e;border-color:transparent;color:#fff}.file.is-small,#documenter .docs-sidebar form.docs-search>input.file{font-size:.75rem}.file.is-normal{font-size:1rem}.file.is-medium{font-size:1.25rem}.file.is-medium .file-icon .fa{font-size:21px}.file.is-large{font-size:1.5rem}.file.is-large .file-icon .fa{font-size:28px}.file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}.file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}.file.has-name.is-empty .file-cta{border-radius:4px}.file.has-name.is-empty .file-name{display:none}.file.is-boxed .file-label{flex-direction:column}.file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}.file.is-boxed .file-name{border-width:0 1px 1px}.file.is-boxed .file-icon{height:1.5em;width:1.5em}.file.is-boxed .file-icon .fa{font-size:21px}.file.is-boxed.is-small .file-icon .fa,#documenter .docs-sidebar form.docs-search>input.is-boxed .file-icon .fa{font-size:14px}.file.is-boxed.is-medium .file-icon .fa{font-size:28px}.file.is-boxed.is-large .file-icon .fa{font-size:35px}.file.is-boxed.has-name .file-cta{border-radius:4px 4px 0 0}.file.is-boxed.has-name .file-name{border-radius:0 0 4px 4px;border-width:0 1px 1px}.file.is-centered{justify-content:center}.file.is-fullwidth .file-label{width:100%}.file.is-fullwidth .file-name{flex-grow:1;max-width:none}.file.is-right{justify-content:flex-end}.file.is-right .file-cta{border-radius:0 4px 4px 0}.file.is-right .file-name{border-radius:4px 0 0 4px;border-width:1px 0 1px 1px;order:-1}.file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}.file-label:hover .file-cta{background-color:#eee;color:#222}.file-label:hover .file-name{border-color:#d5d5d5}.file-label:active .file-cta{background-color:#e8e8e8;color:#222}.file-label:active .file-name{border-color:#cfcfcf}.file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}.file-cta,.file-name{border-color:#dbdbdb;border-radius:4px;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}.file-cta{background-color:#f5f5f5;color:#222}.file-name{border-color:#dbdbdb;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}.file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}.file-icon .fa{font-size:14px}.label{color:#222;display:block;font-size:1rem;font-weight:700}.label:not(:last-child){margin-bottom:0.5em}.label.is-small,#documenter .docs-sidebar form.docs-search>input.label{font-size:.75rem}.label.is-medium{font-size:1.25rem}.label.is-large{font-size:1.5rem}.help{display:block;font-size:.75rem;margin-top:0.25rem}.help.is-white{color:#fff}.help.is-black{color:#0a0a0a}.help.is-light{color:#f5f5f5}.help.is-dark,.content kbd.help{color:#363636}.help.is-primary,.docstring>section>a.help.docs-sourcelink{color:#4eb5de}.help.is-link{color:#2e63b8}.help.is-info{color:#3c5dcd}.help.is-success{color:#259a12}.help.is-warning{color:#a98800}.help.is-danger{color:#cb3c33}.field:not(:last-child){margin-bottom:0.75rem}.field.has-addons{display:flex;justify-content:flex-start}.field.has-addons .control:not(:last-child){margin-right:-1px}.field.has-addons .control:not(:first-child):not(:last-child) .button,.field.has-addons .control:not(:first-child):not(:last-child) .input,.field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search>input,.field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}.field.has-addons .control:first-child:not(:only-child) .button,.field.has-addons .control:first-child:not(:only-child) .input,.field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search>input,.field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}.field.has-addons .control:last-child:not(:only-child) .button,.field.has-addons .control:last-child:not(:only-child) .input,.field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search>input,.field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}.field.has-addons .control .button:not([disabled]):hover,.field.has-addons .control .button.is-hovered:not([disabled]),.field.has-addons .control .input:not([disabled]):hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):hover,.field.has-addons .control .input.is-hovered:not([disabled]),.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-hovered:not([disabled]),#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-hovered:not([disabled]),.field.has-addons .control .select select:not([disabled]):hover,.field.has-addons .control .select select.is-hovered:not([disabled]){z-index:2}.field.has-addons .control .button:not([disabled]):focus,.field.has-addons .control .button.is-focused:not([disabled]),.field.has-addons .control .button:not([disabled]):active,.field.has-addons .control .button.is-active:not([disabled]),.field.has-addons .control .input:not([disabled]):focus,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus,.field.has-addons .control .input.is-focused:not([disabled]),.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]),#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]),.field.has-addons .control .input:not([disabled]):active,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active,.field.has-addons .control .input.is-active:not([disabled]),.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]),#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]),.field.has-addons .control .select select:not([disabled]):focus,.field.has-addons .control .select select.is-focused:not([disabled]),.field.has-addons .control .select select:not([disabled]):active,.field.has-addons .control .select select.is-active:not([disabled]){z-index:3}.field.has-addons .control .button:not([disabled]):focus:hover,.field.has-addons .control .button.is-focused:not([disabled]):hover,.field.has-addons .control .button:not([disabled]):active:hover,.field.has-addons .control .button.is-active:not([disabled]):hover,.field.has-addons .control .input:not([disabled]):focus:hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus:hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus:hover,.field.has-addons .control .input.is-focused:not([disabled]):hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]):hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]):hover,.field.has-addons .control .input:not([disabled]):active:hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active:hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active:hover,.field.has-addons .control .input.is-active:not([disabled]):hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]):hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]):focus:hover,.field.has-addons .control .select select.is-focused:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]):active:hover,.field.has-addons .control .select select.is-active:not([disabled]):hover{z-index:4}.field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}.field.has-addons.has-addons-centered{justify-content:center}.field.has-addons.has-addons-right{justify-content:flex-end}.field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}.field.is-grouped{display:flex;justify-content:flex-start}.field.is-grouped>.control{flex-shrink:0}.field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}.field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}.field.is-grouped.is-grouped-centered{justify-content:center}.field.is-grouped.is-grouped-right{justify-content:flex-end}.field.is-grouped.is-grouped-multiline{flex-wrap:wrap}.field.is-grouped.is-grouped-multiline>.control:last-child,.field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:0.75rem}.field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}.field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{.field.is-horizontal{display:flex}}.field-label .label{font-size:inherit}@media screen and (max-width: 768px){.field-label{margin-bottom:0.5rem}}@media screen and (min-width: 769px),print{.field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}.field-label.is-small,#documenter .docs-sidebar form.docs-search>input.field-label{font-size:.75rem;padding-top:0.375em}.field-label.is-normal{padding-top:0.375em}.field-label.is-medium{font-size:1.25rem;padding-top:0.375em}.field-label.is-large{font-size:1.5rem;padding-top:0.375em}}.field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{.field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}.field-body .field{margin-bottom:0}.field-body>.field{flex-shrink:1}.field-body>.field:not(.is-narrow){flex-grow:1}.field-body>.field:not(:last-child){margin-right:.75rem}}.control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}.control.has-icons-left .input:focus~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input:focus~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input:focus~.icon,.control.has-icons-left .select:focus~.icon,.control.has-icons-right .input:focus~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input:focus~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input:focus~.icon,.control.has-icons-right .select:focus~.icon{color:#222}.control.has-icons-left .input.is-small~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input~.icon,.control.has-icons-left .select.is-small~.icon,.control.has-icons-right .input.is-small~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input~.icon,.control.has-icons-right .select.is-small~.icon{font-size:.75rem}.control.has-icons-left .input.is-medium~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-medium~.icon,.control.has-icons-left .select.is-medium~.icon,.control.has-icons-right .input.is-medium~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-medium~.icon,.control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}.control.has-icons-left .input.is-large~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-large~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-large~.icon,.control.has-icons-left .select.is-large~.icon,.control.has-icons-right .input.is-large~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-large~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-large~.icon,.control.has-icons-right .select.is-large~.icon{font-size:1.5rem}.control.has-icons-left .icon,.control.has-icons-right .icon{color:#dbdbdb;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}.control.has-icons-left .input,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input,.control.has-icons-left .select select{padding-left:2.5em}.control.has-icons-left .icon.is-left{left:0}.control.has-icons-right .input,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input,.control.has-icons-right .select select{padding-right:2.5em}.control.has-icons-right .icon.is-right{right:0}.control.is-loading::after{position:absolute !important;right:.625em;top:0.625em;z-index:4}.control.is-loading.is-small:after,#documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}.control.is-loading.is-medium:after{font-size:1.25rem}.control.is-loading.is-large:after{font-size:1.5rem}.breadcrumb{font-size:1rem;white-space:nowrap}.breadcrumb a{align-items:center;color:#2e63b8;display:flex;justify-content:center;padding:0 .75em}.breadcrumb a:hover{color:#363636}.breadcrumb li{align-items:center;display:flex}.breadcrumb li:first-child a{padding-left:0}.breadcrumb li.is-active a{color:#222;cursor:default;pointer-events:none}.breadcrumb li+li::before{color:#b5b5b5;content:"\0002f"}.breadcrumb ul,.breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}.breadcrumb .icon:first-child{margin-right:.5em}.breadcrumb .icon:last-child{margin-left:.5em}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul{justify-content:center}.breadcrumb.is-right ol,.breadcrumb.is-right ul{justify-content:flex-end}.breadcrumb.is-small,#documenter .docs-sidebar form.docs-search>input.breadcrumb{font-size:.75rem}.breadcrumb.is-medium{font-size:1.25rem}.breadcrumb.is-large{font-size:1.5rem}.breadcrumb.has-arrow-separator li+li::before{content:"\02192"}.breadcrumb.has-bullet-separator li+li::before{content:"\02022"}.breadcrumb.has-dot-separator li+li::before{content:"\000b7"}.breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}.card{background-color:#fff;border-radius:.25rem;box-shadow:#bbb;color:#222;max-width:100%;position:relative}.card-footer:first-child,.card-content:first-child,.card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-footer:last-child,.card-content:last-child,.card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-header{background-color:rgba(0,0,0,0);align-items:stretch;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);display:flex}.card-header-title{align-items:center;color:#222;display:flex;flex-grow:1;font-weight:700;padding:0.75rem 1rem}.card-header-title.is-centered{justify-content:center}.card-header-icon{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0;align-items:center;cursor:pointer;display:flex;justify-content:center;padding:0.75rem 1rem}.card-image{display:block;position:relative}.card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-content{background-color:rgba(0,0,0,0);padding:1.5rem}.card-footer{background-color:rgba(0,0,0,0);border-top:1px solid #ededed;align-items:stretch;display:flex}.card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}.card-footer-item:not(:last-child){border-right:1px solid #ededed}.card .media:not(:last-child){margin-bottom:1.5rem}.dropdown{display:inline-flex;position:relative;vertical-align:top}.dropdown.is-active .dropdown-menu,.dropdown.is-hoverable:hover .dropdown-menu{display:block}.dropdown.is-right .dropdown-menu{left:auto;right:0}.dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}.dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}.dropdown-content{background-color:#fff;border-radius:4px;box-shadow:#bbb;padding-bottom:.5rem;padding-top:.5rem}.dropdown-item{color:#222;display:block;font-size:0.875rem;line-height:1.5;padding:0.375rem 1rem;position:relative}a.dropdown-item,button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}a.dropdown-item:hover,button.dropdown-item:hover{background-color:#f5f5f5;color:#0a0a0a}a.dropdown-item.is-active,button.dropdown-item.is-active{background-color:#2e63b8;color:#fff}.dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:0.5rem 0}.level{align-items:center;justify-content:space-between}.level code{border-radius:4px}.level img{display:inline-block;vertical-align:top}.level.is-mobile{display:flex}.level.is-mobile .level-left,.level.is-mobile .level-right{display:flex}.level.is-mobile .level-left+.level-right{margin-top:0}.level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}.level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{.level{display:flex}.level>.level-item:not(.is-narrow){flex-grow:1}}.level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}.level-item .title,.level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){.level-item:not(:last-child){margin-bottom:.75rem}}.level-left,.level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.level-left .level-item.is-flexible,.level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{.level-left .level-item:not(:last-child),.level-right .level-item:not(:last-child){margin-right:.75rem}}.level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){.level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{.level-left{display:flex}}.level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{.level-right{display:flex}}.media{align-items:flex-start;display:flex;text-align:inherit}.media .content:not(:last-child){margin-bottom:.75rem}.media .media{border-top:1px solid rgba(219,219,219,0.5);display:flex;padding-top:.75rem}.media .media .content:not(:last-child),.media .media .control:not(:last-child){margin-bottom:.5rem}.media .media .media{padding-top:.5rem}.media .media .media+.media{margin-top:.5rem}.media+.media{border-top:1px solid rgba(219,219,219,0.5);margin-top:1rem;padding-top:1rem}.media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}.media-left,.media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.media-left{margin-right:1rem}.media-right{margin-left:1rem}.media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width: 768px){.media-content{overflow-x:auto}}.menu{font-size:1rem}.menu.is-small,#documenter .docs-sidebar form.docs-search>input.menu{font-size:.75rem}.menu.is-medium{font-size:1.25rem}.menu.is-large{font-size:1.5rem}.menu-list{line-height:1.25}.menu-list a{border-radius:2px;color:#222;display:block;padding:0.5em 0.75em}.menu-list a:hover{background-color:#f5f5f5;color:#222}.menu-list a.is-active{background-color:#2e63b8;color:#fff}.menu-list li ul{border-left:1px solid #dbdbdb;margin:.75em;padding-left:.75em}.menu-label{color:#6b6b6b;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}.menu-label:not(:first-child){margin-top:1em}.menu-label:not(:last-child){margin-bottom:1em}.message{background-color:#f5f5f5;border-radius:4px;font-size:1rem}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-small,#documenter .docs-sidebar form.docs-search>input.message{font-size:.75rem}.message.is-medium{font-size:1.25rem}.message.is-large{font-size:1.5rem}.message.is-white{background-color:#fff}.message.is-white .message-header{background-color:#fff;color:#0a0a0a}.message.is-white .message-body{border-color:#fff}.message.is-black{background-color:#fafafa}.message.is-black .message-header{background-color:#0a0a0a;color:#fff}.message.is-black .message-body{border-color:#0a0a0a}.message.is-light{background-color:#fafafa}.message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.message.is-light .message-body{border-color:#f5f5f5}.message.is-dark,.content kbd.message{background-color:#fafafa}.message.is-dark .message-header,.content kbd.message .message-header{background-color:#363636;color:#fff}.message.is-dark .message-body,.content kbd.message .message-body{border-color:#363636}.message.is-primary,.docstring>section>a.message.docs-sourcelink{background-color:#eef8fc}.message.is-primary .message-header,.docstring>section>a.message.docs-sourcelink .message-header{background-color:#4eb5de;color:#fff}.message.is-primary .message-body,.docstring>section>a.message.docs-sourcelink .message-body{border-color:#4eb5de;color:#1a6d8e}.message.is-link{background-color:#eff3fb}.message.is-link .message-header{background-color:#2e63b8;color:#fff}.message.is-link .message-body{border-color:#2e63b8;color:#3169c4}.message.is-info{background-color:#eff2fb}.message.is-info .message-header{background-color:#3c5dcd;color:#fff}.message.is-info .message-body{border-color:#3c5dcd;color:#3253c3}.message.is-success{background-color:#effded}.message.is-success .message-header{background-color:#259a12;color:#fff}.message.is-success .message-body{border-color:#259a12;color:#2ec016}.message.is-warning{background-color:#fffbeb}.message.is-warning .message-header{background-color:#a98800;color:#fff}.message.is-warning .message-body{border-color:#a98800;color:#cca400}.message.is-danger{background-color:#fbefef}.message.is-danger .message-header{background-color:#cb3c33;color:#fff}.message.is-danger .message-body{border-color:#cb3c33;color:#c03930}.message-header{align-items:center;background-color:#222;border-radius:4px 4px 0 0;color:#fff;display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.75em 1em;position:relative}.message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}.message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}.message-body{border-color:#dbdbdb;border-radius:4px;border-style:solid;border-width:0 0 0 4px;color:#222;padding:1.25em 1.5em}.message-body code,.message-body pre{background-color:#fff}.message-body pre code{background-color:rgba(0,0,0,0)}.modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}.modal.is-active{display:flex}.modal-background{background-color:rgba(10,10,10,0.86)}.modal-content,.modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px){.modal-content,.modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}.modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}.modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}.modal-card-head,.modal-card-foot{align-items:center;background-color:#f5f5f5;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}.modal-card-head{border-bottom:1px solid #dbdbdb;border-top-left-radius:6px;border-top-right-radius:6px}.modal-card-title{color:#222;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}.modal-card-foot{border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:1px solid #dbdbdb}.modal-card-foot .button:not(:last-child){margin-right:.5em}.modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}.navbar{background-color:#fff;min-height:3.25rem;position:relative;z-index:30}.navbar.is-white{background-color:#fff;color:#0a0a0a}.navbar.is-white .navbar-brand>.navbar-item,.navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-brand>a.navbar-item:focus,.navbar.is-white .navbar-brand>a.navbar-item:hover,.navbar.is-white .navbar-brand>a.navbar-item.is-active,.navbar.is-white .navbar-brand .navbar-link:focus,.navbar.is-white .navbar-brand .navbar-link:hover,.navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 1056px){.navbar.is-white .navbar-start>.navbar-item,.navbar.is-white .navbar-start .navbar-link,.navbar.is-white .navbar-end>.navbar-item,.navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-start>a.navbar-item:focus,.navbar.is-white .navbar-start>a.navbar-item:hover,.navbar.is-white .navbar-start>a.navbar-item.is-active,.navbar.is-white .navbar-start .navbar-link:focus,.navbar.is-white .navbar-start .navbar-link:hover,.navbar.is-white .navbar-start .navbar-link.is-active,.navbar.is-white .navbar-end>a.navbar-item:focus,.navbar.is-white .navbar-end>a.navbar-item:hover,.navbar.is-white .navbar-end>a.navbar-item.is-active,.navbar.is-white .navbar-end .navbar-link:focus,.navbar.is-white .navbar-end .navbar-link:hover,.navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-start .navbar-link::after,.navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}.navbar.is-black{background-color:#0a0a0a;color:#fff}.navbar.is-black .navbar-brand>.navbar-item,.navbar.is-black .navbar-brand .navbar-link{color:#fff}.navbar.is-black .navbar-brand>a.navbar-item:focus,.navbar.is-black .navbar-brand>a.navbar-item:hover,.navbar.is-black .navbar-brand>a.navbar-item.is-active,.navbar.is-black .navbar-brand .navbar-link:focus,.navbar.is-black .navbar-brand .navbar-link:hover,.navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-black .navbar-start>.navbar-item,.navbar.is-black .navbar-start .navbar-link,.navbar.is-black .navbar-end>.navbar-item,.navbar.is-black .navbar-end .navbar-link{color:#fff}.navbar.is-black .navbar-start>a.navbar-item:focus,.navbar.is-black .navbar-start>a.navbar-item:hover,.navbar.is-black .navbar-start>a.navbar-item.is-active,.navbar.is-black .navbar-start .navbar-link:focus,.navbar.is-black .navbar-start .navbar-link:hover,.navbar.is-black .navbar-start .navbar-link.is-active,.navbar.is-black .navbar-end>a.navbar-item:focus,.navbar.is-black .navbar-end>a.navbar-item:hover,.navbar.is-black .navbar-end>a.navbar-item.is-active,.navbar.is-black .navbar-end .navbar-link:focus,.navbar.is-black .navbar-end .navbar-link:hover,.navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-start .navbar-link::after,.navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}.navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}.navbar.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-brand>.navbar-item,.navbar.is-light .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-brand>a.navbar-item:focus,.navbar.is-light .navbar-brand>a.navbar-item:hover,.navbar.is-light .navbar-brand>a.navbar-item.is-active,.navbar.is-light .navbar-brand .navbar-link:focus,.navbar.is-light .navbar-brand .navbar-link:hover,.navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){.navbar.is-light .navbar-start>.navbar-item,.navbar.is-light .navbar-start .navbar-link,.navbar.is-light .navbar-end>.navbar-item,.navbar.is-light .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-start>a.navbar-item:focus,.navbar.is-light .navbar-start>a.navbar-item:hover,.navbar.is-light .navbar-start>a.navbar-item.is-active,.navbar.is-light .navbar-start .navbar-link:focus,.navbar.is-light .navbar-start .navbar-link:hover,.navbar.is-light .navbar-start .navbar-link.is-active,.navbar.is-light .navbar-end>a.navbar-item:focus,.navbar.is-light .navbar-end>a.navbar-item:hover,.navbar.is-light .navbar-end>a.navbar-item.is-active,.navbar.is-light .navbar-end .navbar-link:focus,.navbar.is-light .navbar-end .navbar-link:hover,.navbar.is-light .navbar-end .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-start .navbar-link::after,.navbar.is-light .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}}.navbar.is-dark,.content kbd.navbar{background-color:#363636;color:#fff}.navbar.is-dark .navbar-brand>.navbar-item,.content kbd.navbar .navbar-brand>.navbar-item,.navbar.is-dark .navbar-brand .navbar-link,.content kbd.navbar .navbar-brand .navbar-link{color:#fff}.navbar.is-dark .navbar-brand>a.navbar-item:focus,.content kbd.navbar .navbar-brand>a.navbar-item:focus,.navbar.is-dark .navbar-brand>a.navbar-item:hover,.content kbd.navbar .navbar-brand>a.navbar-item:hover,.navbar.is-dark .navbar-brand>a.navbar-item.is-active,.content kbd.navbar .navbar-brand>a.navbar-item.is-active,.navbar.is-dark .navbar-brand .navbar-link:focus,.content kbd.navbar .navbar-brand .navbar-link:focus,.navbar.is-dark .navbar-brand .navbar-link:hover,.content kbd.navbar .navbar-brand .navbar-link:hover,.navbar.is-dark .navbar-brand .navbar-link.is-active,.content kbd.navbar .navbar-brand .navbar-link.is-active{background-color:#292929;color:#fff}.navbar.is-dark .navbar-brand .navbar-link::after,.content kbd.navbar .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-burger,.content kbd.navbar .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-dark .navbar-start>.navbar-item,.content kbd.navbar .navbar-start>.navbar-item,.navbar.is-dark .navbar-start .navbar-link,.content kbd.navbar .navbar-start .navbar-link,.navbar.is-dark .navbar-end>.navbar-item,.content kbd.navbar .navbar-end>.navbar-item,.navbar.is-dark .navbar-end .navbar-link,.content kbd.navbar .navbar-end .navbar-link{color:#fff}.navbar.is-dark .navbar-start>a.navbar-item:focus,.content kbd.navbar .navbar-start>a.navbar-item:focus,.navbar.is-dark .navbar-start>a.navbar-item:hover,.content kbd.navbar .navbar-start>a.navbar-item:hover,.navbar.is-dark .navbar-start>a.navbar-item.is-active,.content kbd.navbar .navbar-start>a.navbar-item.is-active,.navbar.is-dark .navbar-start .navbar-link:focus,.content kbd.navbar .navbar-start .navbar-link:focus,.navbar.is-dark .navbar-start .navbar-link:hover,.content kbd.navbar .navbar-start .navbar-link:hover,.navbar.is-dark .navbar-start .navbar-link.is-active,.content kbd.navbar .navbar-start .navbar-link.is-active,.navbar.is-dark .navbar-end>a.navbar-item:focus,.content kbd.navbar .navbar-end>a.navbar-item:focus,.navbar.is-dark .navbar-end>a.navbar-item:hover,.content kbd.navbar .navbar-end>a.navbar-item:hover,.navbar.is-dark .navbar-end>a.navbar-item.is-active,.content kbd.navbar .navbar-end>a.navbar-item.is-active,.navbar.is-dark .navbar-end .navbar-link:focus,.content kbd.navbar .navbar-end .navbar-link:focus,.navbar.is-dark .navbar-end .navbar-link:hover,.content kbd.navbar .navbar-end .navbar-link:hover,.navbar.is-dark .navbar-end .navbar-link.is-active,.content kbd.navbar .navbar-end .navbar-link.is-active{background-color:#292929;color:#fff}.navbar.is-dark .navbar-start .navbar-link::after,.content kbd.navbar .navbar-start .navbar-link::after,.navbar.is-dark .navbar-end .navbar-link::after,.content kbd.navbar .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,.content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,.content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,.content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link{background-color:#292929;color:#fff}.navbar.is-dark .navbar-dropdown a.navbar-item.is-active,.content kbd.navbar .navbar-dropdown a.navbar-item.is-active{background-color:#363636;color:#fff}}.navbar.is-primary,.docstring>section>a.navbar.docs-sourcelink{background-color:#4eb5de;color:#fff}.navbar.is-primary .navbar-brand>.navbar-item,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>.navbar-item,.navbar.is-primary .navbar-brand .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link{color:#fff}.navbar.is-primary .navbar-brand>a.navbar-item:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:focus,.navbar.is-primary .navbar-brand>a.navbar-item:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:hover,.navbar.is-primary .navbar-brand>a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item.is-active,.navbar.is-primary .navbar-brand .navbar-link:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus,.navbar.is-primary .navbar-brand .navbar-link:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover,.navbar.is-primary .navbar-brand .navbar-link.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active{background-color:#39acda;color:#fff}.navbar.is-primary .navbar-brand .navbar-link::after,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-burger,.docstring>section>a.navbar.docs-sourcelink .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-primary .navbar-start>.navbar-item,.docstring>section>a.navbar.docs-sourcelink .navbar-start>.navbar-item,.navbar.is-primary .navbar-start .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link,.navbar.is-primary .navbar-end>.navbar-item,.docstring>section>a.navbar.docs-sourcelink .navbar-end>.navbar-item,.navbar.is-primary .navbar-end .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link{color:#fff}.navbar.is-primary .navbar-start>a.navbar-item:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:focus,.navbar.is-primary .navbar-start>a.navbar-item:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:hover,.navbar.is-primary .navbar-start>a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item.is-active,.navbar.is-primary .navbar-start .navbar-link:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:focus,.navbar.is-primary .navbar-start .navbar-link:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:hover,.navbar.is-primary .navbar-start .navbar-link.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active,.navbar.is-primary .navbar-end>a.navbar-item:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:focus,.navbar.is-primary .navbar-end>a.navbar-item:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:hover,.navbar.is-primary .navbar-end>a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item.is-active,.navbar.is-primary .navbar-end .navbar-link:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:focus,.navbar.is-primary .navbar-end .navbar-link:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:hover,.navbar.is-primary .navbar-end .navbar-link.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active{background-color:#39acda;color:#fff}.navbar.is-primary .navbar-start .navbar-link::after,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link::after,.navbar.is-primary .navbar-end .navbar-link::after,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link{background-color:#39acda;color:#fff}.navbar.is-primary .navbar-dropdown a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#4eb5de;color:#fff}}.navbar.is-link{background-color:#2e63b8;color:#fff}.navbar.is-link .navbar-brand>.navbar-item,.navbar.is-link .navbar-brand .navbar-link{color:#fff}.navbar.is-link .navbar-brand>a.navbar-item:focus,.navbar.is-link .navbar-brand>a.navbar-item:hover,.navbar.is-link .navbar-brand>a.navbar-item.is-active,.navbar.is-link .navbar-brand .navbar-link:focus,.navbar.is-link .navbar-brand .navbar-link:hover,.navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#2958a4;color:#fff}.navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-link .navbar-start>.navbar-item,.navbar.is-link .navbar-start .navbar-link,.navbar.is-link .navbar-end>.navbar-item,.navbar.is-link .navbar-end .navbar-link{color:#fff}.navbar.is-link .navbar-start>a.navbar-item:focus,.navbar.is-link .navbar-start>a.navbar-item:hover,.navbar.is-link .navbar-start>a.navbar-item.is-active,.navbar.is-link .navbar-start .navbar-link:focus,.navbar.is-link .navbar-start .navbar-link:hover,.navbar.is-link .navbar-start .navbar-link.is-active,.navbar.is-link .navbar-end>a.navbar-item:focus,.navbar.is-link .navbar-end>a.navbar-item:hover,.navbar.is-link .navbar-end>a.navbar-item.is-active,.navbar.is-link .navbar-end .navbar-link:focus,.navbar.is-link .navbar-end .navbar-link:hover,.navbar.is-link .navbar-end .navbar-link.is-active{background-color:#2958a4;color:#fff}.navbar.is-link .navbar-start .navbar-link::after,.navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#2958a4;color:#fff}.navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#2e63b8;color:#fff}}.navbar.is-info{background-color:#3c5dcd;color:#fff}.navbar.is-info .navbar-brand>.navbar-item,.navbar.is-info .navbar-brand .navbar-link{color:#fff}.navbar.is-info .navbar-brand>a.navbar-item:focus,.navbar.is-info .navbar-brand>a.navbar-item:hover,.navbar.is-info .navbar-brand>a.navbar-item.is-active,.navbar.is-info .navbar-brand .navbar-link:focus,.navbar.is-info .navbar-brand .navbar-link:hover,.navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#3151bf;color:#fff}.navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-info .navbar-start>.navbar-item,.navbar.is-info .navbar-start .navbar-link,.navbar.is-info .navbar-end>.navbar-item,.navbar.is-info .navbar-end .navbar-link{color:#fff}.navbar.is-info .navbar-start>a.navbar-item:focus,.navbar.is-info .navbar-start>a.navbar-item:hover,.navbar.is-info .navbar-start>a.navbar-item.is-active,.navbar.is-info .navbar-start .navbar-link:focus,.navbar.is-info .navbar-start .navbar-link:hover,.navbar.is-info .navbar-start .navbar-link.is-active,.navbar.is-info .navbar-end>a.navbar-item:focus,.navbar.is-info .navbar-end>a.navbar-item:hover,.navbar.is-info .navbar-end>a.navbar-item.is-active,.navbar.is-info .navbar-end .navbar-link:focus,.navbar.is-info .navbar-end .navbar-link:hover,.navbar.is-info .navbar-end .navbar-link.is-active{background-color:#3151bf;color:#fff}.navbar.is-info .navbar-start .navbar-link::after,.navbar.is-info .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#3151bf;color:#fff}.navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#3c5dcd;color:#fff}}.navbar.is-success{background-color:#259a12;color:#fff}.navbar.is-success .navbar-brand>.navbar-item,.navbar.is-success .navbar-brand .navbar-link{color:#fff}.navbar.is-success .navbar-brand>a.navbar-item:focus,.navbar.is-success .navbar-brand>a.navbar-item:hover,.navbar.is-success .navbar-brand>a.navbar-item.is-active,.navbar.is-success .navbar-brand .navbar-link:focus,.navbar.is-success .navbar-brand .navbar-link:hover,.navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#20830f;color:#fff}.navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-success .navbar-start>.navbar-item,.navbar.is-success .navbar-start .navbar-link,.navbar.is-success .navbar-end>.navbar-item,.navbar.is-success .navbar-end .navbar-link{color:#fff}.navbar.is-success .navbar-start>a.navbar-item:focus,.navbar.is-success .navbar-start>a.navbar-item:hover,.navbar.is-success .navbar-start>a.navbar-item.is-active,.navbar.is-success .navbar-start .navbar-link:focus,.navbar.is-success .navbar-start .navbar-link:hover,.navbar.is-success .navbar-start .navbar-link.is-active,.navbar.is-success .navbar-end>a.navbar-item:focus,.navbar.is-success .navbar-end>a.navbar-item:hover,.navbar.is-success .navbar-end>a.navbar-item.is-active,.navbar.is-success .navbar-end .navbar-link:focus,.navbar.is-success .navbar-end .navbar-link:hover,.navbar.is-success .navbar-end .navbar-link.is-active{background-color:#20830f;color:#fff}.navbar.is-success .navbar-start .navbar-link::after,.navbar.is-success .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#20830f;color:#fff}.navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#259a12;color:#fff}}.navbar.is-warning{background-color:#a98800;color:#fff}.navbar.is-warning .navbar-brand>.navbar-item,.navbar.is-warning .navbar-brand .navbar-link{color:#fff}.navbar.is-warning .navbar-brand>a.navbar-item:focus,.navbar.is-warning .navbar-brand>a.navbar-item:hover,.navbar.is-warning .navbar-brand>a.navbar-item.is-active,.navbar.is-warning .navbar-brand .navbar-link:focus,.navbar.is-warning .navbar-brand .navbar-link:hover,.navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#8f7300;color:#fff}.navbar.is-warning .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-warning .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-warning .navbar-start>.navbar-item,.navbar.is-warning .navbar-start .navbar-link,.navbar.is-warning .navbar-end>.navbar-item,.navbar.is-warning .navbar-end .navbar-link{color:#fff}.navbar.is-warning .navbar-start>a.navbar-item:focus,.navbar.is-warning .navbar-start>a.navbar-item:hover,.navbar.is-warning .navbar-start>a.navbar-item.is-active,.navbar.is-warning .navbar-start .navbar-link:focus,.navbar.is-warning .navbar-start .navbar-link:hover,.navbar.is-warning .navbar-start .navbar-link.is-active,.navbar.is-warning .navbar-end>a.navbar-item:focus,.navbar.is-warning .navbar-end>a.navbar-item:hover,.navbar.is-warning .navbar-end>a.navbar-item.is-active,.navbar.is-warning .navbar-end .navbar-link:focus,.navbar.is-warning .navbar-end .navbar-link:hover,.navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#8f7300;color:#fff}.navbar.is-warning .navbar-start .navbar-link::after,.navbar.is-warning .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#8f7300;color:#fff}.navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#a98800;color:#fff}}.navbar.is-danger{background-color:#cb3c33;color:#fff}.navbar.is-danger .navbar-brand>.navbar-item,.navbar.is-danger .navbar-brand .navbar-link{color:#fff}.navbar.is-danger .navbar-brand>a.navbar-item:focus,.navbar.is-danger .navbar-brand>a.navbar-item:hover,.navbar.is-danger .navbar-brand>a.navbar-item.is-active,.navbar.is-danger .navbar-brand .navbar-link:focus,.navbar.is-danger .navbar-brand .navbar-link:hover,.navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#b7362e;color:#fff}.navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-danger .navbar-start>.navbar-item,.navbar.is-danger .navbar-start .navbar-link,.navbar.is-danger .navbar-end>.navbar-item,.navbar.is-danger .navbar-end .navbar-link{color:#fff}.navbar.is-danger .navbar-start>a.navbar-item:focus,.navbar.is-danger .navbar-start>a.navbar-item:hover,.navbar.is-danger .navbar-start>a.navbar-item.is-active,.navbar.is-danger .navbar-start .navbar-link:focus,.navbar.is-danger .navbar-start .navbar-link:hover,.navbar.is-danger .navbar-start .navbar-link.is-active,.navbar.is-danger .navbar-end>a.navbar-item:focus,.navbar.is-danger .navbar-end>a.navbar-item:hover,.navbar.is-danger .navbar-end>a.navbar-item.is-active,.navbar.is-danger .navbar-end .navbar-link:focus,.navbar.is-danger .navbar-end .navbar-link:hover,.navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#b7362e;color:#fff}.navbar.is-danger .navbar-start .navbar-link::after,.navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#b7362e;color:#fff}.navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#cb3c33;color:#fff}}.navbar>.container{align-items:stretch;display:flex;min-height:3.25rem;width:100%}.navbar.has-shadow{box-shadow:0 2px 0 0 #f5f5f5}.navbar.is-fixed-bottom,.navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom{bottom:0}.navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #f5f5f5}.navbar.is-fixed-top{top:0}html.has-navbar-fixed-top,body.has-navbar-fixed-top{padding-top:3.25rem}html.has-navbar-fixed-bottom,body.has-navbar-fixed-bottom{padding-bottom:3.25rem}.navbar-brand,.navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:3.25rem}.navbar-brand a.navbar-item:focus,.navbar-brand a.navbar-item:hover{background-color:transparent}.navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}.navbar-burger{color:#222;-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:block;height:3.25rem;position:relative;width:3.25rem;margin-left:auto}.navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color, opacity, transform;transition-timing-function:ease-out;width:16px}.navbar-burger span:nth-child(1){top:calc(50% - 6px)}.navbar-burger span:nth-child(2){top:calc(50% - 1px)}.navbar-burger span:nth-child(3){top:calc(50% + 4px)}.navbar-burger:hover{background-color:rgba(0,0,0,0.05)}.navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}.navbar-menu{display:none}.navbar-item,.navbar-link{color:#222;display:block;line-height:1.5;padding:0.5rem 0.75rem;position:relative}.navbar-item .icon:only-child,.navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}a.navbar-item,.navbar-link{cursor:pointer}a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover,a.navbar-item.is-active,.navbar-link:focus,.navbar-link:focus-within,.navbar-link:hover,.navbar-link.is-active{background-color:#fafafa;color:#2e63b8}.navbar-item{flex-grow:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{flex-grow:1;flex-shrink:1}.navbar-item.is-tab{border-bottom:1px solid transparent;min-height:3.25rem;padding-bottom:calc(0.5rem - 1px)}.navbar-item.is-tab:focus,.navbar-item.is-tab:hover{background-color:rgba(0,0,0,0);border-bottom-color:#2e63b8}.navbar-item.is-tab.is-active{background-color:rgba(0,0,0,0);border-bottom-color:#2e63b8;border-bottom-style:solid;border-bottom-width:3px;color:#2e63b8;padding-bottom:calc(0.5rem - 3px)}.navbar-content{flex-grow:1;flex-shrink:1}.navbar-link:not(.is-arrowless){padding-right:2.5em}.navbar-link:not(.is-arrowless)::after{border-color:#2e63b8;margin-top:-0.375em;right:1.125em}.navbar-dropdown{font-size:0.875rem;padding-bottom:0.5rem;padding-top:0.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-divider{background-color:#f5f5f5;border:none;display:none;height:2px;margin:0.5rem 0}@media screen and (max-width: 1055px){.navbar>.container{display:block}.navbar-brand .navbar-item,.navbar-tabs .navbar-item{align-items:center;display:flex}.navbar-link::after{display:none}.navbar-menu{background-color:#fff;box-shadow:0 8px 16px rgba(10,10,10,0.1);padding:0.5rem 0}.navbar-menu.is-active{display:block}.navbar.is-fixed-bottom-touch,.navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-touch{bottom:0}.navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}.navbar.is-fixed-top-touch{top:0}.navbar.is-fixed-top .navbar-menu,.navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 3.25rem);overflow:auto}html.has-navbar-fixed-top-touch,body.has-navbar-fixed-top-touch{padding-top:3.25rem}html.has-navbar-fixed-bottom-touch,body.has-navbar-fixed-bottom-touch{padding-bottom:3.25rem}}@media screen and (min-width: 1056px){.navbar,.navbar-menu,.navbar-start,.navbar-end{align-items:stretch;display:flex}.navbar{min-height:3.25rem}.navbar.is-spaced{padding:1rem 2rem}.navbar.is-spaced .navbar-start,.navbar.is-spaced .navbar-end{align-items:center}.navbar.is-spaced a.navbar-item,.navbar.is-spaced .navbar-link{border-radius:4px}.navbar.is-transparent a.navbar-item:focus,.navbar.is-transparent a.navbar-item:hover,.navbar.is-transparent a.navbar-item.is-active,.navbar.is-transparent .navbar-link:focus,.navbar.is-transparent .navbar-link:hover,.navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}.navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}.navbar.is-transparent .navbar-dropdown a.navbar-item:focus,.navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#2e63b8}.navbar-burger{display:none}.navbar-item,.navbar-link{align-items:center;display:flex}.navbar-item.has-dropdown{align-items:stretch}.navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}.navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:2px solid #dbdbdb;border-radius:6px 6px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,0.1);top:auto}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced .navbar-item.is-active .navbar-dropdown,.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar-menu{flex-grow:1;flex-shrink:0}.navbar-start{justify-content:flex-start;margin-right:auto}.navbar-end{justify-content:flex-end;margin-left:auto}.navbar-dropdown{background-color:#fff;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:2px solid #dbdbdb;box-shadow:0 8px 8px rgba(10,10,10,0.1);display:none;font-size:0.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}.navbar-dropdown .navbar-item{padding:0.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-right:3rem}.navbar-dropdown a.navbar-item:focus,.navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#2e63b8}.navbar.is-spaced .navbar-dropdown,.navbar-dropdown.is-boxed{border-radius:6px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,0.1), 0 0 0 1px rgba(10,10,10,0.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity, transform}.navbar-dropdown.is-right{left:auto;right:0}.navbar-divider{display:block}.navbar>.container .navbar-brand,.container>.navbar .navbar-brand{margin-left:-.75rem}.navbar>.container .navbar-menu,.container>.navbar .navbar-menu{margin-right:-.75rem}.navbar.is-fixed-bottom-desktop,.navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-desktop{bottom:0}.navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}.navbar.is-fixed-top-desktop{top:0}html.has-navbar-fixed-top-desktop,body.has-navbar-fixed-top-desktop{padding-top:3.25rem}html.has-navbar-fixed-bottom-desktop,body.has-navbar-fixed-bottom-desktop{padding-bottom:3.25rem}html.has-spaced-navbar-fixed-top,body.has-spaced-navbar-fixed-top{padding-top:5.25rem}html.has-spaced-navbar-fixed-bottom,body.has-spaced-navbar-fixed-bottom{padding-bottom:5.25rem}a.navbar-item.is-active,.navbar-link.is-active{color:#0a0a0a}a.navbar-item.is-active:not(:focus):not(:hover),.navbar-link.is-active:not(:focus):not(:hover){background-color:rgba(0,0,0,0)}.navbar-item.has-dropdown:focus .navbar-link,.navbar-item.has-dropdown:hover .navbar-link,.navbar-item.has-dropdown.is-active .navbar-link{background-color:#fafafa}}.hero.is-fullheight-with-navbar{min-height:calc(100vh - 3.25rem)}.pagination{font-size:1rem;margin:-.25rem}.pagination.is-small,#documenter .docs-sidebar form.docs-search>input.pagination{font-size:.75rem}.pagination.is-medium{font-size:1.25rem}.pagination.is-large{font-size:1.5rem}.pagination.is-rounded .pagination-previous,#documenter .docs-sidebar form.docs-search>input.pagination .pagination-previous,.pagination.is-rounded .pagination-next,#documenter .docs-sidebar form.docs-search>input.pagination .pagination-next{padding-left:1em;padding-right:1em;border-radius:9999px}.pagination.is-rounded .pagination-link,#documenter .docs-sidebar form.docs-search>input.pagination .pagination-link{border-radius:9999px}.pagination,.pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}.pagination-previous,.pagination-next,.pagination-link{border-color:#dbdbdb;color:#222;min-width:2.5em}.pagination-previous:hover,.pagination-next:hover,.pagination-link:hover{border-color:#b5b5b5;color:#363636}.pagination-previous:focus,.pagination-next:focus,.pagination-link:focus{border-color:#3c5dcd}.pagination-previous:active,.pagination-next:active,.pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2)}.pagination-previous[disabled],.pagination-previous.is-disabled,.pagination-next[disabled],.pagination-next.is-disabled,.pagination-link[disabled],.pagination-link.is-disabled{background-color:#dbdbdb;border-color:#dbdbdb;box-shadow:none;color:#6b6b6b;opacity:0.5}.pagination-previous,.pagination-next{padding-left:.75em;padding-right:.75em;white-space:nowrap}.pagination-link.is-current{background-color:#2e63b8;border-color:#2e63b8;color:#fff}.pagination-ellipsis{color:#b5b5b5;pointer-events:none}.pagination-list{flex-wrap:wrap}.pagination-list li{list-style:none}@media screen and (max-width: 768px){.pagination{flex-wrap:wrap}.pagination-previous,.pagination-next{flex-grow:1;flex-shrink:1}.pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{.pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis{margin-bottom:0;margin-top:0}.pagination-previous{order:2}.pagination-next{order:3}.pagination{justify-content:space-between;margin-bottom:0;margin-top:0}.pagination.is-centered .pagination-previous{order:1}.pagination.is-centered .pagination-list{justify-content:center;order:2}.pagination.is-centered .pagination-next{order:3}.pagination.is-right .pagination-previous{order:1}.pagination.is-right .pagination-next{order:2}.pagination.is-right .pagination-list{justify-content:flex-end;order:3}}.panel{border-radius:6px;box-shadow:#bbb;font-size:1rem}.panel:not(:last-child){margin-bottom:1.5rem}.panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}.panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}.panel.is-white .panel-block.is-active .panel-icon{color:#fff}.panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}.panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}.panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}.panel.is-light .panel-heading{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.panel.is-light .panel-tabs a.is-active{border-bottom-color:#f5f5f5}.panel.is-light .panel-block.is-active .panel-icon{color:#f5f5f5}.panel.is-dark .panel-heading,.content kbd.panel .panel-heading{background-color:#363636;color:#fff}.panel.is-dark .panel-tabs a.is-active,.content kbd.panel .panel-tabs a.is-active{border-bottom-color:#363636}.panel.is-dark .panel-block.is-active .panel-icon,.content kbd.panel .panel-block.is-active .panel-icon{color:#363636}.panel.is-primary .panel-heading,.docstring>section>a.panel.docs-sourcelink .panel-heading{background-color:#4eb5de;color:#fff}.panel.is-primary .panel-tabs a.is-active,.docstring>section>a.panel.docs-sourcelink .panel-tabs a.is-active{border-bottom-color:#4eb5de}.panel.is-primary .panel-block.is-active .panel-icon,.docstring>section>a.panel.docs-sourcelink .panel-block.is-active .panel-icon{color:#4eb5de}.panel.is-link .panel-heading{background-color:#2e63b8;color:#fff}.panel.is-link .panel-tabs a.is-active{border-bottom-color:#2e63b8}.panel.is-link .panel-block.is-active .panel-icon{color:#2e63b8}.panel.is-info .panel-heading{background-color:#3c5dcd;color:#fff}.panel.is-info .panel-tabs a.is-active{border-bottom-color:#3c5dcd}.panel.is-info .panel-block.is-active .panel-icon{color:#3c5dcd}.panel.is-success .panel-heading{background-color:#259a12;color:#fff}.panel.is-success .panel-tabs a.is-active{border-bottom-color:#259a12}.panel.is-success .panel-block.is-active .panel-icon{color:#259a12}.panel.is-warning .panel-heading{background-color:#a98800;color:#fff}.panel.is-warning .panel-tabs a.is-active{border-bottom-color:#a98800}.panel.is-warning .panel-block.is-active .panel-icon{color:#a98800}.panel.is-danger .panel-heading{background-color:#cb3c33;color:#fff}.panel.is-danger .panel-tabs a.is-active{border-bottom-color:#cb3c33}.panel.is-danger .panel-block.is-active .panel-icon{color:#cb3c33}.panel-tabs:not(:last-child),.panel-block:not(:last-child){border-bottom:1px solid #ededed}.panel-heading{background-color:#ededed;border-radius:6px 6px 0 0;color:#222;font-size:1.25em;font-weight:700;line-height:1.25;padding:0.75em 1em}.panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}.panel-tabs a{border-bottom:1px solid #dbdbdb;margin-bottom:-1px;padding:0.5em}.panel-tabs a.is-active{border-bottom-color:#4a4a4a;color:#363636}.panel-list a{color:#222}.panel-list a:hover{color:#2e63b8}.panel-block{align-items:center;color:#222;display:flex;justify-content:flex-start;padding:0.5em 0.75em}.panel-block input[type="checkbox"]{margin-right:.75em}.panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}.panel-block.is-wrapped{flex-wrap:wrap}.panel-block.is-active{border-left-color:#2e63b8;color:#363636}.panel-block.is-active .panel-icon{color:#2e63b8}.panel-block:last-child{border-bottom-left-radius:6px;border-bottom-right-radius:6px}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:#f5f5f5}.panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#6b6b6b;margin-right:.75em}.panel-icon .fa{font-size:inherit;line-height:inherit}.tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs a{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;color:#222;display:flex;justify-content:center;margin-bottom:-1px;padding:0.5em 1em;vertical-align:top}.tabs a:hover{border-bottom-color:#222;color:#222}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:#2e63b8;color:#2e63b8}.tabs ul{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}.tabs ul.is-left{padding-right:0.75em}.tabs ul.is-center{flex:none;justify-content:center;padding-left:0.75em;padding-right:0.75em}.tabs ul.is-right{justify-content:flex-end;padding-left:0.75em}.tabs .icon:first-child{margin-right:.5em}.tabs .icon:last-child{margin-left:.5em}.tabs.is-centered ul{justify-content:center}.tabs.is-right ul{justify-content:flex-end}.tabs.is-boxed a{border:1px solid transparent;border-radius:4px 4px 0 0}.tabs.is-boxed a:hover{background-color:#f5f5f5;border-bottom-color:#dbdbdb}.tabs.is-boxed li.is-active a{background-color:#fff;border-color:#dbdbdb;border-bottom-color:rgba(0,0,0,0) !important}.tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}.tabs.is-toggle a{border-color:#dbdbdb;border-style:solid;border-width:1px;margin-bottom:0;position:relative}.tabs.is-toggle a:hover{background-color:#f5f5f5;border-color:#b5b5b5;z-index:2}.tabs.is-toggle li+li{margin-left:-1px}.tabs.is-toggle li:first-child a{border-top-left-radius:4px;border-bottom-left-radius:4px}.tabs.is-toggle li:last-child a{border-top-right-radius:4px;border-bottom-right-radius:4px}.tabs.is-toggle li.is-active a{background-color:#2e63b8;border-color:#2e63b8;color:#fff;z-index:1}.tabs.is-toggle ul{border-bottom:none}.tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:9999px;border-top-left-radius:9999px;padding-left:1.25em}.tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:9999px;border-top-right-radius:9999px;padding-right:1.25em}.tabs.is-small,#documenter .docs-sidebar form.docs-search>input.tabs{font-size:.75rem}.tabs.is-medium{font-size:1.25rem}.tabs.is-large{font-size:1.5rem}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>.column.is-narrow{flex:none;width:unset}.columns.is-mobile>.column.is-full{flex:none;width:100%}.columns.is-mobile>.column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>.column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>.column.is-half{flex:none;width:50%}.columns.is-mobile>.column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>.column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>.column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>.column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>.column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>.column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>.column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>.column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>.column.is-offset-half{margin-left:50%}.columns.is-mobile>.column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>.column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>.column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>.column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>.column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>.column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>.column.is-0{flex:none;width:0%}.columns.is-mobile>.column.is-offset-0{margin-left:0%}.columns.is-mobile>.column.is-1{flex:none;width:8.33333337%}.columns.is-mobile>.column.is-offset-1{margin-left:8.33333337%}.columns.is-mobile>.column.is-2{flex:none;width:16.66666674%}.columns.is-mobile>.column.is-offset-2{margin-left:16.66666674%}.columns.is-mobile>.column.is-3{flex:none;width:25%}.columns.is-mobile>.column.is-offset-3{margin-left:25%}.columns.is-mobile>.column.is-4{flex:none;width:33.33333337%}.columns.is-mobile>.column.is-offset-4{margin-left:33.33333337%}.columns.is-mobile>.column.is-5{flex:none;width:41.66666674%}.columns.is-mobile>.column.is-offset-5{margin-left:41.66666674%}.columns.is-mobile>.column.is-6{flex:none;width:50%}.columns.is-mobile>.column.is-offset-6{margin-left:50%}.columns.is-mobile>.column.is-7{flex:none;width:58.33333337%}.columns.is-mobile>.column.is-offset-7{margin-left:58.33333337%}.columns.is-mobile>.column.is-8{flex:none;width:66.66666674%}.columns.is-mobile>.column.is-offset-8{margin-left:66.66666674%}.columns.is-mobile>.column.is-9{flex:none;width:75%}.columns.is-mobile>.column.is-offset-9{margin-left:75%}.columns.is-mobile>.column.is-10{flex:none;width:83.33333337%}.columns.is-mobile>.column.is-offset-10{margin-left:83.33333337%}.columns.is-mobile>.column.is-11{flex:none;width:91.66666674%}.columns.is-mobile>.column.is-offset-11{margin-left:91.66666674%}.columns.is-mobile>.column.is-12{flex:none;width:100%}.columns.is-mobile>.column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){.column.is-narrow-mobile{flex:none;width:unset}.column.is-full-mobile{flex:none;width:100%}.column.is-three-quarters-mobile{flex:none;width:75%}.column.is-two-thirds-mobile{flex:none;width:66.6666%}.column.is-half-mobile{flex:none;width:50%}.column.is-one-third-mobile{flex:none;width:33.3333%}.column.is-one-quarter-mobile{flex:none;width:25%}.column.is-one-fifth-mobile{flex:none;width:20%}.column.is-two-fifths-mobile{flex:none;width:40%}.column.is-three-fifths-mobile{flex:none;width:60%}.column.is-four-fifths-mobile{flex:none;width:80%}.column.is-offset-three-quarters-mobile{margin-left:75%}.column.is-offset-two-thirds-mobile{margin-left:66.6666%}.column.is-offset-half-mobile{margin-left:50%}.column.is-offset-one-third-mobile{margin-left:33.3333%}.column.is-offset-one-quarter-mobile{margin-left:25%}.column.is-offset-one-fifth-mobile{margin-left:20%}.column.is-offset-two-fifths-mobile{margin-left:40%}.column.is-offset-three-fifths-mobile{margin-left:60%}.column.is-offset-four-fifths-mobile{margin-left:80%}.column.is-0-mobile{flex:none;width:0%}.column.is-offset-0-mobile{margin-left:0%}.column.is-1-mobile{flex:none;width:8.33333337%}.column.is-offset-1-mobile{margin-left:8.33333337%}.column.is-2-mobile{flex:none;width:16.66666674%}.column.is-offset-2-mobile{margin-left:16.66666674%}.column.is-3-mobile{flex:none;width:25%}.column.is-offset-3-mobile{margin-left:25%}.column.is-4-mobile{flex:none;width:33.33333337%}.column.is-offset-4-mobile{margin-left:33.33333337%}.column.is-5-mobile{flex:none;width:41.66666674%}.column.is-offset-5-mobile{margin-left:41.66666674%}.column.is-6-mobile{flex:none;width:50%}.column.is-offset-6-mobile{margin-left:50%}.column.is-7-mobile{flex:none;width:58.33333337%}.column.is-offset-7-mobile{margin-left:58.33333337%}.column.is-8-mobile{flex:none;width:66.66666674%}.column.is-offset-8-mobile{margin-left:66.66666674%}.column.is-9-mobile{flex:none;width:75%}.column.is-offset-9-mobile{margin-left:75%}.column.is-10-mobile{flex:none;width:83.33333337%}.column.is-offset-10-mobile{margin-left:83.33333337%}.column.is-11-mobile{flex:none;width:91.66666674%}.column.is-offset-11-mobile{margin-left:91.66666674%}.column.is-12-mobile{flex:none;width:100%}.column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{.column.is-narrow,.column.is-narrow-tablet{flex:none;width:unset}.column.is-full,.column.is-full-tablet{flex:none;width:100%}.column.is-three-quarters,.column.is-three-quarters-tablet{flex:none;width:75%}.column.is-two-thirds,.column.is-two-thirds-tablet{flex:none;width:66.6666%}.column.is-half,.column.is-half-tablet{flex:none;width:50%}.column.is-one-third,.column.is-one-third-tablet{flex:none;width:33.3333%}.column.is-one-quarter,.column.is-one-quarter-tablet{flex:none;width:25%}.column.is-one-fifth,.column.is-one-fifth-tablet{flex:none;width:20%}.column.is-two-fifths,.column.is-two-fifths-tablet{flex:none;width:40%}.column.is-three-fifths,.column.is-three-fifths-tablet{flex:none;width:60%}.column.is-four-fifths,.column.is-four-fifths-tablet{flex:none;width:80%}.column.is-offset-three-quarters,.column.is-offset-three-quarters-tablet{margin-left:75%}.column.is-offset-two-thirds,.column.is-offset-two-thirds-tablet{margin-left:66.6666%}.column.is-offset-half,.column.is-offset-half-tablet{margin-left:50%}.column.is-offset-one-third,.column.is-offset-one-third-tablet{margin-left:33.3333%}.column.is-offset-one-quarter,.column.is-offset-one-quarter-tablet{margin-left:25%}.column.is-offset-one-fifth,.column.is-offset-one-fifth-tablet{margin-left:20%}.column.is-offset-two-fifths,.column.is-offset-two-fifths-tablet{margin-left:40%}.column.is-offset-three-fifths,.column.is-offset-three-fifths-tablet{margin-left:60%}.column.is-offset-four-fifths,.column.is-offset-four-fifths-tablet{margin-left:80%}.column.is-0,.column.is-0-tablet{flex:none;width:0%}.column.is-offset-0,.column.is-offset-0-tablet{margin-left:0%}.column.is-1,.column.is-1-tablet{flex:none;width:8.33333337%}.column.is-offset-1,.column.is-offset-1-tablet{margin-left:8.33333337%}.column.is-2,.column.is-2-tablet{flex:none;width:16.66666674%}.column.is-offset-2,.column.is-offset-2-tablet{margin-left:16.66666674%}.column.is-3,.column.is-3-tablet{flex:none;width:25%}.column.is-offset-3,.column.is-offset-3-tablet{margin-left:25%}.column.is-4,.column.is-4-tablet{flex:none;width:33.33333337%}.column.is-offset-4,.column.is-offset-4-tablet{margin-left:33.33333337%}.column.is-5,.column.is-5-tablet{flex:none;width:41.66666674%}.column.is-offset-5,.column.is-offset-5-tablet{margin-left:41.66666674%}.column.is-6,.column.is-6-tablet{flex:none;width:50%}.column.is-offset-6,.column.is-offset-6-tablet{margin-left:50%}.column.is-7,.column.is-7-tablet{flex:none;width:58.33333337%}.column.is-offset-7,.column.is-offset-7-tablet{margin-left:58.33333337%}.column.is-8,.column.is-8-tablet{flex:none;width:66.66666674%}.column.is-offset-8,.column.is-offset-8-tablet{margin-left:66.66666674%}.column.is-9,.column.is-9-tablet{flex:none;width:75%}.column.is-offset-9,.column.is-offset-9-tablet{margin-left:75%}.column.is-10,.column.is-10-tablet{flex:none;width:83.33333337%}.column.is-offset-10,.column.is-offset-10-tablet{margin-left:83.33333337%}.column.is-11,.column.is-11-tablet{flex:none;width:91.66666674%}.column.is-offset-11,.column.is-offset-11-tablet{margin-left:91.66666674%}.column.is-12,.column.is-12-tablet{flex:none;width:100%}.column.is-offset-12,.column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1055px){.column.is-narrow-touch{flex:none;width:unset}.column.is-full-touch{flex:none;width:100%}.column.is-three-quarters-touch{flex:none;width:75%}.column.is-two-thirds-touch{flex:none;width:66.6666%}.column.is-half-touch{flex:none;width:50%}.column.is-one-third-touch{flex:none;width:33.3333%}.column.is-one-quarter-touch{flex:none;width:25%}.column.is-one-fifth-touch{flex:none;width:20%}.column.is-two-fifths-touch{flex:none;width:40%}.column.is-three-fifths-touch{flex:none;width:60%}.column.is-four-fifths-touch{flex:none;width:80%}.column.is-offset-three-quarters-touch{margin-left:75%}.column.is-offset-two-thirds-touch{margin-left:66.6666%}.column.is-offset-half-touch{margin-left:50%}.column.is-offset-one-third-touch{margin-left:33.3333%}.column.is-offset-one-quarter-touch{margin-left:25%}.column.is-offset-one-fifth-touch{margin-left:20%}.column.is-offset-two-fifths-touch{margin-left:40%}.column.is-offset-three-fifths-touch{margin-left:60%}.column.is-offset-four-fifths-touch{margin-left:80%}.column.is-0-touch{flex:none;width:0%}.column.is-offset-0-touch{margin-left:0%}.column.is-1-touch{flex:none;width:8.33333337%}.column.is-offset-1-touch{margin-left:8.33333337%}.column.is-2-touch{flex:none;width:16.66666674%}.column.is-offset-2-touch{margin-left:16.66666674%}.column.is-3-touch{flex:none;width:25%}.column.is-offset-3-touch{margin-left:25%}.column.is-4-touch{flex:none;width:33.33333337%}.column.is-offset-4-touch{margin-left:33.33333337%}.column.is-5-touch{flex:none;width:41.66666674%}.column.is-offset-5-touch{margin-left:41.66666674%}.column.is-6-touch{flex:none;width:50%}.column.is-offset-6-touch{margin-left:50%}.column.is-7-touch{flex:none;width:58.33333337%}.column.is-offset-7-touch{margin-left:58.33333337%}.column.is-8-touch{flex:none;width:66.66666674%}.column.is-offset-8-touch{margin-left:66.66666674%}.column.is-9-touch{flex:none;width:75%}.column.is-offset-9-touch{margin-left:75%}.column.is-10-touch{flex:none;width:83.33333337%}.column.is-offset-10-touch{margin-left:83.33333337%}.column.is-11-touch{flex:none;width:91.66666674%}.column.is-offset-11-touch{margin-left:91.66666674%}.column.is-12-touch{flex:none;width:100%}.column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1056px){.column.is-narrow-desktop{flex:none;width:unset}.column.is-full-desktop{flex:none;width:100%}.column.is-three-quarters-desktop{flex:none;width:75%}.column.is-two-thirds-desktop{flex:none;width:66.6666%}.column.is-half-desktop{flex:none;width:50%}.column.is-one-third-desktop{flex:none;width:33.3333%}.column.is-one-quarter-desktop{flex:none;width:25%}.column.is-one-fifth-desktop{flex:none;width:20%}.column.is-two-fifths-desktop{flex:none;width:40%}.column.is-three-fifths-desktop{flex:none;width:60%}.column.is-four-fifths-desktop{flex:none;width:80%}.column.is-offset-three-quarters-desktop{margin-left:75%}.column.is-offset-two-thirds-desktop{margin-left:66.6666%}.column.is-offset-half-desktop{margin-left:50%}.column.is-offset-one-third-desktop{margin-left:33.3333%}.column.is-offset-one-quarter-desktop{margin-left:25%}.column.is-offset-one-fifth-desktop{margin-left:20%}.column.is-offset-two-fifths-desktop{margin-left:40%}.column.is-offset-three-fifths-desktop{margin-left:60%}.column.is-offset-four-fifths-desktop{margin-left:80%}.column.is-0-desktop{flex:none;width:0%}.column.is-offset-0-desktop{margin-left:0%}.column.is-1-desktop{flex:none;width:8.33333337%}.column.is-offset-1-desktop{margin-left:8.33333337%}.column.is-2-desktop{flex:none;width:16.66666674%}.column.is-offset-2-desktop{margin-left:16.66666674%}.column.is-3-desktop{flex:none;width:25%}.column.is-offset-3-desktop{margin-left:25%}.column.is-4-desktop{flex:none;width:33.33333337%}.column.is-offset-4-desktop{margin-left:33.33333337%}.column.is-5-desktop{flex:none;width:41.66666674%}.column.is-offset-5-desktop{margin-left:41.66666674%}.column.is-6-desktop{flex:none;width:50%}.column.is-offset-6-desktop{margin-left:50%}.column.is-7-desktop{flex:none;width:58.33333337%}.column.is-offset-7-desktop{margin-left:58.33333337%}.column.is-8-desktop{flex:none;width:66.66666674%}.column.is-offset-8-desktop{margin-left:66.66666674%}.column.is-9-desktop{flex:none;width:75%}.column.is-offset-9-desktop{margin-left:75%}.column.is-10-desktop{flex:none;width:83.33333337%}.column.is-offset-10-desktop{margin-left:83.33333337%}.column.is-11-desktop{flex:none;width:91.66666674%}.column.is-offset-11-desktop{margin-left:91.66666674%}.column.is-12-desktop{flex:none;width:100%}.column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){.column.is-narrow-widescreen{flex:none;width:unset}.column.is-full-widescreen{flex:none;width:100%}.column.is-three-quarters-widescreen{flex:none;width:75%}.column.is-two-thirds-widescreen{flex:none;width:66.6666%}.column.is-half-widescreen{flex:none;width:50%}.column.is-one-third-widescreen{flex:none;width:33.3333%}.column.is-one-quarter-widescreen{flex:none;width:25%}.column.is-one-fifth-widescreen{flex:none;width:20%}.column.is-two-fifths-widescreen{flex:none;width:40%}.column.is-three-fifths-widescreen{flex:none;width:60%}.column.is-four-fifths-widescreen{flex:none;width:80%}.column.is-offset-three-quarters-widescreen{margin-left:75%}.column.is-offset-two-thirds-widescreen{margin-left:66.6666%}.column.is-offset-half-widescreen{margin-left:50%}.column.is-offset-one-third-widescreen{margin-left:33.3333%}.column.is-offset-one-quarter-widescreen{margin-left:25%}.column.is-offset-one-fifth-widescreen{margin-left:20%}.column.is-offset-two-fifths-widescreen{margin-left:40%}.column.is-offset-three-fifths-widescreen{margin-left:60%}.column.is-offset-four-fifths-widescreen{margin-left:80%}.column.is-0-widescreen{flex:none;width:0%}.column.is-offset-0-widescreen{margin-left:0%}.column.is-1-widescreen{flex:none;width:8.33333337%}.column.is-offset-1-widescreen{margin-left:8.33333337%}.column.is-2-widescreen{flex:none;width:16.66666674%}.column.is-offset-2-widescreen{margin-left:16.66666674%}.column.is-3-widescreen{flex:none;width:25%}.column.is-offset-3-widescreen{margin-left:25%}.column.is-4-widescreen{flex:none;width:33.33333337%}.column.is-offset-4-widescreen{margin-left:33.33333337%}.column.is-5-widescreen{flex:none;width:41.66666674%}.column.is-offset-5-widescreen{margin-left:41.66666674%}.column.is-6-widescreen{flex:none;width:50%}.column.is-offset-6-widescreen{margin-left:50%}.column.is-7-widescreen{flex:none;width:58.33333337%}.column.is-offset-7-widescreen{margin-left:58.33333337%}.column.is-8-widescreen{flex:none;width:66.66666674%}.column.is-offset-8-widescreen{margin-left:66.66666674%}.column.is-9-widescreen{flex:none;width:75%}.column.is-offset-9-widescreen{margin-left:75%}.column.is-10-widescreen{flex:none;width:83.33333337%}.column.is-offset-10-widescreen{margin-left:83.33333337%}.column.is-11-widescreen{flex:none;width:91.66666674%}.column.is-offset-11-widescreen{margin-left:91.66666674%}.column.is-12-widescreen{flex:none;width:100%}.column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){.column.is-narrow-fullhd{flex:none;width:unset}.column.is-full-fullhd{flex:none;width:100%}.column.is-three-quarters-fullhd{flex:none;width:75%}.column.is-two-thirds-fullhd{flex:none;width:66.6666%}.column.is-half-fullhd{flex:none;width:50%}.column.is-one-third-fullhd{flex:none;width:33.3333%}.column.is-one-quarter-fullhd{flex:none;width:25%}.column.is-one-fifth-fullhd{flex:none;width:20%}.column.is-two-fifths-fullhd{flex:none;width:40%}.column.is-three-fifths-fullhd{flex:none;width:60%}.column.is-four-fifths-fullhd{flex:none;width:80%}.column.is-offset-three-quarters-fullhd{margin-left:75%}.column.is-offset-two-thirds-fullhd{margin-left:66.6666%}.column.is-offset-half-fullhd{margin-left:50%}.column.is-offset-one-third-fullhd{margin-left:33.3333%}.column.is-offset-one-quarter-fullhd{margin-left:25%}.column.is-offset-one-fifth-fullhd{margin-left:20%}.column.is-offset-two-fifths-fullhd{margin-left:40%}.column.is-offset-three-fifths-fullhd{margin-left:60%}.column.is-offset-four-fifths-fullhd{margin-left:80%}.column.is-0-fullhd{flex:none;width:0%}.column.is-offset-0-fullhd{margin-left:0%}.column.is-1-fullhd{flex:none;width:8.33333337%}.column.is-offset-1-fullhd{margin-left:8.33333337%}.column.is-2-fullhd{flex:none;width:16.66666674%}.column.is-offset-2-fullhd{margin-left:16.66666674%}.column.is-3-fullhd{flex:none;width:25%}.column.is-offset-3-fullhd{margin-left:25%}.column.is-4-fullhd{flex:none;width:33.33333337%}.column.is-offset-4-fullhd{margin-left:33.33333337%}.column.is-5-fullhd{flex:none;width:41.66666674%}.column.is-offset-5-fullhd{margin-left:41.66666674%}.column.is-6-fullhd{flex:none;width:50%}.column.is-offset-6-fullhd{margin-left:50%}.column.is-7-fullhd{flex:none;width:58.33333337%}.column.is-offset-7-fullhd{margin-left:58.33333337%}.column.is-8-fullhd{flex:none;width:66.66666674%}.column.is-offset-8-fullhd{margin-left:66.66666674%}.column.is-9-fullhd{flex:none;width:75%}.column.is-offset-9-fullhd{margin-left:75%}.column.is-10-fullhd{flex:none;width:83.33333337%}.column.is-offset-10-fullhd{margin-left:83.33333337%}.column.is-11-fullhd{flex:none;width:91.66666674%}.column.is-offset-11-fullhd{margin-left:91.66666674%}.column.is-12-fullhd{flex:none;width:100%}.column.is-offset-12-fullhd{margin-left:100%}}.columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.columns:last-child{margin-bottom:-.75rem}.columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}.columns.is-centered{justify-content:center}.columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}.columns.is-gapless>.column{margin:0;padding:0 !important}.columns.is-gapless:not(:last-child){margin-bottom:1.5rem}.columns.is-gapless:last-child{margin-bottom:0}.columns.is-mobile{display:flex}.columns.is-multiline{flex-wrap:wrap}.columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{.columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1056px){.columns.is-desktop{display:flex}}.columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}.columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}.columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){.columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-0-fullhd{--columnGap: 0rem}}.columns.is-variable.is-1{--columnGap: .25rem}@media screen and (max-width: 768px){.columns.is-variable.is-1-mobile{--columnGap: .25rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-1-tablet{--columnGap: .25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-1-tablet-only{--columnGap: .25rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-1-touch{--columnGap: .25rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-1-desktop{--columnGap: .25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-1-desktop-only{--columnGap: .25rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-1-widescreen{--columnGap: .25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-1-widescreen-only{--columnGap: .25rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-1-fullhd{--columnGap: .25rem}}.columns.is-variable.is-2{--columnGap: .5rem}@media screen and (max-width: 768px){.columns.is-variable.is-2-mobile{--columnGap: .5rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-2-tablet{--columnGap: .5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-2-tablet-only{--columnGap: .5rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-2-touch{--columnGap: .5rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-2-desktop{--columnGap: .5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-2-desktop-only{--columnGap: .5rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-2-widescreen{--columnGap: .5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-2-widescreen-only{--columnGap: .5rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-2-fullhd{--columnGap: .5rem}}.columns.is-variable.is-3{--columnGap: .75rem}@media screen and (max-width: 768px){.columns.is-variable.is-3-mobile{--columnGap: .75rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-3-tablet{--columnGap: .75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-3-tablet-only{--columnGap: .75rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-3-touch{--columnGap: .75rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-3-desktop{--columnGap: .75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-3-desktop-only{--columnGap: .75rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-3-widescreen{--columnGap: .75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-3-widescreen-only{--columnGap: .75rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-3-fullhd{--columnGap: .75rem}}.columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){.columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-4-fullhd{--columnGap: 1rem}}.columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){.columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}.columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){.columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}.columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){.columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}.columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){.columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-8-fullhd{--columnGap: 2rem}}.tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}.tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.tile.is-ancestor:last-child{margin-bottom:-.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0 !important}.tile.is-parent{padding:.75rem}.tile.is-vertical{flex-direction:column}.tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{.tile:not(.is-child){display:flex}.tile.is-1{flex:none;width:8.33333337%}.tile.is-2{flex:none;width:16.66666674%}.tile.is-3{flex:none;width:25%}.tile.is-4{flex:none;width:33.33333337%}.tile.is-5{flex:none;width:41.66666674%}.tile.is-6{flex:none;width:50%}.tile.is-7{flex:none;width:58.33333337%}.tile.is-8{flex:none;width:66.66666674%}.tile.is-9{flex:none;width:75%}.tile.is-10{flex:none;width:83.33333337%}.tile.is-11{flex:none;width:91.66666674%}.tile.is-12{flex:none;width:100%}}.hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}.hero .navbar{background:none}.hero .tabs ul{border-bottom:none}.hero.is-white{background-color:#fff;color:#0a0a0a}.hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-white strong{color:inherit}.hero.is-white .title{color:#0a0a0a}.hero.is-white .subtitle{color:rgba(10,10,10,0.9)}.hero.is-white .subtitle a:not(.button),.hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1055px){.hero.is-white .navbar-menu{background-color:#fff}}.hero.is-white .navbar-item,.hero.is-white .navbar-link{color:rgba(10,10,10,0.7)}.hero.is-white a.navbar-item:hover,.hero.is-white a.navbar-item.is-active,.hero.is-white .navbar-link:hover,.hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.hero.is-white .tabs a{color:#0a0a0a;opacity:0.9}.hero.is-white .tabs a:hover{opacity:1}.hero.is-white .tabs li.is-active a{color:#fff !important;opacity:1}.hero.is-white .tabs.is-boxed a,.hero.is-white .tabs.is-toggle a{color:#0a0a0a}.hero.is-white .tabs.is-boxed a:hover,.hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-white .tabs.is-boxed li.is-active a,.hero.is-white .tabs.is-boxed li.is-active a:hover,.hero.is-white .tabs.is-toggle li.is-active a,.hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}@media screen and (max-width: 768px){.hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}}.hero.is-black{background-color:#0a0a0a;color:#fff}.hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-black strong{color:inherit}.hero.is-black .title{color:#fff}.hero.is-black .subtitle{color:rgba(255,255,255,0.9)}.hero.is-black .subtitle a:not(.button),.hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-black .navbar-menu{background-color:#0a0a0a}}.hero.is-black .navbar-item,.hero.is-black .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-black a.navbar-item:hover,.hero.is-black a.navbar-item.is-active,.hero.is-black .navbar-link:hover,.hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}.hero.is-black .tabs a{color:#fff;opacity:0.9}.hero.is-black .tabs a:hover{opacity:1}.hero.is-black .tabs li.is-active a{color:#0a0a0a !important;opacity:1}.hero.is-black .tabs.is-boxed a,.hero.is-black .tabs.is-toggle a{color:#fff}.hero.is-black .tabs.is-boxed a:hover,.hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-black .tabs.is-boxed li.is-active a,.hero.is-black .tabs.is-boxed li.is-active a:hover,.hero.is-black .tabs.is-toggle li.is-active a,.hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}.hero.is-black.is-bold{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){.hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}}.hero.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-light strong{color:inherit}.hero.is-light .title{color:rgba(0,0,0,0.7)}.hero.is-light .subtitle{color:rgba(0,0,0,0.9)}.hero.is-light .subtitle a:not(.button),.hero.is-light .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){.hero.is-light .navbar-menu{background-color:#f5f5f5}}.hero.is-light .navbar-item,.hero.is-light .navbar-link{color:rgba(0,0,0,0.7)}.hero.is-light a.navbar-item:hover,.hero.is-light a.navbar-item.is-active,.hero.is-light .navbar-link:hover,.hero.is-light .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}.hero.is-light .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}.hero.is-light .tabs a:hover{opacity:1}.hero.is-light .tabs li.is-active a{color:#f5f5f5 !important;opacity:1}.hero.is-light .tabs.is-boxed a,.hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,0.7)}.hero.is-light .tabs.is-boxed a:hover,.hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-light .tabs.is-boxed li.is-active a,.hero.is-light .tabs.is-boxed li.is-active a:hover,.hero.is-light .tabs.is-toggle li.is-active a,.hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#f5f5f5}.hero.is-light.is-bold{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}@media screen and (max-width: 768px){.hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}}.hero.is-dark,.content kbd.hero{background-color:#363636;color:#fff}.hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-dark strong,.content kbd.hero strong{color:inherit}.hero.is-dark .title,.content kbd.hero .title{color:#fff}.hero.is-dark .subtitle,.content kbd.hero .subtitle{color:rgba(255,255,255,0.9)}.hero.is-dark .subtitle a:not(.button),.content kbd.hero .subtitle a:not(.button),.hero.is-dark .subtitle strong,.content kbd.hero .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-dark .navbar-menu,.content kbd.hero .navbar-menu{background-color:#363636}}.hero.is-dark .navbar-item,.content kbd.hero .navbar-item,.hero.is-dark .navbar-link,.content kbd.hero .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-dark a.navbar-item:hover,.content kbd.hero a.navbar-item:hover,.hero.is-dark a.navbar-item.is-active,.content kbd.hero a.navbar-item.is-active,.hero.is-dark .navbar-link:hover,.content kbd.hero .navbar-link:hover,.hero.is-dark .navbar-link.is-active,.content kbd.hero .navbar-link.is-active{background-color:#292929;color:#fff}.hero.is-dark .tabs a,.content kbd.hero .tabs a{color:#fff;opacity:0.9}.hero.is-dark .tabs a:hover,.content kbd.hero .tabs a:hover{opacity:1}.hero.is-dark .tabs li.is-active a,.content kbd.hero .tabs li.is-active a{color:#363636 !important;opacity:1}.hero.is-dark .tabs.is-boxed a,.content kbd.hero .tabs.is-boxed a,.hero.is-dark .tabs.is-toggle a,.content kbd.hero .tabs.is-toggle a{color:#fff}.hero.is-dark .tabs.is-boxed a:hover,.content kbd.hero .tabs.is-boxed a:hover,.hero.is-dark .tabs.is-toggle a:hover,.content kbd.hero .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-dark .tabs.is-boxed li.is-active a,.content kbd.hero .tabs.is-boxed li.is-active a,.hero.is-dark .tabs.is-boxed li.is-active a:hover,.hero.is-dark .tabs.is-toggle li.is-active a,.content kbd.hero .tabs.is-toggle li.is-active a,.hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#363636}.hero.is-dark.is-bold,.content kbd.hero.is-bold{background-image:linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%)}@media screen and (max-width: 768px){.hero.is-dark.is-bold .navbar-menu,.content kbd.hero.is-bold .navbar-menu{background-image:linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%)}}.hero.is-primary,.docstring>section>a.hero.docs-sourcelink{background-color:#4eb5de;color:#fff}.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.docstring>section>a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-primary strong,.docstring>section>a.hero.docs-sourcelink strong{color:inherit}.hero.is-primary .title,.docstring>section>a.hero.docs-sourcelink .title{color:#fff}.hero.is-primary .subtitle,.docstring>section>a.hero.docs-sourcelink .subtitle{color:rgba(255,255,255,0.9)}.hero.is-primary .subtitle a:not(.button),.docstring>section>a.hero.docs-sourcelink .subtitle a:not(.button),.hero.is-primary .subtitle strong,.docstring>section>a.hero.docs-sourcelink .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-primary .navbar-menu,.docstring>section>a.hero.docs-sourcelink .navbar-menu{background-color:#4eb5de}}.hero.is-primary .navbar-item,.docstring>section>a.hero.docs-sourcelink .navbar-item,.hero.is-primary .navbar-link,.docstring>section>a.hero.docs-sourcelink .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-primary a.navbar-item:hover,.docstring>section>a.hero.docs-sourcelink a.navbar-item:hover,.hero.is-primary a.navbar-item.is-active,.docstring>section>a.hero.docs-sourcelink a.navbar-item.is-active,.hero.is-primary .navbar-link:hover,.docstring>section>a.hero.docs-sourcelink .navbar-link:hover,.hero.is-primary .navbar-link.is-active,.docstring>section>a.hero.docs-sourcelink .navbar-link.is-active{background-color:#39acda;color:#fff}.hero.is-primary .tabs a,.docstring>section>a.hero.docs-sourcelink .tabs a{color:#fff;opacity:0.9}.hero.is-primary .tabs a:hover,.docstring>section>a.hero.docs-sourcelink .tabs a:hover{opacity:1}.hero.is-primary .tabs li.is-active a,.docstring>section>a.hero.docs-sourcelink .tabs li.is-active a{color:#4eb5de !important;opacity:1}.hero.is-primary .tabs.is-boxed a,.docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a,.hero.is-primary .tabs.is-toggle a,.docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a{color:#fff}.hero.is-primary .tabs.is-boxed a:hover,.docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a:hover,.hero.is-primary .tabs.is-toggle a:hover,.docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-primary .tabs.is-boxed li.is-active a,.docstring>section>a.hero.docs-sourcelink .tabs.is-boxed li.is-active a,.hero.is-primary .tabs.is-boxed li.is-active a:hover,.hero.is-primary .tabs.is-toggle li.is-active a,.docstring>section>a.hero.docs-sourcelink .tabs.is-toggle li.is-active a,.hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#4eb5de}.hero.is-primary.is-bold,.docstring>section>a.hero.is-bold.docs-sourcelink{background-image:linear-gradient(141deg, #1bc7de 0%, #4eb5de 71%, #5fa9e7 100%)}@media screen and (max-width: 768px){.hero.is-primary.is-bold .navbar-menu,.docstring>section>a.hero.is-bold.docs-sourcelink .navbar-menu{background-image:linear-gradient(141deg, #1bc7de 0%, #4eb5de 71%, #5fa9e7 100%)}}.hero.is-link{background-color:#2e63b8;color:#fff}.hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-link strong{color:inherit}.hero.is-link .title{color:#fff}.hero.is-link .subtitle{color:rgba(255,255,255,0.9)}.hero.is-link .subtitle a:not(.button),.hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-link .navbar-menu{background-color:#2e63b8}}.hero.is-link .navbar-item,.hero.is-link .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-link a.navbar-item:hover,.hero.is-link a.navbar-item.is-active,.hero.is-link .navbar-link:hover,.hero.is-link .navbar-link.is-active{background-color:#2958a4;color:#fff}.hero.is-link .tabs a{color:#fff;opacity:0.9}.hero.is-link .tabs a:hover{opacity:1}.hero.is-link .tabs li.is-active a{color:#2e63b8 !important;opacity:1}.hero.is-link .tabs.is-boxed a,.hero.is-link .tabs.is-toggle a{color:#fff}.hero.is-link .tabs.is-boxed a:hover,.hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-link .tabs.is-boxed li.is-active a,.hero.is-link .tabs.is-boxed li.is-active a:hover,.hero.is-link .tabs.is-toggle li.is-active a,.hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#2e63b8}.hero.is-link.is-bold{background-image:linear-gradient(141deg, #1b6098 0%, #2e63b8 71%, #2d51d2 100%)}@media screen and (max-width: 768px){.hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #1b6098 0%, #2e63b8 71%, #2d51d2 100%)}}.hero.is-info{background-color:#3c5dcd;color:#fff}.hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-info strong{color:inherit}.hero.is-info .title{color:#fff}.hero.is-info .subtitle{color:rgba(255,255,255,0.9)}.hero.is-info .subtitle a:not(.button),.hero.is-info .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-info .navbar-menu{background-color:#3c5dcd}}.hero.is-info .navbar-item,.hero.is-info .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-info a.navbar-item:hover,.hero.is-info a.navbar-item.is-active,.hero.is-info .navbar-link:hover,.hero.is-info .navbar-link.is-active{background-color:#3151bf;color:#fff}.hero.is-info .tabs a{color:#fff;opacity:0.9}.hero.is-info .tabs a:hover{opacity:1}.hero.is-info .tabs li.is-active a{color:#3c5dcd !important;opacity:1}.hero.is-info .tabs.is-boxed a,.hero.is-info .tabs.is-toggle a{color:#fff}.hero.is-info .tabs.is-boxed a:hover,.hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-info .tabs.is-boxed li.is-active a,.hero.is-info .tabs.is-boxed li.is-active a:hover,.hero.is-info .tabs.is-toggle li.is-active a,.hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#3c5dcd}.hero.is-info.is-bold{background-image:linear-gradient(141deg, #215bb5 0%, #3c5dcd 71%, #4b53d8 100%)}@media screen and (max-width: 768px){.hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #215bb5 0%, #3c5dcd 71%, #4b53d8 100%)}}.hero.is-success{background-color:#259a12;color:#fff}.hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-success strong{color:inherit}.hero.is-success .title{color:#fff}.hero.is-success .subtitle{color:rgba(255,255,255,0.9)}.hero.is-success .subtitle a:not(.button),.hero.is-success .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-success .navbar-menu{background-color:#259a12}}.hero.is-success .navbar-item,.hero.is-success .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-success a.navbar-item:hover,.hero.is-success a.navbar-item.is-active,.hero.is-success .navbar-link:hover,.hero.is-success .navbar-link.is-active{background-color:#20830f;color:#fff}.hero.is-success .tabs a{color:#fff;opacity:0.9}.hero.is-success .tabs a:hover{opacity:1}.hero.is-success .tabs li.is-active a{color:#259a12 !important;opacity:1}.hero.is-success .tabs.is-boxed a,.hero.is-success .tabs.is-toggle a{color:#fff}.hero.is-success .tabs.is-boxed a:hover,.hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-success .tabs.is-boxed li.is-active a,.hero.is-success .tabs.is-boxed li.is-active a:hover,.hero.is-success .tabs.is-toggle li.is-active a,.hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#259a12}.hero.is-success.is-bold{background-image:linear-gradient(141deg, #287207 0%, #259a12 71%, #10b614 100%)}@media screen and (max-width: 768px){.hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #287207 0%, #259a12 71%, #10b614 100%)}}.hero.is-warning{background-color:#a98800;color:#fff}.hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-warning strong{color:inherit}.hero.is-warning .title{color:#fff}.hero.is-warning .subtitle{color:rgba(255,255,255,0.9)}.hero.is-warning .subtitle a:not(.button),.hero.is-warning .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-warning .navbar-menu{background-color:#a98800}}.hero.is-warning .navbar-item,.hero.is-warning .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-warning a.navbar-item:hover,.hero.is-warning a.navbar-item.is-active,.hero.is-warning .navbar-link:hover,.hero.is-warning .navbar-link.is-active{background-color:#8f7300;color:#fff}.hero.is-warning .tabs a{color:#fff;opacity:0.9}.hero.is-warning .tabs a:hover{opacity:1}.hero.is-warning .tabs li.is-active a{color:#a98800 !important;opacity:1}.hero.is-warning .tabs.is-boxed a,.hero.is-warning .tabs.is-toggle a{color:#fff}.hero.is-warning .tabs.is-boxed a:hover,.hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-warning .tabs.is-boxed li.is-active a,.hero.is-warning .tabs.is-boxed li.is-active a:hover,.hero.is-warning .tabs.is-toggle li.is-active a,.hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#a98800}.hero.is-warning.is-bold{background-image:linear-gradient(141deg, #764b00 0%, #a98800 71%, #c2bd00 100%)}@media screen and (max-width: 768px){.hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #764b00 0%, #a98800 71%, #c2bd00 100%)}}.hero.is-danger{background-color:#cb3c33;color:#fff}.hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-danger strong{color:inherit}.hero.is-danger .title{color:#fff}.hero.is-danger .subtitle{color:rgba(255,255,255,0.9)}.hero.is-danger .subtitle a:not(.button),.hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-danger .navbar-menu{background-color:#cb3c33}}.hero.is-danger .navbar-item,.hero.is-danger .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-danger a.navbar-item:hover,.hero.is-danger a.navbar-item.is-active,.hero.is-danger .navbar-link:hover,.hero.is-danger .navbar-link.is-active{background-color:#b7362e;color:#fff}.hero.is-danger .tabs a{color:#fff;opacity:0.9}.hero.is-danger .tabs a:hover{opacity:1}.hero.is-danger .tabs li.is-active a{color:#cb3c33 !important;opacity:1}.hero.is-danger .tabs.is-boxed a,.hero.is-danger .tabs.is-toggle a{color:#fff}.hero.is-danger .tabs.is-boxed a:hover,.hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-danger .tabs.is-boxed li.is-active a,.hero.is-danger .tabs.is-boxed li.is-active a:hover,.hero.is-danger .tabs.is-toggle li.is-active a,.hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#cb3c33}.hero.is-danger.is-bold{background-image:linear-gradient(141deg, #ac1f2e 0%, #cb3c33 71%, #d66341 100%)}@media screen and (max-width: 768px){.hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #ac1f2e 0%, #cb3c33 71%, #d66341 100%)}}.hero.is-small .hero-body,#documenter .docs-sidebar form.docs-search>input.hero .hero-body{padding:1.5rem}@media screen and (min-width: 769px),print{.hero.is-medium .hero-body{padding:9rem 4.5rem}}@media screen and (min-width: 769px),print{.hero.is-large .hero-body{padding:18rem 6rem}}.hero.is-halfheight .hero-body,.hero.is-fullheight .hero-body,.hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}.hero.is-halfheight .hero-body>.container,.hero.is-fullheight .hero-body>.container,.hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}.hero.is-halfheight{min-height:50vh}.hero.is-fullheight{min-height:100vh}.hero-video{overflow:hidden}.hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}.hero-video.is-transparent{opacity:0.3}@media screen and (max-width: 768px){.hero-video{display:none}}.hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){.hero-buttons .button{display:flex}.hero-buttons .button:not(:last-child){margin-bottom:0.75rem}}@media screen and (min-width: 769px),print{.hero-buttons{display:flex;justify-content:center}.hero-buttons .button:not(:last-child){margin-right:1.5rem}}.hero-head,.hero-foot{flex-grow:0;flex-shrink:0}.hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width: 769px),print{.hero-body{padding:3rem 3rem}}.section{padding:3rem 1.5rem}@media screen and (min-width: 1056px){.section{padding:3rem 3rem}.section.is-medium{padding:9rem 4.5rem}.section.is-large{padding:18rem 6rem}}.footer{background-color:#fafafa;padding:3rem 1.5rem 6rem}h1 .docs-heading-anchor,h1 .docs-heading-anchor:hover,h1 .docs-heading-anchor:visited,h2 .docs-heading-anchor,h2 .docs-heading-anchor:hover,h2 .docs-heading-anchor:visited,h3 .docs-heading-anchor,h3 .docs-heading-anchor:hover,h3 .docs-heading-anchor:visited,h4 .docs-heading-anchor,h4 .docs-heading-anchor:hover,h4 .docs-heading-anchor:visited,h5 .docs-heading-anchor,h5 .docs-heading-anchor:hover,h5 .docs-heading-anchor:visited,h6 .docs-heading-anchor,h6 .docs-heading-anchor:hover,h6 .docs-heading-anchor:visited{color:#222}h1 .docs-heading-anchor-permalink,h2 .docs-heading-anchor-permalink,h3 .docs-heading-anchor-permalink,h4 .docs-heading-anchor-permalink,h5 .docs-heading-anchor-permalink,h6 .docs-heading-anchor-permalink{visibility:hidden;vertical-align:middle;margin-left:0.5em;font-size:0.7rem}h1 .docs-heading-anchor-permalink::before,h2 .docs-heading-anchor-permalink::before,h3 .docs-heading-anchor-permalink::before,h4 .docs-heading-anchor-permalink::before,h5 .docs-heading-anchor-permalink::before,h6 .docs-heading-anchor-permalink::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f0c1"}h1:hover .docs-heading-anchor-permalink,h2:hover .docs-heading-anchor-permalink,h3:hover .docs-heading-anchor-permalink,h4:hover .docs-heading-anchor-permalink,h5:hover .docs-heading-anchor-permalink,h6:hover .docs-heading-anchor-permalink{visibility:visible}.docs-dark-only{display:none !important}pre{position:relative;overflow:hidden}pre code,pre code.hljs{padding:0 .75rem !important;overflow:auto;display:block}pre code:first-of-type,pre code.hljs:first-of-type{padding-top:0.5rem !important}pre code:last-of-type,pre code.hljs:last-of-type{padding-bottom:0.5rem !important}pre .copy-button{opacity:0.2;transition:opacity 0.2s;position:absolute;right:0em;top:0em;padding:0.5em;width:2.5em;height:2.5em;background:transparent;border:none;font-family:"Font Awesome 6 Free";color:#222;cursor:pointer;text-align:center}pre .copy-button:focus,pre .copy-button:hover{opacity:1;background:rgba(34,34,34,0.1);color:#2e63b8}pre .copy-button.success{color:#259a12;opacity:1}pre .copy-button.error{color:#cb3c33;opacity:1}pre:hover .copy-button{opacity:1}.admonition{background-color:#f5f5f5;border-style:solid;border-width:2px;border-color:#4a4a4a;border-radius:4px;font-size:1rem}.admonition strong{color:currentColor}.admonition.is-small,#documenter .docs-sidebar form.docs-search>input.admonition{font-size:.75rem}.admonition.is-medium{font-size:1.25rem}.admonition.is-large{font-size:1.5rem}.admonition.is-default{background-color:#f5f5f5;border-color:#4a4a4a}.admonition.is-default>.admonition-header{background-color:rgba(0,0,0,0);color:#4a4a4a}.admonition.is-default>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-info{background-color:#f5f5f5;border-color:#3c5dcd}.admonition.is-info>.admonition-header{background-color:rgba(0,0,0,0);color:#3c5dcd}.admonition.is-info>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-success{background-color:#f5f5f5;border-color:#259a12}.admonition.is-success>.admonition-header{background-color:rgba(0,0,0,0);color:#259a12}.admonition.is-success>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-warning{background-color:#f5f5f5;border-color:#a98800}.admonition.is-warning>.admonition-header{background-color:rgba(0,0,0,0);color:#a98800}.admonition.is-warning>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-danger{background-color:#f5f5f5;border-color:#cb3c33}.admonition.is-danger>.admonition-header{background-color:rgba(0,0,0,0);color:#cb3c33}.admonition.is-danger>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-compat{background-color:#f5f5f5;border-color:#3489da}.admonition.is-compat>.admonition-header{background-color:rgba(0,0,0,0);color:#3489da}.admonition.is-compat>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-todo{background-color:#f5f5f5;border-color:#9558b2}.admonition.is-todo>.admonition-header{background-color:rgba(0,0,0,0);color:#9558b2}.admonition.is-todo>.admonition-body{color:rgba(0,0,0,0.7)}.admonition-header{color:#4a4a4a;background-color:rgba(0,0,0,0);align-items:center;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.5rem .75rem;position:relative}.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;margin-right:.75rem;content:"\f06a"}details.admonition.is-details>.admonition-header{list-style:none}details.admonition.is-details>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f055"}details.admonition.is-details[open]>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f056"}.admonition-body{color:#222;padding:0.5rem .75rem}.admonition-body pre{background-color:#f5f5f5}.admonition-body code{background-color:rgba(0,0,0,0.05)}.docstring{margin-bottom:1em;background-color:rgba(0,0,0,0);border:2px solid #dbdbdb;border-radius:4px;box-shadow:2px 2px 3px rgba(10,10,10,0.1);max-width:100%}.docstring>header{cursor:pointer;display:flex;flex-grow:1;align-items:stretch;padding:0.5rem .75rem;background-color:#f5f5f5;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);box-shadow:none;border-bottom:1px solid #dbdbdb;overflow:auto}.docstring>header code{background-color:transparent}.docstring>header .docstring-article-toggle-button{min-width:1.1rem;padding:0.2rem 0.2rem 0.2rem 0}.docstring>header .docstring-binding{margin-right:0.3em}.docstring>header .docstring-category{margin-left:0.3em}.docstring>section{position:relative;padding:.75rem .75rem;border-bottom:1px solid #dbdbdb}.docstring>section:last-child{border-bottom:none}.docstring>section>a.docs-sourcelink{transition:opacity 0.3s;opacity:0;position:absolute;right:.375rem;bottom:.375rem}.docstring>section>a.docs-sourcelink:focus{opacity:1 !important}.docstring:hover>section>a.docs-sourcelink{opacity:0.2}.docstring:focus-within>section>a.docs-sourcelink{opacity:0.2}.docstring>section:hover a.docs-sourcelink{opacity:1}.documenter-example-output{background-color:#fff}.outdated-warning-overlay{position:fixed;top:0;left:0;right:0;box-shadow:0 0 10px rgba(0,0,0,0.3);z-index:999;background-color:#f5f5f5;color:rgba(0,0,0,0.7);border-bottom:3px solid rgba(0,0,0,0);padding:10px 35px;text-align:center;font-size:15px}.outdated-warning-overlay .outdated-warning-closer{position:absolute;top:calc(50% - 10px);right:18px;cursor:pointer;width:12px}.outdated-warning-overlay a{color:#2e63b8}.outdated-warning-overlay a:hover{color:#363636}.content pre{border:2px solid #dbdbdb;border-radius:4px}.content code{font-weight:inherit}.content a code{color:#2e63b8}.content a:hover code{color:#363636}.content h1 code,.content h2 code,.content h3 code,.content h4 code,.content h5 code,.content h6 code{color:#222}.content table{display:block;width:initial;max-width:100%;overflow-x:auto}.content blockquote>ul:first-child,.content blockquote>ol:first-child,.content .admonition-body>ul:first-child,.content .admonition-body>ol:first-child{margin-top:0}pre,code{font-variant-ligatures:no-contextual}.breadcrumb a.is-disabled{cursor:default;pointer-events:none}.breadcrumb a.is-disabled,.breadcrumb a.is-disabled:hover{color:#222}.hljs{background:initial !important}.katex .katex-mathml{top:0;right:0}.katex-display,mjx-container,.MathJax_Display{margin:0.5em 0 !important}html{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto}li.no-marker{list-style:none}#documenter .docs-main>article{overflow-wrap:break-word}#documenter .docs-main>article .math-container{overflow-x:auto;overflow-y:hidden}@media screen and (min-width: 1056px){#documenter .docs-main{max-width:52rem;margin-left:20rem;padding-right:1rem}}@media screen and (max-width: 1055px){#documenter .docs-main{width:100%}#documenter .docs-main>article{max-width:52rem;margin-left:auto;margin-right:auto;margin-bottom:1rem;padding:0 1rem}#documenter .docs-main>header,#documenter .docs-main>nav{max-width:100%;width:100%;margin:0}}#documenter .docs-main header.docs-navbar{background-color:#fff;border-bottom:1px solid #dbdbdb;z-index:2;min-height:4rem;margin-bottom:1rem;display:flex}#documenter .docs-main header.docs-navbar .breadcrumb{flex-grow:1;overflow-x:hidden}#documenter .docs-main header.docs-navbar .docs-sidebar-button{display:block;font-size:1.5rem;padding-bottom:0.1rem;margin-right:1rem}#documenter .docs-main header.docs-navbar .docs-right{display:flex;white-space:nowrap;gap:1rem;align-items:center}#documenter .docs-main header.docs-navbar .docs-right .docs-icon,#documenter .docs-main header.docs-navbar .docs-right .docs-label{display:inline-block}#documenter .docs-main header.docs-navbar .docs-right .docs-label{padding:0;margin-left:0.3em}@media screen and (max-width: 1055px){#documenter .docs-main header.docs-navbar .docs-right .docs-navbar-link{margin-left:0.4rem;margin-right:0.4rem}}#documenter .docs-main header.docs-navbar>*{margin:auto 0}@media screen and (max-width: 1055px){#documenter .docs-main header.docs-navbar{position:sticky;top:0;padding:0 1rem;transition-property:top, box-shadow;-webkit-transition-property:top, box-shadow;transition-duration:0.3s;-webkit-transition-duration:0.3s}#documenter .docs-main header.docs-navbar.headroom--not-top{box-shadow:.2rem 0rem .4rem #bbb;transition-duration:0.7s;-webkit-transition-duration:0.7s}#documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom{top:-4.5rem;transition-duration:0.7s;-webkit-transition-duration:0.7s}}#documenter .docs-main section.footnotes{border-top:1px solid #dbdbdb}#documenter .docs-main section.footnotes li .tag:first-child,#documenter .docs-main section.footnotes li .docstring>section>a.docs-sourcelink:first-child,#documenter .docs-main section.footnotes li .content kbd:first-child,.content #documenter .docs-main section.footnotes li kbd:first-child{margin-right:1em;margin-bottom:0.4em}#documenter .docs-main .docs-footer{display:flex;flex-wrap:wrap;margin-left:0;margin-right:0;border-top:1px solid #dbdbdb;padding-top:1rem;padding-bottom:1rem}@media screen and (max-width: 1055px){#documenter .docs-main .docs-footer{padding-left:1rem;padding-right:1rem}}#documenter .docs-main .docs-footer .docs-footer-nextpage,#documenter .docs-main .docs-footer .docs-footer-prevpage{flex-grow:1}#documenter .docs-main .docs-footer .docs-footer-nextpage{text-align:right}#documenter .docs-main .docs-footer .flexbox-break{flex-basis:100%;height:0}#documenter .docs-main .docs-footer .footer-message{font-size:0.8em;margin:0.5em auto 0 auto;text-align:center}#documenter .docs-sidebar{display:flex;flex-direction:column;color:#0a0a0a;background-color:#f5f5f5;border-right:1px solid #dbdbdb;padding:0;flex:0 0 18rem;z-index:5;font-size:1rem;position:fixed;left:-18rem;width:18rem;height:100%;transition:left 0.3s}#documenter .docs-sidebar.visible{left:0;box-shadow:.4rem 0rem .8rem #bbb}@media screen and (min-width: 1056px){#documenter .docs-sidebar.visible{box-shadow:none}}@media screen and (min-width: 1056px){#documenter .docs-sidebar{left:0;top:0}}#documenter .docs-sidebar .docs-logo{margin-top:1rem;padding:0 1rem}#documenter .docs-sidebar .docs-logo>img{max-height:6rem;margin:auto}#documenter .docs-sidebar .docs-package-name{flex-shrink:0;font-size:1.5rem;font-weight:700;text-align:center;white-space:nowrap;overflow:hidden;padding:0.5rem 0}#documenter .docs-sidebar .docs-package-name .docs-autofit{max-width:16.2rem}#documenter .docs-sidebar .docs-package-name a,#documenter .docs-sidebar .docs-package-name a:hover{color:#0a0a0a}#documenter .docs-sidebar .docs-version-selector{border-top:1px solid #dbdbdb;display:none;padding:0.5rem}#documenter .docs-sidebar .docs-version-selector.visible{display:flex}#documenter .docs-sidebar ul.docs-menu{flex-grow:1;user-select:none;border-top:1px solid #dbdbdb;padding-bottom:1.5rem}#documenter .docs-sidebar ul.docs-menu>li>.tocitem{font-weight:bold}#documenter .docs-sidebar ul.docs-menu>li li{font-size:.95rem;margin-left:1em;border-left:1px solid #dbdbdb}#documenter .docs-sidebar ul.docs-menu input.collapse-toggle{display:none}#documenter .docs-sidebar ul.docs-menu ul.collapsed{display:none}#documenter .docs-sidebar ul.docs-menu input:checked~ul.collapsed{display:block}#documenter .docs-sidebar ul.docs-menu label.tocitem{display:flex}#documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label{flex-grow:2}#documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron{display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;font-size:.75rem;margin-left:1rem;margin-top:auto;margin-bottom:auto}#documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f054"}#documenter .docs-sidebar ul.docs-menu input:checked~label.tocitem .docs-chevron::before{content:"\f078"}#documenter .docs-sidebar ul.docs-menu .tocitem{display:block;padding:0.5rem 0.5rem}#documenter .docs-sidebar ul.docs-menu .tocitem,#documenter .docs-sidebar ul.docs-menu .tocitem:hover{color:#0a0a0a;background:#f5f5f5}#documenter .docs-sidebar ul.docs-menu a.tocitem:hover,#documenter .docs-sidebar ul.docs-menu label.tocitem:hover{color:#0a0a0a;background-color:#ebebeb}#documenter .docs-sidebar ul.docs-menu li.is-active{border-top:1px solid #dbdbdb;border-bottom:1px solid #dbdbdb;background-color:#fff}#documenter .docs-sidebar ul.docs-menu li.is-active .tocitem,#documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover{background-color:#fff;color:#0a0a0a}#documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover{background-color:#ebebeb;color:#0a0a0a}#documenter .docs-sidebar ul.docs-menu>li.is-active:first-child{border-top:none}#documenter .docs-sidebar ul.docs-menu ul.internal{margin:0 0.5rem 0.5rem;border-top:1px solid #dbdbdb}#documenter .docs-sidebar ul.docs-menu ul.internal li{font-size:.85rem;border-left:none;margin-left:0;margin-top:0.5rem}#documenter .docs-sidebar ul.docs-menu ul.internal .tocitem{width:100%;padding:0}#documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before{content:"⚬";margin-right:0.4em}#documenter .docs-sidebar form.docs-search{margin:auto;margin-top:0.5rem;margin-bottom:0.5rem}#documenter .docs-sidebar form.docs-search>input{width:14.4rem}#documenter .docs-sidebar #documenter-search-query{color:#707070;width:14.4rem;box-shadow:inset 0 1px 2px rgba(10,10,10,0.1)}@media screen and (min-width: 1056px){#documenter .docs-sidebar ul.docs-menu{overflow-y:auto;-webkit-overflow-scroll:touch}#documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar{width:.3rem;background:none}#documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#e0e0e0}#documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover{background:#ccc}}@media screen and (max-width: 1055px){#documenter .docs-sidebar{overflow-y:auto;-webkit-overflow-scroll:touch}#documenter .docs-sidebar::-webkit-scrollbar{width:.3rem;background:none}#documenter .docs-sidebar::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#e0e0e0}#documenter .docs-sidebar::-webkit-scrollbar-thumb:hover{background:#ccc}}kbd.search-modal-key-hints{border-radius:0.25rem;border:1px solid rgba(0,0,0,0.6);box-shadow:0 2px 0 1px rgba(0,0,0,0.6);cursor:default;font-size:0.9rem;line-height:1.5;min-width:0.75rem;text-align:center;padding:0.1rem 0.3rem;position:relative;top:-1px}.search-min-width-50{min-width:50%}.search-min-height-100{min-height:100%}.search-modal-card-body{max-height:calc(100vh - 15rem)}.search-result-link{border-radius:0.7em;transition:all 300ms}.search-result-link:hover,.search-result-link:focus{background-color:rgba(0,128,128,0.1)}.search-result-link .property-search-result-badge,.search-result-link .search-filter{transition:all 300ms}.property-search-result-badge,.search-filter{padding:0.15em 0.5em;font-size:0.8em;font-style:italic;text-transform:none !important;line-height:1.5;color:#f5f5f5;background-color:rgba(51,65,85,0.501961);border-radius:0.6rem}.search-result-link:hover .property-search-result-badge,.search-result-link:hover .search-filter,.search-result-link:focus .property-search-result-badge,.search-result-link:focus .search-filter{color:#f1f5f9;background-color:#333}.search-filter{color:#333;background-color:#f5f5f5;transition:all 300ms}.search-filter:hover,.search-filter:focus{color:#333}.search-filter-selected{color:#f5f5f5;background-color:rgba(139,0,139,0.5)}.search-filter-selected:hover,.search-filter-selected:focus{color:#f5f5f5}.search-result-highlight{background-color:#ffdd57;color:black}.search-divider{border-bottom:1px solid #dbdbdb}.search-result-title{width:85%;color:#333}.search-result-code-title{font-size:0.875rem;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}#search-modal .modal-card-body::-webkit-scrollbar,#search-modal .filter-tabs::-webkit-scrollbar{height:10px;width:10px;background-color:transparent}#search-modal .modal-card-body::-webkit-scrollbar-thumb,#search-modal .filter-tabs::-webkit-scrollbar-thumb{background-color:gray;border-radius:1rem}#search-modal .modal-card-body::-webkit-scrollbar-track,#search-modal .filter-tabs::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.6);background-color:transparent}.w-100{width:100%}.gap-2{gap:0.5rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.ansi span.sgr1{font-weight:bolder}.ansi span.sgr2{font-weight:lighter}.ansi span.sgr3{font-style:italic}.ansi span.sgr4{text-decoration:underline}.ansi span.sgr7{color:#fff;background-color:#222}.ansi span.sgr8{color:transparent}.ansi span.sgr8 span{color:transparent}.ansi span.sgr9{text-decoration:line-through}.ansi span.sgr30{color:#242424}.ansi span.sgr31{color:#a7201f}.ansi span.sgr32{color:#066f00}.ansi span.sgr33{color:#856b00}.ansi span.sgr34{color:#2149b0}.ansi span.sgr35{color:#7d4498}.ansi span.sgr36{color:#007989}.ansi span.sgr37{color:gray}.ansi span.sgr40{background-color:#242424}.ansi span.sgr41{background-color:#a7201f}.ansi span.sgr42{background-color:#066f00}.ansi span.sgr43{background-color:#856b00}.ansi span.sgr44{background-color:#2149b0}.ansi span.sgr45{background-color:#7d4498}.ansi span.sgr46{background-color:#007989}.ansi span.sgr47{background-color:gray}.ansi span.sgr90{color:#616161}.ansi span.sgr91{color:#cb3c33}.ansi span.sgr92{color:#0e8300}.ansi span.sgr93{color:#a98800}.ansi span.sgr94{color:#3c5dcd}.ansi span.sgr95{color:#9256af}.ansi span.sgr96{color:#008fa3}.ansi span.sgr97{color:#f5f5f5}.ansi span.sgr100{background-color:#616161}.ansi span.sgr101{background-color:#cb3c33}.ansi span.sgr102{background-color:#0e8300}.ansi span.sgr103{background-color:#a98800}.ansi span.sgr104{background-color:#3c5dcd}.ansi span.sgr105{background-color:#9256af}.ansi span.sgr106{background-color:#008fa3}.ansi span.sgr107{background-color:#f5f5f5}code.language-julia-repl>span.hljs-meta{color:#066f00;font-weight:bolder}/*! + Theme: Default + Description: Original highlight.js style + Author: (c) Ivan Sagalaev + Maintainer: @highlightjs/core-team + Website: https://highlightjs.org/ + License: see project LICENSE + Touched: 2021 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#F3F3F3;color:#444}.hljs-comment{color:#697070}.hljs-tag,.hljs-punctuation{color:#444a}.hljs-tag .hljs-name,.hljs-tag .hljs-attr{color:#444}.hljs-keyword,.hljs-attribute,.hljs-selector-tag,.hljs-meta .hljs-keyword,.hljs-doctag,.hljs-name{font-weight:bold}.hljs-type,.hljs-string,.hljs-number,.hljs-selector-id,.hljs-selector-class,.hljs-quote,.hljs-template-tag,.hljs-deletion{color:#880000}.hljs-title,.hljs-section{color:#880000;font-weight:bold}.hljs-regexp,.hljs-symbol,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr,.hljs-operator,.hljs-selector-pseudo{color:#ab5656}.hljs-literal{color:#695}.hljs-built_in,.hljs-bullet,.hljs-code,.hljs-addition{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta .hljs-string{color:#38a}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}.gap-4{gap:1rem} diff --git a/v0.5.0/assets/themeswap.js b/v0.5.0/assets/themeswap.js new file mode 100644 index 00000000..9f5eebe6 --- /dev/null +++ b/v0.5.0/assets/themeswap.js @@ -0,0 +1,84 @@ +// Small function to quickly swap out themes. Gets put into the tag.. +function set_theme_from_local_storage() { + // Initialize the theme to null, which means default + var theme = null; + // If the browser supports the localstorage and is not disabled then try to get the + // documenter theme + if (window.localStorage != null) { + // Get the user-picked theme from localStorage. May be `null`, which means the default + // theme. + theme = window.localStorage.getItem("documenter-theme"); + } + // Check if the users preference is for dark color scheme + var darkPreference = + window.matchMedia("(prefers-color-scheme: dark)").matches === true; + // Initialize a few variables for the loop: + // + // - active: will contain the index of the theme that should be active. Note that there + // is no guarantee that localStorage contains sane values. If `active` stays `null` + // we either could not find the theme or it is the default (primary) theme anyway. + // Either way, we then need to stick to the primary theme. + // + // - disabled: style sheets that should be disabled (i.e. all the theme style sheets + // that are not the currently active theme) + var active = null; + var disabled = []; + var primaryLightTheme = null; + var primaryDarkTheme = null; + for (var i = 0; i < document.styleSheets.length; i++) { + var ss = document.styleSheets[i]; + // The tag of each style sheet is expected to have a data-theme-name attribute + // which must contain the name of the theme. The names in localStorage much match this. + var themename = ss.ownerNode.getAttribute("data-theme-name"); + // attribute not set => non-theme stylesheet => ignore + if (themename === null) continue; + // To distinguish the default (primary) theme, it needs to have the data-theme-primary + // attribute set. + if (ss.ownerNode.getAttribute("data-theme-primary") !== null) { + primaryLightTheme = themename; + } + // Check if the theme is primary dark theme so that we could store its name in darkTheme + if (ss.ownerNode.getAttribute("data-theme-primary-dark") !== null) { + primaryDarkTheme = themename; + } + // If we find a matching theme (and it's not the default), we'll set active to non-null + if (themename === theme) active = i; + // Store the style sheets of inactive themes so that we could disable them + if (themename !== theme) disabled.push(ss); + } + var activeTheme = null; + if (active !== null) { + // If we did find an active theme, we'll (1) add the theme--$(theme) class to + document.getElementsByTagName("html")[0].className = "theme--" + theme; + activeTheme = theme; + } else { + // If we did _not_ find an active theme, then we need to fall back to the primary theme + // which can either be dark or light, depending on the user's OS preference. + var activeTheme = darkPreference ? primaryDarkTheme : primaryLightTheme; + // In case it somehow happens that the relevant primary theme was not found in the + // preceding loop, we abort without doing anything. + if (activeTheme === null) { + console.error("Unable to determine primary theme."); + return; + } + // When switching to the primary light theme, then we must not have a class name + // for the tag. That's only for non-primary or the primary dark theme. + if (darkPreference) { + document.getElementsByTagName("html")[0].className = + "theme--" + activeTheme; + } else { + document.getElementsByTagName("html")[0].className = ""; + } + } + for (var i = 0; i < document.styleSheets.length; i++) { + var ss = document.styleSheets[i]; + // The tag of each style sheet is expected to have a data-theme-name attribute + // which must contain the name of the theme. The names in localStorage much match this. + var themename = ss.ownerNode.getAttribute("data-theme-name"); + // attribute not set => non-theme stylesheet => ignore + if (themename === null) continue; + // we'll disable all the stylesheets, except for the active one + ss.disabled = !(themename == activeTheme); + } +} +set_theme_from_local_storage(); diff --git a/v0.5.0/assets/warner.js b/v0.5.0/assets/warner.js new file mode 100644 index 00000000..3f6f5d00 --- /dev/null +++ b/v0.5.0/assets/warner.js @@ -0,0 +1,52 @@ +function maybeAddWarning() { + // DOCUMENTER_NEWEST is defined in versions.js, DOCUMENTER_CURRENT_VERSION and DOCUMENTER_STABLE + // in siteinfo.js. + // If either of these are undefined something went horribly wrong, so we abort. + if ( + window.DOCUMENTER_NEWEST === undefined || + window.DOCUMENTER_CURRENT_VERSION === undefined || + window.DOCUMENTER_STABLE === undefined + ) { + return; + } + + // Current version is not a version number, so we can't tell if it's the newest version. Abort. + if (!/v(\d+\.)*\d+/.test(window.DOCUMENTER_CURRENT_VERSION)) { + return; + } + + // Current version is newest version, so no need to add a warning. + if (window.DOCUMENTER_NEWEST === window.DOCUMENTER_CURRENT_VERSION) { + return; + } + + // Add a noindex meta tag (unless one exists) so that search engines don't index this version of the docs. + if (document.body.querySelector('meta[name="robots"]') === null) { + const meta = document.createElement("meta"); + meta.name = "robots"; + meta.content = "noindex"; + + document.getElementsByTagName("head")[0].appendChild(meta); + } + + const div = document.createElement("div"); + div.classList.add("outdated-warning-overlay"); + const closer = document.createElement("button"); + closer.classList.add("outdated-warning-closer", "delete"); + closer.addEventListener("click", function () { + document.body.removeChild(div); + }); + const href = window.documenterBaseURL + "/../" + window.DOCUMENTER_STABLE; + div.innerHTML = + 'This documentation is not for the latest stable release, but for either the development version or an older release.
    Click here to go to the documentation for the latest stable release.'; + div.appendChild(closer); + document.body.appendChild(div); +} + +if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", maybeAddWarning); +} else { + maybeAddWarning(); +} diff --git a/v0.5.0/index.html b/v0.5.0/index.html new file mode 100644 index 00000000..e4bdae69 --- /dev/null +++ b/v0.5.0/index.html @@ -0,0 +1,2 @@ + +Home · DuctAPE.jl

    DuctAPE.jl [Ducted Axisymmetric Propulsor Evaluation]

    Author: Judd Mehr

    Contributer: Taylor McDonnell

    DuctAPE is a code for the aerodynamic evaluation of axisymmetric ducted ducted_rotors designed for incompressible (low mach) applications. It is strongly influenced by the underlying theory of Ducted Fan Design Code (DFDC), utilizing a linear axisymmetric vortex panel method for duct and center body, blade element lifting line rotor representation, and wake model axisymmetrically smeared onto an elliptic grid for efficient computation. DuctAPE has been developed specifically for applications in gradient-based optimization settings.

    Installation

    pkg> add https://github.com/byuflowlab/DuctAPE.jl.git

    Documentation

    • Getting Started will have you up and running quickly.
    • The Advanced Usage tab includes several pages of additional information for customizing your usage.
    • The API tab contains public and private method descriptions.
    • The Theory tab contain several pages on the underlying theory of DuctAPE.
    • The C$^4$Blade tab contains documentation for the C$^4$Blade submodule used for airfoil/cascade management within DuctAPE as well as state initialization.

    Citing

    Mehr, J. and Ning, A., "DuctAPE: A steady-state, axisymmetric ducted fan analysis code designed for gradient-based optimization.," AIAA Aviation Forum, July 2024.

    diff --git a/v0.5.0/objects.inv b/v0.5.0/objects.inv new file mode 100644 index 00000000..02304e97 Binary files /dev/null and b/v0.5.0/objects.inv differ diff --git a/v0.5.0/search_index.js b/v0.5.0/search_index.js new file mode 100644 index 00000000..2d05deaa --- /dev/null +++ b/v0.5.0/search_index.js @@ -0,0 +1,3 @@ +var documenterSearchIndex = {"docs": +[{"location":"DuctAPE/advanced_usage/outputs/#Available-Outputs","page":"Outputs","title":"Available Outputs","text":"","category":"section"},{"location":"DuctAPE/advanced_usage/outputs/","page":"Outputs","title":"Outputs","text":"The output tuple contains many items. The post_process function docstring lists them. The purpose of showing this function here is not for you to manually run the fuction or apply any advanced usage, but simply rather for you to see what the available outputs are, as several of them may apply to advanced usage cases.","category":"page"},{"location":"DuctAPE/advanced_usage/outputs/","page":"Outputs","title":"Outputs","text":"DuctAPE.post_process","category":"page"},{"location":"DuctAPE/advanced_usage/outputs/#DuctAPE.post_process-DuctAPE-advanced_usage-outputs","page":"Outputs","title":"DuctAPE.post_process","text":"post_process(\n solver_options,\n converged_states,\n prepost_containers,\n solve_container_caching,\n solve_parameter_cache_vector,\n solve_parameter_cache_dims,\n operating_point,\n reference_parameters,\n A_bb_LU,\n airfoils,\n idmaps,\n problem_dimensions,\n multipoint_index;\n write_outputs=options.write_outputs,\n outfile=options.outfile,\n checkoutfileexists=options.checkoutfileexists,\n output_tuple_name=options.output_tuple_name,\n verbose=options.verbose,\n)\n\nPost-process a converged nonlinear solve solution.\n\nArguments\n\nsolver_options::SolverOptionsType : A SolverOptionsType object (also used for dispatch)\nconverged_states::Vector{Float} : the converged state variables\nprepost_containers::NamedTuple : the named tuple containing pre-allocated containers for the pre- and post-processing intermediate calculations\nsolve_container_cache::NamedTuple : the cache and dimensions for intermediate values in the residual calculation\nsolve_parameter_cache_vector::Vector{Float} : the applicably typed cache vector for the solve parameters\nsolve_parameter_cache_dims::NamedTuple : the dimensions of the solver parameters\noperating_point::OperatingPoint : the operating point being analyzed\nreference_parameters::ReferenceParameters : a ReferenceParameters object\nA_bb_LU::LinearAlgebra.LU : LinearAlgebra LU factorization of the LHS matrix\nairfoils::Vector{AFType} : A matrix of airfoil types associated with each of the blade elements\nidmaps::NamedTuple : A named tuple containing index mapping used in bookkeeping throughout solve and post-process\nproblem_dimensions::ProblemDimensions : A ProblemDimensions object\n\nKeyword Arguments\n\nmultipoint_index::Vector{Int} : a one-dimensional vector containing the index of which multipoint analysis operating point is being analyzed.\nwrite_outputs=options.write_outputs::Vector{Bool} : a vector with the same length as number of multipoints indicating if the outputs should be saved.\noutfile=options.outfile::Vector{String} : a vector of file paths/names for where outputs should be written\ncheckoutfileexists=options.checkoutfileexists::Bool : a flag for whether existing files should be checked for or if blind overwriting is okay.\noutput_tuple_name=options.output_tuple_name::Vector{String} : the variable name(s) of the named tuple of outputs to be written.\nverbose::Bool=false : flag to print verbose statements\n\nReturns\n\nouts::NamedTuple : A named tuple containing all the output values including\n\nbodies\npanel_strengths\ntotal_thrust\nthrust_comp\ninduced_efficiency\ncp_in\ncp_out\ncp_casing_in\ncp_casing_out\ncasing_zpts\ncp_nacelle_in\ncp_nacelle_out\nnacelle_zpts\ncp_centerbody_in\ncp_centerbody_out\ncenterbody_zpts\nVtot_in\nVtot_out\nVtot_prejump\nvtot_body\nvtot_jump\nvtot_wake\nvtot_rotors\nVtan_in\nVtan_out\nvtan_casing_in\nvtan_casing_out\nvtan_nacelle_in\nvtan_nacelle_out\nvtan_centerbody_in\nvtan_centerbody_out\nrotors\ncirculation\npanel_strengths\nefficiency\ninviscid_thrust\ninviscid_thrust_dist\nviscous_thrust\nviscous_thrust_dist\nthrust\nCT\ninviscid_torque\ninviscid_torque_dist\nviscous_torque\nviscous_torque_dist\ntorque\nCQ\ninviscid_power\ninviscid_power_dist\nviscous_power\nviscous_power_dist\npower\nCP\ncl\ncd\nalpha\nbeta1\nblade_normal_force_per_unit_span\nblade_tangential_force_per_unit_span\nwake\npanel_strengths\ntotals\nthrust\ntorque\npower\nCT\nCQ\nCP\ntotal_efficiency\nideal_efficiency\nintermediate_solve_values\nvz_rotor\nvtheta_rotor\nCm_wake\nreynolds\nmach\nCz_rotor\nCtheta_rotor\nCmag_rotor\nGamma_tilde\nH_tilde\ndeltaGamma2\ndeltaH\nvz_wake\nvr_wake\nCm_avg\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/advanced_usage/outputs/#Returning-the-Pre-process-Objects","page":"Outputs","title":"Returning the Pre-process Objects","text":"","category":"section"},{"location":"DuctAPE/advanced_usage/outputs/","page":"Outputs","title":"Outputs","text":"Sometimes, it may be desireable to return the pre-process objects, including:","category":"page"},{"location":"DuctAPE/advanced_usage/outputs/","page":"Outputs","title":"Outputs","text":"panels which is a named tuple containing the body, rotor, and wake panel objects\nivb which are the unit induced velocities on the body panels\nsolve_parameter_tuple which contains all of the solver parameters\nblade_elements which contains all of the blade element geometry and airfoil information\nlinsys which contains all the linear system objects for the panel method\nidmaps which contains all the index mapping used throughout the solve and post-process.","category":"page"},{"location":"DuctAPE/advanced_usage/outputs/","page":"Outputs","title":"Outputs","text":"In this case, we can use the return_inputs keyword argument when calling the analyze function to return a named tuple containing those pre-process objects.","category":"page"},{"location":"DuctAPE/advanced_usage/outputs/","page":"Outputs","title":"Outputs","text":"outs, ins, success_flag = dt.analyze(ducted_rotor, operating_point, reference_parameters; return_inputs=true)","category":"page"},{"location":"DuctAPE/advanced_usage/manual_repaneling/#Circumventing-the-Automated-Geometry-Re-paneling","page":"-","title":"Circumventing the Automated Geometry Re-paneling","text":"","category":"section"},{"location":"DuctAPE/advanced_usage/manual_repaneling/","page":"-","title":"-","text":"It is not advised to circument the automated geometry re-paneling, but if it must be done, the user needs to provide duct, centerbody, and wake nodes conforming to compatible geometry formatting. The best use case for this is to use previously generated geometry or perhaps geometry exported from DFDC.","category":"page"},{"location":"DuctAPE/advanced_usage/manual_repaneling/","page":"-","title":"-","text":"The process is not simple, but is possible. You would have to manually run the dispatches of precompute_parameters that take in the the repaneled body nodes and wake grid. These dispatches exist for this purpose, but there is, by design, no convenience functions at this time to aid the user in easily bypassing the automated repaneling.","category":"page"},{"location":"DuctAPE/advanced_usage/precompilation/#Pre-compiling-the-Caches","page":"Preallocation","title":"Pre-compiling the Caches","text":"","category":"section"},{"location":"DuctAPE/advanced_usage/precompilation/","page":"Preallocation","title":"Preallocation","text":"There are several available caches that can be precompiled to help speed up multiple analyses. The first is a cache used for intermediate calculations in the pre- and post-processing phases of the analysis. It can be preallocated using allocate_prepost_container_cache","category":"page"},{"location":"DuctAPE/advanced_usage/precompilation/","page":"Preallocation","title":"Preallocation","text":"DuctAPE.allocate_prepost_container_cache","category":"page"},{"location":"DuctAPE/advanced_usage/precompilation/#DuctAPE.allocate_prepost_container_cache-DuctAPE-advanced_usage-precompilation","page":"Preallocation","title":"DuctAPE.allocate_prepost_container_cache","text":"allocate_prepost_container_cache(paneling_constants::PanelingConstants)\nallocate_prepost_container_cache(problem_dimensions::ProblemDimensions)\n\nAllocate the pre- and post-processing cache (used for intermediate calculations) based on paneling constants or problem dimensions.\n\nArguments\n\npaneling_constants::PanelingConstants : a PanelingConstants object\n\nOR\n\nproblem_dimensions::ProblemDimensions : a ProblemDimensions object\n\nKeyword Arguments\n\nfd_chunk_size::Int=12 : chunk size to use for PreallocationTools caches. Note that the automated chunk size for DuctAPE will always be the ForwardDiff threshold of 12 due to the size of the system, so it will be best to leave this at the default unless further development allows for chunk size selection for individual solvers.\nlevels::Int=1 : levels for nested duals. Note that since ImplicitAD is being used for all solves, there should be no need for more than 1 level.\n\nReturns\n\nprepost_container_caching::NamedTuple : a Named Tuple containing:\nprepost_container_cache::PreallocationTools.DiffCache : the cache\nprepost_container_cache_dims::NamedTuple : a named tuple containing the dimensions used for reshaping the cache when needed.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/advanced_usage/precompilation/","page":"Preallocation","title":"Preallocation","text":"The second is a cache containing parameters used in the solver, in other words, the results of the pre-processing phase. It can be preallocated using allocate_solve_parameter_cache.","category":"page"},{"location":"DuctAPE/advanced_usage/precompilation/","page":"Preallocation","title":"Preallocation","text":"DuctAPE.allocate_solve_parameter_cache","category":"page"},{"location":"DuctAPE/advanced_usage/precompilation/#DuctAPE.allocate_solve_parameter_cache-DuctAPE-advanced_usage-precompilation","page":"Preallocation","title":"DuctAPE.allocate_solve_parameter_cache","text":"allocate_solve_parameter_cache(\n solve_type::SolverOptionsType,\n paneling_constants::PanelingConstants;\n fd_chunk_size=12,\n levels=1,\n)\nallocate_solve_parameter_cache(\n solve_type::SolverOptionsType,\n problem_dimensions::ProblemDimensions;\n fd_chunk_size=12,\n levels=1\n)\n\nAllocate the solve parameter cache for parameters passed into the solver(s).\n\nArguments\n\nsolve_type::SolverOptionsType : Solver options type used for dispatch\npaneling_constants::PanelingConstants : a PanlingConstants object used for sizing\n\nOR\n\nproblem_dimensions::ProblemDimensions : a ProblemDimensions object used for sizing\n\nKeyword Arguments\n\nfd_chunk_size::Int=12 : chunk size to use for PreallocationTools caches. Note that the automated chunk size for DuctAPE will always be the ForwardDiff threshold of 12 due to the size of the system, so it will be best to leave this at the default unless further development allows for chunk size selection for individual solvers.\nlevels::Int=1 : levels for nested duals. Note that since ImplicitAD is being used for all solves, there should be no need for more than 1 level.\n\nReturns\n\nsolve_parameter_caching::NamedTuple : a Named Tuple containing:\nsolve_parameter_cache::PreallocationTools.DiffCache : the cache\nsolve_parameter_cache_dims::NamedTuple : a named tuple containing the dimensions used for reshaping the cache when needed.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/advanced_usage/precompilation/","page":"Preallocation","title":"Preallocation","text":"The final precompileable cache is for intermediate calculations within the solve and can be preallocated using allocate_solve_container_cache","category":"page"},{"location":"DuctAPE/advanced_usage/precompilation/","page":"Preallocation","title":"Preallocation","text":"DuctAPE.allocate_solve_container_cache","category":"page"},{"location":"DuctAPE/advanced_usage/precompilation/#DuctAPE.allocate_solve_container_cache-DuctAPE-advanced_usage-precompilation","page":"Preallocation","title":"DuctAPE.allocate_solve_container_cache","text":"allocate_solve_container_cache(\n solve_type::SolverOptionsType,\n paneling_constants::PanelingConstants;\n fd_chunk_size=12,\n levels=1,\n)\nallocate_solve_container_cache(\n solve_type::SolverOptionsType,\n problem_dimensions::ProblemDimensions;\n fd_chunk_size=12,\n levels=1,\n)\n\nAllocate the solve cache (used for intermediate calculations) based on paneling constants or problem dimensions.\n\nArguments\n\npaneling_constants::PanelingConstants : a PanelingConstants object\n\nOR\n\nproblem_dimensions::ProblemDimensions : a ProblemDimensions object\n\nKeyword Arguments\n\nfd_chunk_size::Int=12 : chunk size to use for PreallocationTools caches. Note that the automated chunk size for DuctAPE will always be the ForwardDiff threshold of 12 due to the size of the system, so it will be best to leave this at the default unless further development allows for chunk size selection for individual solvers.\nlevels::Int=1 : levels for nested duals. Note that since ImplicitAD is being used for all solves, there should be no need for more than 1 level.\n\nReturns\n\nsolve_container_caching::NamedTuple : a Named Tuple containing:\nsolve_container_cache::PreallocationTools.DiffCache : the cache\nsolve_container_cache_dims::NamedTuple : a named tuple containing the dimensions used for reshaping the cache when needed.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/advanced_usage/precompilation/","page":"Preallocation","title":"Preallocation","text":"You may run all these simultaneously using the initialize_all_caches function.","category":"page"},{"location":"DuctAPE/advanced_usage/precompilation/","page":"Preallocation","title":"Preallocation","text":"DuctAPE.initialize_all_caches","category":"page"},{"location":"DuctAPE/advanced_usage/precompilation/#DuctAPE.initialize_all_caches-DuctAPE-advanced_usage-precompilation","page":"Preallocation","title":"DuctAPE.initialize_all_caches","text":"initialize_all_caches(solver_options, paneling_constants)\n\nConvenience function to initialize all caches before calling analysis.\n\nArguments\n\nsolver_options::SolverOptionsType : solver options used for cache allocation dispatch\npaneling_constants::PanelingConstants : PanelingConstants object upon which all cache sizing depends\n\nKeyword Arguments\n\nfd_chunk_size::Int=12 : chunk size to use for PreallocationTools caches. Note that the automated chunk size for DuctAPE will always be the ForwardDiff threshold of 12 due to the size of the system, so it will be best to leave this at the default unless further development allows for chunk size selection for individual solvers.\nlevels::Int=1 : levels for nested duals. Note that since ImplicitAD is being used for all solves, there should be no need for more than 1 level.\n\nReturns\n\nprepost_container_caching::NamedTuple : A named tuple containing the PreallocationTools DiffCache and a named tuple with relevant dimensions for accessing the cache.\nsolve_parameter_caching::NamedTuple : A named tuple containing the PreallocationTools DiffCache and a named tuple with relevant dimensions for accessing the cache.\nsolve_container_caching::NamedTuple : A named tuple containing the PreallocationTools DiffCache and a named tuple with relevant dimensions for accessing the cache.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/advanced_usage/precompilation/","page":"Preallocation","title":"Preallocation","text":"As an example of how to run this function, we'll grab solver options and oaneling constants from previous examples","category":"page"},{"location":"DuctAPE/advanced_usage/precompilation/","page":"Preallocation","title":"Preallocation","text":"# - grab an object of SolverOptionsType defined in a previous example - #\naero_solver_options = DuctAPE.NLsolveOptions(;\n algorithm=:newton,\n atol=1e-10,\n iteration_limite=30,\n linesearch_method=LineSearches.BackTracking, #don't include parentheses on method handle\n linesearch_kwargs=(; order=3, maxstep=1e6),\n additional_kwargs=(; autoscale=false),\n)\n\n# - grab an object of PanelingConstants type from the Getting Started tutorial - #\n# number of panels for the duct inlet\nnduct_inlet = 30\n\n# number of panels for the center body inlet\nncenterbody_inlet = 30\n\n# number of panels from:\n# - rotor to duct trailing edge\n# - duct trailing edge to center body trailing edge\n# - center body trailing edge to end of wake\nnpanels = [30, 1, 30]\n\n# the duct trailing edge is ahead of the centerbody trailing edge.\ndte_minus_cbte = -1.0\n\n# number of wake sheets (one more than blade elements to use)\nnwake_sheets = 11\n\n# non-dimensional wake length aft of rear-most trailing edge\nwake_length = 0.8\n\n# assemble paneling constants\npaneling_constants = DuctAPE.PanelingConstants(\n nduct_inlet, ncenterbody_inlet, npanels, dte_minus_cbte, nwake_sheets, wake_length\n)\n\n# - Initialize Caches - #\nprepost_container_caching, solve_parameter_caching, solve_container_caching = DuctAPE.initialize_all_caches(aero_solver_options, paneling_constants)","category":"page"},{"location":"DuctAPE/advanced_usage/precompilation/#How-to-pass-the-caches-into-an-analysis","page":"Preallocation","title":"How to pass the caches into an analysis","text":"","category":"section"},{"location":"DuctAPE/advanced_usage/precompilation/","page":"Preallocation","title":"Preallocation","text":"The precompiled caches can be passed in via keyword arguments to the analysis functions. If they are not, they are generated as the first step in the analysis.","category":"page"},{"location":"DuctAPE/advanced_usage/precompilation/","page":"Preallocation","title":"Preallocation","text":"DuctAPE.analyze(\n ducted_rotor::DuctedRotor,\n operating_point::OperatingPoint,\n reference_parameters::ReferenceParameters,\n options::Options=set_options())","category":"page"},{"location":"DuctAPE/advanced_usage/precompilation/#DuctAPE.analyze-DuctAPE-advanced_usage-precompilation","page":"Preallocation","title":"DuctAPE.analyze","text":"analyze(\n ducted_rotor::DuctedRotor,\n operating_point::OperatingPoint,\n reference_parameters::ReferenceParameters,\n options::Options=set_options();\n prepost_container_caching=nothing,\n solve_parameter_caching=nothing,\n solve_container_caching=nothing,\n return_inputs=false,\n)\n\nAnalyze ducted_rotor, including preprocessing.\n\nArguments\n\nducted_rotor::DuctedRotor : DuctedRotor input object (see docstring for DuctedRotor type)\noperating_point::OperatingPoint : OperatingPoint input object (see docstring for OperatingPoint type)\nreference_parameters::ReferenceParameters : ReferenceParameters input object (see docstring for ReferenceParameters type)\noptions::Options=set_options() : Options object (see set_options and related functions)\n\nKeyword Arguments\n\nprepost_container_caching=nothing : Output of allocate_prepost_container_cache\nsolve_parameter_caching=nothing : Output of allocate_solve_parameter_container_cache\nsolve_container_caching=nothing : Output of allocate_solve_container_cache\nreturn_inputs=false : flag as to whether or not to return the pre-processed inputs\n\nReturns\n\nouts::NamedTuple : Named Tuple of various analysis outputs (see docstring for postprocess for details), note, if linear system decomposition fails, no solve is performed and an empty vector is returned.\nins::NamedTuple : Named Tuple of various pre-processed inputs (e.g. panels and body linear system), will only be returned if return_inputs=true\nconvergence_flag : Flag for successful solve convergence\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/public_api/#Public-API","page":"Public API Reference","title":"Public API","text":"","category":"section"},{"location":"DuctAPE/api/public_api/","page":"Public API Reference","title":"Public API Reference","text":"Pages = [\"public_api.md\"]\nDepth = 5","category":"page"},{"location":"DuctAPE/api/public_api/#Input-Types","page":"Public API Reference","title":"Input Types","text":"","category":"section"},{"location":"DuctAPE/api/public_api/","page":"Public API Reference","title":"Public API Reference","text":"DuctAPE.PanelingConstants\nDuctAPE.Rotor\nDuctAPE.DuctedRotor\nDuctAPE.OperatingPoint\nDuctAPE.ReferenceParameters","category":"page"},{"location":"DuctAPE/api/public_api/#DuctAPE.PanelingConstants","page":"Public API Reference","title":"DuctAPE.PanelingConstants","text":"PanelingConstants(\n nduct_inlet,\n ncenterbody_inlet,\n npanels,\n dte_minus_cbte,\n nwake_sheets,\n wake_length=1.0,\n)\n\nConstants used in re-paneling geometry.\n\nNote that unlike other input structures, this one, in general, does not define fields as vectors. This is because these values should not change throughout an optimization, even if the geometry may change. Otherwise, discontinuities could be experienced.\n\nArguments\n\nnduct_inlet::Int : The number of panels to use for the duct inlet (this number is used for both the casing and nacelle re-paneling)\nncenterbody_inlet::Int : The number of panels to use for the centerbody inlet.\nnpanels::AbstractVector{Int} : A vector containing the number of panels between discrete locations inside the wake. Specifically, the number of panels between the rotors, between the last rotor and the first body trailing edge, between the body trailing edges (if different), and between the last body trailing edge and the end of the wake. The length of this vector should be N+1 (where N is the number of rotors) if the duct and centerbody trailing edges are aligned, and N+2 if not.\ndte_minus_cbte::Float : An indicator concerning the hub and duct trailing edge relative locations. Should be set to -1 if the duct trailing edge axial position minus the centerbody trailing edge axial position is negative, +1 if positive (though any positive or negative number will suffice), and zero if the trailing edges are aligned.\nnwake_sheets::Int : The number of wake sheets to use. Note this will also be setting the number of blade elements to use.\nwake_length::Float=1.0 : Non-dimensional (based on the length from the foremost body leading edge and the aftmost body trailing edge) length of the wake extending behind the aftmost body trailing edge.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/public_api/#DuctAPE.Rotor","page":"Public API Reference","title":"DuctAPE.Rotor","text":"Rotor(\n B, rotorzloc, r, Rhub, Rtip, chords, twists, tip_gap, airfoils, fliplift\n)\n\nComposite type containing the rotor(s) geometric properties.\n\nNote that the actual struct requires the inputs to be arrays, but there is a constructor function that will take in scalars and automatically build the array-based struct.\n\nArguments\n\nB::AbstractVector{Float} : The number of blades for each rotor. May not be an integer, but usually is.\nrotorzloc::AbstractVector{Float} : Dimensional, axial position of each rotor.\nr::AbstractArray{Float} : Non-dimensional radial locations of each blade element.\nRhub::AbstractVector{Float} : Dimensional hub radius of rotor. (may be changed if it does not match the radial position of the centerbody geometry at the selected rotorzloc.\nRtip::AbstractVector{Float} : Dimensional tip radius of rotor. Is used to determine the radial position of the duct if the autoshiftduct option is selected.\nchords::AbstractArray{Float} : Dimensional chord lengths of the blade elements.\ntwists::AbstractArray{Float} : Blade element angles, in radians.\ntip_gap::AbstractVector{Float} : Currently unused, do not set to anything other than zeros.\nairfoils::AbstractArray{AFType} : Airfoil types describing the airfoil polars for each blade element. Currently only fully tested with C4Blade.DFDCairfoil types.\nfliplift::AbstractVector{Bool} : Flag to indicate if the airfoil lift values should be flipped or not.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/public_api/#DuctAPE.DuctedRotor","page":"Public API Reference","title":"DuctAPE.DuctedRotor","text":"DuctedRotor(duct_coordinates, centerbody_coordinates, rotor, paneling_constants)\n\nArguments\n\nduct_coordinates::AbstractMatrix : The [z, r] coordinates of the duct geometry beginning at the inner (casing) side trailing edge and proceeding clockwise. Note that the duct geometry absolute radial position does not need to be included here if the autoshiftduct option is selected.\ncenterbody_coordinates::AbstractMatrix : The [z, r] coordinates of the centerbody beginning at the leading edge and ending at the trailing edge. Note that the leading edge is assumed to be placed at a radial distance of 0.0 from the axis of rotation.\npaneling_constants::PanelingConstants : Constants used in re-paneling the geometry.\nrotor::Rotor : Rotor (and possibly stator) geometric paramters.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/public_api/#DuctAPE.OperatingPoint","page":"Public API Reference","title":"DuctAPE.OperatingPoint","text":"OperatingPoint(Vinf, rhoinf, muinf, asound, Omega)\n\nDuctedRotor operating point information.\n\nArguments\n\nVinf::AbstractVector{Float} : Freestream velocity magnitude (which is only in the axial direction).\nrhoinf::AbstractVector{Float} : Freestream density\nmuinf::AbstractVector{Float} : Freestream viscosity\nasound::AbstractVector{Float} : Freestream speed of sound\nOmega::AbstractVector{Float} : Rotor rototation rate(s)\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/public_api/#DuctAPE.ReferenceParameters","page":"Public API Reference","title":"DuctAPE.ReferenceParameters","text":"ReferenceParameters(Vref, Rref)\n\nReference parameters for post-process non-dimensionalization.\n\nNote that the actual struct requires the inputs to be arrays, but there is a constructor function that will take in scalars and automatically build the array-based struct.\n\nArguments\n\nVref::AbstractVector{Float} : Reference velocity.\nRref::AbstractVector{Float} : Reference rotor tip radius.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/public_api/#Preallocations","page":"Public API Reference","title":"Preallocations","text":"","category":"section"},{"location":"DuctAPE/api/public_api/","page":"Public API Reference","title":"Public API Reference","text":"DuctAPE.allocate_prepost_container_cache\nDuctAPE.allocate_solve_parameter_cache\nDuctAPE.allocate_solve_container_cache","category":"page"},{"location":"DuctAPE/api/public_api/#DuctAPE.allocate_prepost_container_cache","page":"Public API Reference","title":"DuctAPE.allocate_prepost_container_cache","text":"allocate_prepost_container_cache(paneling_constants::PanelingConstants)\nallocate_prepost_container_cache(problem_dimensions::ProblemDimensions)\n\nAllocate the pre- and post-processing cache (used for intermediate calculations) based on paneling constants or problem dimensions.\n\nArguments\n\npaneling_constants::PanelingConstants : a PanelingConstants object\n\nOR\n\nproblem_dimensions::ProblemDimensions : a ProblemDimensions object\n\nKeyword Arguments\n\nfd_chunk_size::Int=12 : chunk size to use for PreallocationTools caches. Note that the automated chunk size for DuctAPE will always be the ForwardDiff threshold of 12 due to the size of the system, so it will be best to leave this at the default unless further development allows for chunk size selection for individual solvers.\nlevels::Int=1 : levels for nested duals. Note that since ImplicitAD is being used for all solves, there should be no need for more than 1 level.\n\nReturns\n\nprepost_container_caching::NamedTuple : a Named Tuple containing:\nprepost_container_cache::PreallocationTools.DiffCache : the cache\nprepost_container_cache_dims::NamedTuple : a named tuple containing the dimensions used for reshaping the cache when needed.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/public_api/#DuctAPE.allocate_solve_parameter_cache","page":"Public API Reference","title":"DuctAPE.allocate_solve_parameter_cache","text":"allocate_solve_parameter_cache(\n solve_type::SolverOptionsType,\n paneling_constants::PanelingConstants;\n fd_chunk_size=12,\n levels=1,\n)\nallocate_solve_parameter_cache(\n solve_type::SolverOptionsType,\n problem_dimensions::ProblemDimensions;\n fd_chunk_size=12,\n levels=1\n)\n\nAllocate the solve parameter cache for parameters passed into the solver(s).\n\nArguments\n\nsolve_type::SolverOptionsType : Solver options type used for dispatch\npaneling_constants::PanelingConstants : a PanlingConstants object used for sizing\n\nOR\n\nproblem_dimensions::ProblemDimensions : a ProblemDimensions object used for sizing\n\nKeyword Arguments\n\nfd_chunk_size::Int=12 : chunk size to use for PreallocationTools caches. Note that the automated chunk size for DuctAPE will always be the ForwardDiff threshold of 12 due to the size of the system, so it will be best to leave this at the default unless further development allows for chunk size selection for individual solvers.\nlevels::Int=1 : levels for nested duals. Note that since ImplicitAD is being used for all solves, there should be no need for more than 1 level.\n\nReturns\n\nsolve_parameter_caching::NamedTuple : a Named Tuple containing:\nsolve_parameter_cache::PreallocationTools.DiffCache : the cache\nsolve_parameter_cache_dims::NamedTuple : a named tuple containing the dimensions used for reshaping the cache when needed.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/public_api/#DuctAPE.allocate_solve_container_cache","page":"Public API Reference","title":"DuctAPE.allocate_solve_container_cache","text":"allocate_solve_container_cache(\n solve_type::SolverOptionsType,\n paneling_constants::PanelingConstants;\n fd_chunk_size=12,\n levels=1,\n)\nallocate_solve_container_cache(\n solve_type::SolverOptionsType,\n problem_dimensions::ProblemDimensions;\n fd_chunk_size=12,\n levels=1,\n)\n\nAllocate the solve cache (used for intermediate calculations) based on paneling constants or problem dimensions.\n\nArguments\n\npaneling_constants::PanelingConstants : a PanelingConstants object\n\nOR\n\nproblem_dimensions::ProblemDimensions : a ProblemDimensions object\n\nKeyword Arguments\n\nfd_chunk_size::Int=12 : chunk size to use for PreallocationTools caches. Note that the automated chunk size for DuctAPE will always be the ForwardDiff threshold of 12 due to the size of the system, so it will be best to leave this at the default unless further development allows for chunk size selection for individual solvers.\nlevels::Int=1 : levels for nested duals. Note that since ImplicitAD is being used for all solves, there should be no need for more than 1 level.\n\nReturns\n\nsolve_container_caching::NamedTuple : a Named Tuple containing:\nsolve_container_cache::PreallocationTools.DiffCache : the cache\nsolve_container_cache_dims::NamedTuple : a named tuple containing the dimensions used for reshaping the cache when needed.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/public_api/#Options","page":"Public API Reference","title":"Options","text":"","category":"section"},{"location":"DuctAPE/api/public_api/#General-Options","page":"Public API Reference","title":"General Options","text":"","category":"section"},{"location":"DuctAPE/api/public_api/","page":"Public API Reference","title":"Public API Reference","text":"DuctAPE.Options\nDuctAPE.set_options","category":"page"},{"location":"DuctAPE/api/public_api/#DuctAPE.Options","page":"Public API Reference","title":"DuctAPE.Options","text":"struct Options\n\nType containing (nearly) all the available user options.\n\nFields\n\nGeneral Options\n\nverbose::Bool = false : flag to print verbose statements\nsilence_warnings::Bool = true : flag to silence warnings\nmultipoint_index::Int = [1] : holds current index of multi-point solver (no need for user to change this usually)\n\nPre-processing Options\n\nGeometry interpolation and generation options :\n\nfinterp::Interplation Method = FLOWMath.akima : interpolation method used for re-paneling bodies\nautoshiftduct::Bool = true : flag as to whether duct geometry should be shifted based on rotor tip location\nlu_decomp_flag::Bool = false : flag indicating if panel method LHS matrix factorization was successful\n\npaneling options\n\nitcpshift::Float = 0.05 : factor for internal trailing edge psuedo-panel placement (default is DFDC hard-coded value)\naxistol::Float = 1e-15 : tolerance for how close the the axis of rotation should be considered on the axis\ntegaptol::Float = 1e1 * eps() : tolerance for how large of a trailing edge gap should be considered a gap\n\nIntegration Options\n\nintegration_options::IntegrationOptions type = IntegrationOptions() : integration options\n\nPost-processing Options\n\nwrite_outputs::AbstractArray{Bool} = [false] : Bool for whether to write the outputs of the analysis to an external file (slow)\noutfile::AbstractArray{String} = [\"outputs.jl\"] : External output file name (including path information) for files to write\ncheckoutfileexists::Bool = false : Flag for whether to check if file exists before overwriting\noutput_tuple_name::AbstractArray{String} = [\"outs\"] : variable name for named tuple written to out file\n\nSolving Options\n\ngrid_solver_options::GridSolverOptionsType = GridSolverOptions() : elliptic grid solver options\nsolver_options::SolverOptionsType = ChainSolverOptions() : solver options\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/public_api/#DuctAPE.set_options","page":"Public API Reference","title":"DuctAPE.set_options","text":"set_options(; kwargs...)\nset_options(multipoint; kwargs...)\n\nSet the options for DuctAPE to use.\n\nNote that the vast majority of the available options are defined through keyword arguments. See the documentation for the various option types for more information.\n\nArguments\n\nmultipoint::AbstractArray{OperatingPoint} : a vector of operating points to use if running a multi-point analysis.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/public_api/#Integration-Options","page":"Public API Reference","title":"Integration Options","text":"","category":"section"},{"location":"DuctAPE/api/public_api/","page":"Public API Reference","title":"Public API Reference","text":"DuctAPE.IntegrationOptions\nDuctAPE.GaussLegendre\nDuctAPE.GaussKronrod\nDuctAPE.Romberg","category":"page"},{"location":"DuctAPE/api/public_api/#DuctAPE.IntegrationOptions","page":"Public API Reference","title":"DuctAPE.IntegrationOptions","text":"struct IntegrationOptions\n\nA struct used to hold the integration options for both the nominal and singular cases.\n\nFields\n\nnominal::IntegrationMethod=GaussLegendre(8) : the integration options to use for the nominal case.\nsingular::IntegrationMethod=GaussLegendre(8) : the integration options to use for the self-induced case.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/public_api/#DuctAPE.GaussLegendre","page":"Public API Reference","title":"DuctAPE.GaussLegendre","text":"struct GaussLegendre <: IntegrationMethod\n\nOptions for Gauss-Legendre integration method\n\nFields\n\nsample_points::Int : Sample Points\nweights::Int : Gauss weights\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/public_api/#DuctAPE.GaussKronrod","page":"Public API Reference","title":"DuctAPE.GaussKronrod","text":"struct GaussKronrod <: IntegrationMethod\n\nOptions for Gauss-Kronrod integration method\n\nFields\n\norder::Int = 7 : order of Legendre polynomial to use on each interval\nmaxevales::Int = 10^7 : maximum number of evaluations in the adaptive method\natol::Float = 0.0 : absolute error tolerance. (note, if zero, QuadGK uses sqrt(eps()) relative tolerance).\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/public_api/#DuctAPE.Romberg","page":"Public API Reference","title":"DuctAPE.Romberg","text":"struct Romberg <: IntegrationMethod\n\nOptions for Romberg integration method\n\nFields\n\nmax_subdivisions::Int = 10 : maximum number of subdivisions. Note, total number of internvals is 2^N, where N is number of subdivisions.\natol::Float = 1e-6 : absolute error tolerance.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/public_api/#Solver-Options","page":"Public API Reference","title":"Solver Options","text":"","category":"section"},{"location":"DuctAPE/api/public_api/#Elliptic-Grid-Solve","page":"Public API Reference","title":"Elliptic Grid Solve","text":"","category":"section"},{"location":"DuctAPE/api/public_api/","page":"Public API Reference","title":"Public API Reference","text":"DuctAPE.SLORGridSolverOptions\nDuctAPE.GridSolverOptions","category":"page"},{"location":"DuctAPE/api/public_api/#DuctAPE.SLORGridSolverOptions","page":"Public API Reference","title":"DuctAPE.SLORGridSolverOptions","text":"struct SLORGridSolverOptions <: GridSolverOptionsType\n\nOptions for SLOR (successive line over relaxation) elliptic grid solver.\n\nFields\n\niteration_limit::Int = 100 : maximum number of iterations\natol::Float = 1e-9 : absolute convergence tolerance\nconverged::AbstractArray{Bool} = [false]\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/public_api/#DuctAPE.GridSolverOptions","page":"Public API Reference","title":"DuctAPE.GridSolverOptions","text":"struct GridSolverOptions <: GridSolverOptionsType\n\nOptions for SLOR + Newton elliptic grid solver.\n\nFields\n\niteration_limit::Int = 10 : maximum number of iterations\natol::Float = 1e-14 : absolute convergence tolerance\nalgorithm::Symbol = :newton : algorithm to use in NLsolve.jl\nautodiff::Symbol = :forward : differentiation method to use in NLsolve.jl\nconverged::AbstractArray{Bool} = [false]\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/public_api/#Aerodynamics-Solve","page":"Public API Reference","title":"Aerodynamics Solve","text":"","category":"section"},{"location":"DuctAPE/api/public_api/","page":"Public API Reference","title":"Public API Reference","text":"DuctAPE.ChainSolverOptions\nDuctAPE.CompositeSolverOptions\nDuctAPE.NLsolveOptions\nDuctAPE.NonlinearSolveOptions\nDuctAPE.MinpackOptions\nDuctAPE.SIAMFANLEOptions\nDuctAPE.SpeedMappingOptions\nDuctAPE.FixedPointOptions\nDuctAPE.CSORSolverOptions","category":"page"},{"location":"DuctAPE/api/public_api/#DuctAPE.ChainSolverOptions","page":"Public API Reference","title":"DuctAPE.ChainSolverOptions","text":"struct ChainSolverOptions <:PolyAlgorithmOptions\n\nOptions for Chain Solvers (try one solver, if it doesn't converge, try another)\n\nFields\n\n`solvers::AbstractArray{SolverOptionsType} = [ NLsolveOptions(; algorithm=:anderson, atol=1e-12), MinpackOptions(; atol=1e-12), NonlinearSolveOptions(; algorithm=SimpleNonlinearSolve.SimpleNewtonRaphson, atol=1e-12, additional_kwargs=(; autodiff=SimpleNonlinearSolve.AutoForwardDiff()), ), ] : Vector of solver options to use.\nconverged::AbstractArray{Bool} = [false] : flag to track if convergence took place.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/public_api/#DuctAPE.CompositeSolverOptions","page":"Public API Reference","title":"DuctAPE.CompositeSolverOptions","text":"struct CompositeSolverOptions <: PolyAlgorithmOptions\n\nOptions for Composite Solvers (start with a partial solve of one solve, then finish with another starting where the first left off).\n\nFields\n\n`solvers::AbstractArray{SolverOptionsType} = [ NLsolveOptions(; algorithm=:newton, iteration_limit=3), NLsolveOptions(; algorithm=:anderson, atol=1e-12), ]' : Vector of solver options to use.\nconverged::AbstractArray{Bool} = [false] : flag to track if convergence took place.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/public_api/#DuctAPE.NLsolveOptions","page":"Public API Reference","title":"DuctAPE.NLsolveOptions","text":"struct NLsolveOptions <: ExternalSolverOptions\n\nOptions for the NLsolve pacakge solvers\n\nFields\n\nalgorithm::Symbol = :anderson : algorithm to use\nadditional_kwargs = (;) : any additional keyword arguments for the solver\natol::Float = 1e-12 : absolute convergence tolerance\niteration_limit::Int = 25 : maximum number of iterations\nlinesearch_method::LineSearches method = LineSearches.MoreThuente : line search method to use\nlinesearch_kwargs = (;) : any additional lineseach keyword arguments\nconverged::AbstractArray{Bool} = [false] : flag to track if convergence took place.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/public_api/#DuctAPE.NonlinearSolveOptions","page":"Public API Reference","title":"DuctAPE.NonlinearSolveOptions","text":"struct NonlinearSolveOptions <: ExternalSolverOptions\n\nOptions for the SimpleNonlinearSolve pacakge solvers\n\nFields\n\nalgorithm::SimpleNonlinearSolve algorithm = SimpleNonlinearSolve.SimpleNewtonRaphson : algorithm to use\nadditional_kwargs = (;) : any additional keyword arguments for the solver\natol::Float = 1e-12 : absolute convergence tolerance\niteration_limit::Float = 25 : maximum number of iterations\nconverged::AbstractArray{Bool} = [false] : flag to track if convergence took place.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/public_api/#DuctAPE.MinpackOptions","page":"Public API Reference","title":"DuctAPE.MinpackOptions","text":"struct MinpackOptions <: ExternalSolverOptions\n\nOptions for the MINPACK's HYBRJ solver\n\nFields\n\nalgorithm::Symbol = :hybr : algorithm to use in MINPACK.jl (hybr is HYBRJ when the jacobian is provided)\natol::FLoat = 1e-12 : absolute convergence tolerance\niteration_limit::FLoat = 100 : maximum number of iterations\nconverged::AbstractArray{Bool} = [false] : flag to track if convergence took place.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/public_api/#DuctAPE.SIAMFANLEOptions","page":"Public API Reference","title":"DuctAPE.SIAMFANLEOptions","text":"struct SIAMFANLEOptions <: ExternalSolverOptions\n\nOptions for the SIAMFANLEquations pacakge solvers\n\nFields\n\nalgorithm::SIAMFANLEquations algorithm = SIAMFANLEquations.nsoli : algorithm to use\nrtol::Float = 0.0 : relative convergence tolerance\natol::Float = 1e-10 : absolute convergence tolerance\niteration_limit::Int = 1000 : maximum number of iterations\nlinear_iteration_limit::Float = 5 : maximum number of linear solve iterations (GMRES)\nadditional_kwargs = (;) : any additional keyword arguments for the solver\nconverged::AbstractArray{Bool} = [false] : flag to track if convergence took place.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/public_api/#DuctAPE.SpeedMappingOptions","page":"Public API Reference","title":"DuctAPE.SpeedMappingOptions","text":"struct SpeedMappingOptions <: ExternalSolverOptions\n\nOptions for the SpeedMapping.jl package solver\n\nFields\n\n`orders::AbstractArray{Int} = [3, 2]\nsig_min::Int = 0 : maybe set to 1?\nstabilize::Bool = false : stabilizes before extrapolation\ncheck_obj::Bool = false : checks for inf's and nan's and starts from previous finite point\natol::Float = 1e-10 : absolute convergence tolerance\niteration_limit::Float = 1000 : maximum number of iterations\ntime_limit::Float = Inf : time limit in seconds\nlower::Float = nothing : box lower bounds\nupper::Float = nothing : box upper bounds\nbuffer::Float = 0.01 : if using bounds, buffer brings x inside bounds by buffer amountd\nLp::Float = Inf : p value for p-norm for convergence criteria\nconverged::AbstractArray{Bool} = [false] : flag to track if convergence took place.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/public_api/#DuctAPE.FixedPointOptions","page":"Public API Reference","title":"DuctAPE.FixedPointOptions","text":"struct FixedPointOptions <: ExternalSolverOptions\n\nOptions for the FixedPoint.jl package solver\n\nFields\n\niteration_limit::Int = 1000 : maximum number of iterations\nvel::Float = 0.9 : vel keyword argument, default is package default\nep::Float = 0.01 : ep keyword argument, default is package default\natol::Float = 1e-12 : absolute convergence tolerance\nconverged::AbstractArray{Bool} = [false] : flag to track if convergence took place.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/public_api/#DuctAPE.CSORSolverOptions","page":"Public API Reference","title":"DuctAPE.CSORSolverOptions","text":"struct CSORSolverOptions <: SolverOptionsType\n\nType containing all the options for the CSOR (controlled successive over relaxation) solver.\n\nNote that the defaults match DFDC with the exception of the relaxation schedule, which is an experimental feature.\n\nFields\n\nverbose::Bool = false : flag to print verbose statements\niteration_limit::Float = 1e2 : maximum number of iterations\nnrf::Float = 0.4 : nominal relaxation factor\nbt1::Float = 0.2 : backtracking factor 1\nbt2::Float = 0.6 : backtracking factor 2\npf1::Float = 0.4 : press forward factor 1\npf2::Float = 0.5 : press forward factor 2\nbtw::Float = 0.6 : backtracking factor for wake\npfw::Float = 1.2 : press forward factor for wake\nrelaxation_schedule::TS = [[0.0;1e-14;1e-13;1e10]), [1.0;1.0;0.0;0.0])] : values used in spline definition for scaling the relaxation factors (second vector) after various convergence values (first vector).\nf_circ::Float = 1e-3 : convergence tolerance for rotor circulation\nf_dgamw::Float = 2e-4 : convergence tolerance for wake vortex strength\nconvergence_type::ConvergenceType = Relative() : dispatch for relative or absolute convergence criteria.\nVconv::AbstractArray{Float} = [1.0] : velocity used in relative convergence criteria (should be set to Vref).\nconverged::AbstractArray{Bool} = [false] : flag to track if convergence took place.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/public_api/#Preprocess","page":"Public API Reference","title":"Preprocess","text":"","category":"section"},{"location":"DuctAPE/api/public_api/","page":"Public API Reference","title":"Public API Reference","text":"DuctAPE.setup_analysis","category":"page"},{"location":"DuctAPE/api/public_api/#DuctAPE.setup_analysis","page":"Public API Reference","title":"DuctAPE.setup_analysis","text":"setup_analysis(\n ducted_rotor::DuctedRotor,\n operating_point::OperatingPoint,\n options::Options=set_options();\n prepost_container_caching=nothing,\n solve_parameter_caching=nothing,\n solve_container_caching=nothing,\n)\n\nPerform pre-processing and cache setup (as needed) for propuslor analysis.\n\nArguments\n\nducted_rotor::DuctedRotor : DuctedRotor input object (see docstring for DuctedRotor type)\noperating_point::OperatingPoint : OperatingPoint input object (see docstring for OperatingPoint type)\noptions::Options=set_options() : Options object (see set_options and related functions)\n\nKeyword Arguments\n\nprepost_container_caching=nothing : Output of allocate_prepost_container_cache\nsolve_parameter_caching=nothing : Output of allocate_solve_parameter_container_cache\nsolve_container_caching=nothing : Output of allocate_solve_container_cache\n\nReturns\n\nproblem_dimensions::NamedTuple : Named Tuple contiaining bookkeeping information (problem dimensions)\nprepost_containers::NamedTuple : Named Tuple containing reshaped views into the prepost cache\nsolve_parameter_cache_vector::Vector : Vector containing the relevant typed cache vector of solve parameters\nsolve_parameter_cache_dims::NamedTuple : Named Tuple containing dimensions used for reshaping the solve parameter cache\nA_bb_LU::LinearAlgebra.LU : The LU factorization of the AIC matrix used in the panel method\nlu_decomp_flag::Bool : flag indicating if the LU decomposition was successful\nairfoils::Matrix{AFType} : Matrix contiaining the blade element airfoil polar objects\nidmaps::NamedTuple : Named Tuple containing bookkeeping information (index mappings)\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/public_api/#Analysis","page":"Public API Reference","title":"Analysis","text":"","category":"section"},{"location":"DuctAPE/api/public_api/","page":"Public API Reference","title":"Public API Reference","text":"DuctAPE.analyze","category":"page"},{"location":"DuctAPE/api/public_api/#DuctAPE.analyze","page":"Public API Reference","title":"DuctAPE.analyze","text":"analyze(\n ducted_rotor::DuctedRotor,\n operating_point::OperatingPoint,\n reference_parameters::ReferenceParameters,\n options::Options=set_options();\n prepost_container_caching=nothing,\n solve_parameter_caching=nothing,\n solve_container_caching=nothing,\n return_inputs=false,\n)\n\nAnalyze ducted_rotor, including preprocessing.\n\nArguments\n\nducted_rotor::DuctedRotor : DuctedRotor input object (see docstring for DuctedRotor type)\noperating_point::OperatingPoint : OperatingPoint input object (see docstring for OperatingPoint type)\nreference_parameters::ReferenceParameters : ReferenceParameters input object (see docstring for ReferenceParameters type)\noptions::Options=set_options() : Options object (see set_options and related functions)\n\nKeyword Arguments\n\nprepost_container_caching=nothing : Output of allocate_prepost_container_cache\nsolve_parameter_caching=nothing : Output of allocate_solve_parameter_container_cache\nsolve_container_caching=nothing : Output of allocate_solve_container_cache\nreturn_inputs=false : flag as to whether or not to return the pre-processed inputs\n\nReturns\n\nouts::NamedTuple : Named Tuple of various analysis outputs (see docstring for postprocess for details), note, if linear system decomposition fails, no solve is performed and an empty vector is returned.\nins::NamedTuple : Named Tuple of various pre-processed inputs (e.g. panels and body linear system), will only be returned if return_inputs=true\nconvergence_flag : Flag for successful solve convergence\n\n\n\n\n\nanalyze(\n ducted_rotor::DuctedRotor,\n operating_point::OperatingPoint,\n reference_parameters::ReferenceParameters,\n prepost_containers,\n solve_parameter_cache_vector,\n solve_parameter_cache_dims,\n airfoils,\n A_bb_LU,\n idmaps,\n problem_dimensions,\n options::Options=set_options();\n return_inputs=false,\n solve_container_caching=nothing,\n)\n\nAnalyze ductedrotor, assuming `setupanalysis` has been called and the outputs thereof are being passed in here.\n\nArguments\n\nducted_rotor::DuctedRotor : DuctedRotor input object (see docstring for DuctedRotor type)\noperating_point::OperatingPoint : OperatingPoint input object (see docstring for OperatingPoint type)\nreference_parameters::ReferenceParameters : ReferenceParameters input object (see docstring for ReferenceParameters type)\nprepost_containers::NamedTuple : An output from setup_analysis containing reshaped views into the prepost cache\nsolve_parameter_cache_vector::Vector : An output from setup_analysis containing the relevant typed cache vector of solve parameters\nsolve_parameter_cache_dims::NamedTuple : An output from setup_analysis containing dimensions used for reshaping the solve parameter cache\nairfoils::Vector{AFType} : An output from setup_analysis contiaining the blade element airfoil polar objects\nA_bb_LU::LinearAlgebra.LU : An output from setup_analysis that is the LU decomposition of the AIC matrix used in the panel method\nidmaps::NamedTuple : An output from setup_analysis containing bookkeeping information (index mappings)\nproblem_dimensions::NamedTuple : An output from setup_analysis contiaining bookkeeping information (problem dimensions)\noptions::Options=set_options() : Options object\n\nKeyword Arguments\n\nsolve_container_caching=nothing : Output of allocate_solve_container_cache\nreturn_inputs=false : flag as to whether or not to return the pre-processed inputs\n\nReturns\n\nouts::NamedTuple : Named Tuple of various analysis outputs (see docstring for postprocess for details), note, if linear system decomposition fails, no solve is performed and an empty vector is returned.\nins::NamedTuple : Named Tuple of various pre-processed inputs (e.g. panels and body linear system), will only be returned if return_inputs=true\nconvergence_flag : Flag for successful solve convergence\n\n\n\n\n\nanalyze(\n ducted_rotor::DuctedRotor,\n operating_point::AbstractVector{OperatingPoint},\n reference_parameters::ReferenceParameters,\n options::Options=set_options();\n prepost_container_caching=nothing,\n solve_parameter_caching=nothing,\n solve_container_caching=nothing,\n return_inputs=false,\n)\n\nAnalyze ducted_rotor, including preprocessing, for a set of operating points.\n\nArguments\n\nducted_rotor::DuctedRotor : DuctedRotor input object\noperating_point::AbstractVector{OperatingPoint} : Vector of Operating Points at which to analyze the ducted_rotor\nreference_parameters::ReferenceParameters : ReferenceParameters input object (see docstring for ReferenceParameters type)\noptions::Options=set_options() : Options object\n\nKeyword Arguments\n\nprepost_container_caching=nothing : Output of allocate_prepost_container_cache\nsolve_parameter_caching=nothing : Output of allocate_solve_parameter_container_cache\nsolve_container_caching=nothing : Output of allocate_solve_container_cache\nreturn_inputs=false : flag as to whether or not to return the pre-processed inputs\n\nReturns\n\nouts::Vector{NamedTuple} : Vector of named tuples of various analysis outputs (see docstring for postprocess for details), note, if linear system decomposition fails, no solve is performed and an empty vector is returned.\nins::NamedTuple : Named Tuple of various pre-processed inputs (e.g. panels and body linear system), will only be returned if return_inputs=true\nconvergence_flag : Flag for successful solve convergence\n\n\n\n\n\nanalyze(\n ducted_rotor::DuctedRotor,\n operating_point::Vector{OperatingPoint},\n reference_parameters::ReferenceParameters,\n prepost_containers,\n solve_parameter_cache_vector,\n solve_parameter_cache_dims,\n airfoils,\n A_bb_LU,\n idmaps,\n problem_dimensions,\n options::Options=set_options();\n return_inputs=false,\n solve_container_caching=nothing,\n)\n\nAnalyze ductedrotor, assuming `setupanalysis` has been called and the inputs are being passed in here.\n\nArguments\n\nducted_rotor::DuctedRotor : DuctedRotor input object\noperating_point::AbstractVector{OperatingPoint} : Vector of Operating Points at which to analyze the ducted_rotor\nreference_parameters::ReferenceParameters : ReferenceParameters input object (see docstring for ReferenceParameters type)\nprepost_containers::NamedTuple : An output from setup_analysis containing reshaped views into the prepost cache\nsolve_parameter_cache_vector::Vector : An output from setup_analysis containing the relevant typed cache vector of solve parameters\nsolve_parameter_cache_dims::NamedTuple : An output from setup_analysis containing dimensions used for reshaping the solve parameter cache\nairfoils::Vector{AFType} : An output from setup_analysis contiaining the blade element airfoil polar objects\nA_bb_LU::LinearAlgebra.LU : An output from setup_analysis that is the LU decomposition of the AIC matrix used in the panel method\nidmaps::NamedTuple : An output from setup_analysis containing bookkeeping information (index mappings)\nproblem_dimensions::NamedTuple : An output from setup_analysis contiaining bookkeeping information (problem dimensions)\noptions::Options=set_options() : Options object\n\nKeyword Arguments\n\nsolve_container_caching=nothing : Output of allocate_solve_container_cache\nreturn_inputs=false : flag as to whether or not to return the pre-processed inputs\n\nReturns\n\nouts::Vector{NamedTuple} : Named Tuple of various analysis outputs (see docstring for postprocess for details), note, if linear system decomposition fails, no solve is performed and an empty vector is returned.\nins::NamedTuple : Named Tuple of various pre-processed inputs (e.g. panels and body linear system), will only be returned if return_inputs=true. Note that some inputs will be overwritten (e.g. the linear system RHS components related to the freestream) and only those associated with the final operating point will be returned.\nconvergence_flag : Flag for successful solve convergence\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/public_api/#Miscellaneous","page":"Public API Reference","title":"Miscellaneous","text":"","category":"section"},{"location":"DuctAPE/api/public_api/#Airfoil/Geometry-Manipulation","page":"Public API Reference","title":"Airfoil/Geometry Manipulation","text":"","category":"section"},{"location":"DuctAPE/api/public_api/#NACA-6-Series-Cascade-Geometry-Generation","page":"Public API Reference","title":"NACA 6-Series Cascade Geometry Generation","text":"","category":"section"},{"location":"DuctAPE/api/private_utilities/#Utility-Functions","page":"Utilities","title":"Utility Functions","text":"","category":"section"},{"location":"DuctAPE/api/private_utilities/","page":"Utilities","title":"Utilities","text":"DuctAPE.promote_ducted_rotor_type\nDuctAPE.isscalar\nDuctAPE.dot\nDuctAPE.norm\nDuctAPE.cross2mag\nDuctAPE.linear_transform\nDuctAPE.extract_primals!\nDuctAPE.lfs\nDuctAPE.reset_containers!\nDuctAPE.cache_dims!\nDuctAPE.write_data","category":"page"},{"location":"DuctAPE/api/private_utilities/#DuctAPE.promote_ducted_rotor_type","page":"Utilities","title":"DuctAPE.promote_ducted_rotor_type","text":"promote_ducted_rotor_type(ducted_rotor)\n\nConvenience function for promoting types based on any potential elements of the ducted_rotor object dependent on optimization design variables.\n\nArguments\n\nducted_rotor::DuctedRotor : the ducted_rotor input\n\nReturns\n\nTP::Type : the promoted type\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_utilities/#DuctAPE.isscalar","page":"Utilities","title":"DuctAPE.isscalar","text":"isscalar(x::T) where {T} = isscalar(T)\nisscalar(::Type{T}) where {T} = BroadcastStyle(T) isa Broadcast.DefaultArrayStyle{0}\n\nDetermines if the input is a scalar. Note that Base.BroadcastStyle is imported.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_utilities/#DuctAPE.dot","page":"Utilities","title":"DuctAPE.dot","text":"dot(A, B) = sum(a * b for (a, b) in zip(A, B))\n\nA faster dot product.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_utilities/#DuctAPE.norm","page":"Utilities","title":"DuctAPE.norm","text":"norm(A) = sqrt(mapreduce(x -> x^2, +, A))\n\nA faster 2-norm.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_utilities/#DuctAPE.cross2mag","page":"Utilities","title":"DuctAPE.cross2mag","text":"cross2mag(A, B) = A[1] * B[2] - A[2] * B[1]\n\n2D \"cross product\" magnitude\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_utilities/#DuctAPE.linear_transform","page":"Utilities","title":"DuctAPE.linear_transform","text":"linear_transform(range1, range2, values)\n\nLinear transfrom of values from range (source_range[1], source_range[end]) to (target_range[1], target_range[end])\n\nArguments\n\nsource_range::Vector{Float} : range values come from (can also be a Tuple)\ntarget_range::Vector{Float} : range onto which we are transforming (can also be a Tuple)\nsource_values::Array{Float} : array of source values to transform\n\nReturns\n\ntarget_values::Array{Float} : array of transformed sourcevalues onto target range\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_utilities/#DuctAPE.extract_primals!","page":"Utilities","title":"DuctAPE.extract_primals!","text":"extract_primals!(Avalue, A::AbstractMatrix{T}) where {T}\n\nExtracts primals of A and places them in Avalue.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_utilities/#DuctAPE.lfs","page":"Utilities","title":"DuctAPE.lfs","text":"lfs(shape)\n\nDetermines length from shape (output of size function).\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_utilities/#DuctAPE.reset_containers!","page":"Utilities","title":"DuctAPE.reset_containers!","text":"reset_containers!(containers; exception_keys=[])\n\nResets all fields (not incluing any contained in exception keys) of containers–-which must be arrays, structs of arrays, or tuples of arrays–-to zeros.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_utilities/#DuctAPE.cache_dims!","page":"Utilities","title":"DuctAPE.cache_dims!","text":"cache_dims!(total_length, l, s)\n\nA function that returns a named tuple containing an index range and shape and increases total_length by l.\n\nThis function is used heavily in the cache allocation functions for setting up the dimension maps used to access the vectorized caches.\n\nArguments\n\ntotal_length::Vector{Int} : single element vector containing the current total length of the eventual cache vector. Modified in place.\nl::Int : total length of the object in question\ns::Int : size of the object in question\n\nReturns\n\ndims::NamedTuple : A named tuple containing index and shape fields\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_utilities/#DuctAPE.write_data","page":"Utilities","title":"DuctAPE.write_data","text":"write_data(outs, filename; checkoutfileexists=false)\n\nWrites NamedTuples, specifically for writing out the output of the post_procces() function.\n\nArguments:\n\nouts::NamedTuple : Named tuple to write to file.\nfilename::String : file name (including full desired path and file type) for file to write\n\nKeyword Arguments:\n\noutput_tuple_name::String : desired variable name of written NamedTuple\ncheckoutfileexists::Bool=false : boolean for whether to check if the outfile already exists and whether or not to overwrite it.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_process/#Analysis","page":"Process","title":"Analysis","text":"","category":"section"},{"location":"DuctAPE/api/private_process/","page":"Process","title":"Process","text":"DuctAPE.analyze_multipoint","category":"page"},{"location":"DuctAPE/api/private_process/#DuctAPE.analyze_multipoint","page":"Process","title":"DuctAPE.analyze_multipoint","text":"analyze_multipoint(\n ducted_rotor::DuctedRotor,\n operating_point::OperatingPoint,\n reference_parameters::ReferenceParameters\n prepost_containers,\n solve_parameter_cache_vector,\n solve_parameter_cache_dims,\n airfoils,\n A_bb_LU,\n idmaps,\n problem_dimensions,\n options::Options;\n solve_container_caching=nothing,\n return_inputs=false,\n)\n\nIdentical to the single analyze function assuming setup_analysis has been called; except here we are running a single operating point for a multipoint analysis, and overwriting the operating point in the ducted_rotor with the explicit operating point input.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_process/#Process","page":"Process","title":"Process","text":"","category":"section"},{"location":"DuctAPE/api/private_process/","page":"Process","title":"Process","text":"DuctAPE.process\nDuctAPE.solve","category":"page"},{"location":"DuctAPE/api/private_process/#DuctAPE.process","page":"Process","title":"DuctAPE.process","text":"process(\n solver_options::SolverOptionsType,\n solve_parameter_cache_vector,\n solve_parameter_cache_dims,\n airfoils,\n A_bb_LU,\n solve_container_caching,\n idmaps,\n options,\n)\n\nProcess (the step between pre-process and post-process) the solution, in other words: call the solver(s).\n\nArguments\n\nsolver_options::SolverOptionsType : the solver options contained in the options object, used for dispatch.\nsolve_parameter_cache_vector::Vector{Float} : The vector cache for parameters used in the solve.\nsolve_parameter_cache_dims::NamedTuple : A named tuple containing the dimensions of the solve parameters.\nairfoils::NamedTuple : The airfoils to be interpolated that are associated with each blade element\nA_bb_LU::LinearAlgebra.LU : The LU decomposition of the panel method LHS matrix\nsolve_container_caching::NamedTuple : A named tuple containing the cache and dimensions for the intermediate solve values.\nidmaps::NamedTuple : The set of index maps used in various solve sub-functions\noptions::Options : User options\n\nReturns\n\nconverged_states::Vector{Float} : The output of a call to ImplicitAD.implicit\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_process/#DuctAPE.solve","page":"Process","title":"DuctAPE.solve","text":"solve(sensitivity_parameters, const_cache; initial_guess=nothing)\n\nA compact dispatch of solve that automatically dispatches based on the solveroptions contained in constcache.\n\n\n\n\n\nsolve(\n solver_options::SolverOptionsType,\n sensitivity_parameters,\n const_cache;\n initial_guess=nothing,\n)\n\nConverge the residual, solving for the state variables that do so.\n\nArguments\n\nsolver_options::SolverOptionsType : SolverOptionsType used for dispatch\nsensitivity_parameters::Vector{Float} : Sensitivity parameters for solve (parameters passed in through ImplicitAD)\nconst_cache::NamedTuple : A named tuple containing constants and caching helpers.\n\nKeyword Arguments\n\ninitial_guess=nothing::Vector{Float} : An optional manually provided initial guess (contained in the sensitivity parameters anyway).\n\nReturns\n\nconverged_states::Vector{Float} : the states for which the residual has converged.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_process/#Residuals","page":"Process","title":"Residuals","text":"","category":"section"},{"location":"DuctAPE/api/private_process/#CSOR","page":"Process","title":"CSOR","text":"","category":"section"},{"location":"DuctAPE/api/private_process/","page":"Process","title":"Process","text":"DuctAPE.CSOR_residual!\nDuctAPE.compute_CSOR_residual!\nDuctAPE.relax_Gamr!\nDuctAPE.relax_gamw!\nDuctAPE.apply_relaxation_schedule\nDuctAPE.update_CSOR_residual_values!\nDuctAPE.check_CSOR_convergence!","category":"page"},{"location":"DuctAPE/api/private_process/#DuctAPE.CSOR_residual!","page":"Process","title":"DuctAPE.CSOR_residual!","text":"CSOR_residual!(resid, state_variables, sensitivity_parameters, constants)\n\nThe in-place residual used for the CSOR solve method.\n\nArguments\n\nresid::Vector{Float} : In-place residual.\nstate_variables::Vector{Float} : The state variables\nsensitivity_parameters::Vector{Float} : The parameters to which the solution is sensitive.\nconstants::NamedTuple : Various constants required in the solve\n\nReturns\n\nstate_variables::Vector{Float} : The state variables (modified in place)\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_process/#DuctAPE.compute_CSOR_residual!","page":"Process","title":"DuctAPE.compute_CSOR_residual!","text":"compute_CSOR_residual!(\n resid,\n solver_options,\n solve_containers,\n Gamr,\n sigr,\n gamw,\n operating_point,\n ivr,\n ivw,\n linsys,\n blade_elements,\n wakeK,\n idmaps;\n verbose=false,\n)\n\nDescription\n\nArguments\n\nresid::Vector{Float} : the residual vector\nsolver_options::SolverOptionsType : solver options (used for convergence criteria)\nsolve_containers::NamedTuple : cache for intermediate solve values\nGamr::type : Blade element circulation strengths\nsigr::type : Rotor source panel strengths\ngamw::type : Wake vortex panel strengths\noperating_point::NamedTuple : Named tuple containing operating_point information\nivr::NamedTuple : unit induced velocities on rotor(s)\nivw::NamedTuple : unit induced velocities on wake\nlinsys::NamedTuple : vectors and matricies comprising the panel method linear system\nblade_elements::NamedTuple : blade element geometry and airfoil polar information\nwakeK::Vector{Float} : geometric constants used in caculating wake strengths\nidmaps::NamedTuple : index maps used throughout solve\n\nKeyword Arguments\n\nverbose::Bool=false : Flag to print verbose statements\n\n\n\n\n\ncompute_CSOR_residual!(\n resid,\n solver_options,\n solve_containers,\n Gamr,\n sigr,\n gamw,\n operating_point,\n ivr,\n ivw,\n linsys,\n blade_elements,\n wakeK,\n idmaps;\n verbose=false,\n)\n\nDescription\n\nArguments\n\nresid::Vector{Float} : the residual vector\nsolver_options::SolverOptionsType : solver options (used for convergence criteria)\nsolve_containers::NamedTuple : cache for intermediate solve values\nGamr::type : Blade element circulation strengths\nsigr::type : Rotor source panel strengths\ngamw::type : Wake vortex panel strengths\noperating_point::NamedTuple : Named tuple containing operating_point information\nivr::NamedTuple : unit induced velocities on rotor(s)\nivw::NamedTuple : unit induced velocities on wake\nlinsys::NamedTuple : vectors and matricies comprising the panel method linear system\nblade_elements::NamedTuple : blade element geometry and airfoil polar information\nwakeK::Vector{Float} : geometric constants used in caculating wake strengths\nidmaps::NamedTuple : index maps used throughout solve\n\nKeyword Arguments\n\nverbose::Bool=false : Flag to print verbose statements\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_process/#DuctAPE.relax_Gamr!","page":"Process","title":"DuctAPE.relax_Gamr!","text":"relax_Gamr!(\n Gamr,\n delta_prev_mat,\n delta_mat,\n maxBGamr,\n maxdeltaBGamr,\n B;\n nrf=0.4,\n bt1=0.2,\n bt2=0.6,\n pf1=0.4,\n pf2=0.5,\n test=false,\n)\n\nApply relaxed step to Gamr.\n\nArguments\n\nGamr::Array{Float} : Array of rotor circulations (columns = rotors, rows = blade elements), updated in place\ndelta_prev_mat::Array{Float} : Array of previous iteration's differences in circulation values, updated in place\ndelta_mat::Array{Float} : Array of current iteration's differences in circulation values\nB::Vector{Float} : number of blades on each rotor\nnrf::Float=0.4 : nominal relaxation factor\nbt1::Float=0.2 : backtrack factor 1\nbt2::Float=0.6 : backtrack factor 2\npf1::Float=0.4 : press forward factor 1\npf2::Float=0.5 : press forward factor 2\n\n\n\n\n\nrelax_Gamr!(\n Gamr,\n delta_prev_mat,\n delta_mat,\n maxBGamr,\n B;\n nrf=0.4,\n bt1=0.2,\n bt2=0.6,\n pf1=0.4,\n pf2=0.5,\n test=false,\n)\n\nApply relaxed step to Gamr.\n\nArguments\n\nGamr::Array{Float} : Array of rotor circulations (columns = rotors, rows = blade elements), updated in place\ndelta_prev_mat::Array{Float} : Array of previous iteration's differences in circulation values, updated in place\ndelta_mat::Array{Float} : Array of current iteration's differences in circulation values\nB::Vector{Float} : number of blades on each rotor\nnrf::Float=0.4 : nominal relaxation factor\nbt1::Float=0.2 : backtrack factor 1\nbt2::Float=0.6 : backtrack factor 2\npf1::Float=0.4 : press forward factor 1\npf2::Float=0.5 : press forward factor 2\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_process/#DuctAPE.relax_gamw!","page":"Process","title":"DuctAPE.relax_gamw!","text":"relax_gamw!(\n gamw, delta_prev, delta, maxdeltagamw; nrf=0.4, btw=0.6, pfw=1.2, test=false\n)\n\nApply relaxed step to gamw.\n\nArguments\n\ngamw::Array{Float} : Array of rotor circulations (columns = rotors, rows = blade elements), updated in place\ndelta_prev_mat::Array{Float} : Array of previous iteration's differences in circulation values, updated in place\ndelta_mat::Array{Float} : Array of current iteration's differences in circulation values\nB::Vector{Float} : number of blades on each rotor\nnrf::Float=0.4 : nominal relaxation factor\nbt1::Float=0.2 : backtrack factor 1\nbt2::Float=0.6 : backtrack factor 2\npf1::Float=0.4 : press forward factor 1\npf2::Float=0.5 : press forward factor 2\n\n\n\n\n\nrelax_gamw!(\n gamw, delta_prev, delta; nrf=0.4, btw=0.6, pfw=1.2, test=false\n)\n\nApply relaxed step to gamw.\n\nArguments\n\ngamw::Array{Float} : Array of rotor circulations (columns = rotors, rows = blade elements), updated in place\ndelta_prev_mat::Array{Float} : Array of previous iteration's differences in circulation values, updated in place\ndelta_mat::Array{Float} : Array of current iteration's differences in circulation values\nB::Vector{Float} : number of blades on each rotor\nnrf::Float=0.4 : nominal relaxation factor\nbt1::Float=0.2 : backtrack factor 1\nbt2::Float=0.6 : backtrack factor 2\npf1::Float=0.4 : press forward factor 1\npf2::Float=0.5 : press forward factor 2\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_process/#DuctAPE.apply_relaxation_schedule","page":"Process","title":"DuctAPE.apply_relaxation_schedule","text":"apply_relaxation_schedule(\n resid::AbstractVector, solver_options::TS\n) where {TS<:SolverOptionsType}\n\nApply custom relaxation schedule to all relaxation factor inputs based on residual values.\n\nArguments\n\nresid::AbstractVector{Float} : current residual values\nsolver_options::SolverOptionsType : SolverOptions containing relaxation schedule\n\nReturns\n\nnrf::Float : nominal relaxation factor\nbt1::Float : backtrack factor 1\nbt2::Float : backtrack factor 2\npf1::Float : press forward factor 1\npf2::Float : press forward factor 2\n\n\n\n\n\napply_relaxation_schedule(resid, nominal, schedule)\n\nApply custom relaxation schedule to a single relaxation factor input.\n\nArguments\n\nresid::Float : residual value\nnominal::Float : nominal relaxation value\nschedule::AbstractVector{AbstractVector{Float}} : values between which to interpolate to scale the nominal relaxation value.\n\nReturns\n\nrf::Float : the updated relaxation factor\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_process/#DuctAPE.update_CSOR_residual_values!","page":"Process","title":"DuctAPE.update_CSOR_residual_values!","text":"update_CSOR_residual_values!(\n convergence_type::ConvergenceType, resid, maxBGamr, maxdeltaBGamr, maxdeltagamw, Vconv\n)\n\nUpdate CSOR residual values in place.\n\nArguments\n\nconvergence_type::ConvergenceType : used for dispatch of relative or absolute residual values.\nresid::Vector{Float} : residual values modified in place\nmaxBGamr::Float : Maximum value of B*Gamr among all blade elements\nmaxdeltaBGamr::Float : Maximum change in B*Gamr between iterations among all blade elements\nmaxdeltagamw::Vector{Float} : Maximum change in gamw among all wake nodes (one element)\nVconv::Float : Reference velocity upon which the relative convergence criteria is based (one element)\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_process/#DuctAPE.check_CSOR_convergence!","page":"Process","title":"DuctAPE.check_CSOR_convergence!","text":"check_CSOR_convergence!(\n conv, resid; f_circ=1e-3, f_dgamw=2e-4, convergence_type=Relative(), verbose=false\n)\n\nDescription\n\nArguments\n\nconv::Vector{Float} : container holding convergence flag\nresid::Vector{Float} : residual vector\n\nKeyword Arguments\n\nf_circ::Float=1e-3 : convergence criteria for circulation residual\nf_dgamw::Float=2e-4 : convergence criteria for wake strength residual\nconvergence_type::ConvergenceType=Relative() : convergence type (absolute or relative) for print statements\nverbose::Bool=false : flag for verbose print statements\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_process/#External-Solvers","page":"Process","title":"External Solvers","text":"","category":"section"},{"location":"DuctAPE/api/private_process/","page":"Process","title":"Process","text":"DuctAPE.system_residual\nDuctAPE.system_residual!\nDuctAPE.update_system_residual!\nDuctAPE.estimate_states!","category":"page"},{"location":"DuctAPE/api/private_process/#DuctAPE.system_residual","page":"Process","title":"DuctAPE.system_residual","text":"system_residual(state_variables, sensitivity_parameters, constants)\n\nThe residual function for external solvers.\n\nArguments\n\nstate_variables::Vector{Float} : the state variables\nsensitivity_parameters::Vector{Float} : parameters to which the solution derivatives are sensitive\nconstants::NamedTuple : parameters to which the solution derivatives are constant\n\nReturs\n\nresid::Vector{Float} : residual vector\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_process/#DuctAPE.system_residual!","page":"Process","title":"DuctAPE.system_residual!","text":"system_residual!(resid, state_variables, sensitivity_parameters, constants)\n\nIn-place version of system_residual.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_process/#DuctAPE.update_system_residual!","page":"Process","title":"DuctAPE.update_system_residual!","text":"update_system_residual!(\n solver_options::SolverOptionsType\n resid,\n vz_est,\n vz_rotor,\n vtheta_est,\n vtheta_rotor,\n Cm_est,\n Cm_wake,\n solve_parameter_cache_dims,\n)\n\nUpdate the residual for external solvers.\n\nArguments\n\n`solver_options::SolverOptionsType\nresid::Vector{Float} : residual vector\nvz_est::Vector{Float} : axial induced rotor velocity estimate container\nvz_rotor::Vector{Float} : axial induced rotor velocity state container\nvtheta_est::Vector{Float} : tangential induced rotor velocity estimate container\nvtheta_rotor::Vector{Float} : tangential induced rotor velocity state container\nCm_est::Vector{Float} : absolute meridional wake control point velocity estimate container\nCm_wake::Vector{Float} : absolute meridional wake control point velocity state container\nsolve_parameter_cache_dims::Vector{Float} : dimensions of state vectors to use in accessing the residual vector\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_process/#DuctAPE.estimate_states!","page":"Process","title":"DuctAPE.estimate_states!","text":"estimate_states!(\n solve_containers,\n vz_rotor,\n vtheta_rotor,\n Cm_wake,\n operating_point,\n ivr,\n ivw,\n linsys,\n blade_elements,\n wakeK,\n idmaps;\n verbose=false,\n)\n\nEstimate velocity states.\n\nArguments\n\nsolve_containers::NamedTuple : cache for intermediate values in solve\nvz_rotor::Vector{Float} : axial induced rotor velocity state container\nvtheta_rotor::Vector{Float} : tangential induced rotor velocity state container\nCm_wake::Vector{Float} : absolute meridional wake control point velocity state container\noperating_point::NamedTuple : Named tuple containing operating_point information\nivr::NamedTuple : unit induced velocities on rotor(s)\nivw::NamedTuple : unit induced velocities on wake\nlinsys::NamedTuple : vectors and matricies comprising the panel method linear system\nblade_elements::NamedTuple : blade element geometry and airfoil polar information\nwakeK::Vector{Float} : geometric constants used in caculating wake strengths\nidmaps::NamedTuple : index maps used throughout solve\n\nKeyword Arguments\n\nverbose::Bool=false : flag for verbose print statements\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_process/#Solve-Utilities","page":"Process","title":"Solve Utilities","text":"","category":"section"},{"location":"DuctAPE/api/private_process/","page":"Process","title":"Process","text":"DuctAPE.extract_initial_guess\nDuctAPE.extract_state_variables","category":"page"},{"location":"DuctAPE/api/private_process/#DuctAPE.extract_initial_guess","page":"Process","title":"DuctAPE.extract_initial_guess","text":"extract_initial_guess(\n solver_options::SolverOptionsType, sensitivity_parameters, state_dims\n)\n\nExtract initial guess from the solve parameters cache vector.\n\nArguments\n\nsolver_options::SolverOptionsType : used for dispatch\nsensitivity_parameters::Vector{Float} : vector form of solve parameter cache passed into the solver.\nstate_dims::NamedTuple : dimensions and indices of state variables within the solve parameter cache vector\n\nReturns\n\ninitial_guess::Vector{Float}` : a vector of the solver initial guess\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_process/#DuctAPE.extract_state_variables","page":"Process","title":"DuctAPE.extract_state_variables","text":"extract_state_variables(solver_options::SolverOptionsType, vars, dims)\n\nReshape the state variables from a single vector, to multiple arrays.\n\nArguments\n\nReturns if solver_options <: CSORSolverOptions\n\nGamr::type : Blade element circulation strengths\nsigr::type : Rotor source panel strengths\ngamw::type : Wake vortex panel strengths\n\nReturns if solver_options <: Union{ExternalSolverOptions, PolyAlgorithmOptions}\n\nvz_rotor::Vector{Float} : axial induced rotor velocity state container\nvtheta_rotor::Vector{Float} : tangential induced rotor velocity state container\nCm_wake::Vector{Float} : absolute meridional wake control point velocity state container\n\n\n\n\n\n","category":"function"},{"location":"C4Blade/api/#Index","page":"API Reference","title":"Index","text":"","category":"section"},{"location":"C4Blade/api/","page":"API Reference","title":"API Reference","text":"Pages = [\"C4Blade/api.md\"]\nDepth = 5","category":"page"},{"location":"C4Blade/api/","page":"API Reference","title":"API Reference","text":"Modules=[DuctAPE.C4Blade]","category":"page"},{"location":"DuctAPE/api/private_preprocess/#General","page":"Preprocess","title":"General","text":"","category":"section"},{"location":"DuctAPE/api/private_preprocess/","page":"Preprocess","title":"Preprocess","text":"DuctAPE.set_index_maps\nDuctAPE.precompute_parameters\nDuctAPE.precompute_parameters!","category":"page"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.set_index_maps","page":"Preprocess","title":"DuctAPE.set_index_maps","text":"set_index_maps(\n npanels,\n ncenterbody_inlet,\n nwake_sheets,\n dte_minus_cbte,\n wnm,\n wenids,\n nwp,\n nwsp,\n nbn,\n ndp,\n riiw,\n nrotor,\n)\n\nSet values for index map to be used throughout solve and post-process.\n\nArguments\n\nnpanels : paneling_constants.npanels\nncenterbody_inlet : paneling_constants.ncenterbody_inlet\nnwake_sheets : paneling_constants.nwake_sheets\ndte_minus_cbte : paneling_constants.dte_minus_cbte\nwnm : wake_vortex_panels.nodemap\nwenids : wake_vortex_panels.endnodeidxs\nnwp : problem_dimensions.nwp\nnwsp : problem_dimensions.nwsp\nnbn : problem_dimensions.nbn\nndp : body_vortex_panels.npanel[1]\nriiw : rotor_indices_in_wake\nnrotor : problem_dimensions.nrotor\n\nReturns\n\nidmaps::NamedTuple : A named tuple containing index mapping used in bookkeeping throughout solve and post-process\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.precompute_parameters","page":"Preprocess","title":"DuctAPE.precompute_parameters","text":"precompute_parameters(\n ducted_rotor,\n operating_point;\n grid_solver_options=GridSolverOptions(),\n integration_options=IntegrationOptions(),\n autoshiftduct=true,\n itcpshift=0.05,\n axistol=1e-15,\n tegaptol=1e1 * eps(),\n finterp=(x,y,xp)->FLOWMath.akima(x,y,xp,2.0*eps(),eps()),\n silence_warnings=true,\n verbose=false,\n)\n\nOut of place main pre-processing function that computes all the required parameters for the solve.\n\nArguments\n\nducted_rotor::DuctedRotor : A DuctedRotor object\noperating_point::OperatingPoint : A OperatingPoint object\n\nKeyword Arguments\n\ngrid_solver_options::GridSolverOptionsType=GridSolverOptions() : A GridSolverOptionsType object\nintegration_options::IntegrationMethod=IntegrationOptions() : An IntegrationMethod object\nautoshiftduct::Bool=true : flag to shift duct geometry based on rotor tip radius\nitcpshift::Float=0.05 : value used in positioning the internal pseudo control point in the solid bodies. Default is DFDC hard-coded value.\naxistol::Float=1e-15 : tolerance for how close to the axis of rotation to be considered on the axis.\ntegaptol::Float=1e1 * eps() : tolerance for how large of a trailing edge gap is considered a gap.\nfinterp::Function=FLOWMath.akima : interpolation method for re-interpolating body coordinates\nsilence_warnings::Bool=true : flag to silence warnings\nverbose::Bool=false : flag to print verbose statements\n\nReturns\n\nivr::NamedTuple : A named tuple containing arrays of induced velocities on the rotors\nivw::NamedTuple : A named tuple containing arrays of induced velocities on the wake\nivb::NamedTuple : A named tuple containing arrays of induced velocities on the bodies\nlinsys::NamedTuple : A named tuple containing cacheable data for the linear system, including:\nA_bb::Array{Float} : AIC (LHS) matrix for the panel method system\nb_bf::Array{Float} : Initial system RHS vector based on freestrem magnitude\nA_br::Array{Float} : Unit normal velocity from rotors onto body panels\nA_pr::Array{Float} : Unit normal velocity from rotors onto body internal psuedo control points\nA_bw::Array{Float} : Unit normal velocity from wake onto body panels\nA_pw::Array{Float} : Unit normal velocity from wake onto body internal psuedo control points\nA_bb_LU::LinearAlgebra.LU : LinearAlgebra LU factorization of the LHS matrix\nlu_decomp_flag::Vector{Bool} : flag for whether factorization was successful\nblade_elements::NamedTuple : A named tuple containing cacheable blade element information (see docs for interpolate_blade_elements)\nairfoils::Vector{AFType} : A matrix of airfoil types associated with each of the blade elements\nwakeK::Matrix{Float} : A matrix of precomputed geometric constants used in the calculation of the wake vortex strengths\nidmaps::NamedTuple : A named tuple containing index mapping used in bookkeeping throughout solve and post-process\npanels::NamedTuple : A named tuple of panel objects including:\nbody_vortex_panels::NamedTuple : the named tuple containing the body vortex panel information\nrotor_source_panels::NamedTuple : the named tuple containing the rotor source panel information\nwake_vortex_panels::NamedTuple : the named tuple containing the wake vortex panel information\nproblem_dimensions::ProblemDimensions : A ProblemDimensions object\n\n\n\n\n\nprecompute_parameters(\n rp_duct_coordinates,\n rp_centerbody_coordinates,\n wake_grid,\n rotor_indices_in_wake,\n Rtips,\n Rhubs,\n rotor,\n paneling_constants,\n operating_point,\n integration_options,\n problem_dimensions=nothing;\n itcpshift=0.05,\n axistol=1e-15,\n tegaptol=1e1 * eps(),\n silence_warnings=true,\n verbose=false,\n)\n\nAn alternate version of precompute_parameters allowing for user defined geometry that does not go through a re-panling step (use with caution).\n\nThe first inputs are the outputs of the reinterpolate_geometry and get_blade_ends_from_body_geometry functions.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.precompute_parameters!","page":"Preprocess","title":"DuctAPE.precompute_parameters!","text":"precompute_parameters!(\n ivr,\n ivw,\n blade_element_cache,\n linsys,\n wakeK,\n ducted_rotor,\n operating_point,\n prepost_containers,\n problem_dimensions;\n grid_solver_options=GridSolverOptions(),\n integration_options=IntegrationOptions(),\n autoshiftduct=true,\n itcpshift=0.05,\n axistol=1e-15,\n tegaptol=1e1 * eps(),\n finterp=(x,y,xp)->FLOWMath.akima(x,y,xp,2.0*eps(),eps()),\n silence_warnings=true,\n verbose=false,\n)\n\nIn-place version of precompute_parameters.\n\n\n\n\n\nprecompute_parameters!(\n ivr,\n ivw,\n blade_element_cache,\n linsys,\n wakeK,\n wake_grid,\n rp_duct_coordinates,\n rp_centerbody_coordinates,\n rotor_indices_in_wake,\n rotor,\n paneling_constants,\n operating_point,\n prepost_containers,\n problem_dimensions=nothing;\n integration_options=IntegrationOptions(),\n itcpshift=0.05,\n axistol=1e-15,\n tegaptol=1e1 * eps(),\n finterp=(x,y,xp)->FLOWMath.akima(x,y,xp,2.0*eps(),eps()),\n silence_warnings=true,\n verbose=false,\n)\n\nIn-place version of the precompute_parameters function by-passing the geometry reinterpolateion. (Use with caution)\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#Geometry","page":"Preprocess","title":"Geometry","text":"","category":"section"},{"location":"DuctAPE/api/private_preprocess/","page":"Preprocess","title":"Preprocess","text":"DuctAPE.reinterpolate_geometry\nDuctAPE.reinterpolate_geometry!\nDuctAPE.generate_all_panels\nDuctAPE.generate_all_panels!","category":"page"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.reinterpolate_geometry","page":"Preprocess","title":"DuctAPE.reinterpolate_geometry","text":"reinterpolate_geometry(\n problem_dimensions,\n duct_coordinates,\n centerbody_coordinates,\n rotor,\n paneling_constants;\n autoshiftduct=true,\n grid_solver_options=GridSolverOptions(),\n finterp=(x,y,xp)->FLOWMath.akima(x,y,xp,2.0*eps(),eps()),\n verbose=false,\n silence_warnings=true,\n)\n\nRe-interpolate the body geometry and return compatible body and way geometry.\n\nArguments\n\nproblem_dimensions::ProblemDimensions : A ProblemDimensions object\nduct_coordinates::Matrix{Float} : [z,r] coordinates of duct geometry\ncenterbody_coordinates::Matrix{Float} : [z,r] coordinates of centerbody geometry\nrotor::Rotor : A Rotor object\npaneling_constants::PanelingConstants : A PanelingConstants object\n\nKeyword Arguments\n\nautoshiftduct::Bool=true : flag to shift duct geometry based on rotor tip radius\ngrid_solver_options::SolverOptionsType=GridSolverOptions() : options for the wake grid position solver\nfinterp::Function=FLOWMath.akima : interpolation method for re-interpolating body coordinates\nverbose::Bool=false : flag to print verbose statements\nsilence_warnings::Bool=true : flag to silence warnings\n\nReturns\n\nwake_grid::Array{Float} : array containig the z and r elliptic grid points defning the wake geometry.\nrp_duct_coordinates::Matrix{Float} : matrix containing the re-paneled duct coordinates\nrp_centerbody_coordinates::Matrix{Float} : matrix containing the re-paneled centerbody coordinates\nrotor_indices_in_wake::Vector{Int} : vector containing the indices of where in the wake the rotors reside (used later to define the rotor panel edges).\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.reinterpolate_geometry!","page":"Preprocess","title":"DuctAPE.reinterpolate_geometry!","text":"reinterpolate_geometry!(\n wake_grid,\n rp_duct_coordinates,\n rp_centerbody_coordinates,\n rotor_indices_in_wake,\n duct_coordinates,\n centerbody_coordinates,\n rotor,\n blade_element_cache,\n paneling_constants;\n autoshiftduct=true,\n grid_solver_options=GridSolverOptions(),\n finterp=(x,y,xp)->FLOWMath.akima(x,y,xp,2.0*eps(),eps()),\n verbose=false,\n silence_warnings=true,\n)\n\nIn-place version of reinterpolate_geometry.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.generate_all_panels","page":"Preprocess","title":"DuctAPE.generate_all_panels","text":"generate_all_panels(\n rp_duct_coordinates,\n rp_centerbody_coordinates,\n nwake_sheets,\n rotor_indices_in_wake,\n rotorzloc,\n wake_grid;\n itcpshift=0.05,\n axistol=1e-15,\n tegaptol=1e1 * eps(),\n silence_warnings=true,\n)\n\nFunction that calls all of the various panel generation functions are returns a named tuple containing all the panels\n\nArguments\n\nrp_duct_coordinates::Matrix{Float} : matrix containing the re-paneled duct coordinates\nrp_centerbody_coordinates::Matrix{Float} : matrix containing the re-paneled centerbody coordinates\nnwake_sheets::Int : number of wake sheets\nrotor_indices_in_wake::Vector{Int} : vector containing the indices of where in the wake the rotors reside (used later to define the rotor panel edges).\nrotorzloc:Vector{Float} : axial locations of rotor lifting lines (contained in Rotor)\nwake_grid::Array{Float} : array containig the z and r elliptic grid points defning the wake geometry.\n\nKeyword Arguments\n\nitcpshift::Float=0.05 : value used in positioning the internal pseudo control point in the solid bodies. Default is DFDC hard-coded value.\naxistol::Float=1e-15 : tolerance for how close to the axis of rotation to be considered on the axis.\ntegaptol::Float=1e1 * eps() : tolerance for how large of a trailing edge gap is considered a gap.\nsilence_warnings::Bool=true : flag to silence warnings\n\nReturns\n\npanels::NamedTuple : A named tuple of named tuples containing paneling information, including:\nbody_vortex_panels::NamedTuple\nrotor_source_panels::NamedTuple\nwake_vortex_panels::NamedTuple\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.generate_all_panels!","page":"Preprocess","title":"DuctAPE.generate_all_panels!","text":"generate_all_panels!(\n panels,\n wake_grid,\n rp_duct_coordinates,\n rp_centerbody_coordinates,\n rotor_indices_in_wake,\n rotorzloc,\n nwake_sheets;\n itcpshift=0.05,\n axistol=1e-15,\n tegaptol=1e1 * eps(),\n silence_warnings=true,\n)\n\nIn-place version of generate_all_panels.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#Wake","page":"Preprocess","title":"Wake","text":"","category":"section"},{"location":"DuctAPE/api/private_preprocess/","page":"Preprocess","title":"Preprocess","text":"DuctAPE.discretize_wake\nDuctAPE.generate_wake_grid\nDuctAPE.generate_wake_grid!\nDuctAPE.initialize_wake_grid\nDuctAPE.initialize_wake_grid!\nDuctAPE.relax_grid!\nDuctAPE.generate_wake_panels\nDuctAPE.generate_wake_panels!\nDuctAPE.get_wake_k\nDuctAPE.get_wake_k!","category":"page"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.discretize_wake","page":"Preprocess","title":"DuctAPE.discretize_wake","text":"discretize_wake(\n duct_coordinates,\n centerbody_coordinates,\n rotorzloc, # rotor axial locations\n wake_length,\n npanels,\n dte_minus_cbte;\n)\n\nCalculate wake sheet panel node z-coordinates.\n\nArguments\n\nduct_coordinates::Matrix{Float} : Array of input duct coordinates\ncenterbody_coordinates::Matrix{Float} : Array of input centerbody_coordinates coordinates\nrotorzloc ::Vector{Float} : rotor axial locations\nwake_length::Float : non-dimensional length of wake to extend beyond aft-most body trailing edge.\nnpanels::Vector{Int} : A vector of the number of panels between each discrete point. For example: [number of panels between the rotors; number of panels between the stator and the first trailing edge; number of panels between the trailing edges; number of panels between the last trailing edge and the end of the wake]\ndte_minus_cbte::Float : indicator as to whether the duct trailing edge minus the centerbody trailing edge is positive, zero, or negative.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.generate_wake_grid","page":"Preprocess","title":"DuctAPE.generate_wake_grid","text":"generate_wake_grid(\n problem_dimensions,\n rp_duct_coordinates,\n rp_centerbody_coordinates,\n Rhub1,\n Rtip1,\n tip_gap1,\n zwake;\n grid_solver_options=GridSolverOptions(),\n verbose=false,\n silence_warnings=true,\n)\n\nInitialize and solve for elliptic grid on which wake sheets are defined.\n\nArguments\n\nproblem_dimensions:: : A ProblemDimensions object\nrp_duct_coordinates:: : repaneled duct coordinates\nrp_centerbody_coordinates:: : repaneled centerbody coordinates\nRhub1:: : Hub radius of first rotor\nRtip1:: : Tip radius of first rotor\ntip_gap1:: : Tip gap of first rotor (MUST BE ZERO for now)\nzwake:: : axial positions of wake sheet panel nodes\n\nKeyword Arguments\n\ngrid_solver_options::GridSolverOptionsType=GridSolverOptions() : options for solving the elliptic grid.\nverbose::Bool=false : flag to print verbose statements\nsilence_warnings::Bool=true : flag to supress warnings\n\nReturns\n\nwake_grid::Array{Float,3} : 3D Array of axial and radial wake_grid points after solution of elliptic system.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.generate_wake_grid!","page":"Preprocess","title":"DuctAPE.generate_wake_grid!","text":"generate_wake_grid!(\n wake_grid,\n rp_duct_coordinates,\n rp_centerbody_coordinates,\n Rhub1,\n Rtip1,\n tip_gap1,\n zwake;\n grid_solver_options=grid_solver_options,\n verbose=false,\n silence_warnings=true,\n)\n\nIn-place version of generate_wake_grid.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.initialize_wake_grid","page":"Preprocess","title":"DuctAPE.initialize_wake_grid","text":"initialize_wake_grid(rp_duct_coordinates, rp_centerbody_coordinates, zwake, rwake)\n\nInitialize the wake grid.\n\nArguments:\n\nrp_duct_coordinates::Matrix{Float} : The re-paneled duct coordinates\nrp_centerbody_coordinates::Matrix{Float} : The re-paneled centerbody coordinates\nzwake::Vector{Float} : The axial positions of the wake sheet panel nodes\nrwake::Vector{Float} : The radial positions of the blade elements for the foremost rotor\n\nReturns:\n\nwake_grid::Array{Float,3} : 3D Array of axial and radial wake_grid points\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.initialize_wake_grid!","page":"Preprocess","title":"DuctAPE.initialize_wake_grid!","text":"initialize_wake_grid!(\n wake_grid, rp_duct_coordinates, rp_centerbody_coordinates, zwake, rwake\n)\n\nIn-place version of initialize_wake_grid.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.relax_grid!","page":"Preprocess","title":"DuctAPE.relax_grid!","text":"relax_grid!(\n grid_solver_options::GridSolverOptionsType,\n wake_grid;\n verbose=false,\n silence_warnings=true,\n tabchar=\" \",\n ntab=1,\n)\n\nRelax/Solve initial wake grid according to elliptic system of equations.\n\nArguments\n\n`gridsolveroptions::GridSolverOptionsType' : options for elliptic grid solver\nwake_grid::Array{Float,3} : Initialized wake grid\n\nKeyword Arguments\n\n`verbose=false::' : flag for printing verbose statements\n`silence_warnings=true::' : flag for supressing warnings\n`tabchar::String=\" \"::' : string to use for tabbing over verbose statements.\n`ntab::Int=1' : number of tabs for printing verbose statements\n\n\n\n\n\nrelax_grid!(xg, rg, nxi, neta; iteration_limit, atol)\n\nRelax wakegrid using elliptic wakegrid solver.\n\nArguments:\n\nKeyword Arguments:\n\niteration_limit::Int : maximum number of iterations to run, default=100\natol::Float : convergence tolerance, default = 1e-9\n\nReturns:\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.generate_wake_panels","page":"Preprocess","title":"DuctAPE.generate_wake_panels","text":"generate_wake_panels(wake_grid)\n\nGenerate paneling for each wake sheet emanating from the rotor blade elements.\n\nArguments:\n\nwake_grid::Array{Float,3} : axial and radial locations of each wake_grid point (after relaxation/solution)\n\nReturns:\n\nwake_vortex_panels::NamedTuple : A named tuple of panel values describing the wake vortex panels\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.generate_wake_panels!","page":"Preprocess","title":"DuctAPE.generate_wake_panels!","text":"generate_wake_panels!(wake_panels, wake_grid)\n\nIn-place version of generate_wake_panels.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.get_wake_k","page":"Preprocess","title":"DuctAPE.get_wake_k","text":"get_wake_k(r, nwn)\n\nCalculate geometric constant for use in later calculation of wake panel node strengths.\n\nArguments\n\nr::Vector{Float} : Vector of wake panel node radial positions\n\nReturns\n\nK::Vector{Float} : Vector of geometric constants used in calculation of panel node strengths.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.get_wake_k!","page":"Preprocess","title":"DuctAPE.get_wake_k!","text":"get_wake_k!(K, r)\n\nIn-place version of get_wake_k.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#Bodies","page":"Preprocess","title":"Bodies","text":"","category":"section"},{"location":"DuctAPE/api/private_preprocess/","page":"Preprocess","title":"Preprocess","text":"DuctAPE.reinterpolate_bodies!\nDuctAPE.place_duct!","category":"page"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.reinterpolate_bodies!","page":"Preprocess","title":"DuctAPE.reinterpolate_bodies!","text":"reinterpolate_bodies!(\n rp_duct_coordinates,\n rp_centerbody_coordinates,\n duct_coordinates,\n centerbody_coordinates,\n zwake,\n ncenterbody_inlet,\n nduct_inlet;\n finterp=FLOWMath.akima,\n)\n\nReinterpolate duct and centerbody coordinates in order to make them compatible with the calculated wake sheet panel axial positions.\n\nArguments\n\nrp_duct_coordinates::Matrix{Float} : the re-paneled duct coordinates\nrp_centerbody_coordinates::Matrix{Float} : the re-paneled centerbody coordinates\nduct_coordinates::Matrix{Float} : the input duct coordinates\ncenterbody_coordinates::Matrix{Float} : the input centerbody coordinates\nzwake::Matrix{Float} : the wake sheet panel node axial positions\nncenterbody_inlet::Matrix{Float} : the number of panels to use for the centerbody inlet\nnduct_inlet::Matrix{Float} : the number of panels to use for the duct inlet\n\nKeyword Arguments\n\nfinterp::Function=FLOWMath.akima : interpolation method\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.place_duct!","page":"Preprocess","title":"DuctAPE.place_duct!","text":"place_duct!(rp_duct_coordinates, Rtip, rotorzloc, tip_gap)\n\nTransform the duct radial coordinates such that the leading rotor radius touches the duct wall.\n\nNote that this function is called AFTER the repanling function is called, such that the rotorzloc locations should line up directly with the duct and centerbody coordinates.\n\nArguments\n\nrp_duct_coordinates::Matrix{Float} : the re-paneled duct coordinates\nRtip::Vector{Float} : Tip radii for the rotor(s)\nrotorzloc::Vector{Float} : axial position(s) of the rotor(s)\ntip_gap::Vector{Float} : tip gap for the fore-most rotor (MUST BE ZERO for now)\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#Rotors","page":"Preprocess","title":"Rotors","text":"","category":"section"},{"location":"DuctAPE/api/private_preprocess/","page":"Preprocess","title":"Preprocess","text":"DuctAPE.interpolate_blade_elements\nDuctAPE.interpolate_blade_elements!\nDuctAPE.get_blade_ends_from_body_geometry\nDuctAPE.get_blade_ends_from_body_geometry!\nDuctAPE.get_local_solidity\nDuctAPE.get_stagger\nDuctAPE.generate_rotor_panels\nDuctAPE.generate_rotor_panels!","category":"page"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.interpolate_blade_elements","page":"Preprocess","title":"DuctAPE.interpolate_blade_elements","text":"interpolate_blade_elements(\n rsp, Rtips, Rhubs, rotor_panel_centers, nbe; finterp=FLOWMath.linear\n)\n\nInterpolate blade elements based on Rotor inputs and number of desired blade elements (from number of wake sheet in PanelingConstants input)\n\nArguments\n\nrsp::Rotor : A Rotor object\n`Rtips::Vector{Float}' : Vector of rotor tip radii\n`Rhubs::Vector{Float}' : Vector of rotor hub radii\n`rotorpanelcenters::Vector{Float}' : Vector of rotor panel centers\nnbe::Int : number of blade elements per rotor\n\nKeyword Arguments\n\nfinterp::Function=FLOWMath.linear : interpolation method (note, using Akima splines as is done for the body geometry can lead to negative chord in some cases)\n\nReturns\n\nblade_element_cache::NamedTuple : A named tuple containing the cacheable blade element information excluding the airfoil data.\nairfoils::NamedTuple : A named tuple containing vectors of inner and outer airfoil polar data for each blade element, used in interpolating the input data at blade element locations.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.interpolate_blade_elements!","page":"Preprocess","title":"DuctAPE.interpolate_blade_elements!","text":"interpolate_blade_elements!(\n blade_element_cache, rsp, rotor_panel_centers, nbe; finterp=FLOWMath.linear\n)\n\nIn-place version of interpolate_blade_elements.\n\nReturns\n\nairfoils::NamedTuple : A named tuple containing vectors of inner and outer airfoil polar data for each blade element, used in interpolating the input data at blade element locations.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.get_blade_ends_from_body_geometry","page":"Preprocess","title":"DuctAPE.get_blade_ends_from_body_geometry","text":"get_blade_ends_from_body_geometry(\n rp_duct_coordinates, rp_centerbody_coordinates, tip_gaps, rotorzloc\n)\n\nObtain rotor hub and tip radii based on duct and centerbody geometry.\n\nArguments\n\nvar::type :\nrp_duct_coordinates::Matrix{Float} : re-paneled duct coordinates\nrp_centerbody_coordinates::Matrix{Float} : re-paneled centerbody coordinates\ntip_gaps::Vector{Float} : gaps between blade tips and duct surface (MUST BE ZEROS for now)\nrotorzloc::Vector{Float} : rotor lifting line axial positions.\n\nReturns\n\nRtips::Vector{Float} : rotor tip radii\nRhubs::Vector{Float} : rotor hub radii\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.get_blade_ends_from_body_geometry!","page":"Preprocess","title":"DuctAPE.get_blade_ends_from_body_geometry!","text":"get_blade_ends_from_body_geometry!(\n Rtip,\n Rhub,\n rp_duct_coordinates,\n rp_centerbody_coordinates,\n tip_gaps,\n rotorzloc;\n silence_warnings=true,\n)\n\nIn-place version of get_blade_ends_from_body_geometry.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.get_local_solidity","page":"Preprocess","title":"DuctAPE.get_local_solidity","text":"get_local_solidity(B, chord, r)\n\nCalculate local solidity from local chord, radial position, and number of blades.\n\nArguments\n\nB::Float : number of blades on rotor (usually an integer, but not necessarily).\nchord::Vector{Float} : chord lengths at each radial station.\nr::Vector{Float} : dimensional radial positions.\n\nReturns\n\nsolidity::Vector{Float} : local solidity at each radial station\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.get_stagger","page":"Preprocess","title":"DuctAPE.get_stagger","text":"get_stagger(twists)\n\nConvert twist angle to stagger angle\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.generate_rotor_panels","page":"Preprocess","title":"DuctAPE.generate_rotor_panels","text":"generate_rotor_panels(rotorzloc, wake_grid, rotor_indices_in_wake, nwake_sheets)\n\nGenerate rotor panel objects.\n\nArguments\n\nrotorzloc::Vector{Float} : rotor lifting line axial position\nwake_grid::Array{Float,3} : wake elliptic grid axial and radial locations\nrotor_indices_in_wake::Vector{Int} : indices of where along wake the rotors are placed\nnwake_sheets::Int : number of wake sheets\n\nReturns\n\nrotor_source_panels::NamedTuple : A named tuple containing the rotor source panel variables.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.generate_rotor_panels!","page":"Preprocess","title":"DuctAPE.generate_rotor_panels!","text":"generate_rotor_panels!(\n rotor_source_panels, rotorzloc, wake_grid, rotor_indices_in_wake, nwake_sheets\n)\n\nIn-place version of generate_rotor_panels.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#Induced-Velocities","page":"Preprocess","title":"Induced Velocities","text":"","category":"section"},{"location":"DuctAPE/api/private_preprocess/","page":"Preprocess","title":"Preprocess","text":"DuctAPE.calculate_unit_induced_velocities\nDuctAPE.calculate_unit_induced_velocities!\nDuctAPE.initialize_linear_system\nDuctAPE.initialize_linear_system!","category":"page"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.calculate_unit_induced_velocities","page":"Preprocess","title":"DuctAPE.calculate_unit_induced_velocities","text":"calculate_unit_induced_velocities(problem_dimensions, panels, integration_options)\n\nCalculate all the unit-induced velocties of all panels on all control points\n\nArguments\n\nproblem_dimensions::ProblemDimensions : A ProblemDimensions object\npanels::NamedTuple : A named tuple containing all the paneling information\nintegration_options::IntegrationOptions : Options used for integration of velocity kernals across panels\n\nReturns\n\nivr::NamedTuple : A named tuple containing arrays of induced velocities on the rotors\nivw::NamedTuple : A named tuple containing arrays of induced velocities on the wake\nivb::NamedTuple : A named tuple containing arrays of induced velocities on the bodies\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.calculate_unit_induced_velocities!","page":"Preprocess","title":"DuctAPE.calculate_unit_induced_velocities!","text":"calculate_unit_induced_velocities!(ivr, ivw, ivb, panels, integration_options)\n\nIn-place version of calculate_unit_induced_velocities.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.initialize_linear_system","page":"Preprocess","title":"DuctAPE.initialize_linear_system","text":"initialize_linear_system(\n ivb,\n body_vortex_panels,\n rotor_source_panels,\n wake_vortex_panels,\n Vinf,\n integration_options,\n)\n\nSet up the linear system used in the panel method solve.\n\nArguments\n\nivb::NamedTuple : the named tuple containing all the unit induced velocities on the bodies\nbody_vortex_panels::NamedTuple : the named tuple containing the body vortex panel information\nrotor_source_panels::NamedTuple : the named tuple containing the rotor source panel information\nwake_vortex_panels::NamedTuple : the named tuple containing the wake vortex panel information\nVinf::Vector{Float} : the one-element vector containing the Freestream velocity magnitude\nintegration_options::IntegrationOptions : the integration options used in integrating the panel induced velocities\n\nReturns\n\nlinsys::NamedTuple : A named tuple containing cacheable data for the linear system, including:\nA_bb::Array{Float} : AIC (LHS) matrix for the panel method system\nb_bf::Array{Float} : Initial system RHS vector based on freestrem magnitude\nA_br::Array{Float} : Unit normal velocity from rotors onto body panels\nA_pr::Array{Float} : Unit normal velocity from rotors onto body internal psuedo control points\nA_bw::Array{Float} : Unit normal velocity from wake onto body panels\nA_pw::Array{Float} : Unit normal velocity from wake onto body internal psuedo control points\nA_bb_LU::LinearAlgebra.LU : LinearAlgebra LU factorization of the LHS matrix\nlu_decomp_flag::Vector{Bool} : flag for whether factorization was successful\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.initialize_linear_system!","page":"Preprocess","title":"DuctAPE.initialize_linear_system!","text":"initialize_linear_system!(\n linsys,\n ivb,\n body_vortex_panels,\n rotor_source_panels,\n wake_vortex_panels,\n Vinf,\n intermediate_containers,\n integration_options,\n)\n\nIn-place version of initialize_linear_system.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#Unit-Induced-Velocities","page":"Preprocess","title":"Unit Induced Velocities","text":"","category":"section"},{"location":"DuctAPE/api/private_preprocess/","page":"Preprocess","title":"Preprocess","text":"DuctAPE.calculate_xrm\nDuctAPE.calculate_xrm!\nDuctAPE.get_elliptics\nDuctAPE.vortex_ring_vz\nDuctAPE.vortex_ring_vz!\nDuctAPE.smoke_ring_vz\nDuctAPE.vortex_ring_vr\nDuctAPE.vortex_ring_vr!\nDuctAPE.source_ring_vz\nDuctAPE.source_ring_vz!\nDuctAPE.source_ring_vr\nDuctAPE.source_ring_vr!","category":"page"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.calculate_xrm","page":"Preprocess","title":"DuctAPE.calculate_xrm","text":"calculate_xrm(controlpoint, node)\n\nCalculate xi, rho, and m for vortex and/or source ring induced velocity calculation.\n\nReturns zeros if ring is on (or approximately on) the axis of rotation (zero radius).\n\nArguments\n\ncontrolpoint::Vector{Float} [z r] coordinates of point being influenced\nnode::Vector{Float} : [z r] coordinates of singularity ring\n\nReturns\n\nxi::Float : normalized relative axial position\nrho::Float : normalized relative radial position\nm::Float : Elliptic integral input\nrj::Float : radial position of the ring\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.calculate_xrm!","page":"Preprocess","title":"DuctAPE.calculate_xrm!","text":"calculate_xrm!(cache_vec, controlpoint, node)\n\nIn-place version of calculate_xrm.\n\nCache_vec is a vector used to hold intermediate values as well as the outputs.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.get_elliptics","page":"Preprocess","title":"DuctAPE.get_elliptics","text":"get_elliptics(m)\n\nCalculate value of elliptic functions for the given geometry parameter.\n\nArguments\n\nm::Float : Elliptic Function parameter\n\nReturns\n\nK::Float : K(m), value of elliptic function of the first kind at m.\nE::Float : E(m), value of eeliptic function of the second kind at m.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.vortex_ring_vz","page":"Preprocess","title":"DuctAPE.vortex_ring_vz","text":"vortex_ring_vz(xi, rho, m, r_influence, influence_length)\n\nAxial velocity induced by axisymmetric vortex ring.\n\nUses equivalent smoke ring induced velocity for self-induction, and returns zero if vortex ring is on axis of rotation (zero radius).\n\nArguments\n\nxi::Float : normalized z-coordinate, (z-zo)/ro\nrho::Float : normalized r-coordinate, r/ro\nm::Float : Elliptic Integral parameter, 4rho/sqrt(xi^2+(rho+1)^2)\nr_influence::Float : radial location of vortex ring, ro\ninfluence_length::Float : length of panel used in calculating self-induction\n\nReturns\n\nvz::Float : axially induced velocity of vortex ring\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.vortex_ring_vz!","page":"Preprocess","title":"DuctAPE.vortex_ring_vz!","text":"vortex_ring_vz!(xi, rho, m, r_influence, influence_length, cache_vec)\n\nSame as vortexringvz, but uses the cache_vec to store intermediate calculations.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.smoke_ring_vz","page":"Preprocess","title":"DuctAPE.smoke_ring_vz","text":"smoke_ring_vz(r_influence, influence_length)\n\nEquivalent \"smoke\" ring self-induced velocity.\n\nArguments\n\nr_influence::Float : radial position of ring (i.e. the ring raidus)\ninfluence_length::Float : length of influencing panel\n\nReturs\n\nvz::Float : axially induced velocity of vortex ring\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.vortex_ring_vr","page":"Preprocess","title":"DuctAPE.vortex_ring_vr","text":"vortex_ring_vr(xi, rho, m, r_influence)\n\nRadial velocity induced by axisymmetric vortex ring.\n\nReturns zero if vortex ring is on axis of rotation (zero radius), the point of influence is on the axis, or if self-inducing velocity.\n\nArguments\n\nxi::Float : normalized z-coordinate, (z-zo)/ro\nrho::Float : normalized r-coordinate, r/ro\nm::Float : Elliptic Integral parameter, 4rho/sqrt(xi^2+(rho+1)^2)\nr_influence::Float : radial location of vortex ring, ro\n\nReturns\n\nvr::Float : radially induced velocity of vortex ring\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.vortex_ring_vr!","page":"Preprocess","title":"DuctAPE.vortex_ring_vr!","text":"vortex_ring_vr!(xi, rho, m, r_influence, cache_vec)\n\nSame as vortexringvr, but uses the cache_vec to store intermediate calculations.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.source_ring_vz","page":"Preprocess","title":"DuctAPE.source_ring_vz","text":"source_ring_vz(xi, rho, m, r_influence)\n\nAxial velocity induced by axisymmetric source ring.\n\nReturns zero if source ring is on axis of rotation (zero radius), the point of influence is on the axis, or if self-inducing velocity.\n\nArguments:\n\nxi::Float : normalized z-coordinate, (z-zo)/ro\nrho::Float : normalized r-coordinate, r/ro\nm::Float : Elliptic Integral parameter, 4rho/sqrt(xi^2+(rho+1)^2)\nr_influence::Float : radial location of vortex ring, ro\n\nReturns:\n\nvz::Float : axially induced velocity of source ring\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.source_ring_vz!","page":"Preprocess","title":"DuctAPE.source_ring_vz!","text":"source_ring_vz!(xi, rho, m, r_influence, cache_vec)\n\nSame as sourceringvz, but uses cache_vec to store intermediate values.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.source_ring_vr","page":"Preprocess","title":"DuctAPE.source_ring_vr","text":"source_ring_vr(xi, rho, m, r_influence)\n\nRadial velocity induced by axisymmetric source ring.\n\nReturns zero if source ring is on axis of rotation (zero radius), the point of influence is on the axis, or if self-inducing velocity.\n\nArguments:\n\nxi::Float : normalized z-coordinate, (z-zo)/ro\nrho::Float : normalized r-coordinate, r/ro\nm::Float : Elliptic Integral parameter, 4rho/sqrt(xi^2+(rho+1)^2)\nr_influence::Float : radial location of vortex ring, ro\n\nReturns:\n\nvr::Float : radially induced velocity of source ring\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.source_ring_vr!","page":"Preprocess","title":"DuctAPE.source_ring_vr!","text":"source_ring_vr!(xi, rho, m, r_influence, cache_vec)\n\nSame as sourceringvr, but uses cache_vec to store intermediate values.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#Unit-Induced-Velocity-Matrices","page":"Preprocess","title":"Unit Induced Velocity Matrices","text":"","category":"section"},{"location":"DuctAPE/api/private_preprocess/","page":"Preprocess","title":"Preprocess","text":"DuctAPE.induced_velocities_from_vortex_panels_on_points\nDuctAPE.induced_velocities_from_vortex_panels_on_points!\nDuctAPE.induced_velocities_from_source_panels_on_points\nDuctAPE.induced_velocities_from_source_panels_on_points!\nDuctAPE.induced_velocities_from_trailing_edge_gap_panel!","category":"page"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.induced_velocities_from_vortex_panels_on_points","page":"Preprocess","title":"DuctAPE.induced_velocities_from_vortex_panels_on_points","text":"induced_velocities_from_vortex_panels_on_points(\n controlpoints,\n nodes,\n nodemap,\n influence_lengths,\n integration_options;\n integration_caches=nothing,\n)\n\nCalculate axial and radial components of induced velocity for a set of control points due to a set of axisymmetric vortex panels (bands).\n\nUsed for getting the unit induced velocities due to the body panels on the rotor/wake as well as the unit induced velocity due to the wake on the body/rotor.\n\nArguments\n\ncontrolpoints::Matrix{Float} [z r] coordinates of points being influenced\nnodes::Matrix{Float} : [z r] coordinates of vortex rings\nnodemap::Matrix{Int} : mapping from panel index to associated node indices\ninfluence_lengths::Vector{Float} : lengths over which vortex ring influence is applied on the surface.\nintegration_options::IntegrationOptions : integration options\n\nKeyword Arguments\n\nintegration_caches::NamedTuple=nothing : cache used in in-place quadrature functions.\n\nReturns\n\nVEL::Array{Float} : N-controlpoint x N-node x [vz, vr] array of induced velocity components\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.induced_velocities_from_vortex_panels_on_points!","page":"Preprocess","title":"DuctAPE.induced_velocities_from_vortex_panels_on_points!","text":"induced_velocities_from_vortex_panels_on_points!(\n VEL,\n controlpoint,\n node,\n nodemap,\n influence_length,\n integration_options;\n integration_caches=nothing,\n)\n\nIn-place version of induced_velocities_from_vortex_panels_on_points.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.induced_velocities_from_source_panels_on_points","page":"Preprocess","title":"DuctAPE.induced_velocities_from_source_panels_on_points","text":"induced_velocities_from_source_panels_on_points(\n controlpoints,\n nodes,\n nodemap,\n influence_lengths,\n integration_options;\n integration_caches=nothing,\n)\n\nCalculate axial and radial components of induced velocity for a set of control points due to a set of axisymmetric source panels (bands)\n\nUsed for getting the unit induced velocities due to the body panels on the rotor/wake as well as the unit induced velocity due to the wake on the body/rotor.\n\nArguments\n\ncontrolpoints::Matrix{Float} [z r] coordinates of points being influenced\nnodes::Matrix{Float} : [z r] coordinates of vortex rings\nnodemap::Matrix{Int} : mapping from panel index to associated node indices\ninfluence_lengths::Vector{Float} : lengths over which vortex ring influence is applied on the surface.\nintegration_options::IntegrationOptions : integration options\n\nReturns:\n\nVEL::Array{Float} : N-controlpoint x N-node x [vz, vr] array of induced velocity components\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.induced_velocities_from_source_panels_on_points!","page":"Preprocess","title":"DuctAPE.induced_velocities_from_source_panels_on_points!","text":"induced_velocities_from_source_panels_on_points!(\n VEL,\n controlpoint,\n node,\n nodemap,\n influence_length,\n integration_options;\n integration_caches=nothing,\n)\n\nIn-place version of induced_velocities_from_source_panels_on_points.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.induced_velocities_from_trailing_edge_gap_panel!","page":"Preprocess","title":"DuctAPE.induced_velocities_from_trailing_edge_gap_panel!","text":"induced_velocities_from_trailing_edge_gap_panel!(\n VEL,\n controlpoint,\n tenode,\n teinfluence_length,\n tendotn,\n tencrossn,\n teadjnodeidxs,\n integration_options;\n wake=false,\n integration_caches=nothing,\n)\n\nCalculate axial and radial components of induced velocity for a set of control points due to any trailing edge gap panels.\n\nUsed for getting the unit induced velocities due to the body body trailing edge gap panels on the body/rotor/wake.\n\nNote, this function is also used to calculate the influence of the wake ends rather than modeling a semi-infinite fortex sheet.\n\nArguments\n\nVEL::Array{Float} : N-controlpoint x N-node x [vz, vr] array of induced velocity components (modified in place)\ncontrolpoints::Matrix{Float} [z r] coordinates of points being influenced\nnodes::Matrix{Float} : [z r] coordinates of vortex rings\nnodemap::Matrix{Int} : mapping from panel index to associated node indices\ninfluence_lengths::Vector{Float} : lengths over which vortex ring influence is applied on the surface.\nstrengths::Matrix{Float} : vortex constant circulation values\nintegration_options::IntegrationOptions : integration options\n\nKeyword Arguments\n\nwake::Bool=false : flag to indicate if this is being used for a wake sheet.\nintegration_caches::NamedTuple=nothing : cache used in in-place quadrature functions.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#Panel-Method-Velocity-Functions","page":"Preprocess","title":"Panel Method Velocity Functions","text":"","category":"section"},{"location":"DuctAPE/api/private_preprocess/","page":"Preprocess","title":"Preprocess","text":"DuctAPE.vortex_aic_boundary_on_boundary\nDuctAPE.vortex_aic_boundary_on_boundary!\nDuctAPE.vortex_aic_boundary_on_field\nDuctAPE.vortex_aic_boundary_on_field!\nDuctAPE.add_kutta!\nDuctAPE.add_te_gap_aic!\nDuctAPE.source_aic\nDuctAPE.source_aic!\nDuctAPE.freestream_influence_vector\nDuctAPE.freestream_influence_vector!\nDuctAPE.assemble_lhs_matrix\nDuctAPE.assemble_lhs_matrix!\nDuctAPE.factorize_LHS\nDuctAPE.factorize_LHS!\nDuctAPE.assemble_rhs_matrix\nDuctAPE.assemble_rhs_matrix!\nDuctAPE.calculate_normal_velocity\nDuctAPE.calculate_normal_velocity!","category":"page"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.vortex_aic_boundary_on_boundary","page":"Preprocess","title":"DuctAPE.vortex_aic_boundary_on_boundary","text":"vortex_aic_boundary_on_boundary(\n controlpoint, normal, node, nodemap, influence_length, integration_options\n)\n\nCalculate panel method influence coefficients (V dot nhat) for a set of control points (on panels) due to a set of axisymmetric vortex rings (also on body surface)\n\nCan be used for constructing the LHS influence Matrix for the panel method system.\n\nArguments\n\ncontrolpoint::Matrix{Float} [z r] coordinates of points being influenced\nnormal::Matrix{Float} : unit normal vectors of the panels on which the control points are situated.\nnode::Matrix{Float} : [z r] coordinates of panel nodes (edges)\nnodemap::Matrix{Int} : [1 2] node indices for each panel\ninfluence_length::Vector{Float} : lengths of influencing panels\nintegration_options::IntegrationOptions : integration options\n\nReturns\n\nAICn::Matrix{Float} : N controlpoint x N+1 node array of V dot nhat values\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.vortex_aic_boundary_on_boundary!","page":"Preprocess","title":"DuctAPE.vortex_aic_boundary_on_boundary!","text":"vortex_aic_boundary_on_boundary!(\n AICn,\n controlpoint,\n normal,\n node,\n nodemap,\n influence_length,\n integration_options;\n integration_caches=nothing,\n)\n\nIn-place verion of vortex_aic_boundary_on_boundary.\n\nintegration_caches is a named tuple containing caching for intermediate calculation values.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.vortex_aic_boundary_on_field","page":"Preprocess","title":"DuctAPE.vortex_aic_boundary_on_field","text":"vortex_aic_boundary_on_field(\n controlpoint,\n normal,\n node,\n nodemap,\n influence_length,\n integration_options;\n integration_caches=nothing,\n)\n\nCalculate panel method influence coefficients (V dot nhat) for a set of control points (NOT on panels) due to a set of axisymmetric vortex rings (on body surface)\n\nUsed for constructing portions of the panel method LHS matrix related to the pseudo control points in the bodies.\n\nArguments:\n\ncontrolpoint::Matrix{Float} [z r] coordinates of points being influenced\nnormal::Matrix{Float} : unit normal vectors of the panels on which the control points are situated.\nnode::Matrix{Float} : [z r] coordinates of panel nodes (edges)\nnodemap::Matrix{Int} : [1 2] node indices for each panel\ninfluence_length::Vector{Float} : lengths of influencing panels\nintegration_options::IntegrationOptions : integration options\n\nKeyword Arguments\n\nintegration_caches::NamedTuple=nothing : caches for intermediate values in integration.\n\nReturns:\n\nAICn::Matrix{Float} : N controlpoint x N+1 node array of V dot nhat values\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.vortex_aic_boundary_on_field!","page":"Preprocess","title":"DuctAPE.vortex_aic_boundary_on_field!","text":"vortex_aic_boundary_on_field!(\n AICn,\n controlpoint,\n normal,\n node,\n nodemap,\n influence_length,\n integration_options;\n integration_caches=nothing,\n)\n\nIn-place version of vortex_aic_boundary_on_field.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.add_kutta!","page":"Preprocess","title":"DuctAPE.add_kutta!","text":"add_kutta!(LHS, AICn, kids)\n\nAdd Kutta condition (γ1 + γN = 0) to LHS matrix.\n\nLHS::Matrix{Float} : a pre-allocated (zeros) full size left-hand side matrix\nAICn::Matrix{Float} : influence coefficients for panels/nodes\nkids::Vector{Int} : [1 2] indices of where to put 1's for kutta condition\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.add_te_gap_aic!","page":"Preprocess","title":"DuctAPE.add_te_gap_aic!","text":"add_te_gap_aic!(\n AICn,\n controlpoint,\n normal,\n tenode,\n teinfluence_length,\n tendotn,\n tencrossn,\n teadjnodeidxs,\n integration_options;\n wake=false,\n integration_caches=nothing,\n)\n\nAdd trailing edge gap aerodynmic influence coefficient contributions to the AIC matrix.\n\nArguments\n\nAICn::Matrix{Float} : N controlpoint x N+1 node array of V dot nhat values\ncontrolpoint::Matrix{Float} [z r] coordinates of points being influenced\nnormal::Matrix{Float} : unit normal vectors of the panels on which the control points are situated.\ntenode::Matrix{Float} : [z r] coordinates of trailing edge panel nodes (edges)\nteinfluence_length::Vector{Float} : lengths of influencing trailing edge panels\ntendotn::Matrix{Float} : nhat of trailing edge panel dotted with nhat of adjacent panels\ntencrossn::Matrix{Float} : nhat of trailing edge panel crossed with nhat of adjacent panels\nteadjnodeidxs::Matrix{Float} : indices of nodes adjacent to trailing edge panel\nintegration_options::IntegrationOptions : integration options\n\nKeyword Arguments\n\nwake::Bool=false : flag as to whether this function is being applied to a wake sheet.\nintegration_caches::NamedTuple=nothing : caches for intermediate values in integration.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.source_aic","page":"Preprocess","title":"DuctAPE.source_aic","text":"source_aic(\n controlpoint,\n normal,\n node,\n nodemap,\n influence_length,\n integration_options;\n integration_caches=nothing,\n)\n\nCalculate panel method influence coefficients (V dot nhat) for a set of control points (on panels) due to a set of axisymmetric source rings not on body surface.\n\nCan be used for constructing the RHS boundary conditions due to rotor source panels.\n\nArguments\n\ncontrolpoint::Matrix{Float} [z r] coordinates of points being influenced\nnormal::Matrix{Float} : unit normal vectors of the panels on which the control points are situated.\nnode::Matrix{Float} : [z r] coordinates of panel nodes (edges)\nnodemap::Matrix{Int} : [1 2] node indices for each panel\ninfluence_length::Vector{Float} : lengths of influencing panels\nintegration_options::IntegrationOptions : integration options\n\nKeyword Arguments\n\nintegration_caches::NamedTuple=nothing : caches for intermediate values in integration.\n\nReturns\n\nAICn::Matrix{Float} : N controlpoint x N+1 node array of V dot nhat values\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.source_aic!","page":"Preprocess","title":"DuctAPE.source_aic!","text":"source_aic!(\n AICn,\n controlpoint,\n normal,\n node,\n nodemap,\n influence_length,\n integration_options;\n integration_caches=nothing,\n)\n\nIn-place version of source_aic.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.freestream_influence_vector","page":"Preprocess","title":"DuctAPE.freestream_influence_vector","text":"freestream_influence_vector(normals, Vinfmat)\n\nCalculate RHS contributions due to freestream.\n\nNote that the freestream is assumed to have zero radial component in the underlying theory, but here we allow an arbitrary 2D vector for velocity for taking the dot product easier.\n\nArguments\n\nnormals::Matrix{Float} : unit normal vectors of the panels on which the control points are situated.\nVinfmat::Matrix{Float} : [z r] components of freestream velocity (r's should be zero)\n\nReturns\n\nRHS::Vector{Float} : vector of normal components of freestream velocity on input panels\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.freestream_influence_vector!","page":"Preprocess","title":"DuctAPE.freestream_influence_vector!","text":"freestream_influence_vector!(RHS, normals, Vinfmat)\n\nIn-place version of freestream_influence_vector.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.assemble_lhs_matrix","page":"Preprocess","title":"DuctAPE.assemble_lhs_matrix","text":"assemble_lhs_matrix(\n AICn, AICpcp, npanel, nnode, totpanel, totnode, prescribednodeidxs; dummyval=1.0\n)\n\nAssemble the LHS matrix of the panel method.\n\nArguments\n\nAICn::Matrix{Float} : N controlpoint x N+1 node array of V dot nhat values\nAICpcp::Matrix{Float} : Nbodies controlpoint x N+1 node array of V dot nhat values (influence on psuedo control points)\nnpanel::Vector{Int} : number of panels comprising each body\nnnode::Vector{Int} : number of nodes comprising each body\ntotpanel::Int : total number of panels\ntotnode::Int : total number of nodes\nprescribednodeidxs::Vector{Int} : indices of nodes with prescribed strengths (those on the axis of rotation).\n\nKeyword Arguments\n\ndummyval::Float=1.0 : value for dummy input for prescribed and internal control points in the system. Do not change except for debugging purposes.\n\nReturns\n\nLHS::Matrix{Float} : The full LHS matrix for the panel method.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.assemble_lhs_matrix!","page":"Preprocess","title":"DuctAPE.assemble_lhs_matrix!","text":"assemble_lhs_matrix!(\n LHS, AICn, AICpcp, npanel, nnode, totpanel, totnode, prescribednodeidxs; dummyval=1.0\n)\n\nIn-place version of assemble_lhs_matrix.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.factorize_LHS","page":"Preprocess","title":"DuctAPE.factorize_LHS","text":"factorize_LHS(A::AbstractMatrix)\n\nReturns the LU decomposition of A.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.factorize_LHS!","page":"Preprocess","title":"DuctAPE.factorize_LHS!","text":"factorize_LHS!(Apivot::AbstractMatrix, A::AbstractMatrix)\n\nReturns the LU decomposition of A using Apivot as storage memory to pivot leaving A unchanged.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.assemble_rhs_matrix","page":"Preprocess","title":"DuctAPE.assemble_rhs_matrix","text":"assemble_rhs_matrix(\n vdnb, vdnpcp, npanel, nnode, totpanel, totnode, prescribednodeidxs\n)\n\nArguments\n\nvdnb::Vector{Float} : V dot nhat for body panels\nvdnpcp::Vector{Float} : V dot nhat for pseudo control points\nnpanel::Vector{Int} : number of panels comprising each body\nnnode::Vector{Int} : number of nodes comprising each body\ntotpanel::Int : total number of body panels\ntotnode::Int : total number of body nodes\nprescribednodeidxs::Vector{Int} : indices of nodes with prescribed strengths (those on the axis of rotation)\n\nReturns\n\nRHS::Vector{Float} : the RHS vector of the panel method.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.assemble_rhs_matrix!","page":"Preprocess","title":"DuctAPE.assemble_rhs_matrix!","text":"assemble_rhs_matrix!(\n RHS, vdnb, vdnpcp, npanel, nnode, totpanel, totnode, prescribednodeidxs\n)\n\nIn-place version of assemble_rhs_matrix.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.calculate_normal_velocity","page":"Preprocess","title":"DuctAPE.calculate_normal_velocity","text":"calculate_normal_velocity(velocity_vector, normal)\n\nCalculate normal velocity_vector (V dot nhat).\n\nArguments\n\nvelocity_vector::Matrix{Float} : velocity vector [z r] on each panel\nnormal::Matrix{Float} : the panel unit normals\n\nReturns\n\nAIC::Matrix{Float} : V dot n on each panel\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.calculate_normal_velocity!","page":"Preprocess","title":"DuctAPE.calculate_normal_velocity!","text":"calculate_normal_velocity!(AIC, velocity_vector, normal)\n\nIn-place version of calculate_normal_velocity.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#Quadrature","page":"Preprocess","title":"Quadrature","text":"","category":"section"},{"location":"DuctAPE/api/private_preprocess/#Integrands","page":"Preprocess","title":"Integrands","text":"","category":"section"},{"location":"DuctAPE/api/private_preprocess/","page":"Preprocess","title":"Preprocess","text":"DuctAPE.nominal_vortex_induced_velocity_sample\nDuctAPE.nominal_vortex_induced_velocity_sample!\nDuctAPE.subtracted_singular_vortex_influence\nDuctAPE.subtracted_singular_vortex_influence!\nDuctAPE.analytically_integrated_vortex_influence\nDuctAPE.analytically_integrated_vortex_influence!\nDuctAPE.self_vortex_induced_velocity_sample\nDuctAPE.self_vortex_induced_velocity_sample!\nDuctAPE.nominal_source_induced_velocity_sample\nDuctAPE.nominal_source_induced_velocity_sample!\nDuctAPE.subtracted_singular_source_influence\nDuctAPE.subtracted_singular_source_influence!\nDuctAPE.analytically_integrated_source_influence\nDuctAPE.analytically_integrated_source_influence!\nDuctAPE.self_source_induced_velocity_sample\nDuctAPE.self_source_induced_velocity_sample!","category":"page"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.nominal_vortex_induced_velocity_sample","page":"Preprocess","title":"DuctAPE.nominal_vortex_induced_velocity_sample","text":"nominal_vortex_induced_velocity_sample(\n t, node1, node2, influence_length, controlpoint, cache_vec; nondimrange=(0.0, 1.0)\n)\n\nCalculate the velocity induced by a linear vortex panel on a point.\n\nArguments\n\nt::Float : sample point in range (0,1) selected by quadrature method.\nnode1::Vector{Float} : first panel node (edge) position.\nnode2::Vector{Float} : second panel node (edge) position.\ninfluence_length::Float : dimensional length of panel.\ncontrolpoint::Vector{Float} : controlpoint position\ncache_vec::Vector{Float} : cache for intermediate calculations\n\nKeyword Arguments\n\nnondimrange::Tuple=(0.0,1.0) : Non-dimensional range describing the panel length. Do not change excpet for debugging purposes. Note, can also be a vector.\n\nReturns\n\nV::Matrix{Float} : 2x2 matrix of axial and radial induced velocities from each of the nodes.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.nominal_vortex_induced_velocity_sample!","page":"Preprocess","title":"DuctAPE.nominal_vortex_induced_velocity_sample!","text":"nominal_vortex_induced_velocity_sample!(\n V, t, node1, node2, influence_length, controlpoint, cache_vec; nondimrange=(0.0, 1.0)\n)\n\nIn-place version of nominal_vortex_induced_velocity_sample.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.subtracted_singular_vortex_influence","page":"Preprocess","title":"DuctAPE.subtracted_singular_vortex_influence","text":"subtracted_singular_vortex_influence(node, controlpoint)\n\nCalculate the singular portions of the self-induced vortex panel influence to subtract off the integral in the separation of singularity method.\n\nArguments\n\nnode::Vector{Float} : node position\ncontrolpoint::Vector{Float} : controlpoint position\n\nReturns\n\naxial::Float : axial direction influence\nradial::Float : radial direction influence\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.subtracted_singular_vortex_influence!","page":"Preprocess","title":"DuctAPE.subtracted_singular_vortex_influence!","text":"subtracted_singular_vortex_influence!(node, controlpoint, cache_vec)\n\nSomewhat in-place version of subtracted_singular_vortex_influence.\n\nArguments\n\nnode::Vector{Float} : node position\ncontrolpoint::Vector{Float} : controlpoint position\ncache_vec::Vector{Float} : used to store intermediate values.\n\nReturns\n\naxial::Float : axial direction influence\nradial::Float : radial direction influence\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.analytically_integrated_vortex_influence","page":"Preprocess","title":"DuctAPE.analytically_integrated_vortex_influence","text":"analytically_integrated_vortex_influence(r, influence_length)\n\nAnalytical approximation of the singular portions of the self-induced vortex panel velocities to be added back in as part of the separation of singularity method.\n\nArguments\n\nr::Float : radial position of self-induced control point\ninfluence_length::Float : dimensional length of the panel\n\nReturns\n\nV::Vector{Float} : axial and radial induced velocities\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.analytically_integrated_vortex_influence!","page":"Preprocess","title":"DuctAPE.analytically_integrated_vortex_influence!","text":"analytically_integrated_vortex_influence!(V, r, influence_length)\n\nIn-place version of analytically_integrated_vortex_influence.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.self_vortex_induced_velocity_sample","page":"Preprocess","title":"DuctAPE.self_vortex_induced_velocity_sample","text":"self_vortex_induced_velocity_sample(\n t, node1, node2, influence_length, controlpoint, cache_vec; nondimrange=(0.0, 1.0)\n)\n\nCalculate the velocity induced by a linear vortex panel on a point at the midpoint between the panel edges.\n\nArguments\n\nt::Float : sample point in range (0,1) selected by quadrature method.\nnode1::Vector{Float} : first panel node (edge) position.\nnode2::Vector{Float} : second panel node (edge) position.\ninfluence_length::Float : dimensional length of panel.\ncontrolpoint::Vector{Float} : controlpoint position\ncache_vec::Vector{Float} : cache for intermediate calculations\n\nKeyword Arguments\n\nnondimrange::Tuple=(0.0,1.0) : Non-dimensional range describing the panel length. Do not change excpet for debugging purposes. Note, can also be a vector.\n\nReturns\n\nV::Matrix{Float} : 2x2 matrix of axial and radial induced velocities from each of the nodes.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.self_vortex_induced_velocity_sample!","page":"Preprocess","title":"DuctAPE.self_vortex_induced_velocity_sample!","text":"self_vortex_induced_velocity_sample!(\n V, t, node1, node2, influence_length, controlpoint, cache_vec; nondimrange=(0.0, 1.0)\n)\n\nIn-place version of self_vortex_induced_velocity_sample.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.nominal_source_induced_velocity_sample","page":"Preprocess","title":"DuctAPE.nominal_source_induced_velocity_sample","text":"nominal_source_induced_velocity_sample(\n t, node1, node2, influence_length, controlpoint, cache_vec; nondimrange=(0.0, 1.0)\n)\n\nCalculate the velocity induced by a source panel on a point.\n\nArguments\n\nt::Float : sample point in range (0,1) selected by quadrature method.\nnode1::Vector{Float} : first panel node (edge) position.\nnode2::Vector{Float} : second panel node (edge) position.\ninfluence_length::Float : dimensional length of panel.\ncontrolpoint::Vector{Float} : controlpoint position\ncache_vec::Vector{Float} : cache for intermediate calculations\n\nKeyword Arguments\n\nnondimrange::Tuple=(0.0,1.0) : Non-dimensional range describing the panel length. Do not change excpet for debugging purposes. Note, can also be a vector.\n\nReturns\n\nV::Matrix{Float} : 2x2 matrix of axial and radial induced velocities from each of the nodes.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.nominal_source_induced_velocity_sample!","page":"Preprocess","title":"DuctAPE.nominal_source_induced_velocity_sample!","text":"nominal_source_induced_velocity_sample!(\n V, t, node1, node2, influence_length, controlpoint, cache_vec; nondimrange=(0.0,1.0)\n)\n\nIn-place version of nominal_source_induced_velocity_sample.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.subtracted_singular_source_influence","page":"Preprocess","title":"DuctAPE.subtracted_singular_source_influence","text":"subtracted_singular_source_influence(node, controlpoint)\n\nCalculate the singular portions of the self-induced source panel influence to subtract off the integral in the separation of singularity method.\n\nArguments\n\nnode::Vector{Float} : node position\ncontrolpoint::Vector{Float} : controlpoint position\n\nReturns\n\naxial::Float : axial direction influence\nradial::Float : radial direction influence\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.subtracted_singular_source_influence!","page":"Preprocess","title":"DuctAPE.subtracted_singular_source_influence!","text":"subtracted_singular_source_influence!(node, controlpoint, cache_vec)\n\nIn-place version of subtracted_singular_source_influence.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.analytically_integrated_source_influence","page":"Preprocess","title":"DuctAPE.analytically_integrated_source_influence","text":"analytically_integrated_source_influence(r, influence_length)\n\nIn-place version of analytically_integrated_source_influence.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.analytically_integrated_source_influence!","page":"Preprocess","title":"DuctAPE.analytically_integrated_source_influence!","text":"analytically_integrated_source_influence(r, influence_length)\n\nAnalytical approximation of the singular portions of the self-induced source panel velocities to be added back in as part of the separation of singularity method.\n\nArguments\n\nr::Float : radial position of self-induced control point\ninfluence_length::Float : dimensional length of the panel\n\nReturns\n\nV::Vector{Float} : axial and radial induced velocities\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.self_source_induced_velocity_sample","page":"Preprocess","title":"DuctAPE.self_source_induced_velocity_sample","text":"self_source_induced_velocity_sample(\n t, node1, node2, influence_length, controlpoint, cache_vec; nondimrange=(0.0, 1.0)\n)\n\nCalculate the velocity induced by a linear source panel on a point at the midpoint between the panel edges.\n\nArguments\n\nt::Float : sample point in range (0,1) selected by quadrature method.\nnode1::Vector{Float} : first panel node (edge) position.\nnode2::Vector{Float} : second panel node (edge) position.\ninfluence_length::Float : dimensional length of panel.\ncontrolpoint::Vector{Float} : controlpoint position\ncache_vec::Vector{Float} : cache for intermediate calculations\n\nKeyword Arguments\n\nnondimrange::Tuple=(0.0,1.0) : Non-dimensional range describing the panel length. Do not change excpet for debugging purposes. Note, can also be a vector.\n\nReturns\n\nV::Matrix{Float} : 2x2 matrix of axial and radial induced velocities from each of the nodes.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.self_source_induced_velocity_sample!","page":"Preprocess","title":"DuctAPE.self_source_induced_velocity_sample!","text":"self_source_induced_velocity_sample!(\n V, t, node1, node2, influence_length, controlpoint, cache_vec; nondimrange=(0.0, 1.0)\n)\n\nIn-place version of self_source_induced_velocity_sample.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#Integrals","page":"Preprocess","title":"Integrals","text":"","category":"section"},{"location":"DuctAPE/api/private_preprocess/","page":"Preprocess","title":"Preprocess","text":"DuctAPE.nominal_vortex_panel_integration\nDuctAPE.nominal_vortex_panel_integration!\nDuctAPE.self_vortex_panel_integration\nDuctAPE.self_vortex_panel_integration!\nDuctAPE.nominal_source_panel_integration\nDuctAPE.nominal_source_panel_integration!\nDuctAPE.self_source_panel_integration\nDuctAPE.self_source_panel_integration!\nDuctAPE.extrapolate!","category":"page"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.nominal_vortex_panel_integration","page":"Preprocess","title":"DuctAPE.nominal_vortex_panel_integration","text":"nominal_vortex_panel_integration(\n integration_options,\n node1,\n node2,\n influence_length,\n controlpoint,\n containers;\n debug=false,\n)\n\nIntegration of vortex panel induced velocity on a point far away.\n\nArguments\n\nintegration_options::IntegrationMethod : options for itegration methods\nnode1::Vector{Float} : first panel node (edge) position.\nnode2::Vector{Float} : second panel node (edge) position.\ninfluence_length::Float : dimensional length of panel.\ncontrolpoint::Vector{Float} : controlpoint position\ncontainers::NamedTuple : cache for intermediate calculations\n\nKeyword Arguments\n\ndebug::Bool=false : if true, some methods will return the estimation error.\n\nReturns\n\nV::Matrix{Float} : velocity components due to the jth and j+1th nodes in the format: [vz_j vr_j; vz_{j+1} vr_{j+1}]\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.nominal_vortex_panel_integration!","page":"Preprocess","title":"DuctAPE.nominal_vortex_panel_integration!","text":"nominal_vortex_panel_integration!(\n integration_options,\n V,\n node1,\n node2,\n influence_length,\n controlpoint,\n containers;\n debug=false,\n)\n\nIn-place version of nominal_vortex_panel_integration.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.self_vortex_panel_integration","page":"Preprocess","title":"DuctAPE.self_vortex_panel_integration","text":"self_vortex_panel_integration(\n integration_options,\n node1,\n node2,\n influence_length,\n controlpoint,\n containers;\n debug=false,\n)\n\nIntegration of linear vortex panel self-induced velocity.\n\nArguments\n\nintegration_options::IntegrationMethod : options for itegration methods\nnode1::Vector{Float} : first panel node (edge) position.\nnode2::Vector{Float} : second panel node (edge) position.\ninfluence_length::Float : dimensional length of panel.\ncontrolpoint::Vector{Float} : controlpoint position\ncontainers::NamedTuple : cache for intermediate calculations\n\nKeyword Arguments\n\ndebug::Bool=false : if true, some methods will return the estimation error.\n\nReturns\n\nV::Matrix{Float} : velocity components due to the jth and j+1th nodes in the format: [vz_j vr_j; vz_{j+1} vr_{j+1}]\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.self_vortex_panel_integration!","page":"Preprocess","title":"DuctAPE.self_vortex_panel_integration!","text":"self_vortex_panel_integration!(\n integration_options,\n V,\n node1,\n node2,\n influence_length,\n controlpoint,\n containers;\n debug=false,\n)\n\nIn-place version of self_vortex_panel_integration.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.nominal_source_panel_integration","page":"Preprocess","title":"DuctAPE.nominal_source_panel_integration","text":"nominal_source_panel_integration(\n integration_options,\n node1,\n node2,\n influence_length,\n controlpoint,\n containers;\n debug=false,\n)\n\nIntegration of source panel induced velocity on a point far away.\n\nArguments\n\nintegration_options::IntegrationMethod : options for itegration methods\nnode1::Vector{Float} : first panel node (edge) position.\nnode2::Vector{Float} : second panel node (edge) position.\ninfluence_length::Float : dimensional length of panel.\ncontrolpoint::Vector{Float} : controlpoint position\ncontainers::NamedTuple : cache for intermediate calculations\n\nKeyword Arguments\n\ndebug::Bool=false : if true, some methods will return the estimation error.\n\nReturns\n\nV::Matrix{Float} : velocity components due to the jth and j+1th nodes in the format: [vz_j vr_j; vz_{j+1} vr_{j+1}]\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.nominal_source_panel_integration!","page":"Preprocess","title":"DuctAPE.nominal_source_panel_integration!","text":"nominal_source_panel_integration!(\n integration_options,\n V,\n node1,\n node2,\n influence_length,\n controlpoint,\n containers;\n debug=false,\n)\n\nIn-place version of nominal_source_panel_integration.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.self_source_panel_integration","page":"Preprocess","title":"DuctAPE.self_source_panel_integration","text":"self_source_panel_integration(\n integration_options,\n node1,\n node2,\n influence_length,\n controlpoint,\n containers;\n debug=false,\n)\n\nIntegration of linear source panel self-induced velocity.\n\nArguments\n\nintegration_options::IntegrationMethod : options for itegration methods\nnode1::Vector{Float} : first panel node (edge) position.\nnode2::Vector{Float} : second panel node (edge) position.\ninfluence_length::Float : dimensional length of panel.\ncontrolpoint::Vector{Float} : controlpoint position\ncontainers::NamedTuple : cache for intermediate calculations\n\nKeyword Arguments\n\ndebug::Bool=false : if true, some methods will return the estimation error.\n\nReturns\n\nV::Matrix{Float} : velocity components due to the jth and j+1th nodes in the format: [vz_j vr_j; vz_{j+1} vr_{j+1}]\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.self_source_panel_integration!","page":"Preprocess","title":"DuctAPE.self_source_panel_integration!","text":"self_source_panel_integration!(\n integration_options,\n V,\n node1,\n node2,\n influence_length,\n controlpoint,\n containers;\n debug=false,\n)\n\nIn-place version of self_source_panel_integration.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.extrapolate!","page":"Preprocess","title":"DuctAPE.extrapolate!","text":"extrapolate!(V, err, fh; power=2, atol=1e-6)\n\nPerforms Richardson extrapolation on an array fh for use in Romberg integration.\n\nArguments\n\nV::Matrix{Float} : velocity components due to the jth and j+1th nodes in the format: [vz_j vr_j; vz_{j+1} vr_{j+1}]\nerr::Vector{Float} : estimated errors in velocity approximation\nfh::Tuple : (f(h), h) tuples (in order of decreasing |h|)\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#State-Initialization","page":"Preprocess","title":"State Initialization","text":"","category":"section"},{"location":"DuctAPE/api/private_preprocess/","page":"Preprocess","title":"Preprocess","text":"DuctAPE.initialize_velocities\nDuctAPE.initialize_velocities!\nDuctAPE.initialize_strengths!","category":"page"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.initialize_velocities","page":"Preprocess","title":"DuctAPE.initialize_velocities","text":"initialize_velocities(\n solver_options::SolverOptionsType,\n operating_point,\n blade_elements,\n linsys,\n ivr,\n ivw,\n body_totnodes,\n wake_panel_sheet_be_map,\n)\n\nInitialize velocity state variables.\n\nArguments\n\nsolver_options::SolverOptionsType : solver options type for dispatch\noperating_point::OperatingPoint : an OperatingPoint object\nblade_elements::NamedTuple : A named tuple containing the blade element geometry and airfoil information.\nlinsys::NamedTuple : A named tuple containing the panel method linear system information.\nivr::NamedTuple : A named tuple containing the unit induced velocities on the rotors\nivw::NamedTuple : A named tuple containing the unit induced velocities on the wake\nbody_totnodes::Int : the total number of panel nodes comprising the duct and centerbody geometry\nwake_panel_sheet_be_map::Matrix{Int} : An index map from the wake panels to the nearest ahead rotor blade element along the wake sheets\n\nReturns\n\nvz_rotor::Vector{Float} : a vector of the velocity state variables associated with the rotor axially induced velocity\nvtheta_rotor::Vector{Float} : a vector of the velocity state variables associated with the rotor tangentially induced velocity\nCm_wake::Vector{Float} : a vector of the velocity state variables associated with the wake control point meridional velocity\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.initialize_velocities!","page":"Preprocess","title":"DuctAPE.initialize_velocities!","text":"function initializevelocities!( solveroptions::SolverOptionsType, vzrotor, vthetarotor, Cmwake, operatingpoint, bladeelements, linsys, ivr, ivw, bodytotnodes, wakepanelsheetbemap, )\n\nIn-place version of initialize_velocities.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_preprocess/#DuctAPE.initialize_strengths!","page":"Preprocess","title":"DuctAPE.initialize_strengths!","text":"initialize_strengths!(\n solver_options::SolverOptionsType,\n Gamr,\n sigr,\n gamw,\n operating_point,\n blade_elements,\n linsys,\n ivr,\n ivw,\n wakeK,\n body_totnodes,\n wake_nodemap,\n wake_endnodeidxs,\n wake_panel_sheet_be_map,\n wake_node_sheet_be_map,\n wake_node_ids_along_casing_wake_interface,\n wake_node_ids_along_centerbody_wake_interface,\n)\n\nInitialize strength state variables.\n\nArguments\n\nsolver_options::SolverOptionsType : solver options type for dispatch\nGamr::Vector{Float} : Rotor circulation state variables (modified in place)\nsigr::Vector{Float} : Rotor panel strength state variables (modified in place)\ngamw::Vector{Float} : Wake panel strength state variables (modified in place)\noperating_point::OperatingPoint : an OperatingPoint object\nblade_elements::NamedTuple : A named tuple containing the blade element geometry and airfoil information.\nlinsys::NamedTuple : A named tuple containing the panel method linear system information.\nivr::NamedTuple : A named tuple containing the unit induced velocities on the rotors\nivw::NamedTuple : A named tuple containing the unit induced velocities on the wake\nwakeK::Vector{Float} : geometric constants of wake nodes used in calculating wake strengths\nbody_totnodes::Int : the total number of panel nodes comprising the duct and centerbody geometry\nwake_nodemap::Matrix{Int} : an index map of wake panel to the associated node indices\nwake_endnodeidxs::Matrix{Int} : the node indices of the start and end of the wake sheets.\nwake_panel_sheet_be_map::Matrix{Int} : An index map from the wake panels to the nearest ahead rotor blade element along the wake sheets\nwake_node_sheet_be_map::Matrix{Int} : An index map from the wake nodes to the nearest ahead rotor blade element along the wake sheets\nwake_node_ids_along_casing_wake_interface::type : An index map indicating which wake nodes interface with the duct wall\nwake_node_ids_along_centerbody_wake_interface::type : An index map indicating which wake nodes interface with the centerbody wall\n\n\n\n\n\nfunction initialize_strengths!(\n solver_options::CSORSolverOptions,\n Gamr,\n sigr,\n gamw,\n solve_containers,\n operating_point,\n blade_elements,\n wakeK,\n wake_nodemap,\n wake_endnodeidxs,\n wake_panel_sheet_be_map,\n wake_node_sheet_be_map,\n wake_node_ids_along_casing_wake_interface,\n wake_node_ids_along_centerbody_wake_interface;\n niter=10,\n rlx=0.5,\n)\n\nRefactored from DFDC SUBROUTINE ROTINITBLD\n\nFrom the subroutine notes: Sets reasonable initial circulation using current rotor blade geometry (chord, beta). Initial circulations are set w/o induced effects An iteration is done using the self-induced velocity from momentum theory to converge an approximate induced axial velocity\n\nArguments\n\nsolver_options::SolverOptionsType : solver options type for dispatch\nGamr::Vector{Float} : Rotor circulation state variables (modified in place)\nsigr::Vector{Float} : Rotor panel strength state variables (modified in place)\ngamw::Vector{Float} : Wake panel strength state variables (modified in place)\noperating_point::OperatingPoint : an OperatingPoint object\nblade_elements::NamedTuple : A named tuple containing the blade element geometry and airfoil information.\nwakeK::Vector{Float} : geometric constants of wake nodes used in calculating wake strengths\nwake_nodemap::Matrix{Int} : an index map of wake panel to the associated node indices\nwake_endnodeidxs::Matrix{Int} : the node indices of the start and end of the wake sheets.\nwake_panel_sheet_be_map::Matrix{Int} : An index map from the wake panels to the nearest ahead rotor blade element along the wake sheets\nwake_node_sheet_be_map::Matrix{Int} : An index map from the wake nodes to the nearest ahead rotor blade element along the wake sheets\nwake_node_ids_along_casing_wake_interface::type : An index map indicating which wake nodes interface with the duct wall\nwake_node_ids_along_centerbody_wake_interface::type : An index map indicating which wake nodes interface with the centerbody wall\n\nKeyword Arguments\n\nrlx::Float=0.5 : factor for under-relaxation to reduce transients in CL\n\nReturns\n\n\n\n\n\n","category":"function"},{"location":"C4Blade/airfoil_types/CCBlade/#CCBlade-Airfoil-Types","page":"CCBlade Airfoil Types","title":"CCBlade Airfoil Types","text":"","category":"section"},{"location":"C4Blade/airfoil_types/CCBlade/","page":"CCBlade Airfoil Types","title":"CCBlade Airfoil Types","text":"DuctAPE includes all the airfoil types and methods available in CCBlade. We repeat them here for convenience, but refer the user to the CCBlade documentation for more context if advanced usage is desired.","category":"page"},{"location":"C4Blade/airfoil_types/CCBlade/","page":"CCBlade Airfoil Types","title":"CCBlade Airfoil Types","text":"Modules = [DuctAPE.C4Blade]\nPages = [\"C4Blade/airfoils.jl\"]","category":"page"},{"location":"C4Blade/airfoil_types/CCBlade/#DuctAPE.C4Blade.AlphaAF","page":"CCBlade Airfoil Types","title":"DuctAPE.C4Blade.AlphaAF","text":"AlphaAF(alpha, cl, cd, info, Re, Mach)\nAlphaAF(alpha, cl, cd, info, Re=0.0, Mach=0.0)\nAlphaAF(alpha, cl, cd, info=\"CCBlade generated airfoil\", Re=0.0, Mach=0.0)\nAlphaAF(filename::String; radians=true)\n\nAirfoil data that varies with angle of attack. Data is fit with an Akima spline.\n\nArguments:\n\nalpha::Vector{Float64}: angles of attack\ncl::Vector{Float64}: corresponding lift coefficients\ncd::Vector{Float64}: corresponding drag coefficients\ninfo::String: a description of this airfoil data (just informational)\nRe::Float64: Reynolds number data was taken at (just informational)\nMach::Float64: Mach number data was taken at (just informational)\n\nor\n\na file\n\nArguments:\n\nfilename::String: name/path of file to read in\nradians::Bool: true if angle of attack in file is given in radians\n\n\n\n\n\n","category":"type"},{"location":"C4Blade/airfoil_types/CCBlade/#DuctAPE.C4Blade.AlphaMachAF","page":"CCBlade Airfoil Types","title":"DuctAPE.C4Blade.AlphaMachAF","text":"AlphaMachAF(alpha, Mach, cl, cd, info, Re)\nAlphaMachAF(alpha, Mach, cl, cd, info)\nAlphaMachAF(alpha, Mach, cl, cd)\nAlphaMachAF(filenames::Vector{String}; radians=true)\n\nAirfoil data that varies with angle of attack and Mach number. Data is fit with a recursive Akima spline.\n\nArguments:\n\nalpha::Vector{Float64}: angles of attack\nMach::Vector{Float64}: Mach numbers\ncl::Matrix{Float64}: lift coefficients where cl[i, j] corresponds to alpha[i], Mach[j]\ncd::Matrix{Float64}: drag coefficients where cd[i, j] corresponds to alpha[i], Mach[j]\ninfo::String: a description of this airfoil data (just informational)\nRe::Float64: Reynolds number data was taken at (just informational)\n\nor\n\nfilenames with one file per Mach number.\n\nArguments:\n\nfilenames::Vector{String}: name/path of files to read in, each at a different Mach number in ascending order\nradians::Bool: true if angle of attack in file is given in radians\n\n\n\n\n\n","category":"type"},{"location":"C4Blade/airfoil_types/CCBlade/#DuctAPE.C4Blade.AlphaReAF","page":"CCBlade Airfoil Types","title":"DuctAPE.C4Blade.AlphaReAF","text":"AlphaReAF(alpha, Re, cl, cd, info, Mach)\nAlphaReAF(alpha, Re, cl, cd, info)\nAlphaReAF(alpha, Re, cl, cd)\nread_AlphaReAF(filenames::Vector{String}; radians=true)\n\nAirfoil data that varies with angle of attack and Reynolds number. Data is fit with a recursive Akima spline.\n\nArguments:\n\nalpha::Vector{Float64}: angles of attack\nRe::Vector{Float64}: Reynolds numbers\ncl::Matrix{Float64}: lift coefficients where cl[i, j] corresponds to alpha[i], Re[j]\ncd::Matrix{Float64}: drag coefficients where cd[i, j] corresponds to alpha[i], Re[j]\ninfo::String: a description of this airfoil data (just informational)\nMach::Float64: Mach number data was taken at (just informational)\n\nor\n\nfilenames with one file per Reynolds number.\n\nArguments:\n\nfilenames::Vector{String}: name/path of files to read in, each at a different Reynolds number in ascending order\nradians::Bool: true if angle of attack in file is given in radians\n\n\n\n\n\n","category":"type"},{"location":"C4Blade/airfoil_types/CCBlade/#DuctAPE.C4Blade.AlphaReMachAF","page":"CCBlade Airfoil Types","title":"DuctAPE.C4Blade.AlphaReMachAF","text":"AlphaReMachAF(alpha, Re, Mach, cl, cd, info)\nAlphaReMachAF(alpha, Re, Mach, cl, cd)\nAlphaReMachAF(filenames::Matrix{String}; radians=true)\n\nAirfoil data that varies with angle of attack, Reynolds number, and Mach number. Data is fit with a recursive Akima spline.\n\nArguments:\n\nalpha::Vector{Float64}: angles of attack\nRe::Vector{Float64}: Reynolds numbers\nMach::Vector{Float64}: Mach numbers\ncl::Array{Float64}: lift coefficients where cl[i, j, k] corresponds to alpha[i], Re[j], Mach[k]\ncd::Array{Float64}: drag coefficients where cd[i, j, k] corresponds to alpha[i], Re[j], Mach[k]\ninfo::String: a description of this airfoil data (just informational)\n\nor files with one per Re/Mach combination\n\nArguments:\n\nfilenames::Matrix{String}: name/path of files to read in. filenames[i, j] corresponds to Re[i] Mach[j] with Reynolds number and Mach number in ascending order.\nradians::Bool: true if angle of attack in file is given in radians\n\n\n\n\n\n","category":"type"},{"location":"C4Blade/airfoil_types/CCBlade/#DuctAPE.C4Blade.DuSeligEggers","page":"CCBlade Airfoil Types","title":"DuctAPE.C4Blade.DuSeligEggers","text":"DuSeligEggers(a, b, d, m, alpha0)\nDuSeligEggers(a=1.0, b=1.0, d=1.0, m=2*pi, alpha0=0.0) # uses defaults\n\nDuSelig correction for lift an Eggers correction for drag.\n\nArguments:\n\na, b, d::Float64: parameters in Du-Selig paper. Normally just 1.0 for each.\nm::Float64: lift curve slope. Defaults to 2 pi for zero argument version.\nalpha0::Float64: zero-lift angle of attack. Defaults to 0 for zero argument version.\n\n\n\n\n\n","category":"type"},{"location":"C4Blade/airfoil_types/CCBlade/#DuctAPE.C4Blade.PrandtlTip","page":"CCBlade Airfoil Types","title":"DuctAPE.C4Blade.PrandtlTip","text":"PrandtlTip()\n\nStandard Prandtl tip loss correction.\n\n\n\n\n\n","category":"type"},{"location":"C4Blade/airfoil_types/CCBlade/#DuctAPE.C4Blade.PrandtlTipHub","page":"CCBlade Airfoil Types","title":"DuctAPE.C4Blade.PrandtlTipHub","text":"PrandtlTipHub()\n\nStandard Prandtl tip loss correction plus hub loss correction of same form.\n\n\n\n\n\n","category":"type"},{"location":"C4Blade/airfoil_types/CCBlade/#DuctAPE.C4Blade.SimpleAF","page":"CCBlade Airfoil Types","title":"DuctAPE.C4Blade.SimpleAF","text":"SimpleAF(m, alpha0, clmax, clmin, cd0, cd2)\n\nA simple parameterized lift and drag curve.\n\ncl = m (alpha - alpha0) (capped by clmax/clmin)\ncd = cd0 + cd2 * cl^2\n\nArguments:\n\nm::Float64: lift curve slope\nalpha0::Float64: zero-lift angle of attack\nclmax::Float64: maximum lift coefficient\nclmin::Float64: minimum lift coefficient\ncd0::Float64: zero lift drag\ncd2::Float64: quadratic drag term\n\n\n\n\n\n","category":"type"},{"location":"C4Blade/airfoil_types/CCBlade/#DuctAPE.C4Blade.SkinFriction","page":"CCBlade Airfoil Types","title":"DuctAPE.C4Blade.SkinFriction","text":"SkinFriction(Re0, p)\n\nSkin friction model for a flat plate. cd *= (Re0 / Re)^p\n\nArguments:\n\nRe0::Float64: reference Reynolds number (i.e., no corrections at this number)\np::Float64: exponent in flat plate model. 0.5 for laminar (Blasius solution), ~0.2 for fully turbulent (Schlichting empirical fit)\n\n\n\n\n\n","category":"type"},{"location":"C4Blade/airfoil_types/CCBlade/#DuctAPE.C4Blade.afeval-Tuple{DuctAPE.C4Blade.AFType, Any, Any, Any}","page":"CCBlade Airfoil Types","title":"DuctAPE.C4Blade.afeval","text":"afeval(af::AFType, alpha, Re, Mach)\n\nEvaluate airfoil aerodynamic performance\n\nArguments:\n\naf::AFType or Function: dispatch on AFType or if function call: cl, cd = af(alpha, Re, Mach)\nalpha::Float64: angle of attack in radians\nRe::Float64: Reynolds number\nMach::Float64: Mach number\n\nReturns:\n\ncl::Float64: lift coefficient\ncd::Float64: drag coefficient\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/airfoil_types/CCBlade/#DuctAPE.C4Blade.mach_correction-Tuple{DuctAPE.C4Blade.MachCorrection, Any, Any, Any}","page":"CCBlade Airfoil Types","title":"DuctAPE.C4Blade.mach_correction","text":"mach_correction(::MachCorrection, cl, cd, Mach)\n\nMach number correction for lift/drag coefficient\n\nArguments:\n\nmc::MachCorrection: used for dispatch\ncl::Float64: lift coefficient before correction\ncd::Float64: drag coefficient before correction\nMach::Float64: Mach number\n\nReturns:\n\ncl::Float64: lift coefficient after correction\ncd::Float64: drag coefficient after correction\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/airfoil_types/CCBlade/#DuctAPE.C4Blade.mach_correction-Tuple{DuctAPE.C4Blade.PrandtlGlauert, Any, Any, Any}","page":"CCBlade Airfoil Types","title":"DuctAPE.C4Blade.mach_correction","text":"mach_correction(::PrandtlGlauert, cl, cd, Mach)\n\nPrandtl/Glauert Mach number correction for lift coefficient\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/airfoil_types/CCBlade/#DuctAPE.C4Blade.parsefile-Tuple{Any, Any}","page":"CCBlade Airfoil Types","title":"DuctAPE.C4Blade.parsefile","text":"A basic airfoil file format. nheader is the number of header lines, which will be skipped. For one Reynolds/Mach number. Additional data like cm is optional but will be ignored.\n\nformat:\n\ninformational header\n\nRe\n\nMach\n\nalpha1 cl1 cd1 ...\n\nalpha2 cl2 cd2\n\nalpha3 cl3 cd3\n\n...\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/airfoil_types/CCBlade/#DuctAPE.C4Blade.re_correction-Tuple{DuctAPE.C4Blade.ReCorrection, Any, Any, Any}","page":"CCBlade Airfoil Types","title":"DuctAPE.C4Blade.re_correction","text":"re_correction(re::ReCorrection, cl, cd, Re)\n\nReynolds number correction for lift/drag coefficient\n\nArguments:\n\nre::ReCorrection: used for dispatch\ncl::Float64: lift coefficient before correction\ncd::Float64: drag coefficient before correction\nRe::Float64: Reynolds number\n\nReturns:\n\ncl::Float64: lift coefficient after correction\ncd::Float64: drag coefficient after correction\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/airfoil_types/CCBlade/#DuctAPE.C4Blade.re_correction-Tuple{DuctAPE.C4Blade.SkinFriction, Any, Any, Any}","page":"CCBlade Airfoil Types","title":"DuctAPE.C4Blade.re_correction","text":"re_correction(sf::SkinFriction, cl, cd, Re)\n\nSkin friction coefficient correction based on flat plat drag increases with Reynolds number.\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/airfoil_types/CCBlade/#DuctAPE.C4Blade.rotation_correction","page":"CCBlade Airfoil Types","title":"DuctAPE.C4Blade.rotation_correction","text":"rotation_correction(rc::RotationCorrection, cl, cd, cr, rR, tsr, alpha, phi=alpha, alpha_max_corr=30*pi/180)\n\nRotation correction (3D stall delay).\n\nArguments:\n\nrc::RotationCorrection: used for dispatch\ncl::Float64: lift coefficient before correction\ncd::Float64: drag coefficient before correction\ncr::Float64: local chord / local radius\nrR::Float64: local radius / tip radius\ntsr::Float64: local tip speed ratio (Omega r / Vinf)\nalpha::Float64: local angle of attack\nphi::Float64: local inflow angles (defaults to angle of attack is precomputing since it is only known for on-the-fly computations)\nalpha_max_corr::Float64: angle of attack for maximum correction (tapers off to zero by 90 degrees)\n\nReturns:\n\ncl::Float64: lift coefficient after correction\ncd::Float64: drag coefficient after correction\n\n\n\n\n\n","category":"function"},{"location":"C4Blade/airfoil_types/CCBlade/#DuctAPE.C4Blade.tip_correction-Tuple{DuctAPE.C4Blade.TipCorrection, Vararg{Any, 5}}","page":"CCBlade Airfoil Types","title":"DuctAPE.C4Blade.tip_correction","text":"tip_correction(::TipCorrection, r, Rhub, Rtip, phi, B)\n\nTip corrections for 3D flow.\n\nArguments:\n\ntc::TipCorrection: used for dispatch\nr::Float64: local radius\nRhub::Float64: hub radius\nRtip::Float64: tip radius\nphi::Float64: inflow angle\nB::Integer: number of blades\n\nReturns:\n\nF::Float64: tip loss factor to multiple against loads.\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/airfoil_types/CCBlade/#DuctAPE.C4Blade.viterna","page":"CCBlade Airfoil Types","title":"DuctAPE.C4Blade.viterna","text":"viterna(alpha, cl, cd, cr75, nalpha=50)\n\nViterna extrapolation. Follows Viterna paper and somewhat follows NREL version of AirfoilPrep, but with some modifications for better robustness and smoothness.\n\nArguments:\n\nalpha::Vector{Float64}: angles of attack\ncl::Vector{Float64}: correspnding lift coefficients\ncd::Vector{Float64}: correspnding drag coefficients\ncr75::Float64: chord/Rtip at 75% Rtip\nnalpha::Int64: number of discrete points (angles of attack) to include in extrapolation\n\nReturns:\n\nalpha::Vector{Float64}: angle of attack from -pi to pi\ncl::Vector{Float64}: correspnding extrapolated lift coefficients\ncd::Vector{Float64}: correspnding extrapolated drag coefficients\n\n\n\n\n\n","category":"function"},{"location":"C4Blade/airfoil_types/CCBlade/#DuctAPE.C4Blade.write_af-Tuple{Any, DuctAPE.C4Blade.AlphaAF}","page":"CCBlade Airfoil Types","title":"DuctAPE.C4Blade.write_af","text":"write_af(filename(s), af::AFType; radians=true)\n\nWrite airfoil data to file\n\nArguments:\n\nfilename(s)::String or Vector{String} or Matrix{String}: name/path of file to write to\naf::AFType: writing is dispatched based on type (AlphaAF, AlphaReAF, etc.)\nradians::Bool: true if you want angle of attack to be written in radians\n\n\n\n\n\n","category":"method"},{"location":"DuctAPE/api/private_prelims/#Option-Types","page":"Prelims","title":"Option Types","text":"","category":"section"},{"location":"DuctAPE/api/private_prelims/","page":"Prelims","title":"Prelims","text":"DuctAPE.DFDC_options\nDuctAPE.ConvergenceType\nDuctAPE.Relative\nDuctAPE.Absolute\nDuctAPE.SolverOptionsType\nDuctAPE.ExternalSolverOptions\nDuctAPE.PolyAlgorithmOptions\nDuctAPE.GridSolverOptionsType\nDuctAPE.IntegrationMethod","category":"page"},{"location":"DuctAPE/api/private_prelims/#DuctAPE.DFDC_options","page":"Prelims","title":"DuctAPE.DFDC_options","text":"function DFDC_options(;\n grid_solver_options=SLORGridSolverOptions(),\n solver_options=CSORSolverOptions(),\n kwargs...,\n)\n\nConvenience function to select options used in DFDC.\n\n\n\n\n\nfunction DFDC_options(\n multipoint;\n grid_solver_options=SLORGridSolverOptions(),\n solver_options=CSORSolverOptions(),\n kwargs...,\n)\n\nConvenience function to select options used in DFDC and run multipoint analysis.\n\nArguments\n\nmultipoint::Vector : doesn't need to be anything but a vector of the length of multipoints.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_prelims/#DuctAPE.ConvergenceType","page":"Prelims","title":"DuctAPE.ConvergenceType","text":"abstract type ConvergenceType\n\nUsed in dispatching the CSOR (controlled successive over relaxation) residual as relative or absolute.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/private_prelims/#DuctAPE.Relative","page":"Prelims","title":"DuctAPE.Relative","text":"struct Relative <: ConvergenceType\n\nUsed to dispatch the relative residual for CSOR (controlled successive over relaxation) method\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/private_prelims/#DuctAPE.Absolute","page":"Prelims","title":"DuctAPE.Absolute","text":"struct Absolute <: ConvergenceType\n\nUsed to dispatch the absolute residual for CSOR (controlled successive over relaxation) method\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/private_prelims/#DuctAPE.SolverOptionsType","page":"Prelims","title":"DuctAPE.SolverOptionsType","text":"abstract type SolverOptionsType\n\nUsed for solver dispatch.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/private_prelims/#DuctAPE.ExternalSolverOptions","page":"Prelims","title":"DuctAPE.ExternalSolverOptions","text":"abstract type ExternalSolverOptions <: SolverOptionsType\n\nUsed for solver dispatch.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/private_prelims/#DuctAPE.PolyAlgorithmOptions","page":"Prelims","title":"DuctAPE.PolyAlgorithmOptions","text":"abstract type PolyAlgorithmOptions <: SolverOptionsType\n\nUsed for solver dispatch.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/private_prelims/#DuctAPE.GridSolverOptionsType","page":"Prelims","title":"DuctAPE.GridSolverOptionsType","text":"abstract type GridSolverOptionsType\n\nUsed for elliptic grid solver dispatch\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/private_prelims/#DuctAPE.IntegrationMethod","page":"Prelims","title":"DuctAPE.IntegrationMethod","text":"abstract type IntegrationMethod\n\nUsed in integration method dispatch\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/private_prelims/#Bookkeeping","page":"Prelims","title":"Bookkeeping","text":"","category":"section"},{"location":"DuctAPE/api/private_prelims/","page":"Prelims","title":"Prelims","text":"DuctAPE.get_problem_dimensions","category":"page"},{"location":"DuctAPE/api/private_prelims/#DuctAPE.get_problem_dimensions","page":"Prelims","title":"DuctAPE.get_problem_dimensions","text":"get_problem_dimensions(paneling_constants::PanelingConstants)\nget_problem_dimensions(body_vortex_panels, rotor_source_panels, wake_vortex_panels)\n\nDetermine all relevant dimensions to the problem based either on the paneling_constants or the panels themselves.\n\nArguments\n\npaneling_constants::PanelingConstants : Rotor (and possibly stator) geometric paramters.\n\nReturns\n\nproblem_dimensions::ProblemDimensions : ProblemDimensions object.\n\n\n\n\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_prelims/#Caching","page":"Prelims","title":"Caching","text":"","category":"section"},{"location":"DuctAPE/api/private_prelims/#Allocation","page":"Prelims","title":"Allocation","text":"","category":"section"},{"location":"DuctAPE/api/private_prelims/","page":"Prelims","title":"Prelims","text":"The following are various helper functions used in preallocating the various caches.","category":"page"},{"location":"DuctAPE/api/private_prelims/","page":"Prelims","title":"Prelims","text":"DuctAPE.initialize_all_caches\nDuctAPE.allocate_wake_panel_container!\nDuctAPE.allocate_panel_containers!\nDuctAPE.allocate_panel_container!\nDuctAPE.allocate_body_panel_container!\nDuctAPE.allocate_rotor_panel_container!\nDuctAPE.allocate_solve_parameter_extras!\nDuctAPE.allocate_grid_parameter_cache\nDuctAPE.allocate_integration_containers","category":"page"},{"location":"DuctAPE/api/private_prelims/#DuctAPE.initialize_all_caches","page":"Prelims","title":"DuctAPE.initialize_all_caches","text":"initialize_all_caches(solver_options, paneling_constants)\n\nConvenience function to initialize all caches before calling analysis.\n\nArguments\n\nsolver_options::SolverOptionsType : solver options used for cache allocation dispatch\npaneling_constants::PanelingConstants : PanelingConstants object upon which all cache sizing depends\n\nKeyword Arguments\n\nfd_chunk_size::Int=12 : chunk size to use for PreallocationTools caches. Note that the automated chunk size for DuctAPE will always be the ForwardDiff threshold of 12 due to the size of the system, so it will be best to leave this at the default unless further development allows for chunk size selection for individual solvers.\nlevels::Int=1 : levels for nested duals. Note that since ImplicitAD is being used for all solves, there should be no need for more than 1 level.\n\nReturns\n\nprepost_container_caching::NamedTuple : A named tuple containing the PreallocationTools DiffCache and a named tuple with relevant dimensions for accessing the cache.\nsolve_parameter_caching::NamedTuple : A named tuple containing the PreallocationTools DiffCache and a named tuple with relevant dimensions for accessing the cache.\nsolve_container_caching::NamedTuple : A named tuple containing the PreallocationTools DiffCache and a named tuple with relevant dimensions for accessing the cache.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_prelims/#DuctAPE.allocate_wake_panel_container!","page":"Prelims","title":"DuctAPE.allocate_wake_panel_container!","text":"allocate_wake_panel_containers!(total_length, problem_dimensions::ProblemDimensions)\n\nA helper function is assembling the prepostcontainercache.\n\nArguments\n\ntotal_length::Vector{Int} : a one-element vector used to store the total length in order to know how large of a cache to allocate. Is updated in place.\nproblem_dimensions::ProblemDimensions : a ProblemDimensions object\n\nReturns\n\nwake_vortex_panels::NamedTuple : A named containing the dimensions needed to reshape the cache with regards to the wake vortex panel object\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_prelims/#DuctAPE.allocate_panel_containers!","page":"Prelims","title":"DuctAPE.allocate_panel_containers!","text":"allocate_panel_containers!(total_length, problem_dimensions::ProblemDimensions)\n\nA helper function is assembling the prepostcontainercache.\n\nArguments\n\ntotal_length::Vector{Int} : a one-element vector used to store the total length in order to know how large of a cache to allocate. Is updated in place.\nproblem_dimensions::ProblemDimensions : a ProblemDimensions object\n\nReturns\n\npanels::NamedTuple : A named tuple of named tuples containing the dimensions needed to reshape the cache with regards to the panel objects\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_prelims/#DuctAPE.allocate_panel_container!","page":"Prelims","title":"DuctAPE.allocate_panel_container!","text":"allocate_panel_container!(total_length, nn, np, tn, tp, nb)\n\nA helper function is assembling the prepostcontainercache.\n\nArguments\n\ntotal_length::Vector{Int} : a one-element vector used to store the total length in order to know how large of a cache to allocate. Is updated in place.\nnn::Int : number of nodes in each body, rotor, or wake sheet\nnp::Int : number of panels in each body, rotor, or wake sheet\ntn::Int : number of total nodes among the bodies, rotors, or wake sheets\ntp::Int : number of total panels among the bodies, rotors, or wake sheets\nnb::Int : number of bodies, rotors, or wake sheets\n\nReturns\n\npanel::NamedTuple : A named containing the dimensions needed to reshape the cache with regards to an arbitrary panel set\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_prelims/#DuctAPE.allocate_body_panel_container!","page":"Prelims","title":"DuctAPE.allocate_body_panel_container!","text":"allocate_body_panel_containers!(total_length, problem_dimensions::ProblemDimensions)\n\nA helper function is assembling the prepostcontainercache.\n\nArguments\n\ntotal_length::Vector{Int} : a one-element vector used to store the total length in order to know how large of a cache to allocate. Is updated in place.\nproblem_dimensions::ProblemDimensions : a ProblemDimensions object\n\nReturns\n\nbody_vortex_panels::NamedTuple : A named tuple containing the dimensions needed to reshape the cache with regards to the body vortex panel object\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_prelims/#DuctAPE.allocate_rotor_panel_container!","page":"Prelims","title":"DuctAPE.allocate_rotor_panel_container!","text":"allocate_rotor_panel_containers!(total_length, problem_dimensions::ProblemDimensions)\n\nA helper function is assembling the prepostcontainercache.\n\nArguments\n\ntotal_length::Vector{Int} : a one-element vector used to store the total length in order to know how large of a cache to allocate. Is updated in place.\nproblem_dimensions::ProblemDimensions : a ProblemDimensions object\n\nReturns\n\nrotor_source_panels::NamedTuple : A named containing the dimensions needed to reshape the cache with regards to the rotor source panel object\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_prelims/#DuctAPE.allocate_solve_parameter_extras!","page":"Prelims","title":"DuctAPE.allocate_solve_parameter_extras!","text":"allocate_solve_parameter_extras!(\n solver_options::SolverOptionsType, input_length, total_length\n)\n\nIncludes additional caching for various solvers. Currently only does anything for SIAMFANLEOptions types.\n\nArguments\n\ninput_length::Int : the number of state variables in the solver\ntotal_length::Vector{Int} : a one-element vector used to store the total length in order to know how large of a cache to allocate. Is updated in place.\n\nReturns\n\nsolve_parameter_extras::NamedTuple : A named tuple containing dimensions related to extra caching parameters used in various solvers.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_prelims/#DuctAPE.allocate_grid_parameter_cache","page":"Prelims","title":"DuctAPE.allocate_grid_parameter_cache","text":"allocate_grid_parameter_cache(pg, x, n)\n\nAllocate a cache used inside the elliptic grid solve.\n\nArguments\n\npg::AbstractArray{Float,3} : the proposed grid array\nx::AbstractVector{Float} : the array of ξ values used in the solve\nn::AbstractVector{Float} : the array of η values used in the solve\n\nReturns\n\ngrid_parameter_cache::NamedTuple : A named tuple containing the PreallocationTools DiffCache and dimensions for accessing it.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_prelims/#DuctAPE.allocate_integration_containers","page":"Prelims","title":"DuctAPE.allocate_integration_containers","text":"allocate_integration_containers(\n integration_options::IntegrationMethod, dispatch_type; cache_size=20\n)\n\nDescription\n\nArguments\n\nintegration_options::IntegrationMethod : options for integration used for dispatch and to size cache\ndispatch_type:: : an object with eltype(dispatch_type) with which to define the type for cache initialization.\n\nKeyword Arguments\n\ncache_size::Int=20 : size needed for intermediate calculations for integration.\n\nReturns\n\nintegration_containers::NamedTuple : A named tuple containing the cache(s) needed for integration.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_prelims/#Reshaping","page":"Prelims","title":"Reshaping","text":"","category":"section"},{"location":"DuctAPE/api/private_prelims/","page":"Prelims","title":"Prelims","text":"The following are used internally to reshape the cache vectors into more usable formats.","category":"page"},{"location":"DuctAPE/api/private_prelims/","page":"Prelims","title":"Prelims","text":"DuctAPE.withdraw_prepost_container_cache\nDuctAPE.withdraw_solve_parameter_cache\nDuctAPE.withdraw_solve_container_cache\nDuctAPE.withdraw_grid_parameter_cache","category":"page"},{"location":"DuctAPE/api/private_prelims/#DuctAPE.withdraw_prepost_container_cache","page":"Prelims","title":"DuctAPE.withdraw_prepost_container_cache","text":"withdraw_prepost_container_cache(vec, dims)\n\nReshape the prepost cache vector using the saved dimensions tuple.\n\nArguments\n\nvec::Vector{Float} : vector cache of pre- and post-processing intermediate containers.\ndims::NamedTuple : Named tuple containing the indices and shape of the various items stored in the cache vector.\n\nReturns\n\nprepost_container_caching::NamedTuple : Named tuple containing reshaped views of sections of the cache vector.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_prelims/#DuctAPE.withdraw_solve_parameter_cache","page":"Prelims","title":"DuctAPE.withdraw_solve_parameter_cache","text":"withdraw_solve_parameter_cache(solver_options::SolverOptionsType, vec, dims)\n\nReshape the solve parameter cache vector using the saved dimensions tuple.\n\nArguments\n\nsolver_options::SolverOptionsType : Solver options type for dispatch.\nvec::Vector{Float} : vector cache of pre- and post-processing intermediate containers.\ndims::NamedTuple : Named tuple containing the indices and shape of the various items stored in the cache vector.\n\nReturns\n\nsolve_parameter_caching::NamedTuple : Named tuple containing reshaped views of sections of the cache vector.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_prelims/#DuctAPE.withdraw_solve_container_cache","page":"Prelims","title":"DuctAPE.withdraw_solve_container_cache","text":"withdraw_solve_container_cache(solver_options::SolverOptionsType, vec, dims)\n\nReshape the intermediate solve container cache vector using the saved dimensions tuple.\n\nArguments\n\nsolver_options::SolverOptionsType : Solver options type for dispatch.\nvec::Vector{Float} : vector cache of pre- and post-processing intermediate containers.\ndims::NamedTuple : Named tuple containing the indices and shape of the various items stored in the cache vector.\n\nReturns\n\nsolve_container_caching::NamedTuple : Named tuple containing reshaped views of sections of the cache vector.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_prelims/#DuctAPE.withdraw_grid_parameter_cache","page":"Prelims","title":"DuctAPE.withdraw_grid_parameter_cache","text":"withdraw_grid_parameter_cache(vec, dims)\n\nReshape the cache used inside the elliptic grid solve.\n\nArguments\n\nvec::Vector{Float} : the cache vector\ndims::NamedTuple : the named tuple of dimensions used to reshape the cache vector\n\nReturns\n\nproposed_grid::AbstractArray{Float,3} : the proposed grid array\nxi::AbstractVector{Float} : the array of ξ values used in the solve\neta::AbstractVector{Float} : the array of η values used in the solve\n\n\n\n\n\n","category":"function"},{"location":"C4Blade/airfoil_types/DFDC/#DFDC-Airfoil-Type","page":"DFDC Airfoil Type","title":"DFDC Airfoil Type","text":"","category":"section"},{"location":"C4Blade/airfoil_types/DFDC/","page":"DFDC Airfoil Type","title":"DFDC Airfoil Type","text":"The DFDC Airfoil type is very similar to the XROTOR airfoil type, but includes additions for cascade corrections based on stagger and solidity. The cascade corrections aren't particularly accurate, but they do apply ballpark effects resulting from high solidity blade sections. The main benefit to this airfoil type is its simplicity and that the post-stall behavior is already in a format allowing more robust convergence of the DuctAPE solvers.","category":"page"},{"location":"C4Blade/airfoil_types/DFDC/","page":"DFDC Airfoil Type","title":"DFDC Airfoil Type","text":"DuctAPE.C4Blade.DFDCairfoil","category":"page"},{"location":"C4Blade/airfoil_types/DFDC/#DuctAPE.C4Blade.DFDCairfoil","page":"DFDC Airfoil Type","title":"DuctAPE.C4Blade.DFDCairfoil","text":"Fields:\n\nalpha0::Float : zero lift angle of attack\nclmax::Float : maximum cl\nclmin::Float : minimum cl\ndclda::Float : lift curve slope (1/radians)\ndclda_stall::Float : lift curve slope post-stall (1/radians)\ndcl_stall::Float : cl increment from initial to total stall.\ncdmin::Float : minimum cd\ncldmin::Float : cl at cdmin\ndcddcl2::Float : quadratic curve factor for cl vs cd curve left(fracd(c_d)d(c_l^2)right)\ncmcon::Float : pitching moment constant (unused right now)\nRe_ref::Float : reference Reynolds number at which cd values apply\nRe_exp::Float : Reynolds number exponent scaling left( c_d = c_d(ReRe_ref)^Re_expright) should be 0.2 for fully laminar and 0.5 for fully turbulent\nmcrit::Float : critical Mach number\ncorrect_for_mach::Bool : flag to add Prandtl-Glauert correction\ncorrect_for_cascade::Bool : flag to add cascade corrections\ncorrect_for_reynolds::Bool : flag to add reynolds drag correction\ncorrect_for_transonic::Bool : flag to add drag correction above critical mach number\n\n\n\n\n\n","category":"type"},{"location":"C4Blade/airfoil_types/actuator_disk/#Actuator-Disk-Type","page":"Actuator Disk Type","title":"Actuator Disk Type","text":"","category":"section"},{"location":"C4Blade/airfoil_types/actuator_disk/","page":"Actuator Disk Type","title":"Actuator Disk Type","text":"warning: Warning\nActuator disk types are currently in development and not ready for general use.","category":"page"},{"location":"C4Blade/airfoil_types/actuator_disk/","page":"Actuator Disk Type","title":"Actuator Disk Type","text":"DuctAPE currently implements an actuator disk type that can be used to directly define the rotor blade circulation.","category":"page"},{"location":"C4Blade/airfoil_types/actuator_disk/","page":"Actuator Disk Type","title":"Actuator Disk Type","text":"DuctAPE.C4Blade.ADM","category":"page"},{"location":"C4Blade/airfoil_types/actuator_disk/#DuctAPE.C4Blade.ADM","page":"Actuator Disk Type","title":"DuctAPE.C4Blade.ADM","text":"Fields:\n\nprescribed_circulation::Float=0.0 : Prescribed circulation strength\nprescribed_source_strength::Float=0.0 : Prescribed source panel strength\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/api/private_api/#Private-API","page":"Private API","title":"Private API","text":"","category":"section"},{"location":"DuctAPE/api/private_api/","page":"Private API","title":"Private API","text":"Pages = [\"private_api.md\",\n\"private_prelims.md\",\n\"private_preprocess.md\",\n\"private_process.md\",\n\"private_postprocess.md\",\n\"private_utlities.md\"]\nDepth = 5","category":"page"},{"location":"DuctAPE/advanced_usage/option/#Advanced-Option-Selection","page":"Options","title":"Advanced Option Selection","text":"","category":"section"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"DuctAPE has been written in an attempt to make as many of the available options exposed to the user as possible. This means that there are quite a few options to select from if not using the option convenience functions. To help the user, the majority of overarching option types are defined using the @kwdef macro and have default values that should be reasonable in most cases. We will introduce some of the available options here that may be of common interest.","category":"page"},{"location":"DuctAPE/advanced_usage/option/#General-Option-Selection","page":"Options","title":"General Option Selection","text":"","category":"section"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"In general, options are all accessed through the options argument of the analysis function being called. Said options are passed via an Options struct.","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"DuctAPE.Options","category":"page"},{"location":"DuctAPE/advanced_usage/option/#DuctAPE.Options-DuctAPE-advanced_usage-option","page":"Options","title":"DuctAPE.Options","text":"struct Options\n\nType containing (nearly) all the available user options.\n\nFields\n\nGeneral Options\n\nverbose::Bool = false : flag to print verbose statements\nsilence_warnings::Bool = true : flag to silence warnings\nmultipoint_index::Int = [1] : holds current index of multi-point solver (no need for user to change this usually)\n\nPre-processing Options\n\nGeometry interpolation and generation options :\n\nfinterp::Interplation Method = FLOWMath.akima : interpolation method used for re-paneling bodies\nautoshiftduct::Bool = true : flag as to whether duct geometry should be shifted based on rotor tip location\nlu_decomp_flag::Bool = false : flag indicating if panel method LHS matrix factorization was successful\n\npaneling options\n\nitcpshift::Float = 0.05 : factor for internal trailing edge psuedo-panel placement (default is DFDC hard-coded value)\naxistol::Float = 1e-15 : tolerance for how close the the axis of rotation should be considered on the axis\ntegaptol::Float = 1e1 * eps() : tolerance for how large of a trailing edge gap should be considered a gap\n\nIntegration Options\n\nintegration_options::IntegrationOptions type = IntegrationOptions() : integration options\n\nPost-processing Options\n\nwrite_outputs::AbstractArray{Bool} = [false] : Bool for whether to write the outputs of the analysis to an external file (slow)\noutfile::AbstractArray{String} = [\"outputs.jl\"] : External output file name (including path information) for files to write\ncheckoutfileexists::Bool = false : Flag for whether to check if file exists before overwriting\noutput_tuple_name::AbstractArray{String} = [\"outs\"] : variable name for named tuple written to out file\n\nSolving Options\n\ngrid_solver_options::GridSolverOptionsType = GridSolverOptions() : elliptic grid solver options\nsolver_options::SolverOptionsType = ChainSolverOptions() : solver options\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"Options are selected through the set_options function","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"DuctAPE.set_options","category":"page"},{"location":"DuctAPE/advanced_usage/option/#DuctAPE.set_options-DuctAPE-advanced_usage-option","page":"Options","title":"DuctAPE.set_options","text":"set_options(; kwargs...)\nset_options(multipoint; kwargs...)\n\nSet the options for DuctAPE to use.\n\nNote that the vast majority of the available options are defined through keyword arguments. See the documentation for the various option types for more information.\n\nArguments\n\nmultipoint::AbstractArray{OperatingPoint} : a vector of operating points to use if running a multi-point analysis.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"There are three main sub-option objects for quadrature, wake geometry solver, and aerodyanmic solver; these are explained in more detail below. In addition, there are various options for pre- and post-processing as well as miscellaneous options for things such as supressing warnings and printing verbose statements throughout the analysis, which can be seen in the docstring above.","category":"page"},{"location":"DuctAPE/advanced_usage/option/#Quadrature","page":"Options","title":"Quadrature","text":"","category":"section"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"There are several implementations for different quadrature approaches depending on user desires; they include:","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"Gauss-Legendre quadature (default),\nGauss-Kronrod Quadrature, and\nRomberg Quadrature methods.","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"The default method is Gauss-Legendre quadrature using 8 sample points for both the nominal and singular integrals. To modify the quadrature methods and settings, an IntegrationOptions struct needs to be passed to the set_options method.","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"DuctAPE.IntegrationOptions","category":"page"},{"location":"DuctAPE/advanced_usage/option/#DuctAPE.IntegrationOptions-DuctAPE-advanced_usage-option","page":"Options","title":"DuctAPE.IntegrationOptions","text":"struct IntegrationOptions\n\nA struct used to hold the integration options for both the nominal and singular cases.\n\nFields\n\nnominal::IntegrationMethod=GaussLegendre(8) : the integration options to use for the nominal case.\nsingular::IntegrationMethod=GaussLegendre(8) : the integration options to use for the self-induced case.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"The IntegraionOptions type takes in two objects of type IntegrationMethod, one for the nominal integrals, and one for the singular integrals. These methods can be mixed and matched between quadrature methods as well as settings.","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"For example, if one wanted to use a 10-point Gauss-Legendre method for the nominal integrals, and a order 7 Gauss-Kronrod method with an absolute tolerance of 2e-16 the following would need to be included in the set_options call:","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"# set nominal options using a GaussLegendre object (which is an InterationMethod type)\n# note that a convenience method is used here that takes in the number of points and\n#calculates the appropriate sample locations and weights.\nnominal_integration_method = DuctAPE.GaussLegendre(10)\n\n# set singular options using a GaussKronrod object (which is an InterationMethod type)\n# note that like most option structs, these are defined using @kwdef allowing the fields\n#to be treated as keyword arguments.\n# also note that we haven't changed the evaluation limit (default 10^7)\nsingular_integration_method = DuctAPE.GaussKronrod(; order=7, atol=2e-16)\n\n# put the quadrature options together\nintegration_options = DuctAPE.IntegrationOptions(;\n nominal=nominal_integration_method, singular=singular_integration_method\n)\n\n# example of calling the set_options function\noptions = DuctAPE.set_options(; integration_options=integration_options)","category":"page"},{"location":"DuctAPE/advanced_usage/option/#Elliptic-Grid-Solvers","page":"Options","title":"Elliptic Grid Solvers","text":"","category":"section"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"As part of the pre-process, an elliptic grid defining the wake geometry is solved with a system of Poisson equations. For this solve there currently two options:","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"SLOR: DFDC grid solver\nSLOR+Newton","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"The SLOR (successive line over relaxation) is the method employed by DFDC, and can be used by itself, or as a preconditioner to a Newton solve (using NLsolve.jl).","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"Selection of solver and solver settings follows the same pattern as with the quadrature settings, in that the user must pass the appropriate GridSolverOptionsType into the set_options call.","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"For the SLOR method alone, the type is","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"DuctAPE.SLORGridSolverOptions","category":"page"},{"location":"DuctAPE/advanced_usage/option/#DuctAPE.SLORGridSolverOptions-DuctAPE-advanced_usage-option","page":"Options","title":"DuctAPE.SLORGridSolverOptions","text":"struct SLORGridSolverOptions <: GridSolverOptionsType\n\nOptions for SLOR (successive line over relaxation) elliptic grid solver.\n\nFields\n\niteration_limit::Int = 100 : maximum number of iterations\natol::Float = 1e-9 : absolute convergence tolerance\nconverged::AbstractArray{Bool} = [false]\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"And for the SLOR+Newton method, the type is","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"DuctAPE.GridSolverOptions","category":"page"},{"location":"DuctAPE/advanced_usage/option/#DuctAPE.GridSolverOptions-DuctAPE-advanced_usage-option","page":"Options","title":"DuctAPE.GridSolverOptions","text":"struct GridSolverOptions <: GridSolverOptionsType\n\nOptions for SLOR + Newton elliptic grid solver.\n\nFields\n\niteration_limit::Int = 10 : maximum number of iterations\natol::Float = 1e-14 : absolute convergence tolerance\nalgorithm::Symbol = :newton : algorithm to use in NLsolve.jl\nautodiff::Symbol = :forward : differentiation method to use in NLsolve.jl\nconverged::AbstractArray{Bool} = [false]\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"As an example, this is the input that would be required to use the SLOR+Newton method with an absolute convergence tolerance of 1e-12, and also including the quadrature settings from above:","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"# define wake grid solver settings\nwake_solve_options = DuctAPE.GridSolverOptions(; atol=1e-12)\n\n# set all options\noptions = DuctAPE.set_options(;\n integration_options=integration_options, grid_solver_options=wake_solve_options\n)","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"note: Convergence Flags\nThe convergence flags default to false, and in general should be left alone as they are modified in-place in the various solves by the analysis.","category":"page"},{"location":"DuctAPE/advanced_usage/option/#Aerodynamics-Solvers","page":"Options","title":"Aerodynamics Solvers","text":"","category":"section"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"There are two general types of solvers available in DuctAPE, the first is very similar to the solver in DFDC and converges a residual very similar to DFDC's. The other type is for external solvers that converge an alternate residual that is default in DuctAPE. The various solver options include:","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"CSOR: the DFDC solver\nFixedPoint.jl\nSpeedMapping.jl\nMINPACK.jl\nSIAMFANLEquations.jl\nNLsolve.jl\nSimpleNonlinearSolve.jl","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"Note that the CSOR, FixedPoint.jl, and SpeedMapping.jl are all different fixed-point iteration solvers, MINPACK.jl and SIAMFANLEquations.jl are primarily quasi-newton solvers, and NLsolve.jl and SimpleNonlinearSolve.jl have various solver options.","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"DuctAPE also has some poly-algorithm solvers that employ more than one solver. The Chain Solver option is the default which starts with a fixed-point iteration, and if it doesn't converge, moves on to a quasi-, then full Newton solver until either convergence is reached, or no convergence is found. The other poly-algorithm that is available, but is less robust is the Composite Solver which partially converges with one solver, and finishes with another.","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"Each of the solve methods have a variety of different settings associated with them, detailed in their respective docstrings. The following example should contain all the principles required to be able to adapt to the most complex use cases.","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"# Define settings for NLsolve's newton method\naero_solver_options = DuctAPE.NLsolveOptions(;\n algorithm=:newton,\n atol=1e-10,\n iteration_limite=30,\n linesearch_method=LineSearches.BackTracking, #don't include parentheses on method handle\n linesearch_kwargs=(; order=3, maxstep=1e6),\n additional_kwargs=(; autoscale=false),\n)\n\n# set all the options\nDuctAPE.set_options(;\n integration_options=integration_options,\n grid_solver_options=wake_solve_options,\n solver_options=aero_solver_options,\n)","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"note: Iteration Counters\nThe iterations field (not to be confused with the iterations_limit field) in the solver options should generally not be changed. They automatically save (in-place) the number of iterations the solver performs and can be accessed after the analysis is run.","category":"page"},{"location":"DuctAPE/advanced_usage/option/#Advanced-Options-for-Multi-point-analyses","page":"Options","title":"Advanced Options for Multi-point analyses","text":"","category":"section"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"For using advanced options in multi-point analyses, there are various changes that need to be made to avoid run-time errors. Here is an example for setting options with the CSOR solver.","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"# number of operating points to analyze\nnop = 3\n\noptions = DuctAPE.set_options(;\n solver_options=DuctAPE.CSORSolverOptions(;\n converged=fill(false, (1, nop)), # need a convergence flag for each operating point\n iterations=zeros(Int, (1, nop)), # need a iteration count for each operating point\n Vconv=ones(nop), # in this case, we need a reference velocity for each operating point\n ),\n write_outputs=fill(false, nop), # we need to know which of the operating point outputs to write\n outfile=fill(\"\", nop), # we need to include names, even if they won't be used.\n output_tuple_name=fill(\"outs\", nop), # we need to include names, even if they won't be used.\n)","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"If using a poly-algorithm with a multi-point solve, then each of the solvers needs to have the multiple converged and iterations fields for each operating point, and the overall solve type needs to have a converged and iterations field for each solver and each operating point.","category":"page"},{"location":"DuctAPE/advanced_usage/option/","page":"Options","title":"Options","text":"options = DuctAPE.set_options(;\n solver_options=DuctAPE.ChainSolverOptions(;\n solvers=[ # vector of solvers to use in poly-algorithm\n DuctAPE.NLsolveOptions(;\n algorithm=:anderson,\n atol=1e-12,\n iteration_limit=200,\n converged=fill(false, (1, nop)), # flags for each operating point\n iterations=zeros(Int, (1, nop)), # counters for each operating point\n ),\n DuctAPE.MinpackOptions(;\n atol=1e-12,\n iteration_limit=100,\n converged=fill(false, (1, nop)),\n iterations=zeros(Int, (1, nop)),\n ),\n ],\n converged=fill(false, (2, nop)), # flags for each solver and each operating point\n iterations=zeros(Int, (2, nop)), # counts for each solver and each operating point\n ),\n)","category":"page"},{"location":"C4Blade/airfoil_types/cascade/#Cascade-Types","page":"Cascade Types","title":"Cascade Types","text":"","category":"section"},{"location":"C4Blade/airfoil_types/cascade/","page":"Cascade Types","title":"Cascade Types","text":"warning: Warning\nCascade types are currently in development and not ready for general use.","category":"page"},{"location":"C4Blade/airfoil_types/cascade/","page":"Cascade Types","title":"Cascade Types","text":"Cascade types are defined analogous to CCBlade airfoil types. Instead of angle of attack, however, cascade types take in both inflow and stagger angles. In addition, cascade types are dependent on local solidity.","category":"page"},{"location":"C4Blade/airfoil_types/cascade/","page":"Cascade Types","title":"Cascade Types","text":"Modules = [DuctAPE.C4Blade]\nPages = [\"C4Blade/cascades.jl\"]","category":"page"},{"location":"C4Blade/airfoil_types/cascade/#DuctAPE.C4Blade.InReStSoMaCAS","page":"Cascade Types","title":"DuctAPE.C4Blade.InReStSoMaCAS","text":"InReStSoMaCAS(inflow, Re, stagger, solidity, Mach, cl, cd, info)\nInReStSoMaCAS(inflow, Re, stagger, solidity, Mach, cl, cd)\nInReStSoMaCAS(filenames::Matrix{String}; radians=true)\n\nData is fit recursively with Akima splines.\n\nArguments:\n\ninflow::Vector{Float64}: inflow angles\nRe::Vector{Float64}: Reynolds numbers\nstagger::Vector{Float64}: stagger angles\nsolidity::Vector{Float64}: local solidity\nMach::Vector{Float64}: Mach numbers\ncl::Array{Float64}: lift coefficients where cl[i, j, k, ell] corresponds to stagger[i], Re[j], Mach[k], solidity[ell]\ncd::Array{Float64}: drag coefficients where cd[i, j, k, ell] corresponds to stagger[i], Re[j], Mach[k], solidity[ell]\ninfo::String: a description of this airfoil data (just informational)\n\nor files with one per Re/Stagger/Solidty/Mach combination\n\nArguments:\n\nfilenames::Matrix{String}: name/path of files to read in. filenames[i, j, k, ell] corresponds to Re[i] Stagger[j] Stagger[k] and Solidity[k] with each in ascending order.\nradians::Bool: true if angle of attack in file is given in radians\n\n\n\n\n\n","category":"type"},{"location":"C4Blade/airfoil_types/cascade/#DuctAPE.C4Blade.interp5d-NTuple{12, Any}","page":"Cascade Types","title":"DuctAPE.C4Blade.interp5d","text":" interp5d(interp1d, x1data, x2data, x3data, x4data, fdata, x1pt, x2pt, x3pt, x4pt)\n\nSame as FLOWMath.interp4d, ex1cept in five dimensions.\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/airfoil_types/cascade/#DuctAPE.C4Blade.parsecascadefile-Tuple{Any, Any}","page":"Cascade Types","title":"DuctAPE.C4Blade.parsecascadefile","text":"parsefile(filename, radians, solidity)\n\nCascade version of parsefile function from CCBlade. Assumes stagger is given before reynolds and Mach number, and solidity is given after\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/airfoil_types/cascade/#DuctAPE.C4Blade.writecascadefile-NTuple{10, Any}","page":"Cascade Types","title":"DuctAPE.C4Blade.writecascadefile","text":"writecascadefile(filename, info, Re, Mach, stagger, inflow, cl, cd, radians)\n\nCascade version of writecascadefile function from CCBlade. Writes solidity after Mach number\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/corrections/#Airfoil-Polar-Corrections","page":"Polar Modification","title":"Airfoil Polar Corrections","text":"","category":"section"},{"location":"C4Blade/corrections/","page":"Polar Modification","title":"Polar Modification","text":"In some cases various airfoil polar corrections may be required. Of specific note are modifications to airfoil polars for post-stall behavior. Thus far, DuctAPE is much more robust if the post-stall behavior in the lift polars does not exhibit a decrease in lift at angles of attack beyond that of the maximum lift coefficient. Therefore a function is provided to help modify polars as needed:","category":"page"},{"location":"C4Blade/corrections/","page":"Polar Modification","title":"Polar Modification","text":"DuctAPE.C4Blade.stall_limiters","category":"page"},{"location":"C4Blade/corrections/#DuctAPE.C4Blade.stall_limiters","page":"Polar Modification","title":"DuctAPE.C4Blade.stall_limiters","text":"stall_limiters(\n aoa,\n cl,\n cd;\n clminid=nothing,\n clmaxid=nothing,\n cl_cutoff_slope=0.1,\n cd_cutoff_slope=0.9,\n N=20,\n blend_hardness=50\n)\n\nCuts off coefficient vs alpha curve at min and max coefficient and places rest of curve from -pi to min coeff and max coeff to pi according to user defined clcutoffslope (default 0.1)\n\nArguments:\n\naoa::AbstractVector{Float} : input angles of attack, in radians\ncl::AbstractVector{Float} : input lift coefficients\ncd::AbstractVector{Float} : input drag coefficients\n\nKeyword Arguments:\n\nclminid::Float=nothing : manually set index for minimum cl\nclmaxid::Float=nothing : manually set index for maximum cl\ncl_cutoff_slope::Float=0.1 : \"post-stall\" slope for cl\ncd_cutoff_slope::Float=0.1 : \"post-stall\" slope for cd\nblend_hardness::Float=50 : hardenss of blend between nominal polar and post-stall modifications.\n\nReturns:\n\naoa_ext::AbstractVector{Float} : angles of attack for modified polar, in radians\ncl_ext::AbstractVector{Float} : modified lift coefficients\ncd_ext::AbstractVector{Float} : modified drag coefficients\n\n\n\n\n\n","category":"function"},{"location":"C4Blade/corrections/","page":"Polar Modification","title":"Polar Modification","text":"Various other correction methods are available, including the cascade corrections inherent in the DuctAPE.C4Blade.DFDCairfoil type. The following methods are in addition to the various corrections available alongside the CCBlade Airfoil Types.","category":"page"},{"location":"C4Blade/corrections/","page":"Polar Modification","title":"Polar Modification","text":"Modules = [DuctAPE.C4Blade]\nPages = [\"C4Blade/airfoil_corrections.jl\"]","category":"page"},{"location":"C4Blade/corrections/#DuctAPE.C4Blade.corrected_clcd-Tuple{DuctAPE.C4Blade.AlphaReAF, Vararg{Any, 9}}","page":"Polar Modification","title":"DuctAPE.C4Blade.corrected_clcd","text":"corrected_clcd(af::AlphaReAF, alpha, Re, Mach, solidity, stagger; kwargs...)\n\nEvaluates and applies on-the-fly corrections for airfoil lift and drag. On-the-fly airfoil polar corrections include solidity/stagger corrections, Prandtl-Glauert compressibility corrections, and transonic lift limits and drag additions.\n\ncorrected_clcd!(cl, cd, af::AlphaReAF, Re, alpha, Mach, solidity, stagger; kwargs...)\n\nEvaluates and applies on-the-fly corrections for airfoil lift and drag in place.\n\ncorrected_clcd!(cl, cd, Mach, solidity, stagger; kwargs...)\n\nApplies on-the-fly corrections for airfoil lift and drag in place.\n\ncorrected_clcd!(cl, cd, af::AlphaAF, alpha, Re, Mach, solidity, stagger; kwargs...)\n\nEvaluates and applies on-the-fly corrections, including Reynolds corrections, for airfoil lift and drag in place\n\ncorrected_clcd(cas::InReStSoMaCAS, inflow, Re, Mach, solidity, stagger)\n\nEvaluates cascade lift and drag.\n\nArguments:\n\nCoefficients\n\ncl::Float : local lift coefficient\ncd::Float : local drag coefficient\n\nAirfoil Object\n\naf::AlphaReAF : airfoil object of CCBlade type dependent on angle of attack and Reynolds number\n\nor\n\naf::AlphaAF : airfoil object of CCBlade type dependent on angle of attack only\n\nor\n\ncas::InReStSoMaCAS : cascade object depentent on inflow angle, Reynolds number, stagger, solidity, and Mach number.\n\nFlow Angle\n\nalpha::Float : angle of attack, radians. Used with airfoil types\n\nor\n\ninflow::Float : inflow angle, radians. Used with cascade types\n\nFlow Conditions\n\nRe::Float : Reynolds number\nMach::Float : Mach number\n\nGeometry\n\nsolidity::Float : Local solidity\nstagger::Float : Stagger angle, radians\n\nKeyword Arguments:\n\nmcrit::Float=0.7 : Critical Mach number\n\nrotorzloc airfoil type parameters for post-stall behavior\n\ndcl_stall::Float=0.1 : change in cl from incipient to total stall, used in transonic lift limiter correction\ndclda_stall::Float=0.1 : Post-stall lift curve slope\n\nCorrection factors that were hard coded in rotorzloc and DFDC\n\ncdmfactor::Float=10.0 :\nclmfactor::Float=0.25 :\nmexp::Float=3.0 :\ncdmstall::Float=0.1 :\ncdmdd::Float=0.0020 :\n\nSmoothing Paramters\n\nssblend_hardness::Float=100.0 : sigmoid blending hardness for solidity/stagger corrections\ntransblendhardness::Float=75.0 : sigmoid blending hardness for transonic corrections\nabsdx::Float=0.0625 : smooth absolute value Δα (radians) for transonic drag addition\n\nMiscellaneous\n\nverbose::Bool=false : Boolean of whether to print warnings, etc.\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/corrections/#DuctAPE.C4Blade.prandtl_glauert!-Tuple{Any, Any}","page":"Polar Modification","title":"DuctAPE.C4Blade.prandtl_glauert!","text":"prandtl_glauert!(cl, ma)\n\nIn place version of pradtl_glauert.\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/corrections/#DuctAPE.C4Blade.prandtl_glauert-Tuple{Any, Any}","page":"Polar Modification","title":"DuctAPE.C4Blade.prandtl_glauert","text":"prandtl_glauert(cl, ma)\n\nApplies Prandtl-Glauert correction\n\nArguments:\n\ncl::Float : local lift coefficient\n\nReturns\n\ncl_corr::AbstractVector{Float} : corrected lift coefficients\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/corrections/#DuctAPE.C4Blade.prandtl_glauert_factor-Tuple{Any}","page":"Polar Modification","title":"DuctAPE.C4Blade.prandtl_glauert_factor","text":"prandtl_glauert_factor(mach; verbose=false, blend_range=0.02)\n\nSmoothed Prandtl-Glauert Mach correction factor\n\nArguments:\n\nmach::Float : Mach number\n\nKeyword Arguments:\n\nblend_range::Float=0.02 : range for blending factor and max cutoff (allowing Mach >= 1.0 for continuity)\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/corrections/#DuctAPE.C4Blade.quadspline-Tuple{Any, Any, Any}","page":"Polar Modification","title":"DuctAPE.C4Blade.quadspline","text":"quadspline(xdata, ydata, xpoint)\n\nSample data in quadratic spline at give point.\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/corrections/#DuctAPE.C4Blade.re_drag!-Tuple{Any, Any, Any}","page":"Polar Modification","title":"DuctAPE.C4Blade.re_drag!","text":"re_drag!(cd, re, re_ref; re_exp=0.5)\n\nIn-place version of re_drag.\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/corrections/#DuctAPE.C4Blade.re_drag-Tuple{Any, Any, Any}","page":"Polar Modification","title":"DuctAPE.C4Blade.re_drag","text":"re_drag(cd, re, re_ref; re_exp=0.5)\n\nArguments:\n\ncd::AbstractVector{Float} : input drag coefficients\nre::Float : Current Reynolds number\nre_ref::Float : Reference Reynolds number (at which the cd's were generated)\n\nKeyword Arguments:\n\nre_exp::Float=0.5 : should be 0.2 for laminar and 0.5 for turbulent flow\n\nReturns:\n\ncd_corr::AbstractVector{Float} : Reynolds corrected drag coefficients\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/corrections/#DuctAPE.C4Blade.solidity_and_stagger!-Tuple{Any, Any, Any}","page":"Polar Modification","title":"DuctAPE.C4Blade.solidity_and_stagger!","text":"solidity_and_stagger!(cl, solidity, stagger; blend_hardness=100)\n\nIn-place version of solidity_and_stagger.\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/corrections/#DuctAPE.C4Blade.solidity_and_stagger-Tuple{Any, Any, Any}","page":"Polar Modification","title":"DuctAPE.C4Blade.solidity_and_stagger","text":"solidity_and_stagger(cl, solidity, stagger; blend_hardness=100)\n\nApply smoothed Wallis' cascade correction (see solidity_and_stagger_factor_smooth) to local lift.\n\nArguments:\n\ncl::AbstractVector{Float} : input lift coefficients\nsolidity::Float : local solidity\nstagger::Float : local stagger (in radians)\n\nKeyword Arguments:\n\nblend_hardness::Float=100 : hardness of smoothing blends\n\nReturns:\n\ncl_corr::AbstractVector{Float} : corrected lift coefficients.\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/corrections/#DuctAPE.C4Blade.solidity_and_stagger_factor-Tuple{Any, Any}","page":"Polar Modification","title":"DuctAPE.C4Blade.solidity_and_stagger_factor","text":"solidity_and_stagger_factor(solidity, stagger; blend_hardness=100)\n\nCorrection for airfoil data used in a high-solidity cascade application. Correction is used in DFDC airfoils nominally and come from quadratic fits to curves in fig 6-29 \"Axial Flow Fans and Ducts\" by Wallis (1983). Note that the corrections are really only meant for Wallis' custom airfoil design and specific conditions mentioned in the book.\n\nArguments:\n\nsolidity::Float : local solidity\nstagger::Float : local stagger (in radians)\n\nKeyword Arguments:\n\nblend_hardness::Float=100 : hardness for smoothing blends\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/corrections/#DuctAPE.C4Blade.solidity_and_stagger_factor_smooth-Tuple{Any, Any}","page":"Polar Modification","title":"DuctAPE.C4Blade.solidity_and_stagger_factor_smooth","text":"solidity_and_stagger_factor_smooth(solidity, stagger; blend_hardness=100)\n\nA smoothed version of solidity_and_stagger_factor.\n\nArguments:\n\nsolidity::Float : local solidity\nstagger::Float : local stagger (in radians)\n\nKeyword Arguments:\n\nblend_hardness::Float=100 : hardness for smoothing blends\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/corrections/#DuctAPE.C4Blade.stall_limiters-Tuple{Any, Any, Any}","page":"Polar Modification","title":"DuctAPE.C4Blade.stall_limiters","text":"stall_limiters(\n aoa,\n cl,\n cd;\n clminid=nothing,\n clmaxid=nothing,\n cl_cutoff_slope=0.1,\n cd_cutoff_slope=0.9,\n N=20,\n blend_hardness=50\n)\n\nCuts off coefficient vs alpha curve at min and max coefficient and places rest of curve from -pi to min coeff and max coeff to pi according to user defined clcutoffslope (default 0.1)\n\nArguments:\n\naoa::AbstractVector{Float} : input angles of attack, in radians\ncl::AbstractVector{Float} : input lift coefficients\ncd::AbstractVector{Float} : input drag coefficients\n\nKeyword Arguments:\n\nclminid::Float=nothing : manually set index for minimum cl\nclmaxid::Float=nothing : manually set index for maximum cl\ncl_cutoff_slope::Float=0.1 : \"post-stall\" slope for cl\ncd_cutoff_slope::Float=0.1 : \"post-stall\" slope for cd\nblend_hardness::Float=50 : hardenss of blend between nominal polar and post-stall modifications.\n\nReturns:\n\naoa_ext::AbstractVector{Float} : angles of attack for modified polar, in radians\ncl_ext::AbstractVector{Float} : modified lift coefficients\ncd_ext::AbstractVector{Float} : modified drag coefficients\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/corrections/#DuctAPE.C4Blade.transonic_drag_addition!-NTuple{4, Any}","page":"Polar Modification","title":"DuctAPE.C4Blade.transonic_drag_addition!","text":"transonic_drag_addition!(\n cd,\n cl,\n clcdmin,\n mach;\n mcrit=0.7,\n cdmfactor=10.0,\n clmfactor=0.25,\n mexp=3.0,\n cdmdd=0.0020,\n cdmstall=0.1000,\n absdx=0.0625,\n blend_hardness=50,\n)\n\nSmoothed, vecotrized, in-place version of transonic_drag_addition.\n\nDifferent Arguments:\n\ncd::AbstractVector{Float} : vector of drag coefficients\ncl::AbstractVector{Float} : vector of lift coefficients\n\nAdditional Keyword Argument:\n\nblend_hardness::Float=50 : hardenss of smoothing blends\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/corrections/#DuctAPE.C4Blade.transonic_drag_addition-NTuple{4, Any}","page":"Polar Modification","title":"DuctAPE.C4Blade.transonic_drag_addition","text":"transonic_drag_addition(\n cd,\n cl,\n clcdmin,\n mach;\n mcrit=0.7,\n cdmfactor=10.0,\n clmfactor=0.25,\n mexp=3.0,\n cdmdd=0.0020,\n cdmstall=0.1000,\n absdx=0.0625,\n)\n\nDrag augmentation due to transonic effects as found in XROTOR and DFDC. Note this is nominally applied to DFDC airfoil evaluation.\n\nArguments:\n\ncd::Float : input drag coefficient\ncl::Float : input lift coefficient\nclcdmin::Float : lift coefficient at minimum drag coefficient.\nmach::Float : Mach number\n\nKeyword Arguments\n\nmcrit::Float=0.7 : critical Mach number\ncdmfactor::Float=10.0 : factor hard coded in XROTOR and DFDC\nclmfactor::Float=0.25 : factor hard coded in XROTOR and DFDC\nmexp::Float=3.0 : factor hard coded in XROTOR and DFDC\ncdmstall::Float=0.1000 : factor hard coded in XROTOR and DFDC\nabsdx::Float=0.0625 : smoothing factor for smooth absolute value function\n\nReturns:\n\ncl_corr:Float : corrected lift coefficient\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/corrections/#DuctAPE.C4Blade.transonic_lift_limiter-NTuple{6, Any}","page":"Polar Modification","title":"DuctAPE.C4Blade.transonic_lift_limiter","text":"transonic_lift_limiter(\n cl,\n mach,\n clcdmin,\n clmax,\n clmin,\n dclda;\n mcrit=0.7,\n dcl_stall=0.1,\n dclda_stall=0.1,\n cdmfactor=10.0,\n clmfactor=0.25,\n mexp=3.0,\n cdmstall=0.1000,\n)\n\nAirfoil polar corrections due to transonic effects as found in XROTOR and DFDC. Note that this correction is done nominally in the DFDC airfoil evaluation.\n\nArguments:\n\ncl::Float : input lift coefficient\nmach::Float : Mach number\nclcdmin::Float : lift coefficient at minimum drag coefficient.\nclmax::Float : maximum lift coefficient\nclmin::Float : minimum lift coefficient\ndclda::Float : lift-curve slope\nmcrit::Float=0.7 : critical Mach number\ndcl_stall::Float=0.1 : cl increment from initial to total stall\ndclda_stall::Float=0.1 : lift curve slope post-stall (1/radians)\ncdmfactor::Float=10.0 : factor hard coded in XROTOR and DFDC\nclmfactor::Float=0.25 : factor hard coded in XROTOR and DFDC\nmexp::Float=3.0 : factor hard coded in XROTOR and DFDC\ncdmstall::Float=0.1000 : factor hard coded in XROTOR and DFDC\n\nReturns:\n\ncl_corr:Float : corrected lift coefficient\n\n\n\n\n\n","category":"method"},{"location":"C4Blade/corrections/#DuctAPE.C4Blade.transonic_lift_limiter_smooth!-NTuple{6, Any}","page":"Polar Modification","title":"DuctAPE.C4Blade.transonic_lift_limiter_smooth!","text":"transonic_lift_limiter_smooth!(\n cl,\n mach,\n clcdmin,\n clmax,\n clmin,\n dclda;\n mcrit=0.7,\n dcl_stall=0.1,\n dclda_stall=0.1,\n cdmfactor=10.0,\n clmfactor=0.25,\n mexp=3.0,\n cdmstall=0.1000,\n blend_hardness=50,\n)\n\nSmoothed, vectorized, in-place version of transonic_lift_limiter.\n\nDifferent Arguments:\n\ncl::AbstractVector{Float} : vector of lift coefficients\n\nAdditional Keyword Argument:\n\nblend_hardness::Float=50 : hardenss of smoothing blends\n\n\n\n\n\n","category":"method"},{"location":"DuctAPE/api/private_postprocess/","page":"Postprocess","title":"Postprocess","text":"DuctAPE.post_process","category":"page"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.post_process","page":"Postprocess","title":"DuctAPE.post_process","text":"post_process(\n solver_options,\n converged_states,\n prepost_containers,\n solve_container_caching,\n solve_parameter_cache_vector,\n solve_parameter_cache_dims,\n operating_point,\n reference_parameters,\n A_bb_LU,\n airfoils,\n idmaps,\n problem_dimensions,\n multipoint_index;\n write_outputs=options.write_outputs,\n outfile=options.outfile,\n checkoutfileexists=options.checkoutfileexists,\n output_tuple_name=options.output_tuple_name,\n verbose=options.verbose,\n)\n\nPost-process a converged nonlinear solve solution.\n\nArguments\n\nsolver_options::SolverOptionsType : A SolverOptionsType object (also used for dispatch)\nconverged_states::Vector{Float} : the converged state variables\nprepost_containers::NamedTuple : the named tuple containing pre-allocated containers for the pre- and post-processing intermediate calculations\nsolve_container_cache::NamedTuple : the cache and dimensions for intermediate values in the residual calculation\nsolve_parameter_cache_vector::Vector{Float} : the applicably typed cache vector for the solve parameters\nsolve_parameter_cache_dims::NamedTuple : the dimensions of the solver parameters\noperating_point::OperatingPoint : the operating point being analyzed\nreference_parameters::ReferenceParameters : a ReferenceParameters object\nA_bb_LU::LinearAlgebra.LU : LinearAlgebra LU factorization of the LHS matrix\nairfoils::Vector{AFType} : A matrix of airfoil types associated with each of the blade elements\nidmaps::NamedTuple : A named tuple containing index mapping used in bookkeeping throughout solve and post-process\nproblem_dimensions::ProblemDimensions : A ProblemDimensions object\n\nKeyword Arguments\n\nmultipoint_index::Vector{Int} : a one-dimensional vector containing the index of which multipoint analysis operating point is being analyzed.\nwrite_outputs=options.write_outputs::Vector{Bool} : a vector with the same length as number of multipoints indicating if the outputs should be saved.\noutfile=options.outfile::Vector{String} : a vector of file paths/names for where outputs should be written\ncheckoutfileexists=options.checkoutfileexists::Bool : a flag for whether existing files should be checked for or if blind overwriting is okay.\noutput_tuple_name=options.output_tuple_name::Vector{String} : the variable name(s) of the named tuple of outputs to be written.\nverbose::Bool=false : flag to print verbose statements\n\nReturns\n\nouts::NamedTuple : A named tuple containing all the output values including\n\nbodies\npanel_strengths\ntotal_thrust\nthrust_comp\ninduced_efficiency\ncp_in\ncp_out\ncp_casing_in\ncp_casing_out\ncasing_zpts\ncp_nacelle_in\ncp_nacelle_out\nnacelle_zpts\ncp_centerbody_in\ncp_centerbody_out\ncenterbody_zpts\nVtot_in\nVtot_out\nVtot_prejump\nvtot_body\nvtot_jump\nvtot_wake\nvtot_rotors\nVtan_in\nVtan_out\nvtan_casing_in\nvtan_casing_out\nvtan_nacelle_in\nvtan_nacelle_out\nvtan_centerbody_in\nvtan_centerbody_out\nrotors\ncirculation\npanel_strengths\nefficiency\ninviscid_thrust\ninviscid_thrust_dist\nviscous_thrust\nviscous_thrust_dist\nthrust\nCT\ninviscid_torque\ninviscid_torque_dist\nviscous_torque\nviscous_torque_dist\ntorque\nCQ\ninviscid_power\ninviscid_power_dist\nviscous_power\nviscous_power_dist\npower\nCP\ncl\ncd\nalpha\nbeta1\nblade_normal_force_per_unit_span\nblade_tangential_force_per_unit_span\nwake\npanel_strengths\ntotals\nthrust\ntorque\npower\nCT\nCQ\nCP\ntotal_efficiency\nideal_efficiency\nintermediate_solve_values\nvz_rotor\nvtheta_rotor\nCm_wake\nreynolds\nmach\nCz_rotor\nCtheta_rotor\nCmag_rotor\nGamma_tilde\nH_tilde\ndeltaGamma2\ndeltaH\nvz_wake\nvr_wake\nCm_avg\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#Velocities","page":"Postprocess","title":"Velocities","text":"","category":"section"},{"location":"DuctAPE/api/private_postprocess/","page":"Postprocess","title":"Postprocess","text":"DuctAPE.get_body_tangential_velocities\nDuctAPE.get_body_tangential_velocities!\nDuctAPE.calculate_vtheta\nDuctAPE.calculate_induced_velocities_on_bodywake","category":"page"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.get_body_tangential_velocities","page":"Postprocess","title":"DuctAPE.get_body_tangential_velocities","text":"get_body_tangential_velocities(\n gamb,\n gamw,\n sigr,\n ivb,\n Vinf,\n totnode,\n totpanel,\n nnode,\n npanel,\n tangent,\n controlpoints,\n endpanelidxs,\n wake_panel_ids_along_centerbody_wake_interface,\n wake_panel_ids_along_casing_wake_interface,\n centerbody_panel_ids_along_centerbody_wake_interface,\n duct_panel_ids_along_casing_wake_interface,\n num_casing_panels,\n)\n\nGet the tangential velocities along the body surfaces.\n\nArguments\n\ngamb::Vector{Float} : the body panel strengths\ngamw::Vector{Float} : the wake panel strengths\nsigr::Vector{Float} : the rotor panel strengths\nivb::NamedTuple : the unit induced velocities on the bodies\nVinf::Vector{Float} : one element vector containing the freestream magnitude\ntotnode::Int : total number of nodes between all bodies\ntotpanel::Int : total number of panels between all bodies\nnnode::Vector{Int} : number of nodes in each body\nnpanel::Vector{Int} : number of panels in each body.\ntangent::Matrix{Float} : unit tangent vectors for each panel\ncontrolpoints::Matrix{Float} : control point locations for each panel\nendpanelidxs::Matrix{Int} : the indices of the first and last panels for each body\nwake_panel_ids_along_centerbody_wake_interface::Vector{Int} : the indices of the wake panels coincident with the centerbody panels\nwake_panel_ids_along_casing_wake_interface::Vector{Int} : the indices of the wake panels coincident with the duct casing (inner surface) panels\ncenterbody_panel_ids_along_centerbody_wake_interface::Vector{Int} : the indices of the centerbody panels coincident with the wake panels\nduct_panel_ids_along_casing_wake_interface::Vector{Int} : the indices of the duct panels coincident with the wake panels\nnum_casing_panels::Int : the number of panels between the leading and trailing edge of the duct on the duct inner side (casing)\n\nReturns\n\nvtan_tuple::NamedTuple : a named tuple containing the body tangential surface velocities and various useful breakdowns thereof.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.get_body_tangential_velocities!","page":"Postprocess","title":"DuctAPE.get_body_tangential_velocities!","text":"function getbodytangentialvelocities!( vtantuple, gamb, gamw, sigr, ivb, Vinf, totnode, totpanel, nnode, npanel, tangent, controlpoints, endpanelidxs, wakepanelidsalongcenterbodywakeinterface, wakepanelidsalongcasingwakeinterface, centerbodypanelidsalongcenterbodywakeinterface, ductpanelidsalongcasingwakeinterface, zpts, )\n\nIn-place version of get_body_tangential_velocities.\n\nAdditional Arguments\n\nzpts::NamedTuple : a named tuple containing the z-coordinates of the control points of the duct casing, duct nacelle, and centerbody.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.calculate_vtheta","page":"Postprocess","title":"DuctAPE.calculate_vtheta","text":"calculate_vtheta(Gamma_tilde, r)\n\nCalculate tangential velocity for a given net circulation and radial location\n\nArguments\n\nGamma_tilde::Matrix{Float} : Sum of upstream circulation values\nr::Matrix{Float} : blade element radial positions\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.calculate_induced_velocities_on_bodywake","page":"Postprocess","title":"DuctAPE.calculate_induced_velocities_on_bodywake","text":"calculate_induced_velocities_on_bodywake(\n vz_w, vr_w, gamw, vz_r, vr_r, sigr, vz_b, vr_b, gamb, Vinf\n)\n\nCalculate the induced velocities on one of the body wakes (unit velocity inputs determine which one)\n\nArguments\n\nvz_w::Matrix{Float} : unit axial induced velocity of the wake onto the body wake\nvr_w::Matrix{Float} : unit radial induced velocity of the wake onto the body wake\ngamw::Vector{Float} : wake panel strengths\nvz_r::Matrix{Float} : unit axial induced velocity of the rotor onto the body wake\nvr_r::Matrix{Float} : unit radial induced velocity of the rotor onto the body wake\nsigr::Vector{Float} : rotor panel strengths\nvz_b::Matrix{Float} : unit axial induced velocity of the bodies onto the body wake\nvr_b::Matrix{Float} : unit radial induced velocity of the bodies onto the body wake\ngamb::Vector{Float} : body panel strengths\nVinf::Vector{Float} : one element vector containing the velocity magnitude\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#Pressures","page":"Postprocess","title":"Pressures","text":"","category":"section"},{"location":"DuctAPE/api/private_postprocess/","page":"Postprocess","title":"Postprocess","text":"DuctAPE.steady_cp\nDuctAPE.steady_cp!\nDuctAPE.calculate_entropy_jumps\nDuctAPE.calculate_rotor_jumps\nDuctAPE.delta_cp\nDuctAPE.calculate_body_delta_cp!\nDuctAPE.calculate_bodywake_delta_cp\nDuctAPE.get_body_cps\nDuctAPE.get_body_cps!\nDuctAPE.get_bodywake_cps\nDuctAPE.forces_from_pressure\nDuctAPE.forces_from_pressure!\nDuctAPE.forces_from_TEpanels!","category":"page"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.steady_cp","page":"Postprocess","title":"DuctAPE.steady_cp","text":"steady_cp(Vs, Vinf, Vref)\n\nCalculate steady pressure coefficients for a given surface velocity.\n\nArguments\n\nVs::Vector{Float} : the surface velocities\nVinf::Vector{Float} : one element vector with freestream mangnitude\nVref::Vector{Float} : one element vector with reference velocity used for non-dimensionalization\n\nReturns\n\ncp::Vector{Float} : the steady pressure coefficients\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.steady_cp!","page":"Postprocess","title":"DuctAPE.steady_cp!","text":"steady_cp!(cp, Vs, Vinf, Vref)\n\nIn-place verison of steady_cp.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.calculate_entropy_jumps","page":"Postprocess","title":"DuctAPE.calculate_entropy_jumps","text":"calculate_entropy_jumps(sigr, Cz_rotor)\n\nCalculate jumps in entropy across the disks.\n\nArguments\n\nsigr::Matrix{Float} : rotor source panel strengths\nCz_rotor::Vector{Float} : absolute axial velocity on rotor blade elements\n\nReturns\n\ndeltaS::Vector{Float} : entropy jump across rotor disks\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.calculate_rotor_jumps","page":"Postprocess","title":"DuctAPE.calculate_rotor_jumps","text":"calculate_rotor_jumps(Gamr, Omega, B, sigr, Cz_rotor)\n\nCalculate net circulation and enthalpy and entropy disk jumps\n\nArguments\n\nGamr::Matrix{Float} : Blade element circulation strengths\nOmega::Vector{Float} : rotor rotation rates\nB::Vector{Float} : blade count for each rotor (usually integers but could be a float)\nsigr::Matrix{Float} : rotor source panel strengths\nCz_rotor::Vector{Float} : absolute axial velocity on rotor blade elements\n\nReturns\n\nGamma_tilde::Matrix{Float} : net upstream circulation\nHtilde::Matrix{Float} : net upstream enthalpy jumps\nStilde::Matrix{Float} : net upstream entropy jumps\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.delta_cp","page":"Postprocess","title":"DuctAPE.delta_cp","text":"delta_cp(deltaH, deltaS, Ctheta, Vref)\n\nCalculate change in pressure coefficient aft of rotor, due to rotor\n\nArguments\n\ndeltaH::Vector{Float} : Enthalpy jumps across disks\ndeltaS::Vector{Float} : Entropy jumps across disks`\nCtheta::Vector{Float} : tangenetial velocity\nVref::Vector{Float} : reference velocity for non-dimensionalization\n\nReturns\n\ndelta_cp::Vector{Float} : pressure rises due to rotor disks\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.calculate_body_delta_cp!","page":"Postprocess","title":"DuctAPE.calculate_body_delta_cp!","text":"calculate_body_delta_cp!(cp, Gamr, sigr, Cz_rotor, Vref, Omega, B, cpr, casing_panel_ids_aft_of_rotors, centerbody_panel_ids_aft_of_rotors)\n\nAugment surface pressure by change in pressure coefficient due to rotors specifically on the body panels aft of the rotors.\n\nArguments\n\ncp::Vector{Float} : steady pressure coeffients, modified in-place to include rotor effects.\nGamr::Matrix{Float} : Blade element circulation strengths\nsigr::Matrix{Float} : rotor source panel strengths\nCz_rotor::Vector{Float} : absolute axial velocity on rotor blade elements\nVref::Vector{Float} : one element vector with reference velocity used for non-dimensionalization\nOmega::Vector{Float} : rotor rotation rates\nB::Vector{Float} : blade count for each rotor (usually integers but could be a float)\ncpr::Vector{Float} : control point radial positions of body panels\ncasing_panel_ids_aft_of_rotors::Vector{Int} : duct indices of control point radial positions aft of rotors\ncenterbody_panel_ids_aft_of_rotors::Vector{Int} : centerbody indices of control point radial positions aft of rotors\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.calculate_bodywake_delta_cp","page":"Postprocess","title":"DuctAPE.calculate_bodywake_delta_cp","text":"calculate_bodywake_delta_cp(Gamr, sigr, Cz_rotor, Vref, Omega, B, cpr; body=\"duct\")\n\nCalculate change in pressure coefficient due to rotors specifically on the body wakes\n\nArguments\n\nGamr::Matrix{Float} : Blade element circulation strengths\nsigr::Matrix{Float} : rotor source panel strengths\nCz_rotor::Vector{Float} : absolute axial velocity on rotor blade elements\nVref::Vector{Float} : one element vector with reference velocity used for non-dimensionalization\nOmega::Vector{Float} : rotor rotation rates\nB::Vector{Float} : blade count for each rotor (usually integers but could be a float)\ncpr::Vector{Float} : control point radial positions of body wake \"panels\"\n\nKeyword Arguments\n\nbody::String=\"duct\" : flag as to whether the body in question is a duct or centerbody.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.get_body_cps","page":"Postprocess","title":"DuctAPE.get_body_cps","text":"getbodycps( Vtanin, Vtanout, Gamr, sigr, Czrotor, Vinf, Vref, B, Omega, casingpanelidsaftofrotors, centerbodypanelidsaftof_rotors, controlpoints, endpanelidxs, zpts, )\n\nDescription\n\nArguments\n\nVtan_in::Vector{Float} : Tangential velocity on the inside of the body panels\nVtan_out::Vector{Float} : Tangential velocity on the outside of the body panels\nGamr::Matrix{Float} : Blade element circulation strengths\nsigr::Matrix{Float} : rotor source panel strengths\nCz_rotor::Vector{Float} : absolute axial velocity on rotor blade elements\nVinf::Vector{Float} : one element vector with freestream mangnitude\nVref::Vector{Float} : one element vector with reference velocity used for non-dimensionalization\nB::Vector{Float} : blade count for each rotor (usually integers but could be a float)\nOmega::Vector{Float} : rotor rotation rates\ncasing_panel_ids_aft_of_rotors::Vector{Int} : duct indices of control point radial positions aft of rotors\ncenterbody_panel_ids_aft_of_rotors::Vector{Int} : centerbody indices of control point radial positions aft of rotors\ncontrolpoints::Matrix{Float} : control point locations for each panel\nendpanelidxs::Matrix{Int} : the indices of the first and last panels for each body\nzpts::NamedTuple : a named tuple containing the z-coordinates of the control points of the duct casing, duct nacelle, and centerbody.\n\nReturns\n\ncp_tuple::NamedTuple : body surface velocities and various useful breakdowns thereof.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.get_body_cps!","page":"Postprocess","title":"DuctAPE.get_body_cps!","text":"get_body_cps!(\n cp_tuple,\n Vtan_in,\n Vtan_out,\n Gamr,\n sigr,\n Cz_rotor,\n Vinf,\n Vref,\n B,\n Omega,\n duct_panel_ids_aft_of_rotors,\n centerbody_panel_ids_aft_of_rotors,\n controlpoints,\n endpanelidxs,\n zpts,\n)\n\nIn-place version of get_body_cps.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.get_bodywake_cps","page":"Postprocess","title":"DuctAPE.get_bodywake_cps","text":"get_bodywake_cps(\n Gamr,\n vz_w,\n vr_w,\n gamw,\n vz_r,\n vr_r,\n sigr,\n vz_b,\n vr_b,\n gamb,\n panels,\n Cz_rotor,\n Omega,\n B,\n Vinf,\n Vref;\n body=\"duct\",\n)\n\nCalculate the pressure coefficient distributions on one of the body wakes\n\nArguments\n\nGamr::Matrix{Float} : Blade element circulation strengths\nvz_w::Matrix{Float} : unit axial induced velocity of the wake onto the body wake\nvr_w::Matrix{Float} : unit radial induced velocity of the wake onto the body wake\ngamw::Vector{Float} : wake panel strengths\nvz_r::Matrix{Float} : unit axial induced velocity of the rotor onto the body wake\nvr_r::Matrix{Float} : unit radial induced velocity of the rotor onto the body wake\nsigr::Vector{Float} : rotor panel strengths\nvz_b::Matrix{Float} : unit axial induced velocity of the bodies onto the body wake\nvr_b::Matrix{Float} : unit radial induced velocity of the bodies onto the body wake\ngamb::Vector{Float} : body panel strengths\npanels::NamedTuple : A named tuple containing bodywake \"panel\" geometries\nCz_rotor::Vector{Float} : absolute axial velocity on rotor blade elements\nOmega::Vector{Float} : rotor rotation rates\nB::Vector{Float} : blade count for each rotor (usually integers but could be a float)\nVinf::Vector{Float} : one element vector containing the velocity magnitude\nVref::Vector{Float} : one element vector with reference velocity used for non-dimensionalization\n\nKeyword Arguments\n\nbody::String=\"duct\" : flag as to whether the body in question is a duct or centerbody.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.forces_from_pressure","page":"Postprocess","title":"DuctAPE.forces_from_pressure","text":"forces_from_pressure(cp_in, cp_out, panels; rhoinf=1.225, Vref=1.0)\n\nCalculate dimensional and non-dimensional axial force on a single body\n\nArguments\n\ncp_in::Vector{Float} : pressure coefficient on inside of body surfaces\ncp_out::Vector{Float} : pressure coefficients on outside of body surfaces\npanels::NamedTuple : A named tuple containing panel geometry information\n\nKeyword Arguments\n\nrhoinf::Float=1.225 : reference density for non-dimensionalization\nVref::Float=1.0 : reference velocity for non-dimensionalization\n\nReturns\n\nthrust::Vector{Float} : dimensional axial force\nforce_coeff::Vector{Float} : non-dimensional axial force\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.forces_from_pressure!","page":"Postprocess","title":"DuctAPE.forces_from_pressure!","text":"forces_from_pressure!(CFx, cfx, cp_in, cp_out, panels; rhoinf=1.225, Vref=1.0)\n\nIn-place version of forces_from_pressure.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.forces_from_TEpanels!","page":"Postprocess","title":"DuctAPE.forces_from_TEpanels!","text":"forces_from_TEpanels!(\n thrust, force_coeff, cp_in, cp_out, panels; rhoinf=1.225, Vref=1.0\n)\n\nAdd force induced by trailing edge gap panels to total forces.\n\nArguments\n\nthrust::Vector{Float} : dimensional axial force\nforce_coeff::Vector{Float} : non-dimensional axial force\ncp_in::Vector{Float} : pressure coefficient on inside of body surfaces\ncp_out::Vector{Float} : pressure coefficients on outside of body surfaces\npanels::NamedTuple : A named tuple containing panel geometry information\n\nKeyword Arguments\n\nrhoinf::Float=1.225 : reference density for non-dimensionalization\nVref::Float=1.0 : reference velocity for non-dimensionalization\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#Rotor-Performance","page":"Postprocess","title":"Rotor Performance","text":"","category":"section"},{"location":"DuctAPE/api/private_postprocess/","page":"Postprocess","title":"Postprocess","text":"DuctAPE.inviscid_rotor_thrust\nDuctAPE.inviscid_rotor_thrust!\nDuctAPE.viscous_rotor_thrust\nDuctAPE.viscous_rotor_thrust!\nDuctAPE.inviscid_rotor_torque\nDuctAPE.inviscid_rotor_torque!\nDuctAPE.viscous_rotor_torque\nDuctAPE.viscous_rotor_torque!\nDuctAPE.rotor_power\nDuctAPE.rotor_power!\nDuctAPE.get_total_efficiency\nDuctAPE.get_total_efficiency!\nDuctAPE.get_induced_efficiency\nDuctAPE.get_induced_efficiency!\nDuctAPE.get_ideal_efficiency\nDuctAPE.tqpcoeff\nDuctAPE.tqpcoeff!\nDuctAPE.get_blade_loads\nDuctAPE.get_blade_loads!","category":"page"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.inviscid_rotor_thrust","page":"Postprocess","title":"DuctAPE.inviscid_rotor_thrust","text":"inviscid_rotor_thrust(Ctheta_rotor, Gamma_tilde, rotor_panel_length, rhoinf)\n\nCalculate inviscid rotor thrust.\n\nArguments\n\nCtheta_rotor::Vector{Float} : Absolute tangential velocity on rotor blade elements\nGamma_tilde::Matrix{Float} : net upstream rotor circulation\nrotor_panel_length::Vector{Float} : dimensional lengths on which blade element values apply\nrhoinf::Float : freestream density\n\nReturns\n\nTinv::Vector{Float} : inviscid dimensional thrust\ndTi::Vector{Float} : inviscid dimensional thrust distribution\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.inviscid_rotor_thrust!","page":"Postprocess","title":"DuctAPE.inviscid_rotor_thrust!","text":"inviscid_rotor_thrust!(\n Tinv, dTi, Ctheta_rotor, Gamma_tilde, rotor_panel_length, rhoinf\n)\n\nIn-place version of inviscid_rotor_thrust.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.viscous_rotor_thrust","page":"Postprocess","title":"DuctAPE.viscous_rotor_thrust","text":"viscous_rotor_thrust(\n Cz_rotor, Cmag_rotor, B, chord, rotor_panel_length, cd, rhoinf\n)\n\nCalculate visous rotor \"thrust.\"\n\nArguments\n\nCz_rotor::Vector{Float} : Absolute axial velocity on rotor blade elements\nCmag_rotor::Vector{Float} : Absolute inflow velocity magnitude on rotor blade elements\nB::Vector{Float} : blade count for each rotor (usually integers but could be a float)\nchord::Vector{Float} : blade element chord lengths\nrotor_panel_length::Vector{Float} : dimensional lengths on which blade element values apply\ncd::Vector{Float} : drag coefficient for each blade element\nrhoinf::Float : freestream density\n\nReturns\n\nTvisc::Vector{Float} : viscous dimensional thrust\ndTv::Vector{Float} : viscous dimensional thrust distribution\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.viscous_rotor_thrust!","page":"Postprocess","title":"DuctAPE.viscous_rotor_thrust!","text":"viscous_rotor_thrust!(\n Tvisc, dTv, Cz_rotor, Cmag_rotor, B, chord, rotor_panel_length, cd, rhoinf\n)\n\nIn-place version of viscous_rotor_thrust.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.inviscid_rotor_torque","page":"Postprocess","title":"DuctAPE.inviscid_rotor_torque","text":"inviscid_rotor_torque(\n Cz_rotor, rotor_panel_center, rotor_panel_length, Gamma_tilde, rhoinf\n)\n\nCalculate inviscid rotor torque.\n\nArguments\n\nCz_rotor::Vector{Float} : Absolute axial velocity on rotor blade elements\nrotor_panel_center::Vector{Float} : radial location of rotor blade elements\nrotor_panel_length::Vector{Float} : dimensional lengths on which blade element values apply\nGamma_tilde::Matrix{Float} : net upstream rotor circulation\nrhoinf::Float : freestream density\n\nReturns\n\nQinv::Vector{Float} : inviscid dimensional thrust\ndQi::Vector{Float} : inviscid dimensional thrust distribution\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.inviscid_rotor_torque!","page":"Postprocess","title":"DuctAPE.inviscid_rotor_torque!","text":"inviscid_rotor_torque!(\n Qinv, dQi, Cz_rotor, rotor_panel_center, rotor_panel_length, Gamma_tilde, rhoinf\n)\n\nIn-place version of inviscid_rotor_torque.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.viscous_rotor_torque","page":"Postprocess","title":"DuctAPE.viscous_rotor_torque","text":"viscous_rotor_torque(\n Ctheta_rotor, Cmag_rotor, B, chord, rotor_panel_center, rotor_panel_length, cd, rhoinf\n)\n\nCalculate viscous rotor torque.\n\nArguments\n\nCtheta_rotor::Vector{Float} : Absolute tangential velocity on rotor blade elements\nCmag_rotor::Vector{Float} : Absolute inflow velocity magnitude on rotor blade elements\nB::Vector{Float} : blade count for each rotor (usually integers but could be a float)\nchord::Vector{Float} : blade element chord lengths\nrotor_panel_center::Vector{Float} : radial location of rotor blade elements\nrotor_panel_length::Vector{Float} : dimensional lengths on which blade element values apply\ncd::Vector{Float} : drag coefficient for each blade element\nrhoinf::Float : freestream density\n\nReturns\n\nQvisc::Vector{Float} : viscous dimensional thrust\ndQv::Vector{Float} : viscous dimensional thrust distribution\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.viscous_rotor_torque!","page":"Postprocess","title":"DuctAPE.viscous_rotor_torque!","text":"viscous_rotor_torque!(\n Qvisc,\n dQv,\n Ctheta_rotor,\n Cmag_rotor,\n B,\n chord,\n rotor_panel_center,\n rotor_panel_length,\n cd,\n rhoinf\n)\n\nIn-place version of viscous_rotor_torque.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.rotor_power","page":"Postprocess","title":"DuctAPE.rotor_power","text":"rotor_power(Q, dQ, Omega)\n\nCalculate power from torque and rotation rate.\n\nArguments\n\nQ::Vector{Float} : dimensional thrust\ndQ::Vector{Float} : dimensional thrust distribution\nOmega::Vector{Float} : rotor rotation rates\n\nReturns\n\nP::Vector{Float} : dimensional power\ndP::Vector{Float} : dimensional thrust distribution\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.rotor_power!","page":"Postprocess","title":"DuctAPE.rotor_power!","text":"rotor_power!(P, dP, Q, dQ, Omega)\n\nIn-place version of rotor_power.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.get_total_efficiency","page":"Postprocess","title":"DuctAPE.get_total_efficiency","text":"get_total_efficiency(total_thrust, total_power, Vinf)\n\nGet total efficiency.\n\nArguments\n\ntotal_thrust::Vector{Float} : total thrust\ntotal_power::Vector{Float} : total power\nVinf::Vector{Float} : one element vector freestream velocity magnitude\n\nReturns\n\n`total_efficiency::Vector{Float} : total efficiency\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.get_total_efficiency!","page":"Postprocess","title":"DuctAPE.get_total_efficiency!","text":"get_total_efficiency!(eta, total_thrust, total_power, Vinf)\n\nIn-place version of get_total_efficiency.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.get_induced_efficiency","page":"Postprocess","title":"DuctAPE.get_induced_efficiency","text":"get_induced_efficiency(Tinv, Tduct, Pinv, Vinf)\n\nGet rotor efficiency induced by presence of the duct.\n\nArguments\n\nTinv::Vector{Float} : inviscid dimensional thrust\nTduct::Vector{Float} : duct thrust\nPinv::Vector{Float} : inviscid dimensional power\nVinf::Vector{Float} : one element vector freestream velocity magnitude\n\nReturns\n\ninduced_efficiency::Vector{Float} : rotor efficiency induced by duct\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.get_induced_efficiency!","page":"Postprocess","title":"DuctAPE.get_induced_efficiency!","text":"get_induced_efficiency!(eta_inv, Tinv, Tduct, Pinv, Vinf)\n\nIn-place version of get_induced_efficiency.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.get_ideal_efficiency","page":"Postprocess","title":"DuctAPE.get_ideal_efficiency","text":"get_ideal_efficiency(total_thrust, rhoinf, Vinf, Rref)\n\nCompute ducted fan ideal efficiency\n\nArguments\n\ntotal_thrust::Vector{Float} : total thrust from rotors and duct\nrhoinf::Float : freestream density\nVinf::Vector{Float} : one element vector freestream velocity magnitude\nRref::Vector{Float} : one element vector reference rotor tip radius\n\nReturns\n\nideal_efficiency::Vector{Float} : ideal ducted fan efficiency\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.tqpcoeff","page":"Postprocess","title":"DuctAPE.tqpcoeff","text":"tqpcoeff(thrust, torque, power, rhoinf, Omega, Rref)\n\nCalculate non-dimensional thrust, torque, and power coefficients\n\nArguments\n\nthrust::Vector{Float} : dimensional thrust\ntorque::Vector{Float} : dimensional torque\npower::Vector{Float} : dimensional power\nrhoinf::Float : freestream density\nOmega::Vector{Float} : rotor rotation rates\nRref::Vector{Float} : one element vector reference rotor tip radius\n\nReturns\n\nCT::Vector{Float} : thrust coefficient\nCQ::Vector{Float} : torque coefficient\nCP::Vector{Float} : power coefficient\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.tqpcoeff!","page":"Postprocess","title":"DuctAPE.tqpcoeff!","text":"tqpcoeff!(CT, CQ, CP, thrust, torque, power, rhoinf, Omega, Rref)\n\nIn-place version of tqpcoeff.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.get_blade_loads","page":"Postprocess","title":"DuctAPE.get_blade_loads","text":"get_blade_loads(Cmag_rotor, beta1, cl, cd, chords, rhoinf)\n\nGet loading along blades.\n\nArguments\n\nCmag_rotor::Vector{Float} : blade element inflow magnitudes\nbeta1::Vector{Float} : blade element inflow angles\ncl::Vector{Float} : blade element lift coefficients\ncd::Vector{Float} : blade element drag coefficients\nchords::Vector{Float} : blade element chord lengths\nrhoinf::Vector{Float} : one element freestream density\n\nReturns\n\nNp::Vector{Float} : blade loading per unit length in the normal direction: N'\nTp::Vector{Float} : blade loading per unit length in the tangential direction: T'\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/api/private_postprocess/#DuctAPE.get_blade_loads!","page":"Postprocess","title":"DuctAPE.get_blade_loads!","text":"get_blade_loads!(Np, Tp, Cmag_rotor, beta1, cl, cd, chords, rhoinf, cache)\n\nIn-place version of get_blade_loads.\n\n\n\n\n\n","category":"function"},{"location":"C4Blade/intro/#C\\textrm{4}Blade-[[C](#)ascade-[C](#)ompatible-[CCBlade](https://flow.byu.edu/CCBlade.jl/stable/)]","page":"Intro","title":"C^textrm4Blade [Cascade Compatible CCBlade]","text":"","category":"section"},{"location":"C4Blade/intro/","page":"Intro","title":"Intro","text":"C^4Blade is a DuctAPE submodule containing a modified version of CCBlade that includes capabilities for cascade types.","category":"page"},{"location":"DuctAPE/theory/#Theory","page":"Theory","title":"Theory","text":"","category":"section"},{"location":"DuctAPE/theory/","page":"Theory","title":"Theory","text":"For a brief overview of the theory behind DuctAPE, see:","category":"page"},{"location":"DuctAPE/theory/","page":"Theory","title":"Theory","text":"Mehr, J. and Ning, A., \"DuctAPE: A steady-state, axisymmetric ducted fan analysis code designed for gradient-based optimization.,\" AIAA Aviation Forum, July 2024.","category":"page"},{"location":"DuctAPE/theory/","page":"Theory","title":"Theory","text":"For a more thorough dive into the details see this pdf document.","category":"page"},{"location":"#DuctAPE.jl-[[Duct](#)ed-[A](#)xisymmetric-[P](#)ropulsor-[E](#)valuation]","page":"Home","title":"DuctAPE.jl [Ducted Axisymmetric Propulsor Evaluation]","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"Author: Judd Mehr","category":"page"},{"location":"","page":"Home","title":"Home","text":"Contributer: Taylor McDonnell","category":"page"},{"location":"","page":"Home","title":"Home","text":"DuctAPE is a code for the aerodynamic evaluation of axisymmetric ducted ducted_rotors designed for incompressible (low mach) applications. It is strongly influenced by the underlying theory of Ducted Fan Design Code (DFDC), utilizing a linear axisymmetric vortex panel method for duct and center body, blade element lifting line rotor representation, and wake model axisymmetrically smeared onto an elliptic grid for efficient computation. DuctAPE has been developed specifically for applications in gradient-based optimization settings.","category":"page"},{"location":"#Installation","page":"Home","title":"Installation","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"pkg> add https://github.com/byuflowlab/DuctAPE.jl.git","category":"page"},{"location":"#Documentation","page":"Home","title":"Documentation","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"Getting Started will have you up and running quickly.\nThe Advanced Usage tab includes several pages of additional information for customizing your usage.\nThe API tab contains public and private method descriptions.\nThe Theory tab contain several pages on the underlying theory of DuctAPE.\nThe C^4Blade tab contains documentation for the C^4Blade submodule used for airfoil/cascade management within DuctAPE as well as state initialization.","category":"page"},{"location":"#Citing","page":"Home","title":"Citing","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"Mehr, J. and Ning, A., \"DuctAPE: A steady-state, axisymmetric ducted fan analysis code designed for gradient-based optimization.,\" AIAA Aviation Forum, July 2024.","category":"page"},{"location":"DuctAPE/tutorial/#Getting-Started","page":"Getting Started","title":"Getting Started","text":"","category":"section"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"Pages = [\"tutorial.md\"]\nDepth = 5","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"The following is a basic tutorial on how to set up and run an analysis of a ducted fan in DuctAPE.","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"include(\"../assets/plots_default.jl\")\ngr()","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"We begin by loading the package:","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"using DuctAPE\nnothing # hide","category":"page"},{"location":"DuctAPE/tutorial/#Assemble-Inputs","page":"Getting Started","title":"Assemble Inputs","text":"","category":"section"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"The next step is to create the input object of type DuctedRotor.","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"DuctAPE.DuctedRotor","category":"page"},{"location":"DuctAPE/tutorial/#DuctAPE.DuctedRotor-DuctAPE-tutorial","page":"Getting Started","title":"DuctAPE.DuctedRotor","text":"DuctedRotor(duct_coordinates, centerbody_coordinates, rotor, paneling_constants)\n\nArguments\n\nduct_coordinates::AbstractMatrix : The [z, r] coordinates of the duct geometry beginning at the inner (casing) side trailing edge and proceeding clockwise. Note that the duct geometry absolute radial position does not need to be included here if the autoshiftduct option is selected.\ncenterbody_coordinates::AbstractMatrix : The [z, r] coordinates of the centerbody beginning at the leading edge and ending at the trailing edge. Note that the leading edge is assumed to be placed at a radial distance of 0.0 from the axis of rotation.\npaneling_constants::PanelingConstants : Constants used in re-paneling the geometry.\nrotor::Rotor : Rotor (and possibly stator) geometric paramters.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/tutorial/#Body-Geometry","page":"Getting Started","title":"Body Geometry","text":"","category":"section"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"We begin by defining a matrix of coordinates for the duct and another for the centerbody geometries. For example:","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"duct_coordinates = [\n 0.304466 0.158439\n 0.294972 0.158441\n 0.28113 0.158423\n 0.266505 0.158365\n 0.251898 0.158254\n 0.237332 0.158088\n 0.222751 0.157864\n 0.208123 0.157586\n 0.193399 0.157258\n 0.178507 0.156897\n 0.16349 0.156523\n 0.148679 0.156177\n 0.134222 0.155902\n 0.12 0.155721\n 0.106044 0.155585\n 0.092531 0.155498\n 0.079836 0.155546\n 0.067995 0.155792\n 0.057025 0.156294\n 0.046983 0.157103\n 0.037937 0.158256\n 0.029956 0.159771\n 0.02311 0.161648\n 0.017419 0.163862\n 0.012842 0.166404\n 0.009324 0.169289\n 0.006854 0.172546\n 0.005484 0.176154\n 0.005242 0.180005\n 0.006112 0.184067\n 0.00809 0.188086\n 0.011135 0.192004\n 0.015227 0.19579\n 0.020339 0.199393\n 0.026403 0.202735\n 0.033312 0.205736\n 0.040949 0.208332\n 0.049193 0.210487\n 0.057935 0.212174\n 0.067113 0.21339\n 0.076647 0.214136\n 0.086499 0.214421\n 0.09661 0.214255\n 0.10695 0.213649\n 0.117508 0.212618\n 0.12838 0.211153\n 0.139859 0.209267\n 0.151644 0.207051\n 0.163586 0.204547\n 0.175647 0.201771\n 0.187807 0.198746\n 0.20002 0.19549\n 0.212269 0.192017\n 0.224549 0.188335\n 0.236794 0.18447\n 0.249026 0.180416\n 0.261206 0.176188\n 0.273301 0.171796\n 0.28524 0.16727\n 0.29644 0.162842\n 0.304542 0.159526\n]\nnothing # hide","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"centerbody_coordinates = [\n 0.0 0.0\n 0.000586 0.005293\n 0.002179 0.010047\n 0.004736 0.014551\n 0.008231 0.018825\n 0.012632 0.022848\n 0.01788 0.026585\n 0.023901 0.030001\n 0.030604 0.033068\n 0.0379 0.035771\n 0.045705 0.038107\n 0.053933 0.040075\n 0.06254 0.04169\n 0.071451 0.042966\n 0.08063 0.043916\n 0.090039 0.044561\n 0.09968 0.044922\n 0.109361 0.044999\n 0.12 0.044952\n 0.135773 0.04495\n 0.151899 0.04493\n 0.16806 0.044913\n 0.184232 0.044898\n 0.200407 0.044882\n 0.21658 0.044866\n 0.232723 0.044847\n 0.248578 0.044839\n 0.262095 0.044564\n 0.274184 0.043576\n 0.285768 0.041795\n 0.296701 0.039168\n 0.306379 0.035928\n]\nnothing # hide","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"pg = plot( # hide\n duct_coordinates[:, 1], # hide\n duct_coordinates[:, 2]; # hide\n aspectratio=1, # hide\n color=1, # hide\n linewidth=2, # hide\n label=\"Duct\", # hide\n xlabel=\"z\", # hide\n ylabel=\"r\", # hide\n legend=:left, # hide\n) # hide\nplot!( # hide\n pg, # hide\n centerbody_coordinates[:, 1], # hide\n centerbody_coordinates[:, 2]; # hide\n color=2, # hide\n linewidth=2, # hide\n label=\"Center Body\", # hide\n) # hide","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"note: Note\nThe body geometry coordinates must be input as columns of z (axial) and r (radial) coordinates, in that order.","category":"page"},{"location":"DuctAPE/tutorial/#Rotor-Geometry","page":"Getting Started","title":"Rotor Geometry","text":"","category":"section"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"The next step is to assemble an object of type Rotor which contains the geometric information required to define the rotor(s) and their respective blade elements.","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"DuctAPE.Rotor","category":"page"},{"location":"DuctAPE/tutorial/#DuctAPE.Rotor-DuctAPE-tutorial","page":"Getting Started","title":"DuctAPE.Rotor","text":"Rotor(\n B, rotorzloc, r, Rhub, Rtip, chords, twists, tip_gap, airfoils, fliplift\n)\n\nComposite type containing the rotor(s) geometric properties.\n\nNote that the actual struct requires the inputs to be arrays, but there is a constructor function that will take in scalars and automatically build the array-based struct.\n\nArguments\n\nB::AbstractVector{Float} : The number of blades for each rotor. May not be an integer, but usually is.\nrotorzloc::AbstractVector{Float} : Dimensional, axial position of each rotor.\nr::AbstractArray{Float} : Non-dimensional radial locations of each blade element.\nRhub::AbstractVector{Float} : Dimensional hub radius of rotor. (may be changed if it does not match the radial position of the centerbody geometry at the selected rotorzloc.\nRtip::AbstractVector{Float} : Dimensional tip radius of rotor. Is used to determine the radial position of the duct if the autoshiftduct option is selected.\nchords::AbstractArray{Float} : Dimensional chord lengths of the blade elements.\ntwists::AbstractArray{Float} : Blade element angles, in radians.\ntip_gap::AbstractVector{Float} : Currently unused, do not set to anything other than zeros.\nairfoils::AbstractArray{AFType} : Airfoil types describing the airfoil polars for each blade element. Currently only fully tested with C4Blade.DFDCairfoil types.\nfliplift::AbstractVector{Bool} : Flag to indicate if the airfoil lift values should be flipped or not.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"In this example, we have a single rotor defined as follows.","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"# number of rotors\nB = 5\n\n# rotor axial location\nrotorzloc = 0.12\n\n# rotor tip radius\nRtip = 0.15572081487373543\n\n# rotor hub radius\nRhub = 0.04495252299071941\n\n# non-dimensional blade element radial stations\nr = [\n 0.050491\n 0.061567\n 0.072644\n 0.083721\n 0.094798\n 0.10587\n 0.11695\n 0.12803\n 0.13911\n 0.15018\n] ./ Rtip\n\n# dimensional chord lengths\nchords = [\n 0.089142\n 0.079785\n 0.0713\n 0.063979\n 0.057777\n 0.052541\n 0.048103\n 0.044316\n 0.041061\n 0.038243\n]\n\n# twist angles (from plane of rotation) in radians\ntwists = [\n 69.012\n 59.142\n 51.825\n 46.272\n 41.952\n 38.509\n 35.699\n 33.354\n 31.349\n 29.596\n] .* pi / 180.0\n\n# DFDC-type airfoil object\nafparams = DuctAPE.c4b.DFDCairfoil(;\n alpha0=0.0,\n clmax=1.5,\n clmin=-1.0,\n dclda=6.28,\n dclda_stall=0.5,\n dcl_stall=0.2,\n cdmin=0.012,\n clcdmin=0.1,\n dcddcl2=0.005,\n cmcon=0.0,\n Re_ref=2e5,\n Re_exp=0.35,\n mcrit=0.7,\n)\n\n# all airfoils are the same\nairfoils = fill(afparams, length(r)) # specify the airfoil array\n\n# assemble rotor parameters\nrotor = DuctAPE.Rotor(\n [B],\n [rotorzloc],\n r,\n [Rhub],\n [Rtip],\n chords,\n twists,\n [0.0], # currently only zero tip gaps work.\n airfoils,\n [0.0], # can flip the cl lookups on the fly if desired, say, for stator sections\n)\nnothing # hide","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"plot!( # hide\n pg, # hide\n rotorzloc * ones(length(r)), # hide\n r .* Rtip; # hide\n seriestype=:scatter, # hide\n markersize=3, # hide\n markerstrokewidth=0, # hide\n label=\"Blade Elements\", # hide\n) # hide","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"note: Airfoils\nAirfoil types for DuctAPE are currently contained in the C4Blade (Cascade Compatible CCBlade) sub-module of DuctAPE which is exported as c4b and also contains the various airfoil evaluation functions used for the blade element lookups. The available airfoil types include all the airfoil types from CCBlade, as well as DFDCairfoil which is an XROTOR-like parametric cascade polar used in DFDC. In addition there are untested cascade types with similar structure to CCBlades airfoil types called DTCascade. Furthermore, there is an experimental actuator disk model implemented via the ADM airfoil type in C4Blade.","category":"page"},{"location":"DuctAPE/tutorial/#Paneling-Constants","page":"Getting Started","title":"Paneling Constants","text":"","category":"section"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"The PanelingConstants object contains the constants required for DuctAPE to re-panel the provided geometry into a format compatible with the solve structure. Specifically, the DuctAPE solver makes some assumptions on the relative positioning of the body surfaces relative to the wakes and each other; and this is most easily guarenteed by a re-paneling of the provided body surface geometry. The PanelingConstants object is also used to build all of the preallocated caches inside DuctAPE, which can be done up-front if desired. Note that there is some functionality in place for cases when the user wants to keep their own specified geometry, but this functionality should be used with caution and only by users who are certain their provided geometry is in the compatible format. See the Examples for an example.","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"DuctAPE.PanelingConstants","category":"page"},{"location":"DuctAPE/tutorial/#DuctAPE.PanelingConstants-DuctAPE-tutorial","page":"Getting Started","title":"DuctAPE.PanelingConstants","text":"PanelingConstants(\n nduct_inlet,\n ncenterbody_inlet,\n npanels,\n dte_minus_cbte,\n nwake_sheets,\n wake_length=1.0,\n)\n\nConstants used in re-paneling geometry.\n\nNote that unlike other input structures, this one, in general, does not define fields as vectors. This is because these values should not change throughout an optimization, even if the geometry may change. Otherwise, discontinuities could be experienced.\n\nArguments\n\nnduct_inlet::Int : The number of panels to use for the duct inlet (this number is used for both the casing and nacelle re-paneling)\nncenterbody_inlet::Int : The number of panels to use for the centerbody inlet.\nnpanels::AbstractVector{Int} : A vector containing the number of panels between discrete locations inside the wake. Specifically, the number of panels between the rotors, between the last rotor and the first body trailing edge, between the body trailing edges (if different), and between the last body trailing edge and the end of the wake. The length of this vector should be N+1 (where N is the number of rotors) if the duct and centerbody trailing edges are aligned, and N+2 if not.\ndte_minus_cbte::Float : An indicator concerning the hub and duct trailing edge relative locations. Should be set to -1 if the duct trailing edge axial position minus the centerbody trailing edge axial position is negative, +1 if positive (though any positive or negative number will suffice), and zero if the trailing edges are aligned.\nnwake_sheets::Int : The number of wake sheets to use. Note this will also be setting the number of blade elements to use.\nwake_length::Float=1.0 : Non-dimensional (based on the length from the foremost body leading edge and the aftmost body trailing edge) length of the wake extending behind the aftmost body trailing edge.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"# number of panels for the duct inlet\nnduct_inlet = 30\n\n# number of panels for the center body inlet\nncenterbody_inlet = 30\n\n# number of panels from:\n# - rotor to duct trailing edge\n# - duct trailing edge to center body trailing edge\n# - center body trailing edge to end of wake\nnpanels = [30, 1, 30]\n\n# the duct trailing edge is ahead of the centerbody trailing edge.\ndte_minus_cbte = -1.0\n\n# number of wake sheets (one more than blade elements to use)\nnwake_sheets = 11\n\n# non-dimensional wake length aft of rear-most trailing edge\nwake_length = 0.8\n\n# assemble paneling constants\npaneling_constants = DuctAPE.PanelingConstants(\n nduct_inlet, ncenterbody_inlet, npanels, dte_minus_cbte, nwake_sheets, wake_length\n)\nnothing # hide","category":"page"},{"location":"DuctAPE/tutorial/#Assembling-the-DuctedRotor","page":"Getting Started","title":"Assembling the DuctedRotor","text":"","category":"section"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"We are now posed to construct the DuctedRotor input type.","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"# assemble ducted_rotor object\nducted_rotor = DuctAPE.DuctedRotor(\n duct_coordinates,\n centerbody_coordinates,\n rotor,\n paneling_constants,\n)\nnothing # hide","category":"page"},{"location":"DuctAPE/tutorial/#Operating-Point","page":"Getting Started","title":"Operating Point","text":"","category":"section"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"Next we will assemble the operating point which contains information about the freestream as well as the rotor rotation rate(s).","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"DuctAPE.OperatingPoint","category":"page"},{"location":"DuctAPE/tutorial/#DuctAPE.OperatingPoint-DuctAPE-tutorial","page":"Getting Started","title":"DuctAPE.OperatingPoint","text":"OperatingPoint(Vinf, rhoinf, muinf, asound, Omega)\n\nDuctedRotor operating point information.\n\nArguments\n\nVinf::AbstractVector{Float} : Freestream velocity magnitude (which is only in the axial direction).\nrhoinf::AbstractVector{Float} : Freestream density\nmuinf::AbstractVector{Float} : Freestream viscosity\nasound::AbstractVector{Float} : Freestream speed of sound\nOmega::AbstractVector{Float} : Rotor rototation rate(s)\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"# Freestream\nVinf = 0.0 # hover condition\nrhoinf = 1.226\nasound = 340.0\nmuinf = 1.78e-5\n\n# Rotation Rate\nRPM = 8000.0\nOmega = RPM * pi / 30 # if using RPM, be sure to convert to rad/s\n\n# utilizing the constructor function to put things in vector types\noperating_point = DuctAPE.OperatingPoint(Vinf, rhoinf, muinf, asound, Omega)\nnothing # hide","category":"page"},{"location":"DuctAPE/tutorial/#Reference-Parameters","page":"Getting Started","title":"Reference Parameters","text":"","category":"section"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"The reference parameters are used in the post-processing non-dimensionalizations.","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"DuctAPE.ReferenceParameters","category":"page"},{"location":"DuctAPE/tutorial/#DuctAPE.ReferenceParameters-DuctAPE-tutorial","page":"Getting Started","title":"DuctAPE.ReferenceParameters","text":"ReferenceParameters(Vref, Rref)\n\nReference parameters for post-process non-dimensionalization.\n\nNote that the actual struct requires the inputs to be arrays, but there is a constructor function that will take in scalars and automatically build the array-based struct.\n\nArguments\n\nVref::AbstractVector{Float} : Reference velocity.\nRref::AbstractVector{Float} : Reference rotor tip radius.\n\n\n\n\n\n","category":"type"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"# reference velocity (close to average axial velocity at rotor in this case)\nVref = 50.0\n\n# reference radius (usually tip radius of rotor)\nRref = Rtip\n\n# assemble reference parameters\nreference_parameters = DuctAPE.ReferenceParameters([Vref], [Rref])\nnothing # hide","category":"page"},{"location":"DuctAPE/tutorial/#Set-Options","page":"Getting Started","title":"Set Options","text":"","category":"section"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"The default options should be sufficient for just starting out and are set through the set_options function.","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"DuctAPE.set_options","category":"page"},{"location":"DuctAPE/tutorial/#DuctAPE.set_options-DuctAPE-tutorial","page":"Getting Started","title":"DuctAPE.set_options","text":"set_options(; kwargs...)\nset_options(multipoint; kwargs...)\n\nSet the options for DuctAPE to use.\n\nNote that the vast majority of the available options are defined through keyword arguments. See the documentation for the various option types for more information.\n\nArguments\n\nmultipoint::AbstractArray{OperatingPoint} : a vector of operating points to use if running a multi-point analysis.\n\n\n\n\n\n","category":"function"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"options = DuctAPE.set_options()","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"For more advanced option selection, see the examples and API reference.","category":"page"},{"location":"DuctAPE/tutorial/#Run-a-Single-Analysis","page":"Getting Started","title":"Run a Single Analysis","text":"","category":"section"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"With the ducted_rotor input build, and the options selected, we are now ready to run an analysis. This is done simply with the analyze function which dispatches the appropriate analysis, solve, and post-processing functions based on the selected options.","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"DuctAPE.analyze(::DuctAPE.DuctedRotor, ::DuctAPE.OperatingPoint, ::DuctAPE.ReferenceParameters, ::DuctAPE.Options)","category":"page"},{"location":"DuctAPE/tutorial/#DuctAPE.analyze-Tuple{DuctedRotor, OperatingPoint, ReferenceParameters, Options}-DuctAPE-tutorial","page":"Getting Started","title":"DuctAPE.analyze","text":"analyze(\n ducted_rotor::DuctedRotor,\n operating_point::OperatingPoint,\n reference_parameters::ReferenceParameters,\n options::Options=set_options();\n prepost_container_caching=nothing,\n solve_parameter_caching=nothing,\n solve_container_caching=nothing,\n return_inputs=false,\n)\n\nAnalyze ducted_rotor, including preprocessing.\n\nArguments\n\nducted_rotor::DuctedRotor : DuctedRotor input object (see docstring for DuctedRotor type)\noperating_point::OperatingPoint : OperatingPoint input object (see docstring for OperatingPoint type)\nreference_parameters::ReferenceParameters : ReferenceParameters input object (see docstring for ReferenceParameters type)\noptions::Options=set_options() : Options object (see set_options and related functions)\n\nKeyword Arguments\n\nprepost_container_caching=nothing : Output of allocate_prepost_container_cache\nsolve_parameter_caching=nothing : Output of allocate_solve_parameter_container_cache\nsolve_container_caching=nothing : Output of allocate_solve_container_cache\nreturn_inputs=false : flag as to whether or not to return the pre-processed inputs\n\nReturns\n\nouts::NamedTuple : Named Tuple of various analysis outputs (see docstring for postprocess for details), note, if linear system decomposition fails, no solve is performed and an empty vector is returned.\nins::NamedTuple : Named Tuple of various pre-processed inputs (e.g. panels and body linear system), will only be returned if return_inputs=true\nconvergence_flag : Flag for successful solve convergence\n\n\n\n\n\n","category":"method"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"outs, success_flag = DuctAPE.analyze(ducted_rotor, operating_point, reference_parameters, options)\nnothing # hide","category":"page"},{"location":"DuctAPE/tutorial/#Single-Run-Outputs","page":"Getting Started","title":"Single Run Outputs","text":"","category":"section"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"There are many outputs contained in the named tuple output from the analyze function (see the post_process docstring), but some that may be of immediate interest include:","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"# Total Thrust Coefficient\nouts.totals.CT","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"# Total Torque Coefficient\nouts.totals.CQ","category":"page"},{"location":"DuctAPE/tutorial/#Run-a-Multi-Point-Analysis","page":"Getting Started","title":"Run a Multi-Point Analysis","text":"","category":"section"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"In the case that one wants to run the same geometry at several different operating points, for example: for a range of advance ratios, there is another dispatch of the analyze function that accepts an input, multipoint, that is a vector of operating points.","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"DuctAPE.analyze(ducted_rotor::DuctedRotor,operating_point::AbstractVector{TO},reference_parameters::ReferenceParameters,options::Options) where TO<:OperatingPoint","category":"page"},{"location":"DuctAPE/tutorial/#DuctAPE.analyze-Union{Tuple{TO}, Tuple{DuctedRotor, AbstractVector{TO}, ReferenceParameters, Options}} where TO<:OperatingPoint-DuctAPE-tutorial","page":"Getting Started","title":"DuctAPE.analyze","text":"analyze(\n ducted_rotor::DuctedRotor,\n operating_point::AbstractVector{OperatingPoint},\n reference_parameters::ReferenceParameters,\n options::Options=set_options();\n prepost_container_caching=nothing,\n solve_parameter_caching=nothing,\n solve_container_caching=nothing,\n return_inputs=false,\n)\n\nAnalyze ducted_rotor, including preprocessing, for a set of operating points.\n\nArguments\n\nducted_rotor::DuctedRotor : DuctedRotor input object\noperating_point::AbstractVector{OperatingPoint} : Vector of Operating Points at which to analyze the ducted_rotor\nreference_parameters::ReferenceParameters : ReferenceParameters input object (see docstring for ReferenceParameters type)\noptions::Options=set_options() : Options object\n\nKeyword Arguments\n\nprepost_container_caching=nothing : Output of allocate_prepost_container_cache\nsolve_parameter_caching=nothing : Output of allocate_solve_parameter_container_cache\nsolve_container_caching=nothing : Output of allocate_solve_container_cache\nreturn_inputs=false : flag as to whether or not to return the pre-processed inputs\n\nReturns\n\nouts::Vector{NamedTuple} : Vector of named tuples of various analysis outputs (see docstring for postprocess for details), note, if linear system decomposition fails, no solve is performed and an empty vector is returned.\nins::NamedTuple : Named Tuple of various pre-processed inputs (e.g. panels and body linear system), will only be returned if return_inputs=true\nconvergence_flag : Flag for successful solve convergence\n\n\n\n\n\n","category":"method"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"Running a multi-point analysis on the example geometry given there, it might look something like this:","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"# - Advance Ratio Range - #\nJs = range(0.0, 2.0; step=0.01)\n\n# - Calculate Vinfs - #\nD = 2.0 * rotor.Rtip[1] # rotor diameter\nn = RPM / 60.0 # rotation rate in revolutions per second\nVinfs = Js * n * D\n\n# - Set Operating Points - #\noperating_points = [deepcopy(operating_point) for i in 1:length(Vinfs)]\nfor (iv, v) in enumerate(Vinfs)\n operating_points[iv].Vinf[] = v\nend\n\n# - Run Multi-point Analysis - #\nouts_vec, success_flags = DuctAPE.analyze(ducted_rotor, operating_points, reference_parameters, DuctAPE.set_options(operating_points))\nnothing #hide","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"There are a few things to note here.","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"We want to make sure that the operating point objects we put into the input vector are unique instances.\nWe need to use the dispatch of set_options that accepts the operating point vector to set up the right number of things in the background (like convergence flags for each operating point).\nThe outputs of the analysis are vectors of the same outputs for a single analysis.","category":"page"},{"location":"DuctAPE/tutorial/#Multi-point-Outputs","page":"Getting Started","title":"Multi-point Outputs","text":"","category":"section"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"For multi-point analysis outputs, which are given as a vector of output objects, we might access and plot things as follows. We also take the opportunity to present some verification against DFDC, showing that DuctAPE matches remarkably well (within 0.5%) of DFDC. We therefore first provide data from DFDC analyses of the above example geometry at various advance ratios.","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"# Verification Data From DFDC\n\ndfdc_jept = [\n 0.0 0.0 0.64763 0.96692\n 0.1 0.1366 0.64716 0.88394\n 0.2 0.2506 0.6448 0.80785\n 0.3 0.3457 0.64044 0.73801\n 0.4 0.4251 0.63401 0.67382\n 0.5 0.4915 0.62534 0.61468\n 0.6 0.547 0.61428 0.56001\n 0.7 0.5935 0.6006 0.50925\n 0.8 0.6326 0.58411 0.46187\n 0.9 0.6654 0.56452 0.41738\n 1.0 0.693 0.54158 0.37531\n 1.1 0.716 0.51499 0.33522\n 1.2 0.7349 0.48446 0.2967\n 1.3 0.7499 0.44966 0.25937\n 1.4 0.7606 0.41031 0.2229\n 1.5 0.7661 0.36604 0.18694\n 1.6 0.7643 0.31654 0.15121\n 1.7 0.7506 0.26153 0.11547\n 1.8 0.7126 0.20061 0.07941\n 1.9 0.61 0.13355 0.04287\n 2.0 0.1861 0.05993 0.00558\n]\n\ndfdc_J = dfdc_jept[:,1]\ndfdc_eta = dfdc_jept[:,2]\ndfdc_cp = dfdc_jept[:,3]\ndfdc_ct = dfdc_jept[:,4]\nnothing #hide","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"We can then access the various multi-point analysis outputs however is convenient, we choose a broadcasting approach here:","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"\n# - extract efficiency, power, and thrust coefficients - #\n# efficiency\neta = (p->p.totals.total_efficiency[1]).(outs_vec)\n# power\ncp = (p->p.totals.CP[1]).(outs_vec)\n# thrust\nct = (p->p.totals.CT[1]).(outs_vec)\nnothing #hide","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"And then we can plot the data to compare DFDC and DuctAPE.","category":"page"},{"location":"DuctAPE/tutorial/","page":"Getting Started","title":"Getting Started","text":"using Plots\n\n# set up efficiency plot\npe = plot(; xlabel=\"Advance Ratio\", ylabel=\"Efficiency\")\n\n# plot DFDC data\nplot!(\n pe,\n dfdc_J,\n dfdc_eta;\n seriestype=:scatter,\n markersize=5,\n markercolor=plotsgray,\n markerstrokecolor=plotsgray,\n label=\"DFDC\"\n)\n\n# Plot DuctAPE outputs\nplot!(pe, Js, eta; linewidth=2, color=primary, label = \"DuctAPE\")\n\n# setup cp/ct plot\nppt = plot(; xlabel=\"Advance Ratio\")\n\n# plot DFDC data\nplot!(\n ppt,\n dfdc_J,\n dfdc_cp;\n seriestype=:scatter,\n markersize=5,\n markercolor=plotsgray,\n markerstrokecolor=primary,\n markerstrokewidth=2,\n label=\"DFDC Cp\"\n)\nplot!(\n ppt,\n dfdc_J,\n dfdc_ct;\n seriestype=:scatter,\n markersize=5,\n markercolor=plotsgray,\n markerstrokecolor=secondary,\n markerstrokewidth=2,\n label=\"DFDC Ct\"\n)\n\n# plot DuctAPE outputs\nplot!(\n ppt,\n Js,\n cp;\n linewidth=1.5,\n color=primary,\n label=\"DuctAPE Cp\"\n)\nplot!(\n ppt,\n Js,\n ct;\n linewidth=1.5,\n color=secondary,\n label=\"DuctAPE Ct\"\n)\n\nplot(pe, ppt; size=(700,350), layout=(1,2), margin=2mm)","category":"page"},{"location":"DuctAPE/api/api_index/#Index","page":"API Index","title":"Index","text":"","category":"section"},{"location":"DuctAPE/api/api_index/","page":"API Index","title":"API Index","text":"Modules=[DuctAPE]","category":"page"}] +} diff --git a/v0.5.0/siteinfo.js b/v0.5.0/siteinfo.js new file mode 100644 index 00000000..06e1faf7 --- /dev/null +++ b/v0.5.0/siteinfo.js @@ -0,0 +1 @@ +var DOCUMENTER_CURRENT_VERSION = "v0.5.0"; diff --git a/versions.js b/versions.js index 5eb575c1..d21b834b 100644 --- a/versions.js +++ b/versions.js @@ -1,7 +1,8 @@ var DOC_VERSIONS = [ "stable", + "v0.5", "v0.4", "dev", ]; -var DOCUMENTER_NEWEST = "v0.4"; +var DOCUMENTER_NEWEST = "v0.5.0"; var DOCUMENTER_STABLE = "stable";