Skip to content

Commit fe4cd3c

Browse files
committed
:/
1 parent 2e4e861 commit fe4cd3c

File tree

5 files changed

+29
-66
lines changed

5 files changed

+29
-66
lines changed

src/amr/data/field/initializers/samrai_hdf5_field_initializer.hpp

+4-25
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,16 @@
11
#ifndef _PHARE_AMR_DATA_FIELD_INITIAZILIZERS_SAMRAI_HDF5_INITIALIZER_HPP_
22
#define _PHARE_AMR_DATA_FIELD_INITIAZILIZERS_SAMRAI_HDF5_INITIALIZER_HPP_
33

4-
#include <memory>
5-
#include <random>
64
#include <cassert>
7-
#include <functional>
85

9-
#include "core/def.hpp"
10-
#include "core/logger.hpp"
116
#include "core/data/grid/gridlayoutdefs.hpp"
127
#include "core/data/ndarray/ndarray_vector.hpp"
13-
#include "core/hybrid/hybrid_quantities.hpp"
8+
149
#include "core/utilities/types.hpp"
15-
#include "core/data/ions/particle_initializers/particle_initializer.hpp"
16-
#include "core/data/particles/particle.hpp"
17-
#include "initializer/data_provider.hpp"
1810
#include "core/utilities/point/point.hpp"
1911

20-
#include "hdf5/detail/h5/h5_file.hpp"
21-
22-
23-
#include "SAMRAI/hier/PatchDataRestartManager.h"
24-
2512
#include "amr/data/initializers/samrai_hdf5_initializer.hpp"
2613

27-
2814
namespace PHARE::amr
2915
{
3016

@@ -45,15 +31,8 @@ template<typename Field_t, typename GridLayout>
4531
void SamraiHDF5FieldInitializer<Field_t, GridLayout>::load(Field_t& field,
4632
GridLayout const& layout) const
4733
{
48-
bool static constexpr c_ordering = false;
49-
50-
auto const local_cell = [&](auto const& box, auto const& point) {
51-
core::Point<std::uint32_t, dimension> localPoint;
52-
auto localStart = layout.physicalStartIndex(core::QtyCentering::dual, core::Direction::X);
53-
for (std::size_t i = 0; i < dimension; ++i)
54-
localPoint[i] = point[i] - (box.lower[i] - localStart);
55-
return localPoint;
56-
};
34+
auto const local_cell
35+
= [&](auto const& box, auto const& point) { return layout.AMRToLocal(point, box); };
5736

5837
auto const& dest_box = layout.AMRBox();
5938
auto const& centering = layout.centering(field.physicalQuantity());
@@ -73,7 +52,7 @@ void SamraiHDF5FieldInitializer<Field_t, GridLayout>::load(Field_t& field,
7352
src_box.upper[i] - src_box.lower[i] + (GridLayout::nbrGhosts() * 2)
7453
+ (centering[i] == core::QtyCentering::primal ? 1 : 0));
7554
})}};
76-
auto data_view = core::make_array_view<c_ordering>(data.data(), *lcl_src_box.shape());
55+
auto data_view = core::make_array_view(data.data(), *lcl_src_box.shape());
7756
for (auto const& point : overlap_box)
7857
field(local_cell(dest_box, point)) = data_view(local_cell(src_box, point));
7958
}

src/amr/data/initializers/samrai_hdf5_initializer.hpp

+2-15
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,15 @@
22
#define _PHARE_AMR_DATA_INITIAZILIZERS_SAMRAI_HDF5_INITIALIZER_HPP_
33

44
#include <memory>
5-
#include <random>
65
#include <cassert>
7-
#include <functional>
86

9-
#include "core/data/grid/gridlayoutdefs.hpp"
10-
#include "core/hybrid/hybrid_quantities.hpp"
11-
#include "core/utilities/types.hpp"
12-
#include "core/data/ions/particle_initializers/particle_initializer.hpp"
13-
#include "core/data/particles/particle.hpp"
14-
#include "initializer/data_provider.hpp"
15-
#include "core/utilities/point/point.hpp"
167
#include "core/def.hpp"
17-
#include "core/logger.hpp"
18-
8+
#include "core/utilities/types.hpp"
9+
#include "core/utilities/box/box.hpp"
1910
#include "hdf5/detail/h5/h5_file.hpp"
2011

2112
#include "SAMRAI/tbox/HDFDatabase.h"
2213

23-
#include "amr/utilities/box/amr_box.hpp"
24-
25-
#include "SAMRAI/hier/PatchDataRestartManager.h"
26-
2714

