From 56c95e762f7dbe93b335fd3c07459f5749813ad3 Mon Sep 17 00:00:00 2001 From: Petr Krysl Date: Thu, 11 Apr 2024 14:22:33 -0700 Subject: [PATCH] speed up searching of elements with a box --- Project.toml | 2 +- README.md | 2 +- src/MeshSelectionModule.jl | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Project.toml b/Project.toml index 64104cbb..2bad7f0e 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "FinEtools" uuid = "91bb5406-6c9a-523d-811d-0644c4229550" authors = ["Petr Krysl "] -version = "8.0.13" +version = "8.0.14" [deps] ChunkSplitters = "ae650224-84b6-46f8-82ea-d812ca08434e" diff --git a/README.md b/README.md index 127d38e6..8dd72d39 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ The package supports application packages, for instance: ## News - +- 04/11/2024: Speed up box selection of elements. - 03/21/2024: Implement element coloring. - 03/12/2024: Move parallel functionality to FinEtoolsMultithreading. - 02/19/2024: Implement mesh reordering. diff --git a/src/MeshSelectionModule.jl b/src/MeshSelectionModule.jl index 1e69d278..9d5cf9df 100644 --- a/src/MeshSelectionModule.jl +++ b/src/MeshSelectionModule.jl @@ -512,11 +512,13 @@ function selectelem(fens::FENodeSet, fes::ET; kwargs...) where {ET<:AbstractFESe allinvalue = (allin === nothing) || ((allin !== nothing) && (allin)) # Select elements whose nodes are in the selected node list nodelist = selectnode(fens; kwargs...) + node_selected = fill(false, count(fens)) + node_selected[nodelist] .= true nper = nodesperelem(fes) for i in eachindex(fes.conn) found = 0 for nd in fes.conn[i] - if nd in nodelist + if node_selected[nd] found = found + 1 end end