diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index 4aa86714..f486e74e 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.11.1","generation_timestamp":"2024-11-11T19:42:59","documenter_version":"1.7.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.11.1","generation_timestamp":"2024-11-14T15:07:34","documenter_version":"1.8.0"}} \ No newline at end of file diff --git a/dev/adjacency/index.html b/dev/adjacency/index.html index b26eaacf..d038cfbd 100644 --- a/dev/adjacency/index.html +++ b/dev/adjacency/index.html @@ -55,4 +55,4 @@

Number of targeta

source
ExtendableGrids.tryfixMethod
tryfix(
     a::Union{Array{T, 2}, VariableTargetAdjacency{T}}
 ) -> Any
-

Try to turn variable target adjacency into fixed target adjacency

source
+

Try to turn variable target adjacency into fixed target adjacency

source diff --git a/dev/allindex/index.html b/dev/allindex/index.html index 86dfa7ee..48763f08 100644 --- a/dev/allindex/index.html +++ b/dev/allindex/index.html @@ -1,2 +1,2 @@ -Index · ExtendableGrids.jl

Index

Types and Constructors

Constants

    Methods

    +Index · ExtendableGrids.jl

    Index

    Types and Constructors

    Constants

      Methods

      diff --git a/dev/arraytools/index.html b/dev/arraytools/index.html index 6ac9c5bf..a7ed0dae 100644 --- a/dev/arraytools/index.html +++ b/dev/arraytools/index.html @@ -1,4 +1,4 @@ Array tools · ExtendableGrids.jl

      Array tools

      API

      ExtendableGrids.geomspaceMethod
      geomspace(a, b, ha, hb; tol, maxiterations) -> Any
       

      (Try to) create a subdivision of interval (a,b) stored in the returned array X such that

      • X[1]==a, X[end]==b
      • (X[2]-X[1])<=ha+tol*(b-a)
      • (X[end]-X[end-1])<=hb+tol*(b-a)
      • There is a number q such that X[i+1]-X[i] == q*(X[i]-X[i-1])
      • X is the array with the minimal possible number of points with the above property

      Caveat: the algorithm behind this is tested for many cases but unproven.

      Returns an Array containing the points of the subdivision.

      source
      ExtendableGrids.glueMethod
      c=glue(a,b)

      Glue together two vectors a and b resulting in a vector c. They last element of a shall be equal (up to tol) to the first element of b. The result fulfills length(c)=length(a)+length(b)-1

      source
      ExtendableGrids.linspaceMethod
      linspace(a, b, n) -> Any
      -

      Resurrect linspace despite https://github.com/JuliaLang/julia/pull/25896#issuecomment-363769368

      source
      +

      Resurrect linspace despite https://github.com/JuliaLang/julia/pull/25896#issuecomment-363769368

      source diff --git a/dev/assembly/index.html b/dev/assembly/index.html index 673e7013..3aee58e0 100644 --- a/dev/assembly/index.html +++ b/dev/assembly/index.html @@ -1,2 +1,2 @@ -Assembly support · ExtendableGrids.jl

      Assembly support

      API

      ExtendableGrids.AT_NODESType
      abstract type AT_NODES <: AssemblyType

      causes interpolation at vertices of the grid (only for H1-conforming interpolations)

      source
      +Assembly support · ExtendableGrids.jl

      Assembly support

      API

      ExtendableGrids.AT_NODESType
      abstract type AT_NODES <: AssemblyType

      causes interpolation at vertices of the grid (only for H1-conforming interpolations)

      source
      diff --git a/dev/assets/documenter.js b/dev/assets/documenter.js index 235cb2e5..c802defb 100644 --- a/dev/assets/documenter.js +++ b/dev/assets/documenter.js @@ -613,176 +613,194 @@ function worker_function(documenterSearchIndex, documenterBaseURL, filters) { }; } -// `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(); -}; +function runSearchMainCode() { + // `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)); + + // 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(); + } + }); -$(document).on("click", ".search-filter", function () { - if ($(this).hasClass("search-filter-selected")) { - selected_filter = ""; - } else { - selected_filter = $(this).text().toLowerCase(); + function launch_search() { + worker_is_running = true; + last_search_text = $(".documenter-search-input").val(); + worker.postMessage(last_search_text); } - // This updates search results and toggles classes for UI: - update_search(); -}); + worker.onmessage = function (e) { + if (last_search_text !== $(".documenter-search-input").val()) { + launch_search(); + } else { + worker_is_running = false; + } -/** - * Make/Update the search component - */ -function update_search() { - let querystring = $(".documenter-search-input").val(); + unfiltered_results = e.data; + update_search(); + }; - if (querystring.trim()) { - if (selected_filter == "") { - results = unfiltered_results; + $(document).on("click", ".search-filter", function () { + if ($(this).hasClass("search-filter-selected")) { + selected_filter = ""; } else { - results = unfiltered_results.filter((result) => { - return selected_filter == result.category.toLowerCase(); - }); + selected_filter = $(this).text().toLowerCase(); } - let search_result_container = ``; - let modal_filters = make_modal_body_filters(); - let search_divider = `
      `; + // This updates search results and toggles classes for UI: + update_search(); + }); - 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); - } - } + /** + * Make/Update the search component + */ + function update_search() { + let querystring = $(".documenter-search-input").val(); - if (count == 1) { - count_str = "1 result"; - } else if (count == 200) { - count_str = "200+ results"; + if (querystring.trim()) { + if (selected_filter == "") { + results = unfiltered_results; } else { - count_str = count + " results"; + results = unfiltered_results.filter((result) => { + return selected_filter == result.category.toLowerCase(); + }); } - let result_count = `
      ${count_str}
      `; - search_result_container = ` + 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} - ${result_count} -
      - ${search_results} -
      -
      +
      0 result(s)
      + +
      No result found!
      `; - } 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"); - } + 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(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!
      + `); } + } - $(".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} +
      `; } } -/** - * 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} -
      `; +function waitUntilSearchIndexAvailable() { + // It is possible that the documenter.js script runs before the page + // has finished loading and documenterSearchIndex gets defined. + // So we need to wait until the search index actually loads before setting + // up all the search-related stuff. + if (typeof documenterSearchIndex !== "undefined") { + runSearchMainCode(); + } else { + console.warn("Search Index not available, waiting"); + setTimeout(waitUntilSearchIndexAvailable, 1000); + } } +// The actual entry point to the search code +waitUntilSearchIndexAvailable(); + }) //////////////////////////////////////////////////////////////////////////////// require(['jquery'], function($) { diff --git a/dev/binnedpointlist/index.html b/dev/binnedpointlist/index.html index df68ed15..13ea5580 100644 --- a/dev/binnedpointlist/index.html +++ b/dev/binnedpointlist/index.html @@ -1,2 +1,2 @@ -BinnedPointList · ExtendableGrids.jl

      BinnedPointList

      Used to find and identify points in space

      API

      ExtendableGrids.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 binning 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.

      • dim::Int32: Space dimension
      • tol::Any: Point distance tolerance. Points closer than tol (in Euclidean distance) will be identified, i.e. are collapsed to the first inserted.
      • binning_region_min::Vector: " The union of all bins is the binning region - a cuboid given by two of its corners. It is calculated dynamically depending on the inserted points.
      • binning_region_max::Vector

      • binning_region_increase_factor::Any: Increase factor of binning region (with respect to the cuboid defined by the coordinates of the binned points)

      • points::ElasticArrays.ElasticArray{T, 2, M, V} where {T, M, V<:DenseVector{T}}: The actual point list
      • bins::Array{Vector{Int32}}: The bins are vectors of indices of points in the point list We store them in a dim-dimensional array of length "numberofdirectional_bins^dim"
      • number_of_directional_bins::Int32: Number of bins in each space dimension
      • unbinned::Vector{Int32}: Some points will fall outside of the binning region. We collect them in vector of ubinned point indices
      • num_allowed_unbinned_points::Int32: Number of unbinned points tolerated without rebinning
      • max_unbinned_ratio::Any: Maximum ratio of unbinned points in point list
      • current_bin::Vector{Int32}: Storage of current point bin
      source
      ExtendableGrids.findpointFunction
      findpoint(binnedpointlist, p)

      Find point in binned point list. Return its index in the point list if found, otherwise return 0.

      source
      Base.insert!Function
       Base.insert!(binnedpointlist,p)

      If another point with distance less the tol from p is in pointlist, return its index. Otherwise, insert point into pointlist. p may be a vector or a tuple.

      source
       Base.insert!(binnedpointlist,x)

      Insert 1D point via coordinate.

      source
       Base.insert!(binnedpointlist,x,y,z)

      Insert 3D point via coordinates.

      source

      Internal

      ExtendableGrids._findpointFunction
      _findpoint(binnedpointlist, index, p)

      Find point in index list (by linear search) Return its index, or zero if not found

      source
      ExtendableGrids._rebin_all_points!Function
      _rebin_all_points!(bpl)

      Re-calculate binning if there are too many unbinned points This amounts to two steps:

      • Enlarge binning area in order to include all points
      • Re-calculate all point bins
      source
      ExtendableGrids.naiveinsert!Function
      naiveinsert(binnedpointlist, p)

      Insert via linear search, without any binning. Just for being able to check of all of the above was worth the effort...

      source
      +BinnedPointList · ExtendableGrids.jl

      BinnedPointList

      Used to find and identify points in space

      API

      ExtendableGrids.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 binning 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.

      • dim::Int32: Space dimension
      • tol::Any: Point distance tolerance. Points closer than tol (in Euclidean distance) will be identified, i.e. are collapsed to the first inserted.
      • binning_region_min::Vector: " The union of all bins is the binning region - a cuboid given by two of its corners. It is calculated dynamically depending on the inserted points.
      • binning_region_max::Vector

      • binning_region_increase_factor::Any: Increase factor of binning region (with respect to the cuboid defined by the coordinates of the binned points)

      • points::ElasticArrays.ElasticArray{T, 2, M, V} where {T, M, V<:DenseVector{T}}: The actual point list
      • bins::Array{Vector{Int32}}: The bins are vectors of indices of points in the point list We store them in a dim-dimensional array of length "numberofdirectional_bins^dim"
      • number_of_directional_bins::Int32: Number of bins in each space dimension
      • unbinned::Vector{Int32}: Some points will fall outside of the binning region. We collect them in vector of ubinned point indices
      • num_allowed_unbinned_points::Int32: Number of unbinned points tolerated without rebinning
      • max_unbinned_ratio::Any: Maximum ratio of unbinned points in point list
      • current_bin::Vector{Int32}: Storage of current point bin
      source
      ExtendableGrids.findpointFunction
      findpoint(binnedpointlist, p)

      Find point in binned point list. Return its index in the point list if found, otherwise return 0.

      source
      Base.insert!Function
       Base.insert!(binnedpointlist,p)

      If another point with distance less the tol from p is in pointlist, return its index. Otherwise, insert point into pointlist. p may be a vector or a tuple.

      source
       Base.insert!(binnedpointlist,x)

      Insert 1D point via coordinate.

      source
       Base.insert!(binnedpointlist,x,y,z)

      Insert 3D point via coordinates.

      source

      Internal

      ExtendableGrids._findpointFunction
      _findpoint(binnedpointlist, index, p)

      Find point in index list (by linear search) Return its index, or zero if not found

      source
      ExtendableGrids._rebin_all_points!Function
      _rebin_all_points!(bpl)

      Re-calculate binning if there are too many unbinned points This amounts to two steps:

      • Enlarge binning area in order to include all points
      • Re-calculate all point bins
      source
      ExtendableGrids.naiveinsert!Function
      naiveinsert(binnedpointlist, p)

      Insert via linear search, without any binning. Just for being able to check of all of the above was worth the effort...

      source
      diff --git a/dev/cellfinder/index.html b/dev/cellfinder/index.html index f1272ce4..54d0705f 100644 --- a/dev/cellfinder/index.html +++ b/dev/cellfinder/index.html @@ -1,2 +1,2 @@ -Search and Interpolation · ExtendableGrids.jl

      Search and Interpolation

      ExtendableGrids.gFindLocal!Function
      icellfound=GFindLocal!(xref,cellfinder,p; icellstart=1,eps=1.0e-14, trybrute=true)

      Find cell containing point p starting with cell number icellstart.

      Returns cell number if found, zero otherwise. If trybrute==true try gFindBruteForce! before giving up. Upon return, xref contains the barycentric coordinates of the point in the sequence dim+1, 1...dim

      Warning

      Currently implemented for simplex grids only.

      source
      ExtendableGrids.gFindBruteForce!Function
      icellfound=gFindBruteForce!(xref,cellfinder,p; icellstart=1,eps=1.0e-14)

      Find cell containing point p starting with cell number icellstart.

      Returns cell number if found, zero otherwise. Upon return, xref contains the barycentric coordinates of the point in the sequence dim+1, 1...dim

      Warning

      Currently implemented for simplex grids only.

      source

      Interpolation

      ExtendableGrids.interpolateFunction
      u_to=interpolate(grid_to, u_from, grid_from;eps=1.0e-14,trybrute=true)

      Piecewise linear interpolation of function u_from on grid grid_from to grid_to. Works for matrices with second dimension corresponding to grid nodes and for vectors.

      Warning

      May be slow on non-convex domains. If trybrute==false it may even fail.

      Warning

      Currently implemented for simplex grids only.

      source
      +Search and Interpolation · ExtendableGrids.jl

      Search and Interpolation

      ExtendableGrids.gFindLocal!Function
      icellfound=GFindLocal!(xref,cellfinder,p; icellstart=1,eps=1.0e-14, trybrute=true)

      Find cell containing point p starting with cell number icellstart.

      Returns cell number if found, zero otherwise. If trybrute==true try gFindBruteForce! before giving up. Upon return, xref contains the barycentric coordinates of the point in the sequence dim+1, 1...dim

      Warning

      Currently implemented for simplex grids only.

      source
      ExtendableGrids.gFindBruteForce!Function
      icellfound=gFindBruteForce!(xref,cellfinder,p; icellstart=1,eps=1.0e-14)

      Find cell containing point p starting with cell number icellstart.

      Returns cell number if found, zero otherwise. Upon return, xref contains the barycentric coordinates of the point in the sequence dim+1, 1...dim

      Warning

      Currently implemented for simplex grids only.

      source

      Interpolation

      ExtendableGrids.interpolateFunction
      u_to=interpolate(grid_to, u_from, grid_from;eps=1.0e-14,trybrute=true)

      Piecewise linear interpolation of function u_from on grid grid_from to grid_to. Works for matrices with second dimension corresponding to grid nodes and for vectors.

      Warning

      May be slow on non-convex domains. If trybrute==false it may even fail.

      Warning

      Currently implemented for simplex grids only.

      source
      diff --git a/dev/changes/index.html b/dev/changes/index.html index 0c2a2a32..d32711f5 100644 --- a/dev/changes/index.html +++ b/dev/changes/index.html @@ -1,2 +1,2 @@ -Changes · ExtendableGrids.jl

      Changelog

      2024-10-28

      Moved repositiory from https://github.com/j-fu/ExtendableGrids.jl to https://github.com/WIAS-PDELib/ExtendableGrids.jl. WIAS-PDELib is a github organization created to collectively manage the Julia packages developed under the lead of the WIAS Numerical Mathematics and Scientific Computing research group. According to the github docs on repository transfer, all links to the previous repository location are automatically redirected to the new location, and all relationships with forks stay intact.

      [1.10.0] - 2024-09-29

      • Allow to map funtions with vector arguments onto grid E.g. for f(x)=sum(x) one can now do map(f,grid).
      • Make parts of simplexgrid constructor optional. E.g. it is possible now to do just simplexgrid(coord, cellnodes). In that case, e.g. grid[BFaceRegions] will return a zero length vector.

      [1.9.0] - 2024-07-07

      • Add edge partitioning induced from cell partitioning
      • Overhaul of partitioning API

      [1.8.0] - 2024-06-24

      • Correct node partitioning
      • extended sg file format v2.2 with partitioning info
      • Recursive metis partitioning

      [1.7.0] - 2024-06-17

      • Partitioning for multithreading
      • Metis extension
      • extended subgrid method (new argument 'support' can be ON_CELLS, ON_BFACES, ON_FACES)
      • SubGrid type has now a parameter that knows the support relative to parent grid, removed BoundarySubGrid type
      • removed get_facegrid, get_bfacegrid, get_edgegrid in derived.jl (that offer no new functionality compared to subgrid)
      • fixed default behaviour for coordinatesystem and restricted 1D coordinate sorting to project = true

      [1.6.1] - 2024-06-07

      • Drop support of Julia 1.6. Minimum Julia version is 1.9
      • TetGen + Triangulate extensions
      • png instead of svg in docs

      [1.5.1] - 2024-05-06

      • Grid consistency check
      • Gmsh 0.3

      [1.4.0] - 2024-03-21

      Features

      • Move binnedpointlist to ExtendableGrids

      • New grid glueing algorithm using BinnedPointList

      • Fix docs, test

      • Merge pull request #42 from j-fu/mvbinned

      Move binned pointlist over here and use it for glueing

      • Update! function to trigger reinstantioation of grid components; instantiate of Volumes components and FaceNormals and EdgeTangents keep existing arrays.

      • Merge pull request #41 from chmerdon/master

      Reinstantiation of CellVolumes, FaceNormals etc.

      [1.3.2] - 2024-03-08

      Features

      • Fix documentation, all docstrings in output

      • Update ci for apple silicon

      • Add docstrings for commongrids

      • Add Aqua.jl tests

      • SimplexGridFactory isn't differently licensed

      • Bump patch version

      [1.3.1] - 2024-02-20

      Features

      • Fix subgrid coordinate system for boundary grids (#38)

      • fix subgrid coordinate system for boundary grids

      • use ExampleJuggler v2 (no Pluto dependency due to extensions)

      [1.3.0] - 2024-02-05

      Features

      • Merge branch 'master' of https://github.com/chmerdon/ExtendableGrids.jl

      • New grid components ParentGridRelation, FaceParents, CellParents, BFaceParents,

      some of them are now directly set during subgrid or refinement routines (todo: set BFaceParents also in refinements)

      • Small fix

      • Small fix

      • Added BFaceParents to all refinement routines and some tests

      • Renamed NodeInParent to NodeParents, added a deprecated warning on this

      • New grid components ParentGridRelation, FaceParents, CellParents, BFaceParents,

      some of them are now directly set during subgrid or refinement routines (todo: set BFaceParents also in refinements)

      • Small fix

      • Small fix

      • Added BFaceParents to all refinement routines and some tests

      • Renamed NodeInParent to NodeParents, added a deprecated warning on this

      • Merge branch 'master' of github.com:j-fu/ExtendableGrids.jl

      [1.2.3] - 2024-01-19

      Features

      • Fix for subgrid in case there is empty boundary data in the parent grid (or probably also when the subgrid lies completely in the interior)

      • Modified the subgrid+extrusion test a bit to test if a subgrid for a completely interior region works (and it only does with the previous modifications)

      • Fix for subgrid in case there is empty boundary data (#36)

      • fix for subgrid in case there is empty boundary data in the parent grid (or probably also when the subgrid lies completely in the interior)

      • modified the subgrid+extrusion test a bit to test if a subgrid for a completely interior region works (and it only does with the previous modifications)
      • Bump patch version

      [1.2.2] - 2023-11-29

      Features

      • Add more gmsh stuff

      • handle geo files

      • allow for simplexgrid("my.msh") and simplexgrid("my.geo")

      • allow for `write("my.msh",grid)

      • file handling with gmsh initializes and finalizes

      • Bump version

      [1.2.1] - 2023-11-28

      Features

      • Bugfixes for gmsh extension

      • handle node tags properly

      • add more examples from gmsh docs

      [1.2.0] - 2023-11-23

      Features

      • Gmsh extension3 (#34)

      • Update ExtendableGridsGmshExt.jl

      • Add the seal function

      Computes the boundary faces of an incomplete simplexgrid and adds them to it

      • simplexgrid + mixedgrid functions for the gmsh extension are defined
      • add tests with different types (of indices & coordinates) for gmsh Y ExtendableGrids
      • add gmsh geometry description test
      • Document the gmsh stuff

      Co-authored-by: Jürgen Fuhrmann <juergen-fuhrmann@web.de>

      • Use ExampleJuggler (#35)

      • moved tests to examplejuggler

      • move documentation to examplejuggler

      • Add gmsh example

      • Small readme+docs update

      • Add J. Taraz to author lists

      [1.1.0] - 2023-07-25

      Features

      • Update Project.toml

      change Project.toml to incorporate the extension

      • Create ExtendableGridsGmshExt.jl
      • Update ExtendableGridsGmshExt.jl

      upload the (gmsh-) extension code

      • Update simplexgrid.jl

      include function definitions with implementations in the gmsh extension

      • Gmsh-files for tests
      • (g)msh-files for the test of the extension
      • Delete sto_2d.msh
      • Delete sto_3d.msh
      • Update runtests.jl

      added the tests of the gmsh extension

      • Update Project.toml

      add dependencies for the gmsh extension

      • Update Project.toml
      • Update runtests.jl
      • Merge pull request #32 from jotaraz/master

      gmsh ext

      • Add requires for 1.6

      • Remove assignment to gms.model for Julia <1.9

      • Remove dummy simplexgrid(module)

      • Bump version

      • Merge pull request #33 from j-fu/gmsh-extension2

      add requires for 1.6

      [1.0.0] - 2023-07-22

      Features

      • GeometryGroups (#27)

      • new type CellGeometryGroups that collect all cells of same CellGeometry as ordered in UniqueCellGeometries

      • view for VariableTargetAdjacency, less allocation in FaceNodes for mixed geometries

      Co-authored-by: Christian Merdon <merdon@wias-berlin.de>

      • Allow non-leaf types in ElementGeometries

      • New type CellGeometryGroups that collect all cells of same CellGeometry as ordered in UniqueCellGeometries

      • Added also FaceGeometryGroups etc. and assembly helpers

      • Init BEdgeRegions with an array, so that test for bedgemask works again

      • GeometryGroups > AssemblyGroups

      • Some small corrections, view for VariableTargetAdjacency, less allocation in FaceNodes for mixed geometries

      • Some small improvements

      • Merge pull request #31 from j-fu/geometry_groups

      some small changes

      • Merge branch 'master' into quadmeshes

      • Merge pull request #30 from j-fu/quadmeshes

      Prepare for quadrilateral and cuboidal elements

      • Set cairomakie invisible in tests

      • Set version to 1.0 for better semver

      [0.9.17] - 2023-02-10

      Features

      • Fix print_tree calls

      • Sorting coordinates of 1D subgrids

      • Use CairoMakie for plotting tests & docs

      • Merge pull request #22 from j-fu/sort1dsubgrids

      Sort 1d subgrids

      [0.9.16] - 2022-11-30

      Features

      • Remove allocation regression in Julia 1.9 - return Matrices as local_celledgenodes etc. instead of adjoints

      [0.9.15] - 2022-10-22

      Features

      • Cleanup type handling for simplexgrid constructors, 0.9.15

      • Fixes stackoverflow error when calling simplexgrid with arrays of different index types

      • Detect index types from CellNode arrays

      • replace collectorassign by convert

      • add bregions, cellregion constructor to tensor grid constructor

      • Version bump

      • Fix CI for 1.6

      • Fix CI for 1.6 - again

      [0.9.14] - 2022-10-19

      Features

      • BFaceRegions in grid after uniform_refine are still VectorOfConstants if BFaceRegions in source grid has been VectorOfConstants

      • Introduce barrier in volume calculation (#19)

      • Bump version

      [0.9.13] - 2022-09-13

      Features

      • Fix unit test for writevtk

      • Create Invalidations.yml (#16)

      • Create Invalidations.yml

      This is based on https://github.com/julia-actions/julia-invalidations. Adding such checks came up in https://discourse.julialang.org/t/potential-performance-regressions-in-julia-1-8-for-special-un-precompiled-type-dispatches-and-how-to-fix-them/86359. I suggest to add this check here since this package is widely used as a dependency.

      See also SciML/MuladdMacro.jl#26 and SciML/MuladdMacro.jl#29

      • Missing bracket (#18)
      • Bump version, allow AbstractTrees 0.4

      [0.9.12] - 2022-06-23

      Features

      • Piecewise linear interpolation between simplexgrids

      [0.9.11] - 2022-06-21

      Features

      • Speed up of hot loops in bfacemask! and cellmask!

      [0.9.10] - 2022-06-16

      Features

      • Bregion numbers can now be functions of the current region, or zero to erase

      [0.9.9] - 2022-06-16

      Features

      • Bugfix for 3D rect!

      [0.9.8] - 2022-06-15

      Features

      • Bump to 0.9.8 - missed some commits

      [0.9.7] - 2022-06-15

      Features

      • Fix superfluous corner triangles in subgrid generation

      • Added rect! to regionedit - place surface info into rectangular grid

      [0.9.6] - 2022-05-13

      Features

      • Added barycentric refinement for Tetrahedron3D and some tests for uniform and barycentric refinement

      [0.9.5] - 2022-03-27

      Features

      • Improve glue performance
      • allow to restrict tested regions
      • removed allocations in main loop

      [0.9.4] - 2022-03-24

      Features

      • Added FaceEdgeSigns, version bump

      [0.9.3] - 2022-03-23

      Features

      • Added function for writing grid structure to vtk_write (#12)

      • Added function for writing grid structure to io.jl

      The writing of the VTK files uses the WriteVTK.jl package. Hence, it was added as dependency. In addition to the grid structure, point, cell, or field data can be written to the file.

      • julia1.6 now required, added test (needs SHA hash comparison to test Project.toml)

      Co-authored-by: chmerdon <57663257+chmerdon@users.noreply.github.com>

      • Update ci.yml

      update to new minimum julia version dependency

      • Update Project.toml

      [0.9.2] - 2022-03-22

      Features

      • Fix for node ordering in tensor grid constructor such that no negative cell volumes occur

      [0.9.1] - 2022-02-21

      Features

      • Some bugfixes for unionizing update, version bump

      [0.9.0] - 2022-02-18

      Features

      • Unionize abstract types (#13)

      This relies on the built-in union split of Julia which seems to have no union size constraint anymore. This may remove some allocations...

      • Use "ElementGeomtries" – union of Geometry leaf types – as eltype for CellGeometries,BFaceGeomtries
      • Similar with CoordinateSystems.
      • fixed UniqueBFaceGeometries etc, reduced allocations in ItemVolumes instantiations (dispatch on CoordinateSystem seems to cause remaining allocations)
      • use SVector for storing intermediate vector data
      • Added more typestable getindex methods.
      • use length of cx in cellfinder instead of x as length of x might not match)

      Co-authored-by: Christian Merdon <merdon@localhost.localdomain>

      • Version bump

      [0.8.11] - 2021-12-06

      Features

      • Glue and simplexgrid(xygrid, zcoord) now use Cint indices.

      [0.8.10] - 2021-11-13

      Features

      • Test against tol for lmismatch in geomspace

      [0.8.9] - 2021-11-10

      Features

      • Fix missing CoordinateSystem instantiation for subgrid

      [0.8.8] - 2021-11-03

      Features

      • Volume of Vertex0D set to 1

      • Switch off plotting testset on windows system for now

      • Version bump

      [0.8.7] - 2021-10-21

      Features

      • Added ringsector2d

      [0.8.6] - 2021-10-21

      Features

      • Modify 2D x Z tensorproduct API: make cell, bottom and top regions from

      offsets of 2D cellregions

      • Bfacemask! for 3D, introduce allow_new flag

      [0.8.5] - 2021-10-20

      Features

      • Tensor product grid2d x coordZ

      [0.8.4] - 2021-10-20

      Features

      • Docstring for VoronoiFaceCenters

      • Add glue method for grids

      • Removed Base.RefValues from L2GTransformer struct and made it mutable (immutability seems to give no benefit here)

      • Merge branch 'master' of github.com:j-fu/ExtendableGrids.jl

      [0.8.3] - 2021-10-13

      Features

      • Add tests for geomspace, make assertion warnings more clear

      • Don't use yet X[begin]

      • Some more geomspace tweaks

      • Calculate VoronoiFaceCenters, take in tricircumcenter!

      • Add voronoi.jl

      [0.8.2] - 2021-10-07

      Features

      • Start to sort out documentation

      • Remove plotting test

      • Less allocations in instantiation of EdgeNodes

      • Less allocations in instantiation of FaceNormals and EdgeTangents, converted some Float64 to Tc

      • Some tweaks for geomspace

      • Merge branch 'master' of github.com:j-fu/ExtendableGrids.jl

      • Merge branch 'master' of https://github.com/j-fu/ExtendableGrids.jl

      • Reduced allocations in all mesh refinements, last remnants of GridAdjacencyTypes erased and replaced by Adjacency

      [0.8.1] - 2021-10-06

      Features

      • Nnodesforgeometry/nfacesforgeometry/nedgesforgeometry erased/merged into numnodes/numfaces/numedges that are now residing in shapespecs.jl, edges are always Edge1D (adjusted instantiation of EdgeNodes in derived.jl accordingly), erased GridAdjacencyTypes, added enum consistency tests also for Parallelepiped3D

      • Activated L2GTransfer, AssemblyTypes, CellFinder (moved from GradientRobustMultiPhysics) and respective tests; renamed BFaces to BFaceFaces and BEdges to BEdgeEdges

      • Version 0.8.1

      • Ch Merdon as author

      • Set EdgeGeometries in instantiation of EdgesNodes in 1D and 2D

      • Merge branch 'master' of https://github.com/j-fu/ExtendableGrids.jl

      • Merge branch 'master' of github.com:j-fu/ExtendableGrids.jl

      [0.8.0] - 2021-10-05

      Features

      • Phase 1 Transfer of gridstuff from GradienRobustMultiPhysics (#11)

      • Phase 1 Transfer of gridstuff from GradienRobustMultiPhysics

      • Bump version

      [0.7.9] - 2021-07-09

      Features

      • Added boundary edge regions (#10)

      • Added boundary edge regions

      • Extended constructor for simplexgrid
      • Fixed missing assignment of boundary edge node adjacency

      Co-authored-by: Matthias Liero <matthias.liero@wias-berlin.de>

      • Bump version

      [0.7.8] - 2021-07-02

      Features

      • Bugfix for BFaceCells, relax parameter types in simplexgrid() constructor

      [0.7.7] - 2021-06-15

      Features

      • Type-annotated some methods

      • Compute adjacency between boundary faces and edges. (#8)

      • Compute adjacency between boundary faces and edges.

      • Added missing methods

      Co-authored-by: Matthias Liero <matthias.liero@wias-berlin.de>

      • Merge branch 'master' of github.com:j-fu/ExtendableGrids.jl

      • Bump patch version

      [0.7.6] - 2021-03-31

      Features

      • J fu bfnormals (#7)

      Enable outflow bc in VoronoiFVM

      • Create BFaceNodes, BFaceNormals

      • sparsematrix <-> adjacency handling

      • Remove ExtendableSparse as Dependency

      • Relax some type constraints for simplexgrid

      • bump version

      • Oops: remove GridVisiualize from Project.toml

      [0.7.5] - 2021-03-30

      Features

      • Bump patch version, Allow for ExtendableSparse 0.4

      [0.7.4] - 2021-01-12

      Features

      • Factored out plotting

      [0.7.3] - 2021-01-10

      Features

      • Fix typo (colstaert)

      change alpha default for surfaces.

      [0.7.2] - 2021-01-09

      Features

      • Reorganization: GridVisualize as submodule

      • Renamed:

      GridPlotContext -> GridVisualizer gridplot -> visualize SubPlotContext -> SubVis

      • More renames for passing test

      • Bump version

      [0.7.1] - 2021-01-09

      Features

      • Gridplot checks with VoronoiFVM

      • Detailed checks for plotting with VoronoiFVM

      • Pluto examples in experimental

      [0.7.0] - 2021-01-07

      Features

      • Renamed plot->gridplot, use AbstractPlotting >0.15 (#5)

      Renamed plot->gridplot, use AbstractPlotting >0.15

      [0.6.3] - 2021-01-06

      Features

      • Fix use of extrema in bbox

      • Color handling via Colors.jl and ColorSchemes.jl

      • Added rosetta.jl to experimental test examples

      • Save method for plot context

      • Lower expectation to coverage

      • Fix codecov

      • Fix codecov

      • Last developments before switching to AbstratPlotting 0.15 (#4)

      Color handling via Colors.jl and ColorSchemes.jl In addition:

      • fix use of extrema in bbox
      • color handling via Colors.jl and ColorSchemes.jl
      • added rosetta.jl to experimental test examples
      • save method for plot context

      [0.6.2] - 2021-01-01

      Features

      • Pluto tests, MeshCat (#3)

      • marching tets et al can directly write into GeometryBasics compatible arrays

      • add experimental meshcat implementation (3D only)
      • don't run plotting tests on apple

      • Bump version

      [0.6.1] - 2020-12-31

      Features

      • Assert non-empty pointlist in simplexgrid

      • 3D Makie plotting interaction via keyboard

      • sliders would eat up screen real estate

      • middle mouse probably not available everywere

      • up/down for fine moving and pgup/pgdown for coarse seems to be ok

      • added title and status to 3d scene

      • New subplot handling working with PyPlot

      • Makie now running with multiscene

      • Fixed allocations in simplexgrid

      • Implementations (sometimes initial) for grid and grid,func in 1D, 2D, 3D

      • Support Makie, PyPlot, VTKView (VTKView without grid 1D)

      • At least temporarily drop support of Plots

      • Subplot handling: examples, docs

      • Remove dependency on Observables

      • Added grid writing

      • fixed initializaion bug in tokenstream

      • try to increase codecov

      • Don't use cleanup in tempname()

      • Fix definition of extrema

      • Try to increase coverage:

      add PyPlot to test dependency, test pyplot plotting

      • Add project.toml for test

      • Try to set env for runtestes

      • Fix project.toml

      [0.6.0] - 2020-12-24

      Features

      • Trigger TagBot on issue_comment instead of cron: https://discourse.julialang.org/t/ann-required-updates-to-tagbot-yml/49249

      • Add 3D tensorgrid creation

      • Documentation overhaul, fixed simplexgrid bug

      [0.5.8] - 2020-12-20

      Features

      • Use codecov.yml instead of switching off codecov

      • Bugfix in adjacency

      • Add test for subgrid

      [0.5.7] - 2020-12-14

      Features

      • Lots of small fixes

      [0.5.6] - 2020-12-12

      Features

      • Use backlight for isosurfaces and planes.

      Be sure to have https://github.com/JuliaPlots/GLMakie.jl/commit/05220480a3e79c254f538ba46a38d437598c874e in GLMakie >=1.19

      • Fix small glitches + version bump

      [0.5.5] - 2020-12-12

      Features

      • Figured out with how to have changing mesh and changing function at once, see

      https://github.com/JuliaPlots/Makie.jl/issues/778#issuecomment-742397119

      • First reasonable 3D function plotting

      [0.5.4] - 2020-12-09

      Features

      • Refactor plotting

      • generic mesh visibility extraction for grid plot moved from makie to common

      • one loop for all materials.

      • First reasonable 3D Grid plots with PyPlot

      • Rotation kwargs (work only for pyplot)

      [0.5.3] - 2020-12-07

      Features

      • Rename ci

      • Added DOCUMENTER_KEY to TagBot.yml

      • Interactive Makie grid plot for 3D simplex grids

      • Remove coverage test from workflow for the time being

      [0.5.2] - 2020-12-05

      Features

      • Thank you travis and bye bye

      • Thank you travis and bye bye

      • removed .travis.yml

      [0.5.1] - 2020-12-04

      Features

      • Firsts steps to makie grid plotting

      [0.5.0] - 2020-12-04

      Features

      • Change edge plotting default to true

      • Relaxs type constraints for geomspace

      • First step to 3D grid visualization

      • Update readme & bump version

      [0.4.2] - 2020-10-24

      Features

      • Moved edge creation from VoronoiFVM

      This currently creates a dependency on ExtendableSparse which should be replaced some time.

      • Don't print in show() methods!

      • Handle boundaries when creating bulk subgrid

      • Some fixes for pyplot in Pluto notebooks.

      Don't call PyPlot.show() and PyPlot.pause(), as this must be handeled by the user.

      • Bfacemask! now allows to add new boundary facets in 2D

      • Fix show again

      • Fixing docs

      • V0.4.2

      • Fix compat

      [0.4.1] - 2020-09-24

      Features

      • Documentation fix

      [0.4.0] - 2020-09-23

      Features

      • Plotting of GridFactory showing input and output (PyPlot)

      • first steps of Makie plotting

      • Rebuild of plotting architecture

      • dispatching via plotter type

      • PlotterContext holds state of plot, allowing reuse or update (e.g. for Makie), see examples/plotlooptest.jl

      • First plots with Makie & WGLMakie

      • Introduce kwargs for plotting

      • Plotloop stuff

      • Fine tuned and commentes plotting stuff

      • Help mechanism for flags

      • Test for two figure arrangements in one plot -> future layout stuff

      • Fix travis

      • Switch to travis-ci.com

      • Moving GridFactory to SimplexGridFactory.SimplexGridBuilder

      (mainly for licensing reasons)

      • Removed dependency on Triangulate

      • Added MIT License

      • Mentioned accssibility of Triangle via SimplexGridFactory

      • Version 0.4.0

      [0.3.0] - 2020-09-04

      Features

      • First working steps to GridFactory

      • Improved GridFactory

      Added Examples to docs

      • Git-added missing files

      • V0.3: added GridFactory, Examples

      [0.2.3] - 2020-07-17

      Features

      • Version 0.2.3 using Triangulate 0.5

      • Fixed issue #1

      [0.2.2] - 2020-05-01

      Features

      • Add [XYZ]Cordinates to grid if they have been there.

      This allows rectangular grid plotting (e.g. with Plots)

      • Fixed some plotting, show(grid)

      • Patch version bump

      [0.2.1] - 2020-04-28

      Features

      • Temporarily remove macos from travis due to stalled service

      • Fix documentation

      • work around TYPEDSIGNATURES bug

      • add typehierarchy to doc

      • Add typehierarchy.md

      • Patch version bump

      • first version with working documentation on github

      [0.2.0] - 2020-04-28

      Features

      • Documentation overhaul

      • VoronoiFVM examples now running after renaming to ExtendableGrids

      • Base.show(grid) ceases to print arrays

      • Keys -> Base.keys

      • Updated compat

      • Updated compat

      [0.1.0] - 2020-04-25

      Features

      • Initialize with README

      • Added first files

      • Fixed README

      • First tests are working...

      • More comments, introduce FixedTargetAdjacency

      • First version of extendabele container idea

      • Containers.md

      • Fixed pyplot for boundary grid

      • Fixed error in generation

      • Improved formatting + comments

      • Modified ntargets etc. to num_targets etc.

      added DocStringExtensions

      • Fixed getindex for CellTypes

      • First steps to interaction with VoronoiFVM

      • Working for 1D Examples in VoronoiFVM

      • Fixes for 2D VoronoiFVM

      • Sorted API

      • Version bump

      • Typos

      • More stuff moved over from VoronoiFVM.Grid

      • Version bump

      • Started Documenter stuff

      • Fixed vectorofconstants: unique

      • Version 0.1.5

      • Restarting as ExtendableGrids

      • Typo

      • Replaced all occurences of XGrid

      • Add travis, tagbot

      • Modified README, badges

      • Add Test in Project.toml

      • Add Printf in Project.toml

      • Fixed compat...

      +Changes · ExtendableGrids.jl

      Changelog

      [1.10.5] - 2024-11-14

      Changed

      • dim_space, num_nodes and num_cells return now 0 if there is no grid key Coordinates or CellNodes, respectively

      Fixed

      • An ExtendableGrid given by the default constructor can be displayed by show() (#70)

      2024-10-28

      Moved repositiory from https://github.com/j-fu/ExtendableGrids.jl to https://github.com/WIAS-PDELib/ExtendableGrids.jl. WIAS-PDELib is a github organization created to collectively manage the Julia packages developed under the lead of the WIAS Numerical Mathematics and Scientific Computing research group. According to the github docs on repository transfer, all links to the previous repository location are automatically redirected to the new location, and all relationships with forks stay intact.

      [1.10.0] - 2024-09-29

      • Allow to map funtions with vector arguments onto grid E.g. for f(x)=sum(x) one can now do map(f,grid).
      • Make parts of simplexgrid constructor optional. E.g. it is possible now to do just simplexgrid(coord, cellnodes). In that case, e.g. grid[BFaceRegions] will return a zero length vector.

      [1.9.0] - 2024-07-07

      • Add edge partitioning induced from cell partitioning
      • Overhaul of partitioning API

      [1.8.0] - 2024-06-24

      • Correct node partitioning
      • extended sg file format v2.2 with partitioning info
      • Recursive metis partitioning

      [1.7.0] - 2024-06-17

      • Partitioning for multithreading
      • Metis extension
      • extended subgrid method (new argument 'support' can be ON_CELLS, ON_BFACES, ON_FACES)
      • SubGrid type has now a parameter that knows the support relative to parent grid, removed BoundarySubGrid type
      • removed get_facegrid, get_bfacegrid, get_edgegrid in derived.jl (that offer no new functionality compared to subgrid)
      • fixed default behaviour for coordinatesystem and restricted 1D coordinate sorting to project = true

      [1.6.1] - 2024-06-07

      • Drop support of Julia 1.6. Minimum Julia version is 1.9
      • TetGen + Triangulate extensions
      • png instead of svg in docs

      [1.5.1] - 2024-05-06

      • Grid consistency check
      • Gmsh 0.3

      [1.4.0] - 2024-03-21

      Features

      • Move binnedpointlist to ExtendableGrids

      • New grid glueing algorithm using BinnedPointList

      • Fix docs, test

      • Merge pull request #42 from j-fu/mvbinned

      Move binned pointlist over here and use it for glueing

      • Update! function to trigger reinstantioation of grid components; instantiate of Volumes components and FaceNormals and EdgeTangents keep existing arrays.

      • Merge pull request #41 from chmerdon/master

      Reinstantiation of CellVolumes, FaceNormals etc.

      [1.3.2] - 2024-03-08

      Features

      • Fix documentation, all docstrings in output

      • Update ci for apple silicon

      • Add docstrings for commongrids

      • Add Aqua.jl tests

      • SimplexGridFactory isn't differently licensed

      • Bump patch version

      [1.3.1] - 2024-02-20

      Features

      • Fix subgrid coordinate system for boundary grids (#38)

      • fix subgrid coordinate system for boundary grids

      • use ExampleJuggler v2 (no Pluto dependency due to extensions)

      [1.3.0] - 2024-02-05

      Features

      • Merge branch 'master' of https://github.com/chmerdon/ExtendableGrids.jl

      • New grid components ParentGridRelation, FaceParents, CellParents, BFaceParents,

      some of them are now directly set during subgrid or refinement routines (todo: set BFaceParents also in refinements)

      • Small fix

      • Small fix

      • Added BFaceParents to all refinement routines and some tests

      • Renamed NodeInParent to NodeParents, added a deprecated warning on this

      • New grid components ParentGridRelation, FaceParents, CellParents, BFaceParents,

      some of them are now directly set during subgrid or refinement routines (todo: set BFaceParents also in refinements)

      • Small fix

      • Small fix

      • Added BFaceParents to all refinement routines and some tests

      • Renamed NodeInParent to NodeParents, added a deprecated warning on this

      • Merge branch 'master' of github.com:j-fu/ExtendableGrids.jl

      [1.2.3] - 2024-01-19

      Features

      • Fix for subgrid in case there is empty boundary data in the parent grid (or probably also when the subgrid lies completely in the interior)

      • Modified the subgrid+extrusion test a bit to test if a subgrid for a completely interior region works (and it only does with the previous modifications)

      • Fix for subgrid in case there is empty boundary data (#36)

      • fix for subgrid in case there is empty boundary data in the parent grid (or probably also when the subgrid lies completely in the interior)

      • modified the subgrid+extrusion test a bit to test if a subgrid for a completely interior region works (and it only does with the previous modifications)
      • Bump patch version

      [1.2.2] - 2023-11-29

      Features

      • Add more gmsh stuff

      • handle geo files

      • allow for simplexgrid("my.msh") and simplexgrid("my.geo")

      • allow for `write("my.msh",grid)

      • file handling with gmsh initializes and finalizes

      • Bump version

      [1.2.1] - 2023-11-28

      Features

      • Bugfixes for gmsh extension

      • handle node tags properly

      • add more examples from gmsh docs

      [1.2.0] - 2023-11-23

      Features

      • Gmsh extension3 (#34)

      • Update ExtendableGridsGmshExt.jl

      • Add the seal function

      Computes the boundary faces of an incomplete simplexgrid and adds them to it

      • simplexgrid + mixedgrid functions for the gmsh extension are defined
      • add tests with different types (of indices & coordinates) for gmsh Y ExtendableGrids
      • add gmsh geometry description test
      • Document the gmsh stuff

      Co-authored-by: Jürgen Fuhrmann <juergen-fuhrmann@web.de>

      • Use ExampleJuggler (#35)

      • moved tests to examplejuggler

      • move documentation to examplejuggler

      • Add gmsh example

      • Small readme+docs update

      • Add J. Taraz to author lists

      [1.1.0] - 2023-07-25

      Features

      • Update Project.toml

      change Project.toml to incorporate the extension

      • Create ExtendableGridsGmshExt.jl
      • Update ExtendableGridsGmshExt.jl

      upload the (gmsh-) extension code

      • Update simplexgrid.jl

      include function definitions with implementations in the gmsh extension

      • Gmsh-files for tests
      • (g)msh-files for the test of the extension
      • Delete sto_2d.msh
      • Delete sto_3d.msh
      • Update runtests.jl

      added the tests of the gmsh extension

      • Update Project.toml

      add dependencies for the gmsh extension

      • Update Project.toml
      • Update runtests.jl
      • Merge pull request #32 from jotaraz/master

      gmsh ext

      • Add requires for 1.6

      • Remove assignment to gms.model for Julia <1.9

      • Remove dummy simplexgrid(module)

      • Bump version

      • Merge pull request #33 from j-fu/gmsh-extension2

      add requires for 1.6

      [1.0.0] - 2023-07-22

      Features

      • GeometryGroups (#27)

      • new type CellGeometryGroups that collect all cells of same CellGeometry as ordered in UniqueCellGeometries

      • view for VariableTargetAdjacency, less allocation in FaceNodes for mixed geometries

      Co-authored-by: Christian Merdon <merdon@wias-berlin.de>

      • Allow non-leaf types in ElementGeometries

      • New type CellGeometryGroups that collect all cells of same CellGeometry as ordered in UniqueCellGeometries

      • Added also FaceGeometryGroups etc. and assembly helpers

      • Init BEdgeRegions with an array, so that test for bedgemask works again

      • GeometryGroups > AssemblyGroups

      • Some small corrections, view for VariableTargetAdjacency, less allocation in FaceNodes for mixed geometries

      • Some small improvements

      • Merge pull request #31 from j-fu/geometry_groups

      some small changes

      • Merge branch 'master' into quadmeshes

      • Merge pull request #30 from j-fu/quadmeshes

      Prepare for quadrilateral and cuboidal elements

      • Set cairomakie invisible in tests

      • Set version to 1.0 for better semver

      [0.9.17] - 2023-02-10

      Features

      • Fix print_tree calls

      • Sorting coordinates of 1D subgrids

      • Use CairoMakie for plotting tests & docs

      • Merge pull request #22 from j-fu/sort1dsubgrids

      Sort 1d subgrids

      [0.9.16] - 2022-11-30

      Features

      • Remove allocation regression in Julia 1.9 - return Matrices as local_celledgenodes etc. instead of adjoints

      [0.9.15] - 2022-10-22

      Features

      • Cleanup type handling for simplexgrid constructors, 0.9.15

      • Fixes stackoverflow error when calling simplexgrid with arrays of different index types

      • Detect index types from CellNode arrays

      • replace collectorassign by convert

      • add bregions, cellregion constructor to tensor grid constructor

      • Version bump

      • Fix CI for 1.6

      • Fix CI for 1.6 - again

      [0.9.14] - 2022-10-19

      Features

      • BFaceRegions in grid after uniform_refine are still VectorOfConstants if BFaceRegions in source grid has been VectorOfConstants

      • Introduce barrier in volume calculation (#19)

      • Bump version

      [0.9.13] - 2022-09-13

      Features

      • Fix unit test for writevtk

      • Create Invalidations.yml (#16)

      • Create Invalidations.yml

      This is based on https://github.com/julia-actions/julia-invalidations. Adding such checks came up in https://discourse.julialang.org/t/potential-performance-regressions-in-julia-1-8-for-special-un-precompiled-type-dispatches-and-how-to-fix-them/86359. I suggest to add this check here since this package is widely used as a dependency.

      See also SciML/MuladdMacro.jl#26 and SciML/MuladdMacro.jl#29

      • Missing bracket (#18)
      • Bump version, allow AbstractTrees 0.4

      [0.9.12] - 2022-06-23

      Features

      • Piecewise linear interpolation between simplexgrids

      [0.9.11] - 2022-06-21

      Features

      • Speed up of hot loops in bfacemask! and cellmask!

      [0.9.10] - 2022-06-16

      Features

      • Bregion numbers can now be functions of the current region, or zero to erase

      [0.9.9] - 2022-06-16

      Features

      • Bugfix for 3D rect!

      [0.9.8] - 2022-06-15

      Features

      • Bump to 0.9.8 - missed some commits

      [0.9.7] - 2022-06-15

      Features

      • Fix superfluous corner triangles in subgrid generation

      • Added rect! to regionedit - place surface info into rectangular grid

      [0.9.6] - 2022-05-13

      Features

      • Added barycentric refinement for Tetrahedron3D and some tests for uniform and barycentric refinement

      [0.9.5] - 2022-03-27

      Features

      • Improve glue performance
      • allow to restrict tested regions
      • removed allocations in main loop

      [0.9.4] - 2022-03-24

      Features

      • Added FaceEdgeSigns, version bump

      [0.9.3] - 2022-03-23

      Features

      • Added function for writing grid structure to vtk_write (#12)

      • Added function for writing grid structure to io.jl

      The writing of the VTK files uses the WriteVTK.jl package. Hence, it was added as dependency. In addition to the grid structure, point, cell, or field data can be written to the file.

      • julia1.6 now required, added test (needs SHA hash comparison to test Project.toml)

      Co-authored-by: chmerdon <57663257+chmerdon@users.noreply.github.com>

      • Update ci.yml

      update to new minimum julia version dependency

      • Update Project.toml

      [0.9.2] - 2022-03-22

      Features

      • Fix for node ordering in tensor grid constructor such that no negative cell volumes occur

      [0.9.1] - 2022-02-21

      Features

      • Some bugfixes for unionizing update, version bump

      [0.9.0] - 2022-02-18

      Features

      • Unionize abstract types (#13)

      This relies on the built-in union split of Julia which seems to have no union size constraint anymore. This may remove some allocations...

      • Use "ElementGeomtries" – union of Geometry leaf types – as eltype for CellGeometries,BFaceGeomtries
      • Similar with CoordinateSystems.
      • fixed UniqueBFaceGeometries etc, reduced allocations in ItemVolumes instantiations (dispatch on CoordinateSystem seems to cause remaining allocations)
      • use SVector for storing intermediate vector data
      • Added more typestable getindex methods.
      • use length of cx in cellfinder instead of x as length of x might not match)

      Co-authored-by: Christian Merdon <merdon@localhost.localdomain>

      • Version bump

      [0.8.11] - 2021-12-06

      Features

      • Glue and simplexgrid(xygrid, zcoord) now use Cint indices.

      [0.8.10] - 2021-11-13

      Features

      • Test against tol for lmismatch in geomspace

      [0.8.9] - 2021-11-10

      Features

      • Fix missing CoordinateSystem instantiation for subgrid

      [0.8.8] - 2021-11-03

      Features

      • Volume of Vertex0D set to 1

      • Switch off plotting testset on windows system for now

      • Version bump

      [0.8.7] - 2021-10-21

      Features

      • Added ringsector2d

      [0.8.6] - 2021-10-21

      Features

      • Modify 2D x Z tensorproduct API: make cell, bottom and top regions from

      offsets of 2D cellregions

      • Bfacemask! for 3D, introduce allow_new flag

      [0.8.5] - 2021-10-20

      Features

      • Tensor product grid2d x coordZ

      [0.8.4] - 2021-10-20

      Features

      • Docstring for VoronoiFaceCenters

      • Add glue method for grids

      • Removed Base.RefValues from L2GTransformer struct and made it mutable (immutability seems to give no benefit here)

      • Merge branch 'master' of github.com:j-fu/ExtendableGrids.jl

      [0.8.3] - 2021-10-13

      Features

      • Add tests for geomspace, make assertion warnings more clear

      • Don't use yet X[begin]

      • Some more geomspace tweaks

      • Calculate VoronoiFaceCenters, take in tricircumcenter!

      • Add voronoi.jl

      [0.8.2] - 2021-10-07

      Features

      • Start to sort out documentation

      • Remove plotting test

      • Less allocations in instantiation of EdgeNodes

      • Less allocations in instantiation of FaceNormals and EdgeTangents, converted some Float64 to Tc

      • Some tweaks for geomspace

      • Merge branch 'master' of github.com:j-fu/ExtendableGrids.jl

      • Merge branch 'master' of https://github.com/j-fu/ExtendableGrids.jl

      • Reduced allocations in all mesh refinements, last remnants of GridAdjacencyTypes erased and replaced by Adjacency

      [0.8.1] - 2021-10-06

      Features

      • Nnodesforgeometry/nfacesforgeometry/nedgesforgeometry erased/merged into numnodes/numfaces/numedges that are now residing in shapespecs.jl, edges are always Edge1D (adjusted instantiation of EdgeNodes in derived.jl accordingly), erased GridAdjacencyTypes, added enum consistency tests also for Parallelepiped3D

      • Activated L2GTransfer, AssemblyTypes, CellFinder (moved from GradientRobustMultiPhysics) and respective tests; renamed BFaces to BFaceFaces and BEdges to BEdgeEdges

      • Version 0.8.1

      • Ch Merdon as author

      • Set EdgeGeometries in instantiation of EdgesNodes in 1D and 2D

      • Merge branch 'master' of https://github.com/j-fu/ExtendableGrids.jl

      • Merge branch 'master' of github.com:j-fu/ExtendableGrids.jl

      [0.8.0] - 2021-10-05

      Features

      • Phase 1 Transfer of gridstuff from GradienRobustMultiPhysics (#11)

      • Phase 1 Transfer of gridstuff from GradienRobustMultiPhysics

      • Bump version

      [0.7.9] - 2021-07-09

      Features

      • Added boundary edge regions (#10)

      • Added boundary edge regions

      • Extended constructor for simplexgrid
      • Fixed missing assignment of boundary edge node adjacency

      Co-authored-by: Matthias Liero <matthias.liero@wias-berlin.de>

      • Bump version

      [0.7.8] - 2021-07-02

      Features

      • Bugfix for BFaceCells, relax parameter types in simplexgrid() constructor

      [0.7.7] - 2021-06-15

      Features

      • Type-annotated some methods

      • Compute adjacency between boundary faces and edges. (#8)

      • Compute adjacency between boundary faces and edges.

      • Added missing methods

      Co-authored-by: Matthias Liero <matthias.liero@wias-berlin.de>

      • Merge branch 'master' of github.com:j-fu/ExtendableGrids.jl

      • Bump patch version

      [0.7.6] - 2021-03-31

      Features

      • J fu bfnormals (#7)

      Enable outflow bc in VoronoiFVM

      • Create BFaceNodes, BFaceNormals

      • sparsematrix <-> adjacency handling

      • Remove ExtendableSparse as Dependency

      • Relax some type constraints for simplexgrid

      • bump version

      • Oops: remove GridVisiualize from Project.toml

      [0.7.5] - 2021-03-30

      Features

      • Bump patch version, Allow for ExtendableSparse 0.4

      [0.7.4] - 2021-01-12

      Features

      • Factored out plotting

      [0.7.3] - 2021-01-10

      Features

      • Fix typo (colstaert)

      change alpha default for surfaces.

      [0.7.2] - 2021-01-09

      Features

      • Reorganization: GridVisualize as submodule

      • Renamed:

      GridPlotContext -> GridVisualizer gridplot -> visualize SubPlotContext -> SubVis

      • More renames for passing test

      • Bump version

      [0.7.1] - 2021-01-09

      Features

      • Gridplot checks with VoronoiFVM

      • Detailed checks for plotting with VoronoiFVM

      • Pluto examples in experimental

      [0.7.0] - 2021-01-07

      Features

      • Renamed plot->gridplot, use AbstractPlotting >0.15 (#5)

      Renamed plot->gridplot, use AbstractPlotting >0.15

      [0.6.3] - 2021-01-06

      Features

      • Fix use of extrema in bbox

      • Color handling via Colors.jl and ColorSchemes.jl

      • Added rosetta.jl to experimental test examples

      • Save method for plot context

      • Lower expectation to coverage

      • Fix codecov

      • Fix codecov

      • Last developments before switching to AbstratPlotting 0.15 (#4)

      Color handling via Colors.jl and ColorSchemes.jl In addition:

      • fix use of extrema in bbox
      • color handling via Colors.jl and ColorSchemes.jl
      • added rosetta.jl to experimental test examples
      • save method for plot context

      [0.6.2] - 2021-01-01

      Features

      • Pluto tests, MeshCat (#3)

      • marching tets et al can directly write into GeometryBasics compatible arrays

      • add experimental meshcat implementation (3D only)
      • don't run plotting tests on apple

      • Bump version

      [0.6.1] - 2020-12-31

      Features

      • Assert non-empty pointlist in simplexgrid

      • 3D Makie plotting interaction via keyboard

      • sliders would eat up screen real estate

      • middle mouse probably not available everywere

      • up/down for fine moving and pgup/pgdown for coarse seems to be ok

      • added title and status to 3d scene

      • New subplot handling working with PyPlot

      • Makie now running with multiscene

      • Fixed allocations in simplexgrid

      • Implementations (sometimes initial) for grid and grid,func in 1D, 2D, 3D

      • Support Makie, PyPlot, VTKView (VTKView without grid 1D)

      • At least temporarily drop support of Plots

      • Subplot handling: examples, docs

      • Remove dependency on Observables

      • Added grid writing

      • fixed initializaion bug in tokenstream

      • try to increase codecov

      • Don't use cleanup in tempname()

      • Fix definition of extrema

      • Try to increase coverage:

      add PyPlot to test dependency, test pyplot plotting

      • Add project.toml for test

      • Try to set env for runtestes

      • Fix project.toml

      [0.6.0] - 2020-12-24

      Features

      • Trigger TagBot on issue_comment instead of cron: https://discourse.julialang.org/t/ann-required-updates-to-tagbot-yml/49249

      • Add 3D tensorgrid creation

      • Documentation overhaul, fixed simplexgrid bug

      [0.5.8] - 2020-12-20

      Features

      • Use codecov.yml instead of switching off codecov

      • Bugfix in adjacency

      • Add test for subgrid

      [0.5.7] - 2020-12-14

      Features

      • Lots of small fixes

      [0.5.6] - 2020-12-12

      Features

      • Use backlight for isosurfaces and planes.

      Be sure to have https://github.com/JuliaPlots/GLMakie.jl/commit/05220480a3e79c254f538ba46a38d437598c874e in GLMakie >=1.19

      • Fix small glitches + version bump

      [0.5.5] - 2020-12-12

      Features

      • Figured out with how to have changing mesh and changing function at once, see

      https://github.com/JuliaPlots/Makie.jl/issues/778#issuecomment-742397119

      • First reasonable 3D function plotting

      [0.5.4] - 2020-12-09

      Features

      • Refactor plotting

      • generic mesh visibility extraction for grid plot moved from makie to common

      • one loop for all materials.

      • First reasonable 3D Grid plots with PyPlot

      • Rotation kwargs (work only for pyplot)

      [0.5.3] - 2020-12-07

      Features

      • Rename ci

      • Added DOCUMENTER_KEY to TagBot.yml

      • Interactive Makie grid plot for 3D simplex grids

      • Remove coverage test from workflow for the time being

      [0.5.2] - 2020-12-05

      Features

      • Thank you travis and bye bye

      • Thank you travis and bye bye

      • removed .travis.yml

      [0.5.1] - 2020-12-04

      Features

      • Firsts steps to makie grid plotting

      [0.5.0] - 2020-12-04

      Features

      • Change edge plotting default to true

      • Relaxs type constraints for geomspace

      • First step to 3D grid visualization

      • Update readme & bump version

      [0.4.2] - 2020-10-24

      Features

      • Moved edge creation from VoronoiFVM

      This currently creates a dependency on ExtendableSparse which should be replaced some time.

      • Don't print in show() methods!

      • Handle boundaries when creating bulk subgrid

      • Some fixes for pyplot in Pluto notebooks.

      Don't call PyPlot.show() and PyPlot.pause(), as this must be handeled by the user.

      • Bfacemask! now allows to add new boundary facets in 2D

      • Fix show again

      • Fixing docs

      • V0.4.2

      • Fix compat

      [0.4.1] - 2020-09-24

      Features

      • Documentation fix

      [0.4.0] - 2020-09-23

      Features

      • Plotting of GridFactory showing input and output (PyPlot)

      • first steps of Makie plotting

      • Rebuild of plotting architecture

      • dispatching via plotter type

      • PlotterContext holds state of plot, allowing reuse or update (e.g. for Makie), see examples/plotlooptest.jl

      • First plots with Makie & WGLMakie

      • Introduce kwargs for plotting

      • Plotloop stuff

      • Fine tuned and commentes plotting stuff

      • Help mechanism for flags

      • Test for two figure arrangements in one plot -> future layout stuff

      • Fix travis

      • Switch to travis-ci.com

      • Moving GridFactory to SimplexGridFactory.SimplexGridBuilder

      (mainly for licensing reasons)

      • Removed dependency on Triangulate

      • Added MIT License

      • Mentioned accssibility of Triangle via SimplexGridFactory

      • Version 0.4.0

      [0.3.0] - 2020-09-04

      Features

      • First working steps to GridFactory

      • Improved GridFactory

      Added Examples to docs

      • Git-added missing files

      • V0.3: added GridFactory, Examples

      [0.2.3] - 2020-07-17

      Features

      • Version 0.2.3 using Triangulate 0.5

      • Fixed issue #1

      [0.2.2] - 2020-05-01

      Features

      • Add [XYZ]Cordinates to grid if they have been there.

      This allows rectangular grid plotting (e.g. with Plots)

      • Fixed some plotting, show(grid)

      • Patch version bump

      [0.2.1] - 2020-04-28

      Features

      • Temporarily remove macos from travis due to stalled service

      • Fix documentation

      • work around TYPEDSIGNATURES bug

      • add typehierarchy to doc

      • Add typehierarchy.md

      • Patch version bump

      • first version with working documentation on github

      [0.2.0] - 2020-04-28

      Features

      • Documentation overhaul

      • VoronoiFVM examples now running after renaming to ExtendableGrids

      • Base.show(grid) ceases to print arrays

      • Keys -> Base.keys

      • Updated compat

      • Updated compat

      [0.1.0] - 2020-04-25

      Features

      • Initialize with README

      • Added first files

      • Fixed README

      • First tests are working...

      • More comments, introduce FixedTargetAdjacency

      • First version of extendabele container idea

      • Containers.md

      • Fixed pyplot for boundary grid

      • Fixed error in generation

      • Improved formatting + comments

      • Modified ntargets etc. to num_targets etc.

      added DocStringExtensions

      • Fixed getindex for CellTypes

      • First steps to interaction with VoronoiFVM

      • Working for 1D Examples in VoronoiFVM

      • Fixes for 2D VoronoiFVM

      • Sorted API

      • Version bump

      • Typos

      • More stuff moved over from VoronoiFVM.Grid

      • Version bump

      • Started Documenter stuff

      • Fixed vectorofconstants: unique

      • Version 0.1.5

      • Restarting as ExtendableGrids

      • Typo

      • Replaced all occurences of XGrid

      • Add travis, tagbot

      • Modified README, badges

      • Add Test in Project.toml

      • Add Printf in Project.toml

      • Fixed compat...

      diff --git a/dev/coordinatesystem/index.html b/dev/coordinatesystem/index.html index be22ea91..df30a05b 100644 --- a/dev/coordinatesystem/index.html +++ b/dev/coordinatesystem/index.html @@ -9,4 +9,4 @@ ├─ Polar2D ├─ Spherical1D └─ Spherical3D

      API

      ExtendableGrids.AbstractCoordinateSystemType
      abstract type AbstractCoordinateSystem <: AbstractExtendableGridApexType

      Apex type for coordinate systems

      source
      ExtendableGrids.Cartesian1DType
      abstract type Cartesian1D <: AbstractCoordinateSystem

      1D cartesion coordinate system (unknown x)

      source
      ExtendableGrids.Cartesian2DType
      abstract type Cartesian2D <: AbstractCoordinateSystem

      2D cartesion coordinate system (unknowns x,y)

      source
      ExtendableGrids.Cartesian3DType
      abstract type Cartesian3D <: AbstractCoordinateSystem

      2D cartesion coordinate system (unknowns x,y,z)

      source
      ExtendableGrids.Cylindrical2DType
      abstract type Cylindrical2D <: AbstractCoordinateSystem

      2D cylindrical coordinate system (unknowns r,z)

      source
      ExtendableGrids.Cylindrical3DType
      abstract type Cylindrical3D <: AbstractCoordinateSystem

      3D cylindrical coordinate system (unknowns r,ϕ,z)

      source
      ExtendableGrids.Polar1DType
      abstract type Polar1D <: AbstractCoordinateSystem

      1D polar coordinate system (unknown r)

      source
      ExtendableGrids.Polar2DType
      abstract type Polar2D <: AbstractCoordinateSystem

      2D polar coordinate system (unknowns r,ϕ)

      source
      ExtendableGrids.Spherical1DType
      abstract type Spherical1D <: AbstractCoordinateSystem

      1D spheriacal coordinate system (unknown r)

      source
      ExtendableGrids.Spherical3DType
      abstract type Spherical3D <: AbstractCoordinateSystem

      3D spheriacal coordinate system (unknowns r,ϕ,θ)

      source
      ExtendableGrids.codim1_coordinatesystemMethod
      codim1_coordinatesystem(CoordinateSystem)

      Return coordinate system for codimension 1 subgrid.

      source
      ExtendableGrids.coordinatesystemsMethod
      coordinatesystems()
      -

      List possible coordinate systems. These describe the meaning of the grid coordinates.

      source
      +

      List possible coordinate systems. These describe the meaning of the grid coordinates.

      source diff --git a/dev/elementgeometry/index.html b/dev/elementgeometry/index.html index 1fc58361..7d3715a3 100644 --- a/dev/elementgeometry/index.html +++ b/dev/elementgeometry/index.html @@ -30,4 +30,4 @@ source
      ExtendableGrids.dim_elementMethod
      dim_element(_::Type{<:AbstractElementGeometry3D}) -> Int64
       
      source
      ExtendableGrids.dim_elementMethod
      dim_element(_::Type{<:AbstractElementGeometry4D}) -> Int64
       
      source
      ExtendableGrids.elementgeometriesMethod
      elementgeometries()
      -

      List supported element geometries.

      source
      +

      List supported element geometries.

      source diff --git a/dev/extendablegrid/index.html b/dev/extendablegrid/index.html index 6b982967..b39993ab 100644 --- a/dev/extendablegrid/index.html +++ b/dev/extendablegrid/index.html @@ -132,4 +132,4 @@ v, _::Type{<:AbstractGridComponent} ) -> Any -

      Default veryform method.

      "veryform" means "verify and/or transform" and is called to check and possibly transform components to be added to the grid via setindex!.

      The default method just passes data through.

      source
      ExtendableGrids.veryformMethod
      veryform(grid::ExtendableGrid{Tc,Ti},v,T::Type{<:AbstractGridAdjacency}) where{Tc,Ti}

      Check proper type of adjacencies upon insertion

      source
      +

      Default veryform method.

      "veryform" means "verify and/or transform" and is called to check and possibly transform components to be added to the grid via setindex!.

      The default method just passes data through.

      source
      ExtendableGrids.veryformMethod
      veryform(grid::ExtendableGrid{Tc,Ti},v,T::Type{<:AbstractGridAdjacency}) where{Tc,Ti}

      Check proper type of adjacencies upon insertion

      source
      diff --git a/dev/gmsh/index.html b/dev/gmsh/index.html index 6c7c20fb..c0abf0b8 100644 --- a/dev/gmsh/index.html +++ b/dev/gmsh/index.html @@ -2,4 +2,4 @@ Gmsh interoperability · ExtendableGrids.jl

      Gmsh interoperability

      This functionality is in beta stage. Breaking changes for this API are considered non-breaking for the package. Therefore, these functions are not exported yet.

      API

      These methods become available via a package extension which is loaded together with Gmsh.jl. See the general gmsh documentation, the Gmsh reference manual and the Gmsh Julia API source code for information.

      ExtendableGrids.simplexgrid_from_gmshFunction
      simplexgrid_from_gmsh(filename::String; incomplete=false, Tc=Float32, Ti=Int32)

      The msh file is read and a SimplexGrid is created. The mesh can also contain an incomplete grid. For this, the function has to be called with $incomplete=true$. 'incomplete' means that the grid only consists of nodes and cells, it does not have a boundary. We also do not try to read the physical groups for those grids. Tc is the type of coordinates, Ti is the index type.

      source
      simplexgrid_from_gmsh(mod::Module; incomplete=false, Tc=Float32, Ti=Int32)

      The mesh contained in the gmsh module is converted to a SimplexGrid. The mesh can also contain an incomplete grid. For this, the function has to be called with $incomplete=true$. 'incomplete' means that the grid only consists of nodes and cells, it does not have a boundary. We also do not try to read the physical groups for those grids. Tc is the type of coordinates, Ti is the index type.

      source
      ExtendableGrids.simplexgrid_to_gmshFunction
      simplexgrid_to_gmsh(g::ExtendableGrid; filename::String="")

      The SimplexGrid 'g' is loaded into a gmsh module. If a string (not "") is passed via 'filename', the mesh is written into this file.

      source
      ExtendableGrids.mixedgrid_from_gmshFunction
      mixedgrid_from_gmsh(filename::String; Tc=Float32, Ti=Int32)

      The msh file is read and an ExtendableGrid is created. This only works for dim=2 grids and the orientation may be wrong. Tc is the type of coordinates, Ti is the index type.

      source
      mixedgrid_from_gmsh(mod::Module; Tc=Float32, Ti=Int32)

      The mesh contained in the gmsh module is converted to an ExtendableGrid. Tc is the type of coordinates, Ti is the index type.

      source
      ExtendableGrids.mixedgrid_to_gmshFunction
      mixedgrid_to_gmsh(g::ExtendableGrid; filename::String="")

      The ExtendableGrid 'g' is loaded into a gmsh module. If a string (not "") is passed via 'filename', the mesh is written into this file.

      source
      ExtendableGrids.seal!Function
      function seal!(grid::ExtendableGrid; bfaceregions=[], encode=true, Ti=Int64)

      Take an (simplex-) ExtendableGrid and compute and add the BoundaryFaces. A so called incomplete ExtendableGrid can e.g. be read from an msh file using the Gmsh.jl-extension of the ExtendableGrids package and the function $simplexgrid_from_gmsh(filename::String; incomplete=true)$. If a non empty vector is passed as bfaceregions, this vector is used for the 'BFaceRegions'. If bfaceregions is empty, all BoundaryFaces get the region number 1.

      For performance reasons, the faces (=the nodes contained in the face) can be encoded (see the function $encode(x::Vector, nn::Integer)$) to Integers encoding_type. To do this, encode=true is used. But for each encoding_type there is a limit on the number of nodes:

      - For Int64  and a 2d grid: 3*10^9 nodes
       - For Int64  and a 3d grid: 2*10^6 nodes
       - For Int128 and a 2d grid: 1.3*10^19 nodes
      -- For Int128 and a 3d grid: 5.5*10^12 nodes

      If encode=false is passed, there is no limit (besides the MaxValue of the Integer type used).

      source

      Internals

      Gmsh extension

      ExtendableGridsGmshExt.gmshfile_to_mixedgridFunction
      gmshfile_to_mixedgrid(filename::String, Tc, Ti)

      This function just reads an msh file, and creates a gmsh.model and then calls the 'modtomixedgrid' function This function is called in 'mixedgridfromgmsh' Tc is the type of coordinates, Ti is the index type.

      This function initalizes and finalized gmsh.

      source
      ExtendableGridsGmshExt.gmshfile_to_simplexgridFunction
      gmshfile_to_simplexgrid(filename::String, Tc, Ti)

      This function reads a .msh or a .geo file, and creates a gmsh.model If it is a .geo file, gmsh.model.mesh.generate() is called. Finally, it calls the 'modtosimplexgrid' function. This function is called in 'simplexgridfromgmsh' Tc is the type of coordinates, Ti is the index type.

      The function initializes and finalized the gmsh module.

      source
      ExtendableGridsGmshExt.mixedgrid_to_gmshfileFunction
      mixedgrid_to_gmshfile(grid::ExtendableGrid, filename::String)

      This function takes a mixed grid, uses 'gridtomod' to create a corresponding gmsh module Then it writes the module to a file

      grid[CellNodes] must be a VariableTargetAdjacency structure This function initializes and finalized gmsh.

      source
      ExtendableGridsGmshExt.multiply_indicesFunction
      multiply_indices(indices, n)

      for n=3: [i, j, ..., k], 3 -> [3i-2, 3i-1, 3i, 3j-1, 3j-2, 3j, ..., 3k-2, 3k-1, 3k] in general: [i, j, ..., k], n -> [ni-(n-1), ni-(n-2), ..., ni, n*j-(n-1), ...] This function can be used, if you have the indices of cells, and you want to get all their nodes, but the nodes are stored in one list for all cells: [node1ofcell1, node2ofcell1, ... nodenofcell1, node1ofcell2, ...]

      source
      ExtendableGridsGmshExt.mod_to_mixedgridFunction
      mod_to_mixedgrid(model::Module, Tc, Ti)

      Function that tries to create a (mixed-) ExtendableGrid from a gmsh.model. Model has to be a gmsh.model. (This function has to be called with an initialized gmsh environment). This function is called in 'mixedgridfromgmsh'. Tc is the type of coordinates, Ti is the index type.

      source
      ExtendableGridsGmshExt.simplexgrid_to_gmshfileFunction
      function simplexgrid_to_gmshfile(grid::ExtendableGrid, filename::String)

      This function takes a simplexgrid, uses 'gridtomod' to create a corresponding gmsh module Then it writes the module to a file.

      This function initalizes and finalized gmsh.

      source
      ExtendableGridsGmshExt.simplexgrid_to_modFunction
      grid_to_mod(grid::ExtendableGrid)

      This function writes an ExtendableGrid into a gmsh module. (This function has to be called with an initialized gmsh environment) At the moment, this function can only be used from the outside via 'write_gmsh', where the newly created gmsh module is written into a msh file.

      source
      ExtendableGridsGmshExt.mod_to_simplexgridFunction
      mod_to_grid(model::Module, Tc, Ti)

      Function that tries to create an (simplex-) ExtendableGrid from a gmsh.model. Model has to be a gmsh.model. (This function has to be called with an initialized gmsh environment). This function is called in 'simplexgridfromgmsh'. Tc is the type of coordinates, Ti is the index type.

      source
      ExtendableGridsGmshExt.incomplete_mod_to_simplexgridFunction
      incomplete_mod_to_simplexgrid(model::Module, Tc, Ti)

      Loads an incomplete mesh from a msh file. Then converts into an ExtendableGrids. 'incomplete' in this context means the boundary is missing. With the 'ExtendableGrids.seal!(grid::ExtendableGrid)' the boundary can be added. Tc is the type of coordinates, Ti is the index type.

      source
      ExtendableGridsGmshExt.use_vtaFunction
      use_vta(VTA, col_ids, num)

      If VTA were a matrix, the result would be equivalent to VTA[:, col_ids]. Each column of the VTA contains the nodes of one cell.

      source

      seal! method

      ExtendableGrids.faces_of_ndim_simplexFunction
      function faces_of_ndim_simplex(x::Vector, dim::Integer, nn::Integer)

      Return all faces of a n-dim simplex. The orientation is not guaranteed to be right. x contains the nodes of the simplex. nn is the total number of nodes. The faces (=the nodes contained in the face), are encoded to Integers (of nn's type).

      source
      ExtendableGrids.assemble_bfaces_directFunction
      function assemble_bfaces_direct(simplices, dim, Ti)

      Assemble the BoundaryFaces corresponding to the simplices passed. In this function, the faces are not encoded. This may make sense for grids with many nodes. For smaller grids it can lead to performance losses. simplices is a $(dim+1) x 'number cells'$ matrix and nn is the total number of nodes. We can not guarantee, that the orientation of the BoundaryFaces is correct.

      source
      ExtendableGrids.decodeFunction
      function decode(y::Integer, nn::Integer, dim::Integer)

      Decode y to the vector x. x has the length dim. The en/-decoding is similar to using the base-nn number system. For details of the encoding, see the documentation of the function encode.

      source
      ExtendableGrids.encodeFunction
      function encode(x::Vector, nn::Integer)

      Encode th vector x into an Int y. The en/-decoding is similar to using the base-nn number system. Example: $[x₁, x₂, x₃] → (x₁-1) + (x₂-1)*nn + (x₃-1)*nn²$``

      source
      ExtendableGrids.faces_of_ndim_simplex_directFunction
      function faces_of_ndim_simplex(x::Vector, dim::Integer, nn::Integer)

      Return all faces of a n-dim simplex. The orientation is not guaranteed to be right. x contains the nodes of the simplex. nn is the total number of nodes. The faces (=the nodes contained in the face), are not encoded to Integers.

      source
      ExtendableGrids.assemble_bfacesFunction
      function assemble_bfaces(simplices, dim, nn, Ti)

      Assemble the BoundaryFaces corresponding to the simplices passed. In this function, the faces are encoded for performance reasons. If a large grid with many nodes is used, Ti has to be chosen accordingly (e.g. Int128), or encode=false has to be passed to seal!. simplices is a $(dim+1) x 'number cells'$ matrix and nn is the total number of nodes. We can not guarantee, that the orientation of the BoundaryFaces is correct.

      source
      +- For Int128 and a 3d grid: 5.5*10^12 nodes

      If encode=false is passed, there is no limit (besides the MaxValue of the Integer type used).

      source

      Internals

      Gmsh extension

      ExtendableGridsGmshExt.gmshfile_to_mixedgridFunction
      gmshfile_to_mixedgrid(filename::String, Tc, Ti)

      This function just reads an msh file, and creates a gmsh.model and then calls the 'modtomixedgrid' function This function is called in 'mixedgridfromgmsh' Tc is the type of coordinates, Ti is the index type.

      This function initalizes and finalized gmsh.

      source
      ExtendableGridsGmshExt.take_secondFunction
      take_second(x)

      x is a list of 2-tuples, with an Int as second entry an array of the second entries is returned

      source
      ExtendableGridsGmshExt.gmshfile_to_simplexgridFunction
      gmshfile_to_simplexgrid(filename::String, Tc, Ti)

      This function reads a .msh or a .geo file, and creates a gmsh.model If it is a .geo file, gmsh.model.mesh.generate() is called. Finally, it calls the 'modtosimplexgrid' function. This function is called in 'simplexgridfromgmsh' Tc is the type of coordinates, Ti is the index type.

      The function initializes and finalized the gmsh module.

      source
      ExtendableGridsGmshExt.test_gmsh_initFunction
      test_gmsh_init()

      Very primitive function to test, via a try-catch-block, whether gmsh is already initialized. If not, it will be initialized.

      source
      ExtendableGridsGmshExt.mixedgrid_to_gmshfileFunction
      mixedgrid_to_gmshfile(grid::ExtendableGrid, filename::String)

      This function takes a mixed grid, uses 'gridtomod' to create a corresponding gmsh module Then it writes the module to a file

      grid[CellNodes] must be a VariableTargetAdjacency structure This function initializes and finalized gmsh.

      source
      ExtendableGridsGmshExt.multiply_indicesFunction
      multiply_indices(indices, n)

      for n=3: [i, j, ..., k], 3 -> [3i-2, 3i-1, 3i, 3j-1, 3j-2, 3j, ..., 3k-2, 3k-1, 3k] in general: [i, j, ..., k], n -> [ni-(n-1), ni-(n-2), ..., ni, n*j-(n-1), ...] This function can be used, if you have the indices of cells, and you want to get all their nodes, but the nodes are stored in one list for all cells: [node1ofcell1, node2ofcell1, ... nodenofcell1, node1ofcell2, ...]

      source
      ExtendableGridsGmshExt.mod_to_mixedgridFunction
      mod_to_mixedgrid(model::Module, Tc, Ti)

      Function that tries to create a (mixed-) ExtendableGrid from a gmsh.model. Model has to be a gmsh.model. (This function has to be called with an initialized gmsh environment). This function is called in 'mixedgridfromgmsh'. Tc is the type of coordinates, Ti is the index type.

      source
      ExtendableGridsGmshExt.simplexgrid_to_gmshfileFunction
      function simplexgrid_to_gmshfile(grid::ExtendableGrid, filename::String)

      This function takes a simplexgrid, uses 'gridtomod' to create a corresponding gmsh module Then it writes the module to a file.

      This function initalizes and finalized gmsh.

      source
      ExtendableGridsGmshExt.simplexgrid_to_modFunction
      grid_to_mod(grid::ExtendableGrid)

      This function writes an ExtendableGrid into a gmsh module. (This function has to be called with an initialized gmsh environment) At the moment, this function can only be used from the outside via 'write_gmsh', where the newly created gmsh module is written into a msh file.

      source
      ExtendableGridsGmshExt.mod_to_simplexgridFunction
      mod_to_grid(model::Module, Tc, Ti)

      Function that tries to create an (simplex-) ExtendableGrid from a gmsh.model. Model has to be a gmsh.model. (This function has to be called with an initialized gmsh environment). This function is called in 'simplexgridfromgmsh'. Tc is the type of coordinates, Ti is the index type.

      source
      ExtendableGridsGmshExt.incomplete_mod_to_simplexgridFunction
      incomplete_mod_to_simplexgrid(model::Module, Tc, Ti)

      Loads an incomplete mesh from a msh file. Then converts into an ExtendableGrids. 'incomplete' in this context means the boundary is missing. With the 'ExtendableGrids.seal!(grid::ExtendableGrid)' the boundary can be added. Tc is the type of coordinates, Ti is the index type.

      source
      ExtendableGridsGmshExt.use_geomsFunction
      use_geoms(cellgeoms, ids)

      If cellgeoms would just be an array/vector, the result would be equivalent to cellgeoms[ids].

      source
      ExtendableGridsGmshExt.use_vtaFunction
      use_vta(VTA, col_ids, num)

      If VTA were a matrix, the result would be equivalent to VTA[:, col_ids]. Each column of the VTA contains the nodes of one cell.

      source

      seal! method

      ExtendableGrids.faces_of_ndim_simplexFunction
      function faces_of_ndim_simplex(x::Vector, dim::Integer, nn::Integer)

      Return all faces of a n-dim simplex. The orientation is not guaranteed to be right. x contains the nodes of the simplex. nn is the total number of nodes. The faces (=the nodes contained in the face), are encoded to Integers (of nn's type).

      source
      ExtendableGrids.assemble_bfaces_directFunction
      function assemble_bfaces_direct(simplices, dim, Ti)

      Assemble the BoundaryFaces corresponding to the simplices passed. In this function, the faces are not encoded. This may make sense for grids with many nodes. For smaller grids it can lead to performance losses. simplices is a $(dim+1) x 'number cells'$ matrix and nn is the total number of nodes. We can not guarantee, that the orientation of the BoundaryFaces is correct.

      source
      ExtendableGrids.decodeFunction
      function decode(y::Integer, nn::Integer, dim::Integer)

      Decode y to the vector x. x has the length dim. The en/-decoding is similar to using the base-nn number system. For details of the encoding, see the documentation of the function encode.

      source
      ExtendableGrids.encodeFunction
      function encode(x::Vector, nn::Integer)

      Encode th vector x into an Int y. The en/-decoding is similar to using the base-nn number system. Example: $[x₁, x₂, x₃] → (x₁-1) + (x₂-1)*nn + (x₃-1)*nn²$``

      source
      ExtendableGrids.faces_of_ndim_simplex_directFunction
      function faces_of_ndim_simplex(x::Vector, dim::Integer, nn::Integer)

      Return all faces of a n-dim simplex. The orientation is not guaranteed to be right. x contains the nodes of the simplex. nn is the total number of nodes. The faces (=the nodes contained in the face), are not encoded to Integers.

      source
      ExtendableGrids.assemble_bfacesFunction
      function assemble_bfaces(simplices, dim, nn, Ti)

      Assemble the BoundaryFaces corresponding to the simplices passed. In this function, the faces are encoded for performance reasons. If a large grid with many nodes is used, Ti has to be chosen accordingly (e.g. Int128), or encode=false has to be passed to seal!. simplices is a $(dim+1) x 'number cells'$ matrix and nn is the total number of nodes. We can not guarantee, that the orientation of the BoundaryFaces is correct.

      source
      diff --git a/dev/gridconstructors/index.html b/dev/gridconstructors/index.html index 7f9b79b4..760e817e 100644 --- a/dev/gridconstructors/index.html +++ b/dev/gridconstructors/index.html @@ -23,4 +23,4 @@ interface=0, warnonly = false, tol=1.0e-10, - naive=false)

      Merge two grids along their common boundary facets.

      Deprecated:

      source

      Various special grids

      ExtendableGrids.grid_lshapeMethod
      grid_lshape(::Type{<:Triangle2D}; scale = [1,1], shift = [0,0])

      Lshape domain

      source
      ExtendableGrids.grid_triangleMethod
      grid_triangle(coords::AbstractArray{T,2}) where {T}

      Generates a single triangle with the given coordinates, that should be a 2 x 3 array with the coordinates of the three vertices, e.g. coords = [0.0 0.0; 1.0 0.0; 0.0 1.0]'.

      source
      ExtendableGrids.grid_unitcubeMethod
      grid_unitcube(EG::Type{<:Hexahedron3D}; scale = [1,1,1], shift = [0,0,0])

      Unit cube as one cell with six boundary regions (bottom, front, right, back, left, top)

      source
      ExtendableGrids.grid_unitcubeMethod
      grid_unitcube(::Type{Tetrahedron3D}; scale = [1,1,1], shift = [0,0,0])

      Unit cube as six tets with six boundary regions (bottom, front, right, back, left, top)

      source
      ExtendableGrids.grid_unitsquareMethod
      grid_unitsquare(EG::Type{<:Quadrilateral2D}; scale = [1,1], shift = [0,0])

      Unit square as one cell with four boundary regions (bottom, right, top, left)

      source
      ExtendableGrids.grid_unitsquareMethod
      grid_unitsquare(::Type{<:Triangle2D}; scale = [1,1], shift = [0,0])

      Unit square as two triangles with four boundary regions (bottom, right, top, left)

      source
      ExtendableGrids.grid_unitsquare_mixedgeometriesMethod
      grid_unitsquare_mixedgeometries()

      Unit suqare as mixed triangles and squares with four boundary regions (bottom, right, top, left)

      source
      ExtendableGrids.reference_domainFunction
          reference_domain(EG::Type{<:AbstractElementGeometry}, T::Type{<:Real} = Float64; scale = [1,1,1], shift = [0,0,0]) -> ExtendableGrid{T,Int32}

      Generates an ExtendableGrid{T,Int32} for the reference domain of the specified Element Geometry. With scale and shift the coordinates can be manipulated.

      source
      ExtendableGrids.ringsectorMethod
      ringsector(rad,ang; eltype=Triangle2D)

      Sector of ring or full ring (if ang[begin]-ang[end]≈2π)

      source
      + naive=false)

      Merge two grids along their common boundary facets.

      Deprecated:

      source

      Various special grids

      ExtendableGrids.grid_lshapeMethod
      grid_lshape(::Type{<:Triangle2D}; scale = [1,1], shift = [0,0])

      Lshape domain

      source
      ExtendableGrids.grid_triangleMethod
      grid_triangle(coords::AbstractArray{T,2}) where {T}

      Generates a single triangle with the given coordinates, that should be a 2 x 3 array with the coordinates of the three vertices, e.g. coords = [0.0 0.0; 1.0 0.0; 0.0 1.0]'.

      source
      ExtendableGrids.grid_unitcubeMethod
      grid_unitcube(EG::Type{<:Hexahedron3D}; scale = [1,1,1], shift = [0,0,0])

      Unit cube as one cell with six boundary regions (bottom, front, right, back, left, top)

      source
      ExtendableGrids.grid_unitcubeMethod
      grid_unitcube(::Type{Tetrahedron3D}; scale = [1,1,1], shift = [0,0,0])

      Unit cube as six tets with six boundary regions (bottom, front, right, back, left, top)

      source
      ExtendableGrids.grid_unitsquareMethod
      grid_unitsquare(EG::Type{<:Quadrilateral2D}; scale = [1,1], shift = [0,0])

      Unit square as one cell with four boundary regions (bottom, right, top, left)

      source
      ExtendableGrids.grid_unitsquareMethod
      grid_unitsquare(::Type{<:Triangle2D}; scale = [1,1], shift = [0,0])

      Unit square as two triangles with four boundary regions (bottom, right, top, left)

      source
      ExtendableGrids.grid_unitsquare_mixedgeometriesMethod
      grid_unitsquare_mixedgeometries()

      Unit suqare as mixed triangles and squares with four boundary regions (bottom, right, top, left)

      source
      ExtendableGrids.reference_domainFunction
          reference_domain(EG::Type{<:AbstractElementGeometry}, T::Type{<:Real} = Float64; scale = [1,1,1], shift = [0,0,0]) -> ExtendableGrid{T,Int32}

      Generates an ExtendableGrid{T,Int32} for the reference domain of the specified Element Geometry. With scale and shift the coordinates can be manipulated.

      source
      ExtendableGrids.ringsectorMethod
      ringsector(rad,ang; eltype=Triangle2D)

      Sector of ring or full ring (if ang[begin]-ang[end]≈2π)

      source
      diff --git a/dev/index.html b/dev/index.html index 5a314291..55d18996 100644 --- a/dev/index.html +++ b/dev/index.html @@ -1,2 +1,2 @@ -Home · ExtendableGrids.jl

      Extendable grid data container for numerical simulations

      Build status

      Provide container structure ExtendableGrid with type stable content access and lazy content creation holding data for discretization grids for finite element and finite volume methods. Used by VoronoiFVM and ExtendableFEM, a package for novel, gradient robust finite element methods.

      Additional functionality:

      • Tools to create tensor product grids
      • Tools for grid modification

      Companion packages:

      • Gmsh.jl extension. Please be aware about the fact that, while this package and Gmsh.jl are MIT licensed, the underlying binary code of Gmsh is distributed under the GPLv2 license.
      • Visualization of these grids and of functions on them is avaialable in GridVisualize.jl.
      • SimplexGridFactory contains an API which allows to create ExtendableGrid objects with Triangulate.jl which wraps the Triangle mesh generator by J. Shewchuk and TetGen.jl which wraps the TetGen mesh generator by H. Si.
      • Triangulate.jl and TetGen.jl extensions
      • Metis.jl extension and partitioning for multithreading (under development)

      Recent changes

      • Please look up the list of recent changes
      +Home · ExtendableGrids.jl

      Extendable grid data container for numerical simulations

      Build status

      Provide container structure ExtendableGrid with type stable content access and lazy content creation holding data for discretization grids for finite element and finite volume methods. Used by VoronoiFVM and ExtendableFEM, a package for novel, gradient robust finite element methods.

      Additional functionality:

      • Tools to create tensor product grids
      • Tools for grid modification

      Companion packages:

      • Gmsh.jl extension. Please be aware about the fact that, while this package and Gmsh.jl are MIT licensed, the underlying binary code of Gmsh is distributed under the GPLv2 license.
      • Visualization of these grids and of functions on them is avaialable in GridVisualize.jl.
      • SimplexGridFactory contains an API which allows to create ExtendableGrid objects with Triangulate.jl which wraps the Triangle mesh generator by J. Shewchuk and TetGen.jl which wraps the TetGen mesh generator by H. Si.
      • Triangulate.jl and TetGen.jl extensions
      • Metis.jl extension and partitioning for multithreading (under development)

      Recent changes

      • Please look up the list of recent changes
      diff --git a/dev/more/index.html b/dev/more/index.html index ca41663f..98f05b42 100644 --- a/dev/more/index.html +++ b/dev/more/index.html @@ -1,3 +1,3 @@ Derived adjacencies · ExtendableGrids.jl

      Derived adjacencies

      API

      ExtendableGrids.prepare_edges!Method
      prepare_edges!(grid)
      -

      Prepare edge adjacencies (celledges, edgecells, edgenodes)

      Currently depends on ExtendableSparse, we may want to remove this adjacency.

      source
      +

      Prepare edge adjacencies (celledges, edgecells, edgenodes)

      Currently depends on ExtendableSparse, we may want to remove this adjacency.

      source diff --git a/dev/objects.inv b/dev/objects.inv index 6a5df005..47a0123a 100644 Binary files a/dev/objects.inv and b/dev/objects.inv differ diff --git a/dev/output/index.html b/dev/output/index.html index 08c16bf6..db852f0b 100644 --- a/dev/output/index.html +++ b/dev/output/index.html @@ -7,4 +7,4 @@ compress, kwargs... ) -> Vector{String} -

      exports grid and optional provided data as a vtk file

      Each '(key, value)' pair adds another data entry to the vtk file via WriteVTK functionality.

      For the arguments 'append' and 'compress', see documentation of vtk_grid of WriteVTK.

      source +

      exports grid and optional provided data as a vtk file

      Each '(key, value)' pair adds another data entry to the vtk file via WriteVTK functionality.

      For the arguments 'append' and 'compress', see documentation of vtk_grid of WriteVTK.

      source diff --git a/dev/partitioning/index.html b/dev/partitioning/index.html index a85da8cf..0295e33f 100644 --- a/dev/partitioning/index.html +++ b/dev/partitioning/index.html @@ -41,4 +41,4 @@ keep_nodepermutation )

      (internal) Induce node partitioning from cell partitioning of grid. The algorithm assumes that nodes get the partition number from the partition numbers of the cells having this node in common. If these are differnt, the highest number is taken.

      Node partitioning should support parallel matrix-vector products with SparseMatrixCSC. The current algorithm assumes that nodes get the partition number from the partition numbers of the cells having this node in common. If these are differnt, the highest number is taken.

      Simply inducing node partition numbers from cell partition numbers does not always fulfill the condition that there is no node which is neigbour of nodes from two different partition with the same color.

      This situation is detected and corrected by joining respective critical partitions, sacrificing a bit of parallel efficiency for correctness.

      source
      ExtendableGrids.induce_edge_partitioning!Function
      induce_edge_partitioning!(grid; trivial)
      -

      (internal) Induce edge partitioning from cell partitioning of grid. The algorithm assumes that nodes get the partition number from the partition numbers of the cells having this node in common. If these are differnt, the highest number is taken.

      This method triggers creation of rather complex edge information and should be called only if this information is really necessary.

      source
      +

      (internal) Induce edge partitioning from cell partitioning of grid. The algorithm assumes that nodes get the partition number from the partition numbers of the cells having this node in common. If these are differnt, the highest number is taken.

      This method triggers creation of rather complex edge information and should be called only if this information is really necessary.

      source diff --git a/dev/plutostatichtml_examples/pluto-partitioning/index.html b/dev/plutostatichtml_examples/pluto-partitioning/index.html index 58478456..b5ed390f 100644 --- a/dev/plutostatichtml_examples/pluto-partitioning/index.html +++ b/dev/plutostatichtml_examples/pluto-partitioning/index.html @@ -263,4 +263,4 @@

      « gmsh
      + diff --git a/dev/refinement/index.html b/dev/refinement/index.html index 452e3383..48122e2f 100644 --- a/dev/refinement/index.html +++ b/dev/refinement/index.html @@ -17,4 +17,4 @@ source_grid::ExtendableGrid{T, K}; store_parents ) -> ExtendableGrid -

      generates a new ExtendableGrid by uniform refinement of each cell in the given grid

      uniform refinement rules are available for these AbstractElementGeometries:

      if multiple geometries are in the mesh uniform refinement will only work if all refinement rules refine faces and edges (in 3D) equally (so no hanging nodes are created)

      source +

      generates a new ExtendableGrid by uniform refinement of each cell in the given grid

      uniform refinement rules are available for these AbstractElementGeometries:

      if multiple geometries are in the mesh uniform refinement will only work if all refinement rules refine faces and edges (in 3D) equally (so no hanging nodes are created)

      source diff --git a/dev/regionedit/index.html b/dev/regionedit/index.html index efe3595e..9bc5e2d2 100644 --- a/dev/regionedit/index.html +++ b/dev/regionedit/index.html @@ -22,4 +22,4 @@ ireg::Int64; tol ) -> ExtendableGrid -

      Edit region numbers of grid boundary edges via line mask. This only works for 3D grids.

      source +

      Edit region numbers of grid boundary edges via line mask. This only works for 3D grids.

      source diff --git a/dev/script_examples/examples1d/index.html b/dev/script_examples/examples1d/index.html index ffe754e6..4acd23e2 100644 --- a/dev/script_examples/examples1d/index.html +++ b/dev/script_examples/examples1d/index.html @@ -37,4 +37,4 @@ Plotter.save(joinpath(picdir, "interval_multiregion.png"), gridplot(interval_multiregion(); Plotter, size, legend)) Plotter.save(joinpath(picdir, "interval_subgrid.png"), gridplot(interval_subgrid(); Plotter, size, legend)) end -end

      This page was generated using Literate.jl.

      +end

      This page was generated using Literate.jl.

      diff --git a/dev/script_examples/examples2d/index.html b/dev/script_examples/examples2d/index.html index 82fcb530..1160dc3f 100644 --- a/dev/script_examples/examples2d/index.html +++ b/dev/script_examples/examples2d/index.html @@ -88,4 +88,4 @@ fname = joinpath(picdir, "sorted_subgrid.png") Plotter.save(fname, reveal(p)) end -end

      This page was generated using Literate.jl.

      +end

      This page was generated using Literate.jl.

      diff --git a/dev/script_examples/examples3d/index.html b/dev/script_examples/examples3d/index.html index f4deef4e..08792a9f 100644 --- a/dev/script_examples/examples3d/index.html +++ b/dev/script_examples/examples3d/index.html @@ -40,4 +40,4 @@ Plotter.save(joinpath(picdir, "quadrilateral.png"), gridplot(quadrilateral(); Plotter, size)) Plotter.save(joinpath(picdir, "cross3d.png"), gridplot(cross3d(); Plotter, size)) end -end

      This page was generated using Literate.jl.

      +end

      This page was generated using Literate.jl.

      diff --git a/dev/script_examples/gmsh/index.html b/dev/script_examples/gmsh/index.html index a9ab6dc7..30e5148f 100644 --- a/dev/script_examples/gmsh/index.html +++ b/dev/script_examples/gmsh/index.html @@ -285,4 +285,4 @@ Plotter.save(joinpath(picdir, "gmsh_t4.png"), gridplot(gmsh_t4(); Plotter, size)) Plotter.save(joinpath(picdir, "gmsh_t5.png"), gridplot(gmsh_t5(); Plotter, size)) end -end

      This page was generated using Literate.jl.

      +end

      This page was generated using Literate.jl.

      diff --git a/dev/shape_specs/index.html b/dev/shape_specs/index.html index b73d3673..9c487a9a 100644 --- a/dev/shape_specs/index.html +++ b/dev/shape_specs/index.html @@ -40,4 +40,4 @@

      Coordinates of reference geometry of 3D hexahedron

      source
      ExtendableGrids.refcoords_for_geometryMethod
      refcoords_for_geometry(_)
       

      Coordinates of reference geometry of 2D quadrilateral

      source
      ExtendableGrids.refcoords_for_geometryMethod
      refcoords_for_geometry(_)
       

      Coordinates of reference geometry of 3D tetrahedron

      source
      ExtendableGrids.refcoords_for_geometryMethod
      refcoords_for_geometry(_)
      -

      Coordinates of reference geometry of 2D triangle

      source
      +

      Coordinates of reference geometry of 2D triangle

      source diff --git a/dev/subgrid/index.html b/dev/subgrid/index.html index 89a5103d..4120439e 100644 --- a/dev/subgrid/index.html +++ b/dev/subgrid/index.html @@ -2,7 +2,7 @@ Subgrid · ExtendableGrids.jl

      Subgrid

      Subgrids of an ExtendableGrid are again of the same type ExtendableGrid and unse the typed Dict mechanism to store linkage to the parent grid.

      grid=simplexgrid([1,2,3], [4,5,6])
       sub=subgrid(grid,[2],boundary=true, transform=(a,b) -> (a[1]=10*b[2]))
       println(keys(sub))
      -println(sub[Coordinates])
      Type{<:AbstractGridComponent}[Coordinates, CellParents, BFaceNodes, BFaceRegions, CellRegions, CellGeometries, ParentGridRelation, CoordinateSystem, ParentGrid, NodeParents, BFaceGeometries, NumBFaceRegions, CellNodes]
      +println(sub[Coordinates])
      Type{<:AbstractGridComponent}[BFaceGeometries, CellGeometries, CoordinateSystem, CellParents, ParentGridRelation, CellNodes, NumBFaceRegions, BFaceNodes, NodeParents, CellRegions, BFaceRegions, ParentGrid, Coordinates]
       [40 50 60]

      Given a vector on the parent grid, one can create a view of this vecotor on the subgrid:

      grid=simplexgrid([1,2,3], [4,5,6])
       sub=subgrid(grid,[2],boundary=true, transform=(a,b) -> (a[1]=10*b[2]))
       v=[i for i=1:num_nodes(grid)]
      @@ -24,4 +24,4 @@
               transform::T=function(a,b) @views a.=b[1:length(a)] end,                                      
               boundary=false,                                                     
               coordinatesystem=codim1_coordinatesystem(parent[CoordinateSystem]), 
      -        project=true) where T

      Create subgrid from list of regions.

      • parent: parent grid
      • subregions: Array of subregions which define the subgrid
      • 'support': support of subgrid, default is ONCELLS but can be also ONFACES or ON_BFACES to create codimension 1 subgrid from face/bfaces region
      • boundary: if true, create codimension 1 subgrid from boundary regions (same as support = ON_BFACES)
      • transform (kw parameter): transformation function between grid and subgrid coordinates acting on one point.
      • coordinatesystem: if boundary==true, specify coordinate system for the boundary. Default: if parent coordinatesystem is cartesian, just the cooresponding codim1 coordinatesystem, otherwise: nothing, requiring user specification for use of e.g. CellFinder with the subgrid.
      • project: project coordinates onto subgrid dimension

      A subgrid is of type ExtendableGrid and stores two additional components: ParentGrid and NodeParents

      source
      + project=true) where T

      Create subgrid from list of regions.

      A subgrid is of type ExtendableGrid and stores two additional components: ParentGrid and NodeParents

      source diff --git a/dev/tdict/index.html b/dev/tdict/index.html index b246ac7e..9a757f76 100644 --- a/dev/tdict/index.html +++ b/dev/tdict/index.html @@ -1,2 +1,2 @@ -The TDict interface pattern · ExtendableGrids.jl

      The TDict interface pattern

      Here we describe the idea behind the data structure used in this package. TDict means: extendable containers with type stable content access and lazy content creation via the Julia type system.

      Problem to be addressed

      In certain contexts it is desirable to use containers with core components which are user extendable and allow for type stable component acces. Moreover, some components are necessary on demand only, so they should be created lazily. Furthermore, there should be a kind of safety protocol which prevents errors from typos in component names etc.

      Julia default data structures do not provide these properties.

      struct

      • Julia structs with proper field type annotations guarantee type stability
      • Julia structs are not extendable, fields and their types are fixed upon definition
      • If we don't fix types of struct fields they become Any and a source for type instability
      • The situation could be fixed if getfield could be overloaded but it cant't

      Dict

      • Plain Dicts with flexible value types are a source of type instability
      • Dicts with strings as keys needs a meta protocol to handle semantics of keys which at the end probably hinges on string comparison which will make things slow
      • Dicts with symbols as keys still need this meta protocol
      • Same for the implementation of a lazy evaluation protocol
      • If a dict contains components of different types, component access will not be typestable

      Proposed solution:

      Harness the power of the Julia type system:

      • Use a struct containing a Dict with DataType as keys. Every key is a type.
      • Use type hierarchies to manage different value classes
      • Use the type system to dispatch between getindex/setindex! methods for keys
      • Extension requires declaring new types, keys can be only existing types almost removing typos as sources for errors
      • Lazy extension is managed bye an instantiate method called by getindex if necessary
      • Component access is made type stable by type dispatchedgetindex methods
      • Component insertion is made safe by having setindex! calling a veryform method

      Pros

      See above ...

      Cons

      • Implemented using a Dict, so access is inherently slower than access to a component of a struct. Therefore it is not well suited for inner loops.
      +The TDict interface pattern · ExtendableGrids.jl

      The TDict interface pattern

      Here we describe the idea behind the data structure used in this package. TDict means: extendable containers with type stable content access and lazy content creation via the Julia type system.

      Problem to be addressed

      In certain contexts it is desirable to use containers with core components which are user extendable and allow for type stable component acces. Moreover, some components are necessary on demand only, so they should be created lazily. Furthermore, there should be a kind of safety protocol which prevents errors from typos in component names etc.

      Julia default data structures do not provide these properties.

      struct

      • Julia structs with proper field type annotations guarantee type stability
      • Julia structs are not extendable, fields and their types are fixed upon definition
      • If we don't fix types of struct fields they become Any and a source for type instability
      • The situation could be fixed if getfield could be overloaded but it cant't

      Dict

      • Plain Dicts with flexible value types are a source of type instability
      • Dicts with strings as keys needs a meta protocol to handle semantics of keys which at the end probably hinges on string comparison which will make things slow
      • Dicts with symbols as keys still need this meta protocol
      • Same for the implementation of a lazy evaluation protocol
      • If a dict contains components of different types, component access will not be typestable

      Proposed solution:

      Harness the power of the Julia type system:

      • Use a struct containing a Dict with DataType as keys. Every key is a type.
      • Use type hierarchies to manage different value classes
      • Use the type system to dispatch between getindex/setindex! methods for keys
      • Extension requires declaring new types, keys can be only existing types almost removing typos as sources for errors
      • Lazy extension is managed bye an instantiate method called by getindex if necessary
      • Component access is made type stable by type dispatchedgetindex methods
      • Component insertion is made safe by having setindex! calling a veryform method

      Pros

      See above ...

      Cons

      • Implemented using a Dict, so access is inherently slower than access to a component of a struct. Therefore it is not well suited for inner loops.
      diff --git a/dev/tokenstream/index.html b/dev/tokenstream/index.html index d0b1c19b..4bf3d181 100644 --- a/dev/tokenstream/index.html +++ b/dev/tokenstream/index.html @@ -8,4 +8,4 @@ tks::TokenStream ) -> Union{Nothing, SubString{String}}

      Get next token from tokenstream.

      source
      ExtendableGrids.trytokenMethod
      trytoken(tks::TokenStream, expected::String) -> Bool
      -

      Try for keyword token.

      It token is missing, the token read is put back into stream, a value of false is returned and the next try/gettoken command continues at the same position,

      Otherwise, true is returned, and reading continues after the token found.

      source
      +

      Try for keyword token.

      It token is missing, the token read is put back into stream, a value of false is returned and the next try/gettoken command continues at the same position,

      Otherwise, true is returned, and reading continues after the token found.

      source diff --git a/dev/typehierarchy/index.html b/dev/typehierarchy/index.html index a955afb3..be275425 100644 --- a/dev/typehierarchy/index.html +++ b/dev/typehierarchy/index.html @@ -121,4 +121,4 @@ ├─ RefinedGrid └─ SubGrid

      API

      ExtendableGrids.AbstractExtendableGridApexTypeType
      abstract type AbstractExtendableGridApexType

      Apex type of all abstract types in this hierarchy.

      source
      AbstractTrees.childrenMethod
      children(T::Type) -> Union{Vector{Type}, Vector{Any}}
       

      Define children for types.

      source
      ExtendableGrids.typehierarchyMethod
      typehierarchy()
      -

      Print complete type hierachy for ExtendableGrids

      source
      +

      Print complete type hierachy for ExtendableGrids

      source diff --git a/dev/vectorofconstants/index.html b/dev/vectorofconstants/index.html index ce24bbfc..be995e63 100644 --- a/dev/vectorofconstants/index.html +++ b/dev/vectorofconstants/index.html @@ -8,4 +8,4 @@

      Iterator

      source
      Base.lengthMethod
      length(v::VectorOfConstants) -> Any
       

      Length

      source
      Base.sizeMethod
      size(v::VectorOfConstants) -> Tuple{Any}
       

      Size

      source
      Base.uniqueMethod
      unique(v::VectorOfConstants) -> Vector
      -

      Shortcut for unique

      source
      +

      Shortcut for unique

      source diff --git a/dev/voronoi/index.html b/dev/voronoi/index.html index 49e6f087..24230082 100644 --- a/dev/voronoi/index.html +++ b/dev/voronoi/index.html @@ -1,3 +1,3 @@ Voronoi tools · ExtendableGrids.jl
      +

      Find the circumcenter of a triangle.

      Derived from C source of Jonathan R Shewchuk <jrs@cs.cmu.edu>

      Modified to return absolute coordinates.

      source