Skip to content

Commit

Permalink
Examples: Fix Types of Constants & Attributes
Browse files Browse the repository at this point in the history
Backports from openPMD#1316 and openPMD#1510
  • Loading branch information
ax3l committed Aug 18, 2023
1 parent 5de95b3 commit 927ba3d
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 15 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ Bug Fixes
"""""""""

- Don't require unitSI when reading a patch record component #1470
- Examples: Fix types of particle constant records #1316 #1510
- Python:

- DataFrame to ASCII: Header of First Column in CSV bug documentation third party
Expand Down
5 changes: 3 additions & 2 deletions examples/7_extended_write_serial.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,9 @@ int main()
{{io::UnitDimension::M, 1}});
electrons["displacement"]["x"].setUnitSI(1e-6);
electrons.erase("displacement");
electrons["weighting"][io::RecordComponent::SCALAR].makeConstant(
1.e-5);
electrons["weighting"][io::RecordComponent::SCALAR]
.resetDataset({io::Datatype::FLOAT, {1}})
.makeConstant(1.e-5);
}

io::Mesh mesh = cur_it.meshes["lowRez_2D_field"];
Expand Down
4 changes: 3 additions & 1 deletion examples/7_extended_write_serial.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,9 @@
electrons["displacement"].unit_dimension = {Unit_Dimension.M: 1}
electrons["displacement"]["x"].unit_SI = 1.e-6
del electrons["displacement"]
electrons["weighting"][SCALAR].make_constant(1.e-5)
electrons["weighting"][SCALAR] \
.reset_dataset(Dataset(np.dtype("float32"), extent=[1])) \
.make_constant(1.e-5)

mesh = cur_it.meshes["lowRez_2D_field"]
mesh.axis_labels = ["x", "y"]
Expand Down
28 changes: 16 additions & 12 deletions test/CoreTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@

using namespace openPMD;

Dataset globalDataset(Datatype::CHAR, {1});

TEST_CASE("versions_test", "[core]")
{
auto const apiVersion = getVersion();
Expand Down Expand Up @@ -439,11 +441,11 @@ TEST_CASE("record_constructor_test", "[core]")
ps["position"][RecordComponent::SCALAR].resetDataset(dset);
ps["positionOffset"][RecordComponent::SCALAR].resetDataset(dset);

REQUIRE(r["x"].unitSI() == 1);
REQUIRE(r["x"].resetDataset(dset).unitSI() == 1);
REQUIRE(r["x"].numAttributes() == 1); /* unitSI */
REQUIRE(r["y"].unitSI() == 1);
REQUIRE(r["y"].resetDataset(dset).unitSI() == 1);
REQUIRE(r["y"].numAttributes() == 1); /* unitSI */
REQUIRE(r["z"].unitSI() == 1);
REQUIRE(r["z"].resetDataset(dset).unitSI() == 1);
REQUIRE(r["z"].numAttributes() == 1); /* unitSI */
std::array<double, 7> zeros{{0., 0., 0., 0., 0., 0., 0.}};
REQUIRE(r.unitDimension() == zeros);
Expand Down Expand Up @@ -488,13 +490,15 @@ TEST_CASE("recordComponent_modification_test", "[core]")

r["x"].setUnitSI(2.55999e-7);
r["y"].setUnitSI(4.42999e-8);
REQUIRE(r["x"].unitSI() == static_cast<double>(2.55999e-7));
REQUIRE(
r["x"].resetDataset(dset).unitSI() == static_cast<double>(2.55999e-7));
REQUIRE(r["x"].numAttributes() == 1); /* unitSI */
REQUIRE(r["y"].unitSI() == static_cast<double>(4.42999e-8));
REQUIRE(
r["y"].resetDataset(dset).unitSI() == static_cast<double>(4.42999e-8));
REQUIRE(r["y"].numAttributes() == 1); /* unitSI */

r["z"].setUnitSI(1);
REQUIRE(r["z"].unitSI() == static_cast<double>(1));
REQUIRE(r["z"].resetDataset(dset).unitSI() == static_cast<double>(1));
REQUIRE(r["z"].numAttributes() == 1); /* unitSI */
}

Expand All @@ -505,13 +509,13 @@ TEST_CASE("mesh_constructor_test", "[core]")
Mesh &m = o.iterations[42].meshes["E"];

std::vector<double> pos{0};
REQUIRE(m["x"].unitSI() == 1);
REQUIRE(m["x"].resetDataset(globalDataset).unitSI() == 1);
REQUIRE(m["x"].numAttributes() == 2); /* unitSI, position */
REQUIRE(m["x"].position<double>() == pos);
REQUIRE(m["y"].unitSI() == 1);
REQUIRE(m["y"].resetDataset(globalDataset).unitSI() == 1);
REQUIRE(m["y"].numAttributes() == 2); /* unitSI, position */
REQUIRE(m["y"].position<double>() == pos);
REQUIRE(m["z"].unitSI() == 1);
REQUIRE(m["z"].resetDataset(globalDataset).unitSI() == 1);
REQUIRE(m["z"].numAttributes() == 2); /* unitSI, position */
REQUIRE(m["z"].position<double>() == pos);
REQUIRE(m.geometry() == Mesh::Geometry::cartesian);
Expand All @@ -534,9 +538,9 @@ TEST_CASE("mesh_modification_test", "[core]")
Series o = Series("./MyOutput_%T.json", Access::CREATE);

Mesh &m = o.iterations[42].meshes["E"];
m["x"];
m["y"];
m["z"];
m["x"].resetDataset(globalDataset);
m["y"].resetDataset(globalDataset);
m["z"].resetDataset(globalDataset);

m.setGeometry(Mesh::Geometry::spherical);
REQUIRE(m.geometry() == Mesh::Geometry::spherical);
Expand Down
8 changes: 8 additions & 0 deletions test/SerialIOTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6647,11 +6647,19 @@ void unfinished_iteration_test(
*/
it5.setAttribute("__openPMD_internal_fail", "asking for trouble");
auto it10 = write.writeIterations()[10];
Dataset ds(Datatype::INT, {10});
auto E_x = it10.meshes["E"]["x"];
auto e_density = it10.meshes["e_density"][RecordComponent::SCALAR];
auto electron_x = it10.particles["e"]["position"]["x"];
auto electron_mass =
it10.particles["e"]["mass"][RecordComponent::SCALAR];

RecordComponent *resetThese[] = {
&E_x, &e_density, &electron_x, &electron_mass};
for (RecordComponent *rc : resetThese)
{
rc->resetDataset(ds);
}
}
auto tryReading = [&config, file, encoding](
Access access,
Expand Down

0 comments on commit 927ba3d

Please sign in to comment.