From bde8fd9eb89de1d4b0ddf7a8e0a105bd91fd6605 Mon Sep 17 00:00:00 2001
From: Lawrence Mitchell <lawrence@wence.uk>
Date: Fri, 16 Nov 2018 09:47:29 +0000
Subject: [PATCH] plex: Add test that provoked memory error in refinement

---
 src/dm/impls/plex/examples/tests/barydm.h5 | Bin 0 -> 62936 bytes
 src/dm/impls/plex/examples/tests/ex28.c    |  38 +++++++++++++++++++++
 2 files changed, 38 insertions(+)
 create mode 100644 src/dm/impls/plex/examples/tests/barydm.h5
 create mode 100644 src/dm/impls/plex/examples/tests/ex28.c

diff --git a/src/dm/impls/plex/examples/tests/barydm.h5 b/src/dm/impls/plex/examples/tests/barydm.h5
new file mode 100644
index 0000000000000000000000000000000000000000..08bbdafa49c4ebf0330ebeeefaf2f30eadea6725
GIT binary patch
literal 62936
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
A>;M1&

literal 0
HcmV?d00001

diff --git a/src/dm/impls/plex/examples/tests/ex28.c b/src/dm/impls/plex/examples/tests/ex28.c
new file mode 100644
index 0000000000..3638861eb4
--- /dev/null
+++ b/src/dm/impls/plex/examples/tests/ex28.c
@@ -0,0 +1,38 @@
+const char help[] = "Test memory allocation in DMPlex refinement.\n\n";
+
+#include <petsc.h>
+
+int main(int argc, char **argv)
+{
+  PetscErrorCode ierr;
+  DM             dm, rdm;
+  PetscViewer    vwr;
+  MPI_Comm       comm;
+
+  ierr = PetscInitialize(&argc, &argv, NULL, help);
+  if (ierr) return ierr;
+  comm = PETSC_COMM_WORLD;
+  ierr = PetscViewerCreate(comm, &vwr);CHKERRQ(ierr);
+  ierr = PetscViewerSetType(vwr, PETSCVIEWERHDF5);CHKERRQ(ierr);
+  ierr = PetscViewerFileSetMode(vwr, FILE_MODE_READ);CHKERRQ(ierr);
+  ierr = PetscViewerFileSetName(vwr, "barydm.h5");CHKERRQ(ierr);
+  ierr = DMCreate(comm, &dm);CHKERRQ(ierr);
+  ierr = DMSetType(dm, DMPLEX);CHKERRQ(ierr);
+  ierr = DMLoad(dm, vwr);CHKERRQ(ierr);
+  ierr = PetscViewerDestroy(&vwr);CHKERRQ(ierr);
+  ierr = DMViewFromOptions(dm, NULL, "-dm_view");CHKERRQ(ierr);
+  ierr = DMPlexSetRefinementUniform(dm, PETSC_TRUE);CHKERRQ(ierr);
+  ierr = DMRefine(dm, comm, &rdm);CHKERRQ(ierr);
+  ierr = DMDestroy(&dm);CHKERRQ(ierr);
+  ierr = DMViewFromOptions(rdm, NULL, "-refined_dm_view");CHKERRQ(ierr);
+  ierr = DMDestroy(&rdm);CHKERRQ(ierr);
+  ierr = PetscFinalize();
+  return ierr;
+}
+
+/*TEST
+
+  test:
+    args: -dm_view ascii::ASCII_INFO_DETAIL -refined_dm_view ascii::ASCII_INFO_DETAIL
+
+TEST*/
-- 
2.19.1

