BinnedPointList

SimplexGridFactory.BinnedPointListType
mutable struct BinnedPointList{T}

Binned point list structure allowing for fast check for already existing points.

This provides better performance for indendifying already inserted points than the naive linear search.

OTOH the implementation is still quite naive - it dynamically maintains a cuboid bining region with a fixed number of bins.

Probably tree based adaptive methods (a la octree) will be more efficient, however they will be harder to implement.

In an ideal world, we would maintain a dynamic Delaunay triangulation, which at once could be the starting point of mesh generation which will follow here anyway.

SimplexGridFactory.BinnedPointListMethod
BinnedPointList(, dim; tol, number_of_directional_bins, binning_region_increase_factor, num_allowed_unbinned_points, max_unbinned_ratio)
BinnedPointList(dim; kwargs...)

Create and initialize binned point list

Base.insert!Method
insert!(bpl, p)

If another point with distance less the tol from p is in pointlist, return its index. Otherwise, insert point into pointlist.

Mesh generator interface

ExtendableGrids.simplexgridMethod
simplexgrid(::Type{SimplexGridFactory.TriangulateType}, Triangulate::Any, input::Any; kwargs...) -> ExtendableGrid{_A, _B} where {_A, _B}

Create Grid from Triangle input data.

See default_options for available kwargs.

SimplexGridFactory.triangulateioMethod
triangulateio(Triangulate::Any; points, bfaces, bfaceregions, regionpoints, regionnumbers, regionvolumes) -> Any

Create a TriangulateIO structure from a number of input arrays. The 2D input arrays are transposed if necessary and converted to the proper data types for Triangulate.

This conversion is not performed if the data types are those indicated in the defaults and the leading dimension of 2D arrays corresponds to the space dimension.

ExtendableGrids.simplexgridMethod
simplexgrid(::Type{SimplexGridFactory.TetGenType}, TetGen::Any, input::Any; kwargs...) -> ExtendableGrid{_A, _B} where {_A, _B}

Create Grid from TetGen data.

See default_options for available kwargs.

SimplexGridFactory.tetgenioMethod
tetgenio(TetGen::Any; points, bfaces, bfaceregions, regionpoints, regionnumbers, regionvolumes) -> Any

Create a RawTetGenIO structure from a number of input arrays. The 2D input arrays are transposed if necessary and converted to the proper data types for TetGen.

This conversion is not performed if the data types are those indicated in the defaults and the leading dimension of 2D arrays corresponds to the space dimension.

SimplexGridFactory.tetgenioMethod
tetgenio(this::SimplexGridBuilder) -> Any

Create tetgen input from the current state of the builder.

ExtendableGrids.simplexgridMethod
function simplexgrid(Generator;
                     points=Array{Cdouble,2}(undef,0,0),
                     bfaces=Array{Cint,2}(undef,0,0),
                     bfaceregions=Array{Cint,1}(undef,0),
                     regionpoints=Array{Cdouble,2}(undef,0,0),
                     regionnumbers=Array{Cint,1}(undef,0),
                     regionvolumes=Array{Cdouble,1}(undef,0);
                     kwargs...
                  )

Create Grid from a number of input arrays. The 2D input arrays are transposed if necessary and converted to the proper data types for Triangulate or TetGen

This conversion is not performed if the data types are those indicated in the defaults and the leading dimension of 2D arrays corresponds to the space dimension.

See default_options for available kwargs.