aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver/FiniteDifferenceSolver
diff options
context:
space:
mode:
authorGravatar Luca Fedeli <luca.fedeli@cea.fr> 2021-06-25 04:34:32 +0200
committerGravatar GitHub <noreply@github.com> 2021-06-24 19:34:32 -0700
commit0b6ddad4ce039277025b80ba81ff2692b3a80724 (patch)
treee41003ab090527544e313036b1adc436bba6b9e9 /Source/FieldSolver/FiniteDifferenceSolver
parent78ebf77e84f458eb6eb8917f333196acaa84e1c0 (diff)
downloadWarpX-0b6ddad4ce039277025b80ba81ff2692b3a80724.tar.gz
WarpX-0b6ddad4ce039277025b80ba81ff2692b3a80724.tar.zst
WarpX-0b6ddad4ce039277025b80ba81ff2692b3a80724.zip
Use "Include What You Use" on WarpX (#1947)
* initial tests with IWYU * added a couple of forward declarations * used iwyu on more files * progress * used iwyu on more files * progress with iwyu * progress with iwyu * fixed bug * progress with iwyu * progress with IWYU * progress with IWYU * fixed bug * fixed bug * progress with IWYU * progress with IWYU + use forward declarations in WarpX.H * first try with .def files * fix bugs * progress with IWYU * progress with IWYU * progress with iwyu * correct copyright * fixed bug * fixed bugs * fix missing include * fixed bug * fix bug * fix bug introduced during last bugfix * use iwyu on newly added files * add space * fix bug * fix missing include * fix missing include * fix missing include * fixed bugs * fixed bug * attempt at fixing issue with math functions * added missing include * fixed missing include * using _fwd.H * fixed bug * progress with iwyu * update AMReX branch * enforce alphabetic order * progress with iwyu * use right version of amrex * use right version of amrex for tests * fixed bug * fix another bug * fix missing include * fix missing include * fix missing include * updated amrex * initial work to document new include strategy * updated documentation * Fix rst & private includes * Remove accidentially added files * Fix rst code blocks * one more rst block Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
Diffstat (limited to 'Source/FieldSolver/FiniteDifferenceSolver')
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/ApplySilverMuellerBoundary.cpp23
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/ComputeDivE.cpp31
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/EvolveB.cpp36
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/EvolveBPML.cpp30
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/EvolveE.cpp38
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/EvolveEPML.cpp34
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/EvolveF.cpp37
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/EvolveFPML.cpp29
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/EvolveG.cpp34
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H4
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H4
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H4
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H4
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/FieldAccessorFunctors.H2
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H15
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp23
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver_fwd.H8
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/MacroscopicEvolveE.cpp26
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/MacroscopicProperties/MacroscopicProperties.H9
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/MacroscopicProperties/MacroscopicProperties.cpp16
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/MacroscopicProperties/MacroscopicProperties_fwd.H8
21 files changed, 321 insertions, 94 deletions
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/ApplySilverMuellerBoundary.cpp b/Source/FieldSolver/FiniteDifferenceSolver/ApplySilverMuellerBoundary.cpp
index a7258da09..58a382d19 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/ApplySilverMuellerBoundary.cpp
+++ b/Source/FieldSolver/FiniteDifferenceSolver/ApplySilverMuellerBoundary.cpp
@@ -4,14 +4,29 @@
*
* License: BSD-3-Clause-LBNL
*/
-
-#include "Utils/WarpXAlgorithmSelection.H"
#include "FiniteDifferenceSolver.H"
-#include "Utils/WarpXConst.H"
-#include <AMReX_Gpu.H>
+
#ifdef WARPX_DIM_RZ
# include "FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H"
#endif
+#include "Utils/WarpXAlgorithmSelection.H"
+#include "Utils/WarpXConst.H"
+
+#include <AMReX.H>
+#include <AMReX_Array4.H>
+#include <AMReX_Box.H>
+#include <AMReX_Config.H>
+#include <AMReX_GpuContainers.H>
+#include <AMReX_GpuControl.H>
+#include <AMReX_GpuLaunch.H>
+#include <AMReX_GpuQualifiers.H>
+#include <AMReX_IndexType.H>
+#include <AMReX_MFIter.H>
+#include <AMReX_MultiFab.H>
+#include <AMReX_REAL.H>
+
+#include <array>
+#include <memory>
using namespace amrex;
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/ComputeDivE.cpp b/Source/FieldSolver/FiniteDifferenceSolver/ComputeDivE.cpp
index bcc7c4460..0e511e279 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/ComputeDivE.cpp
+++ b/Source/FieldSolver/FiniteDifferenceSolver/ComputeDivE.cpp
@@ -4,19 +4,34 @@
*
* License: BSD-3-Clause-LBNL
*/
+#include "FiniteDifferenceSolver.H"
#include "Utils/WarpXAlgorithmSelection.H"
-#include "FiniteDifferenceSolver.H"
-#ifdef WARPX_DIM_RZ
-# include "FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H"
-#else
-# include "FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H"
+#ifndef WARPX_DIM_RZ
# include "FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H"
# include "FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H"
+# include "FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H"
+#else
+# include "FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H"
#endif
-#include "Utils/WarpXConst.H"
-#include "WarpX.H"
-#include <AMReX_Gpu.H>
+
+#include <AMReX.H>
+#include <AMReX_Array4.H>
+#include <AMReX_Config.H>
+#include <AMReX_Extension.H>
+#include <AMReX_GpuContainers.H>
+#include <AMReX_GpuControl.H>
+#include <AMReX_GpuLaunch.H>
+#include <AMReX_GpuQualifiers.H>
+#include <AMReX_IndexType.H>
+#include <AMReX_MFIter.H>
+#include <AMReX_MultiFab.H>
+#include <AMReX_REAL.H>
+
+#include <AMReX_BaseFwd.H>
+
+#include <array>
+#include <memory>
using namespace amrex;
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/EvolveB.cpp b/Source/FieldSolver/FiniteDifferenceSolver/EvolveB.cpp
index 3d2dc42d8..eefd5f57c 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/EvolveB.cpp
+++ b/Source/FieldSolver/FiniteDifferenceSolver/EvolveB.cpp
@@ -4,18 +4,40 @@
*
* License: BSD-3-Clause-LBNL
*/
-
-#include "WarpX.H"
-#include "Utils/WarpXAlgorithmSelection.H"
#include "FiniteDifferenceSolver.H"
-#ifdef WARPX_DIM_RZ
-# include "FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H"
-#else
+
+#ifndef WARPX_DIM_RZ
# include "FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H"
# include "FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H"
# include "FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H"
+#else
+# include "FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H"
#endif
-#include <AMReX_Gpu.H>
+#include "Utils/WarpXAlgorithmSelection.H"
+#include "Utils/WarpXConst.H"
+#include "WarpX.H"
+
+#include <AMReX.H>
+#include <AMReX_Array4.H>
+#include <AMReX_Config.H>
+#include <AMReX_Extension.H>
+#include <AMReX_GpuAtomic.H>
+#include <AMReX_GpuContainers.H>
+#include <AMReX_GpuControl.H>
+#include <AMReX_GpuDevice.H>
+#include <AMReX_GpuLaunch.H>
+#include <AMReX_GpuQualifiers.H>
+#include <AMReX_IndexType.H>
+#include <AMReX_LayoutData.H>
+#include <AMReX_MFIter.H>
+#include <AMReX_MultiFab.H>
+#include <AMReX_REAL.H>
+#include <AMReX_Utility.H>
+
+#include <AMReX_BaseFwd.H>
+
+#include <array>
+#include <memory>
using namespace amrex;
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/EvolveBPML.cpp b/Source/FieldSolver/FiniteDifferenceSolver/EvolveBPML.cpp
index 6eb7caacc..299f92f2f 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/EvolveBPML.cpp
+++ b/Source/FieldSolver/FiniteDifferenceSolver/EvolveBPML.cpp
@@ -4,19 +4,35 @@
*
* License: BSD-3-Clause-LBNL
*/
-
-#include "Utils/WarpXAlgorithmSelection.H"
#include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H"
-#ifdef WARPX_DIM_RZ
-# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H"
-#else
+
+#include "BoundaryConditions/PMLComponent.H"
+
+#ifndef WARPX_DIM_RZ
# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H"
# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H"
# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H"
+#else
+# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H"
#endif
-#include "BoundaryConditions/PMLComponent.H"
-#include <AMReX_Gpu.H>
+#include "Utils/WarpXAlgorithmSelection.H"
+
#include <AMReX.H>
+#include <AMReX_Array4.H>
+#include <AMReX_Config.H>
+#include <AMReX_Extension.H>
+#include <AMReX_GpuContainers.H>
+#include <AMReX_GpuControl.H>
+#include <AMReX_GpuLaunch.H>
+#include <AMReX_GpuQualifiers.H>
+#include <AMReX_IndexType.H>
+#include <AMReX_MFIter.H>
+#include <AMReX_MultiFab.H>
+#include <AMReX_REAL.H>
+
+#include <AMReX_BaseFwd.H>
+
+#include <array>
using namespace amrex;
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/EvolveE.cpp b/Source/FieldSolver/FiniteDifferenceSolver/EvolveE.cpp
index 63fc8b38d..83494e3c2 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/EvolveE.cpp
+++ b/Source/FieldSolver/FiniteDifferenceSolver/EvolveE.cpp
@@ -4,20 +4,40 @@
*
* License: BSD-3-Clause-LBNL
*/
-
-#include "WarpX.H"
-#include "Utils/WarpXAlgorithmSelection.H"
#include "FiniteDifferenceSolver.H"
-#ifdef WARPX_DIM_RZ
-# include "FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H"
+
+#ifndef WARPX_DIM_RZ
+# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H"
+# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H"
+# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H"
#else
-# include "FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H"
-# include "FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H"
-# include "FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H"
+# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H"
#endif
+#include "Utils/WarpXAlgorithmSelection.H"
#include "Utils/WarpXConst.H"
-#include <AMReX_Gpu.H>
+#include "WarpX.H"
+#include <AMReX.H>
+#include <AMReX_Array4.H>
+#include <AMReX_Config.H>
+#include <AMReX_Extension.H>
+#include <AMReX_GpuAtomic.H>
+#include <AMReX_GpuContainers.H>
+#include <AMReX_GpuControl.H>
+#include <AMReX_GpuDevice.H>
+#include <AMReX_GpuLaunch.H>
+#include <AMReX_GpuQualifiers.H>
+#include <AMReX_IndexType.H>
+#include <AMReX_LayoutData.H>
+#include <AMReX_MFIter.H>
+#include <AMReX_MultiFab.H>
+#include <AMReX_REAL.H>
+#include <AMReX_Utility.H>
+
+#include <AMReX_BaseFwd.H>
+
+#include <array>
+#include <memory>
using namespace amrex;
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/EvolveEPML.cpp b/Source/FieldSolver/FiniteDifferenceSolver/EvolveEPML.cpp
index f93f68414..ea5ecb381 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/EvolveEPML.cpp
+++ b/Source/FieldSolver/FiniteDifferenceSolver/EvolveEPML.cpp
@@ -4,22 +4,38 @@
*
* License: BSD-3-Clause-LBNL
*/
-
-#include "Utils/WarpXAlgorithmSelection.H"
#include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H"
-#ifdef WARPX_DIM_RZ
-# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H"
-#else
+
+#include "BoundaryConditions/PML.H"
+#include "BoundaryConditions/PMLComponent.H"
+#include "BoundaryConditions/PML_current.H"
+#ifndef WARPX_DIM_RZ
# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H"
# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H"
# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H"
+#else
+# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H"
#endif
-#include "BoundaryConditions/PML.H"
-#include "BoundaryConditions/PML_current.H"
-#include "BoundaryConditions/PMLComponent.H"
+#include "Utils/WarpXAlgorithmSelection.H"
#include "Utils/WarpXConst.H"
-#include <AMReX_Gpu.H>
+
#include <AMReX.H>
+#include <AMReX_Array4.H>
+#include <AMReX_Config.H>
+#include <AMReX_Extension.H>
+#include <AMReX_FabArray.H>
+#include <AMReX_GpuContainers.H>
+#include <AMReX_GpuControl.H>
+#include <AMReX_GpuLaunch.H>
+#include <AMReX_GpuQualifiers.H>
+#include <AMReX_IndexType.H>
+#include <AMReX_MFIter.H>
+#include <AMReX_MultiFab.H>
+#include <AMReX_REAL.H>
+
+#include <AMReX_BaseFwd.H>
+
+#include <array>
using namespace amrex;
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/EvolveF.cpp b/Source/FieldSolver/FiniteDifferenceSolver/EvolveF.cpp
index 445b62fb6..18401d74e 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/EvolveF.cpp
+++ b/Source/FieldSolver/FiniteDifferenceSolver/EvolveF.cpp
@@ -4,19 +4,38 @@
*
* License: BSD-3-Clause-LBNL
*/
-
-#include "Utils/WarpXAlgorithmSelection.H"
#include "FiniteDifferenceSolver.H"
-#ifdef WARPX_DIM_RZ
-# include "FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H"
+
+#ifndef WARPX_DIM_RZ
+# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H"
+# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H"
+# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H"
#else
-# include "FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H"
-# include "FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H"
-# include "FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H"
+# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H"
#endif
+#include "Utils/WarpXAlgorithmSelection.H"
#include "Utils/WarpXConst.H"
-#include "WarpX.H"
-#include <AMReX_Gpu.H>
+#ifdef WARPX_DIM_RZ
+# include "WarpX.H"
+#endif
+
+#include <AMReX.H>
+#include <AMReX_Array4.H>
+#include <AMReX_Config.H>
+#include <AMReX_Extension.H>
+#include <AMReX_GpuContainers.H>
+#include <AMReX_GpuControl.H>
+#include <AMReX_GpuLaunch.H>
+#include <AMReX_GpuQualifiers.H>
+#include <AMReX_IndexType.H>
+#include <AMReX_MFIter.H>
+#include <AMReX_MultiFab.H>
+#include <AMReX_REAL.H>
+
+#include <AMReX_BaseFwd.H>
+
+#include <array>
+#include <memory>
using namespace amrex;
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/EvolveFPML.cpp b/Source/FieldSolver/FiniteDifferenceSolver/EvolveFPML.cpp
index 1a49316dd..79eed1efb 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/EvolveFPML.cpp
+++ b/Source/FieldSolver/FiniteDifferenceSolver/EvolveFPML.cpp
@@ -4,19 +4,34 @@
*
* License: BSD-3-Clause-LBNL
*/
-
-#include "Utils/WarpXAlgorithmSelection.H"
#include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H"
-#ifdef WARPX_DIM_RZ
-# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H"
-#else
+
+#include "BoundaryConditions/PMLComponent.H"
+#ifndef WARPX_DIM_RZ
# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H"
# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H"
# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H"
+#else
+# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H"
#endif
-#include "BoundaryConditions/PMLComponent.H"
-#include <AMReX_Gpu.H>
+#include "Utils/WarpXAlgorithmSelection.H"
+
#include <AMReX.H>
+#include <AMReX_Array4.H>
+#include <AMReX_Config.H>
+#include <AMReX_Extension.H>
+#include <AMReX_GpuContainers.H>
+#include <AMReX_GpuControl.H>
+#include <AMReX_GpuLaunch.H>
+#include <AMReX_GpuQualifiers.H>
+#include <AMReX_IndexType.H>
+#include <AMReX_MFIter.H>
+#include <AMReX_MultiFab.H>
+#include <AMReX_REAL.H>
+
+#include <AMReX_BaseFwd.H>
+
+#include <array>
using namespace amrex;
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/EvolveG.cpp b/Source/FieldSolver/FiniteDifferenceSolver/EvolveG.cpp
index f69fb57c4..b2aa302ad 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/EvolveG.cpp
+++ b/Source/FieldSolver/FiniteDifferenceSolver/EvolveG.cpp
@@ -5,18 +5,34 @@
* License: BSD-3-Clause-LBNL
*/
-#include "Utils/WarpXAlgorithmSelection.H"
+
#include "FiniteDifferenceSolver.H"
-#ifdef WARPX_DIM_RZ
-# include "FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H"
+#ifndef WARPX_DIM_RZ
+# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H"
+# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H"
+# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H"
#else
-# include "FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H"
-# include "FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H"
-# include "FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H"
+# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H"
#endif
-#include "Utils/WarpXConst.H"
-#include "WarpX.H"
-#include <AMReX_Gpu.H>
+#include "Utils/WarpXAlgorithmSelection.H"
+
+#include <AMReX.H>
+#include <AMReX_Array4.H>
+#include <AMReX_Config.H>
+#include <AMReX_Extension.H>
+#include <AMReX_GpuContainers.H>
+#include <AMReX_GpuControl.H>
+#include <AMReX_GpuLaunch.H>
+#include <AMReX_GpuQualifiers.H>
+#include <AMReX_IndexType.H>
+#include <AMReX_MFIter.H>
+#include <AMReX_MultiFab.H>
+#include <AMReX_REAL.H>
+
+#include <AMReX_BaseFwd.H>
+
+#include <array>
+#include <memory>
using namespace amrex;
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H
index da1a8c9a9..216723553 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H
+++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H
@@ -10,10 +10,10 @@
#include "Utils/WarpXConst.H"
-#include <AMReX_REAL.H>
+#include <AMReX.H>
#include <AMReX_Array4.H>
#include <AMReX_Gpu.H>
-#include <AMReX.H>
+#include <AMReX_REAL.H>
#include <algorithm>
#include <array>
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H
index 68ecdfc60..5c1d68687 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H
+++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H
@@ -10,10 +10,10 @@
#include "Utils/WarpXConst.H"
-#include <AMReX_REAL.H>
+#include <AMReX.H>
#include <AMReX_Array4.H>
#include <AMReX_Gpu.H>
-#include <AMReX.H>
+#include <AMReX_REAL.H>
#include <array>
#include <cmath>
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H
index 4fd76a699..4fe813754 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H
+++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H
@@ -8,13 +8,13 @@
#ifndef WARPX_FINITE_DIFFERENCE_ALGORITHM_CARTESIAN_YEE_H_
#define WARPX_FINITE_DIFFERENCE_ALGORITHM_CARTESIAN_YEE_H_
-#include "Utils/WarpXConst.H"
#include "FieldAccessorFunctors.H"
+#include "Utils/WarpXConst.H"
#include <AMReX.H>
-#include <AMReX_REAL.H>
#include <AMReX_Array4.H>
#include <AMReX_Gpu.H>
+#include <AMReX_REAL.H>
#include <array>
#include <cmath>
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H
index 2283df09a..fee0a9dc8 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H
+++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H
@@ -10,10 +10,10 @@
#include "Utils/WarpXConst.H"
-#include <AMReX_REAL.H>
+#include <AMReX.H>
#include <AMReX_Array4.H>
#include <AMReX_Gpu.H>
-#include <AMReX.H>
+#include <AMReX_REAL.H>
#include <array>
#include <cmath>
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/FieldAccessorFunctors.H b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/FieldAccessorFunctors.H
index 3ba6de335..0b5245228 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/FieldAccessorFunctors.H
+++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/FieldAccessorFunctors.H
@@ -1,6 +1,8 @@
#ifndef WARPX_FIELD_ACCESSOR_FUNCTORS_H
#define WARPX_FIELD_ACCESSOR_FUNCTORS_H
+
#include "WarpX.H"
+
/**
* \brief Functor that returns the division of the source m_field Array4 value
by macroparameter, m_parameter value at the respective (i,j,k,ncomp).
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H
index 5346604d4..bd6add3f0 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H
+++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H
@@ -8,9 +8,18 @@
#ifndef WARPX_FINITE_DIFFERENCE_SOLVER_H_
#define WARPX_FINITE_DIFFERENCE_SOLVER_H_
-#include <AMReX_MultiFab.H>
-#include "MacroscopicProperties/MacroscopicProperties.H"
-#include "BoundaryConditions/PML.H"
+#include "FiniteDifferenceSolver_fwd.H"
+
+#include "BoundaryConditions/PML_fwd.H"
+#include "MacroscopicProperties/MacroscopicProperties_fwd.H"
+
+#include <AMReX_GpuContainers.H>
+#include <AMReX_REAL.H>
+
+#include <AMReX_BaseFwd.H>
+
+#include <array>
+#include <memory>
/**
* \brief Top-level class for the electromagnetic finite-difference solver
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp
index 14decf5c1..aab4a69c5 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp
+++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp
@@ -4,17 +4,26 @@
*
* License: BSD-3-Clause-LBNL
*/
+#include "FiniteDifferenceSolver.H"
+#ifndef WARPX_DIM_RZ
+# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H"
+# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H"
+# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H"
+#else
+# include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H"
+#endif
#include "Utils/WarpXAlgorithmSelection.H"
#ifdef WARPX_DIM_RZ
-# include "FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H"
-#else
-# include "FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H"
-# include "FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H"
-# include "FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H"
+# include "WarpX.H"
#endif
-#include "FiniteDifferenceSolver.H"
-#include "WarpX.H"
+
+#include <AMReX.H>
+#include <AMReX_GpuDevice.H>
+#include <AMReX_PODVector.H>
+#include <AMReX_Vector.H>
+
+#include <vector>
/* This function initializes the stencil coefficients for the chosen finite-difference algorithm */
FiniteDifferenceSolver::FiniteDifferenceSolver (
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver_fwd.H b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver_fwd.H
new file mode 100644
index 000000000..4ecd05116
--- /dev/null
+++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver_fwd.H
@@ -0,0 +1,8 @@
+/* Copyright 2021 Luca Fedeli
+ *
+ * This file is part of WarpX.
+ *
+ * License: BSD-3-Clause-LBNL
+ */
+
+class FiniteDifferenceSolver;
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/MacroscopicEvolveE.cpp b/Source/FieldSolver/FiniteDifferenceSolver/MacroscopicEvolveE.cpp
index 448c9b57d..f2a0cc9c7 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/MacroscopicEvolveE.cpp
+++ b/Source/FieldSolver/FiniteDifferenceSolver/MacroscopicEvolveE.cpp
@@ -1,5 +1,5 @@
-#include "Utils/WarpXAlgorithmSelection.H"
#include "FiniteDifferenceSolver.H"
+
#ifdef WARPX_DIM_RZ
// currently works only for 3D
#else
@@ -7,12 +7,28 @@
# include "FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H"
# include "FiniteDifferenceAlgorithms/FieldAccessorFunctors.H"
#endif
-#include "Utils/WarpXConst.H"
+#include "MacroscopicProperties/MacroscopicProperties.H"
#include "Utils/CoarsenIO.H"
-#include <WarpX.H>
-#include <AMReX.H>
-#include <AMReX_Gpu.H>
+#include "Utils/WarpXAlgorithmSelection.H"
+#include "WarpX.H"
+#include <AMReX.H>
+#include <AMReX_Array4.H>
+#include <AMReX_Config.H>
+#include <AMReX_Extension.H>
+#include <AMReX_GpuContainers.H>
+#include <AMReX_GpuControl.H>
+#include <AMReX_GpuLaunch.H>
+#include <AMReX_GpuQualifiers.H>
+#include <AMReX_IndexType.H>
+#include <AMReX_MFIter.H>
+#include <AMReX_MultiFab.H>
+#include <AMReX_REAL.H>
+
+#include <AMReX_BaseFwd.H>
+
+#include <array>
+#include <memory>
using namespace amrex;
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/MacroscopicProperties/MacroscopicProperties.H b/Source/FieldSolver/FiniteDifferenceSolver/MacroscopicProperties/MacroscopicProperties.H
index 7dfa2ff62..3597212c4 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/MacroscopicProperties/MacroscopicProperties.H
+++ b/Source/FieldSolver/FiniteDifferenceSolver/MacroscopicProperties/MacroscopicProperties.H
@@ -1,12 +1,19 @@
#ifndef WARPX_MACROSCOPICPROPERTIES_H_
#define WARPX_MACROSCOPICPROPERTIES_H_
+#include "MacroscopicProperties_fwd.H"
#include "Parser/WarpXParserWrapper.H"
#include "Utils/WarpXConst.H"
-#include <AMReX_MultiFab.H>
+#include <AMReX_Array.H>
+#include <AMReX_Extension.H>
+#include <AMReX_GpuQualifiers.H>
+#include <AMReX_MultiFab.H>
+#include <AMReX_REAL.H>
+#include <memory>
+#include <string>
/**
* \brief This class contains the macroscopic properties of the medium needed to
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/MacroscopicProperties/MacroscopicProperties.cpp b/Source/FieldSolver/FiniteDifferenceSolver/MacroscopicProperties/MacroscopicProperties.cpp
index 170ee6d80..579296e14 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/MacroscopicProperties/MacroscopicProperties.cpp
+++ b/Source/FieldSolver/FiniteDifferenceSolver/MacroscopicProperties/MacroscopicProperties.cpp
@@ -1,8 +1,22 @@
#include "MacroscopicProperties.H"
-#include "WarpX.H"
+
#include "Utils/WarpXUtil.H"
+#include "WarpX.H"
+#include <AMReX_Array4.H>
+#include <AMReX_BoxArray.H>
+#include <AMReX_Config.H>
+#include <AMReX_DistributionMapping.H>
+#include <AMReX_Geometry.H>
+#include <AMReX_GpuLaunch.H>
+#include <AMReX_IndexType.H>
+#include <AMReX_IntVect.H>
+#include <AMReX_MFIter.H>
#include <AMReX_ParmParse.H>
+#include <AMReX_Print.H>
+#include <AMReX_RealBox.H>
+
+#include <AMReX_BaseFwd.H>
#include <memory>
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/MacroscopicProperties/MacroscopicProperties_fwd.H b/Source/FieldSolver/FiniteDifferenceSolver/MacroscopicProperties/MacroscopicProperties_fwd.H
new file mode 100644
index 000000000..2ca4662d7
--- /dev/null
+++ b/Source/FieldSolver/FiniteDifferenceSolver/MacroscopicProperties/MacroscopicProperties_fwd.H
@@ -0,0 +1,8 @@
+/* Copyright 2021 Luca Fedeli
+ *
+ * This file is part of WarpX.
+ *
+ * License: BSD-3-Clause-LBNL
+ */
+
+class MacroscopicProperties;