From 21b198979336d32b2cea3e6705f3e8f4be249edd Mon Sep 17 00:00:00 2001
From: Bert Vandenbroucke <bert.vandenbroucke@gmail.com>
Date: Wed, 27 Nov 2019 10:32:23 +0000
Subject: [PATCH] Refactoring GIZMO schemes to avoid code duplication, step 1:
 moved MFM and MFV to subdirectories of new Gizmo directory, made common
 version of hydro_*.h included from rest of code that (for now) simply calls
 the right version.

---
 src/Makefile.am                               | 50 ++++++++++---------
 src/debug.c                                   |  6 +--
 src/hydro.h                                   | 11 ++--
 src/hydro/{GizmoMFM => Gizmo/MFM}/hydro.h     |  0
 .../{GizmoMFM => Gizmo/MFM}/hydro_debug.h     |  0
 .../{GizmoMFM => Gizmo/MFM}/hydro_gradients.h |  0
 .../MFM}/hydro_gradients_gizmo.h              |  0
 .../MFM}/hydro_gradients_sph.h                |  0
 .../{GizmoMFM => Gizmo/MFM}/hydro_iact.h      |  0
 src/hydro/{GizmoMFM => Gizmo/MFM}/hydro_io.h  |  0
 .../MFM}/hydro_parameters.h                   |  0
 .../{GizmoMFM => Gizmo/MFM}/hydro_part.h      |  0
 .../MFM}/hydro_slope_limiters.h               |  0
 .../MFM}/hydro_slope_limiters_cell.h          |  0
 .../MFM}/hydro_slope_limiters_face.h          |  0
 .../MFM}/hydro_unphysical.h                   |  0
 src/hydro/{GizmoMFV => Gizmo/MFV}/hydro.h     |  0
 .../{GizmoMFV => Gizmo/MFV}/hydro_debug.h     |  0
 .../{GizmoMFV => Gizmo/MFV}/hydro_gradients.h |  0
 .../MFV}/hydro_gradients_gizmo.h              |  0
 .../MFV}/hydro_gradients_sph.h                |  0
 .../{GizmoMFV => Gizmo/MFV}/hydro_iact.h      |  0
 src/hydro/{GizmoMFV => Gizmo/MFV}/hydro_io.h  |  0
 .../MFV}/hydro_parameters.h                   |  0
 .../{GizmoMFV => Gizmo/MFV}/hydro_part.h      |  0
 .../MFV}/hydro_slope_limiters.h               |  0
 .../MFV}/hydro_slope_limiters_cell.h          |  0
 .../MFV}/hydro_slope_limiters_face.h          |  0
 .../MFV}/hydro_unphysical.h                   |  0
 .../MFV}/hydro_velocities.h                   |  0
 src/hydro/Gizmo/hydro.h                       | 30 +++++++++++
 src/hydro/Gizmo/hydro_debug.h                 | 29 +++++++++++
 src/hydro/Gizmo/hydro_iact.h                  | 28 +++++++++++
 src/hydro/Gizmo/hydro_io.h                    | 29 +++++++++++
 src/hydro/Gizmo/hydro_parameters.h            | 35 +++++++++++++
 src/hydro/Gizmo/hydro_part.h                  | 29 +++++++++++
 src/hydro_io.h                                |  6 +--
 src/hydro_parameters.h                        |  6 +--
 src/part.h                                    |  8 +--
 39 files changed, 218 insertions(+), 49 deletions(-)
 rename src/hydro/{GizmoMFM => Gizmo/MFM}/hydro.h (100%)
 rename src/hydro/{GizmoMFM => Gizmo/MFM}/hydro_debug.h (100%)
 rename src/hydro/{GizmoMFM => Gizmo/MFM}/hydro_gradients.h (100%)
 rename src/hydro/{GizmoMFM => Gizmo/MFM}/hydro_gradients_gizmo.h (100%)
 rename src/hydro/{GizmoMFM => Gizmo/MFM}/hydro_gradients_sph.h (100%)
 rename src/hydro/{GizmoMFM => Gizmo/MFM}/hydro_iact.h (100%)
 rename src/hydro/{GizmoMFM => Gizmo/MFM}/hydro_io.h (100%)
 rename src/hydro/{GizmoMFM => Gizmo/MFM}/hydro_parameters.h (100%)
 rename src/hydro/{GizmoMFM => Gizmo/MFM}/hydro_part.h (100%)
 rename src/hydro/{GizmoMFM => Gizmo/MFM}/hydro_slope_limiters.h (100%)
 rename src/hydro/{GizmoMFM => Gizmo/MFM}/hydro_slope_limiters_cell.h (100%)
 rename src/hydro/{GizmoMFM => Gizmo/MFM}/hydro_slope_limiters_face.h (100%)
 rename src/hydro/{GizmoMFM => Gizmo/MFM}/hydro_unphysical.h (100%)
 rename src/hydro/{GizmoMFV => Gizmo/MFV}/hydro.h (100%)
 rename src/hydro/{GizmoMFV => Gizmo/MFV}/hydro_debug.h (100%)
 rename src/hydro/{GizmoMFV => Gizmo/MFV}/hydro_gradients.h (100%)
 rename src/hydro/{GizmoMFV => Gizmo/MFV}/hydro_gradients_gizmo.h (100%)
 rename src/hydro/{GizmoMFV => Gizmo/MFV}/hydro_gradients_sph.h (100%)
 rename src/hydro/{GizmoMFV => Gizmo/MFV}/hydro_iact.h (100%)
 rename src/hydro/{GizmoMFV => Gizmo/MFV}/hydro_io.h (100%)
 rename src/hydro/{GizmoMFV => Gizmo/MFV}/hydro_parameters.h (100%)
 rename src/hydro/{GizmoMFV => Gizmo/MFV}/hydro_part.h (100%)
 rename src/hydro/{GizmoMFV => Gizmo/MFV}/hydro_slope_limiters.h (100%)
 rename src/hydro/{GizmoMFV => Gizmo/MFV}/hydro_slope_limiters_cell.h (100%)
 rename src/hydro/{GizmoMFV => Gizmo/MFV}/hydro_slope_limiters_face.h (100%)
 rename src/hydro/{GizmoMFV => Gizmo/MFV}/hydro_unphysical.h (100%)
 rename src/hydro/{GizmoMFV => Gizmo/MFV}/hydro_velocities.h (100%)
 create mode 100644 src/hydro/Gizmo/hydro.h
 create mode 100644 src/hydro/Gizmo/hydro_debug.h
 create mode 100644 src/hydro/Gizmo/hydro_iact.h
 create mode 100644 src/hydro/Gizmo/hydro_io.h
 create mode 100644 src/hydro/Gizmo/hydro_parameters.h
 create mode 100644 src/hydro/Gizmo/hydro_part.h

