Skip to content

Commit 61eecab

Browse files
authored
Handle WIAS-TeSCA domfiles (#115)
* Add correspinding methods to writegrid and simplexgrid * add test for dom read/write * bump version
1 parent 0f092ce commit 61eecab

File tree

4 files changed

+338
-163
lines changed

4 files changed

+338
-163
lines changed

src/ExtendableGrids.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ using Printf
1212
using Random
1313
using Dates
1414
using LinearAlgebra
15+
using WriteVTK
1516
import Graphs
1617

1718

@@ -184,6 +185,7 @@ export TokenStream, gettoken, expecttoken, trytoken
184185

185186
include("io.jl")
186187
export writeVTK
188+
export BRegionDomCode
187189

188190
include("seal.jl")
189191

src/extendablegrid.jl

Lines changed: 68 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -638,55 +638,83 @@ Keyword args:
638638
- :low : Point numbers etc are the same
639639
- :full : all arrays are equal (besides the coordinate array, the arrays only have to be equal up to permutations)
640640
"""
641-
function seemingly_equal(grid1::ExtendableGrid, grid2::ExtendableGrid; sort = false, confidence = :full)
642-
if !sort
643-
for key in keys(grid1)
644-
if !haskey(grid2, key)
645-
return false
646-
end
647-
if !seemingly_equal(grid1[key], grid2[key])
648-
return false
649-
end
650-
end
651-
return true
641+
function seemingly_equal(grid1::ExtendableGrid, grid2::ExtendableGrid; sort = false, confidence = :full, skipkeys = [], trimgrids = true, keep = [])
642+
if trimgrids
643+
grid1 = trim(grid1; keep)
644+
grid2 = trim(grid2; keep)
652645
end
653-
654646
if confidence == :full
655-
for key in keys(grid1)
656-
if !haskey(grid2, key)
657-
return false
658-
end
659-
if !isa(grid1[key], AbstractArray)
660-
!seemingly_equal(grid1[key], grid2[key]) && return false
661-
continue
647+
if !sort
648+
for key in keys(grid1)
649+
if key in skipkeys
650+
continue
651+
end
652+
if !haskey(grid2, key)
653+
@warn "missing key $(key) in grid2"
654+
return false
655+
end
656+
if !seemingly_equal(grid1[key], grid2[key])
657+
@warn "grid1[$(key)] and grid2[$(key)] differ"
658+
return false
659+
end
662660
end
663-
664-
s1 = size(grid1[key])
665-
s2 = size(grid2[key])
666-
667-
if length(s1) == 0
668-
if length(s1) == 1
669-
if eltype(grid1[key]) <: Number
670-
ind1 = sortperm(grid1[key])
671-
ind2 = sortperm(grid2[key])
672-
sa1 = grid1[key][ind1]
673-
sa2 = grid2[key][ind2]
674-
!seemingly_equal(sa1, sa2) && return false
675-
else
676-
!seemingly_equal(grid1[key], grid2[key]) && return false
661+
return true
662+
else
663+
for key in keys(grid1)
664+
if key in skipkeys
665+
continue
666+
end
667+
if !haskey(grid2, key)
668+
@warn "missing key $(key) in grid2"
669+
return false
670+
end
671+
if !isa(grid1[key], AbstractArray)
672+
if !seemingly_equal(grid1[key], grid2[key])
673+
@warn "grid1[$(key)] and grid2[$(key)] differ"
674+
return false
677675
end
678-
else
679-
if eltype(grid1[key]) <: Number && key != Coordinates
680-
sa1 = multidimsort(sort(grid1[key]; dims = 1))
681-
sa2 = multidimsort(sort(grid2[key]; dims = 1))
682-
!seemingly_equal(sa1, sa2) && return false
676+
continue
677+
end
678+
679+
s1 = size(grid1[key])
680+
s2 = size(grid2[key])
681+
682+
if length(s1) == 0
683+
if length(s1) == 1
684+
if eltype(grid1[key]) <: Number
685+
ind1 = sortperm(grid1[key])
686+
ind2 = sortperm(grid2[key])
687+
sa1 = grid1[key][ind1]
688+
sa2 = grid2[key][ind2]
689+
if !seemingly_equal(sa1, sa2)
690+
@warn "grid1[$(key)] and grid2[$(key)] differ"
691+
return false
692+
end
693+
else
694+
if !seemingly_equal(grid1[key], grid2[key])
695+
@warn "grid1[$(key)] and grid2[$(key)] differ"
696+
return false
697+
end
698+
end
683699
else
684-
!seemingly_equal(grid1[key], grid2[key]) && return false
700+
if eltype(grid1[key]) <: Number && key != Coordinates
701+
sa1 = multidimsort(sort(grid1[key]; dims = 1))
702+
sa2 = multidimsort(sort(grid2[key]; dims = 1))
703+
if !seemingly_equal(sa1, sa2)
704+
@warn "grid1[$(key)] and grid2[$(key)] differ"
705+
return false
706+
end
707+
else
708+
if !seemingly_equal(grid1[key], grid2[key])
709+
@warn "grid1[$(key)] and grid2[$(key)] differ"
710+
return false
711+
end
712+
end
685713
end
686714
end
687715
end
716+
return true
688717
end
689-
return true
690718
elseif confidence == :low
691719
grid1_data = (num_nodes(grid1), num_cells(grid1), num_bfaces(grid1))
692720
grid2_data = (num_nodes(grid2), num_cells(grid2), num_bfaces(grid2))

0 commit comments

Comments
 (0)