@@ -614,55 +614,83 @@ Keyword args:
614614 - :low : Point numbers etc are the same
615615 - :full : all arrays are equal (besides the coordinate array, the arrays only have to be equal up to permutations)
616616"""
617- function seemingly_equal(grid1:: ExtendableGrid , grid2:: ExtendableGrid ; sort = false , confidence = :full)
618- if ! sort
619- for key in keys(grid1)
620- if ! haskey(grid2, key)
621- return false
622- end
623- if ! seemingly_equal(grid1[key], grid2[key])
624- return false
625- end
626- end
627- return true
617+ function seemingly_equal(grid1:: ExtendableGrid , grid2:: ExtendableGrid ; sort = false , confidence = :full, skipkeys = [], trimgrids = true , keep = [])
618+ if trimgrids
619+ grid1 = trim(grid1; keep)
620+ grid2 = trim(grid2; keep)
628621 end
629-
630622 if confidence == :full
631- for key in keys(grid1)
632- if ! haskey(grid2, key)
633- return false
634- end
635- if ! isa(grid1[key], AbstractArray)
636- ! seemingly_equal(grid1[key], grid2[key]) && return false
637- continue
623+ if ! sort
624+ for key in keys(grid1)
625+ if key in skipkeys
626+ continue
627+ end
628+ if ! haskey(grid2, key)
629+ @warn " missing key $(key) in grid2"
630+ return false
631+ end
632+ if ! seemingly_equal(grid1[key], grid2[key])
633+ @warn " grid1[$(key) ] and grid2[$(key) ] differ"
634+ return false
635+ end
638636 end
639-
640- s1 = size(grid1[key])
641- s2 = size(grid2[key] )
642-
643- if length(s1) == 0
644- if length(s1) == 1
645- if eltype(grid1[ key]) <: Number
646- ind1 = sortperm(grid1[ key])
647- ind2 = sortperm(grid2[key])
648- sa1 = grid1[key][ind1]
649- sa2 = grid2 [key][ind2]
650- ! seemingly_equal(sa1, sa2) && return false
651- else
652- ! seemingly_equal(grid1[key], grid2[key]) && return false
637+ return true
638+ else
639+ for key in keys(grid1 )
640+ if key in skipkeys
641+ continue
642+ end
643+ if ! haskey(grid2, key)
644+ @warn " missing key $( key) in grid2 "
645+ return false
646+ end
647+ if ! isa(grid1 [key], AbstractArray)
648+ if ! seemingly_equal(grid1[key], grid2[key])
649+ @warn " grid1[ $(key) ] and grid2[ $(key) ] differ "
650+ return false
653651 end
654- else
655- if eltype(grid1[key]) <: Number && key != Coordinates
656- sa1 = multidimsort(sort(grid1[key]; dims = 1 ))
657- sa2 = multidimsort(sort(grid2[key]; dims = 1 ))
658- ! seemingly_equal(sa1, sa2) && return false
652+ continue
653+ end
654+
655+ s1 = size(grid1[key])
656+ s2 = size(grid2[key])
657+
658+ if length(s1) == 0
659+ if length(s1) == 1
660+ if eltype(grid1[key]) <: Number
661+ ind1 = sortperm(grid1[key])
662+ ind2 = sortperm(grid2[key])
663+ sa1 = grid1[key][ind1]
664+ sa2 = grid2[key][ind2]
665+ if ! seemingly_equal(sa1, sa2)
666+ @warn " grid1[$(key) ] and grid2[$(key) ] differ"
667+ return false
668+ end
669+ else
670+ if ! seemingly_equal(grid1[key], grid2[key])
671+ @warn " grid1[$(key) ] and grid2[$(key) ] differ"
672+ return false
673+ end
674+ end
659675 else
660- ! seemingly_equal(grid1[key], grid2[key]) && return false
676+ if eltype(grid1[key]) <: Number && key != Coordinates
677+ sa1 = multidimsort(sort(grid1[key]; dims = 1 ))
678+ sa2 = multidimsort(sort(grid2[key]; dims = 1 ))
679+ if ! seemingly_equal(sa1, sa2)
680+ @warn " grid1[$(key) ] and grid2[$(key) ] differ"
681+ return false
682+ end
683+ else
684+ if ! seemingly_equal(grid1[key], grid2[key])
685+ @warn " grid1[$(key) ] and grid2[$(key) ] differ"
686+ return false
687+ end
688+ end
661689 end
662690 end
663691 end
692+ return true
664693 end
665- return true
666694 elseif confidence == :low
667695 grid1_data = (num_nodes(grid1), num_cells(grid1), num_bfaces(grid1))
668696 grid2_data = (num_nodes(grid2), num_cells(grid2), num_bfaces(grid2))
0 commit comments