Skip to content

Commit

Permalink
Improved parameter normalization for Grid2D.
Browse files Browse the repository at this point in the history
  • Loading branch information
niklas-uhl committed Dec 8, 2023
1 parent fc17adc commit 07d82bc
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 10 deletions.
14 changes: 11 additions & 3 deletions kagen/generators/grid/grid_2d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,18 @@ namespace kagen {
PGeneratorConfig
Grid2DFactory::NormalizeParameters(PGeneratorConfig config, PEID, const PEID size, const bool output) const {
EnsureSquarePowerOfTwoChunkSize(config, size, output);

if (config.grid_x == 0 && config.grid_y == 0) {
if (config.n == 0) {
throw ConfigurationError("either (x, y) or n must be nonzero");
} else {
const SInt sqrt_n = std::sqrt(config.n);
config.grid_x = sqrt_n;
config.grid_y = sqrt_n;
}
}
if (config.p == 0) {
if (config.grid_x == 0 || config.grid_y == 0 || config.m == 0) {
throw ConfigurationError("at least two parameters out of {(x, y), m, p} must be nonzero");
if (config.m == 0) {
throw ConfigurationError("if p is not given, m must be nonzero");
}

const SInt num_deg2_vertices = config.periodic ? 0 : 4;
Expand Down
13 changes: 6 additions & 7 deletions kagen/kagen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -336,12 +336,13 @@ Graph KaGen::GenerateRHG_MD(const LPFloat gamma, const SInt m, const LPFloat d,

namespace {
Graph GenerateGrid2D_Impl(
PGeneratorConfig& config, const SInt grid_x, const SInt grid_y, const LPFloat p, const SInt m, const bool periodic,
const bool coordinates, const GraphRepresentation representation, MPI_Comm comm) {
PGeneratorConfig& config, const SInt n, const SInt grid_x, const SInt grid_y, const LPFloat p, const SInt m,
const bool periodic, const bool coordinates, const GraphRepresentation representation, MPI_Comm comm) {
config.generator = GeneratorType::GRID_2D;
config.grid_x = grid_x;
config.grid_y = grid_y;
config.p = p;
config.n = n;
config.m = m;
config.periodic = periodic;
config.coordinates = coordinates;
Expand All @@ -351,17 +352,15 @@ Graph GenerateGrid2D_Impl(

Graph KaGen::GenerateGrid2D(
const SInt grid_x, const SInt grid_y, const LPFloat p, const bool periodic, const bool coordinates) {
return GenerateGrid2D_Impl(*config_, grid_x, grid_y, p, 0, periodic, coordinates, representation_, comm_);
return GenerateGrid2D_Impl(*config_, 0, grid_x, grid_y, p, 0, periodic, coordinates, representation_, comm_);
}

Graph KaGen::GenerateGrid2D_N(const SInt n, const LPFloat p, const bool periodic, const bool coordinates) {
const SInt sqrt_n = std::sqrt(n);
return GenerateGrid2D(sqrt_n, sqrt_n, p, periodic, coordinates);
return GenerateGrid2D_Impl(*config_, n, 0, 0, p, 0, periodic, coordinates, representation_, comm_);
}

Graph KaGen::GenerateGrid2D_NM(const SInt n, const SInt m, const bool periodic, const bool coordinates) {
const SInt sqrt_n = std::sqrt(n);
return GenerateGrid2D_Impl(*config_, sqrt_n, sqrt_n, 0.0, m, periodic, coordinates, representation_, comm_);
return GenerateGrid2D_Impl(*config_, n, 0, 0, 0.0, m, periodic, coordinates, representation_, comm_);
}

namespace {
Expand Down

0 comments on commit 07d82bc

Please sign in to comment.