2815
namespace PHARE::amr
2916
{

src/amr/data/particles/initializers/samrai_hdf5_particle_initializer.hpp

+3-16
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,15 @@
11
#ifndef _PHARE_AMR_DATA_PARTICLE_INITIAZILIZERS_SAMRAI_HDF5_INITIALIZER_HPP_
22
#define _PHARE_AMR_DATA_PARTICLE_INITIAZILIZERS_SAMRAI_HDF5_INITIALIZER_HPP_
33

4-
#include <memory>
5-
#include <random>
64
#include <cassert>
7-
#include <functional>
85

9-
#include "core/def.hpp"
10-
#include "core/logger.hpp"
11-
#include "core/utilities/box/box.hpp"
12-
13-
#include "core/data/grid/gridlayoutdefs.hpp"
14-
#include "core/hybrid/hybrid_quantities.hpp"
156
#include "core/utilities/types.hpp"
16-
#include "core/data/ions/particle_initializers/particle_initializer.hpp"
17-
#include "core/data/particles/particle.hpp"
18-
#include "initializer/data_provider.hpp"
7+
#include "core/utilities/box/box.hpp"
198
#include "core/utilities/point/point.hpp"
20-
21-
22-
#include "hdf5/detail/h5/h5_file.hpp"
9+
#include "core/data/ions/particle_initializers/particle_initializer.hpp"
2310

2411
#include "core/data/particles/particle_packer.hpp"
25-
#include "amr/data/field/initializers/samrai_hdf5_field_initializer.hpp"
12+
#include "amr/data/initializers/samrai_hdf5_initializer.hpp"
2613

2714

2815
namespace PHARE::amr

src/core/data/grid/gridlayout.hpp

+9-3
Original file line numberDiff line numberDiff line change
@@ -802,24 +802,30 @@ namespace core
802802
* This method only deals with **cell** indexes.
803803
*/
804804
template<typename T>
805-
NO_DISCARD auto AMRToLocal(Point<T, dimension> AMRPoint) const
805+
NO_DISCARD auto AMRToLocal(Point<T, dimension> const& AMRPoint,
806+
Box<int, dimension> const& localbox) const
806807
{
807808
static_assert(std::is_integral_v<T>, "Error, must be MeshIndex (integral Point)");
808809
Point<std::uint32_t, dimension> localPoint;
809810

810811
// any direction, it's the same because we want cells
811812
auto localStart = physicalStartIndex(QtyCentering::dual, Direction::X);
812813

813-
//
814814
for (auto i = 0u; i < dimension; ++i)
815815
{
816-
int local = AMRPoint[i] - (AMRBox_.lower[i] - localStart);
816+
int local = AMRPoint[i] - (localbox.lower[i] - localStart);
817817
assert(local >= 0);
818818
localPoint[i] = local;
819819
}
820820
return localPoint;
821821
}
822822

823+
template<typename T>
824+
NO_DISCARD auto AMRToLocal(Point<T, dimension> const& AMRPoint) const
825+
{
826+
return AMRToLocal(AMRPoint, AMRBox_);
827+
}
828+
823829

824830
/**
825831
* @brief AMRToLocal returns the local Box associated with the given AMR one.

tests/simulator/test_init_from_restart.py

+11-7
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,21 @@
1515
from tests.diagnostic import dump_all_diags
1616

1717
timestep = 0.001
18-
first_mpi_size = 4
18+
time_step_nbr = 1
19+
first_mpi_size = 1
1920
ppc = 100
2021
cells = 200
2122
first_out = "phare_outputs/reinit/first"
2223
secnd_out = "phare_outputs/reinit/secnd"
23-
timestamps = np.array([timestep * 4])
24+
timestamps = [0] # np.array([timestep * 2, timestep * 4])
25+
restart_idx = Z = 0
2426
simInitArgs = dict(
25-
largest_patch_size=100,
26-
time_step_nbr=5,
27+
# largest_patch_size=100,
28+
time_step_nbr=time_step_nbr,
2729
time_step=timestep,
2830
cells=cells,
2931
dl=0.3,
30-
init_options=dict(dir=f"{first_out}/00000.00400", mpi_size=first_mpi_size),
32+
init_options=dict(dir=f"{first_out}/00000.00{Z}00", mpi_size=first_mpi_size),
3133
diag_options=dict(format="phareh5", options=dict(dir=secnd_out, mode="overwrite")),
3234
)
3335

@@ -38,7 +40,7 @@ def setup_model(sim):
3840
alpha={"mass": 4.0, "charge": 1, "nbr_part_per_cell": ppc},
3941
)
4042
ph.ElectronModel(closure="isothermal", Te=0.12)
41-
dump_all_diags(model.populations, timestamps)
43+
dump_all_diags(model.populations, timestamps=timestamps)
4244
return model
4345

4446

@@ -68,7 +70,7 @@ def test_reinit(self):
6870
phut.assert_fp_any_all_close(a, b)
6971

7072
def get_merged(hier):
71-
return single_patch_per_level_per_pop_from(datahier0)
73+
return single_patch_per_level_per_pop_from(hier)
7274

7375
ds = [get_merged(datahier0), get_merged(datahier1)]
7476
for key in ["alpha", "protons"]:
@@ -78,6 +80,7 @@ def get_merged(hier):
7880

7981

8082
def run_first_sim():
83+
"""uses params from tests_restarts.py"""
8184
simput = copy.deepcopy(test_restarts.simArgs)
8285
simput["restart_options"]["dir"] = first_out
8386
simput["restart_options"]["timestamps"] = timestamps
@@ -88,6 +91,7 @@ def run_first_sim():
8891

8992

9093
def launch():
94+
"""Launch secondary process to run first simulation to avoid initalizing MPI now"""
9195
cmd = f"mpirun -n {first_mpi_size} python3 -O tests/simulator/test_init_from_restart.py lol"
9296
proc = subprocess.run(cmd.split(" "), check=True, capture_output=True)
9397
return (proc.stdout + proc.stderr).decode().strip()

0 commit comments

Comments
 (0)