Marching Squares Algorithm
Ludwig generates the energy contours for its Fermi-surface centered meshes using a simple marching squares algorithm. This implementation is inspired by Contour.jl, but has been modified to generate contours bounded by a convex polygon. This is useful for generating the contours only within the (irreducible) Brillouin zone to create meshes that fully preserve the symmetry of the lattice.
Resulting contours are returned in the convenient Isoline Bundle which stores information about the size and topology of the Fermi surface.
Ludwig.MarchingSquares.Isoline — Type
MarchingSquares.IsolineRepresentation of a contour as an ordered set of discrete points.
Fields
points: Vector of points in contourisclosed: Boolean which istrueif the contour returned to the starting point when being generatedarclength: Length of the contour
Ludwig.MarchingSquares.IsolineBundle — Type
MarchingSquares.IsolineBundleContainer of contours corresponding to the same level set.
Fields
isolines: Vector of Isolineslevel: Constant value along contours inisolines