Skip to content

Commit

Permalink
Petsc fixes (#530)
Browse files Browse the repository at this point in the history
* Petsc API changes to DMPlexCreateBoxMesh and change in typo from dim->dof in dmViewFromOptions in petsc

* The HDF5 data storage formatting in petsc was changed recently to ignore redundant fields such as cell-fields which hold our field seperated values. Until I can see how these different outputting versions can be used in ablate (i.e. smaller restart files only using aux/solution vectors) we will just default to the legacy version

* version update
  • Loading branch information
klbudzin authored Oct 10, 2024
1 parent d8f6f57 commit 5d56b74
Show file tree
Hide file tree
Showing 12 changed files with 124 additions and 108 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 3.18.4)
include(config/petscCompilers.cmake)

# Set the project details
project(ablateLibrary VERSION 0.12.33)
project(ablateLibrary VERSION 0.12.34)

# Load the Required 3rd Party Libaries
pkg_check_modules(PETSc REQUIRED IMPORTED_TARGET GLOBAL PETSc)
Expand Down
2 changes: 1 addition & 1 deletion src/domain/boxMesh.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ DM ablate::domain::BoxMesh::CreateBoxDM(const std::string& name, std::vector<int
// Make copy with PetscInt
std::vector<PetscInt> facesPetsc(faces.begin(), faces.end());
DM dm;
DMPlexCreateBoxMesh(PETSC_COMM_WORLD, (PetscInt)dimensions, simplex ? PETSC_TRUE : PETSC_FALSE, &facesPetsc[0], &lower[0], &upper[0], &boundaryTypes[0], PETSC_TRUE, &dm) >>
DMPlexCreateBoxMesh(PETSC_COMM_WORLD, (PetscInt)dimensions, simplex ? PETSC_TRUE : PETSC_FALSE, &facesPetsc[0], &lower[0], &upper[0], &boundaryTypes[0], PETSC_TRUE, 0, PETSC_TRUE, &dm) >>
utilities::PetscUtilities::checkError;
PetscObjectSetName((PetscObject)dm, name.c_str()) >> utilities::PetscUtilities::checkError;
return dm;
Expand Down
2 changes: 1 addition & 1 deletion src/domain/boxMeshBoundaryCells.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ DM ablate::domain::BoxMeshBoundaryCells::CreateBoxDM(const std::string& name, st
// Make copy with PetscInt
std::vector<PetscInt> facesPetsc(faces.begin(), faces.end());
DM dm;
DMPlexCreateBoxMesh(PETSC_COMM_WORLD, (PetscInt)dimensions, simplex ? PETSC_TRUE : PETSC_FALSE, &facesPetsc[0], &lower[0], &upper[0], nullptr, PETSC_TRUE, &dm) >>
DMPlexCreateBoxMesh(PETSC_COMM_WORLD, (PetscInt)dimensions, simplex ? PETSC_TRUE : PETSC_FALSE, &facesPetsc[0], &lower[0], &upper[0], nullptr, PETSC_TRUE, 0, PETSC_TRUE, &dm) >>
utilities::PetscUtilities::checkError;
PetscObjectSetName((PetscObject)dm, name.c_str()) >> utilities::PetscUtilities::checkError;
return dm;
Expand Down
8 changes: 8 additions & 0 deletions src/io/hdf5MultiFileSerializer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,14 @@

ablate::io::Hdf5MultiFileSerializer::Hdf5MultiFileSerializer(std::shared_ptr<ablate::io::interval::Interval> interval, const std::shared_ptr<parameters::Parameters>& options)
: interval(std::move(interval)), rootOutputDirectory(environment::RunEnvironment::Get().GetOutputDirectory()) {
// New petsc HDF5 Data Storage as of 09/23/24, for now we will default to the legacy version until I understand more of the different
// outputting version available and how they mesh with ablate
{
PetscBool hdf5VersionFound;
PetscOptionsHasName(nullptr, nullptr, "-dm_plex_view_hdf5_storage_version", &hdf5VersionFound);
if (!hdf5VersionFound) PetscOptionsSetValue(nullptr, "-dm_plex_view_hdf5_storage_version", "1.1.0");
}

// Load the metadata from the file is available, otherwise set to 0
auto restartFilePath = rootOutputDirectory / "restart.rst";

Expand Down
8 changes: 8 additions & 0 deletions src/io/hdf5Serializer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,14 @@
#include "utilities/petscUtilities.hpp"

ablate::io::Hdf5Serializer::Hdf5Serializer(std::shared_ptr<ablate::io::interval::Interval> interval) : interval(std::move(interval)) {
// New petsc HDF5 Data Storage as of 09/23/24, for now we will default to the legacy version until I understand more of the different
// outputting version available and how they mesh with ablate
{
PetscBool hdf5VersionFound;
PetscOptionsHasName(nullptr, nullptr, "-dm_plex_view_hdf5_storage_version", &hdf5VersionFound);
if (!hdf5VersionFound) PetscOptionsSetValue(nullptr, "-dm_plex_view_hdf5_storage_version", "1.1.0");
}

// Load the metadata from the file is available, otherwise set to 0
auto restartFilePath = environment::RunEnvironment::Get().GetOutputDirectory() / "restart.rst";

Expand Down
18 changes: 9 additions & 9 deletions tests/integrationTests/inputs/domain/dmViewFromOptions.txt
Original file line number Diff line number Diff line change
Expand Up @@ -88,15 +88,15 @@ Cones:
coordinates with 1 fields
field 0 with 2 components
Process 0:
( 4) dim 2 offset 0 0. 0.
( 5) dim 2 offset 2 0.5 0.
( 6) dim 2 offset 4 1. 0.
( 7) dim 2 offset 6 0. 0.5
( 8) dim 2 offset 8 0.5 0.5
( 9) dim 2 offset 10 1. 0.5
( 10) dim 2 offset 12 0. 1.
( 11) dim 2 offset 14 0.5 1.
( 12) dim 2 offset 16 1. 1.
( 4) dof 2 offset 0 0. 0.
( 5) dof 2 offset 2 0.5 0.
( 6) dof 2 offset 4 1. 0.
( 7) dof 2 offset 6 0. 0.5
( 8) dof 2 offset 8 0.5 0.5
( 9) dof 2 offset 10 1. 0.5
( 10) dof 2 offset 12 0. 1.
( 11) dof 2 offset 14 0.5 1.
( 12) dof 2 offset 16 1. 1.
Labels:
Label 'marker':
[0]: 4 (4)
Expand Down
68 changes: 34 additions & 34 deletions tests/integrationTests/inputs/domain/extrudeBoundaryTest.txt
Original file line number Diff line number Diff line change
Expand Up @@ -468,40 +468,40 @@ Cones:
coordinates with 1 fields
field 0 with 2 components
Process 0:
( 24) dim 2 offset 0 0. 0.
( 25) dim 2 offset 2 -0.176777 -0.176777
( 26) dim 2 offset 4 0.25 0.
( 27) dim 2 offset 6 0.25 -0.25
( 28) dim 2 offset 8 0.5 0.
( 29) dim 2 offset 10 0.5 -0.25
( 30) dim 2 offset 12 0.75 0.
( 31) dim 2 offset 14 0.75 -0.25
( 32) dim 2 offset 16 1. 0.
( 33) dim 2 offset 18 1.17678 -0.176777
( 34) dim 2 offset 20 0. 0.25
( 35) dim 2 offset 22 -0.25 0.25
( 36) dim 2 offset 24 0. 0.5
( 37) dim 2 offset 26 -0.25 0.5
( 38) dim 2 offset 28 0. 0.75
( 39) dim 2 offset 30 -0.25 0.75
( 40) dim 2 offset 32 0. 1.
( 41) dim 2 offset 34 -0.176777 1.17678
( 42) dim 2 offset 36 0.25 0.25
( 43) dim 2 offset 38 0.5 0.25
( 44) dim 2 offset 40 0.75 0.25
( 45) dim 2 offset 42 1. 0.25
( 46) dim 2 offset 44 0.25 0.5
( 47) dim 2 offset 46 0.5 0.5
( 48) dim 2 offset 48 0.75 0.5
( 49) dim 2 offset 50 1. 0.5
( 50) dim 2 offset 52 0.25 0.75
( 51) dim 2 offset 54 0.5 0.75
( 52) dim 2 offset 56 0.75 0.75
( 53) dim 2 offset 58 1. 0.75
( 54) dim 2 offset 60 0.25 1.
( 55) dim 2 offset 62 0.5 1.
( 56) dim 2 offset 64 0.75 1.
( 57) dim 2 offset 66 1. 1.
( 24) dof 2 offset 0 0. 0.
( 25) dof 2 offset 2 -0.176777 -0.176777
( 26) dof 2 offset 4 0.25 0.
( 27) dof 2 offset 6 0.25 -0.25
( 28) dof 2 offset 8 0.5 0.
( 29) dof 2 offset 10 0.5 -0.25
( 30) dof 2 offset 12 0.75 0.
( 31) dof 2 offset 14 0.75 -0.25
( 32) dof 2 offset 16 1. 0.
( 33) dof 2 offset 18 1.17678 -0.176777
( 34) dof 2 offset 20 0. 0.25
( 35) dof 2 offset 22 -0.25 0.25
( 36) dof 2 offset 24 0. 0.5
( 37) dof 2 offset 26 -0.25 0.5
( 38) dof 2 offset 28 0. 0.75
( 39) dof 2 offset 30 -0.25 0.75
( 40) dof 2 offset 32 0. 1.
( 41) dof 2 offset 34 -0.176777 1.17678
( 42) dof 2 offset 36 0.25 0.25
( 43) dof 2 offset 38 0.5 0.25
( 44) dof 2 offset 40 0.75 0.25
( 45) dof 2 offset 42 1. 0.25
( 46) dof 2 offset 44 0.25 0.5
( 47) dof 2 offset 46 0.5 0.5
( 48) dof 2 offset 48 0.75 0.5
( 49) dof 2 offset 50 1. 0.5
( 50) dof 2 offset 52 0.25 0.75
( 51) dof 2 offset 54 0.5 0.75
( 52) dof 2 offset 56 0.75 0.75
( 53) dof 2 offset 58 1. 0.75
( 54) dof 2 offset 60 0.25 1.
( 55) dof 2 offset 62 0.5 1.
( 56) dof 2 offset 64 0.75 1.
( 57) dof 2 offset 66 1. 1.
Labels:
Label 'celltype':
[0]: 0 (4)
Expand Down
68 changes: 34 additions & 34 deletions tests/integrationTests/inputs/domain/meshMappingTest.txt
Original file line number Diff line number Diff line change
Expand Up @@ -428,40 +428,40 @@ Cones:
coordinates with 1 fields
field 0 with 2 components
Process 0:
( 24) dim 2 offset 0 1. 2.
( 25) dim 2 offset 2 0.823223 1.82322
( 26) dim 2 offset 4 1.25 2.
( 27) dim 2 offset 6 1.25 1.75
( 28) dim 2 offset 8 1.5 2.
( 29) dim 2 offset 10 1.5 1.75
( 30) dim 2 offset 12 1.75 2.
( 31) dim 2 offset 14 1.75 1.75
( 32) dim 2 offset 16 2. 2.
( 33) dim 2 offset 18 2.17678 1.82322
( 34) dim 2 offset 20 1. 2.25
( 35) dim 2 offset 22 0.75 2.25
( 36) dim 2 offset 24 1. 2.5
( 37) dim 2 offset 26 0.75 2.5
( 38) dim 2 offset 28 1. 2.75
( 39) dim 2 offset 30 0.75 2.75
( 40) dim 2 offset 32 1. 3.
( 41) dim 2 offset 34 0.823223 3.17678
( 42) dim 2 offset 36 1.25 2.25
( 43) dim 2 offset 38 1.5 2.25
( 44) dim 2 offset 40 1.75 2.25
( 45) dim 2 offset 42 2. 2.25
( 46) dim 2 offset 44 1.25 2.5
( 47) dim 2 offset 46 1.5 2.5
( 48) dim 2 offset 48 1.75 2.5
( 49) dim 2 offset 50 2. 2.5
( 50) dim 2 offset 52 1.25 2.75
( 51) dim 2 offset 54 1.5 2.75
( 52) dim 2 offset 56 1.75 2.75
( 53) dim 2 offset 58 2. 2.75
( 54) dim 2 offset 60 1.25 3.
( 55) dim 2 offset 62 1.5 3.
( 56) dim 2 offset 64 1.75 3.
( 57) dim 2 offset 66 2. 3.
( 24) dof 2 offset 0 1. 2.
( 25) dof 2 offset 2 0.823223 1.82322
( 26) dof 2 offset 4 1.25 2.
( 27) dof 2 offset 6 1.25 1.75
( 28) dof 2 offset 8 1.5 2.
( 29) dof 2 offset 10 1.5 1.75
( 30) dof 2 offset 12 1.75 2.
( 31) dof 2 offset 14 1.75 1.75
( 32) dof 2 offset 16 2. 2.
( 33) dof 2 offset 18 2.17678 1.82322
( 34) dof 2 offset 20 1. 2.25
( 35) dof 2 offset 22 0.75 2.25
( 36) dof 2 offset 24 1. 2.5
( 37) dof 2 offset 26 0.75 2.5
( 38) dof 2 offset 28 1. 2.75
( 39) dof 2 offset 30 0.75 2.75
( 40) dof 2 offset 32 1. 3.
( 41) dof 2 offset 34 0.823223 3.17678
( 42) dof 2 offset 36 1.25 2.25
( 43) dof 2 offset 38 1.5 2.25
( 44) dof 2 offset 40 1.75 2.25
( 45) dof 2 offset 42 2. 2.25
( 46) dof 2 offset 44 1.25 2.5
( 47) dof 2 offset 46 1.5 2.5
( 48) dof 2 offset 48 1.75 2.5
( 49) dof 2 offset 50 2. 2.5
( 50) dof 2 offset 52 1.25 2.75
( 51) dof 2 offset 54 1.5 2.75
( 52) dof 2 offset 56 1.75 2.75
( 53) dof 2 offset 58 2. 2.75
( 54) dof 2 offset 60 1.25 3.
( 55) dof 2 offset 62 1.5 3.
( 56) dof 2 offset 64 1.75 3.
( 57) dof 2 offset 66 2. 3.
Labels:
Label 'celltype':
[0]: 0 (4)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -296,31 +296,31 @@ Cones:
coordinates with 1 fields
field 0 with 2 components
Process 0:
( 16) dim 2 offset 0 0. 0.
( 17) dim 2 offset 2 0.5 0.
( 18) dim 2 offset 4 1. 0.
( 19) dim 2 offset 6 1.5 0.
( 20) dim 2 offset 8 2. 0.
( 21) dim 2 offset 10 0. 0.75
( 22) dim 2 offset 12 0.5 0.75
( 23) dim 2 offset 14 1. 0.75
( 24) dim 2 offset 16 1.5 0.75
( 25) dim 2 offset 18 2. 0.75
( 26) dim 2 offset 20 0. 1.5
( 27) dim 2 offset 22 0.5 1.5
( 28) dim 2 offset 24 1. 1.5
( 29) dim 2 offset 26 1.5 1.5
( 30) dim 2 offset 28 2. 1.5
( 31) dim 2 offset 30 0. 2.25
( 32) dim 2 offset 32 0.5 2.25
( 33) dim 2 offset 34 1. 2.25
( 34) dim 2 offset 36 1.5 2.25
( 35) dim 2 offset 38 2. 2.25
( 36) dim 2 offset 40 0. 3.
( 37) dim 2 offset 42 0.5 3.
( 38) dim 2 offset 44 1. 3.
( 39) dim 2 offset 46 1.5 3.
( 40) dim 2 offset 48 2. 3.
( 16) dof 2 offset 0 0. 0.
( 17) dof 2 offset 2 0.5 0.
( 18) dof 2 offset 4 1. 0.
( 19) dof 2 offset 6 1.5 0.
( 20) dof 2 offset 8 2. 0.
( 21) dof 2 offset 10 0. 0.75
( 22) dof 2 offset 12 0.5 0.75
( 23) dof 2 offset 14 1. 0.75
( 24) dof 2 offset 16 1.5 0.75
( 25) dof 2 offset 18 2. 0.75
( 26) dof 2 offset 20 0. 1.5
( 27) dof 2 offset 22 0.5 1.5
( 28) dof 2 offset 24 1. 1.5
( 29) dof 2 offset 26 1.5 1.5
( 30) dof 2 offset 28 2. 1.5
( 31) dof 2 offset 30 0. 2.25
( 32) dof 2 offset 32 0.5 2.25
( 33) dof 2 offset 34 1. 2.25
( 34) dof 2 offset 36 1.5 2.25
( 35) dof 2 offset 38 2. 2.25
( 36) dof 2 offset 40 0. 3.
( 37) dof 2 offset 42 0.5 3.
( 38) dof 2 offset 44 1. 3.
( 39) dof 2 offset 46 1.5 3.
( 40) dof 2 offset 48 2. 3.
Labels:
Label 'marker':
[0]: 16 (4)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ TEST_P(CompressibleFlowEulerDiffusionTestFixture, ShouldConvergeToExactSolution)
PetscInt nx1D = initialNx * PetscPowRealInt(2, l);
PetscInt nx[] = {nx1D};
DMBoundaryType bcType[] = {DM_BOUNDARY_NONE};
DMPlexCreateBoxMesh(PETSC_COMM_WORLD, parameters.dim, PETSC_FALSE, nx, start, end, bcType, PETSC_TRUE, &dmCreate) >> testErrorChecker;
DMPlexCreateBoxMesh(PETSC_COMM_WORLD, parameters.dim, PETSC_FALSE, nx, start, end, bcType, PETSC_TRUE, 0, PETSC_TRUE, &dmCreate) >> testErrorChecker;

// define the fields based upon a compressible flow
auto eos = std::make_shared<ablate::eos::PerfectGas>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -559,7 +559,7 @@ TEST_P(CompressibleFlowMmsTestFixture, ShouldComputeCorrectFlux) {
PetscInt nx1D = initialNx * PetscPowRealInt(2, l);
PetscInt nx[] = {nx1D, nx1D, nx1D};
DMBoundaryType bcType[] = {DM_BOUNDARY_NONE, DM_BOUNDARY_NONE, DM_BOUNDARY_NONE};
DMPlexCreateBoxMesh(PETSC_COMM_WORLD, constants.dim, PETSC_FALSE, nx, start, end, bcType, PETSC_TRUE, &dmCreate) >> testErrorChecker;
DMPlexCreateBoxMesh(PETSC_COMM_WORLD, constants.dim, PETSC_FALSE, nx, start, end, bcType, PETSC_TRUE, 0, PETSC_TRUE, &dmCreate) >> testErrorChecker;

// Setup the flow data
auto eos = std::make_shared<ablate::eos::PerfectGas>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ TEST_P(CompressibleShockTubeTestFixture, ShouldReproduceExpectedResult) {
PetscReal end[] = {testingParam.initialConditions.length};
PetscInt nx[] = {testingParam.nx};
DMBoundaryType bcType[] = {DM_BOUNDARY_NONE};
DMPlexCreateBoxMesh(PETSC_COMM_WORLD, 1, PETSC_FALSE, nx, start, end, bcType, PETSC_TRUE, &dmCreate) >> testErrorChecker;
DMPlexCreateBoxMesh(PETSC_COMM_WORLD, 1, PETSC_FALSE, nx, start, end, bcType, PETSC_TRUE, 0, PETSC_TRUE, &dmCreate) >> testErrorChecker;

auto eos = std::make_shared<ablate::eos::PerfectGas>(
std::make_shared<ablate::parameters::MapParameters>(std::map<std::string, std::string>{{"gamma", std::to_string(testingParam.initialConditions.gamma)}}));
Expand Down

0 comments on commit 5d56b74

Please sign in to comment.