Reference

PicardLefschetzIntegration.index — Type
index

The indices that span a simplex. coord::Vector{Int} The indices of the simplex refering to vertices in the vector points. active When the simplex is active, it is still part of the Picard Lefschetz flow.

source
PicardLefschetzIntegration.parameters — Type
parameters

Contains the parameters of the Picard Lefschetz integration method.

dim         The dimension of the integral.
δ           The maximal edge length of the simplices.
τ           Threshold on the real part of the exponent.
ϵ           The steps size of the downward flow.
N           The number of steps in the downward flow.
n           The order of the simplex quadrature integration scheme.
source
PicardLefschetzIntegration.point — Type
point

A point with two boolian attributes. The first determines whether the point is active. The second determines whether the point flows or stays fixed.

coord::Vector{Complex}  The coordinates of the point.
active                  When the point is active, it is still part of the Picard Lefschetz flow.
frozen                  When a point is fozen, it does not flow. This is particularly relevant for points on the boundary of the integration domain.
source
PicardLefschetzIntegration.quadrature — Type
quadrature

The simplex quadrature rule on a thimble. Building it once and reusing it avoids repeating the setup in every call of PL_integrate, for instance when evaluating the integral for many values of the parameters on the same thimble.

nodes::Matrix{ComplexF64}       The quadrature nodes, one per column.
weights::Vector{ComplexF64}     The quadrature weights multiplied by the Jacobian of their simplex.
vertices::Matrix{ComplexF64}    The vertices of the thimble, one per column.
simplices::Vector{Vector{Int}}  The indices of the vertices spanning each simplex.
npts::Int                       The number of quadrature nodes per simplex.
source
PicardLefschetzIntegration.PL_integrate — Method
PL_integrate(S, Q::quadrature, pars::parameters)

Evaluate the integral ∫exp(im * S(x))dx with the quadrature rule Q on the thimble. Simplices on which the real part of im * S is below the threshold pars.τ at all vertices are skipped.

source
PicardLefschetzIntegration.divide — Function
divide(thim, pars::parameters, dictionary = Dict{Vector{Int}, Int}())

Subdivide the simplices that have an edge longer than the threshold pars.δ by bisecting their longest edge. A simplex whose edges are all shorter than pars.δ, but which has an edge that was bisected in a neighbouring simplex, is bisected along that edge, so that the triangulation stays conforming. The dictionary maps the bisected edges to the index of their midpoint.

source
PicardLefschetzIntegration.divide_rep — Method
divide_rep(thim::thimble, pars::parameters)

Repeat subdivision till all edges of the simplices are shorter than par.δ. The bisected edges are remembered across the repetitions, so that no hanging vertices remain.

source
PicardLefschetzIntegration.initialGrid — Function
initialGrid(min, max, pars::parameters, frozen = false)

Initialize a cubic grid with the lower left corner min and the upper right corner max. When forzen = true, the boundary points do not flow.

source