Skip to content

Commit

Permalink
Merge branch 'renaming_io' into 'main'
Browse files Browse the repository at this point in the history
Update naming conventions in io

See merge request gysela-developpers/gyselalibxx!616
  • Loading branch information
EmilyBourne committed Jul 29, 2024
1 parent a52eeec commit 9d25977
Show file tree
Hide file tree
Showing 13 changed files with 61 additions and 60 deletions.
4 changes: 2 additions & 2 deletions simulations/geometryRTheta/diocotron/diocotron.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,11 +75,11 @@ int main(int argc, char** argv)
start_simulation = std::chrono::system_clock::now();

// Build the mesh_rp for the space. ------------------------------------------------------------------
IDomainR const mesh_r = init_pseudo_uniform_spline_dependent_domain<
IDomainR const mesh_r = init_pseudo_uniform_spline_dependent_idx_range<
IDimR,
BSplinesR,
SplineInterpPointsR>(conf_gyselalibxx, "r");
IDomainP const mesh_p = init_pseudo_uniform_spline_dependent_domain<
IDomainP const mesh_p = init_pseudo_uniform_spline_dependent_idx_range<
IDimP,
BSplinesP,
SplineInterpPointsP>(conf_gyselalibxx, "p");
Expand Down
4 changes: 2 additions & 2 deletions simulations/geometryRTheta/vortex_merger/vortex_merger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,11 +79,11 @@ int main(int argc, char** argv)
double const dt(PCpp_double(conf_gyselalibxx, ".Time.delta_t"));
double const final_T(PCpp_double(conf_gyselalibxx, ".Time.final_T"));

IDomainR const mesh_r = init_pseudo_uniform_spline_dependent_domain<
IDomainR const mesh_r = init_pseudo_uniform_spline_dependent_idx_range<
IDimR,
BSplinesR,
SplineInterpPointsR>(conf_gyselalibxx, "r");
IDomainP const mesh_p = init_pseudo_uniform_spline_dependent_domain<
IDomainP const mesh_p = init_pseudo_uniform_spline_dependent_idx_range<
IDimP,
BSplinesP,
SplineInterpPointsP>(conf_gyselalibxx, "p");
Expand Down
4 changes: 2 additions & 2 deletions simulations/geometryVparMu/collisions/test_collSpVparMu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,11 @@ int main(int argc, char** argv)
// --------- INITIALISATION ---------
// ---> Reading of the mesh configuration from input YAML file
// -----> Reading of mesh info
IdxRangeVpar const idxrange_vpar = init_spline_dependent_domain<
IdxRangeVpar const idxrange_vpar = init_spline_dependent_idx_range<
GridVpar,
BSplinesVpar,
SplineInterpPointsVpar>(conf_collision, "vpar");
IdxRangeMu const idxrange_mu = init_spline_dependent_domain<
IdxRangeMu const idxrange_mu = init_spline_dependent_idx_range<
GridMu,
BSplinesMu,
SplineInterpPointsMu>(conf_collision, "mu");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,11 @@ int main(int argc, char** argv)

// Reading config
// --> Mesh info
IDomainX const mesh_x = init_spline_dependent_domain<
IDomainX const mesh_x = init_spline_dependent_idx_range<
IDimX,
BSplinesX,
SplineInterpPointsX>(conf_voicexx, "x");
IDomainVx const mesh_vx = init_spline_dependent_domain<
IDomainVx const mesh_vx = init_spline_dependent_idx_range<
IDimVx,
BSplinesVx,
SplineInterpPointsVx>(conf_voicexx, "vx");
Expand Down
4 changes: 2 additions & 2 deletions simulations/geometryXVx/landau/landau_fem_uniform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,11 @@ int main(int argc, char** argv)

