From 218e6a79a88cc63710010a6bc6998ec62bb237fe Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Tue, 15 Jun 2021 17:02:02 +0200 Subject: [PATCH 1/7] VTK image data is the appropriate type, not VTK rectilinear grid FFTs require constant spacing in all three directions, this is guaranteed by the vtkImageData but not by vtkRectilinearGrid --- PRIVATE | 2 +- ...rains16x16x16.vtr => 20grains16x16x16.vti} | 17 +--- ...rains32x32x32.vtr => 20grains32x32x32.vti} | 17 +--- ...rains64x64x64.vtr => 20grains64x64x64.vti} | 17 +--- examples/grid/tension-hold-unload.yaml | 37 +++++++++ python/damask/_grid.py | 31 ++++--- python/damask/_result.py | 4 +- python/damask/_vtk.py | 41 +++++++++- python/damask/seeds.py | 6 +- .../reference/Grid/clean_1_1+2+3_False.vtr | 25 ------ .../reference/Grid/clean_1_1+2+3_True.vtr | 25 ------ .../tests/reference/Grid/clean_1_1_False.vtr | 25 ------ .../tests/reference/Grid/clean_1_1_True.vtr | 25 ------ .../reference/Grid/clean_1_None_False.vtr | 25 ------ .../reference/Grid/clean_1_None_True.vtr | 25 ------ .../reference/Grid/clean_2_1+2+3_False.vti | 19 +++++ .../reference/Grid/clean_2_1+2+3_False.vtr | 30 ------- .../reference/Grid/clean_2_1+2+3_True.vti | 19 +++++ .../reference/Grid/clean_2_1+2+3_True.vtr | 30 ------- .../tests/reference/Grid/clean_2_1_False.vti | 19 +++++ .../tests/reference/Grid/clean_2_1_False.vtr | 30 ------- .../tests/reference/Grid/clean_2_1_True.vti | 19 +++++ .../tests/reference/Grid/clean_2_1_True.vtr | 30 ------- .../tests/reference/Grid/clean_2_2_False.vtr | 25 ------ .../tests/reference/Grid/clean_2_2_True.vtr | 25 ------ .../reference/Grid/clean_2_None_False.vti | 19 +++++ .../reference/Grid/clean_2_None_False.vtr | 30 ------- .../reference/Grid/clean_2_None_True.vti | 19 +++++ .../reference/Grid/clean_2_None_True.vtr | 30 ------- .../reference/Grid/clean_3_1+2+3_False.vti | 19 +++++ .../reference/Grid/clean_3_1+2+3_False.vtr | 30 ------- .../reference/Grid/clean_3_1+2+3_True.vti | 19 +++++ .../reference/Grid/clean_3_1+2+3_True.vtr | 30 ------- .../tests/reference/Grid/clean_3_1_False.vti | 19 +++++ .../tests/reference/Grid/clean_3_1_False.vtr | 30 ------- .../tests/reference/Grid/clean_3_1_True.vti | 19 +++++ .../tests/reference/Grid/clean_3_1_True.vtr | 30 ------- .../tests/reference/Grid/clean_3_2_False.vtr | 25 ------ .../tests/reference/Grid/clean_3_2_True.vtr | 25 ------ .../reference/Grid/clean_3_None_False.vti | 19 +++++ .../reference/Grid/clean_3_None_False.vtr | 30 ------- .../reference/Grid/clean_3_None_True.vti | 19 +++++ .../reference/Grid/clean_3_None_True.vtr | 30 ------- .../reference/Grid/clean_4_1+2+3_False.vti | 19 +++++ .../reference/Grid/clean_4_1+2+3_False.vtr | 30 ------- .../reference/Grid/clean_4_1+2+3_True.vti | 19 +++++ .../reference/Grid/clean_4_1+2+3_True.vtr | 30 ------- .../tests/reference/Grid/clean_4_1_False.vti | 19 +++++ .../tests/reference/Grid/clean_4_1_False.vtr | 30 ------- .../tests/reference/Grid/clean_4_1_True.vti | 19 +++++ .../tests/reference/Grid/clean_4_1_True.vtr | 30 ------- .../tests/reference/Grid/clean_4_2_False.vtr | 25 ------ .../tests/reference/Grid/clean_4_2_True.vtr | 25 ------ .../reference/Grid/clean_4_None_False.vti | 19 +++++ .../reference/Grid/clean_4_None_False.vtr | 30 ------- .../reference/Grid/clean_4_None_True.vti | 19 +++++ .../reference/Grid/clean_4_None_True.vtr | 30 ------- .../reference/Grid/flip_directions_x-y-z.vti | 19 +++++ .../reference/Grid/flip_directions_x-y-z.vtr | 30 ------- .../reference/Grid/flip_directions_x.vti | 19 +++++ .../reference/Grid/flip_directions_x.vtr | 30 ------- .../reference/Grid/flip_directions_y-z.vti | 19 +++++ .../reference/Grid/flip_directions_y-z.vtr | 30 ------- .../reference/Grid/flip_directions_z-x-y.vti | 19 +++++ .../reference/Grid/flip_directions_z-x-y.vtr | 30 ------- .../Grid/get_grain_boundaries_8g12x15x20.vti | 19 +++++ .../Grid/get_grain_boundaries_8g12x15x20.vtr | 30 ------- .../Grid/{measured.vtr => measured.vti} | 17 +--- .../mirror_directions_x+reflect_False.vti | 19 +++++ .../mirror_directions_x+reflect_False.vtr | 30 ------- .../mirror_directions_x-y-z+reflect_True.vti | 19 +++++ .../mirror_directions_x-y-z+reflect_True.vtr | 30 ------- .../mirror_directions_y-z+reflect_False.vti | 19 +++++ .../mirror_directions_y-z+reflect_False.vtr | 30 ------- .../mirror_directions_z-x-y+reflect_False.vti | 19 +++++ .../mirror_directions_z-x-y+reflect_False.vtr | 30 ------- .../Grid/rotate_Eulers_0.0-32.0-240.0.vti | 19 +++++ .../Grid/rotate_Eulers_0.0-32.0-240.0.vtr | 30 ------- .../Grid/rotate_Eulers_32.0-68.0-21.0.vti | 19 +++++ .../Grid/rotate_Eulers_32.0-68.0-21.0.vtr | 30 ------- .../reference/Grid/scale_grid_10-10-10.vti | 19 +++++ .../reference/Grid/scale_grid_10-10-10.vtr | 30 ------- .../reference/Grid/scale_grid_10-11-10.vti | 19 +++++ .../reference/Grid/scale_grid_10-11-10.vtr | 30 ------- .../reference/Grid/scale_grid_10-13-10.vti | 19 +++++ .../reference/Grid/scale_grid_10-13-10.vtr | 30 ------- .../reference/Grid/scale_grid_10-20-2.vti | 19 +++++ .../reference/Grid/scale_grid_10-20-2.vtr | 30 ------- .../reference/Grid/scale_grid_5-4-20.vti | 19 +++++ .../reference/Grid/scale_grid_5-4-20.vtr | 30 ------- .../reference/Grid/scale_grid_8-10-12.vti | 19 +++++ .../reference/Grid/scale_grid_8-10-12.vtr | 30 ------- .../tests/reference/Result/12grains6x7x8.vti | 19 +++++ .../tests/reference/Result/12grains6x7x8.vtr | 30 ------- .../tests/reference/Result/4grains2x4x3.vti | 19 +++++ .../tests/reference/Result/4grains2x4x3.vtr | 30 ------- .../Result/6grains6x7x8_single_phase.vti | 19 +++++ .../Result/6grains6x7x8_single_phase.vtr | 30 ------- .../Result/save_VTK/test_vtk[0-0-0].md5 | 2 +- .../Result/save_VTK/test_vtk[0-0-1].md5 | 2 +- .../Result/save_VTK/test_vtk[0-0-2].md5 | 2 +- .../Result/save_VTK/test_vtk[1-0-0].md5 | 2 +- .../Result/save_VTK/test_vtk[1-0-1].md5 | 2 +- .../Result/save_VTK/test_vtk[1-0-2].md5 | 2 +- python/tests/test_Grid.py | 33 +++----- python/tests/test_Result.py | 2 +- src/IO.f90 | 2 +- src/grid/discretization_grid.f90 | 80 ++++++++----------- 108 files changed, 882 insertions(+), 1598 deletions(-) rename examples/grid/{20grains16x16x16.vtr => 20grains16x16x16.vti} (74%) rename examples/grid/{20grains32x32x32.vtr => 20grains32x32x32.vti} (92%) rename examples/grid/{20grains64x64x64.vtr => 20grains64x64x64.vti} (98%) create mode 100644 examples/grid/tension-hold-unload.yaml delete mode 100644 python/tests/reference/Grid/clean_1_1+2+3_False.vtr delete mode 100644 python/tests/reference/Grid/clean_1_1+2+3_True.vtr delete mode 100644 python/tests/reference/Grid/clean_1_1_False.vtr delete mode 100644 python/tests/reference/Grid/clean_1_1_True.vtr delete mode 100644 python/tests/reference/Grid/clean_1_None_False.vtr delete mode 100644 python/tests/reference/Grid/clean_1_None_True.vtr create mode 100644 python/tests/reference/Grid/clean_2_1+2+3_False.vti delete mode 100644 python/tests/reference/Grid/clean_2_1+2+3_False.vtr create mode 100644 python/tests/reference/Grid/clean_2_1+2+3_True.vti delete mode 100644 python/tests/reference/Grid/clean_2_1+2+3_True.vtr create mode 100644 python/tests/reference/Grid/clean_2_1_False.vti delete mode 100644 python/tests/reference/Grid/clean_2_1_False.vtr create mode 100644 python/tests/reference/Grid/clean_2_1_True.vti delete mode 100644 python/tests/reference/Grid/clean_2_1_True.vtr delete mode 100644 python/tests/reference/Grid/clean_2_2_False.vtr delete mode 100644 python/tests/reference/Grid/clean_2_2_True.vtr create mode 100644 python/tests/reference/Grid/clean_2_None_False.vti delete mode 100644 python/tests/reference/Grid/clean_2_None_False.vtr create mode 100644 python/tests/reference/Grid/clean_2_None_True.vti delete mode 100644 python/tests/reference/Grid/clean_2_None_True.vtr create mode 100644 python/tests/reference/Grid/clean_3_1+2+3_False.vti delete mode 100644 python/tests/reference/Grid/clean_3_1+2+3_False.vtr create mode 100644 python/tests/reference/Grid/clean_3_1+2+3_True.vti delete mode 100644 python/tests/reference/Grid/clean_3_1+2+3_True.vtr create mode 100644 python/tests/reference/Grid/clean_3_1_False.vti delete mode 100644 python/tests/reference/Grid/clean_3_1_False.vtr create mode 100644 python/tests/reference/Grid/clean_3_1_True.vti delete mode 100644 python/tests/reference/Grid/clean_3_1_True.vtr delete mode 100644 python/tests/reference/Grid/clean_3_2_False.vtr delete mode 100644 python/tests/reference/Grid/clean_3_2_True.vtr create mode 100644 python/tests/reference/Grid/clean_3_None_False.vti delete mode 100644 python/tests/reference/Grid/clean_3_None_False.vtr create mode 100644 python/tests/reference/Grid/clean_3_None_True.vti delete mode 100644 python/tests/reference/Grid/clean_3_None_True.vtr create mode 100644 python/tests/reference/Grid/clean_4_1+2+3_False.vti delete mode 100644 python/tests/reference/Grid/clean_4_1+2+3_False.vtr create mode 100644 python/tests/reference/Grid/clean_4_1+2+3_True.vti delete mode 100644 python/tests/reference/Grid/clean_4_1+2+3_True.vtr create mode 100644 python/tests/reference/Grid/clean_4_1_False.vti delete mode 100644 python/tests/reference/Grid/clean_4_1_False.vtr create mode 100644 python/tests/reference/Grid/clean_4_1_True.vti delete mode 100644 python/tests/reference/Grid/clean_4_1_True.vtr delete mode 100644 python/tests/reference/Grid/clean_4_2_False.vtr delete mode 100644 python/tests/reference/Grid/clean_4_2_True.vtr create mode 100644 python/tests/reference/Grid/clean_4_None_False.vti delete mode 100644 python/tests/reference/Grid/clean_4_None_False.vtr create mode 100644 python/tests/reference/Grid/clean_4_None_True.vti delete mode 100644 python/tests/reference/Grid/clean_4_None_True.vtr create mode 100644 python/tests/reference/Grid/flip_directions_x-y-z.vti delete mode 100644 python/tests/reference/Grid/flip_directions_x-y-z.vtr create mode 100644 python/tests/reference/Grid/flip_directions_x.vti delete mode 100644 python/tests/reference/Grid/flip_directions_x.vtr create mode 100644 python/tests/reference/Grid/flip_directions_y-z.vti delete mode 100644 python/tests/reference/Grid/flip_directions_y-z.vtr create mode 100644 python/tests/reference/Grid/flip_directions_z-x-y.vti delete mode 100644 python/tests/reference/Grid/flip_directions_z-x-y.vtr create mode 100644 python/tests/reference/Grid/get_grain_boundaries_8g12x15x20.vti delete mode 100644 python/tests/reference/Grid/get_grain_boundaries_8g12x15x20.vtr rename python/tests/reference/Grid/{measured.vtr => measured.vti} (93%) create mode 100644 python/tests/reference/Grid/mirror_directions_x+reflect_False.vti delete mode 100644 python/tests/reference/Grid/mirror_directions_x+reflect_False.vtr create mode 100644 python/tests/reference/Grid/mirror_directions_x-y-z+reflect_True.vti delete mode 100644 python/tests/reference/Grid/mirror_directions_x-y-z+reflect_True.vtr create mode 100644 python/tests/reference/Grid/mirror_directions_y-z+reflect_False.vti delete mode 100644 python/tests/reference/Grid/mirror_directions_y-z+reflect_False.vtr create mode 100644 python/tests/reference/Grid/mirror_directions_z-x-y+reflect_False.vti delete mode 100644 python/tests/reference/Grid/mirror_directions_z-x-y+reflect_False.vtr create mode 100644 python/tests/reference/Grid/rotate_Eulers_0.0-32.0-240.0.vti delete mode 100644 python/tests/reference/Grid/rotate_Eulers_0.0-32.0-240.0.vtr create mode 100644 python/tests/reference/Grid/rotate_Eulers_32.0-68.0-21.0.vti delete mode 100644 python/tests/reference/Grid/rotate_Eulers_32.0-68.0-21.0.vtr create mode 100644 python/tests/reference/Grid/scale_grid_10-10-10.vti delete mode 100644 python/tests/reference/Grid/scale_grid_10-10-10.vtr create mode 100644 python/tests/reference/Grid/scale_grid_10-11-10.vti delete mode 100644 python/tests/reference/Grid/scale_grid_10-11-10.vtr create mode 100644 python/tests/reference/Grid/scale_grid_10-13-10.vti delete mode 100644 python/tests/reference/Grid/scale_grid_10-13-10.vtr create mode 100644 python/tests/reference/Grid/scale_grid_10-20-2.vti delete mode 100644 python/tests/reference/Grid/scale_grid_10-20-2.vtr create mode 100644 python/tests/reference/Grid/scale_grid_5-4-20.vti delete mode 100644 python/tests/reference/Grid/scale_grid_5-4-20.vtr create mode 100644 python/tests/reference/Grid/scale_grid_8-10-12.vti delete mode 100644 python/tests/reference/Grid/scale_grid_8-10-12.vtr create mode 100644 python/tests/reference/Result/12grains6x7x8.vti delete mode 100644 python/tests/reference/Result/12grains6x7x8.vtr create mode 100644 python/tests/reference/Result/4grains2x4x3.vti delete mode 100644 python/tests/reference/Result/4grains2x4x3.vtr create mode 100644 python/tests/reference/Result/6grains6x7x8_single_phase.vti delete mode 100644 python/tests/reference/Result/6grains6x7x8_single_phase.vtr diff --git a/PRIVATE b/PRIVATE index 4e63593fa..31d65b01e 160000 --- a/PRIVATE +++ b/PRIVATE @@ -1 +1 @@ -Subproject commit 4e63593fa25bbb296fc734c82aff3353190565f7 +Subproject commit 31d65b01e2b775b790d43ff78fd87a2d481f89c6 diff --git a/examples/grid/20grains16x16x16.vtr b/examples/grid/20grains16x16x16.vti similarity index 74% rename from examples/grid/20grains16x16x16.vtr rename to examples/grid/20grains16x16x16.vti index 8c8e5d9dc..fcbfa91e3 100644 --- a/examples/grid/20grains16x16x16.vtr +++ b/examples/grid/20grains16x16x16.vti @@ -1,6 +1,6 @@ - - + + AQAAAACAAAAkAAAALAAAAA==eF7LzUwuyi8uKSpNLiktSi1WMDJgyMjPzU9PzcusSizJzM/jNGQAAASkDSY= @@ -14,17 +14,6 @@ AQAAAACAAAAAAAAADwYAAA==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 - - - AQAAAACAAACIAAAAOAAAAA==eF5jYEAGG+wh9AEofQJKX4DSV6D0DSh9B0o/gNKPoPQTKP0MSr+A0q+g9Bso/Q5Kf7AHAB2kEak= - - - AQAAAACAAACIAAAAOAAAAA==eF5jYEAGG+wh9AEofQJKX4DSV6D0DSh9B0o/gNKPoPQTKP0MSr+A0q+g9Bso/Q5Kf7AHAB2kEak= - - - AQAAAACAAACIAAAAOAAAAA==eF5jYEAGG+wh9AEofQJKX4DSV6D0DSh9B0o/gNKPoPQTKP0MSr+A0q+g9Bso/Q5Kf7AHAB2kEak= - - - + diff --git a/examples/grid/20grains32x32x32.vtr b/examples/grid/20grains32x32x32.vti similarity index 92% rename from examples/grid/20grains32x32x32.vtr rename to examples/grid/20grains32x32x32.vti index 616685604..6b5535d3c 100644 --- a/examples/grid/20grains32x32x32.vtr +++ b/examples/grid/20grains32x32x32.vti @@ -1,6 +1,6 @@ - - + + AQAAAACAAAAkAAAALAAAAA==eF7LzUwuyi8uKSpNLiktSi1WMDJgyMjPzU9PzcusSizJzM/jNGQAAASkDSY= @@ -14,17 +14,6 @@ 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 - - - AQAAAACAAAAIAQAAUgAAAA==eF5NxTsOQwAAAFA3c1VHMBo7GAwGaZpGRMSv2irqCAZv8JYXBFdReB478c2pM+cufPfDT5euXLtx6869B49+efLbH389++fFqzf/vYcHn1gjIQ== - - - AQAAAACAAAAIAQAAUgAAAA==eF5NxTsOQwAAAFA3c1VHMBo7GAwGaZpGRMSv2irqCAZv8JYXBFdReB478c2pM+cufPfDT5euXLtx6869B49+efLbH389++fFqzf/vYcHn1gjIQ== - - - AQAAAACAAAAIAQAAUgAAAA==eF5NxTsOQwAAAFA3c1VHMBo7GAwGaZpGRMSv2irqCAZv8JYXBFdReB478c2pM+cufPfDT5euXLtx6869B49+efLbH389++fFqzf/vYcHn1gjIQ== - - - + diff --git a/examples/grid/20grains64x64x64.vtr b/examples/grid/20grains64x64x64.vti similarity index 98% rename from examples/grid/20grains64x64x64.vtr rename to examples/grid/20grains64x64x64.vti index 95d089829..295c26ee7 100644 --- a/examples/grid/20grains64x64x64.vtr +++ b/examples/grid/20grains64x64x64.vti @@ -1,6 +1,6 @@ - - + + AQAAAACAAAAkAAAALAAAAA==eF7LzUwuyi8uKSpNLiktSi1WMDJgyMjPzU9PzcusSizJzM/jNGQAAASkDSY= @@ -14,17 +14,6 @@ QAAAAACAAAAAAAAA1gIAAPECAAD2AgAA9QIAAOYCAADUAgAA7gIAAOECAADMAgAArAIAAI4CAABnAgAAUQIAAEYCAAA2AgAANgIAADcCAAAnAgAAOgIAAEcCAABdAgAAcgIAAIgCAACXAgAAkgIAAIgCAACNAgAAfQIAAG0CAABxAgAAaQIAAH8CAABrAgAAaQIAAHUCAACHAgAAiAIAAJECAACLAgAAkQIAAJYCAACgAgAAlwIAAKwCAACxAgAA1AIAAOACAADUAgAA4wIAAOYCAADsAgAA/QIAAAgDAAAAAwAA6gIAAMMCAADDAgAAwwIAANkCAADaAgAAwgIAANECAADgAgAA2QIAAA==eF7t3M1u1EAQhVEIKIAURWje/2FZZLyxsE7b/Vfl6dqc/f1aXvrx7eseT7939sdkdZ9BfQxWHUtVj1GWnjrMVt1aqa7Re5/tvp32j6L61arOUXtf7b6ddo+mOl41W+/a7ttp76iq51W1dxRbnXaOrnqWqr2j2Pq0bxbVV2r32fY67ZpNdd7766n2n2Xv055ZLe0etf+o045ZfXuq7tHewejTjtF9u2i0/rNO+0ZRPc8a5Tsw+7T7aNWtlR9Q3WqNcurRS/Xprfr3eg/RTp1qVYdZqnfrdxDtfu9UR6m9o6i+Z83Wfbt9/9J3oH2jq561Zu2+VztmVf1aGe3Ue/XvY5RT77t3n9V/9jtQ79V/rKNOnVf/ufY+dV7dY9j61Hn1j2ntqa/Ufln9c6B6zPLqqe/q/n/VY5alp75SO2ZRnaV6zPLo1LVU7RpddT2resxyf+oqtWt01bFW9ZilupaqfaOpXr1Uj9Gqa6naO4rqM0p1Ga36ru59VJdRqnO2/to9murTy7/wJ1SH0Wrn6KpXK9X97HtQl16+P9Wu2VS/q6pvqb3ewXul2jWb6nnk/r8D6lnr0TtQr15q12zqPyKlqmOt6jJa7Rpd9Tyr+tWqHrPUztFUx1rV8arqMFvtPlt1a6U6XlX7R1EdRqtevVTPs2r3aKpLb9Wnt+p5Vu0dVXVqrbqMVl1L1c7RVbda1WGW6lqq9s2iOp5V+0dRfaV2zaa6Su0dTfWV2jOr6py9e6t3oB2ze/fuq3+Zd+1e+w60293UftlV79X/NVT31f/eqvvq/xqu/l+3/f9Xe93NV+1/9N9v7XVXX6W//vuune7m/n+Ed+uv3q/2DvQ/yiO1czTVV2rHLKqr1P8+1WGU6nlW7RpV9Tyr+kt1q1Udr6qdo6h+tarvVdV1dO8s70C9WrmdOvZydvco/dWptftTp1GqUy/Vp7Xq08ujU5fRqlet/wAoBGlteF7t3buKG0EQhlFfwPbCYha9/8M6sJQMiNP3rmqpkpP/X8czt2//73b3+yJ/blL3N6i3Rapbq+oy29JTh92qX6/qWKp6rLL2tH8U1bFX9Y3au7X747R7NNWx1Wy9e7s/TntHVT1rzdJ7VPfHaefoqmupvy9q/12OPu2bRfUt7R61/6zTrtlUb3WP9g5mn/bMam/33f1XnXbM5o+Lvf1Xv4PVpz2jeu0s1VeqW6+7TjvvVl1rVWepjrXuPu2/SnUb5Sdc1X/3/bmoPqNUn9mqv+x9B7vv2n3WO1CHXapvreodpfvj1L/2HWjvaKpnr9m7P3sH2jWL6jfKKKe+UntmU91Gu/vUV2rPLKrTbFefupaqXbOoPqucfepZqvbMprqsdtapa6naM5vqsctRp561as9sqsNuW08da9WOWdX+Uaw99axVO2bz4652j6ZOHVvVnln8gNo/itdTv1a1Z3TV+5R3oI6tat+oqm+p2j+K6tiqdo6meraq/XerjrVq5yiq22jVYZfqWat23606zVY9dqmupWr/XarLatVjtV931TdLd+0fRXWZ7VehWfpr76iq02jVu1Z1Ge2vi9o3i+rWqzr2qm6lPVvVvllUx1rVbbTqNFvtm0V11XcmHqrXaNVnldo3uupaqnqNVl1Wq52jqZ6tqtso1WOX2n236teruo1SHXarDqtVt9GqX6/aP4rqMlt1mqX69ardo6lOo1WfVapjq9o7qurWq3qsVh1b1c7RVcda1WG36lmr9s2iukrtHkX1rFW7ZlOds3af9Q60Z1ZP7f7uX+dp3Ue/A+13itoxq+ortdspasfsqvO7/9mq87v/a6jer9Zfe52mer/7v4bqfmr/0v+8nK66n9Zf/33QXqf47Dukp/VX71fpr+/PPvPZd121+27VWWrP6Kprqfq+b5T3oZ61at9oqmOr6lyrOtaqjq1q792qW6+PU8/R7uodvb96jfJ66rVK9ZqlusxSnUb77NRlterV6z82+m0keF7t3bmq2DAQhtEskAVCCPf9HzZFcGMwR8toNDKZ5vT/p9r++PTvPif7dZO630X9SFLdRlWX1baeOuxW/WZVx1bVI8ve0/5VVMdR1bV679Hu12n3aqpnr+pctfds9+u0d1XVtdXvjapDtlGnnaurvrPdq72D6NO+p6jes91391912vU0V/fPfgerT3ue6qruWf2zTjue4pcH1XFWdew1637c1L5VfOos1XFU9Ww1++79q70D9exVHWdV3+rdd70DdYv214PqK9X5lO6r3oG6ZPnUX6p/6zvYdeos1bda56jurar/rlPXXqt33tX/7tu6X2rnqqrXarNPHUfVzlVVnyxXn/qNqn2rqy7ZRp/6zap9q6seu4w69ZtV+1ZV+1dx9NRtVu1bXe1ezdZTtyi1b3W1d1V16hal9q2udq7u/dQr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 - - - AQAAAACAAAAIAgAAgwAAAA==eF5NxzlOQgEARdG3s781luASLCkpKCgsCCGEGENAmUdRAZlZAgWn4DYnN3nupXj4yjIrrLLGN9bZYJMttvnOD3bYZY+f/GKfAw454pgTTjnjnAsuueL3wxKz9syPZ3498+eZjWe2ntl55t8ze88cPHP0zMkzZ89cPHP1zK24A9MiTgE= - - - AQAAAACAAAAIAgAAgwAAAA==eF5NxzlOQgEARdG3s781luASLCkpKCgsCCGEGENAmUdRAZlZAgWn4DYnN3nupXj4yjIrrLLGN9bZYJMttvnOD3bYZY+f/GKfAw454pgTTjnjnAsuueL3wxKz9syPZ3498+eZjWe2ntl55t8ze88cPHP0zMkzZ89cPHP1zK24A9MiTgE= - - - AQAAAACAAAAIAgAAgwAAAA==eF5NxzlOQgEARdG3s781luASLCkpKCgsCCGEGENAmUdRAZlZAgWn4DYnN3nupXj4yjIrrLLGN9bZYJMttvnOD3bYZY+f/GKfAw454pgTTjnjnAsuueL3wxKz9syPZ3498+eZjWe2ntl55t8ze88cPHP0zMkzZ89cPHP1zK24A9MiTgE= - - - + diff --git a/examples/grid/tension-hold-unload.yaml b/examples/grid/tension-hold-unload.yaml new file mode 100644 index 000000000..59dcd4aec --- /dev/null +++ b/examples/grid/tension-hold-unload.yaml @@ -0,0 +1,37 @@ +solver: {mechanical: spectral_basic} + +loadstep: + - boundary_conditions: + mechanical: + P: + - [x, x, x] + - [x, 0, x] + - [x, x, 0] + dot_F: + - [0.001, 0, 0] + - [0, x, 0] + - [0, 0, x] + discretization: {t: 10.0, N: 40} + f_out: 4 + - boundary_conditions: + mechanical: + dot_P: + - [0, x, x] + - [x, x, x] + - [x, x, x] + dot_F: + - [x, 0, 0] + - [0, 0, 0] + - [0, 0, 0] + discretization: {t: 10.0, N: 20} + - boundary_conditions: + mechanical: + P: + - [0, x, x] + - [x, 0, x] + - [x, x, 0] + dot_F: + - [x, 0, 0] + - [0, x, 0] + - [0, 0, x] + discretization: {t: 10.0, N: 20} diff --git a/python/damask/_grid.py b/python/damask/_grid.py index 237d56ba1..36fa6411b 100644 --- a/python/damask/_grid.py +++ b/python/damask/_grid.py @@ -8,7 +8,6 @@ import numpy as np import pandas as pd import h5py from scipy import ndimage, spatial -from vtk.util.numpy_support import vtk_to_numpy as vtk_to_np from . import VTK from . import util @@ -21,7 +20,7 @@ class Grid: Geometry definition for grid solvers. Create and manipulate geometry definitions for storage as VTK - rectiliear grid files ('.vtr' extension). A grid contains the + image data files ('.vit' extension). A grid contains the material ID (referring to the entry in 'material.yaml') and the physical size. """ @@ -153,12 +152,12 @@ class Grid: @staticmethod def load(fname): """ - Load from VTK rectilinear grid file. + Load from VTK image data file. Parameters ---------- fname : str or or pathlib.Path - Grid file to read. Valid extension is .vtr, which will be appended + Grid file to read. Valid extension is .vti, which will be appended if not given. Returns @@ -167,15 +166,13 @@ class Grid: Grid-based geometry from file. """ - v = VTK.load(fname if str(fname).endswith('.vtr') else str(fname)+'.vtr') + if str(fname).endswith('.vtr'): + warnings.warn('Support for vtr files will be removed in DAMASK 3.1.0', DeprecationWarning,2) + v = VTK.load(fname) comments = v.get_comments() cells = np.array(v.vtk_data.GetDimensions())-1 bbox = np.array(v.vtk_data.GetBounds()).reshape(3,2).T - for i,c in enumerate([v.vtk_data.GetXCoordinates(),v.vtk_data.GetYCoordinates(),v.vtk_data.GetZCoordinates()]): - if not np.allclose(vtk_to_np(c),np.linspace(bbox[0][i],bbox[1][i],cells[i]+1)): - raise ValueError('regular grid spacing violated') - return Grid(material = v.get('material').reshape(cells,order='F'), size = bbox[1] - bbox[0], origin = bbox[0], @@ -320,7 +317,7 @@ class Grid: @staticmethod def from_table(table,coordinates,labels): """ - Generate grid from ASCII table. + Create grid from ASCII table. Parameters ---------- @@ -357,7 +354,7 @@ class Grid: @staticmethod def from_Laguerre_tessellation(cells,size,seeds,weights,material=None,periodic=True): """ - Generate grid from Laguerre tessellation. + Create grid from Laguerre tessellation. Parameters ---------- @@ -413,7 +410,7 @@ class Grid: @staticmethod def from_Voronoi_tessellation(cells,size,seeds,material=None,periodic=True): """ - Generate grid from Voronoi tessellation. + Create grid from Voronoi tessellation. Parameters ---------- @@ -494,7 +491,7 @@ class Grid: @staticmethod def from_minimal_surface(cells,size,surface,threshold=0.0,periods=1,materials=(0,1)): """ - Generate grid from definition of triply periodic minimal surface. + Create grid from definition of triply periodic minimal surface. Parameters ---------- @@ -556,21 +553,21 @@ class Grid: def save(self,fname,compress=True): """ - Save as VTK rectilinear grid file. + Save as VTK image data file. Parameters ---------- fname : str or pathlib.Path - Filename to write. Valid extension is .vtr, it will be appended if not given. + Filename to write. Valid extension is .vti, it will be appended if not given. compress : bool, optional Compress with zlib algorithm. Defaults to True. """ - v = VTK.from_rectilinear_grid(self.cells,self.size,self.origin) + v = VTK.from_image_data(self.cells,self.size,self.origin) v.add(self.material.flatten(order='F'),'material') v.add_comments(self.comments) - v.save(fname if str(fname).endswith('.vtr') else str(fname)+'.vtr',parallel=False,compress=compress) + v.save(fname if str(fname).endswith('.vti') else str(fname)+'.vti',parallel=False,compress=compress) def save_ASCII(self,fname): diff --git a/python/damask/_result.py b/python/damask/_result.py index 6aa6f4dde..d90a87f14 100644 --- a/python/damask/_result.py +++ b/python/damask/_result.py @@ -527,7 +527,7 @@ class Result: def geometry0(self): """Initial/undeformed geometry.""" if self.structured: - return VTK.from_rectilinear_grid(self.cells,self.size,self.origin) + return VTK.from_image_data(self.cells,self.size,self.origin) else: with h5py.File(self.fname,'r') as f: return VTK.from_unstructured_grid(f['/geometry/x_n'][()], @@ -1516,7 +1516,7 @@ class Result: Export to VTK cell/point data. One VTK file per visible increment is created. - For cell data, the VTK format is a rectilinear grid (.vtr) for + For cell data, the VTK format is a image data (.vti) for grid-based simulations and an unstructured grid (.vtu) for mesh-baed simulations. For point data, the VTK format is poly data (.vtp). diff --git a/python/damask/_vtk.py b/python/damask/_vtk.py index a40a5990f..b525ef35e 100644 --- a/python/damask/_vtk.py +++ b/python/damask/_vtk.py @@ -34,6 +34,36 @@ class VTK: self.vtk_data = vtk_data + @staticmethod + def from_image_data(cells,size,origin=np.zeros(3)): + """ + Create VTK of type vtk.vtkImageData. + + This is the common type for grid solver results. + + Parameters + ---------- + cells : iterable of int, len (3) + Number of cells along each dimension. + size : iterable of float, len (3) + Physical length along each dimension. + origin : iterable of float, len (3), optional + Coordinates of grid origin. + + Returns + ------- + new : damask.VTK + VTK-based geometry without nodal or cell data. + + """ + vtk_data = vtk.vtkImageData() + vtk_data.SetDimensions(*(np.array(cells)+1)) + vtk_data.SetOrigin(*(np.array(origin))) + vtk_data.SetSpacing(*(size/cells)) + + return VTK(vtk_data) + + @staticmethod def from_rectilinear_grid(grid,size,origin=np.zeros(3)): """ @@ -167,6 +197,9 @@ class VTK: reader.SetFileName(str(fname)) if dataset_type is None: raise TypeError('Dataset type for *.vtk file not given.') + elif dataset_type.lower().endswith(('imagedata','image_data')): + reader.Update() + vtk_data = reader.GetImageDataOutput() elif dataset_type.lower().endswith(('rectilineargrid','rectilinear_grid')): reader.Update() vtk_data = reader.GetRectilinearGridOutput() @@ -179,7 +212,9 @@ class VTK: else: raise TypeError(f'Unknown dataset type {dataset_type} for vtk file') else: - if ext == '.vtr': + if ext == '.vti': + reader = vtk.vtkXMLImageDataReader() + elif ext == '.vtr': reader = vtk.vtkXMLRectilinearGridReader() elif ext == '.vtu': reader = vtk.vtkXMLUnstructuredGridReader() @@ -213,7 +248,9 @@ class VTK: Compress with zlib algorithm. Defaults to True. """ - if isinstance(self.vtk_data,vtk.vtkRectilinearGrid): + if isinstance(self.vtk_data,vtk.vtkImageData): + writer = vtk.vtkXMLImageDataWriter() + elif isinstance(self.vtk_data,vtk.vtkRectilinearGrid): writer = vtk.vtkXMLRectilinearGridWriter() elif isinstance(self.vtk_data,vtk.vtkUnstructuredGrid): writer = vtk.vtkXMLUnstructuredGridWriter() diff --git a/python/damask/seeds.py b/python/damask/seeds.py index b2e91a352..26aa3084b 100644 --- a/python/damask/seeds.py +++ b/python/damask/seeds.py @@ -9,7 +9,7 @@ from . import grid_filters as _grid_filters def from_random(size,N_seeds,cells=None,rng_seed=None): """ - Random seeding in space. + Place seeds randomly in space. Parameters ---------- @@ -43,7 +43,7 @@ def from_random(size,N_seeds,cells=None,rng_seed=None): def from_Poisson_disc(size,N_seeds,N_candidates,distance,periodic=True,rng_seed=None): """ - Seeding in space according to a Poisson disc distribution. + Place seeds according to a Poisson disc distribution. Parameters ---------- @@ -96,7 +96,7 @@ def from_Poisson_disc(size,N_seeds,N_candidates,distance,periodic=True,rng_seed= def from_grid(grid,selection=None,invert=False,average=False,periodic=True): """ - Create seed from existing grid description. + Create seeds from grid description. Parameters ---------- diff --git a/python/tests/reference/Grid/clean_1_1+2+3_False.vtr b/python/tests/reference/Grid/clean_1_1+2+3_False.vtr deleted file mode 100644 index d8a3d4169..000000000 --- a/python/tests/reference/Grid/clean_1_1+2+3_False.vtr +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - AQAAAACAAAAABQAAYwAAAA==eF7t0scBgkAAAEHBgBEwgDmBsf8GfTANCN/bzzSwUa8pCrYyZp8DDjliwjEnnHLGORdMmTHnkiuuuWHBklvuuOeBR5545oVX3nhnxZoPPvnimx9+GQc7GT5sqvjvhz+ZtAcJ - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/clean_1_1+2+3_True.vtr b/python/tests/reference/Grid/clean_1_1+2+3_True.vtr deleted file mode 100644 index d8a3d4169..000000000 --- a/python/tests/reference/Grid/clean_1_1+2+3_True.vtr +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - AQAAAACAAAAABQAAYwAAAA==eF7t0scBgkAAAEHBgBEwgDmBsf8GfTANCN/bzzSwUa8pCrYyZp8DDjliwjEnnHLGORdMmTHnkiuuuWHBklvuuOeBR5545oVX3nhnxZoPPvnimx9+GQc7GT5sqvjvhz+ZtAcJ - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/clean_1_1_False.vtr b/python/tests/reference/Grid/clean_1_1_False.vtr deleted file mode 100644 index d8a3d4169..000000000 --- a/python/tests/reference/Grid/clean_1_1_False.vtr +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - AQAAAACAAAAABQAAYwAAAA==eF7t0scBgkAAAEHBgBEwgDmBsf8GfTANCN/bzzSwUa8pCrYyZp8DDjliwjEnnHLGORdMmTHnkiuuuWHBklvuuOeBR5545oVX3nhnxZoPPvnimx9+GQc7GT5sqvjvhz+ZtAcJ - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/clean_1_1_True.vtr b/python/tests/reference/Grid/clean_1_1_True.vtr deleted file mode 100644 index d8a3d4169..000000000 --- a/python/tests/reference/Grid/clean_1_1_True.vtr +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - AQAAAACAAAAABQAAYwAAAA==eF7t0scBgkAAAEHBgBEwgDmBsf8GfTANCN/bzzSwUa8pCrYyZp8DDjliwjEnnHLGORdMmTHnkiuuuWHBklvuuOeBR5545oVX3nhnxZoPPvnimx9+GQc7GT5sqvjvhz+ZtAcJ - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/clean_1_None_False.vtr b/python/tests/reference/Grid/clean_1_None_False.vtr deleted file mode 100644 index d8a3d4169..000000000 --- a/python/tests/reference/Grid/clean_1_None_False.vtr +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - AQAAAACAAAAABQAAYwAAAA==eF7t0scBgkAAAEHBgBEwgDmBsf8GfTANCN/bzzSwUa8pCrYyZp8DDjliwjEnnHLGORdMmTHnkiuuuWHBklvuuOeBR5545oVX3nhnxZoPPvnimx9+GQc7GT5sqvjvhz+ZtAcJ - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/clean_1_None_True.vtr b/python/tests/reference/Grid/clean_1_None_True.vtr deleted file mode 100644 index d8a3d4169..000000000 --- a/python/tests/reference/Grid/clean_1_None_True.vtr +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - AQAAAACAAAAABQAAYwAAAA==eF7t0scBgkAAAEHBgBEwgDmBsf8GfTANCN/bzzSwUa8pCrYyZp8DDjliwjEnnHLGORdMmTHnkiuuuWHBklvuuOeBR5545oVX3nhnxZoPPvnimx9+GQc7GT5sqvjvhz+ZtAcJ - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/clean_2_1+2+3_False.vti b/python/tests/reference/Grid/clean_2_1+2+3_False.vti new file mode 100644 index 000000000..33dc58cae --- /dev/null +++ b/python/tests/reference/Grid/clean_2_1+2+3_False.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= + + + + + + + + AQAAAACAAAAABQAAZwAAAA==eF7t0rcOgmAAhVEgNmyo2AuoWN//BR04EwsJcfzvcvabL47qxcFOJg177HPAIUdMOeaEU844Z8YFl1wx55obbrnjngceeeKZFxYseeWNd1Z88MkX3/zwy+Z/wf8YOqzX1uEPlgwHCA== + + + + + diff --git a/python/tests/reference/Grid/clean_2_1+2+3_False.vtr b/python/tests/reference/Grid/clean_2_1+2+3_False.vtr deleted file mode 100644 index 628cb9971..000000000 --- a/python/tests/reference/Grid/clean_2_1+2+3_False.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= - - - - - - - - AQAAAACAAAAABQAAZwAAAA==eF7t0rcOgmAAhVEgNmyo2AuoWN//BR04EwsJcfzvcvabL47qxcFOJg177HPAIUdMOeaEU844Z8YFl1wx55obbrnjngceeeKZFxYseeWNd1Z88MkX3/zwy+Z/wf8YOqzX1uEPlgwHCA== - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/clean_2_1+2+3_True.vti b/python/tests/reference/Grid/clean_2_1+2+3_True.vti new file mode 100644 index 000000000..e73ebc444 --- /dev/null +++ b/python/tests/reference/Grid/clean_2_1+2+3_True.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= + + + + + + + + AQAAAACAAAAABQAAagAAAA==eF7t0rkOglAARFExLrgCKuKuqLj8/w9acCoSY7B+05x+cqNOvSj4l92GPfY54JAxRxxzwilnnDNhyowLLrlizjULbrjljnseeOSJZ15Y8sob76z44JMvvtn8L9jObz2GDuv96vADk5QHBg== + + + + + diff --git a/python/tests/reference/Grid/clean_2_1+2+3_True.vtr b/python/tests/reference/Grid/clean_2_1+2+3_True.vtr deleted file mode 100644 index 61a63f549..000000000 --- a/python/tests/reference/Grid/clean_2_1+2+3_True.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= - - - - - - - - AQAAAACAAAAABQAAagAAAA==eF7t0rkOglAARFExLrgCKuKuqLj8/w9acCoSY7B+05x+cqNOvSj4l92GPfY54JAxRxxzwilnnDNhyowLLrlizjULbrjljnseeOSJZ15Y8sob76z44JMvvtn8L9jObz2GDuv96vADk5QHBg== - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/clean_2_1_False.vti b/python/tests/reference/Grid/clean_2_1_False.vti new file mode 100644 index 000000000..d8ee724cc --- /dev/null +++ b/python/tests/reference/Grid/clean_2_1_False.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= + + + + + + + + AQAAAACAAAAABQAAZAAAAA==eF7t0scRglAAQEEBAyZUMCuomPtv0ANbgMNw/O+yDbyo1xQFWxkzYZ8DDjliyjEnnHLGOTMuuOSKOQuuueGWO+554JEnnlmy4oVX3ljzzgeffPHND7+Mg50aPmz698MfmvQHCg== + + + + + diff --git a/python/tests/reference/Grid/clean_2_1_False.vtr b/python/tests/reference/Grid/clean_2_1_False.vtr deleted file mode 100644 index 3f7c3fe08..000000000 --- a/python/tests/reference/Grid/clean_2_1_False.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= - - - - - - - - AQAAAACAAAAABQAAZAAAAA==eF7t0scRglAAQEEBAyZUMCuomPtv0ANbgMNw/O+yDbyo1xQFWxkzYZ8DDjliyjEnnHLGOTMuuOSKOQuuueGWO+554JEnnlmy4oVX3ljzzgeffPHND7+Mg50aPmz698MfmvQHCg== - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/clean_2_1_True.vti b/python/tests/reference/Grid/clean_2_1_True.vti new file mode 100644 index 000000000..be670913c --- /dev/null +++ b/python/tests/reference/Grid/clean_2_1_True.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= + + + + + + + + AQAAAACAAAAABQAAYwAAAA==eF7t0scBgkAAAEHBgBEwgDmBsf8GfTANCN/bzzSwUa8pCrYyZp8DDjliwjEnnHLGORdMmTHnkiuuuWHBklvuuOeBR5545oVX3nhnxZoPPvnimx9+GQc7GT5sqvjvhz+ZtAcJ + + + + + diff --git a/python/tests/reference/Grid/clean_2_1_True.vtr b/python/tests/reference/Grid/clean_2_1_True.vtr deleted file mode 100644 index a75b806cd..000000000 --- a/python/tests/reference/Grid/clean_2_1_True.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= - - - - - - - - AQAAAACAAAAABQAAYwAAAA==eF7t0scBgkAAAEHBgBEwgDmBsf8GfTANCN/bzzSwUa8pCrYyZp8DDjliwjEnnHLGORdMmTHnkiuuuWHBklvuuOeBR5545oVX3nhnxZoPPvnimx9+GQc7GT5sqvjvhz+ZtAcJ - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/clean_2_2_False.vtr b/python/tests/reference/Grid/clean_2_2_False.vtr deleted file mode 100644 index c2ad86f43..000000000 --- a/python/tests/reference/Grid/clean_2_2_False.vtr +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - AQAAAACAAAAALQAAOgAAAA==eF7t1CEOACAMBMHS/z8aXwNJSagYMe6y8jIislgNtTW9d9oD/PL6r6b3AAAAAAAAAAAA4MYGlRYLYA== - - - - - AQAAAACAAACoAAAAVQAAAA==eF5jYICAWTNBYKU9hN5pb2IMAoeh/JP2EFUXoOKX7dPTQOAaVP6m/dkzIHAHqu4BVPwhVP1jqPwTqL5nUHUvoOpeQtW9hqp7A1X3Dqrugz0ASSZF3Q== - - - AQAAAACAAACYAAAAVgAAAA==eF5jYIAAmeOFQLTGHkLvsQ8Fg6NQ/hn7IjDjIlT8qr1F32MgugGVv2MPMeUBVN1D+8cQBVD1T+3BymSeQ/W9sF8FBq+g+t/Yg4Ut3kHN+WAPAAVdQE4= - - - AQAAAACAAABIAAAAIgAAAA==eF5jYEAGB+wh9AUofQNKP4DST6D0Cyj9Bkp/sAcAAU8I6Q== - - - - - diff --git a/python/tests/reference/Grid/clean_2_2_True.vtr b/python/tests/reference/Grid/clean_2_2_True.vtr deleted file mode 100644 index b4d19ebcf..000000000 --- a/python/tests/reference/Grid/clean_2_2_True.vtr +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - AQAAAACAAAAALQAANwAAAA==eF7t1KERADAMA7Gk+w9dWpYCswiI+R66q6rDzmPa/kj3ALZK/2m6BwAAAAAAAAAAAJMLZrELTQ== - - - - - AQAAAACAAACoAAAAVQAAAA==eF5jYICAWTNBYKU9hN5pb2IMAoeh/JP2EFUXoOKX7dPTQOAaVP6m/dkzIHAHqu4BVPwhVP1jqPwTqL5nUHUvoOpeQtW9hqp7A1X3Dqrugz0ASSZF3Q== - - - AQAAAACAAACYAAAAVgAAAA==eF5jYIAAmeOFQLTGHkLvsQ8Fg6NQ/hn7IjDjIlT8qr1F32MgugGVv2MPMeUBVN1D+8cQBVD1T+3BymSeQ/W9sF8FBq+g+t/Yg4Ut3kHN+WAPAAVdQE4= - - - AQAAAACAAABIAAAAIgAAAA==eF5jYEAGB+wh9AUofQNKP4DST6D0Cyj9Bkp/sAcAAU8I6Q== - - - - - diff --git a/python/tests/reference/Grid/clean_2_None_False.vti b/python/tests/reference/Grid/clean_2_None_False.vti new file mode 100644 index 000000000..9d0302a10 --- /dev/null +++ b/python/tests/reference/Grid/clean_2_None_False.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= + + + + + + + + AQAAAACAAAAABQAAGwAAAA==eF5jZIAAxlF6lB4AmmmUpogeDUfKaAD7jwDw + + + + + diff --git a/python/tests/reference/Grid/clean_2_None_False.vtr b/python/tests/reference/Grid/clean_2_None_False.vtr deleted file mode 100644 index c09198927..000000000 --- a/python/tests/reference/Grid/clean_2_None_False.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= - - - - - - - - AQAAAACAAAAABQAAGwAAAA==eF5jZIAAxlF6lB4AmmmUpogeDUfKaAD7jwDw - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/clean_2_None_True.vti b/python/tests/reference/Grid/clean_2_None_True.vti new file mode 100644 index 000000000..cf91a6700 --- /dev/null +++ b/python/tests/reference/Grid/clean_2_None_True.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= + + + + + + + + AQAAAACAAAAABQAAGQAAAA==eF5jZIAAxlF6lB4AmmmUHqUHkAYA/M8A8Q== + + + + + diff --git a/python/tests/reference/Grid/clean_2_None_True.vtr b/python/tests/reference/Grid/clean_2_None_True.vtr deleted file mode 100644 index 0cd2e30e4..000000000 --- a/python/tests/reference/Grid/clean_2_None_True.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= - - - - - - - - AQAAAACAAAAABQAAGQAAAA==eF5jZIAAxlF6lB4AmmmUHqUHkAYA/M8A8Q== - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/clean_3_1+2+3_False.vti b/python/tests/reference/Grid/clean_3_1+2+3_False.vti new file mode 100644 index 000000000..33dc58cae --- /dev/null +++ b/python/tests/reference/Grid/clean_3_1+2+3_False.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= + + + + + + + + AQAAAACAAAAABQAAZwAAAA==eF7t0rcOgmAAhVEgNmyo2AuoWN//BR04EwsJcfzvcvabL47qxcFOJg177HPAIUdMOeaEU844Z8YFl1wx55obbrnjngceeeKZFxYseeWNd1Z88MkX3/zwy+Z/wf8YOqzX1uEPlgwHCA== + + + + + diff --git a/python/tests/reference/Grid/clean_3_1+2+3_False.vtr b/python/tests/reference/Grid/clean_3_1+2+3_False.vtr deleted file mode 100644 index 628cb9971..000000000 --- a/python/tests/reference/Grid/clean_3_1+2+3_False.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= - - - - - - - - AQAAAACAAAAABQAAZwAAAA==eF7t0rcOgmAAhVEgNmyo2AuoWN//BR04EwsJcfzvcvabL47qxcFOJg177HPAIUdMOeaEU844Z8YFl1wx55obbrnjngceeeKZFxYseeWNd1Z88MkX3/zwy+Z/wf8YOqzX1uEPlgwHCA== - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/clean_3_1+2+3_True.vti b/python/tests/reference/Grid/clean_3_1+2+3_True.vti new file mode 100644 index 000000000..e73ebc444 --- /dev/null +++ b/python/tests/reference/Grid/clean_3_1+2+3_True.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= + + + + + + + + AQAAAACAAAAABQAAagAAAA==eF7t0rkOglAARFExLrgCKuKuqLj8/w9acCoSY7B+05x+cqNOvSj4l92GPfY54JAxRxxzwilnnDNhyowLLrlizjULbrjljnseeOSJZ15Y8sob76z44JMvvtn8L9jObz2GDuv96vADk5QHBg== + + + + + diff --git a/python/tests/reference/Grid/clean_3_1+2+3_True.vtr b/python/tests/reference/Grid/clean_3_1+2+3_True.vtr deleted file mode 100644 index 61a63f549..000000000 --- a/python/tests/reference/Grid/clean_3_1+2+3_True.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= - - - - - - - - AQAAAACAAAAABQAAagAAAA==eF7t0rkOglAARFExLrgCKuKuqLj8/w9acCoSY7B+05x+cqNOvSj4l92GPfY54JAxRxxzwilnnDNhyowLLrlizjULbrjljnseeOSJZ15Y8sob76z44JMvvtn8L9jObz2GDuv96vADk5QHBg== - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/clean_3_1_False.vti b/python/tests/reference/Grid/clean_3_1_False.vti new file mode 100644 index 000000000..d8ee724cc --- /dev/null +++ b/python/tests/reference/Grid/clean_3_1_False.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= + + + + + + + + AQAAAACAAAAABQAAZAAAAA==eF7t0scRglAAQEEBAyZUMCuomPtv0ANbgMNw/O+yDbyo1xQFWxkzYZ8DDjliyjEnnHLGOTMuuOSKOQuuueGWO+554JEnnlmy4oVX3ljzzgeffPHND7+Mg50aPmz698MfmvQHCg== + + + + + diff --git a/python/tests/reference/Grid/clean_3_1_False.vtr b/python/tests/reference/Grid/clean_3_1_False.vtr deleted file mode 100644 index 3f7c3fe08..000000000 --- a/python/tests/reference/Grid/clean_3_1_False.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= - - - - - - - - AQAAAACAAAAABQAAZAAAAA==eF7t0scRglAAQEEBAyZUMCuomPtv0ANbgMNw/O+yDbyo1xQFWxkzYZ8DDjliyjEnnHLGOTMuuOSKOQuuueGWO+554JEnnlmy4oVX3ljzzgeffPHND7+Mg50aPmz698MfmvQHCg== - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/clean_3_1_True.vti b/python/tests/reference/Grid/clean_3_1_True.vti new file mode 100644 index 000000000..be670913c --- /dev/null +++ b/python/tests/reference/Grid/clean_3_1_True.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= + + + + + + + + AQAAAACAAAAABQAAYwAAAA==eF7t0scBgkAAAEHBgBEwgDmBsf8GfTANCN/bzzSwUa8pCrYyZp8DDjliwjEnnHLGORdMmTHnkiuuuWHBklvuuOeBR5545oVX3nhnxZoPPvnimx9+GQc7GT5sqvjvhz+ZtAcJ + + + + + diff --git a/python/tests/reference/Grid/clean_3_1_True.vtr b/python/tests/reference/Grid/clean_3_1_True.vtr deleted file mode 100644 index a75b806cd..000000000 --- a/python/tests/reference/Grid/clean_3_1_True.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= - - - - - - - - AQAAAACAAAAABQAAYwAAAA==eF7t0scBgkAAAEHBgBEwgDmBsf8GfTANCN/bzzSwUa8pCrYyZp8DDjliwjEnnHLGORdMmTHnkiuuuWHBklvuuOeBR5545oVX3nhnxZoPPvnimx9+GQc7GT5sqvjvhz+ZtAcJ - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/clean_3_2_False.vtr b/python/tests/reference/Grid/clean_3_2_False.vtr deleted file mode 100644 index c2ad86f43..000000000 --- a/python/tests/reference/Grid/clean_3_2_False.vtr +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - AQAAAACAAAAALQAAOgAAAA==eF7t1CEOACAMBMHS/z8aXwNJSagYMe6y8jIislgNtTW9d9oD/PL6r6b3AAAAAAAAAAAA4MYGlRYLYA== - - - - - AQAAAACAAACoAAAAVQAAAA==eF5jYICAWTNBYKU9hN5pb2IMAoeh/JP2EFUXoOKX7dPTQOAaVP6m/dkzIHAHqu4BVPwhVP1jqPwTqL5nUHUvoOpeQtW9hqp7A1X3Dqrugz0ASSZF3Q== - - - AQAAAACAAACYAAAAVgAAAA==eF5jYIAAmeOFQLTGHkLvsQ8Fg6NQ/hn7IjDjIlT8qr1F32MgugGVv2MPMeUBVN1D+8cQBVD1T+3BymSeQ/W9sF8FBq+g+t/Yg4Ut3kHN+WAPAAVdQE4= - - - AQAAAACAAABIAAAAIgAAAA==eF5jYEAGB+wh9AUofQNKP4DST6D0Cyj9Bkp/sAcAAU8I6Q== - - - - - diff --git a/python/tests/reference/Grid/clean_3_2_True.vtr b/python/tests/reference/Grid/clean_3_2_True.vtr deleted file mode 100644 index b4d19ebcf..000000000 --- a/python/tests/reference/Grid/clean_3_2_True.vtr +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - AQAAAACAAAAALQAANwAAAA==eF7t1KERADAMA7Gk+w9dWpYCswiI+R66q6rDzmPa/kj3ALZK/2m6BwAAAAAAAAAAAJMLZrELTQ== - - - - - AQAAAACAAACoAAAAVQAAAA==eF5jYICAWTNBYKU9hN5pb2IMAoeh/JP2EFUXoOKX7dPTQOAaVP6m/dkzIHAHqu4BVPwhVP1jqPwTqL5nUHUvoOpeQtW9hqp7A1X3Dqrugz0ASSZF3Q== - - - AQAAAACAAACYAAAAVgAAAA==eF5jYIAAmeOFQLTGHkLvsQ8Fg6NQ/hn7IjDjIlT8qr1F32MgugGVv2MPMeUBVN1D+8cQBVD1T+3BymSeQ/W9sF8FBq+g+t/Yg4Ut3kHN+WAPAAVdQE4= - - - AQAAAACAAABIAAAAIgAAAA==eF5jYEAGB+wh9AUofQNKP4DST6D0Cyj9Bkp/sAcAAU8I6Q== - - - - - diff --git a/python/tests/reference/Grid/clean_3_None_False.vti b/python/tests/reference/Grid/clean_3_None_False.vti new file mode 100644 index 000000000..80a3ce9d2 --- /dev/null +++ b/python/tests/reference/Grid/clean_3_None_False.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= + + + + + + + + AQAAAACAAAAABQAAIgAAAA==eF5jZIAAxlGaLJoJjSakntr6hzqN7v9RepSmJw0AC04A9Q== + + + + + diff --git a/python/tests/reference/Grid/clean_3_None_False.vtr b/python/tests/reference/Grid/clean_3_None_False.vtr deleted file mode 100644 index 79f9245c8..000000000 --- a/python/tests/reference/Grid/clean_3_None_False.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= - - - - - - - - AQAAAACAAAAABQAAIgAAAA==eF5jZIAAxlGaLJoJjSakntr6hzqN7v9RepSmJw0AC04A9Q== - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/clean_3_None_True.vti b/python/tests/reference/Grid/clean_3_None_True.vti new file mode 100644 index 000000000..b1ffa6b5d --- /dev/null +++ b/python/tests/reference/Grid/clean_3_None_True.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= + + + + + + + + AQAAAACAAAAABQAALwAAAA==eF5jZIAAxlGaLJoJjSakHpc+cvUTUkdrmlL3j9KU0dROF5TqH2iaVPcDAALOANU= + + + + + diff --git a/python/tests/reference/Grid/clean_3_None_True.vtr b/python/tests/reference/Grid/clean_3_None_True.vtr deleted file mode 100644 index e65f727a8..000000000 --- a/python/tests/reference/Grid/clean_3_None_True.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= - - - - - - - - AQAAAACAAAAABQAALwAAAA==eF5jZIAAxlGaLJoJjSakHpc+cvUTUkdrmlL3j9KU0dROF5TqH2iaVPcDAALOANU= - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/clean_4_1+2+3_False.vti b/python/tests/reference/Grid/clean_4_1+2+3_False.vti new file mode 100644 index 000000000..c02459176 --- /dev/null +++ b/python/tests/reference/Grid/clean_4_1+2+3_False.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= + + + + + + + + AQAAAACAAAAABQAAcQAAAA==eF7t0rkOglAUBFAxKu6igvsKrv//gxYcm9fQGEPBNKe6yc1kolaZqPEndthljzH7HHDIEceccMoZE8654JIpM6645oZb7rjngUeeeOaFV+YseOOdDz754pthf+3Aqr7rdv9vw3+/NjssU7XDD0/8BuQ= + + + + + diff --git a/python/tests/reference/Grid/clean_4_1+2+3_False.vtr b/python/tests/reference/Grid/clean_4_1+2+3_False.vtr deleted file mode 100644 index d6b0ea5a7..000000000 --- a/python/tests/reference/Grid/clean_4_1+2+3_False.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= - - - - - - - - AQAAAACAAAAABQAAcQAAAA==eF7t0rkOglAUBFAxKu6igvsKrv//gxYcm9fQGEPBNKe6yc1kolaZqPEndthljzH7HHDIEceccMoZE8654JIpM6645oZb7rjngUeeeOaFV+YseOOdDz754pthf+3Aqr7rdv9vw3+/NjssU7XDD0/8BuQ= - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/clean_4_1+2+3_True.vti b/python/tests/reference/Grid/clean_4_1+2+3_True.vti new file mode 100644 index 000000000..37e026a0a --- /dev/null +++ b/python/tests/reference/Grid/clean_4_1+2+3_True.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= + + + + + + + + AQAAAACAAAAABQAAYQAAAA==eF7t0scVglAAAEHgqZgBA2ZExdR/gx6YCpDj38s0sEnUlgR7ccAhR0w55oRTzjjngktmzFlwxTU33LLkjnseeOSJZ15Y8cqaN975YMMnX3zzwy/j4F+GD9u6fvgD+gwHCA== + + + + + diff --git a/python/tests/reference/Grid/clean_4_1+2+3_True.vtr b/python/tests/reference/Grid/clean_4_1+2+3_True.vtr deleted file mode 100644 index e9fec98a1..000000000 --- a/python/tests/reference/Grid/clean_4_1+2+3_True.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= - - - - - - - - AQAAAACAAAAABQAAYQAAAA==eF7t0scVglAAAEHgqZgBA2ZExdR/gx6YCpDj38s0sEnUlgR7ccAhR0w55oRTzjjngktmzFlwxTU33LLkjnseeOSJZ15Y8cqaN975YMMnX3zzwy/j4F+GD9u6fvgD+gwHCA== - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/clean_4_1_False.vti b/python/tests/reference/Grid/clean_4_1_False.vti new file mode 100644 index 000000000..d8ee724cc --- /dev/null +++ b/python/tests/reference/Grid/clean_4_1_False.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= + + + + + + + + AQAAAACAAAAABQAAZAAAAA==eF7t0scRglAAQEEBAyZUMCuomPtv0ANbgMNw/O+yDbyo1xQFWxkzYZ8DDjliyjEnnHLGOTMuuOSKOQuuueGWO+554JEnnlmy4oVX3ljzzgeffPHND7+Mg50aPmz698MfmvQHCg== + + + + + diff --git a/python/tests/reference/Grid/clean_4_1_False.vtr b/python/tests/reference/Grid/clean_4_1_False.vtr deleted file mode 100644 index 3f7c3fe08..000000000 --- a/python/tests/reference/Grid/clean_4_1_False.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= - - - - - - - - AQAAAACAAAAABQAAZAAAAA==eF7t0scRglAAQEEBAyZUMCuomPtv0ANbgMNw/O+yDbyo1xQFWxkzYZ8DDjliyjEnnHLGOTMuuOSKOQuuueGWO+554JEnnlmy4oVX3ljzzgeffPHND7+Mg50aPmz698MfmvQHCg== - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/clean_4_1_True.vti b/python/tests/reference/Grid/clean_4_1_True.vti new file mode 100644 index 000000000..fb9aa04f7 --- /dev/null +++ b/python/tests/reference/Grid/clean_4_1_True.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= + + + + + + + + AQAAAACAAAAABQAAZAAAAA==eF7t0rcSglAARFEHE0bAgBkE8///oAWnF8b2bXP6nRv1mkXBv+xzwCFHHDPmhFPOOOeCSyZMmXHFNTfcMueOex545IlnXliw5JUVa95454NPvvjmh79+DXYzdNisbYdfSqMHMg== + + + + + diff --git a/python/tests/reference/Grid/clean_4_1_True.vtr b/python/tests/reference/Grid/clean_4_1_True.vtr deleted file mode 100644 index 6eb173237..000000000 --- a/python/tests/reference/Grid/clean_4_1_True.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= - - - - - - - - AQAAAACAAAAABQAAZAAAAA==eF7t0rcSglAARFEHE0bAgBkE8///oAWnF8b2bXP6nRv1mkXBv+xzwCFHHDPmhFPOOOeCSyZMmXHFNTfcMueOex545IlnXliw5JUVa95454NPvvjmh79+DXYzdNisbYdfSqMHMg== - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/clean_4_2_False.vtr b/python/tests/reference/Grid/clean_4_2_False.vtr deleted file mode 100644 index 7665bdde2..000000000 --- a/python/tests/reference/Grid/clean_4_2_False.vtr +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - AQAAAACAAAAALQAANQAAAA==eF7t1CEOACAMBMGj/380Fk+TQjJi7MqtJHVYlypv9wB+0f2+7h4AAAAAAAAAAABM2HWwC1M= - - - - - AQAAAACAAACoAAAAVQAAAA==eF5jYICAWTNBYKU9hN5pb2IMAoeh/JP2EFUXoOKX7dPTQOAaVP6m/dkzIHAHqu4BVPwhVP1jqPwTqL5nUHUvoOpeQtW9hqp7A1X3Dqrugz0ASSZF3Q== - - - AQAAAACAAACYAAAAVgAAAA==eF5jYIAAmeOFQLTGHkLvsQ8Fg6NQ/hn7IjDjIlT8qr1F32MgugGVv2MPMeUBVN1D+8cQBVD1T+3BymSeQ/W9sF8FBq+g+t/Yg4Ut3kHN+WAPAAVdQE4= - - - AQAAAACAAABIAAAAIgAAAA==eF5jYEAGB+wh9AUofQNKP4DST6D0Cyj9Bkp/sAcAAU8I6Q== - - - - - diff --git a/python/tests/reference/Grid/clean_4_2_True.vtr b/python/tests/reference/Grid/clean_4_2_True.vtr deleted file mode 100644 index 88a8643d9..000000000 --- a/python/tests/reference/Grid/clean_4_2_True.vtr +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - AQAAAACAAAAALQAAJAAAAA==eF7twwEJAAAMBKH7/qWXY6DgqqmqqqqqqqqqqqqqPnhyUwtB - - - - - AQAAAACAAACoAAAAVQAAAA==eF5jYICAWTNBYKU9hN5pb2IMAoeh/JP2EFUXoOKX7dPTQOAaVP6m/dkzIHAHqu4BVPwhVP1jqPwTqL5nUHUvoOpeQtW9hqp7A1X3Dqrugz0ASSZF3Q== - - - AQAAAACAAACYAAAAVgAAAA==eF5jYIAAmeOFQLTGHkLvsQ8Fg6NQ/hn7IjDjIlT8qr1F32MgugGVv2MPMeUBVN1D+8cQBVD1T+3BymSeQ/W9sF8FBq+g+t/Yg4Ut3kHN+WAPAAVdQE4= - - - AQAAAACAAABIAAAAIgAAAA==eF5jYEAGB+wh9AUofQNKP4DST6D0Cyj9Bkp/sAcAAU8I6Q== - - - - - diff --git a/python/tests/reference/Grid/clean_4_None_False.vti b/python/tests/reference/Grid/clean_4_None_False.vti new file mode 100644 index 000000000..121c43671 --- /dev/null +++ b/python/tests/reference/Grid/clean_4_None_False.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= + + + + + + + + AQAAAACAAAAABQAAIAAAAA==eF5jZIAAxlF6lB4AmokAPdj1DzRNyP2jNH4aAMufANU= + + + + + diff --git a/python/tests/reference/Grid/clean_4_None_False.vtr b/python/tests/reference/Grid/clean_4_None_False.vtr deleted file mode 100644 index e57cee87e..000000000 --- a/python/tests/reference/Grid/clean_4_None_False.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= - - - - - - - - AQAAAACAAAAABQAAIAAAAA==eF5jZIAAxlF6lB4AmokAPdj1DzRNyP2jNH4aAMufANU= - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/clean_4_None_True.vti b/python/tests/reference/Grid/clean_4_None_True.vti new file mode 100644 index 000000000..54fa77562 --- /dev/null +++ b/python/tests/reference/Grid/clean_4_None_True.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= + + + + + + + + AQAAAACAAAAABQAAMAAAAA==eF5jYoAAJhw0IwEalz566aeUptT+oa6fUppS+4e6fkppSu0f6voppSm1HwBAngDh + + + + + diff --git a/python/tests/reference/Grid/clean_4_None_True.vtr b/python/tests/reference/Grid/clean_4_None_True.vtr deleted file mode 100644 index c23c66054..000000000 --- a/python/tests/reference/Grid/clean_4_None_True.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9VLzklNzFMos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFT8EKY= - - - - - - - - AQAAAACAAAAABQAAMAAAAA==eF5jYoAAJhw0IwEalz566aeUptT+oa6fUppS+4e6fkppSu0f6voppSm1HwBAngDh - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/flip_directions_x-y-z.vti b/python/tests/reference/Grid/flip_directions_x-y-z.vti new file mode 100644 index 000000000..39af79105 --- /dev/null +++ b/python/tests/reference/Grid/flip_directions_x-y-z.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA9AAAAQAAAAA==eF5LScxNLM7Wc0/Nz9VLy8ksUCiztNQDI11LINAtqCxJLS5R0DAyMLTUNTTUNTBSMDS0MrWwMjDQZAAAP04QTg== + + + + + + + + AQAAAACAAAAABQAAZAAAAA==eF7t0rcWglAAREGzGEFEzKCY8P9/0IKp7KB+28zZ/ta9Zh+++eKTD1a888aSBa+88MwTjzxwz5w7Ztwy5YYJY6654pILzjljxCknHHPEIQfs//1gN7+sGTps1rbDYDd/0ooHCQ== + + + + + diff --git a/python/tests/reference/Grid/flip_directions_x-y-z.vtr b/python/tests/reference/Grid/flip_directions_x-y-z.vtr deleted file mode 100644 index fd8b3852b..000000000 --- a/python/tests/reference/Grid/flip_directions_x-y-z.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA9AAAAQAAAAA==eF5LScxNLM7Wc0/Nz9VLy8ksUCiztNQDI11LINAtqCxJLS5R0DAyMLTUNTTUNTBSMDS0MrWwMjDQZAAAP04QTg== - - - - - - - - AQAAAACAAAAABQAAZAAAAA==eF7t0rcWglAAREGzGEFEzKCY8P9/0IKp7KB+28zZ/ta9Zh+++eKTD1a888aSBa+88MwTjzxwz5w7Ztwy5YYJY6654pILzjljxCknHHPEIQfs//1gN7+sGTps1rbDYDd/0ooHCQ== - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/flip_directions_x.vti b/python/tests/reference/Grid/flip_directions_x.vti new file mode 100644 index 000000000..cb7f5adb9 --- /dev/null +++ b/python/tests/reference/Grid/flip_directions_x.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA9AAAAQAAAAA==eF5LScxNLM7Wc0/Nz9VLy8ksUCiztNQDI11LINAtqCxJLS5R0DAyMLTUNTTUNTBSMDS0MrWwMjDQZAAAP04QTg== + + + + + + + + AQAAAACAAAAABQAAcgAAAA==eF7t0sUBwlAUAEESXIO7BIf+G+TAvAL4XLOXaWCz2resMskuO2yzxSYbrDPnhGMWHHHIAfvsccM1V1xywTlnnPLMkiceeeCeO2755otPPnjnjVdemFf+Zep38W/qd/F96nfxfclfv4vvU7+L7z+z9AcJ + + + + + diff --git a/python/tests/reference/Grid/flip_directions_x.vtr b/python/tests/reference/Grid/flip_directions_x.vtr deleted file mode 100644 index 4c75d796c..000000000 --- a/python/tests/reference/Grid/flip_directions_x.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA9AAAAQAAAAA==eF5LScxNLM7Wc0/Nz9VLy8ksUCiztNQDI11LINAtqCxJLS5R0DAyMLTUNTTUNTBSMDS0MrWwMjDQZAAAP04QTg== - - - - - - - - AQAAAACAAAAABQAAcgAAAA==eF7t0sUBwlAUAEESXIO7BIf+G+TAvAL4XLOXaWCz2resMskuO2yzxSYbrDPnhGMWHHHIAfvsccM1V1xywTlnnPLMkiceeeCeO2755otPPnjnjVdemFf+Zep38W/qd/F96nfxfclfv4vvU7+L7z+z9AcJ - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/flip_directions_y-z.vti b/python/tests/reference/Grid/flip_directions_y-z.vti new file mode 100644 index 000000000..582b89507 --- /dev/null +++ b/python/tests/reference/Grid/flip_directions_y-z.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA9AAAAQAAAAA==eF5LScxNLM7Wc0/Nz9VLy8ksUCiztNQDI11LINAtqCxJLS5R0DAyMLTUNTTUNTBSMDS0MrWwMjDQZAAAP04QTg== + + + + + + + + AQAAAACAAAAABQAAdAAAAA==eF7t0kcWgkAAREHBgFkxZwXz/S/owpoDMGzpTe37/aL1X8k7H3zyxTc/3PPAI08888Irb8y54JIrrrnhljsOOOSIY0445YxzJkzZZodd9pixz7SxliWrdvdlbHcFY7sL3cd2F7oPP1TtLnSfNNbyB7hKBwk= + + + + + diff --git a/python/tests/reference/Grid/flip_directions_y-z.vtr b/python/tests/reference/Grid/flip_directions_y-z.vtr deleted file mode 100644 index ce17a72fa..000000000 --- a/python/tests/reference/Grid/flip_directions_y-z.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA9AAAAQAAAAA==eF5LScxNLM7Wc0/Nz9VLy8ksUCiztNQDI11LINAtqCxJLS5R0DAyMLTUNTTUNTBSMDS0MrWwMjDQZAAAP04QTg== - - - - - - - - AQAAAACAAAAABQAAdAAAAA==eF7t0kcWgkAAREHBgFkxZwXz/S/owpoDMGzpTe37/aL1X8k7H3zyxTc/3PPAI08888Irb8y54JIrrrnhljsOOOSIY0445YxzJkzZZodd9pixz7SxliWrdvdlbHcFY7sL3cd2F7oPP1TtLnSfNNbyB7hKBwk= - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/flip_directions_z-x-y.vti b/python/tests/reference/Grid/flip_directions_z-x-y.vti new file mode 100644 index 000000000..39af79105 --- /dev/null +++ b/python/tests/reference/Grid/flip_directions_z-x-y.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA9AAAAQAAAAA==eF5LScxNLM7Wc0/Nz9VLy8ksUCiztNQDI11LINAtqCxJLS5R0DAyMLTUNTTUNTBSMDS0MrWwMjDQZAAAP04QTg== + + + + + + + + AQAAAACAAAAABQAAZAAAAA==eF7t0rcWglAAREGzGEFEzKCY8P9/0IKp7KB+28zZ/ta9Zh+++eKTD1a888aSBa+88MwTjzxwz5w7Ztwy5YYJY6654pILzjljxCknHHPEIQfs//1gN7+sGTps1rbDYDd/0ooHCQ== + + + + + diff --git a/python/tests/reference/Grid/flip_directions_z-x-y.vtr b/python/tests/reference/Grid/flip_directions_z-x-y.vtr deleted file mode 100644 index fd8b3852b..000000000 --- a/python/tests/reference/Grid/flip_directions_z-x-y.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA9AAAAQAAAAA==eF5LScxNLM7Wc0/Nz9VLy8ksUCiztNQDI11LINAtqCxJLS5R0DAyMLTUNTTUNTBSMDS0MrWwMjDQZAAAP04QTg== - - - - - - - - AQAAAACAAAAABQAAZAAAAA==eF7t0rcWglAAREGzGEFEzKCY8P9/0IKp7KB+28zZ/ta9Zh+++eKTD1a888aSBa+88MwTjzxwz5w7Ztwy5YYJY6654pILzjljxCknHHPEIQfs//1gN7+sGTps1rbDYDd/0ooHCQ== - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3MeNxx9YfV+wAD5wZgw== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/get_grain_boundaries_8g12x15x20.vti b/python/tests/reference/Grid/get_grain_boundaries_8g12x15x20.vti new file mode 100644 index 000000000..276801f14 --- /dev/null +++ b/python/tests/reference/Grid/get_grain_boundaries_8g12x15x20.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAABJAAAATwAAAA==eF4FwVEKgCAMANCO4mcRG5sTUy/QOVZKQUqB4Pl7L2vT/uBe3ob91FrMECQk0PrdCsEHuI4gzsVNspktWQJmsNFwTOKT8EpMtEw/IaUSzA== + + + + + + + + AQAAAACAAABAOAAA2AAAAA==eF7t0TEOwgAQA8EkkPD/H1PQ4pMsbXdryd1U9nH8zzs0Rf/rFfqE6lmfQv27zbf761mfQv27zbf761mfQv27zbf761mfQv27zbf761mfQv27zbf761mfQv27zbf761mfQv27zbf761mfQv27zbf761mfQv27zbf761l/ht6h+tm/Qj+heta3f+ln3+6vZ337l3727f561rd/6Wff7q9nffuXfvbt/nrWt3/pZ9/ur2d9+5d+9u3+eta3f+ln3+6vZ337l3727f561rd/6Wff7q9n/ReDyzIp + + + + + diff --git a/python/tests/reference/Grid/get_grain_boundaries_8g12x15x20.vtr b/python/tests/reference/Grid/get_grain_boundaries_8g12x15x20.vtr deleted file mode 100644 index 5fddfed71..000000000 --- a/python/tests/reference/Grid/get_grain_boundaries_8g12x15x20.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAABJAAAATwAAAA==eF4FwVEKgCAMANCO4mcRG5sTUy/QOVZKQUqB4Pl7L2vT/uBe3ob91FrMECQk0PrdCsEHuI4gzsVNspktWQJmsNFwTOKT8EpMtEw/IaUSzA== - - - - - - - - AQAAAACAAABAOAAA2AAAAA==eF7t0TEOwgAQA8EkkPD/H1PQ4pMsbXdryd1U9nH8zzs0Rf/rFfqE6lmfQv27zbf761mfQv27zbf761mfQv27zbf761mfQv27zbf761mfQv27zbf761mfQv27zbf761mfQv27zbf761mfQv27zbf761mfQv27zbf761l/ht6h+tm/Qj+heta3f+ln3+6vZ337l3727f561rd/6Wff7q9nffuXfvbt/nrWt3/pZ9/ur2d9+5d+9u3+eta3f+ln3+6vZ337l3727f561rd/6Wff7q9n/ReDyzIp - - - - - AQAAAACAAABoAAAAOQAAAA==eF5jYICAmWCw0x5Cn7Q3BoPLUP5N+/9gcB8q/tg+DQyeQeVf2p8BgzdQde+h4h+h6j/bAwAS5DYX - - - AQAAAACAAACAAAAARQAAAA==eF5jYICAWTNBYKc9hD5pb2IMApeh/Jv2EFUPoOKP7dPTQOAZVP6l/dkzIPAGqu4DVPwjVP1nqPwXqL5vUHU/7AHEUzT8 - - - AQAAAACAAACoAAAAVQAAAA==eF5jYICAWTNBYKc9hD5pb2IMApeh/Jv2EFUPoOKP7dPTQOAZVP6l/dkzIPAGqu4DVPwjVP1nqPwXqL5vUHU/oOp+QtX9hqr7A1X3D6qOwQEAqKdGHg== - - - - - diff --git a/python/tests/reference/Grid/measured.vtr b/python/tests/reference/Grid/measured.vti similarity index 93% rename from python/tests/reference/Grid/measured.vtr rename to python/tests/reference/Grid/measured.vti index 367514681..548a459f5 100644 --- a/python/tests/reference/Grid/measured.vtr +++ b/python/tests/reference/Grid/measured.vti @@ -1,6 +1,6 @@ - - + + AQAAAACAAABFAAAASAAAAA==eF5LScxNLM7Wcy/KTNHLyU9MiXcJcnX0NXZRKLO01AMjXUsg0C2oLEktLlHQMDIwtNQ1NNQ1MFIwNLQytbAyMNBkAADccxKA @@ -14,17 +14,6 @@ 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 - - - AQAAAACAAABQBgAAlwMAAA==eF4dz1+IVGUcxvETSiwZZyYiXTHorcSkLEd+hBtKzIyhG1GOvEFbiQ39eV1J2zHnwFKhA9FZxYsmEvGtyPEi9oReDBa650Q14kUb/ZChIleO4YReLDVHB6JSvHjz+V19Lr/P43meojff7njeeGjfgN2+ewWOaPMSbMX8PBxStBnWQvs0nOu7DbCozZMwinkE5hURnAzto7DXdw/BUW0egO2Y74XDipbARmjvgvN9twhWtLkdzsTsQaXo5u5b7g/tP3DQd9fgmDZ/wk7MV+BKRZdgM7QX4PW++wVWtTkHZ2OehQVFZ+GR0H4LvcydhuPanITdmE/AEUXTsBXaY3Aoc5/CmjaH4VzMTVhUdBBGof0A5jO3D05q8w7sxVyHo4omYDu0O+Bw5l6DDW22wfmYx2BFkYYzoX0Wqsxtkv/alOV/zOvlv6K18j+0a+R/5h6R/9qskP8xK/mvaJn8D+098j9zOfmvzR3yP+GF8l+Rq92yG9obcCRzf8OWNlfhUMLzsKboMpwL7e+wmLnzMNLmZ5hPmOGkoh9gL7Rn4GjmvoFtbU7B4YTbsKHoOJwP7RewkrmjcEabT6BK+BDcr+hDOAjtATiWufdhR5u9cGXCk7CpaA+8HtpdsJq57XBWm1dhIeGt8IiiF6A3ZbfA8cw9I/+12Sj/Ey7Kf0Xr5P+UfVz+Z261/NfmYfmf8HL5r+g++T9ll8r/zN0t/7Xx5X/CQ/Jf0QLZ4dPNCfRTdw12p/kKbNXtBVgrmXOw6NNZmE/dadib5hOwXbfHYKNkDsOKTwehSt0+OJjmOuzU7Q7YLJltsOqThoXUbZJ+xOulX7drpF8yK6Tv0zLppy4n/YgXSr9ub7yFfslchQ2fLsNK6s5DFTHDQd2egZ2SOQWbPh2H1dQdhYWID0EvsAdgt2T2wpZPe2AtddthMeKtMB/YLbBXMhul79M66adutfQjXi79wC6Vfsn40vdpgfRT998u9CPuw0Jg/4Be2fwGuz79BFup+x7WIv4aFgP7JcyXzeew59PHsJ26KdiI+D1YCexuqMrGwIFPL8NO6jbDZsRPST+wT0i/bB6Tfo4elH7qlkg/4julH9jbpF82/+5EP0d/wV7qLsF2xL/CRmB/hJWy+Q6qHH0FB6mbhp2IP4PNwH4Eq2UTwkKO3oXeRTcBuxG/DluBfRHWyuY5WMzRBulfdGulH/Eq6Qf2fumXzWLp52jRzs7/+cmIRw== - - - AQAAAACAAAAwAwAAzgEAAA==eF4d0TtIY1EQxvEDC1bCFlapTGUl5HEqYcGzr+wr+5BUwoJikoEFu1RWOZWwYCfmZqpYWaUTFqw8lWxuprNKpbBgZWclJJm930zzK/5MM+NcMfF1cC6JjGFknsFAtPKm0HnvYVLdg1HkBAbmK+tED9brfu0tuuo2DCKH0DEzTF26sV73T9ZV19+hizRhGvIRjF26gKHub62rqvWpbL5HH/IuDF06hq7uL2Fa6p31qaw20Ie8BV2XCKaaP4VxqdfWp/JofcilD+gdasBY8z0YljqCbipiPeNn6x3a+Ihe8y3oltqHKZcxjBnPrHdo5RN6zXuYFroHYy4nMGR8Zb1DD9arfu0z+kK3YcjlELqMGaY23Viv+ifrC13/gp5LE6YBH8HYpgsYqv7W+kLV+kQ2m+gD3oWhTcfQVf0lTHO9sz6R1a/oA96Crk0EU8WfwjjXa+sTebQ+4NI39ANqwFjxPRjmOoJuImL9jJ+tH9DGd/SKb0E31z5Mf2UM4xnPYLnmX/wIds8SvF9oBRZ3bcDzXH7C4r49uJ/xb1jceQTLHfpj+7mI7Vf9P9sv/mj7C325g/3in3A/l1ew+EMLljP+BYt/9OF9mwY74T+6FQmi - - - AQAAAACAAAAQAAAAEAAAAA==eF5jYICDhLS0a/YABqUCQg== - - - + diff --git a/python/tests/reference/Grid/mirror_directions_x+reflect_False.vti b/python/tests/reference/Grid/mirror_directions_x+reflect_False.vti new file mode 100644 index 000000000..fd1040fe9 --- /dev/null +++ b/python/tests/reference/Grid/mirror_directions_x+reflect_False.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA/AAAAQgAAAA==eF5LScxNLM7Wc0/Nz9XLzSwqyi9SKLO01AMjXUsg0C2oLEktLlHQMDIwtNQ1NNQ1MFIwNLQytbAyMNBkAAB3FRE+ + + + + + + + + AQAAAACAAADACAAAtAAAAA==eF7t1DcSwzAQBEGR8t57T/n/f1CBZhJEIJUCSRfq7jbcrPZ7WTIZYY51bGATW9jGDnaDv3P3vTfP/B72cYBDHOEYJzgN/s7d994882c4xwUucYVr3OA2+Dt333vzzN/hHg94xBOe8YLX4O/cfe/NM7/AG97xgU984Rs/wd+5+96bZ36eTJbw356J7RXz7aWqPRPbK+bbS1V7JrZXzLeXqvZMbK+Yby8VWLZnYnvF/C+L2gxP + + + + + diff --git a/python/tests/reference/Grid/mirror_directions_x+reflect_False.vtr b/python/tests/reference/Grid/mirror_directions_x+reflect_False.vtr deleted file mode 100644 index fd1752a79..000000000 --- a/python/tests/reference/Grid/mirror_directions_x+reflect_False.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA/AAAAQgAAAA==eF5LScxNLM7Wc0/Nz9XLzSwqyi9SKLO01AMjXUsg0C2oLEktLlHQMDIwtNQ1NNQ1MFIwNLQytbAyMNBkAAB3FRE+ - - - - - - - - AQAAAACAAADACAAAtAAAAA==eF7t1DcSwzAQBEGR8t57T/n/f1CBZhJEIJUCSRfq7jbcrPZ7WTIZYY51bGATW9jGDnaDv3P3vTfP/B72cYBDHOEYJzgN/s7d994882c4xwUucYVr3OA2+Dt333vzzN/hHg94xBOe8YLX4O/cfe/NM7/AG97xgU984Rs/wd+5+96bZ36eTJbw356J7RXz7aWqPRPbK+bbS1V7JrZXzLeXqvZMbK+Yby8VWLZnYnvF/C+L2gxP - - - - - AQAAAACAAAB4AAAAXQAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sLNffWbKtfuPoOqe2C1S+1UzRfA5VP1LO9ZF6qlBzq+h+t7aAQC3wj52 - - - AQAAAACAAAAwAAAAKwAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3KeNxx9YfV+wAD6QZhA== - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2AHAFVBE/w= - - - - - diff --git a/python/tests/reference/Grid/mirror_directions_x-y-z+reflect_True.vti b/python/tests/reference/Grid/mirror_directions_x-y-z+reflect_True.vti new file mode 100644 index 000000000..39c8a71db --- /dev/null +++ b/python/tests/reference/Grid/mirror_directions_x-y-z+reflect_True.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA/AAAAQgAAAA==eF5LScxNLM7Wc0/Nz9XLzSwqyi9SKLO01AMjXUsg0C2oLEktLlHQMDIwtNQ1NNQ1MFIwNLQytbAyMNBkAAB3FRE+ + + + + + + + + AQAAAACAAAAAKAAAQwEAAA==eF7t2cdOBDEQRVGGnHNOA03+/x9kwb0bb1Cblp5EF5sjWXaVZNnlomex8vO3KMuynJmruIbruIGbuIXbuNPouPNcZxzjmse8u7iH+3iAh3iEx3jS6LjzXGcc45rHvKd4hud4gZd4hdd40+i481xnHOOax7y3eIf3+ICPuMQnfG503HmuM45xzWPeAV/wFd/wHT/wE78aHXee64xjXPMMjan86f1Pn7/0/UvXn7Isy7n61z6wt+6a1/rd+w71vjvm9f3qfYd7313z+n739iE6tu8wr/3LgGP7sN6+q+2fUvnT+58+f+n7l64/6fzp/U+fv/T9S9efdP70/qfPX/r+pevPb/1hWZblf3ds3Z3q+2PvuzPV99fed3eq78+9fcdU398HHNt3TfX7Qzp/ev/T5y99/9L1p/0/uCzLci5+A0r6OEE= + + + + + diff --git a/python/tests/reference/Grid/mirror_directions_x-y-z+reflect_True.vtr b/python/tests/reference/Grid/mirror_directions_x-y-z+reflect_True.vtr deleted file mode 100644 index ea1d1acdb..000000000 --- a/python/tests/reference/Grid/mirror_directions_x-y-z+reflect_True.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA/AAAAQgAAAA==eF5LScxNLM7Wc0/Nz9XLzSwqyi9SKLO01AMjXUsg0C2oLEktLlHQMDIwtNQ1NNQ1MFIwNLQytbAyMNBkAAB3FRE+ - - - - - - - - AQAAAACAAAAAKAAAQwEAAA==eF7t2cdOBDEQRVGGnHNOA03+/x9kwb0bb1Cblp5EF5sjWXaVZNnlomex8vO3KMuynJmruIbruIGbuIXbuNPouPNcZxzjmse8u7iH+3iAh3iEx3jS6LjzXGcc45rHvKd4hud4gZd4hdd40+i481xnHOOax7y3eIf3+ICPuMQnfG503HmuM45xzWPeAV/wFd/wHT/wE78aHXee64xjXPMMjan86f1Pn7/0/UvXn7Isy7n61z6wt+6a1/rd+w71vjvm9f3qfYd7313z+n739iE6tu8wr/3LgGP7sN6+q+2fUvnT+58+f+n7l64/6fzp/U+fv/T9S9efdP70/qfPX/r+pevPb/1hWZblf3ds3Z3q+2PvuzPV99fed3eq78+9fcdU398HHNt3TfX7Qzp/ev/T5y99/9L1p/0/uCzLci5+A0r6OEE= - - - - - AQAAAACAAACIAAAAaAAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sLNffWbKtfuPoOqe2C1S+1UzRfA5VP1LO9ZF6qlBzq+h+t7aZciG+gqUvofq/2AHANv4Rwk= - - - AQAAAACAAABYAAAARgAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3KeNxx9YfV6DiN+12xNtFGsbchco/sHNYfWbKtfuPoOqe2AEAuAUwpw== - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - - - diff --git a/python/tests/reference/Grid/mirror_directions_y-z+reflect_False.vti b/python/tests/reference/Grid/mirror_directions_y-z+reflect_False.vti new file mode 100644 index 000000000..5e4c0ade8 --- /dev/null +++ b/python/tests/reference/Grid/mirror_directions_y-z+reflect_False.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA/AAAAQgAAAA==eF5LScxNLM7Wc0/Nz9XLzSwqyi9SKLO01AMjXUsg0C2oLEktLlHQMDIwtNQ1NNQ1MFIwNLQytbAyMNBkAAB3FRE+ + + + + + + + + AQAAAACAAAAADAAAhAAAAA==eF7t1TcSAjEMBVB2yTnnvOT7X5BiXw+MO+zfvFIjjSVnlTJZMkpzVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZBS+88sY7H3zyxdD6of2Hzj9PRm26A2UK/noHQuuH9h86/0/vIxmHae/LfLv3//L/vwHV+xEh + + + + + diff --git a/python/tests/reference/Grid/mirror_directions_y-z+reflect_False.vtr b/python/tests/reference/Grid/mirror_directions_y-z+reflect_False.vtr deleted file mode 100644 index e8bc24ce0..000000000 --- a/python/tests/reference/Grid/mirror_directions_y-z+reflect_False.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA/AAAAQgAAAA==eF5LScxNLM7Wc0/Nz9XLzSwqyi9SKLO01AMjXUsg0C2oLEktLlHQMDIwtNQ1NNQ1MFIwNLQytbAyMNBkAAB3FRE+ - - - - - - - - AQAAAACAAAAADAAAhAAAAA==eF7t1TcSAjEMBVB2yTnnvOT7X5BiXw+MO+zfvFIjjSVnlTJZMkpzVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZBS+88sY7H3zyxdD6of2Hzj9PRm26A2UK/noHQuuH9h86/0/vIxmHae/LfLv3//L/vwHV+xEh - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3KeNxx9YfV6DiN+12xNtFGsbchco/sAMA/zQl8w== - - - AQAAAACAAAA4AAAALgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+0A6r8c6w== - - - - - diff --git a/python/tests/reference/Grid/mirror_directions_z-x-y+reflect_False.vti b/python/tests/reference/Grid/mirror_directions_z-x-y+reflect_False.vti new file mode 100644 index 000000000..0340d4b68 --- /dev/null +++ b/python/tests/reference/Grid/mirror_directions_z-x-y+reflect_False.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA/AAAAQgAAAA==eF5LScxNLM7Wc0/Nz9XLzSwqyi9SKLO01AMjXUsg0C2oLEktLlHQMDIwtNQ1NNQ1MFIwNLQytbAyMNBkAAB3FRE+ + + + + + + + + AQAAAACAAAAAFQAA8QAAAA==eF7t18lSAjEURmFBFMEBUBTBgRn1/V/QRZ+zyYbQFtfNzearVJK/KpV0bnXnommdNE3D7eIl9vAKr7GPNzgo+o473/XmmT/EW7zDe3zAEY5xUvQdd77rzTP/EZ9wis/4gjN8xXnRd9z5rjfP/AW+4Tt+4CcucYXrou+4811vnvkb3OIO93jAL/zGn6LvuPNdb5750fuLPr/o+9lN0/Tf/GsdrK175ls3274zte+K+b5Lbd/R2nfTfN/dtnWiti6Yb13Z4Kl1sLbumR+9v+jzi76fx77PNE3P76l1L///mpb/f0071/6izy/6fv4Cw9od+Q== + + + + + diff --git a/python/tests/reference/Grid/mirror_directions_z-x-y+reflect_False.vtr b/python/tests/reference/Grid/mirror_directions_z-x-y+reflect_False.vtr deleted file mode 100644 index b78c88e90..000000000 --- a/python/tests/reference/Grid/mirror_directions_z-x-y+reflect_False.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA/AAAAQgAAAA==eF5LScxNLM7Wc0/Nz9XLzSwqyi9SKLO01AMjXUsg0C2oLEktLlHQMDIwtNQ1NNQ1MFIwNLQytbAyMNBkAAB3FRE+ - - - - - - - - AQAAAACAAAAAFQAA8QAAAA==eF7t18lSAjEURmFBFMEBUBTBgRn1/V/QRZ+zyYbQFtfNzearVJK/KpV0bnXnommdNE3D7eIl9vAKr7GPNzgo+o473/XmmT/EW7zDe3zAEY5xUvQdd77rzTP/EZ9wis/4gjN8xXnRd9z5rjfP/AW+4Tt+4CcucYXrou+4811vnvkb3OIO93jAL/zGn6LvuPNdb5750fuLPr/o+9lN0/Tf/GsdrK175ls3274zte+K+b5Lbd/R2nfTfN/dtnWiti6Yb13Z4Kl1sLbumR+9v+jzi76fx77PNE3P76l1L///mpb/f0071/6izy/6fv4Cw9od+Q== - - - - - AQAAAACAAAB4AAAAXQAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sLNffWbKtfuPoOqe2C1S+1UzRfA5VP1LO9ZF6qlBzq+h+t7aAQC3wj52 - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICAvrdbF3w/tsEOQh+wC30iUFisdRLKv2D3KeNxx9YfV6DiN+12xNtFGsbchco/sAMA/zQl8w== - - - AQAAAACAAAA4AAAALgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+0A6r8c6w== - - - - - diff --git a/python/tests/reference/Grid/rotate_Eulers_0.0-32.0-240.0.vti b/python/tests/reference/Grid/rotate_Eulers_0.0-32.0-240.0.vti new file mode 100644 index 000000000..bbb7722b8 --- /dev/null +++ b/python/tests/reference/Grid/rotate_Eulers_0.0-32.0-240.0.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA/AAAAQgAAAA==eF5LScxNLM7Wc0/Nz9Uryi9JLElVKLO01AMjXUsg0C2oLEktLlHQMDIwtNQ1NNQ1MFIwNLQytbAyMNBkAAB1BxEy + + + + + + + + AQAAAACAAAAAFAAAqgAAAA==eF7t08kKwlAUA9A6gKLiiFYRBwQH+v8fWMQ8kEC4lefCYt7mbJJubloVr1dZa4sdPMNHkGc7wqhn7fN1hVFvDrfwREZ9tVvvuF3y/e9BPql213R/uf0hnMESHuGN8sop3MA1PIg8G+3f/8FvOoB8/3T3K+WVuTuO+k2/MyFXcC/y3+579+20D9XdL5RX5u63B8dwGeStfTftbAQXQV71P92ttf9kDWoiXq4= + + + + + diff --git a/python/tests/reference/Grid/rotate_Eulers_0.0-32.0-240.0.vtr b/python/tests/reference/Grid/rotate_Eulers_0.0-32.0-240.0.vtr deleted file mode 100644 index 9bba78527..000000000 --- a/python/tests/reference/Grid/rotate_Eulers_0.0-32.0-240.0.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA/AAAAQgAAAA==eF5LScxNLM7Wc0/Nz9Uryi9JLElVKLO01AMjXUsg0C2oLEktLlHQMDIwtNQ1NNQ1MFIwNLQytbAyMNBkAAB1BxEy - - - - - - - - AQAAAACAAAAAFAAAqgAAAA==eF7t08kKwlAUA9A6gKLiiFYRBwQH+v8fWMQ8kEC4lefCYt7mbJJubloVr1dZa4sdPMNHkGc7wqhn7fN1hVFvDrfwREZ9tVvvuF3y/e9BPql213R/uf0hnMESHuGN8sop3MA1PIg8G+3f/8FvOoB8/3T3K+WVuTuO+k2/MyFXcC/y3+579+20D9XdL5RX5u63B8dwGeStfTftbAQXQV71P92ttf9kDWoiXq4= - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAABYAAAAVwAAAA==eF77mPG4Y+uPI/tCnggUFmvt3NfzduuC78cW7JsAoe3CIOJ2nyHq7HbG20Uaxpy1c1h9Zsq1+5fslqj9qpkieN2OY5F6apDzbbsc2VBfgdL7dgAiDS/d - - - AQAAAACAAABIAAAAOgAAAA==eF7rfbt1wfdjB/b1gukN+xigoA/Ct4OIH7ALfiJQWKx10g4ifsHuQ8bjjq0/rtiFgMVv2gEA8Y4o8A== - - - - - diff --git a/python/tests/reference/Grid/rotate_Eulers_32.0-68.0-21.0.vti b/python/tests/reference/Grid/rotate_Eulers_32.0-68.0-21.0.vti new file mode 100644 index 000000000..5f61a73ed --- /dev/null +++ b/python/tests/reference/Grid/rotate_Eulers_32.0-68.0-21.0.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA/AAAAQgAAAA==eF5LScxNLM7Wc0/Nz9Uryi9JLElVKLO01AMjXUsg0C2oLEktLlHQMDIwtNQ1NNQ1MFIwNLQytbAyMNBkAAB1BxEy + + + + + + + + AQAAAACAAAAIIgAA8QAAAA==eF7t1rkOwjAQBFAIgoJb4hanQBzK/38gBbPNguW1s6bJpHnNeBKkLJu687lqSimlSXaVsTylbbIy5lKV3p4xH3MEx7DUc0+MuVwHxhylFmUOhsa81Uqp5y92Xiv7dwGXUN+nD2N9oX5xBb3+J3T/FM4C+VxLf6+U6qXN9HpPQ71e/Teoe73uc4BH6N2/hhvo3S9u4dyYT7VUL23m1ZhLVXr3xrxV/d7L/Mn+jJ2PeYfSr+cvdl4r++sEz1D/jty9rPfvBe4C+Vyl37uXtluv/fXv/if03sMyZy9jPlV+T1P67QPKXMfylFJKf/sGjc+oPA== + + + + + diff --git a/python/tests/reference/Grid/rotate_Eulers_32.0-68.0-21.0.vtr b/python/tests/reference/Grid/rotate_Eulers_32.0-68.0-21.0.vtr deleted file mode 100644 index 00cb57f93..000000000 --- a/python/tests/reference/Grid/rotate_Eulers_32.0-68.0-21.0.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA/AAAAQgAAAA==eF5LScxNLM7Wc0/Nz9Uryi9JLElVKLO01AMjXUsg0C2oLEktLlHQMDIwtNQ1NNQ1MFIwNLQytbAyMNBkAAB1BxEy - - - - - - - - AQAAAACAAAAIIgAA8QAAAA==eF7t1rkOwjAQBFAIgoJb4hanQBzK/38gBbPNguW1s6bJpHnNeBKkLJu687lqSimlSXaVsTylbbIy5lKV3p4xH3MEx7DUc0+MuVwHxhylFmUOhsa81Uqp5y92Xiv7dwGXUN+nD2N9oX5xBb3+J3T/FM4C+VxLf6+U6qXN9HpPQ71e/Teoe73uc4BH6N2/hhvo3S9u4dyYT7VUL23m1ZhLVXr3xrxV/d7L/Mn+jJ2PeYfSr+cvdl4r++sEz1D/jty9rPfvBe4C+Vyl37uXtluv/fXv/if03sMyZy9jPlV+T1P67QPKXMfylFJKf/sGjc+oPA== - - - - - AQAAAACAAABgAAAAZAAAAA==eF4LeSJQWKy1c1/f260Lvh9bsK8HQtuFQMTtPmQ87tj644jdtni7SMOYs3b2q89MuXb/kt0itV81UwSv27EuUk8Ncr5tlykb6itQet8uzeegVPrlh3YSXDf43N48tgMAAoUxGA== - - - AQAAAACAAABgAAAARgAAAA==eF4LfSJQWKx1cl/f260Lvh87AKU37GOAAijfrh8ibxcKUW8HEb9g9ynjccfWH1fswsDiN+12xdtFGsbchco/sAMAK8s12w== - - - AQAAAACAAABQAAAATwAAAA==eF77kPG4Y+uPI/uCnwgUFmvt3NfzduuC78cW7JsAoe1CIOJ2HyDq7HbE20Uaxpy1s199Zsq1+5fsFqn9qpkieN2ObZF6apDzbTsArFItAw== - - - - - diff --git a/python/tests/reference/Grid/scale_grid_10-10-10.vti b/python/tests/reference/Grid/scale_grid_10-10-10.vti new file mode 100644 index 000000000..b459414f2 --- /dev/null +++ b/python/tests/reference/Grid/scale_grid_10-10-10.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9UrTk7MSVUos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFYKEKs= + + + + + + + + AQAAAACAAABAHwAA+QAAAA==eF7t2DcSAjEQRFF28d57t3i4/wUJaCVdpYCqH46Sl/1oklZR+70iDMMwDP+wlHXZMJuyJdtmR3Yl3evJvhyYQzmSY3Mip5LuzeRcLsylXMm1uZFbSfd2ci8P5lGe5Nms5EXSvau8ybv5kE/5Mt/yI+kefc90j75nukffM92j75nu0fdM9+h7pnv0PdM9+p7pHn3PdI++Z7pXhmEYhmEYhqi5fyzfD74bfD+k3UD3cjvE94PvBt8PaTfQvdwO8f3gu8H3Q9oNdC+3Q3w/+G7w/VBJupfbIb4ffDf4fki7ge7R90z36Hume/Q90z36nukefc907wt6sixX + + + + + diff --git a/python/tests/reference/Grid/scale_grid_10-10-10.vtr b/python/tests/reference/Grid/scale_grid_10-10-10.vtr deleted file mode 100644 index 4ab12d017..000000000 --- a/python/tests/reference/Grid/scale_grid_10-10-10.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9UrTk7MSVUos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFYKEKs= - - - - - - - - AQAAAACAAABAHwAA+QAAAA==eF7t2DcSAjEQRFF28d57t3i4/wUJaCVdpYCqH46Sl/1oklZR+70iDMMwDP+wlHXZMJuyJdtmR3Yl3evJvhyYQzmSY3Mip5LuzeRcLsylXMm1uZFbSfd2ci8P5lGe5Nms5EXSvau8ybv5kE/5Mt/yI+kefc90j75nukffM92j75nu0fdM9+h7pnv0PdM9+p7pHn3PdI++Z7pXhmEYhmEYhqi5fyzfD74bfD+k3UD3cjvE94PvBt8PaTfQvdwO8f3gu8H3Q9oNdC+3Q3w/+G7w/VBJupfbIb4ffDf4fki7ge7R90z36Hume/Q90z36nukefc907wt6sixX - - - - - AQAAAACAAABYAAAARQAAAA==eF5jYIAAj/V7Zn26vsoOQu+yK2vm/fJV8QiUf8qu9+3WBd+PXYCKX7GLl0x1/1JzHSp/y87QVeTdB6N7UHUP7ACC9C8w - - - AQAAAACAAABYAAAASAAAAA==eF5jYICAvrdbF3w/tsAOQm+wC30iUFistRPKP2D3KeNxx9YfR6DiJ+12xNtFGsachcpfsHNYfWbKtfuX7D6C1V2xAwCgPTAG - - - AQAAAACAAABYAAAARQAAAA==eF5jYIAAj/V7Zn26PssOQq+yK2vm/fJVcQuUv8uu9+3WBd+PHYCKH7GLl0x1/1JzHCp/ys7QVeTdB6NzUHUX7ABrNC6Q - - - - - diff --git a/python/tests/reference/Grid/scale_grid_10-11-10.vti b/python/tests/reference/Grid/scale_grid_10-11-10.vti new file mode 100644 index 000000000..0d6362eba --- /dev/null +++ b/python/tests/reference/Grid/scale_grid_10-11-10.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9UrTk7MSVUos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFYKEKs= + + + + + + + + AQAAAACAAABgIgAA/gAAAA==eF7t2CcOA0EQRFHnnHPO8f4XNHAtKWmQPxhZveSxj6ZBbbn0/cphGIZh+EdWZFXWzLpsyKbZkm1J9zqyK3tmXw7k0BzJsaR7EzmVM3MuF3JpruRa5t7byK3cmXt5kEfzJM+S7l3kVd7Mu3zIp/mSb0n36Puge/R90D36Pefeo++D7tH3Qffo+6B79H3QPfo9596j74Pu0fdB9yphGIZhGIZh+IOp/5S+v3x3+f4qdhfdS+0431++u3x/FbuL7qV2nO8l30m+l4qdlHsvteN8f/nu8v11knQvteN8f/nu8v1V7C66R98H3aPvg+7R7zn3Hn0fdI++D7r3AZqNMMY= + + + + + diff --git a/python/tests/reference/Grid/scale_grid_10-11-10.vtr b/python/tests/reference/Grid/scale_grid_10-11-10.vtr deleted file mode 100644 index 7a051a249..000000000 --- a/python/tests/reference/Grid/scale_grid_10-11-10.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9UrTk7MSVUos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFYKEKs= - - - - - - - - AQAAAACAAABgIgAA/gAAAA==eF7t2CcOA0EQRFHnnHPO8f4XNHAtKWmQPxhZveSxj6ZBbbn0/cphGIZh+EdWZFXWzLpsyKbZkm1J9zqyK3tmXw7k0BzJsaR7EzmVM3MuF3JpruRa5t7byK3cmXt5kEfzJM+S7l3kVd7Mu3zIp/mSb0n36Puge/R90D36Pefeo++D7tH3Qffo+6B79H3QPfo9596j74Pu0fdB9yphGIZhGIZh+IOp/5S+v3x3+f4qdhfdS+0431++u3x/FbuL7qV2nO8l30m+l4qdlHsvteN8f/nu8v11knQvteN8f/nu8v1V7C66R98H3aPvg+7R7zn3Hn0fdI++D7r3AZqNMMY= - - - - - AQAAAACAAABYAAAARQAAAA==eF5jYIAAj/V7Zn26vsoOQu+yK2vm/fJV8QiUf8qu9+3WBd+PXYCKX7GLl0x1/1JzHSp/y87QVeTdB6N7UHUP7ACC9C8w - - - AQAAAACAAABgAAAATgAAAA==eF5jYICAV+vf8nA0zrOD0OvsPjhv4jz2YBuUv8/uU68Ix1KBw1DxY3Zvf/pzP99wCip/zu7LJtf2KRoXoeou233MeNyx9ccVOwADxy6u - - - AQAAAACAAABYAAAARQAAAA==eF5jYIAAj/V7Zn26PssOQq+yK2vm/fJVcQuUv8uu9+3WBd+PHYCKH7GLl0x1/1JzHCp/ys7QVeTdB6NzUHUX7ABrNC6Q - - - - - diff --git a/python/tests/reference/Grid/scale_grid_10-13-10.vti b/python/tests/reference/Grid/scale_grid_10-13-10.vti new file mode 100644 index 000000000..786452b7b --- /dev/null +++ b/python/tests/reference/Grid/scale_grid_10-13-10.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9UrTk7MSVUos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFYKEKs= + + + + + + + + AQAAAACAAACgKAAACQEAAA==eF7t2blWAlEURFEBlcGJQcAZZBD4/x804HRSa72sghtUJzs72Q3qde/m+vVijDHGGLGPA7wV7/Aeh+IIx+juTfABH8UnfMYXcYozrN6b4wJfxSWucC2+4TtW733gJ36J3/iDG3GLv1i9t8M9HsQj/uFJPOMF3T33/bp77nur3nPfW/We+96q99z36+6579fdc99b9Z773qr33PdWvee+X3evH2OMMcYYY4wNW/8ZdP/r7tf93+1+d6/1jqB7XXe67vVup1fvtd4RdK/rTte93u306r3WO4Ludd3pute3WL3XekfQ/a+7X/d/t/vdPff9unvue6vec99b9Z773qr33Pfr7v0DeUA5pA== + + + + + diff --git a/python/tests/reference/Grid/scale_grid_10-13-10.vtr b/python/tests/reference/Grid/scale_grid_10-13-10.vtr deleted file mode 100644 index 3dd5c222a..000000000 --- a/python/tests/reference/Grid/scale_grid_10-13-10.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9UrTk7MSVUos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFYKEKs= - - - - - - - - AQAAAACAAACgKAAACQEAAA==eF7t2blWAlEURFEBlcGJQcAZZBD4/x804HRSa72sghtUJzs72Q3qde/m+vVijDHGGLGPA7wV7/Aeh+IIx+juTfABH8UnfMYXcYozrN6b4wJfxSWucC2+4TtW733gJ36J3/iDG3GLv1i9t8M9HsQj/uFJPOMF3T33/bp77nur3nPfW/We+96q99z36+6579fdc99b9Z773qr33PdWvee+X3evH2OMMcYYY4wNW/8ZdP/r7tf93+1+d6/1jqB7XXe67vVup1fvtd4RdK/rTte93u306r3WO4Ludd3pute3WL3XekfQ/a+7X/d/t/vdPff9unvue6vec99b9Z773qr33Pfr7v0DeUA5pA== - - - - - AQAAAACAAABYAAAARQAAAA==eF5jYIAAj/V7Zn26vsoOQu+yK2vm/fJV8QiUf8qu9+3WBd+PXYCKX7GLl0x1/1JzHSp/y87QVeTdB6N7UHUP7ACC9C8w - - - AQAAAACAAABwAAAAWgAAAA==eF5jYICA8tytkUvOz7SD0CvtJIU8nHdHb4byd9plpQjuOKZ4ACp+2O7E/rpz66ceg8qftFOTfvNkBudZqLoLdk671/w9sO8iVP1lu48Zjzu2/rhiBwBjSjRO - - - AQAAAACAAABYAAAARQAAAA==eF5jYIAAj/V7Zn26PssOQq+yK2vm/fJVcQuUv8uu9+3WBd+PHYCKH7GLl0x1/1JzHCp/ys7QVeTdB6NzUHUX7ABrNC6Q - - - - - diff --git a/python/tests/reference/Grid/scale_grid_10-20-2.vti b/python/tests/reference/Grid/scale_grid_10-20-2.vti new file mode 100644 index 000000000..8cb531701 --- /dev/null +++ b/python/tests/reference/Grid/scale_grid_10-20-2.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9UrTk7MSVUos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFYKEKs= + + + + + + + + AQAAAACAAACADAAAdgAAAA==eF7tzMsWgQAYReEuKJUoRKGLS3n/JzSwJ51ZRq3l35Nvtl3nm2uapmmaP+ihLy5wiSsxwBDn/ltjhLGY4AZTcYs7tN/Yqb8Mc9yLBzxiIZ7wjP/2K7HCi3jFG9Zigy3ab+zUX4d3fIhPfGEvDvjGuf8+MEUQzQ== + + + + + diff --git a/python/tests/reference/Grid/scale_grid_10-20-2.vtr b/python/tests/reference/Grid/scale_grid_10-20-2.vtr deleted file mode 100644 index aa5cd754d..000000000 --- a/python/tests/reference/Grid/scale_grid_10-20-2.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9UrTk7MSVUos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFYKEKs= - - - - - - - - AQAAAACAAACADAAAdgAAAA==eF7tzMsWgQAYReEuKJUoRKGLS3n/JzSwJ51ZRq3l35Nvtl3nm2uapmmaP+ihLy5wiSsxwBDn/ltjhLGY4AZTcYs7tN/Yqb8Mc9yLBzxiIZ7wjP/2K7HCi3jFG9Zigy3ab+zUX4d3fIhPfGEvDvjGuf8+MEUQzQ== - - - - - AQAAAACAAABYAAAARQAAAA==eF5jYIAAj/V7Zn26vsoOQu+yK2vm/fJV8QiUf8qu9+3WBd+PXYCKX7GLl0x1/1JzHSp/y87QVeTdB6N7UHUP7ACC9C8w - - - AQAAAACAAACoAAAAgQAAAA==eF5jYICAvrdbF3w/NsEOQi+wC30iUFistRLK32D3KeNxx9YfW6DiO+12xNtFGsbshcofsHNYfWbKtfuHoOqO2C1W+1UzRfA4VP1JO/ZF6qlBzqeh+s7aZcmG+gqUnofqv2CX7nNQKv3yRag5l+wkuW7wub25bPcRbN4VOwAdV1bT - - - AQAAAACAAAAYAAAAGAAAAA==eF5jYICA3rdbF3w/dsAOQl+wAwBg4gsl - - - - - diff --git a/python/tests/reference/Grid/scale_grid_5-4-20.vti b/python/tests/reference/Grid/scale_grid_5-4-20.vti new file mode 100644 index 000000000..55477492a --- /dev/null +++ b/python/tests/reference/Grid/scale_grid_5-4-20.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9UrTk7MSVUos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFYKEKs= + + + + + + + + AQAAAACAAACADAAAeAAAAA==eF7t1TkWggAUQ1EREZS5BFQmB9j/Bin++40b8OBJmtumSoKDJZDyBx7xhGeM8YJXzLDAEmts8YYP7HHECZ/4xg+uqH4W9bOon+W7n5Ryf/oPhxih70yCvjMp5ug7U2GDHd7Rd2ZA35kZX+g7s6D6Wf613wZ8oBHR + + + + + diff --git a/python/tests/reference/Grid/scale_grid_5-4-20.vtr b/python/tests/reference/Grid/scale_grid_5-4-20.vtr deleted file mode 100644 index 566e82529..000000000 --- a/python/tests/reference/Grid/scale_grid_5-4-20.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9UrTk7MSVUos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFYKEKs= - - - - - - - - AQAAAACAAACADAAAeAAAAA==eF7t1TkWggAUQ1EREZS5BFQmB9j/Bin++40b8OBJmtumSoKDJZDyBx7xhGeM8YJXzLDAEmts8YYP7HHECZ/4xg+uqH4W9bOon+W7n5Ryf/oPhxih70yCvjMp5ug7U2GDHd7Rd2ZA35kZX+g7s6D6Wf613wZ8oBHR - - - - - AQAAAACAAAAwAAAALAAAAA==eF5jYIAAj/V7Zn26vssOQp+yK2vm/fJV8QqUf8uu9+3WBd+PPbADAPj2GSc= - - - AQAAAACAAAAoAAAAIwAAAA==eF5jYICAjxmPO7b+2GIHoY/YZcmG+gqUnofyr9gBAEcwExU= - - - AQAAAACAAACoAAAAfwAAAA==eF5jYIAAj/V7Zn263mUHoWfZlTXzfvmquATKX2XX+3brgu/HNkDFt9jFS6a6f6nZDpXfZWfoKvLug9E+qLoDdk07Ek+VlRyCqj9il+W3U7b0/FGovuN2IU8ECou1TkL1n7Kzqco4Uth6BmrOOTs1gQPiBQ/OQ827YAcA/NFWxg== - - - - - diff --git a/python/tests/reference/Grid/scale_grid_8-10-12.vti b/python/tests/reference/Grid/scale_grid_8-10-12.vti new file mode 100644 index 000000000..a2a3523a7 --- /dev/null +++ b/python/tests/reference/Grid/scale_grid_8-10-12.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9UrTk7MSVUos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFYKEKs= + + + + + + + + AQAAAACAAAAAHgAAyAAAAA==eF7t2LcBAkEUxFDu8N5776H/BglQBwpvNnmRskn+FrX/K2KMsWKWWMcGNrGFbexgF23fwz4OcIgjHOMEp2j7Gc5xgUtc4Ro3uEXb73CPBzziCc94wSva/oZ3fOATX/jGD37R9nY/trf7sb3dj+3tfmxv92N7ux/b2/3Y3u7H9nY/trf7sb3dj+3tfmxv92N7ux/b2/3YvowxxhhjjJXS/gPa3t4htrd3iO3tHWJ7e4fY3u7H9nY/trf7sb3dj+3tfmz/A1V7KtE= + + + + + diff --git a/python/tests/reference/Grid/scale_grid_8-10-12.vtr b/python/tests/reference/Grid/scale_grid_8-10-12.vtr deleted file mode 100644 index 28e40ffaa..000000000 --- a/python/tests/reference/Grid/scale_grid_8-10-12.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAA+AAAAQQAAAA==eF5LScxNLM7Wc0/Nz9UrTk7MSVUos7TUAyNdSyDQLagsSS0uUdAwMjC01DU01DUwUjA0tDK1sDIw0GQAAFYKEKs= - - - - - - - - AQAAAACAAAAAHgAAyAAAAA==eF7t2LcBAkEUxFDu8N5776H/BglQBwpvNnmRskn+FrX/K2KMsWKWWMcGNrGFbexgF23fwz4OcIgjHOMEp2j7Gc5xgUtc4Ro3uEXb73CPBzziCc94wSva/oZ3fOATX/jGD37R9nY/trf7sb3dj+3tfmxv92N7ux/b2/3Y3u7H9nY/trf7sb3dj+3tfmxv92N7ux/b2/3YvowxxhhjjJXS/gPa3t4htrd3iO3tHWJ7e4fY3u7H9nY/trf7sb3dj+3tfmz/A1V7KtE= - - - - - AQAAAACAAABIAAAAOgAAAA==eF5jYICA3rdbF3w/tsEOQh+wC3kiUFisdRLKv2D3IeNxx9YfV6DiN+22x9tFGsbchco/sAMA/fQl6g== - - - AQAAAACAAABYAAAASAAAAA==eF5jYICAvrdbF3w/tsAOQm+wC30iUFistRPKP2D3KeNxx9YfR6DiJ+12xNtFGsachcpfsHNYfWbKtfuX7D6C1V2xAwCgPTAG - - - AQAAAACAAABoAAAAUQAAAA==eF5jYIAAwUmfGubHTbOD0Mvset9uXfD92AYof5vdVDP9RPdvu6HiB+zO21+ZcHrSYaj8MbvgJwKFxVonoepO213v8A2UPnQOqv6CHQDLvTPb - - - - - diff --git a/python/tests/reference/Result/12grains6x7x8.vti b/python/tests/reference/Result/12grains6x7x8.vti new file mode 100644 index 000000000..76cd8f5c4 --- /dev/null +++ b/python/tests/reference/Result/12grains6x7x8.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAARAAAAGQAAAA==eF7LyM/NT0/Ny6xKLMnMz1MwZAAAPsIGPQ== + + + + + + + + AQAAAACAAACACgAA2wAAAA==eF6tlssOgkAQBNcHiPj//2uM25eOZc8oc6kYagzdISzbeM/ZeJ/cgDTk7x/c16zm6fduXAOr/mOS8rqXfDH5mqP6pKHcVY9yJN/ziv5/R/k+8lI/GnnLV2uMm1G5tefXnZ6j6v3bD/nXyQWokU8e5a96tJc8z9H1aY88MfWZek3Xf6XnuBhTr+6fgPKpH9oj3/eS5+/bap/yPafo54buJ/mek3zqJeXu+tRP8vycp15E8tNe6rPaf7fPrk/9eO6q598/1GO1/67v53V6nul8T3n9Oy758p47Sgdl + + + + + diff --git a/python/tests/reference/Result/12grains6x7x8.vtr b/python/tests/reference/Result/12grains6x7x8.vtr deleted file mode 100644 index 02ba9d4e6..000000000 --- a/python/tests/reference/Result/12grains6x7x8.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAARAAAAGQAAAA==eF7LyM/NT0/Ny6xKLMnMz1MwZAAAPsIGPQ== - - - - - - - - AQAAAACAAACACgAA2wAAAA==eF6tlssOgkAQBNcHiPj//2uM25eOZc8oc6kYagzdISzbeM/ZeJ/cgDTk7x/c16zm6fduXAOr/mOS8rqXfDH5mqP6pKHcVY9yJN/ziv5/R/k+8lI/GnnLV2uMm1G5tefXnZ6j6v3bD/nXyQWokU8e5a96tJc8z9H1aY88MfWZek3Xf6XnuBhTr+6fgPKpH9oj3/eS5+/bap/yPafo54buJ/mek3zqJeXu+tRP8vycp15E8tNe6rPaf7fPrk/9eO6q598/1GO1/67v53V6nul8T3n9Oy758p47Sgdl - - - - - AQAAAACAAAA4AAAAHAAAAA==eF5jYEAGB+wh9AUofQNKP4DST6D0C3sAisIGjw== - - - AQAAAACAAABAAAAAHwAAAA==eF5jYEAGB+wh9AUofQNKP4DST6D0Cyj9xh4AwVEHug== - - - AQAAAACAAABIAAAAIgAAAA==eF5jYEAGB+wh9AUofQNKP4DST6D0Cyj9Bkp/sAcAAU8I6Q== - - - - - diff --git a/python/tests/reference/Result/4grains2x4x3.vti b/python/tests/reference/Result/4grains2x4x3.vti new file mode 100644 index 000000000..fb351249b --- /dev/null +++ b/python/tests/reference/Result/4grains2x4x3.vti @@ -0,0 +1,19 @@ + + + + + + AAAAAACAAAAAAAAA + + + + + + + + AQAAAACAAADAAAAAIgAAAA==eF5jZIAARjSamQAfXRwdoMszoYnD+DBAyBx0GgYADegAHw== + + + + + diff --git a/python/tests/reference/Result/4grains2x4x3.vtr b/python/tests/reference/Result/4grains2x4x3.vtr deleted file mode 100644 index a769a8e55..000000000 --- a/python/tests/reference/Result/4grains2x4x3.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AAAAAACAAAAAAAAA - - - - - - - - AQAAAACAAADAAAAAIgAAAA==eF5jZIAARjSamQAfXRwdoMszoYnD+DBAyBx0GgYADegAHw== - - - - - AQAAAACAAAAYAAAAEQAAAA==eF5jYEAGD+wh9Ad7AA0uAk8= - - - AQAAAACAAAAoAAAAFwAAAA==eF5jYEAGF+wh9AMo/QJKf7AHADzEBIU= - - - AQAAAACAAAAgAAAAGAAAAA==eF5jYICAUDC4ag+hn9pDRD/YAwBmSwdk - - - - - diff --git a/python/tests/reference/Result/6grains6x7x8_single_phase.vti b/python/tests/reference/Result/6grains6x7x8_single_phase.vti new file mode 100644 index 000000000..f70023c71 --- /dev/null +++ b/python/tests/reference/Result/6grains6x7x8_single_phase.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAAARAAAAGQAAAA==eF7LyM/NT0/Ny6xKLMnMz1MwZAAAPsIGPQ== + + + + + + + + AQAAAACAAACACgAAwAAAAA==eF69lcsOwjAQA6GU//9lDsUSGjHyBgq+WGpm09jqY7sc2uA3uR43Gb+/YV/FfXd405S/P93ykmt8vPHRWX3+SpbDZHnj3O8snpqeN+L9TFd4lDmu05ljyn3bj/F5P2yfyNZbnilnc1MuOVZ5mzMu3vpsvbb1T5057Ltk/ZBvfVo/qzznGsdzTvvknO3D8zS+9fjvPlsu4/ifn87bf7DNNf7sPlf59rxYbuPircdp/6s81Z5navoeRav9PACxsANv + + + + + diff --git a/python/tests/reference/Result/6grains6x7x8_single_phase.vtr b/python/tests/reference/Result/6grains6x7x8_single_phase.vtr deleted file mode 100644 index 9a7b7dd7d..000000000 --- a/python/tests/reference/Result/6grains6x7x8_single_phase.vtr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - AQAAAACAAAARAAAAGQAAAA==eF7LyM/NT0/Ny6xKLMnMz1MwZAAAPsIGPQ== - - - - - - - - AQAAAACAAACACgAAwAAAAA==eF69lcsOwjAQA6GU//9lDsUSGjHyBgq+WGpm09jqY7sc2uA3uR43Gb+/YV/FfXd405S/P93ykmt8vPHRWX3+SpbDZHnj3O8snpqeN+L9TFd4lDmu05ljyn3bj/F5P2yfyNZbnilnc1MuOVZ5mzMu3vpsvbb1T5057Ltk/ZBvfVo/qzznGsdzTvvknO3D8zS+9fjvPlsu4/ifn87bf7DNNf7sPlf59rxYbuPircdp/6s81Z5navoeRav9PACxsANv - - - - - AQAAAACAAAA4AAAAHAAAAA==eF5jYEAGB+wh9AUofQNKP4DST6D0C3sAisIGjw== - - - AQAAAACAAABAAAAAHwAAAA==eF5jYEAGB+wh9AUofQNKP4DST6D0Cyj9xh4AwVEHug== - - - AQAAAACAAABIAAAAIgAAAA==eF5jYEAGB+wh9AUofQNKP4DST6D0Cyj9Bkp/sAcAAU8I6Q== - - - - - diff --git a/python/tests/reference/Result/save_VTK/test_vtk[0-0-0].md5 b/python/tests/reference/Result/save_VTK/test_vtk[0-0-0].md5 index 2d6393540..82a898878 100644 --- a/python/tests/reference/Result/save_VTK/test_vtk[0-0-0].md5 +++ b/python/tests/reference/Result/save_VTK/test_vtk[0-0-0].md5 @@ -1 +1 @@ -0f68c932b85aac1d30e03e05a16c4605 \ No newline at end of file +6d4da1188f1de0a80142692e9e135aed \ No newline at end of file diff --git a/python/tests/reference/Result/save_VTK/test_vtk[0-0-1].md5 b/python/tests/reference/Result/save_VTK/test_vtk[0-0-1].md5 index 9ef213fd3..ac9fedf57 100644 --- a/python/tests/reference/Result/save_VTK/test_vtk[0-0-1].md5 +++ b/python/tests/reference/Result/save_VTK/test_vtk[0-0-1].md5 @@ -1 +1 @@ -b206ef9e7a096586c7d71d58fc7278bd \ No newline at end of file +5926c1f393871ee942750069545798a7 \ No newline at end of file diff --git a/python/tests/reference/Result/save_VTK/test_vtk[0-0-2].md5 b/python/tests/reference/Result/save_VTK/test_vtk[0-0-2].md5 index d1f08336d..729d60a8d 100644 --- a/python/tests/reference/Result/save_VTK/test_vtk[0-0-2].md5 +++ b/python/tests/reference/Result/save_VTK/test_vtk[0-0-2].md5 @@ -1 +1 @@ -11bd422f0a6c78ee1d3c939b1fccf1ee \ No newline at end of file +743c9a868d54b78ee0648613249a0bdc \ No newline at end of file diff --git a/python/tests/reference/Result/save_VTK/test_vtk[1-0-0].md5 b/python/tests/reference/Result/save_VTK/test_vtk[1-0-0].md5 index 2f7077569..f6323d47a 100644 --- a/python/tests/reference/Result/save_VTK/test_vtk[1-0-0].md5 +++ b/python/tests/reference/Result/save_VTK/test_vtk[1-0-0].md5 @@ -1 +1 @@ -541f423cfde8e2a98582491f7af3add5 \ No newline at end of file +09f5a7a6dd7a8e7d30e47aec07f7f616 \ No newline at end of file diff --git a/python/tests/reference/Result/save_VTK/test_vtk[1-0-1].md5 b/python/tests/reference/Result/save_VTK/test_vtk[1-0-1].md5 index e1c35f93d..2caab25b9 100644 --- a/python/tests/reference/Result/save_VTK/test_vtk[1-0-1].md5 +++ b/python/tests/reference/Result/save_VTK/test_vtk[1-0-1].md5 @@ -1 +1 @@ -82e309984cab644fd94f433d5ec24133 \ No newline at end of file +5715cfc5fc21c6d04590354f0941cf7b \ No newline at end of file diff --git a/python/tests/reference/Result/save_VTK/test_vtk[1-0-2].md5 b/python/tests/reference/Result/save_VTK/test_vtk[1-0-2].md5 index c9125e234..63eb41211 100644 --- a/python/tests/reference/Result/save_VTK/test_vtk[1-0-2].md5 +++ b/python/tests/reference/Result/save_VTK/test_vtk[1-0-2].md5 @@ -1 +1 @@ -f1f85bcdba23e3e4001512c1c6c4707a \ No newline at end of file +2f7b43ea8fe65173f47acb8281f0a919 \ No newline at end of file diff --git a/python/tests/test_Grid.py b/python/tests/test_Grid.py index 9d82bde78..83f00f197 100644 --- a/python/tests/test_Grid.py +++ b/python/tests/test_Grid.py @@ -1,6 +1,5 @@ import pytest import numpy as np -from vtk.util.numpy_support import numpy_to_vtk as np_to_vtk from damask import VTK from damask import Grid @@ -50,22 +49,14 @@ class TestGrid: def test_read_write_vtr(self,default,tmp_path): default.save(tmp_path/'default') - new = Grid.load(tmp_path/'default.vtr') + new = Grid.load(tmp_path/'default.vti') assert grid_equal(new,default) def test_invalid_no_material(self,tmp_path): - v = VTK.from_rectilinear_grid(np.random.randint(5,10,3)*2,np.random.random(3) + 1.0) - v.save(tmp_path/'no_materialpoint.vtr',parallel=False) + v = VTK.from_image_data(np.random.randint(5,10,3)*2,np.random.random(3) + 1.0) + v.save(tmp_path/'no_materialpoint.vti',parallel=False) with pytest.raises(ValueError): - Grid.load(tmp_path/'no_materialpoint.vtr') - - def test_invalid_spacing(self,tmp_path,default): - default.save(tmp_path/'spacing_ok.vtr') - vtk = VTK.load(tmp_path/'spacing_ok.vtr') - vtk.vtk_data.SetXCoordinates(np_to_vtk(np.sort(np.random.random(default.cells[0])))) - vtk.save(tmp_path/'invalid_spacing.vtr',parallel=False) - with pytest.raises(ValueError): - Grid.load(tmp_path/'invalid_spacing.vtr') + Grid.load(tmp_path/'no_materialpoint.vti') def test_invalid_material_type(self): with pytest.raises(TypeError): @@ -115,7 +106,7 @@ class TestGrid: def test_mirror(self,default,update,ref_path,directions,reflect): modified = default.mirror(directions,reflect) tag = f'directions_{"-".join(directions)}+reflect_{reflect}' - reference = ref_path/f'mirror_{tag}.vtr' + reference = ref_path/f'mirror_{tag}.vti' if update: modified.save(reference) assert grid_equal(Grid.load(reference), modified) @@ -137,7 +128,7 @@ class TestGrid: def test_flip(self,default,update,ref_path,directions): modified = default.flip(directions) tag = f'directions_{"-".join(directions)}' - reference = ref_path/f'flip_{tag}.vtr' + reference = ref_path/f'flip_{tag}.vti' if update: modified.save(reference) assert grid_equal(Grid.load(reference), modified) @@ -163,7 +154,7 @@ class TestGrid: @pytest.mark.parametrize('periodic',[True,False]) def test_clean(self,default,update,ref_path,stencil,selection,periodic): current = default.clean(stencil,selection,periodic) - reference = ref_path/f'clean_{stencil}_{"+".join(map(str,[None] if selection is None else selection))}_{periodic}' + reference = ref_path/f'clean_{stencil}_{"+".join(map(str,[None] if selection is None else selection))}_{periodic}.vti' if update and stencil > 1: current.save(reference) assert grid_equal(Grid.load(reference) if stencil > 1 else default, @@ -183,7 +174,7 @@ class TestGrid: def test_scale(self,default,update,ref_path,cells): modified = default.scale(cells) tag = f'grid_{util.srepr(cells,"-")}' - reference = ref_path/f'scale_{tag}.vtr' + reference = ref_path/f'scale_{tag}.vti' if update: modified.save(reference) assert grid_equal(Grid.load(reference), modified) @@ -239,7 +230,7 @@ class TestGrid: def test_rotate(self,default,update,ref_path,Eulers): modified = default.rotate(Rotation.from_Euler_angles(Eulers,degrees=True)) tag = f'Eulers_{util.srepr(Eulers,"-")}' - reference = ref_path/f'rotate_{tag}.vtr' + reference = ref_path/f'rotate_{tag}.vti' if update: modified.save(reference) assert grid_equal(Grid.load(reference), modified) @@ -420,7 +411,7 @@ class TestGrid: @pytest.mark.parametrize('periodic',[True,False]) @pytest.mark.parametrize('direction',['x','y','z',['x','y'],'zy','xz',['x','y','z']]) def test_get_grain_boundaries(self,update,ref_path,periodic,direction): - grid = Grid.load(ref_path/'get_grain_boundaries_8g12x15x20.vtr') + grid = Grid.load(ref_path/'get_grain_boundaries_8g12x15x20.vti') current = grid.get_grain_boundaries(periodic,direction) if update: current.save(ref_path/f'get_grain_boundaries_8g12x15x20_{direction}_{periodic}.vtu',parallel=False) @@ -443,8 +434,8 @@ class TestGrid: def test_load_DREAM3D_reference(self,ref_path,update): current = Grid.load_DREAM3D(ref_path/'measured.dream3d') - reference = Grid.load(ref_path/'measured') + reference = Grid.load(ref_path/'measured.vti') if update: - current.save(ref_path/'measured.vtr') + current.save(ref_path/'measured.vti') assert grid_equal(current,reference) diff --git a/python/tests/test_Result.py b/python/tests/test_Result.py index 7fb2b6a2e..d7f1bc3d1 100644 --- a/python/tests/test_Result.py +++ b/python/tests/test_Result.py @@ -369,7 +369,7 @@ class TestResult: result = Result(ref_path/fname).view('increments',inc) os.chdir(tmp_path) result.save_VTK(output) - fname = fname.split('.')[0]+f'_inc{(inc if type(inc) == int else inc[0]):0>2}.vtr' + fname = fname.split('.')[0]+f'_inc{(inc if type(inc) == int else inc[0]):0>2}.vti' last = '' for i in range(10): if os.path.isfile(tmp_path/fname): diff --git a/src/IO.f90 b/src/IO.f90 index 8f94a40c7..3fbeb4300 100644 --- a/src/IO.f90 +++ b/src/IO.f90 @@ -521,7 +521,7 @@ subroutine IO_error(error_ID,el,ip,g,instance,ext_msg) case (839) msg = 'non-positive restart frequency in grid load case' case (844) - msg = 'invalid VTR file' + msg = 'invalid VTI file' case (891) msg = 'unknown solver type selected' case (892) diff --git a/src/grid/discretization_grid.f90 b/src/grid/discretization_grid.f90 index ad614d8c5..3fa6205ea 100644 --- a/src/grid/discretization_grid.f90 +++ b/src/grid/discretization_grid.f90 @@ -69,7 +69,7 @@ subroutine discretization_grid_init(restart) print'(/,a)', ' <<<+- discretization_grid init -+>>>'; flush(IO_STDOUT) if(worldrank == 0) then - call readVTR(grid,geomSize,origin,materialAt_global) + call readVTI(grid,geomSize,origin,materialAt_global) else allocate(materialAt_global(0)) ! needed for IntelMPI endif @@ -151,10 +151,10 @@ end subroutine discretization_grid_init !-------------------------------------------------------------------------------------------------- -!> @brief Parse vtk rectilinear grid (.vtr) +!> @brief Parse vtk image data (.vti) !> @details https://vtk.org/Wiki/VTK_XML_Formats !-------------------------------------------------------------------------------------------------- -subroutine readVTR(grid,geomSize,origin,material) +subroutine readVTI(grid,geomSize,origin,material) integer, dimension(3), intent(out) :: & grid ! grid (across all processes!) @@ -164,7 +164,7 @@ subroutine readVTR(grid,geomSize,origin,material) integer, dimension(:), intent(out), allocatable :: & material - character(len=:), allocatable :: fileContent, dataType, headerType + character(len=:), allocatable :: fileContent, dataType, headerType, temp logical :: inFile,inGrid,gotCoordinates,gotCellData,compressed integer :: fileUnit, myStat, coord integer(pI64) :: & @@ -205,8 +205,12 @@ subroutine readVTR(grid,geomSize,origin,material) compressed = getXMLValue(fileContent(startPos:endPos),'compressor') == 'vtkZLibDataCompressor' endif else - if(.not. inGrid) then - if(index(fileContent(startPos:endPos),'',kind=pI64) /= 0_pI64) then gotCellData = .true. @@ -215,7 +219,7 @@ subroutine readVTR(grid,geomSize,origin,material) getXMLValue(fileContent(startPos:endPos),'Name') == 'material' ) then if(getXMLValue(fileContent(startPos:endPos),'format') /= 'binary') & - call IO_error(error_ID = 844, ext_msg='format (materialpoint)') + call IO_error(error_ID = 844, ext_msg='format (material)') dataType = getXMLValue(fileContent(startPos:endPos),'type') startPos = endPos + 2_pI64 @@ -227,30 +231,6 @@ subroutine readVTR(grid,geomSize,origin,material) startPos = endPos + 2_pI64 endPos = startPos + index(fileContent(startPos:),IO_EOL,kind=pI64) - 2_pI64 enddo - elseif(index(fileContent(startPos:endPos),'',kind=pI64) /= 0_pI64) then - gotCoordinates = .true. - startPos = endPos + 2_pI64 - - coord = 0 - do while (startPos',kind=pI64) /= 0_pI64) exit - startPos = endPos + 2_pI64 - enddo endif endif endif @@ -259,11 +239,12 @@ subroutine readVTR(grid,geomSize,origin,material) startPos = endPos + 2_pI64 end do - material = material + 1 + if(.not. allocated(material)) call IO_error(error_ID = 844, ext_msg='material data not found') if(size(material) /= product(grid)) call IO_error(error_ID = 844, ext_msg='size(material)') if(any(geomSize<=0)) call IO_error(error_ID = 844, ext_msg='size') if(any(grid<1)) call IO_error(error_ID = 844, ext_msg='grid') + material = material + 1 if(any(material<0)) call IO_error(error_ID = 844, ext_msg='material ID < 0') contains @@ -271,25 +252,28 @@ subroutine readVTR(grid,geomSize,origin,material) !------------------------------------------------------------------------------------------------ !> @brief determine size and origin from coordinates !------------------------------------------------------------------------------------------------ - subroutine gridSizeOrigin(base64_str,headerType,compressed,dataType,direction) + subroutine cellsSizeOrigin(header) - character(len=*), intent(in) :: base64_str, & ! base64 encoded string of 1D coordinates - headerType, & ! header type (UInt32 or Uint64) - dataType ! data type (Int32, Int64, Float32, Float64) - logical, intent(in) :: compressed ! indicate whether data is zlib compressed - integer, intent(in) :: direction ! direction (1=x,2=y,3=z) + character(len=*), intent(in) :: header - real(pReal), dimension(:), allocatable :: coords,delta + character(len=:), allocatable :: temp + real(pReal), dimension(:), allocatable :: coords,delta,origin + integer, dimension(:), allocatable :: stringPos + integer :: i - coords = as_pReal(base64_str,headerType,compressed,dataType) - delta = coords(2:) - coords(:size(coords)-1) - if(any(delta<0.0_pReal) .or. dNeq(maxval(delta),minval(delta),1.0e-8_pReal*maxval(abs(coords)))) & - call IO_error(error_ID = 844, ext_msg = 'grid spacing') + if (getXMLValue(header,'Direction') /= '1 0 0 0 1 0 0 0 1') & + call IO_error(error_ID = 844, ext_msg = 'coordinate order') - grid(direction) = size(coords)-1 - origin(direction) = coords(1) - geomSize(direction) = coords(size(coords)) - coords(1) + temp = getXMLValue(header,'Origin') + origin = [(IO_floatValue(temp,IO_stringPos(temp),i),i=1,3)] + temp = getXMLValue(header,'Spacing') + delta = [(IO_floatValue(temp,IO_stringPos(temp),i),i=1,3)] + temp = getXMLValue(header,'WholeExtent') + grid = [(IO_floatValue(temp,IO_stringPos(temp),i),i=2,6,2)] + + + geomSize = delta * real(grid,pReal) end subroutine @@ -494,14 +478,14 @@ subroutine readVTR(grid,geomSize,origin,material) character(len=*),intent(in) :: line logical :: fileFormatOk - fileFormatOk = getXMLValue(line,'type') == 'RectilinearGrid' .and. & + fileFormatOk = getXMLValue(line,'type') == 'ImageData' .and. & getXMLValue(line,'byte_order') == 'LittleEndian' .and. & getXMLValue(line,'compressor') /= 'vtkLZ4DataCompressor' .and. & getXMLValue(line,'compressor') /= 'vtkLZMADataCompressor' end function fileFormatOk -end subroutine readVTR +end subroutine readVTI !--------------------------------------------------------------------------------------------------- From 1bfbd30ae2b7a27f55856feec1b61f30838e57d2 Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Tue, 15 Jun 2021 19:38:01 +0200 Subject: [PATCH 2/7] polishing --- .gitlab-ci.yml | 7 +++-- python/damask/_grid.py | 10 +++--- python/damask/_vtk.py | 8 ++--- src/grid/discretization_grid.f90 | 54 +++++++++++++++++--------------- 4 files changed, 41 insertions(+), 38 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8c3a3b622..b17fe1d27 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,6 +3,7 @@ stages: - prepare - python - compile + - setup - fortran - performance - deploy @@ -161,8 +162,10 @@ compile_Marc: - master - release + +################################################################################################### setup_grid: - stage: compile + stage: setup script: - module load $IntelCompiler $MPI_Intel $PETSc_Intel - BUILD_DIR=$(mktemp -d) @@ -174,7 +177,7 @@ setup_grid: - release setup_mesh: - stage: compile + stage: setup script: - module load $IntelCompiler $MPI_Intel $PETSc_Intel - BUILD_DIR=$(mktemp -d) diff --git a/python/damask/_grid.py b/python/damask/_grid.py index 36fa6411b..c984dd000 100644 --- a/python/damask/_grid.py +++ b/python/damask/_grid.py @@ -1,8 +1,8 @@ +import os import copy +import warnings import multiprocessing as mp from functools import partial -import os -import warnings import numpy as np import pandas as pd @@ -20,7 +20,7 @@ class Grid: Geometry definition for grid solvers. Create and manipulate geometry definitions for storage as VTK - image data files ('.vit' extension). A grid contains the + image data files ('.vti' extension). A grid contains the material ID (referring to the entry in 'material.yaml') and the physical size. """ @@ -166,9 +166,7 @@ class Grid: Grid-based geometry from file. """ - if str(fname).endswith('.vtr'): - warnings.warn('Support for vtr files will be removed in DAMASK 3.1.0', DeprecationWarning,2) - v = VTK.load(fname) + v = VTK.load(fname if str(fname).endswith('.vti') else str(fname)+'.vti') comments = v.get_comments() cells = np.array(v.vtk_data.GetDimensions())-1 bbox = np.array(v.vtk_data.GetBounds()).reshape(3,2).T diff --git a/python/damask/_vtk.py b/python/damask/_vtk.py index b525ef35e..7761b7758 100644 --- a/python/damask/_vtk.py +++ b/python/damask/_vtk.py @@ -1,4 +1,5 @@ import os +import warnings import multiprocessing as mp from pathlib import Path @@ -69,8 +70,6 @@ class VTK: """ Create VTK of type vtk.vtkRectilinearGrid. - This is the common type for grid solver results. - Parameters ---------- grid : iterable of int, len (3) @@ -86,6 +85,7 @@ class VTK: VTK-based geometry without nodal or cell data. """ + warnings.warn('Support for vtr files will be removed in DAMASK 3.1.0', DeprecationWarning,2) vtk_data = vtk.vtkRectilinearGrid() vtk_data.SetDimensions(*(np.array(grid)+1)) coord = [np_to_vtk(np.linspace(origin[i],origin[i]+size[i],grid[i]+1),deep=True) for i in [0,1,2]] @@ -179,8 +179,8 @@ class VTK: Parameters ---------- fname : str or pathlib.Path - Filename for reading. Valid extensions are .vtr, .vtu, .vtp, and .vtk. - dataset_type : {'vtkRectilinearGrid', 'vtkUnstructuredGrid', 'vtkPolyData'}, optional + Filename for reading. Valid extensions are .vti, .vtr, .vtu, .vtp, and .vtk. + dataset_type : {'vtkImageData', ''vtkRectilinearGrid', 'vtkUnstructuredGrid', 'vtkPolyData'}, optional Name of the vtk.vtkDataSet subclass when opening a .vtk file. Returns diff --git a/src/grid/discretization_grid.f90 b/src/grid/discretization_grid.f90 index 3fa6205ea..ff985eb6a 100644 --- a/src/grid/discretization_grid.f90 +++ b/src/grid/discretization_grid.f90 @@ -164,9 +164,9 @@ subroutine readVTI(grid,geomSize,origin,material) integer, dimension(:), intent(out), allocatable :: & material - character(len=:), allocatable :: fileContent, dataType, headerType, temp - logical :: inFile,inGrid,gotCoordinates,gotCellData,compressed - integer :: fileUnit, myStat, coord + character(len=:), allocatable :: fileContent, dataType, headerType + logical :: inFile,inImage,gotCellData,compressed + integer :: fileUnit, myStat integer(pI64) :: & fileLength, & !< length of the geom file (in characters) startPos, endPos, & @@ -186,39 +186,37 @@ subroutine readVTI(grid,geomSize,origin,material) close(fileUnit) inFile = .false. - inGrid = .false. - gotCoordinates = .false. + inImage = .false. gotCelldata = .false. !-------------------------------------------------------------------------------------------------- -! interpret XML file +! parse XML file startPos = 1_pI64 do while (startPos < len(fileContent,kind=pI64)) endPos = startPos + index(fileContent(startPos:),IO_EOL,kind=pI64) - 2_pI64 if (endPos < startPos) endPos = len(fileContent,kind=pI64) ! end of file without new line - if(.not. inFile) then + if (.not. inFile) then if(index(fileContent(startPos:endPos),'',kind=pI64) /= 0_pI64) then + if (index(fileContent(startPos:endPos),'',kind=pI64) /= 0_pI64) then gotCellData = .true. do while (index(fileContent(startPos:endPos),'',kind=pI64) == 0_pI64) - if(index(fileContent(startPos:endPos),' @brief determine size and origin from coordinates !------------------------------------------------------------------------------------------------ - subroutine cellsSizeOrigin(header) + subroutine cellsSizeOrigin(c,s,o,header) - character(len=*), intent(in) :: header + integer, dimension(3), intent(out) :: c + real(pReal), dimension(3), intent(out) :: s,o + character(len=*), intent(in) :: header character(len=:), allocatable :: temp - real(pReal), dimension(:), allocatable :: coords,delta,origin + real(pReal), dimension(:), allocatable :: delta integer, dimension(:), allocatable :: stringPos integer :: i @@ -265,15 +265,17 @@ subroutine readVTI(grid,geomSize,origin,material) if (getXMLValue(header,'Direction') /= '1 0 0 0 1 0 0 0 1') & call IO_error(error_ID = 844, ext_msg = 'coordinate order') - temp = getXMLValue(header,'Origin') - origin = [(IO_floatValue(temp,IO_stringPos(temp),i),i=1,3)] + temp = getXMLValue(header,'WholeExtent') + if (any([(IO_floatValue(temp,IO_stringPos(temp),i),i=1,5,2)] /= 0)) & + call IO_error(error_ID = 844, ext_msg = 'coordinate start') + c = [(IO_floatValue(temp,IO_stringPos(temp),i),i=2,6,2)] + temp = getXMLValue(header,'Spacing') delta = [(IO_floatValue(temp,IO_stringPos(temp),i),i=1,3)] - temp = getXMLValue(header,'WholeExtent') - grid = [(IO_floatValue(temp,IO_stringPos(temp),i),i=2,6,2)] + s = delta * real(c,pReal) - - geomSize = delta * real(grid,pReal) + temp = getXMLValue(header,'Origin') + o = [(IO_floatValue(temp,IO_stringPos(temp),i),i=1,3)] end subroutine From 01a32ea236dca254c55fc3bcc42f0563bc2fa3f6 Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Tue, 15 Jun 2021 21:23:10 +0200 Subject: [PATCH 3/7] import from Neper --- python/damask/_grid.py | 24 ++++++++++++++++++++++++ python/damask/_vtk.py | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/python/damask/_grid.py b/python/damask/_grid.py index c984dd000..bc9d0f78c 100644 --- a/python/damask/_grid.py +++ b/python/damask/_grid.py @@ -249,6 +249,30 @@ class Grid: return Grid(material.reshape(cells,order='F'),size,origin,comments) + @staticmethod + def load_Neper(fname): + """ + Load from Neper VTK file. + + Parameters + ---------- + fname : str, pathlib.Path, or file handle + Geometry file to read. + + Returns + ------- + loaded : damask.Grid + Grid-based geometry from file. + + """ + v = VTK.load(fname,'vtkImageData') + cells = np.array(v.vtk_data.GetDimensions())-1 + bbox = np.array(v.vtk_data.GetBounds()).reshape(3,2).T + + return Grid(v.get('MaterialId').reshape(cells,order='F') - 1, bbox[1] - bbox[0], bbox[0], + util.execution_stamp('Grid','load_Neper')) + + @staticmethod def load_DREAM3D(fname, feature_IDs=None,cell_data=None, diff --git a/python/damask/_vtk.py b/python/damask/_vtk.py index 7761b7758..7ca794f70 100644 --- a/python/damask/_vtk.py +++ b/python/damask/_vtk.py @@ -199,7 +199,7 @@ class VTK: raise TypeError('Dataset type for *.vtk file not given.') elif dataset_type.lower().endswith(('imagedata','image_data')): reader.Update() - vtk_data = reader.GetImageDataOutput() + vtk_data = reader.GetStructuredPointsOutput() elif dataset_type.lower().endswith(('rectilineargrid','rectilinear_grid')): reader.Update() vtk_data = reader.GetRectilinearGridOutput() From 9f40f9ee449d17082652eeabf017a1636d0fc6f1 Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Tue, 15 Jun 2021 22:29:40 +0200 Subject: [PATCH 4/7] fixed tests --- PRIVATE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PRIVATE b/PRIVATE index 31d65b01e..4fe3bd171 160000 --- a/PRIVATE +++ b/PRIVATE @@ -1 +1 @@ -Subproject commit 31d65b01e2b775b790d43ff78fd87a2d481f89c6 +Subproject commit 4fe3bd171d23aa12f5150169389b3de90f20344f From 9b1f5c77838657ebde9ad3c274a32a75afe062e1 Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Tue, 15 Jun 2021 23:19:08 +0200 Subject: [PATCH 5/7] testing new functionality for Neper / vti --- .../tests/reference/Grid/n10-id1_scaled.vti | 19 ++++++++++++++++++ .../tests/reference/Grid/n10-id1_scaled.vtk | Bin 0 -> 1110 bytes python/tests/test_Grid.py | 8 ++++++++ 3 files changed, 27 insertions(+) create mode 100644 python/tests/reference/Grid/n10-id1_scaled.vti create mode 100644 python/tests/reference/Grid/n10-id1_scaled.vtk diff --git a/python/tests/reference/Grid/n10-id1_scaled.vti b/python/tests/reference/Grid/n10-id1_scaled.vti new file mode 100644 index 000000000..708a1167c --- /dev/null +++ b/python/tests/reference/Grid/n10-id1_scaled.vti @@ -0,0 +1,19 @@ + + + + + + AQAAAACAAABPAAAAVgAAAA==eF4FwW0KgCAMANCO4s8iJnNLIS/Qv64Qo9kHGYlB5+89lVvey071VJsf0WVOJVXzsUWLILkcwkAUYCfdfJCwDqYlJAcYwHlDHB1FHnskxK75AdGCFTk= + + + + + + + + AQAAAACAAABIAwAAhgAAAA==eF6NkgEKwCAMAzvd1P7/w2OQsBAqKASWA3vgOiLikgyE/UHWAZtgN76ZtmFN7nvnTHcsySXOhftTGGeGOfU4y/jnpWQVXB0V+87Oy3fmSXT3ZsHo6EjFOro6IvZeJoXdiLrJetEZzvKuu/VY173izIp98/iPnbljt8+nXnXo/lbsBSdGA8o= + + + + + diff --git a/python/tests/reference/Grid/n10-id1_scaled.vtk b/python/tests/reference/Grid/n10-id1_scaled.vtk new file mode 100644 index 0000000000000000000000000000000000000000..bced8991e4b25d5e6d10da6bec2e149d30597845 GIT binary patch literal 1110 zcmaKpUu(iJ6vf^DEuSK=cTuO)*VuLvtgSS4uqP?lL76ykb)SDZ+A~6l22OA8ulL@Q zHqY|6{*qx)7jMVRs}JMP2Tz;vl9vQQ3zGRjy2wOOt1-AYWxsxL&3@ z$&Cp0B1()-6C>?B$`Is^RoNPPG~S3Fl)^ks-Q_ z{XTZdm;agPKtGr}-<`=lB5L4!+sMc84mFrb55#l67e4erZ2SH*@dx%RMrr^6 literal 0 HcmV?d00001 diff --git a/python/tests/test_Grid.py b/python/tests/test_Grid.py index 83f00f197..36d489939 100644 --- a/python/tests/test_Grid.py +++ b/python/tests/test_Grid.py @@ -439,3 +439,11 @@ class TestGrid: current.save(ref_path/'measured.vti') assert grid_equal(current,reference) + + def test_load_Neper_reference(self,ref_path,update): + current = Grid.load_Neper(ref_path/'n10-id1_scaled.vtk') + reference = Grid.load(ref_path/'n10-id1_scaled.vti') + if update: + current.save(ref_path/'n10-id1_scaled.vti') + + assert grid_equal(current,reference) From f080136751456c67e28b7d67e8ba00943d7d072f Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Wed, 16 Jun 2021 10:43:50 +0200 Subject: [PATCH 6/7] fixed test --- PRIVATE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PRIVATE b/PRIVATE index 4fe3bd171..73f69c191 160000 --- a/PRIVATE +++ b/PRIVATE @@ -1 +1 @@ -Subproject commit 4fe3bd171d23aa12f5150169389b3de90f20344f +Subproject commit 73f69c191ab7910d938b98daae0925f636b9cb57 From f19dc272469a6d4ec1bdb58de8fa989f68448a0e Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Wed, 16 Jun 2021 14:35:54 +0200 Subject: [PATCH 7/7] transition compatibility --- python/damask/_grid.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/damask/_grid.py b/python/damask/_grid.py index bc9d0f78c..fbb40d0ae 100644 --- a/python/damask/_grid.py +++ b/python/damask/_grid.py @@ -166,7 +166,7 @@ class Grid: Grid-based geometry from file. """ - v = VTK.load(fname if str(fname).endswith('.vti') else str(fname)+'.vti') + v = VTK.load(fname if str(fname).endswith(('.vti','.vtr')) else str(fname)+'.vti') # compatibility hack comments = v.get_comments() cells = np.array(v.vtk_data.GetDimensions())-1 bbox = np.array(v.vtk_data.GetBounds()).reshape(3,2).T