diff --git a/src/Makefile.am b/src/Makefile.am
index b7b1e4ddec..eec459727b 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -133,29 +133,33 @@ nobase_noinst_HEADERS = align.h approx_math.h atomic.h barrier.h cycle.h error.h
 		 hydro/AnarchyDU/hydro.h hydro/PressureEnergy/hydro_iact.h hydro/PressureEnergy/hydro_io.h \
                  hydro/AnarchyDU/hydro_debug.h hydro/PressureEnergy/hydro_part.h \
 		 hydro/AnarchyDU/hydro_parameters.h \
-		 hydro/GizmoMFV/hydro.h hydro/GizmoMFV/hydro_iact.h \
-                 hydro/GizmoMFV/hydro_io.h hydro/GizmoMFV/hydro_debug.h \
-                 hydro/GizmoMFV/hydro_part.h \
-                 hydro/GizmoMFV/hydro_gradients_gizmo.h \
-                 hydro/GizmoMFV/hydro_gradients.h \
-                 hydro/GizmoMFV/hydro_gradients_sph.h \
-                 hydro/GizmoMFV/hydro_slope_limiters_cell.h \
-                 hydro/GizmoMFV/hydro_slope_limiters_face.h \
-                 hydro/GizmoMFV/hydro_slope_limiters.h \
-                 hydro/GizmoMFV/hydro_unphysical.h \
-                 hydro/GizmoMFV/hydro_velocities.h \
-		 hydro/GizmoMFV/hydro_parameters.h \
-		 hydro/GizmoMFM/hydro.h hydro/GizmoMFM/hydro_iact.h \
-                 hydro/GizmoMFM/hydro_io.h hydro/GizmoMFM/hydro_debug.h \
-                 hydro/GizmoMFM/hydro_part.h \
-                 hydro/GizmoMFM/hydro_gradients_gizmo.h \
-                 hydro/GizmoMFM/hydro_gradients.h \
-                 hydro/GizmoMFM/hydro_gradients_sph.h \
-                 hydro/GizmoMFM/hydro_slope_limiters_cell.h \
-                 hydro/GizmoMFM/hydro_slope_limiters_face.h \
-                 hydro/GizmoMFM/hydro_slope_limiters.h \
-                 hydro/GizmoMFM/hydro_unphysical.h \
-		 hydro/GizmoMFM/hydro_parameters.h \
+		 hydro/Gizmo/hydro_parameters.h \
+                 hydro/Gizmo/hydro_io.h hydro/Gizmo/hydro_debug.h \
+                 hydro/Gizmo/hydro.h hydro/Gizmo/hydro_iact.h \
+                 hydro/Gizmo/hydro_part.h \
+		 hydro/Gizmo/MFV/hydro.h hydro/Gizmo/MFV/hydro_iact.h \
+                 hydro/Gizmo/MFV/hydro_io.h hydro/Gizmo/MFV/hydro_debug.h \
+                 hydro/Gizmo/MFV/hydro_part.h \
+                 hydro/Gizmo/MFV/hydro_gradients_gizmo.h \
+                 hydro/Gizmo/MFV/hydro_gradients.h \
+                 hydro/Gizmo/MFV/hydro_gradients_sph.h \
+                 hydro/Gizmo/MFV/hydro_slope_limiters_cell.h \
+                 hydro/Gizmo/MFV/hydro_slope_limiters_face.h \
+                 hydro/Gizmo/MFV/hydro_slope_limiters.h \
+                 hydro/Gizmo/MFV/hydro_unphysical.h \
+                 hydro/Gizmo/MFV/hydro_velocities.h \
+		 hydro/Gizmo/MFV/hydro_parameters.h \
+		 hydro/Gizmo/MFM/hydro.h hydro/Gizmo/MFM/hydro_iact.h \
+                 hydro/Gizmo/MFM/hydro_io.h hydro/Gizmo/MFM/hydro_debug.h \
+                 hydro/Gizmo/MFM/hydro_part.h \
+                 hydro/Gizmo/MFM/hydro_gradients_gizmo.h \
+                 hydro/Gizmo/MFM/hydro_gradients.h \
+                 hydro/Gizmo/MFM/hydro_gradients_sph.h \
+                 hydro/Gizmo/MFM/hydro_slope_limiters_cell.h \
+                 hydro/Gizmo/MFM/hydro_slope_limiters_face.h \
+                 hydro/Gizmo/MFM/hydro_slope_limiters.h \
+                 hydro/Gizmo/MFM/hydro_unphysical.h \
+		 hydro/Gizmo/MFM/hydro_parameters.h \
                  hydro/Shadowswift/hydro_debug.h \
                  hydro/Shadowswift/hydro_gradients.h hydro/Shadowswift/hydro.h \
                  hydro/Shadowswift/hydro_iact.h \
