@@ -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