// Reading config
// --> Mesh info
IDomainX const mesh_x = init_spline_dependent_domain<
IDomainX const mesh_x = init_spline_dependent_idx_range<
IDimX,
BSplinesX,
SplineInterpPointsX>(conf_voicexx, "x");
IDomainVx const mesh_vx = init_spline_dependent_domain<
IDomainVx const mesh_vx = init_spline_dependent_idx_range<
IDimVx,
BSplinesVx,
SplineInterpPointsVx>(conf_voicexx, "vx");
Expand Down
4 changes: 2 additions & 2 deletions simulations/geometryXVx/landau/landau_fft.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,11 @@ int main(int argc, char** argv)

// Reading config
// --> Mesh info
IDomainX const mesh_x = init_spline_dependent_domain<
IDomainX const mesh_x = init_spline_dependent_idx_range<
IDimX,
BSplinesX,
SplineInterpPointsX>(conf_voicexx, "x");
IDomainVx const mesh_vx = init_spline_dependent_domain<
IDomainVx const mesh_vx = init_spline_dependent_idx_range<
IDimVx,
BSplinesVx,
SplineInterpPointsVx>(conf_voicexx, "vx");
Expand Down
4 changes: 2 additions & 2 deletions simulations/geometryXVx/neutrals/neutrals.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,11 +77,11 @@ int main(int argc, char** argv)

// Reading config
// --> Mesh info
IDomainX const mesh_x = init_spline_dependent_domain<
IDomainX const mesh_x = init_spline_dependent_idx_range<
IDimX,
BSplinesX,
SplineInterpPointsX>(conf_voicexx, "x");
IDomainVx const mesh_vx = init_spline_dependent_domain<
IDomainVx const mesh_vx = init_spline_dependent_idx_range<
IDimVx,
BSplinesVx,
SplineInterpPointsVx>(conf_voicexx, "vx");
Expand Down
4 changes: 2 additions & 2 deletions simulations/geometryXVx/sheath/sheath.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -70,11 +70,11 @@ int main(int argc, char** argv)

// Reading config
// --> Mesh info
IDomainX const mesh_x = init_spline_dependent_domain<
IDomainX const mesh_x = init_spline_dependent_idx_range<
IDimX,
BSplinesX,
SplineInterpPointsX>(conf_voicexx, "x");
IDomainVx const mesh_vx = init_spline_dependent_domain<
IDomainVx const mesh_vx = init_spline_dependent_idx_range<
IDimVx,
BSplinesVx,
SplineInterpPointsVx>(conf_voicexx, "vx");
Expand Down
4 changes: 2 additions & 2 deletions simulations/geometryXY/guiding_center/guiding_center.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,12 +54,12 @@ int main(int argc, char** argv)
ddc::ScopeGuard ddc_scope(argc, argv);

// CREATING MESH AND SUPPORTS ----------------------------------------------------------------
IDomainX const interpolation_domain_x = init_spline_dependent_domain<
IDomainX const interpolation_domain_x = init_spline_dependent_idx_range<
IDimX,
BSplinesX,
SplineInterpPointsX>(conf_gyselalibxx, "x");

IDomainY const interpolation_domain_y = init_spline_dependent_domain<
IDomainY const interpolation_domain_y = init_spline_dependent_idx_range<
IDimY,
BSplinesY,
SplineInterpPointsY>(conf_gyselalibxx, "y");
Expand Down
8 changes: 4 additions & 4 deletions simulations/geometryXYVxVy/landau/landau4d_fft.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -53,19 +53,19 @@ int main(int argc, char** argv)

// Reading config
// --> Mesh info
IDomainX const mesh_x = init_spline_dependent_domain<
IDomainX const mesh_x = init_spline_dependent_idx_range<
IDimX,
BSplinesX,
SplineInterpPointsX>(conf_voicexx, "x");
IDomainY const mesh_y = init_spline_dependent_domain<
IDomainY const mesh_y = init_spline_dependent_idx_range<
IDimY,
BSplinesY,
SplineInterpPointsY>(conf_voicexx, "y");
IDomainVx const mesh_vx = init_spline_dependent_domain<
IDomainVx const mesh_vx = init_spline_dependent_idx_range<
IDimVx,
BSplinesVx,
SplineInterpPointsVx>(conf_voicexx, "vx");
IDomainVy const mesh_vy = init_spline_dependent_domain<
IDomainVy const mesh_vy = init_spline_dependent_idx_range<
IDimVy,
BSplinesVy,
SplineInterpPointsVy>(conf_voicexx, "vy");
Expand Down
2 changes: 2 additions & 0 deletions src/io/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ target_link_libraries("io"
PUBLIC
DDC::DDC
gslx::paraconfpp
gslx::utils

)