diff --git a/src/debug.c b/src/debug.c
index 8e3c581163..1b3e9f834c 100644
--- a/src/debug.c
+++ b/src/debug.c
@@ -52,10 +52,8 @@
 #include "./hydro/PressureEnergyMorrisMonaghanAV/hydro_debug.h"
 #elif defined(DEFAULT_SPH)
 #include "./hydro/Default/hydro_debug.h"
-#elif defined(GIZMO_MFV_SPH)
-#include "./hydro/GizmoMFV/hydro_debug.h"
-#elif defined(GIZMO_MFM_SPH)
-#include "./hydro/GizmoMFM/hydro_debug.h"
+#elif defined(GIZMO_MFV_SPH) || defined(GIZMO_MFM_SPH)
+#include "./hydro/Gizmo/hydro_debug.h"
 #elif defined(SHADOWFAX_SPH)
 #include "./hydro/Shadowswift/hydro_debug.h"
 #elif defined(PLANETARY_SPH)
diff --git a/src/hydro.h b/src/hydro.h
index e5aedeb0c0..76160b8957 100644
--- a/src/hydro.h
+++ b/src/hydro.h
@@ -55,14 +55,9 @@
 #include "./hydro/Default/hydro.h"
 #include "./hydro/Default/hydro_iact.h"
 #define SPH_IMPLEMENTATION "Default version of SPH"
