diff --git a/pyphare/pyphare/pharein/simulation.py b/pyphare/pyphare/pharein/simulation.py index ee15a0b77..adb9fe432 100644 --- a/pyphare/pyphare/pharein/simulation.py +++ b/pyphare/pyphare/pharein/simulation.py @@ -613,7 +613,7 @@ def check_hyper_resistivity(**kwargs): def check_clustering(**kwargs): valid_keys = ["berger", "tile"] - clustering = kwargs.get("clustering", "berger") + clustering = kwargs.get("clustering", "tile") if clustering not in valid_keys: raise ValueError( f"Error: clustering type is not supported, supported types are {valid_keys}" @@ -906,7 +906,7 @@ class Simulation(object): * **max_nbr_levels** (``int``), default=1, max number of levels in the hierarchy. Used if no `refinement_boxes` are set * **tag_buffer** (``int``), default=1, value representing the number of cells by which tagged cells are buffered before clustering into boxes. The larger `tag_buffer`, the wider refined regions will be around tagged cells. - * **clustering** (``str``), {"berger" (default), "tile"}, type of clustering to use for AMR. `tile` results in wider patches, less artifacts and better scalability + * **clustering** (``str``), {"berger", "tile" (default)}, type of clustering to use for AMR. `tile` results in wider patches, less artifacts and better scalability **Expert parameters:** diff --git a/src/amr/data/field/coarsening/default_field_coarsener.hpp b/src/amr/data/field/coarsening/default_field_coarsener.hpp index e3ed866d1..18394a581 100644 --- a/src/amr/data/field/coarsening/default_field_coarsener.hpp +++ b/src/amr/data/field/coarsening/default_field_coarsener.hpp @@ -9,8 +9,8 @@ #include "core/utilities/point/point.hpp" #include "core/data/grid/gridlayoutdefs.hpp" -#include "amr/data/field/coarsening/field_coarsen_index_weight.hpp" #include "amr/resources_manager/amr_utils.hpp" +#include "amr/data/field/coarsening/field_coarsen_index_weight.hpp" #include diff --git a/src/amr/data/field/coarsening/field_coarsen_index_weight.hpp b/src/amr/data/field/coarsening/field_coarsen_index_weight.hpp index 79a3b88f8..748ca72d5 100644 --- a/src/amr/data/field/coarsening/field_coarsen_index_weight.hpp +++ b/src/amr/data/field/coarsening/field_coarsen_index_weight.hpp @@ -1,18 +1,13 @@ #ifndef PHARE_FIELD_COARSEN_HPP #define PHARE_FIELD_COARSEN_HPP - -#include "core/def/phare_mpi.hpp" - #include "core/def.hpp" -#include "coarsen_weighter.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include "core/data/grid/gridlayoutdefs.hpp" -#include "core/hybrid/hybrid_quantities.hpp" -#include "core/data/field/field.hpp" -#include "core/utilities/constants.hpp" #include "amr/resources_manager/amr_utils.hpp" +#include "coarsen_weighter.hpp" #include diff --git a/src/amr/data/field/coarsening/field_coarsen_operator.hpp b/src/amr/data/field/coarsening/field_coarsen_operator.hpp index dfb1bc107..4dcc3abd7 100644 --- a/src/amr/data/field/coarsening/field_coarsen_operator.hpp +++ b/src/amr/data/field/coarsening/field_coarsen_operator.hpp @@ -3,17 +3,17 @@ #include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include "core/utilities/constants.hpp" -#include "core/utilities/point/point.hpp" -#include "amr/data/tensorfield/tensor_field_data.hpp" #include "amr/data/field/field_data.hpp" +#include "amr/utilities/box/amr_box.hpp" #include "amr/data/field/field_geometry.hpp" +#include "amr/data/tensorfield/tensor_field_data.hpp" #include "default_field_coarsener.hpp" #include -#include #include +#include namespace PHARE::amr @@ -23,64 +23,11 @@ namespace PHARE::amr template void coarsen_field(Dst& destinationField, auto& sourceField, auto& intersectionBox, auto& coarsener) { - auto constexpr static dimension = Dst::dimension; - - // now we can loop over the intersection box - - core::Point startIndex; - core::Point endIndex; - - startIndex[dirX] = intersectionBox.lower(dirX); - endIndex[dirX] = intersectionBox.upper(dirX); - - if constexpr (dimension > 1) - { - startIndex[dirY] = intersectionBox.lower(dirY); - endIndex[dirY] = intersectionBox.upper(dirY); - } - if constexpr (dimension > 2) - { - startIndex[dirZ] = intersectionBox.lower(dirZ); - endIndex[dirZ] = intersectionBox.upper(dirZ); - } - - if constexpr (dimension == 1) - { - for (int ix = startIndex[dirX]; ix <= endIndex[dirX]; ++ix) - { - coarsener(sourceField, destinationField, {{ix}}); - } - } - - - else if constexpr (dimension == 2) - { - for (int ix = startIndex[dirX]; ix <= endIndex[dirX]; ++ix) - { - for (int iy = startIndex[dirY]; iy <= endIndex[dirY]; ++iy) - { - coarsener(sourceField, destinationField, {{ix, iy}}); - } - } - } - - - else if constexpr (dimension == 3) - { - for (int ix = startIndex[dirX]; ix <= endIndex[dirX]; ++ix) - { - for (int iy = startIndex[dirY]; iy <= endIndex[dirY]; ++iy) - { - for (int iz = startIndex[dirZ]; iz <= endIndex[dirZ]; ++iz) - - { - coarsener(sourceField, destinationField, {{ix, iy, iz}}); - } - } - } - } // end 3D + for (auto const bix : phare_box_from(intersectionBox)) + coarsener(sourceField, destinationField, bix); } + } // namespace PHARE::amr @@ -88,9 +35,7 @@ namespace PHARE { namespace amr { - using core::dirX; - using core::dirY; - using core::dirZ; + // template().physicalQuantity())> @@ -152,7 +97,7 @@ namespace amr * get the Field and GridLayout encapsulated into the fieldData. * With the help of FieldGeometry, transform the coarseBox to the correct index. * After that we can now create FieldCoarsen with the indexAndWeight implementation - * selected. Finaly loop over the indexes in the box, and apply the coarsening defined + * selected. Finally loop over the indexes in the box, and apply the coarsening defined * in FieldCoarsen operator * */ diff --git a/src/amr/data/field/field_data.hpp b/src/amr/data/field/field_data.hpp index 9f5bd107b..aa0938071 100644 --- a/src/amr/data/field/field_data.hpp +++ b/src/amr/data/field/field_data.hpp @@ -4,31 +4,21 @@ #include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include "core/logger.hpp" -#include "core/data/grid/gridlayout.hpp" -#include "core/data/grid/gridlayout_impl.hpp" +#include "core/data/field/field_box.hpp" + #include "amr/resources_manager/amr_utils.hpp" #include "field_geometry.hpp" -#include "core/data/field/field_box.hpp" - #include #include + #include namespace PHARE { namespace amr { - // We use another class here so that we can specialize specifics function: copy , pack , unpack - // on the dimension and we don't want to loose non specialized function related to SAMRAI - // interface - template().physicalQuantity())> - class FieldDataInternals - { - }; - /**@brief FieldData is the specialization of SAMRAI::hier::PatchData to Field objects * diff --git a/src/amr/data/field/field_data_factory.hpp b/src/amr/data/field/field_data_factory.hpp index b7c7e0238..7b5c584fa 100644 --- a/src/amr/data/field/field_data_factory.hpp +++ b/src/amr/data/field/field_data_factory.hpp @@ -2,17 +2,17 @@ #define PHARE_SRC_AMR_FIELD_FIELD_DATA_FACTORY_HPP -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep -#include #include -#include #include - -#include +#include +#include #include "field_data.hpp" +#include + namespace PHARE { namespace amr @@ -35,7 +35,7 @@ namespace amr FieldDataFactory(bool fineBoundaryRepresentsVariable, bool dataLivesOnPatchBorder, std::string const& name, PhysicalQuantity qty) : SAMRAI::hier::PatchDataFactory( - SAMRAI::hier::IntVector{SAMRAI::tbox::Dimension(dimension), n_ghosts}) + SAMRAI::hier::IntVector{SAMRAI::tbox::Dimension(dimension), n_ghosts}) , fineBoundaryRepresentsVariable_{fineBoundaryRepresentsVariable} , dataLivesOnPatchBorder_{dataLivesOnPatchBorder} , quantity_{qty} @@ -127,7 +127,7 @@ namespace amr nbCell[iDim] = box.numberCells(iDim); } - const std::size_t baseField + std::size_t const baseField = SAMRAI::tbox::MemoryUtilities::align(sizeof(FieldData)); GridLayoutT gridLayout{dl, nbCell, origin}; diff --git a/src/amr/data/field/field_geometry.hpp b/src/amr/data/field/field_geometry.hpp index 44cee95b1..7cc6306b2 100644 --- a/src/amr/data/field/field_geometry.hpp +++ b/src/amr/data/field/field_geometry.hpp @@ -2,17 +2,14 @@ #define PHARE_SRC_AMR_FIELD_FIELD_GEOMETRY_HPP -#include "core/def/phare_mpi.hpp" - - -#include "SAMRAI/hier/IntVector.h" -#include "core/data/grid/gridlayoutdefs.hpp" -#include "core/data/grid/gridlayout.hpp" #include "core/utilities/types.hpp" +#include "core/data/grid/gridlayout.hpp" +#include "core/data/grid/gridlayoutdefs.hpp" #include "field_overlap.hpp" #include +#include "SAMRAI/hier/IntVector.h" #include #include diff --git a/src/amr/data/field/field_overlap.hpp b/src/amr/data/field/field_overlap.hpp index adcf989bc..6b0f52b8f 100644 --- a/src/amr/data/field/field_overlap.hpp +++ b/src/amr/data/field/field_overlap.hpp @@ -2,10 +2,10 @@ #define PHARE_SRC_AMR_FIELD_FIELD_OVERLAP_HPP -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep -#include #include +#include #include namespace PHARE diff --git a/src/amr/data/field/field_variable.hpp b/src/amr/data/field/field_variable.hpp index ea85b011f..be855c11e 100644 --- a/src/amr/data/field/field_variable.hpp +++ b/src/amr/data/field/field_variable.hpp @@ -2,7 +2,7 @@ #define PHARE_SRC_AMR_FIELD_FIELD_VARIABLE_HPP -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include diff --git a/src/amr/data/field/field_variable_fill_pattern.hpp b/src/amr/data/field/field_variable_fill_pattern.hpp index 9f0ee56e9..b831a4a75 100644 --- a/src/amr/data/field/field_variable_fill_pattern.hpp +++ b/src/amr/data/field/field_variable_fill_pattern.hpp @@ -1,20 +1,19 @@ #ifndef PHARE_SRC_AMR_FIELD_FIELD_VARIABLE_FILL_PATTERN_HPP #define PHARE_SRC_AMR_FIELD_FIELD_VARIABLE_FILL_PATTERN_HPP -#include "amr/data/tensorfield/tensor_field_overlap.hpp" #include "core/logger.hpp" #include "core/def/phare_mpi.hpp" - +#include "core/utilities/types.hpp" #include - #include "core/data/tensorfield/tensorfield.hpp" + #include #include "amr/data/field/field_geometry.hpp" +#include "amr/data/tensorfield/tensor_field_overlap.hpp" #include "amr/data/tensorfield/tensor_field_geometry.hpp" #include #include "SAMRAI/xfer/VariableFillPattern.h" -#include "core/utilities/types.hpp" #include #include diff --git a/src/amr/data/field/refine/electric_field_refiner.hpp b/src/amr/data/field/refine/electric_field_refiner.hpp index 4ed495e9e..b21a54269 100644 --- a/src/amr/data/field/refine/electric_field_refiner.hpp +++ b/src/amr/data/field/refine/electric_field_refiner.hpp @@ -2,14 +2,15 @@ #define PHARE_ELECTRIC_FIELD_REFINER_HPP -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep -#include - -#include "amr/resources_manager/amr_utils.hpp" #include "core/utilities/constants.hpp" -#include "core/data/grid/gridlayoutdefs.hpp" #include "core/utilities/point/point.hpp" +#include "core/data/grid/gridlayoutdefs.hpp" + +#include "amr/resources_manager/amr_utils.hpp" + +#include #include diff --git a/src/amr/data/field/refine/field_linear_refine.hpp b/src/amr/data/field/refine/field_linear_refine.hpp index 5cb820f45..10b748952 100644 --- a/src/amr/data/field/refine/field_linear_refine.hpp +++ b/src/amr/data/field/refine/field_linear_refine.hpp @@ -2,22 +2,19 @@ #define PHARE_FIELD_LINEAR_REFINE_HPP -#include "core/def/phare_mpi.hpp" - - #include "core/def.hpp" -#include "core/data/grid/gridlayoutdefs.hpp" -#include "core/data/field/field.hpp" -#include "linear_weighter.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include "core/utilities/constants.hpp" #include "core/utilities/point/point.hpp" +#include "core/data/grid/gridlayoutdefs.hpp" + +#include "linear_weighter.hpp" #include #include #include #include -#include namespace PHARE diff --git a/src/amr/data/field/refine/field_refine_operator.hpp b/src/amr/data/field/refine/field_refine_operator.hpp index e3ad9db88..1b30495ae 100644 --- a/src/amr/data/field/refine/field_refine_operator.hpp +++ b/src/amr/data/field/refine/field_refine_operator.hpp @@ -2,13 +2,16 @@ #define PHARE_FIELD_REFINE_OPERATOR_HPP -#include "amr/data/tensorfield/tensor_field_data.hpp" + +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include "core/def/phare_mpi.hpp" #include "core/def.hpp" + + #include "amr/data/field/field_data.hpp" +#include "amr/data/tensorfield/tensor_field_data.hpp" -#include "core/hybrid/hybrid_quantities.hpp" #include "field_linear_refine.hpp" #include @@ -30,63 +33,8 @@ using core::dirZ; template void refine_field(Dst& destinationField, auto& sourceField, auto& intersectionBox, auto& refiner) { - auto constexpr static dimension = Dst::dimension; - - if constexpr (dimension == 1) - { - int iStartX = intersectionBox.lower(dirX); - int iEndX = intersectionBox.upper(dirX); - - for (int ix = iStartX; ix <= iEndX; ++ix) - { - refiner(sourceField, destinationField, {{ix}}); - } - } - - - - - else if constexpr (dimension == 2) - { - int iStartX = intersectionBox.lower(dirX); - int iStartY = intersectionBox.lower(dirY); - - int iEndX = intersectionBox.upper(dirX); - int iEndY = intersectionBox.upper(dirY); - - for (int ix = iStartX; ix <= iEndX; ++ix) - { - for (int iy = iStartY; iy <= iEndY; ++iy) - { - refiner(sourceField, destinationField, {{ix, iy}}); - } - } - } - - - - - else if constexpr (dimension == 3) - { - int iStartX = intersectionBox.lower(dirX); - int iStartY = intersectionBox.lower(dirY); - int iStartZ = intersectionBox.lower(dirZ); - - int iEndX = intersectionBox.upper(dirX); - int iEndY = intersectionBox.upper(dirY); - int iEndZ = intersectionBox.upper(dirZ); - - for (int ix = iStartX; ix <= iEndX; ++ix) - { - for (int iy = iStartY; iy <= iEndY; ++iy) - { - for (int iz = iStartZ; iz <= iEndZ; ++iz) - { - refiner(sourceField, destinationField, {{ix, iy, iz}}); - } - } - } - } + for (auto const bix : phare_box_from(intersectionBox)) + refiner(sourceField, destinationField, bix); } diff --git a/src/amr/data/field/refine/field_refiner.hpp b/src/amr/data/field/refine/field_refiner.hpp index 7703d279f..f4e74fc4a 100644 --- a/src/amr/data/field/refine/field_refiner.hpp +++ b/src/amr/data/field/refine/field_refiner.hpp @@ -2,14 +2,14 @@ #define PHARE_FIELD_REFINER_HPP -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep - -#include "core/data/grid/gridlayoutdefs.hpp" #include "core/data/field/field.hpp" -#include "field_linear_refine.hpp" #include "core/utilities/constants.hpp" #include "core/utilities/point/point.hpp" +#include "core/data/grid/gridlayoutdefs.hpp" + +#include "field_linear_refine.hpp" #include diff --git a/src/amr/data/field/refine/linear_weighter.hpp b/src/amr/data/field/refine/linear_weighter.hpp index 597ac4792..6fa5a8b8d 100644 --- a/src/amr/data/field/refine/linear_weighter.hpp +++ b/src/amr/data/field/refine/linear_weighter.hpp @@ -2,14 +2,11 @@ #define PHARE_LINEAR_WEIGHTER_HPP -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include "core/def.hpp" #include "core/data/grid/gridlayoutdefs.hpp" -#include "core/data/field/field.hpp" -#include "core/utilities/constants.hpp" -#include "core/utilities/point/point.hpp" #include @@ -44,7 +41,7 @@ namespace amr template NO_DISCARD std::array - make_weighters(const std::array& values, SAMRAI::hier::IntVector ratio, + make_weighters(std::array const& values, SAMRAI::hier::IntVector ratio, std::index_sequence) { return {{(LinearWeighter{values[Is], static_cast(ratio[Is])})...}}; diff --git a/src/amr/data/field/refine/magnetic_field_refiner.hpp b/src/amr/data/field/refine/magnetic_field_refiner.hpp index 6254aa474..e14a206f8 100644 --- a/src/amr/data/field/refine/magnetic_field_refiner.hpp +++ b/src/amr/data/field/refine/magnetic_field_refiner.hpp @@ -2,14 +2,14 @@ #define PHARE_MAGNETIC_FIELD_REFINER_HPP -#include "core/def/phare_mpi.hpp" - -#include - -#include "amr/resources_manager/amr_utils.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include "core/utilities/constants.hpp" -#include "core/data/grid/gridlayoutdefs.hpp" #include "core/utilities/point/point.hpp" +#include "core/data/grid/gridlayoutdefs.hpp" + +#include "amr/resources_manager/amr_utils.hpp" + +#include #include diff --git a/src/amr/data/field/refine/magnetic_field_regrider.hpp b/src/amr/data/field/refine/magnetic_field_regrider.hpp index 263e9cd41..8e306139c 100644 --- a/src/amr/data/field/refine/magnetic_field_regrider.hpp +++ b/src/amr/data/field/refine/magnetic_field_regrider.hpp @@ -3,13 +3,13 @@ #include "core/def/phare_mpi.hpp" - -#include - -#include "amr/resources_manager/amr_utils.hpp" #include "core/utilities/constants.hpp" -#include "core/data/grid/gridlayoutdefs.hpp" #include "core/utilities/point/point.hpp" +#include "core/data/grid/gridlayoutdefs.hpp" + +#include "amr/resources_manager/amr_utils.hpp" + +#include #include #include diff --git a/src/amr/data/field/refine/magnetic_refine_patch_strategy.hpp b/src/amr/data/field/refine/magnetic_refine_patch_strategy.hpp index d8771016f..ceefb3605 100644 --- a/src/amr/data/field/refine/magnetic_refine_patch_strategy.hpp +++ b/src/amr/data/field/refine/magnetic_refine_patch_strategy.hpp @@ -3,12 +3,13 @@ #include "amr/data/field/field_geometry.hpp" #include "core/utilities/constants.hpp" -#include "core/utilities/index/index.hpp" + #include "amr/utilities/box/amr_box.hpp" +#include "amr/data/field/field_geometry.hpp" #include "amr/resources_manager/amr_utils.hpp" -#include "SAMRAI/hier/PatchLevel.h" + #include "SAMRAI/xfer/RefinePatchStrategy.h" #include "core/utilities/types.hpp" diff --git a/src/amr/data/field/time_interpolate/field_linear_time_interpolate.hpp b/src/amr/data/field/time_interpolate/field_linear_time_interpolate.hpp index 6fbb416b8..f305bc6d7 100644 --- a/src/amr/data/field/time_interpolate/field_linear_time_interpolate.hpp +++ b/src/amr/data/field/time_interpolate/field_linear_time_interpolate.hpp @@ -6,97 +6,38 @@ // FieldLinearTimeInterpolate // ------------------------------------- +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep + + #include "amr/data/field/field_data.hpp" #include "amr/data/field/field_geometry.hpp" - #include "amr/data/tensorfield/tensor_field_data.hpp" -#include "core/def/phare_mpi.hpp" - #include + #include + namespace PHARE::amr { -using core::dirX; -using core::dirY; -using core::dirZ; template void linear_time_interpolate(Dst& fieldDest, auto& fieldSrcOld, auto& fieldSrcNew, auto&&... args) { - auto static constexpr dim = Dst::dimension; - auto const& [localDestBox, localSrcBox, alpha] = std::forward_as_tuple(args...); + auto const lclDstBox = phare_box_from(localDestBox); + auto const lclSrcBox = phare_box_from(localSrcBox); - if constexpr (dim == 1) - { - auto const iDestStartX = localDestBox.lower(dirX); - auto const iDestEndX = localDestBox.upper(dirX); - - auto const iSrcStartX = localSrcBox.lower(dirX); - - for (auto ix = iDestStartX, ixSrc = iSrcStartX; ix <= iDestEndX; ++ix, ++ixSrc) - { - fieldDest(ix) = (1. - alpha) * fieldSrcOld(ixSrc) + alpha * fieldSrcNew(ixSrc); - } - } - else if constexpr (dim == 2) - { - auto const iDestStartX = localDestBox.lower(dirX); - auto const iDestEndX = localDestBox.upper(dirX); - auto const iDestStartY = localDestBox.lower(dirY); - auto const iDestEndY = localDestBox.upper(dirY); - - auto const iSrcStartX = localSrcBox.lower(dirX); - auto const iSrcStartY = localSrcBox.lower(dirY); - - for (auto ix = iDestStartX, ixSrc = iSrcStartX; ix <= iDestEndX; ++ix, ++ixSrc) - { - for (auto iy = iDestStartY, iySrc = iSrcStartY; iy <= iDestEndY; ++iy, ++iySrc) - { - fieldDest(ix, iy) - = (1. - alpha) * fieldSrcOld(ixSrc, iySrc) + alpha * fieldSrcNew(ixSrc, iySrc); - } - } - } - else if constexpr (dim == 3) - { - auto const iDestStartX = localDestBox.lower(dirX); - auto const iDestEndX = localDestBox.upper(dirX); - auto const iDestStartY = localDestBox.lower(dirY); - auto const iDestEndY = localDestBox.upper(dirY); - auto const iDestStartZ = localDestBox.lower(dirZ); - auto const iDestEndZ = localDestBox.upper(dirZ); - - auto const iSrcStartX = localSrcBox.lower(dirX); - auto const iSrcStartY = localSrcBox.lower(dirY); - auto const iSrcStartZ = localSrcBox.lower(dirZ); - - for (auto ix = iDestStartX, ixSrc = iSrcStartX; ix <= iDestEndX; ++ix, ++ixSrc) - { - for (auto iy = iDestStartY, iySrc = iSrcStartY; iy <= iDestEndY; ++iy, ++iySrc) - { - for (auto iz = iDestStartZ, izSrc = iSrcStartZ; iz <= iDestEndZ; ++iz, ++izSrc) - { - fieldDest(ix, iy, iz) = (1. - alpha) * fieldSrcOld(ixSrc, iySrc, izSrc) - + alpha * fieldSrcNew(ixSrc, iySrc, izSrc); - } - } - } - } + auto src_it = lclSrcBox.begin(); + auto dst_it = lclDstBox.begin(); - // + for (; dst_it != lclDstBox.end(); ++src_it, ++dst_it) + fieldDest(*dst_it) = (1. - alpha) * fieldSrcOld(*src_it) + alpha * fieldSrcNew(*src_it); } -} // namespace PHARE::amr - -namespace PHARE::amr -{ - template class FieldLinearTimeInterpolate : public SAMRAI::hier::TimeInterpolateOperator { diff --git a/src/amr/data/particles/particles_data.hpp b/src/amr/data/particles/particles_data.hpp index 259125a46..d07b79072 100644 --- a/src/amr/data/particles/particles_data.hpp +++ b/src/amr/data/particles/particles_data.hpp @@ -1,7 +1,7 @@ #ifndef PHARE_SRC_AMR_DATA_PARTICLES_PARTICLES_DATA_HPP #define PHARE_SRC_AMR_DATA_PARTICLES_PARTICLES_DATA_HPP -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep diff --git a/src/amr/data/particles/particles_data_factory.hpp b/src/amr/data/particles/particles_data_factory.hpp index 7190f0a9e..3adfd0e8f 100644 --- a/src/amr/data/particles/particles_data_factory.hpp +++ b/src/amr/data/particles/particles_data_factory.hpp @@ -3,7 +3,7 @@ #include "particles_data.hpp" -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include diff --git a/src/amr/data/particles/particles_variable.hpp b/src/amr/data/particles/particles_variable.hpp index 0cf0f6eb8..9ebb2cf66 100644 --- a/src/amr/data/particles/particles_variable.hpp +++ b/src/amr/data/particles/particles_variable.hpp @@ -1,9 +1,10 @@ #ifndef PHARE_PARTICLES_VARIABLE_HPP #define PHARE_PARTICLES_VARIABLE_HPP +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include "core/data/grid/gridlayout.hpp" // particle ghost width + #include "particles_data_factory.hpp" -#include "core/def/phare_mpi.hpp" #include #include diff --git a/src/amr/data/particles/particles_variable_fill_pattern.hpp b/src/amr/data/particles/particles_variable_fill_pattern.hpp index dc1b836c3..03529d85d 100644 --- a/src/amr/data/particles/particles_variable_fill_pattern.hpp +++ b/src/amr/data/particles/particles_variable_fill_pattern.hpp @@ -1,7 +1,7 @@ #ifndef PHARE_SRC_AMR_PARTICLES_PARTICLES_VARIABLE_FILL_PATTERN_HPP #define PHARE_SRC_AMR_PARTICLES_PARTICLES_VARIABLE_FILL_PATTERN_HPP -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include #include diff --git a/src/amr/data/particles/refine/particles_data_split.hpp b/src/amr/data/particles/refine/particles_data_split.hpp index bb01f9fe2..e1828f561 100644 --- a/src/amr/data/particles/refine/particles_data_split.hpp +++ b/src/amr/data/particles/refine/particles_data_split.hpp @@ -2,7 +2,7 @@ #define PHARE_PARTICLES_DATA_SPLIT_HPP -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include "core/def.hpp" #include "amr/data/particles/particles_data.hpp" diff --git a/src/amr/messengers/communicator.hpp b/src/amr/messengers/communicator.hpp index df16eb24d..228c1226a 100644 --- a/src/amr/messengers/communicator.hpp +++ b/src/amr/messengers/communicator.hpp @@ -1,7 +1,7 @@ #ifndef PHARE_QUANTITY_REFINER_HPP #define PHARE_QUANTITY_REFINER_HPP -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include diff --git a/src/amr/messengers/hybrid_hybrid_messenger_strategy.hpp b/src/amr/messengers/hybrid_hybrid_messenger_strategy.hpp index 50ef8bebd..50ec9e477 100644 --- a/src/amr/messengers/hybrid_hybrid_messenger_strategy.hpp +++ b/src/amr/messengers/hybrid_hybrid_messenger_strategy.hpp @@ -1,16 +1,12 @@ #ifndef PHARE_HYBRID_HYBRID_MESSENGER_STRATEGY_HPP #define PHARE_HYBRID_HYBRID_MESSENGER_STRATEGY_HPP -#include "core/def.hpp" +#include "core/def.hpp" // IWYU pragma: keep #include "core/logger.hpp" -#include "core/data/vecfield/vecfield_component.hpp" -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep -#include "core/utilities/point/point.hpp" -#include "core/data/vecfield/vecfield.hpp" #include "core/hybrid/hybrid_quantities.hpp" -#include "core/data/vecfield/vecfield_component.hpp" #include "core/numerics/interpolator/interpolator.hpp" #include "refiner_pool.hpp" @@ -47,8 +43,6 @@ #include #include #include -#include -#include @@ -333,8 +327,9 @@ namespace amr // nodes may not have been copied correctly, due to a bug in SAMRAI // it seems these nodes are only on ghost box border if that border // overlaps an old level patch border. See https://github.com/LLNL/SAMRAI/pull/293 - magPatchGhostsRefineSchedules[levelNumber]->fillData(initDataTime); - elecPatchGhostsRefineSchedules[levelNumber]->fillData(initDataTime); + + // magPatchGhostsRefineSchedules[levelNumber]->fillData(initDataTime); + // elecPatchGhostsRefineSchedules[levelNumber]->fillData(initDataTime); } std::string fineModelName() const override { return HybridModel::model_name; } diff --git a/src/amr/messengers/hybrid_messenger_info.hpp b/src/amr/messengers/hybrid_messenger_info.hpp index 124be87fa..ef3b984fa 100644 --- a/src/amr/messengers/hybrid_messenger_info.hpp +++ b/src/amr/messengers/hybrid_messenger_info.hpp @@ -2,7 +2,6 @@ #define PHARE_HYBRID_MESSENGER_INFO_HPP #include "messenger_info.hpp" -#include "core/data/vecfield/vecfield.hpp" #include #include @@ -35,8 +34,6 @@ namespace amr class HybridMessengerInfo : public IMessengerInfo { - // using std::string = core::std::string; - public: // store names of field and vector fields known to be part of the model // i.e. that constitute the state of the model between two time steps. diff --git a/src/amr/messengers/hybrid_messenger_strategy.hpp b/src/amr/messengers/hybrid_messenger_strategy.hpp index 67a0bfdfe..55a30cc9a 100644 --- a/src/amr/messengers/hybrid_messenger_strategy.hpp +++ b/src/amr/messengers/hybrid_messenger_strategy.hpp @@ -1,13 +1,12 @@ #ifndef PHARE_HYBRID_MESSENGER_STRATEGY_HPP #define PHARE_HYBRID_MESSENGER_STRATEGY_HPP -#include "amr/messengers/messenger_info.hpp" - -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep +#include "amr/messengers/messenger_info.hpp" -#include #include +#include #include diff --git a/src/amr/messengers/messenger.hpp b/src/amr/messengers/messenger.hpp index 4653ff370..89b484940 100644 --- a/src/amr/messengers/messenger.hpp +++ b/src/amr/messengers/messenger.hpp @@ -2,15 +2,14 @@ #ifndef PHARE_MESSENGER_HPP #define PHARE_MESSENGER_HPP -#include -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep + #include #include #include "messenger_info.hpp" -// #include "core/data/grid/gridlayout.hpp" namespace PHARE diff --git a/src/amr/messengers/mhd_messenger.hpp b/src/amr/messengers/mhd_messenger.hpp index 79e2a93a9..fd14fed6e 100644 --- a/src/amr/messengers/mhd_messenger.hpp +++ b/src/amr/messengers/mhd_messenger.hpp @@ -2,20 +2,22 @@ #ifndef PHARE_MHD_MESSENGER_HPP #define PHARE_MHD_MESSENGER_HPP -#include -#include -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep -#include -#include -#include - -#include "core/hybrid/hybrid_quantities.hpp" #include "amr/messengers/messenger.hpp" #include "amr/messengers/messenger_info.hpp" #include "amr/messengers/mhd_messenger_info.hpp" + +#include +#include +#include + + +#include +#include + namespace PHARE { namespace amr diff --git a/src/amr/multiphysics_integrator.hpp b/src/amr/multiphysics_integrator.hpp index 1597d0678..3dc38e98a 100644 --- a/src/amr/multiphysics_integrator.hpp +++ b/src/amr/multiphysics_integrator.hpp @@ -10,7 +10,7 @@ #include -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include #include diff --git a/src/amr/physical_models/mhd_model.hpp b/src/amr/physical_models/mhd_model.hpp index 6b470a578..d033a4f24 100644 --- a/src/amr/physical_models/mhd_model.hpp +++ b/src/amr/physical_models/mhd_model.hpp @@ -2,7 +2,7 @@ #define PHARE_MHD_MODEL_HPP #include "core/def.hpp" -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include "core/models/mhd_state.hpp" #include "amr/messengers/mhd_messenger_info.hpp" diff --git a/src/amr/resources_manager/amr_utils.hpp b/src/amr/resources_manager/amr_utils.hpp index f8e46f187..3b23afb2c 100644 --- a/src/amr/resources_manager/amr_utils.hpp +++ b/src/amr/resources_manager/amr_utils.hpp @@ -1,7 +1,7 @@ #ifndef PHARE_AMR_UTILS_HPP #define PHARE_AMR_UTILS_HPP -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include "core/def.hpp" diff --git a/src/amr/resources_manager/resources_guards.hpp b/src/amr/resources_manager/resources_guards.hpp index 237b113dd..c8bf6fbab 100644 --- a/src/amr/resources_manager/resources_guards.hpp +++ b/src/amr/resources_manager/resources_guards.hpp @@ -1,7 +1,7 @@ #ifndef PHARE_AMR_TOOLS_RESOURCES_GUARDS_HPP #define PHARE_AMR_TOOLS_RESOURCES_GUARDS_HPP -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include "resources_manager_utilities.hpp" diff --git a/src/amr/resources_manager/resources_manager.hpp b/src/amr/resources_manager/resources_manager.hpp index 0378377d8..ae8a8d9a4 100644 --- a/src/amr/resources_manager/resources_manager.hpp +++ b/src/amr/resources_manager/resources_manager.hpp @@ -1,7 +1,7 @@ #ifndef PHARE_AMR_TOOLS_RESOURCES_MANAGER_HPP #define PHARE_AMR_TOOLS_RESOURCES_MANAGER_HPP -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include "core/def.hpp" #include "core/logger.hpp" @@ -461,15 +461,6 @@ namespace amr return getPatchData_(resourcesVariableInfo, patch); } - template - auto getResourcesNullPointer_(ResourcesInfo const& resourcesVariableInfo) const - { - // using patch_data_type = ResourceType::patch_data_type; - // auto constexpr patch_data_ptr_fn = &patch_data_type::getPointer; - // using PointerType = std::invoke_result_t; - return nullptr; //.static_cast(nullptr); - } void static handle_sub_resources(auto fn, auto& obj, auto&&... args) @@ -544,7 +535,7 @@ namespace amr void setResourcesInternal_(ResourcesView& obj, SAMRAI::hier::Patch const& patch) const { using ResourceResolver_t = ResourceResolver; - using ResourcesType = typename ResourceResolver_t::type; + using ResourcesType = ResourceResolver_t::type; auto const& resourceInfoIt = nameToResourceInfo_.find(obj.name()); if (resourceInfoIt == nameToResourceInfo_.end()) @@ -556,14 +547,11 @@ namespace amr template void unsetResourcesInternal_(ResourcesView& obj) const { - using ResourceResolver_t = ResourceResolver; - using ResourcesType = typename ResourceResolver_t::type; - auto const& resourceInfoIt = nameToResourceInfo_.find(obj.name()); if (resourceInfoIt == nameToResourceInfo_.end()) throw std::runtime_error("Resources not found !"); - obj.setBuffer(getResourcesNullPointer_(resourceInfoIt->second)); + obj.setBuffer(nullptr); } diff --git a/src/amr/solvers/solver.hpp b/src/amr/solvers/solver.hpp index e41d763ca..b93f3356c 100644 --- a/src/amr/solvers/solver.hpp +++ b/src/amr/solvers/solver.hpp @@ -1,16 +1,17 @@ #ifndef PHARE_SOLVER_HPP #define PHARE_SOLVER_HPP -#include -#include "core/def/phare_mpi.hpp" - -#include -#include +#include "core/def.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include "amr/messengers/messenger.hpp" #include "amr/messengers/messenger_info.hpp" #include "amr/physical_models/physical_model.hpp" -#include "core/def.hpp" + +#include +#include + +#include namespace PHARE::solver { diff --git a/src/amr/solvers/solver_ppc.hpp b/src/amr/solvers/solver_ppc.hpp index f5c02ad90..de2e9a722 100644 --- a/src/amr/solvers/solver_ppc.hpp +++ b/src/amr/solvers/solver_ppc.hpp @@ -1,31 +1,26 @@ #ifndef PHARE_SOLVER_PPC_HPP #define PHARE_SOLVER_PPC_HPP -#include -#include -#include +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep -#include "SAMRAI/hier/PatchLevel.h" -#include "amr/physical_models/physical_model.hpp" -#include "core/def/phare_mpi.hpp" - -#include "core/numerics/ion_updater/ion_updater.hpp" -#include "core/numerics/ampere/ampere.hpp" -#include "core/numerics/faraday/faraday.hpp" #include "core/numerics/ohm/ohm.hpp" - +#include "core/numerics/ampere/ampere.hpp" #include "core/data/vecfield/vecfield.hpp" +#include "core/numerics/faraday/faraday.hpp" #include "core/data/grid/gridlayout_utils.hpp" +#include "core/numerics/ion_updater/ion_updater.hpp" +#include "amr/solvers/solver.hpp" #include "amr/messengers/hybrid_messenger.hpp" -#include "amr/messengers/hybrid_messenger_info.hpp" #include "amr/resources_manager/amr_utils.hpp" - -#include "amr/solvers/solver.hpp" #include "amr/solvers/solver_ppc_model_view.hpp" +#include "amr/physical_models/physical_model.hpp" +#include "amr/messengers/hybrid_messenger_info.hpp" #include +#include "SAMRAI/hier/PatchLevel.h" +#include #include diff --git a/src/amr/tagging/hybrid_tagger.hpp b/src/amr/tagging/hybrid_tagger.hpp index ea8e4b036..751c75352 100644 --- a/src/amr/tagging/hybrid_tagger.hpp +++ b/src/amr/tagging/hybrid_tagger.hpp @@ -3,7 +3,7 @@ #define PHARE_HYBRID_TAGGER_HPP -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include "tagger.hpp" #include "hybrid_tagger_strategy.hpp" diff --git a/src/amr/types/amr_types.hpp b/src/amr/types/amr_types.hpp index cc720a26a..309fa9e01 100644 --- a/src/amr/types/amr_types.hpp +++ b/src/amr/types/amr_types.hpp @@ -1,7 +1,7 @@ #ifndef PHARE_AMR_TYPES_HPP #define PHARE_AMR_TYPES_HPP -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include "SAMRAI/hier/Patch.h" #include "SAMRAI/hier/PatchHierarchy.h" diff --git a/src/amr/utilities/box/amr_box.hpp b/src/amr/utilities/box/amr_box.hpp index 35f4e18b9..6badca945 100644 --- a/src/amr/utilities/box/amr_box.hpp +++ b/src/amr/utilities/box/amr_box.hpp @@ -2,7 +2,7 @@ #define PHARE_AMR_UTILITIES_BOX_BOX_HPP -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include "SAMRAI/hier/Box.h" diff --git a/src/amr/wrappers/hierarchy.hpp b/src/amr/wrappers/hierarchy.hpp index 3a86fab94..07b2fc07f 100644 --- a/src/amr/wrappers/hierarchy.hpp +++ b/src/amr/wrappers/hierarchy.hpp @@ -3,7 +3,7 @@ #include -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include #include @@ -394,15 +394,15 @@ auto patchHierarchyDatabase(PHARE::initializer::PHAREDict const& amr) template DimHierarchy<_dimension>::DimHierarchy(PHARE::initializer::PHAREDict const& dict) : Hierarchy{ - dict, - std::make_shared( - SAMRAI::tbox::Dimension{dimension}, "CartesianGridGeom", - griddingAlgorithmDatabase(dict["simulation"]["grid"])), - patchHierarchyDatabase(dict["simulation"]["AMR"]), - shapeToBox(parseDimXYZType(dict["simulation"]["grid"], "nbr_cells")), - parseDimXYZType(dict["simulation"]["grid"], "origin"), - parseDimXYZType(dict["simulation"]["grid"], "meshsize"), - parseDimXYZType(dict["simulation"]["grid"], "boundary_type")} + dict, + std::make_shared( + SAMRAI::tbox::Dimension{dimension}, "CartesianGridGeom", + griddingAlgorithmDatabase(dict["simulation"]["grid"])), + patchHierarchyDatabase(dict["simulation"]["AMR"]), + shapeToBox(parseDimXYZType(dict["simulation"]["grid"], "nbr_cells")), + parseDimXYZType(dict["simulation"]["grid"], "origin"), + parseDimXYZType(dict["simulation"]["grid"], "meshsize"), + parseDimXYZType(dict["simulation"]["grid"], "boundary_type")} { } diff --git a/src/amr/wrappers/integrator.hpp b/src/amr/wrappers/integrator.hpp index ed03c1769..c460b7944 100644 --- a/src/amr/wrappers/integrator.hpp +++ b/src/amr/wrappers/integrator.hpp @@ -2,7 +2,7 @@ #define INTEGRATOR_HPP #include "core/logger.hpp" -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include #include diff --git a/src/core/data/grid/grid.hpp b/src/core/data/grid/grid.hpp index 6d2402c47..d2b73baee 100644 --- a/src/core/data/grid/grid.hpp +++ b/src/core/data/grid/grid.hpp @@ -102,6 +102,8 @@ class Grid : public NdArrayImpl std::copy(that.data(), that.data() + Super::size(), Super::data()); } + void zero() { field_.zero(); } // is always usable + // returns view when getting address of this object, could be misleading, but convenient NO_DISCARD auto operator&() { return &field_; } NO_DISCARD auto operator&() const { return &field_; } diff --git a/src/core/utilities/mpi_utils.hpp b/src/core/utilities/mpi_utils.hpp index 112c3f5a5..b327d8bca 100644 --- a/src/core/utilities/mpi_utils.hpp +++ b/src/core/utilities/mpi_utils.hpp @@ -2,17 +2,14 @@ #define PHARE_CORE_UTILITIES_MPI_HPP #include "core/def.hpp" -#include +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep +#include "core/utilities/span.hpp" +#include "core/utilities/types.hpp" + #include #include #include #include -#include - - -#include "core/def/phare_mpi.hpp" -#include "core/utilities/span.hpp" -#include "core/utilities/types.hpp" namespace PHARE::core::mpi { diff --git a/src/hdf5/detail/h5/h5_file.hpp b/src/hdf5/detail/h5/h5_file.hpp index 06ec1ec55..510c0786b 100644 --- a/src/hdf5/detail/h5/h5_file.hpp +++ b/src/hdf5/detail/h5/h5_file.hpp @@ -2,7 +2,7 @@ #define PHARE_HDF5_H5FILE_HPP #include "core/def.hpp" -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include "highfive/H5File.hpp" #include "highfive/H5Easy.hpp" @@ -245,10 +245,10 @@ class HighFiveFile } - HighFiveFile(const HighFiveFile&) = delete; - HighFiveFile(const HighFiveFile&&) = delete; - HighFiveFile& operator=(const HighFiveFile&) = delete; - HighFiveFile& operator=(const HighFiveFile&&) = delete; + HighFiveFile(HighFiveFile const&) = delete; + HighFiveFile(HighFiveFile const&&) = delete; + HighFiveFile& operator=(HighFiveFile const&) = delete; + HighFiveFile& operator=(HighFiveFile const&&) = delete; private: HighFive::FileAccessProps fapl_; diff --git a/src/phare_amr.hpp b/src/phare_amr.hpp index b492e9ea3..6741f7cea 100644 --- a/src/phare_amr.hpp +++ b/src/phare_amr.hpp @@ -2,7 +2,7 @@ #define PHARE_AMR_INCLUDE_HPP -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include diff --git a/src/python3/cpp_simulator.hpp b/src/python3/cpp_simulator.hpp index 7b78094bb..ff4deac6c 100644 --- a/src/python3/cpp_simulator.hpp +++ b/src/python3/cpp_simulator.hpp @@ -4,7 +4,7 @@ #include #include -#include "core/def/phare_mpi.hpp" +#include "core/def/phare_mpi.hpp" // IWYU pragma: keep #include "core/utilities/mpi_utils.hpp" #include "core/data/particles/particle.hpp" @@ -189,7 +189,7 @@ void declare_essential(py::module& m) // https://stackoverflow.com/a/51061314/795574 // ASAN detects leaks by default, even in system/third party libraries -inline const char* __asan_default_options() +inline char const* __asan_default_options() { return "detect_leaks=0"; } diff --git a/tests/amr/models/test_models.cpp b/tests/amr/models/test_models.cpp index e73d85cd8..0468d6044 100644 --- a/tests/amr/models/test_models.cpp +++ b/tests/amr/models/test_models.cpp @@ -155,14 +155,7 @@ TEST(AHybridModel, fillsHybridMessengerInfo) EXPECT_EQ("EM_B", modelInfo.modelMagnetic); - // EXPECT_EQ("EM_B_x", modelInfo.modelMagnetic.xName); - // EXPECT_EQ("EM_B_y", modelInfo.modelMagnetic.yName); - // EXPECT_EQ("EM_B_z", modelInfo.modelMagnetic.zName); - EXPECT_EQ("EM_E", modelInfo.modelElectric); - // EXPECT_EQ("EM_E_x", modelInfo.modelElectric.xName); - // EXPECT_EQ("EM_E_y", modelInfo.modelElectric.yName); - // EXPECT_EQ("EM_E_z", modelInfo.modelElectric.zName); } diff --git a/tests/core/numerics/interpolator/test_main.cpp b/tests/core/numerics/interpolator/test_main.cpp index a6cd4d73e..d0c42a534 100644 --- a/tests/core/numerics/interpolator/test_main.cpp +++ b/tests/core/numerics/interpolator/test_main.cpp @@ -531,8 +531,8 @@ class ACollectionOfParticles_1d : public ::testing::Test , rho_c{"field", HybridQuantity::Scalar::rho, nx} , v{"v", layout, HybridQuantity::Vector::V} { - (*(&rho)).zero(); - (*(&rho_c)).zero(); + rho.zero(); + rho_c.zero(); v.zero(); if constexpr (Interpolator::interp_order == 1) { @@ -707,8 +707,8 @@ struct ACollectionOfParticles_2d : public ::testing::Test , rho_c{"field", HybridQuantity::Scalar::rho, nx, ny} , v{"v", layout, HybridQuantity::Vector::V} { - (*(&rho)).zero(); - (*(&rho_c)).zero(); + rho.zero(); + rho_c.zero(); v.zero(); for (int i = start; i < end; i++) for (int j = start; j < end; j++) diff --git a/tests/functional/alfven_wave/alfven_wave1d.py b/tests/functional/alfven_wave/alfven_wave1d.py index fc9e29316..a43b61293 100644 --- a/tests/functional/alfven_wave/alfven_wave1d.py +++ b/tests/functional/alfven_wave/alfven_wave1d.py @@ -33,7 +33,6 @@ def config(): cells=1000, # integer or tuple length == dimension dl=1, # mesh size of the root level, float or tuple hyper_resistivity=0.001, - refinement_boxes={"L0": {"B0": [(450,), (550,)]}}, diag_options={ "format": "phareh5", "options": {"dir": ".", "mode": "overwrite"}, @@ -135,13 +134,11 @@ def phase_speed(run_path, ampl, xmax): def main(): from pyphare.cpp import cpp_lib + from pyphare.pharesee.run import Run cpp = cpp_lib() - from pyphare.pharesee.run import Run - - sim = config() - Simulator(sim).run() + Simulator(config()).run() if cpp.mpi_rank() == 0: vphi, t, phi, a, k = phase_speed(".", 0.01, 1000) diff --git a/tests/functional/harris/harris_2d.py b/tests/functional/harris/harris_2d.py index 8e70bf5ec..2959e9a10 100644 --- a/tests/functional/harris/harris_2d.py +++ b/tests/functional/harris/harris_2d.py @@ -1,8 +1,7 @@ #!/usr/bin/env python3 -import os + import numpy as np -import matplotlib as mpl from pathlib import Path import pyphare.pharein as ph @@ -12,7 +11,7 @@ from tests.simulator import SimulatorTest -mpl.use("Agg") +ph.NO_GUI() cpp = cpp_lib() @@ -33,7 +32,7 @@ def config(): cells=cells, dl=(0.40, 0.40), refinement="tagging", - max_nbr_levels=2, + max_nbr_levels=1, hyper_resistivity=0.002, resistivity=0.001, diag_options={ @@ -41,6 +40,7 @@ def config(): "options": {"dir": diag_dir, "mode": "overwrite"}, }, strict=True, + nesting_buffer=1, ) def density(x, y): @@ -157,6 +157,7 @@ def plot_file_for_qty(plot_dir, qty, time): def plot(diag_dir, plot_dir): run = Run(diag_dir) + pop_name = "protons" for time in timestamps: run.GetDivB(time).plot( filename=plot_file_for_qty(plot_dir, "divb", time), @@ -167,7 +168,7 @@ def plot(diag_dir, plot_dir): run.GetRanks(time).plot( filename=plot_file_for_qty(plot_dir, "Ranks", time), plot_patches=True ) - run.GetN(time, pop_name="protons").plot( + run.GetN(time, pop_name=pop_name).plot( filename=plot_file_for_qty(plot_dir, "N", time), plot_patches=True ) for c in ["x", "y", "z"]: @@ -183,14 +184,26 @@ def plot(diag_dir, plot_dir): vmin=-2, vmax=2, ) + run.GetPressure(time, pop_name=pop_name).plot( + filename=plot_file_for_qty(plot_dir, "Pxx", time), + qty=pop_name + "_Pxx", + plot_patches=True, + vmin=0, + vmax=2.7, + ) + run.GetPressure(time, pop_name=pop_name).plot( + filename=plot_file_for_qty(plot_dir, "Pzz", time), + qty=pop_name + "_Pzz", + plot_patches=True, + vmin=0, + vmax=1.5, + ) class HarrisTest(SimulatorTest): def __init__(self, *args, **kwargs): super(HarrisTest, self).__init__(*args, **kwargs) self.simulator = None - self.plot_dir = Path(f"{diag_dir}_plots") / str(cpp.mpi_size()) - self.plot_dir.mkdir(parents=True, exist_ok=True) def tearDown(self): super(HarrisTest, self).tearDown() @@ -203,7 +216,9 @@ def test_run(self): self.register_diag_dir_for_cleanup(diag_dir) Simulator(config()).run().reset() if cpp.mpi_rank() == 0: - plot(diag_dir, self.plot_dir) + plot_dir = Path(f"{diag_dir}_plots") / str(cpp.mpi_size()) + plot_dir.mkdir(parents=True, exist_ok=True) + plot(diag_dir, plot_dir) cpp.mpi_barrier() return self diff --git a/tests/functional/ionIonBeam/ion_ion_beam1d.py b/tests/functional/ionIonBeam/ion_ion_beam1d.py index 8ebd4a7f4..43cb3b9f2 100644 --- a/tests/functional/ionIonBeam/ion_ion_beam1d.py +++ b/tests/functional/ionIonBeam/ion_ion_beam1d.py @@ -27,10 +27,12 @@ def config(): cells=165, dl=0.2, hyper_resistivity=0.01, - refinement_boxes={ - "L0": {"B0": [(50,), (110,)]}, - "L1": {"B0": [(140,), (180,)]}, - }, + refinement="tagging", + max_nbr_levels=3, + # refinement_boxes={ + # "L0": {"B0": [(50,), (110,)]}, + # "L1": {"B0": [(140,), (180,)]}, + # }, diag_options={ "format": "phareh5", "options": {"dir": "ion_ion_beam1d", "mode": "overwrite"}, diff --git a/tests/simulator/CMakeLists.txt b/tests/simulator/CMakeLists.txt index 00f1198f6..dde92f091 100644 --- a/tests/simulator/CMakeLists.txt +++ b/tests/simulator/CMakeLists.txt @@ -29,7 +29,8 @@ if(HighFive) endif(testMPI) - phare_python3_exec(11 test_diagnostic_timestamps test_diagnostic_timestamps.py ${CMAKE_CURRENT_BINARY_DIR}) + + # phare_python3_exec(11 test_diagnostic_timestamps test_diagnostic_timestamps.py ${CMAKE_CURRENT_BINARY_DIR}) endif() diff --git a/tests/simulator/advance/test_fields_advance_1d.py b/tests/simulator/advance/test_fields_advance_1d.py index 0c23fa92a..d4b8f3f8c 100644 --- a/tests/simulator/advance/test_fields_advance_1d.py +++ b/tests/simulator/advance/test_fields_advance_1d.py @@ -53,7 +53,7 @@ def test_overlaped_fields_are_equal_with_min_max_patch_size_of_max_ghosts( self, interp_order, refinement_boxes ): print(f"{self._testMethodName}_{ndim}d") - time_step_nbr = 1 + time_step_nbr = 3 time_step = 0.001 from pyphare.pharein.simulation import check_patch_size diff --git a/tests/simulator/test_advance.py b/tests/simulator/test_advance.py index 13c30b7bf..443711528 100644 --- a/tests/simulator/test_advance.py +++ b/tests/simulator/test_advance.py @@ -74,7 +74,7 @@ def getHierarchy( extra_diag_options["mode"] = "overwrite" extra_diag_options["dir"] = diag_outputs - # self.register_diag_dir_for_cleanup(diag_outputs) + self.register_diag_dir_for_cleanup(diag_outputs) sim = Simulation( smallest_patch_size=smallest_patch_size, largest_patch_size=largest_patch_size, @@ -656,9 +656,9 @@ def assert_time_in_hier(*ts): checks = 0 ndim = global_vars.sim.ndim lvl_steps = global_vars.sim.level_time_steps - assert len(lvl_steps) == 2, ( - "this test is only configured for L0 -> L1 refinement comparisons" - ) + assert ( + len(lvl_steps) == 2 + ), "this test is only configured for L0 -> L1 refinement comparisons" coarse_ilvl = 0 fine_ilvl = 1