add_library("gslx::io" ALIAS "io")
58 changes: 28 additions & 30 deletions src/io/input.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

#include <paraconf.h>

#include "ddc_aliases.hpp"
#include "paraconfpp.hpp"

/**
Expand Down Expand Up @@ -34,9 +35,9 @@ void parse_executable_arguments(
PC_tree_t parse_executable_arguments(int argc, char** argv, char const* const params_yaml);

/**
* Initialise a domain which will serve as an interpolation domain for splines.
* Initialise an index range which will serve as an interpolation index range for splines.
*
* The domain is initialised using information from an input yaml file.
* The index range is initialised using information from an input yaml file.
* If the bsplines are uniform then the information to be read is:
* - .SplineMesh.<mesh_identifier>_min
* - .SplineMesh.<mesh_identifier>_max
Expand All @@ -47,35 +48,34 @@ PC_tree_t parse_executable_arguments(int argc, char** argv, char const* const pa
*
* This string indicates the name of a file which contains the knots of the bspline.
*
* This information is used to initialise the bsplines. The interpolation domain
* This information is used to initialise the bsplines. The interpolation index range
* is then created using the specified method.
*/
template <class IDim, class BSplines, class InterpPointInitMethod>
inline ddc::DiscreteDomain<IDim> init_spline_dependent_domain(
template <class Grid1D, class BSplines, class InterpPointInitMethod>
inline IdxRange<Grid1D> init_spline_dependent_idx_range(
PC_tree_t const& conf_voicexx,
std::string mesh_identifier)
{
if constexpr (BSplines::is_uniform()) {
using RDim = typename IDim::continuous_dimension_type;
using Coord = ddc::Coordinate<RDim>;
Coord min(PCpp_double(conf_voicexx, ".SplineMesh." + mesh_identifier + "_min"));
Coord max(PCpp_double(conf_voicexx, ".SplineMesh." + mesh_identifier + "_max"));
ddc::DiscreteVector<IDim> ncells(
using Dim = typename Grid1D::continuous_dimension_type;
using Coord1D = Coord<Dim>;
Coord1D min(PCpp_double(conf_voicexx, ".SplineMesh." + mesh_identifier + "_min"));
Coord1D max(PCpp_double(conf_voicexx, ".SplineMesh." + mesh_identifier + "_max"));
IdxStep<Grid1D> ncells(
PCpp_int(conf_voicexx, ".SplineMesh." + mesh_identifier + "_ncells"));
ddc::init_discrete_space<BSplines>(min, max, ncells);
} else {
throw "Non-uniform bspline initialisation is not yet handled";
}
ddc::init_discrete_space<IDim>(InterpPointInitMethod::template get_sampling<IDim>());
ddc::DiscreteDomain<IDim> interpolation_domain(
InterpPointInitMethod::template get_domain<IDim>());
return interpolation_domain;
ddc::init_discrete_space<Grid1D>(InterpPointInitMethod::template get_sampling<Grid1D>());
IdxRange<Grid1D> interpolation_idx_range(InterpPointInitMethod::template get_domain<Grid1D>());
return interpolation_idx_range;
}

/**
* Initialise a domain which will serve as an interpolation domain for splines.
* Initialise an index range which will serve as an interpolation index range for splines.
*
* The domain is initialised using information from an input yaml file.
* The index range is initialised using information from an input yaml file.
* This function should be used for non-uniform bsplines, but it initialises
* the break points uniformly. Such splines are referred to as pseudo-uniform
* as the cells on which the polynomials are defined are uniform. However they
Expand All @@ -87,23 +87,22 @@ inline ddc::DiscreteDomain<IDim> init_spline_dependent_domain(
* - .SplineMesh.<mesh_identifier>_max
* - .SplineMesh.<mesh_identifier>_ncells
*
* The interpolation domain is then created using the specified method.
* The interpolation index range is then created using the specified method.
*/
template <class IDim, class BSplines, class InterpPointInitMethod>
inline ddc::DiscreteDomain<IDim> init_pseudo_uniform_spline_dependent_domain(
template <class Grid1D, class BSplines, class InterpPointInitMethod>
inline IdxRange<Grid1D> init_pseudo_uniform_spline_dependent_idx_range(
PC_tree_t const& conf_voicexx,
std::string mesh_identifier)
{
static_assert(!BSplines::is_uniform());
using RDim = typename IDim::continuous_dimension_type;
using Coord = ddc::Coordinate<RDim>;
using Dim = typename Grid1D::continuous_dimension_type;
using Coord1D = Coord<Dim>;

Coord min(PCpp_double(conf_voicexx, ".SplineMesh." + mesh_identifier + "_min"));
Coord max(PCpp_double(conf_voicexx, ".SplineMesh." + mesh_identifier + "_max"));
ddc::DiscreteVector<IDim> ncells(
PCpp_int(conf_voicexx, ".SplineMesh." + mesh_identifier + "_ncells"));
Coord1D min(PCpp_double(conf_voicexx, ".SplineMesh." + mesh_identifier + "_min"));
Coord1D max(PCpp_double(conf_voicexx, ".SplineMesh." + mesh_identifier + "_max"));
IdxStep<Grid1D> ncells(PCpp_int(conf_voicexx, ".SplineMesh." + mesh_identifier + "_ncells"));

std::vector<Coord> break_points(ncells + 1);
std::vector<Coord1D> break_points(ncells + 1);

double const delta(double(max - min) / ncells);

Expand All @@ -114,8 +113,7 @@ inline ddc::DiscreteDomain<IDim> init_pseudo_uniform_spline_dependent_domain(
break_points[ncells] = max;

ddc::init_discrete_space<BSplines>(break_points);
ddc::init_discrete_space<IDim>(InterpPointInitMethod::template get_sampling<IDim>());
ddc::DiscreteDomain<IDim> interpolation_domain(
InterpPointInitMethod::template get_domain<IDim>());
return interpolation_domain;
ddc::init_discrete_space<Grid1D>(InterpPointInitMethod::template get_sampling<Grid1D>());
IdxRange<Grid1D> interpolation_idx_range(InterpPointInitMethod::template get_domain<Grid1D>());
return interpolation_idx_range;
}
17 changes: 9 additions & 8 deletions src/io/output.hpp
Original file line number Diff line number Diff line change
@@ -1,25 +1,26 @@
// SPDX-License-Identifier: MIT

#pragma once

#include <ddc/ddc.hpp>

#include "ddc_aliases.hpp"

/**
* @brief Expose a ddc::DiscreteDomain to PDI.
* @brief Expose a IdxRange to PDI.
*
* @param pdi_name The name given in PDI.
* @param dom ddc::DiscreteDomain that is exposed
* @param dom IdxRange that is exposed
*
*/
template <class Mesh>
void expose_mesh_to_pdi(std::string pdi_name, ddc::DiscreteDomain<Mesh> dom)
void expose_mesh_to_pdi(std::string pdi_name, IdxRange<Mesh> dom)
{
using Dim = typename Mesh::continuous_dimension_type;
using Field = ddc::Chunk<ddc::Coordinate<Dim>, ddc::DiscreteDomain<Mesh>>;
using Index = ddc::DiscreteElement<Mesh>;
using FieldMem = host_t<FieldMem<Coord<Dim>, IdxRange<Mesh>>>;
using Idx = Idx<Mesh>;

Field mesh_coord(dom);
for (Index const idx : dom) {
FieldMem mesh_coord(dom);
for (Idx const idx : dom) {
mesh_coord(idx) = ddc::coordinate(idx);
}
ddc::expose_to_pdi(pdi_name, mesh_coord);
Expand Down

0 comments on commit 9d25977

Please sign in to comment.