-#elif defined(GIZMO_MFV_SPH)
-#include "./hydro/GizmoMFV/hydro.h"
-#include "./hydro/GizmoMFV/hydro_iact.h"
-#define SPH_IMPLEMENTATION "GIZMO MFV (Hopkins 2015)"
-#elif defined(GIZMO_MFM_SPH)
-#include "./hydro/GizmoMFM/hydro.h"
-#include "./hydro/GizmoMFM/hydro_iact.h"
-#define SPH_IMPLEMENTATION "GIZMO MFM (Hopkins 2015)"
+#elif defined(GIZMO_MFV_SPH) || defined(GIZMO_MFM_SPH)
+#include "./hydro/Gizmo/hydro.h"
+#include "./hydro/Gizmo/hydro_iact.h"
 #elif defined(SHADOWFAX_SPH)
 #include "./hydro/Shadowswift/hydro.h"
 #include "./hydro/Shadowswift/hydro_iact.h"
diff --git a/src/hydro/GizmoMFM/hydro.h b/src/hydro/Gizmo/MFM/hydro.h
similarity index 100%
rename from src/hydro/GizmoMFM/hydro.h
rename to src/hydro/Gizmo/MFM/hydro.h
diff --git a/src/hydro/GizmoMFM/hydro_debug.h b/src/hydro/Gizmo/MFM/hydro_debug.h
similarity index 100%
rename from src/hydro/GizmoMFM/hydro_debug.h
rename to src/hydro/Gizmo/MFM/hydro_debug.h
diff --git a/src/hydro/GizmoMFM/hydro_gradients.h b/src/hydro/Gizmo/MFM/hydro_gradients.h
similarity index 100%
rename from src/hydro/GizmoMFM/hydro_gradients.h
rename to src/hydro/Gizmo/MFM/hydro_gradients.h
diff --git a/src/hydro/GizmoMFM/hydro_gradients_gizmo.h b/src/hydro/Gizmo/MFM/hydro_gradients_gizmo.h
similarity index 100%
rename from src/hydro/GizmoMFM/hydro_gradients_gizmo.h
rename to src/hydro/Gizmo/MFM/hydro_gradients_gizmo.h
diff --git a/src/hydro/GizmoMFM/hydro_gradients_sph.h b/src/hydro/Gizmo/MFM/hydro_gradients_sph.h
similarity index 100%
rename from src/hydro/GizmoMFM/hydro_gradients_sph.h
rename to src/hydro/Gizmo/MFM/hydro_gradients_sph.h
diff --git a/src/hydro/GizmoMFM/hydro_iact.h b/src/hydro/Gizmo/MFM/hydro_iact.h
similarity index 100%
rename from src/hydro/GizmoMFM/hydro_iact.h
rename to src/hydro/Gizmo/MFM/hydro_iact.h
diff --git a/src/hydro/GizmoMFM/hydro_io.h b/src/hydro/Gizmo/MFM/hydro_io.h
similarity index 100%
rename from src/hydro/GizmoMFM/hydro_io.h
rename to src/hydro/Gizmo/MFM/hydro_io.h
diff --git a/src/hydro/GizmoMFM/hydro_parameters.h b/src/hydro/Gizmo/MFM/hydro_parameters.h
similarity index 100%
rename from src/hydro/GizmoMFM/hydro_parameters.h
rename to src/hydro/Gizmo/MFM/hydro_parameters.h
diff --git a/src/hydro/GizmoMFM/hydro_part.h b/src/hydro/Gizmo/MFM/hydro_part.h
similarity index 100%
rename from src/hydro/GizmoMFM/hydro_part.h
rename to src/hydro/Gizmo/MFM/hydro_part.h
diff --git a/src/hydro/GizmoMFM/hydro_slope_limiters.h b/src/hydro/Gizmo/MFM/hydro_slope_limiters.h
similarity index 100%
rename from src/hydro/GizmoMFM/hydro_slope_limiters.h
rename to src/hydro/Gizmo/MFM/hydro_slope_limiters.h
diff --git a/src/hydro/GizmoMFM/hydro_slope_limiters_cell.h b/src/hydro/Gizmo/MFM/hydro_slope_limiters_cell.h
similarity index 100%
rename from src/hydro/GizmoMFM/hydro_slope_limiters_cell.h
rename to src/hydro/Gizmo/MFM/hydro_slope_limiters_cell.h
diff --git a/src/hydro/GizmoMFM/hydro_slope_limiters_face.h b/src/hydro/Gizmo/MFM/hydro_slope_limiters_face.h
similarity index 100%
rename from src/hydro/GizmoMFM/hydro_slope_limiters_face.h
rename to src/hydro/Gizmo/MFM/hydro_slope_limiters_face.h
diff --git a/src/hydro/GizmoMFM/hydro_unphysical.h b/src/hydro/Gizmo/MFM/hydro_unphysical.h
similarity index 100%
rename from src/hydro/GizmoMFM/hydro_unphysical.h
rename to src/hydro/Gizmo/MFM/hydro_unphysical.h
diff --git a/src/hydro/GizmoMFV/hydro.h b/src/hydro/Gizmo/MFV/hydro.h
similarity index 100%
rename from src/hydro/GizmoMFV/hydro.h
rename to src/hydro/Gizmo/MFV/hydro.h
diff --git a/src/hydro/GizmoMFV/hydro_debug.h b/src/hydro/Gizmo/MFV/hydro_debug.h
similarity index 100%
rename from src/hydro/GizmoMFV/hydro_debug.h
rename to src/hydro/Gizmo/MFV/hydro_debug.h
diff --git a/src/hydro/GizmoMFV/hydro_gradients.h b/src/hydro/Gizmo/MFV/hydro_gradients.h
similarity index 100%
rename from src/hydro/GizmoMFV/hydro_gradients.h
rename to src/hydro/Gizmo/MFV/hydro_gradients.h
diff --git a/src/hydro/GizmoMFV/hydro_gradients_gizmo.h b/src/hydro/Gizmo/MFV/hydro_gradients_gizmo.h
similarity index 100%
rename from src/hydro/GizmoMFV/hydro_gradients_gizmo.h
rename to src/hydro/Gizmo/MFV/hydro_gradients_gizmo.h
diff --git a/src/hydro/GizmoMFV/hydro_gradients_sph.h b/src/hydro/Gizmo/MFV/hydro_gradients_sph.h
similarity index 100%
rename from src/hydro/GizmoMFV/hydro_gradients_sph.h
rename to src/hydro/Gizmo/MFV/hydro_gradients_sph.h
diff --git a/src/hydro/GizmoMFV/hydro_iact.h b/src/hydro/Gizmo/MFV/hydro_iact.h
similarity index 100%
rename from src/hydro/GizmoMFV/hydro_iact.h
rename to src/hydro/Gizmo/MFV/hydro_iact.h
diff --git a/src/hydro/GizmoMFV/hydro_io.h b/src/hydro/Gizmo/MFV/hydro_io.h
similarity index 100%
rename from src/hydro/GizmoMFV/hydro_io.h
rename to src/hydro/Gizmo/MFV/hydro_io.h
diff --git a/src/hydro/GizmoMFV/hydro_parameters.h b/src/hydro/Gizmo/MFV/hydro_parameters.h
similarity index 100%
rename from src/hydro/GizmoMFV/hydro_parameters.h
rename to src/hydro/Gizmo/MFV/hydro_parameters.h
diff --git a/src/hydro/GizmoMFV/hydro_part.h b/src/hydro/Gizmo/MFV/hydro_part.h
similarity index 100%
rename from src/hydro/GizmoMFV/hydro_part.h
rename to src/hydro/Gizmo/MFV/hydro_part.h
diff --git a/src/hydro/GizmoMFV/hydro_slope_limiters.h b/src/hydro/Gizmo/MFV/hydro_slope_limiters.h
similarity index 100%
rename from src/hydro/GizmoMFV/hydro_slope_limiters.h
rename to src/hydro/Gizmo/MFV/hydro_slope_limiters.h
diff --git a/src/hydro/GizmoMFV/hydro_slope_limiters_cell.h b/src/hydro/Gizmo/MFV/hydro_slope_limiters_cell.h
similarity index 100%
rename from src/hydro/GizmoMFV/hydro_slope_limiters_cell.h
rename to src/hydro/Gizmo/MFV/hydro_slope_limiters_cell.h
diff --git a/src/hydro/GizmoMFV/hydro_slope_limiters_face.h b/src/hydro/Gizmo/MFV/hydro_slope_limiters_face.h
similarity index 100%
rename from src/hydro/GizmoMFV/hydro_slope_limiters_face.h
rename to src/hydro/Gizmo/MFV/hydro_slope_limiters_face.h
diff --git a/src/hydro/GizmoMFV/hydro_unphysical.h b/src/hydro/Gizmo/MFV/hydro_unphysical.h
similarity index 100%
rename from src/hydro/GizmoMFV/hydro_unphysical.h
rename to src/hydro/Gizmo/MFV/hydro_unphysical.h
diff --git a/src/hydro/GizmoMFV/hydro_velocities.h b/src/hydro/Gizmo/MFV/hydro_velocities.h
similarity index 100%
rename from src/hydro/GizmoMFV/hydro_velocities.h
rename to src/hydro/Gizmo/MFV/hydro_velocities.h
diff --git a/src/hydro/Gizmo/hydro.h b/src/hydro/Gizmo/hydro.h
new file mode 100644
index 0000000000..98a9024a5a
--- /dev/null
+++ b/src/hydro/Gizmo/hydro.h
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * This file is part of SWIFT.
+ * Coypright (c) 2019 Bert Vandenbroucke (bert.vandenbroucke@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ ******************************************************************************/
+#ifndef SWIFT_GIZMO_HYDRO_H
+#define SWIFT_GIZMO_HYDRO_H
+
+#if defined(GIZMO_MFV_SPH)
+#include "MFV/hydro.h"
+#define SPH_IMPLEMENTATION "GIZMO MFV (Hopkins 2015)"
+#elif defined(GIZMO_MFM_SPH)
+#include "MFM/hydro.h"
+#define SPH_IMPLEMENTATION "GIZMO MFM (Hopkins 2015)"
+#endif
+
+#endif /* SWIFT_GIZMO_HYDRO_H */
diff --git a/src/hydro/Gizmo/hydro_debug.h b/src/hydro/Gizmo/hydro_debug.h
new file mode 100644
index 0000000000..e64bce00fa
--- /dev/null
+++ b/src/hydro/Gizmo/hydro_debug.h
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * This file is part of SWIFT.
+ * Copyright (c) 2019 Bert Vandenbroucke (bert.vandenbroucke@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ ******************************************************************************/
+#ifndef SWIFT_GIZMO_HYDRO_DEBUG_H
+#define SWIFT_GIZMO_HYDRO_DEBUG_H
+
+/* Import the right definition */
+#if defined(GIZMO_MFV_SPH)
+#include "MFV/hydro_debug.h"
+#elif defined(GIZMO_MFM_SPH)
+#include "MFM/hydro_debug.h"
+#endif
+
+#endif /* SWIFT_GIZMO_HYDRO_DEBUG_H */
diff --git a/src/hydro/Gizmo/hydro_iact.h b/src/hydro/Gizmo/hydro_iact.h
new file mode 100644
index 0000000000..61f307037b
--- /dev/null
+++ b/src/hydro/Gizmo/hydro_iact.h
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * This file is part of SWIFT.
+ * Coypright (c) 2019 Bert Vandenbroucke (bert.vandenbroucke@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ ******************************************************************************/
+#ifndef SWIFT_GIZMO_HYDRO_IACT_H
+#define SWIFT_GIZMO_HYDRO_IACT_H
+
+#if defined(GIZMO_MFV_SPH)
+#include "MFV/hydro_iact.h"
+#elif defined(GIZMO_MFM_SPH)
+#include "MFM/hydro_iact.h"
+#endif
+
+#endif /* SWIFT_GIZMO_HYDRO_IACT_H */
diff --git a/src/hydro/Gizmo/hydro_io.h b/src/hydro/Gizmo/hydro_io.h
new file mode 100644
index 0000000000..02db0e15e2
--- /dev/null
+++ b/src/hydro/Gizmo/hydro_io.h
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * This file is part of SWIFT.
+ * Copyright (c) 2019 Bert Vandenbroucke (bert.vandenbroucke@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ ******************************************************************************/
+#ifndef SWIFT_GIZMO_HYDRO_IO_H
+#define SWIFT_GIZMO_HYDRO_IO_H
+
+/* Import the right functions */
+#if defined(GIZMO_MFV_SPH)
+#include "MFV/hydro_io.h"
+#elif defined(GIZMO_MFM_SPH)
+#include "MFM/hydro_io.h"
+#endif
+
+#endif /* SWIFT_GIZMO_HYDRO_IO_H */
diff --git a/src/hydro/Gizmo/hydro_parameters.h b/src/hydro/Gizmo/hydro_parameters.h
new file mode 100644
index 0000000000..2435baa670
--- /dev/null
+++ b/src/hydro/Gizmo/hydro_parameters.h
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * This file is part of SWIFT.
+ * Copyright (c) 2019 Bert Vandenbroucke (bert.vandenbroucke@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ ******************************************************************************/
+#ifndef SWIFT_GIZMO_HYDRO_PARAMETERS_H
+#define SWIFT_GIZMO_HYDRO_PARAMETERS_H
+
+/**
+ * @file src/hydro_parameters.h
+ * @brief Contains all the parameters of the hydro schemes, included from
+ *        their own local header.
+ */
+
+/* Import the right hydro header */
+#if defined(GIZMO_MFV_SPH)
+#include "MFV/hydro_parameters.h"
+#elif defined(GIZMO_MFM_SPH)
+#include "MFM/hydro_parameters.h"
+#endif
+
+#endif /* SWIFT_HYDRO_PARAMETERS_H */
diff --git a/src/hydro/Gizmo/hydro_part.h b/src/hydro/Gizmo/hydro_part.h
new file mode 100644
index 0000000000..8df7576790
--- /dev/null
+++ b/src/hydro/Gizmo/hydro_part.h
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * This file is part of SWIFT.
+ * Copyright (c) 2019 Bert Vandenbroucke (bert.vandenbroucke@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ ******************************************************************************/
+#ifndef SWIFT_GIZMO_HYDRO_PART_H
+#define SWIFT_GIZMO_HYDRO_PART_H
+
+/* Import the right hydro particle definition */
+#if defined(GIZMO_MFV_SPH)
+#include "MFV/hydro_part.h"
+#elif defined(GIZMO_MFM_SPH)
+#include "MFM/hydro_part.h"
+#endif
+
+#endif /* SWIFT_GIZMO_HYDRO_PART_H */
diff --git a/src/hydro_io.h b/src/hydro_io.h
index ccfb57371a..95aa8afc7b 100644
--- a/src/hydro_io.h
+++ b/src/hydro_io.h
@@ -35,10 +35,8 @@
 #include "./hydro/PressureEnergyMorrisMonaghanAV/hydro_io.h"
 #elif defined(DEFAULT_SPH)
 #include "./hydro/Default/hydro_io.h"
-#elif defined(GIZMO_MFV_SPH)
-#include "./hydro/GizmoMFV/hydro_io.h"
-#elif defined(GIZMO_MFM_SPH)
-#include "./hydro/GizmoMFM/hydro_io.h"
+#elif defined(GIZMO_MFV_SPH) || defined(GIZMO_MFM_SPH)
+#include "./hydro/Gizmo/hydro_io.h"
 #elif defined(SHADOWFAX_SPH)
 #include "./hydro/Shadowswift/hydro_io.h"
 #elif defined(PLANETARY_SPH)
diff --git a/src/hydro_parameters.h b/src/hydro_parameters.h
index 322bea5496..c6edb646e1 100644
--- a/src/hydro_parameters.h
+++ b/src/hydro_parameters.h
@@ -41,10 +41,8 @@
 #include "./hydro/PressureEnergyMorrisMonaghanAV/hydro_parameters.h"
 #elif defined(DEFAULT_SPH)
 #include "./hydro/Default/hydro_parameters.h"
-#elif defined(GIZMO_MFV_SPH)
-#include "./hydro/GizmoMFV/hydro_parameters.h"
-#elif defined(GIZMO_MFM_SPH)
-#include "./hydro/GizmoMFM/hydro_parameters.h"
+#elif defined(GIZMO_MFV_SPH) || defined(GIZMO_MFM_SPH)
+#include "./hydro/Gizmo/hydro_parameters.h"
 #elif defined(SHADOWFAX_SPH)
 #include "./hydro/Shadowswift/hydro_parameters.h"
 #elif defined(PLANETARY_SPH)
diff --git a/src/part.h b/src/part.h
index eb8489daae..e89f6004a3 100644
--- a/src/part.h
+++ b/src/part.h
@@ -63,12 +63,8 @@
 #include "./hydro/Default/hydro_part.h"
 #define EXTRA_HYDRO_LOOP
 #define hydro_need_extra_init_loop 0
-#elif defined(GIZMO_MFV_SPH)
-#include "./hydro/GizmoMFV/hydro_part.h"
-#define hydro_need_extra_init_loop 0
-#define EXTRA_HYDRO_LOOP
-#elif defined(GIZMO_MFM_SPH)
-#include "./hydro/GizmoMFM/hydro_part.h"
+#elif defined(GIZMO_MFV_SPH) || defined(GIZMO_MFM_SPH)
+#include "./hydro/Gizmo/hydro_part.h"
 #define hydro_need_extra_init_loop 0
 #define EXTRA_HYDRO_LOOP
 #elif defined(SHADOWFAX_SPH)
-- 
GitLab