Skip to content

Commit

Permalink
Merge pull request #651 from gridap/fixing_bug_in_boundary_discrete_m…
Browse files Browse the repository at this point in the history
…odel

Fixing bug in boundary discrete model
  • Loading branch information
fverdugo authored Sep 7, 2021
2 parents b262130 + fb22c9c commit 5e47263
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 4 deletions.
30 changes: 26 additions & 4 deletions src/Geometry/DiscreteModelPortions.jl
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ function _grid_topology_portion(topo,cell_to_parent_cell)

d_to_dface_to_parent_dface = [
_setup_dface_to_parent_dface(
Val{d}(),
Val{D}(),
n_m_to_parent_nface_to_parent_mface[D+1,d+1],
num_faces(topo,d),
cell_to_parent_cell) for d in 0:D]
Expand Down Expand Up @@ -77,12 +79,34 @@ function _grid_topology_portion(topo,cell_to_parent_cell)
end

function _setup_dface_to_parent_dface(
::Val{Dc},
::Val{Dc},
parent_cell_to_parent_dface::Table,
num_parent_dfaces,
cell_to_parent_cell)
cell_to_parent_cell) where Dc
dface_to_parent_dface=Int[]
parent_dface_touched = fill(false,num_parent_dfaces)
for parent_cell in cell_to_parent_cell
pini = parent_cell_to_parent_dface.ptrs[parent_cell]
pend = parent_cell_to_parent_dface.ptrs[parent_cell+1]-1
for p in pini:pend
parent_dface = parent_cell_to_parent_dface.data[p]
if (!parent_dface_touched[parent_dface])
push!(dface_to_parent_dface,parent_dface)
parent_dface_touched[parent_dface] = true
end
end
end
dface_to_parent_dface
end

function _setup_dface_to_parent_dface(
::Val{Df},
::Val{Dc},
parent_cell_to_parent_dface::Table,
num_parent_dfaces,
cell_to_parent_cell) where {Df,Dc}
parent_dface_touched = fill(false,num_parent_dfaces)
dface = 0
for parent_cell in cell_to_parent_cell
pini = parent_cell_to_parent_dface.ptrs[parent_cell]
pend = parent_cell_to_parent_dface.ptrs[parent_cell+1]-1
Expand All @@ -92,7 +116,6 @@ function _setup_dface_to_parent_dface(
end
end
dface_to_parent_dface = findall(parent_dface_touched)
dface_to_parent_dface
end

function _setup_connectivities_d(
Expand Down Expand Up @@ -141,4 +164,3 @@ function _update_labels_dim!(face_to_label,oface_to_label,face_to_oface)
face_to_label[face] = label
end
end

12 changes: 12 additions & 0 deletions test/GeometryTests/BoundaryDiscreteModelsTests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,16 @@ n_∂Γ = get_normal_vector(∂Γ)
@test ((n_ΓVectorValue(0.0,0.0,1.0))d∂Γ) 3.0
@test ((n_∂ΓVectorValue(0.0,0.0,1.0))d∂Γ) -1.0

domain = (-1,1,-1,1,-1,1)
cells = (1,1,1)
bgmodel = CartesianDiscreteModel(domain,cells)
model = BoundaryDiscreteModel(Polytope{2},bgmodel,Int32[3,4,5,6,1,2])
topo = get_grid_topology(model)
cell_vertices = get_faces(topo,2,0)
@test cell_vertices[5] == [1,2,3,4]
@test cell_vertices[6] == [5,6,7,8]
@test cell_vertices[1] == [1,2,5,6]
@test cell_vertices[2] == [3,4,7,8]
@test cell_vertices[3] == [1,3,5,7]
@test cell_vertices[4] == [2,4,6,8]
end

0 comments on commit 5e47263

Please sign in to comment.