Skip to content

Commit 667a139

Browse files
Add Ferrite.write_facetset (#1259)
* Add a method to export facets to VTK * Update export tests to be slightly more verbose on failure
1 parent 4dbe1b8 commit 667a139

File tree

5 files changed

+38
-12
lines changed

5 files changed

+38
-12
lines changed

docs/src/reference/export.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ write_cell_data
3131
write_node_data
3232
Ferrite.write_cellset
3333
Ferrite.write_nodeset
34+
Ferrite.write_facetset
3435
Ferrite.write_constraints
3536
Ferrite.write_cell_colors
3637
```

docs/src/topics/export.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ where `write_solution` is just one example of the following functions that can b
2828
* [`write_projection`](@ref)
2929
* [`Ferrite.write_cellset`](@ref)
3030
* [`Ferrite.write_nodeset`](@ref)
31+
* [`Ferrite.write_facetset`](@ref)
3132
* [`Ferrite.write_constraints`](@ref)
3233
* [`Ferrite.write_cell_colors`](@ref)
3334

src/Export/VTK.jl

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ This file handler can be used to to write data with
1414
* [`write_node_data`](@ref).
1515
* [`Ferrite.write_cellset`](@ref)
1616
* [`Ferrite.write_nodeset`](@ref)
17+
* [`Ferrite.write_facetset`](@ref)
1718
* [`Ferrite.write_constraints`](@ref)
1819
1920
It is necessary to call `close(::VTKGridFile)` to save the data after writing
@@ -283,6 +284,28 @@ function write_nodeset(vtk, grid::AbstractGrid, nodeset::String)
283284
return vtk
284285
end
285286

287+
"""
288+
write_facetset(vtk::VTKGridFile, grid::AbstractGrid, facetsetname::String)
289+
write_facetset(vtk::VTKGridFile, grid::AbstractGrid, facetset::AbstractVecOrSet{FacetIndex}, facetsetname::String)
290+
291+
Write nodal values of 1 for nodes of the faces in `facetset`, and 0 otherwise
292+
"""
293+
function write_facetset(vtk, grid::AbstractGrid, facetset::AbstractVecOrSet{FacetIndex}, facetsetname::String)
294+
z = zeros(getnnodes(grid))
295+
for (cellid, lfi) in facetset
296+
cell = getcells(grid, cellid)
297+
gip = geometric_interpolation(cell)
298+
facetnodes = facetdof_indices(gip)[lfi]
299+
for facetnode in facetnodes
300+
i = get_node_ids(cell)[facetnode]
301+
z[i] = 1.0
302+
end
303+
end
304+
write_node_data(vtk, z, facetsetname)
305+
return vtk
306+
end
307+
write_facetset(vtk, grid::AbstractGrid, facetsetname::String) = write_facetset(vtk, grid, getfacetset(grid, facetsetname), facetsetname)
308+
286309
"""
287310
write_cellset(vtk, grid::AbstractGrid)
288311
write_cellset(vtk, grid::AbstractGrid, cellset::String)

test/checksums.sha1

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
1-
279a353012f816aedcab4ffe08b566562f6b58b7
1+
780cb53436186726b02c525be8120cf3c13fedab
22
ffc0824476ef6dfce54e5d53eb5dcb71708205cd
3-
70975511109b94cd611364d9a46b324fd91dc095
3+
5761355c16893882fef1e952d703d6c337a37a4f
44
c1c91d5352611771771c3d92fefc51937812e217
5-
a5003cbddac9bb5279fce2dd4d6f26cd0912f3d8
5+
7b008089f6431a574754499c069251e19b2577dd
66
23a709dc8931bb2de0bdba793bc290af1a11f16a
7-
a56a590c396991212ad11479350e361da5bf3f0b
7+
76fb94c366f517e87e6559d9ea2fadfdf43e16ff
88
6c43f459bbea5e3a9f79ec5da91ef9bc8e223027
9-
49f2b223e5d879547929af68cc9f7cdeaf5d6e34
9+
31cf9ecd68f7c0235bf0f6d8b181b0adf9e9ac69
1010
dde376ca8547021a77ca260f79f5bb7e34b7c70b
11-
30f412be44de0bdf7a10aed76eb68d9b5a829fc3
11+
4ad48c5cd4c37231d13bf11547cb9a30f7bb744b
1212
c7e61d0f1015d78f5250f9a5771bfba23be005cd
13-
ddf46e899f5e794bdde219542e1fc5306fc3f300
13+
acae7ae0e10c232c1dd9f7c352f27e0100683b13
1414
7f02dc00f8f55db50ea752400c0f97779d9f0c93
15-
1fc24de1e8c5e06dcd4e4f1cd6544c842845f35e
15+
f592c19830d0560bb29c736764e8af02b442e49b
1616
6c41cbbbcdbefda0afb6208295e6eab9cec6f812
17-
6d86368c529bf5cf7ae28e23a8094501d914d05f
17+
48125fdc01338ae420e04405699d23417babdae2
1818
11549a1498556572a8cfa052b3b06b660fbfe05e
19-
a44e2e480309dbf320a5bf044fd5e97bc73ab28d
19+
9cd7ab5fffd0c3acaf744d8cf721357e97c04267
2020
48528031570b719cd5683ef7fbceefe386dcb10b
21-
c21313b96210736201ad37e0cdc7a5958791041c
21+
ccc8b6567472b159321b4f096d1ce4555d39fac8
2222
eae4ecbd38cc6ccf249bd931ec6773395180c128

test/test_grid_dofhandler_vtk.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ else
88
end
99

1010
@testset "Grid, DofHandler, vtk" begin
11-
for (celltype, dim) in (
11+
@testset "$celltype" for (celltype, dim) in (
1212
(Line, 1),
1313
(QuadraticLine, 1),
1414
(Quadrilateral, 2),
@@ -44,6 +44,7 @@ end
4444
@test Ferrite.write_cellset(vtk, grid, "cell-1") === vtk
4545
@test Ferrite.write_cellset(vtk, grid, "middle-cells") === vtk
4646
@test Ferrite.write_nodeset(vtk, grid, "middle-nodes") === vtk
47+
@test Ferrite.write_facetset(vtk, grid, "right") === vtk
4748
end
4849

4950
# test the sha of the file

0 commit comments

Comments
 (0)