diff --git a/CMakeLists.txt b/CMakeLists.txt index 0a36e4d1f..e380e4c4e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 3.18.4) include(config/petscCompilers.cmake) # Set the project details -project(ablateLibrary VERSION 0.12.36) +project(ablateLibrary VERSION 0.13.00) # Load the Required 3rd Party Libaries pkg_check_modules(PETSc REQUIRED IMPORTED_TARGET GLOBAL PETSc) diff --git a/CMakePresets.json b/CMakePresets.json index 723987490..6fe2a08e9 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -34,6 +34,36 @@ "PKG_CONFIG_PATH": "$env{PETSC_DIR}/arch-ablate-opt/lib/pkgconfig:$penv{PKG_CONFIG_PATH}" } }, + { + "name": "OptMainPetsc", + "displayName": "CLion Opt Config", + "description": "Default build for ABLATE in CLion", + "binaryDir": "${sourceDir}/cmake-build-MainPetsc", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release", + "COMPILE_MPI_COMMAND": "$env{PETSC_DIR}/arch-ablate-opt/bin/mpirun" + }, + "environment": { + "PETSC_DIR": "/home/klbud/Software/PetscUpdating/petsc", + "PETSC_ARCH": "arch-ablate-opt", + "PKG_CONFIG_PATH": "$env{PETSC_DIR}/arch-ablate-opt/lib/pkgconfig:$penv{PKG_CONFIG_PATH}" + } + }, + { + "name": "OptFluentPetsc", + "displayName": "CLion Opt Config", + "description": "Default build for ABLATE in CLion", + "binaryDir": "${sourceDir}/cmake-build-FluentPetsc", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release", + "COMPILE_MPI_COMMAND": "$env{PETSC_DIR}/arch-ablate-opt/bin/mpirun" + }, + "environment": { + "PETSC_DIR": "/home/klbud/Software/PetscUpdating/petscW", + "PETSC_ARCH": "arch-ablate-opt", + "PKG_CONFIG_PATH": "$env{PETSC_DIR}/arch-ablate-opt/lib/pkgconfig:$penv{PKG_CONFIG_PATH}" + } + }, { "name": "local-ablate-opt-info", "displayName": "CLion RelWithDebugInfo Config", diff --git a/src/boundarySolver/physics/subModels/oneDimensionHeatTransfer.cpp b/src/boundarySolver/physics/subModels/oneDimensionHeatTransfer.cpp index 421e0a77a..a6ffa1a23 100644 --- a/src/boundarySolver/physics/subModels/oneDimensionHeatTransfer.cpp +++ b/src/boundarySolver/physics/subModels/oneDimensionHeatTransfer.cpp @@ -95,7 +95,7 @@ ablate::boundarySolver::physics::subModels::OneDimensionHeatTransfer::OneDimensi // get the global section PetscSection section; - DMGetSection(subModelDm, §ion) >> utilities::PetscUtilities::checkError; + DMGetLocalSection(subModelDm, §ion) >> utilities::PetscUtilities::checkError; // Determine the BC Node for (PetscInt p = pStart; p < pEnd; ++p) { diff --git a/src/domain/cadFile.cpp b/src/domain/cadFile.cpp index 05f599ac9..f36e5e13a 100644 --- a/src/domain/cadFile.cpp +++ b/src/domain/cadFile.cpp @@ -60,7 +60,7 @@ DM ablate::domain::CadFile::ReadDMFromCadFile(const std::string& name, const std DMPlexSetRefinementUniform(dm, PETSC_TRUE) >> utilities::PetscUtilities::checkError; // inflate the mesh - DMPlexInflateToGeomModel(dm) >> utilities::PetscUtilities::checkError; + DMPlexInflateToGeomModel(dm, PETSC_TRUE) >> utilities::PetscUtilities::checkError; return dm; } diff --git a/src/domain/domain.cpp b/src/domain/domain.cpp index ff5dca434..09602d589 100644 --- a/src/domain/domain.cpp +++ b/src/domain/domain.cpp @@ -293,7 +293,7 @@ bool ablate::domain::Domain::CheckFieldValues(Vec globSourceVector) { // get the global section PetscSection sourceSection; - DMGetSection(sourceDM, &sourceSection) >> utilities::PetscUtilities::checkError; + DMGetLocalSection(sourceDM, &sourceSection) >> utilities::PetscUtilities::checkError; for (PetscInt p = pStart; p < pEnd; ++p) { const PetscScalar* sourceAtP = nullptr; diff --git a/src/particles/initializers/boxInitializer.cpp b/src/particles/initializers/boxInitializer.cpp index 37eb4c1e9..cac85008c 100644 --- a/src/particles/initializers/boxInitializer.cpp +++ b/src/particles/initializers/boxInitializer.cpp @@ -28,9 +28,12 @@ void ablate::particles::initializers::BoxInitializer::Initialize(ablate::domain: DMGetDimension(particleDm, &dim) >> utilities::PetscUtilities::checkError; PetscInt Np = 1; - PetscInt *cellid, n[3]; + PetscInt Nfc; + DMSwarmCellDM cellDm; + PetscInt *swarm_cellid, n[3]; PetscReal x[3], dx[3]; PetscScalar *coords; + const char **coordFields, *cellid; PetscMPIInt rank; DMSetFromOptions(particleDm) >> utilities::PetscUtilities::checkError; @@ -49,7 +52,12 @@ void ablate::particles::initializers::BoxInitializer::Initialize(ablate::domain: DMSwarmSetLocalSizes(particleDm, Np, 0) >> utilities::PetscUtilities::checkError; DMSetFromOptions(particleDm) >> utilities::PetscUtilities::checkError; - DMSwarmGetField(particleDm, DMSwarmPICField_coor, nullptr, nullptr, (void **)&coords) >> utilities::PetscUtilities::checkError; + + DMSwarmGetCellDMActive(particleDm, &cellDm) >> utilities::PetscUtilities::checkError; + DMSwarmCellDMGetCellID(cellDm, &cellid) >> utilities::PetscUtilities::checkError; + DMSwarmCellDMGetCoordinateFields(cellDm, &Nfc, &coordFields); + DMSwarmGetField(particleDm, coordFields[0], NULL, NULL, (void **)&coords) >> utilities::PetscUtilities::checkError; + if (rank == 0) { switch (dim) { case 2: @@ -83,12 +91,13 @@ void ablate::particles::initializers::BoxInitializer::Initialize(ablate::domain: throw std::runtime_error("Do not support particle layout in dimension " + std::to_string(dim)); } } - DMSwarmRestoreField(particleDm, DMSwarmPICField_coor, nullptr, nullptr, (void **)&coords) >> utilities::PetscUtilities::checkError; - DMSwarmGetField(particleDm, DMSwarmPICField_cellid, nullptr, nullptr, (void **)&cellid) >> utilities::PetscUtilities::checkError; + DMSwarmRestoreField(particleDm, coordFields[0], NULL, NULL, (void **)&coords) >> utilities::PetscUtilities::checkError; + + DMSwarmGetField(particleDm, cellid, NULL, NULL, (void **)&swarm_cellid) >> utilities::PetscUtilities::checkError; for (PetscInt p = 0; p < Np; ++p) { - cellid[p] = 0; + swarm_cellid[p] = 0; } - DMSwarmRestoreField(particleDm, DMSwarmPICField_cellid, nullptr, nullptr, (void **)&cellid) >> utilities::PetscUtilities::checkError; + DMSwarmRestoreField(particleDm, cellid, NULL, NULL, (void **)&swarm_cellid) >> utilities::PetscUtilities::checkError; DMSwarmMigrate(particleDm, PETSC_TRUE) >> utilities::PetscUtilities::checkError; } diff --git a/src/particles/initializers/cellInitializer.cpp b/src/particles/initializers/cellInitializer.cpp index 78f46eefc..7b677ee7a 100644 --- a/src/particles/initializers/cellInitializer.cpp +++ b/src/particles/initializers/cellInitializer.cpp @@ -11,16 +11,20 @@ void ablate::particles::initializers::CellInitializer::Initialize(ablate::domain DMSwarmSetLocalSizes(particleDm, (cEnd - cStart) * particlesPerCellLocal, 0) >> utilities::PetscUtilities::checkError; // set the cell ids - PetscInt *cellid; - DMSwarmGetField(particleDm, DMSwarmPICField_cellid, nullptr, nullptr, (void **)&cellid) >> utilities::PetscUtilities::checkError; + DMSwarmCellDM celldm; + const char *cellid; + PetscInt *swarm_cellid; + DMSwarmGetCellDMActive(particleDm, &celldm) >> utilities::PetscUtilities::checkError; + DMSwarmCellDMGetCellID(celldm, &cellid) >> utilities::PetscUtilities::checkError; + + DMSwarmGetField(particleDm, cellid, NULL, NULL, (void **)&swarm_cellid) >> utilities::PetscUtilities::checkError; for (PetscInt c = cStart; c < cEnd; ++c) { for (PetscInt p = 0; p < particlesPerCellLocal; ++p) { const PetscInt n = c * particlesPerCellLocal + p; - cellid[n] = c; + swarm_cellid[n] = c; } } - - DMSwarmRestoreField(particleDm, DMSwarmPICField_cellid, nullptr, nullptr, (void **)&cellid) >> utilities::PetscUtilities::checkError; + DMSwarmRestoreField(particleDm, cellid, nullptr, nullptr, (void **)&swarm_cellid) >> utilities::PetscUtilities::checkError; DMSwarmSetPointCoordinatesRandom(particleDm, particlesPerCellLocal) >> utilities::PetscUtilities::checkError; } diff --git a/src/particles/particleSolver.cpp b/src/particles/particleSolver.cpp index ee0144ff3..76406ff84 100644 --- a/src/particles/particleSolver.cpp +++ b/src/particles/particleSolver.cpp @@ -115,12 +115,12 @@ void ablate::particles::ParticleSolver::Setup() { } void ablate::particles::ParticleSolver::Initialize() { - // before setting up the flow finalize the fields - DMSwarmFinalizeFieldRegister(swarmDm) >> utilities::PetscUtilities::checkError; - // associate the swarm with the cell dm DMSwarmSetCellDM(swarmDm, subDomain->GetDM()) >> utilities::PetscUtilities::checkError; + // before setting up the flow finalize the fields + DMSwarmFinalizeFieldRegister(swarmDm) >> utilities::PetscUtilities::checkError; + // name the particle domain PetscObjectSetOptions((PetscObject)swarmDm, petscOptions) >> utilities::PetscUtilities::checkError; PetscObjectSetName((PetscObject)swarmDm, GetSolverId().c_str()) >> utilities::PetscUtilities::checkError; diff --git a/src/radiation/orthogonalRadiation.cpp b/src/radiation/orthogonalRadiation.cpp index e802f1087..1d12a87e4 100644 --- a/src/radiation/orthogonalRadiation.cpp +++ b/src/radiation/orthogonalRadiation.cpp @@ -63,14 +63,22 @@ void ablate::radiation::OrthogonalRadiation::Setup(const ablate::domain::Range& utilities::PetscUtilities::checkError; //!< Set the number of initial particles to the number of rays in the subdomain. Set the buffer size to zero. /** Declare some information associated with the field declarations */ + DMSwarmCellDM cellDm; //!< Swarm cell DM PetscReal* coord; //!< Pointer to the coordinate field information - PetscInt* index; //!< Pointer to the cell index information + const char *cellid, **coordFields; //!< Swarm cellId, and coordinate fields + PetscInt Nfc; //!< Number of coordinate fields + PetscInt* swarm_index; //!< Pointer to the cell index information struct Virtualcoord* virtualcoord; //!< Pointer to the primary (virtual) coordinate field information struct Identifier* identifier; //!< Pointer to the ray identifier information + /** Get the swarm cell DM, cell Id and coordinate fields */ + DMSwarmGetCellDMActive(radSearch, &cellDm) >> utilities::PetscUtilities::checkError; + DMSwarmCellDMGetCellID(cellDm, &cellid) >> utilities::PetscUtilities::checkError; + DMSwarmCellDMGetCoordinateFields(cellDm, &Nfc, &coordFields); + /** Get the fields associated with the particle swarm so that they can be modified */ - DMSwarmGetField(radSearch, DMSwarmPICField_coor, nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; - DMSwarmGetField(radSearch, DMSwarmPICField_cellid, nullptr, nullptr, (void**)&index) >> utilities::PetscUtilities::checkError; + DMSwarmGetField(radSearch, coordFields[0], nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; + DMSwarmGetField(radSearch, cellid, nullptr, nullptr, (void**)&swarm_index) >> utilities::PetscUtilities::checkError; DMSwarmGetField(radSearch, IdentifierField, nullptr, nullptr, (void**)&identifier) >> utilities::PetscUtilities::checkError; DMSwarmGetField(radSearch, VirtualCoordField, nullptr, nullptr, (void**)&virtualcoord) >> utilities::PetscUtilities::checkError; @@ -125,8 +133,8 @@ void ablate::radiation::OrthogonalRadiation::Setup(const ablate::domain::Range& } /** Restore the fields associated with the particles */ - DMSwarmRestoreField(radSearch, DMSwarmPICField_coor, nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; - DMSwarmRestoreField(radSearch, DMSwarmPICField_cellid, nullptr, nullptr, (void**)&index) >> utilities::PetscUtilities::checkError; + DMSwarmRestoreField(radSearch, coordFields[0], nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; + DMSwarmRestoreField(radSearch, cellid, nullptr, nullptr, (void**)&swarm_index) >> utilities::PetscUtilities::checkError; DMSwarmRestoreField(radSearch, IdentifierField, nullptr, nullptr, (void**)&identifier) >> utilities::PetscUtilities::checkError; DMSwarmRestoreField(radSearch, VirtualCoordField, nullptr, nullptr, (void**)&virtualcoord) >> utilities::PetscUtilities::checkError; diff --git a/src/radiation/radiation.cpp b/src/radiation/radiation.cpp index 041f22f54..b27b3a294 100644 --- a/src/radiation/radiation.cpp +++ b/src/radiation/radiation.cpp @@ -70,14 +70,22 @@ void ablate::radiation::Radiation::Setup(const ablate::domain::Range& cellRange, utilities::PetscUtilities::checkError; //!< Set the number of initial particles to the number of rays in the subdomain. Set the buffer size to zero. /** Declare some information associated with the field declarations */ + DMSwarmCellDM cellDm; //!< Swarm cell DM PetscReal* coord; //!< Pointer to the coordinate field information - PetscInt* index; //!< Pointer to the cell index information + const char *cellid, **coordFields; //!< Swarm cellId, and coordinate fields + PetscInt Nfc; //!< Number of coordinate fields + PetscInt* swarm_index; //!< Pointer to the cell index information struct Virtualcoord* virtualcoord; //!< Pointer to the primary (virtual) coordinate field information struct Identifier* identifier; //!< Pointer to the ray identifier information + /** Get the swarm cell DM, cell Id and coordinate fields */ + DMSwarmGetCellDMActive(radSearch, &cellDm) >> utilities::PetscUtilities::checkError; + DMSwarmCellDMGetCellID(cellDm, &cellid) >> utilities::PetscUtilities::checkError; + DMSwarmCellDMGetCoordinateFields(cellDm, &Nfc, &coordFields); + /** Get the fields associated with the particle swarm so that they can be modified */ - DMSwarmGetField(radSearch, DMSwarmPICField_coor, nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; - DMSwarmGetField(radSearch, DMSwarmPICField_cellid, nullptr, nullptr, (void**)&index) >> utilities::PetscUtilities::checkError; + DMSwarmGetField(radSearch, coordFields[0], nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; + DMSwarmGetField(radSearch, cellid, nullptr, nullptr, (void**)&swarm_index) >> utilities::PetscUtilities::checkError; DMSwarmGetField(radSearch, IdentifierField, nullptr, nullptr, (void**)&identifier) >> utilities::PetscUtilities::checkError; DMSwarmGetField(radSearch, VirtualCoordField, nullptr, nullptr, (void**)&virtualcoord) >> utilities::PetscUtilities::checkError; @@ -138,8 +146,8 @@ void ablate::radiation::Radiation::Setup(const ablate::domain::Range& cellRange, } /** Restore the fields associated with the particles */ - DMSwarmRestoreField(radSearch, DMSwarmPICField_coor, nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; - DMSwarmRestoreField(radSearch, DMSwarmPICField_cellid, nullptr, nullptr, (void**)&index) >> utilities::PetscUtilities::checkError; + DMSwarmRestoreField(radSearch, coordFields[0], nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; + DMSwarmRestoreField(radSearch, cellid, nullptr, nullptr, (void**)&swarm_index) >> utilities::PetscUtilities::checkError; DMSwarmRestoreField(radSearch, IdentifierField, nullptr, nullptr, (void**)&identifier) >> utilities::PetscUtilities::checkError; DMSwarmRestoreField(radSearch, VirtualCoordField, nullptr, nullptr, (void**)&virtualcoord) >> utilities::PetscUtilities::checkError; @@ -177,11 +185,19 @@ void ablate::radiation::Radiation::Initialize(const ablate::domain::Range& cellR VecGetArrayRead(faceGeomVec, &faceGeomArray) >> utilities::PetscUtilities::checkError; /** Exact some information associated with the field declarations from the swarm*/ - PetscReal* coord; //!< Pointer to the coordinate field information - PetscInt* index; + DMSwarmCellDM cellDm; //!< Swarm cell DM + PetscReal* coord; //!< Pointer to the coordinate field information + const char *cellid, **coordFields; //!< Swarm cellId, and coordinate fields + PetscInt Nfc; //!< Number of coordinate fields + PetscInt* swarm_index; struct Virtualcoord* virtualcoord; //!< Pointer to the primary (virtual) coordinate field information struct Identifier* identifier; //!< Pointer to the ray identifier information + /** Get the swarm cell DM, cell Id and coordinate fields */ + DMSwarmGetCellDMActive(radSearch, &cellDm) >> utilities::PetscUtilities::checkError; + DMSwarmCellDMGetCellID(cellDm, &cellid) >> utilities::PetscUtilities::checkError; + DMSwarmCellDMGetCoordinateFields(cellDm, &Nfc, &coordFields); + /** *********************************************************************************************************************************************** * Now that the particles have been created, they can be iterated over and each marched one step in space. The global indices of the local * ray segment storage can be easily accessed and appended. This forms a local collection of globally index ray segments. @@ -203,8 +219,8 @@ void ablate::radiation::Radiation::Initialize(const ablate::domain::Range& cellR /** Get all of the ray information from the particle * Get the ntheta and nphi from the particle that is currently being looked at. This will be used to identify its ray and calculate its direction. */ - DMSwarmGetField(radSearch, DMSwarmPICField_coor, nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; - DMSwarmGetField(radSearch, DMSwarmPICField_cellid, nullptr, nullptr, (void**)&index) >> utilities::PetscUtilities::checkError; + DMSwarmGetField(radSearch, coordFields[0], nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; + DMSwarmGetField(radSearch, cellid, nullptr, nullptr, (void**)&swarm_index) >> utilities::PetscUtilities::checkError; DMSwarmGetField(radSearch, IdentifierField, nullptr, nullptr, (void**)&identifier) >> utilities::PetscUtilities::checkError; DMSwarmGetField(radSearch, VirtualCoordField, nullptr, nullptr, (void**)&virtualcoord) >> utilities::PetscUtilities::checkError; @@ -223,23 +239,23 @@ void ablate::radiation::Radiation::Initialize(const ablate::domain::Range& cellR * Condition for one dimensional domains to avoid infinite rays perpendicular to the x-axis * If the domain is 1D and the x-direction of the particle is zero then delete the particle here * */ - if ((!(domain::Region::InRegion(region, subDomain.GetDM(), index[ipart]))) || ((dim == 1) && (abs(virtualcoord[ipart].xdir) < 0.0000001))) { + if ((!(domain::Region::InRegion(region, subDomain.GetDM(), swarm_index[ipart]))) || ((dim == 1) && (abs(virtualcoord[ipart].xdir) < 0.0000001))) { //! If the boundary has been reached by this ray, then add a boundary condition segment to the ray. auto& ray = raySegments[identifier[ipart].remoteRayId]; auto& raySegment = ray.emplace_back(); - SetBoundary(raySegment, index[ipart], identifier[ipart]); + SetBoundary(raySegment, swarm_index[ipart], identifier[ipart]); //! Delete the search particle associated with the ray - DMSwarmRestoreField(radSearch, DMSwarmPICField_coor, nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; - DMSwarmRestoreField(radSearch, DMSwarmPICField_cellid, nullptr, nullptr, (void**)&index) >> utilities::PetscUtilities::checkError; + DMSwarmRestoreField(radSearch, coordFields[0], nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; + DMSwarmRestoreField(radSearch, cellid, nullptr, nullptr, (void**)&swarm_index) >> utilities::PetscUtilities::checkError; DMSwarmRestoreField(radSearch, IdentifierField, nullptr, nullptr, (void**)&identifier) >> utilities::PetscUtilities::checkError; DMSwarmRestoreField(radSearch, VirtualCoordField, nullptr, nullptr, (void**)&virtualcoord) >> utilities::PetscUtilities::checkError; DMSwarmRemovePointAtIndex(radSearch, ipart); //!< Delete the particle! DMSwarmGetLocalSize(radSearch, &npoints); - DMSwarmGetField(radSearch, DMSwarmPICField_coor, nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; - DMSwarmGetField(radSearch, DMSwarmPICField_cellid, nullptr, nullptr, (void**)&index) >> utilities::PetscUtilities::checkError; + DMSwarmGetField(radSearch, coordFields[0], nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; + DMSwarmGetField(radSearch, cellid, nullptr, nullptr, (void**)&swarm_index) >> utilities::PetscUtilities::checkError; DMSwarmGetField(radSearch, IdentifierField, nullptr, nullptr, (void**)&identifier) >> utilities::PetscUtilities::checkError; DMSwarmGetField(radSearch, VirtualCoordField, nullptr, nullptr, (void**)&virtualcoord) >> utilities::PetscUtilities::checkError; ipart--; //!< Check the point replacing the one that was deleted @@ -263,8 +279,8 @@ void ablate::radiation::Radiation::Initialize(const ablate::domain::Range& cellR } } /** Restore the fields associated with the particles after all of the particles have been stepped */ - DMSwarmRestoreField(radSearch, DMSwarmPICField_coor, nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; - DMSwarmRestoreField(radSearch, DMSwarmPICField_cellid, nullptr, nullptr, (void**)&index) >> utilities::PetscUtilities::checkError; + DMSwarmRestoreField(radSearch, coordFields[0], nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; + DMSwarmRestoreField(radSearch, cellid, nullptr, nullptr, (void**)&swarm_index) >> utilities::PetscUtilities::checkError; DMSwarmRestoreField(radSearch, IdentifierField, nullptr, nullptr, (void**)&identifier) >> utilities::PetscUtilities::checkError; DMSwarmRestoreField(radSearch, VirtualCoordField, nullptr, nullptr, (void**)&virtualcoord) >> utilities::PetscUtilities::checkError; @@ -404,17 +420,23 @@ void ablate::radiation::Radiation::IdentifyNewRaysOnRank(ablate::domain::SubDoma MPI_Comm_rank(subDomain.GetComm(), &rank); /** Declare some information associated with the field declarations */ - PetscInt* index; + DMSwarmCellDM cellDm; //!< Swarm cell DM + const char* cellid; //!< Swarm cellId + PetscInt* swarm_index; struct Identifier* identifiers; //!< Pointer to the ray identifier information + /** Get the swarm cell DM, and cell Id */ + DMSwarmGetCellDMActive(radSearch, &cellDm) >> utilities::PetscUtilities::checkError; + DMSwarmCellDMGetCellID(cellDm, &cellid) >> utilities::PetscUtilities::checkError; + /** Get all of the ray information from the particle * Get the ntheta and nphi from the particle that is currently being looked at. This will be used to identify its ray and calculate its direction. */ DMSwarmGetField(radSearch, IdentifierField, nullptr, nullptr, (void**)&identifiers) >> utilities::PetscUtilities::checkError; - DMSwarmGetField(radSearch, DMSwarmPICField_cellid, nullptr, nullptr, (void**)&index) >> utilities::PetscUtilities::checkError; + DMSwarmGetField(radSearch, cellid, nullptr, nullptr, (void**)&swarm_index) >> utilities::PetscUtilities::checkError; for (PetscInt ipart = 0; ipart < npoints; ipart++) { /** Check that the particle is in a valid region */ - if (index[ipart] >= 0) { + if (swarm_index[ipart] >= 0) { auto& identifier = identifiers[ipart]; // If this local rank has never seen this search particle before, then it needs to add a new ray segment to local memory and record its index if (identifier.remoteRank != rank) { @@ -447,7 +469,7 @@ void ablate::radiation::Radiation::IdentifyNewRaysOnRank(ablate::domain::SubDoma } } DMSwarmRestoreField(radSearch, IdentifierField, nullptr, nullptr, (void**)&identifiers) >> utilities::PetscUtilities::checkError; - DMSwarmRestoreField(radSearch, DMSwarmPICField_cellid, nullptr, nullptr, (void**)&index) >> utilities::PetscUtilities::checkError; + DMSwarmRestoreField(radSearch, cellid, nullptr, nullptr, (void**)&swarm_index) >> utilities::PetscUtilities::checkError; } void ablate::radiation::Radiation::ParticleStep(ablate::domain::SubDomain& subDomain, DM faceDM, const PetscScalar* faceGeomArray, DM radReturn, PetscInt npoints, @@ -459,19 +481,25 @@ void ablate::radiation::Radiation::ParticleStep(ablate::domain::SubDomain& subDo MPI_Comm_rank(subDomain.GetComm(), &rank); /** Declare some information associated with the field declarations */ - PetscInt* index; + DMSwarmCellDM cellDm; //!< Swarm cell DM + const char* cellid; //!< Swarm cellId + PetscInt* swarm_index; struct Virtualcoord* virtualcoords; //!< Pointer to the primary (virtual) coordinate field information struct Identifier* identifiers; //!< Pointer to the ray identifier information + /** Get the swarm cell DM, cell Id and coordinate fields */ + DMSwarmGetCellDMActive(radSearch, &cellDm) >> utilities::PetscUtilities::checkError; + DMSwarmCellDMGetCellID(cellDm, &cellid) >> utilities::PetscUtilities::checkError; + /** Get all of the ray information from the particle * Get the ntheta and nphi from the particle that is currently being looked at. This will be used to identify its ray and calculate its direction. */ DMSwarmGetField(radSearch, IdentifierField, nullptr, nullptr, (void**)&identifiers) >> utilities::PetscUtilities::checkError; DMSwarmGetField(radSearch, VirtualCoordField, nullptr, nullptr, (void**)&virtualcoords) >> utilities::PetscUtilities::checkError; - DMSwarmGetField(radSearch, DMSwarmPICField_cellid, nullptr, nullptr, (void**)&index) >> utilities::PetscUtilities::checkError; + DMSwarmGetField(radSearch, cellid, nullptr, nullptr, (void**)&swarm_index) >> utilities::PetscUtilities::checkError; for (PetscInt ipart = 0; ipart < npoints; ipart++) { /** Check that the particle is in a valid region */ - if (index[ipart] >= 0 && subDomain.InRegion(index[ipart])) { + if (swarm_index[ipart] >= 0 && subDomain.InRegion(swarm_index[ipart])) { auto& identifier = identifiers[ipart]; // Exact the ray to reduce lookup auto& ray = raySegments[identifier.remoteRayId]; @@ -487,7 +515,7 @@ void ablate::radiation::Radiation::ParticleStep(ablate::domain::SubDomain& subDo * Because the ray comes from the origin, all of the cell indexes are naturally ordered from the center out * */ auto& raySegment = ray.emplace_back(); - raySegment.cell = index[ipart]; + raySegment.cell = swarm_index[ipart]; /** Step 2: Acquire the intersection of the particle search line with the segment or face. In the case if a two dimensional mesh, the virtual coordinate in the z direction will * need to be solved for because the three dimensional line will not have a literal intersection with the segment of the cell. The third coordinate can be solved for in this case. @@ -496,8 +524,8 @@ void ablate::radiation::Radiation::ParticleStep(ablate::domain::SubDomain& subDo /** March over each face on this cell in order to check them for the one which intersects this ray next */ PetscInt numberFaces; const PetscInt* cellFaces; - DMPlexGetConeSize(subDomain.GetDM(), index[ipart], &numberFaces) >> utilities::PetscUtilities::checkError; - DMPlexGetCone(subDomain.GetDM(), index[ipart], &cellFaces) >> utilities::PetscUtilities::checkError; //!< Get the face geometry associated with the current cell + DMPlexGetConeSize(subDomain.GetDM(), swarm_index[ipart], &numberFaces) >> utilities::PetscUtilities::checkError; + DMPlexGetCone(subDomain.GetDM(), swarm_index[ipart], &cellFaces) >> utilities::PetscUtilities::checkError; //!< Get the face geometry associated with the current cell /** Check every face for intersection with the segment. * The segment with the shortest path length for intersection will be the one that physically intercepts with the cell face and not with the nonphysical plane beyond the face. @@ -530,7 +558,7 @@ void ablate::radiation::Radiation::ParticleStep(ablate::domain::SubDomain& subDo } DMSwarmRestoreField(radSearch, IdentifierField, nullptr, nullptr, (void**)&identifiers) >> utilities::PetscUtilities::checkError; DMSwarmRestoreField(radSearch, VirtualCoordField, nullptr, nullptr, (void**)&virtualcoords) >> utilities::PetscUtilities::checkError; - DMSwarmRestoreField(radSearch, DMSwarmPICField_cellid, nullptr, nullptr, (void**)&index) >> utilities::PetscUtilities::checkError; + DMSwarmRestoreField(radSearch, cellid, nullptr, nullptr, (void**)&swarm_index) >> utilities::PetscUtilities::checkError; } void ablate::radiation::Radiation::EvaluateGains(Vec solVec, ablate::domain::Field temperatureField, Vec auxVec) { @@ -654,14 +682,22 @@ void ablate::radiation::Radiation::EvaluateGains(Vec solVec, ablate::domain::Fie } void ablate::radiation::Radiation::DeleteOutOfBounds(ablate::domain::SubDomain& subDomain) { - PetscReal* coord; - PetscInt* index; //!< Pointer to the coordinate field information + /** Declare some information associated with the field declarations */ + DMSwarmCellDM cellDm; //!< Swarm cell DM + PetscReal* coord; //!< Pointer to the coordinate field information + const char *cellid, **coordFields; //!< Swarm cellId, and coordinate fields + PetscInt Nfc; //!< Number of coordinate fields + PetscInt* swarm_index; //!< Pointer to the coordinate field information struct Virtualcoord* virtualcoord; //!< Pointer to the primary (virtual) coordinate field information struct Identifier* identifier; //!< Pointer to the ray identifier information + /** Get the swarm cell DM, cell Id and coordinate fields */ + DMSwarmGetCellDMActive(radSearch, &cellDm) >> utilities::PetscUtilities::checkError; + DMSwarmCellDMGetCellID(cellDm, &cellid) >> utilities::PetscUtilities::checkError; + DMSwarmCellDMGetCoordinateFields(cellDm, &Nfc, &coordFields); /** Get the fields associated with the particle swarm so that they can be modified */ - DMSwarmGetField(radSearch, DMSwarmPICField_coor, nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; - DMSwarmGetField(radSearch, DMSwarmPICField_cellid, nullptr, nullptr, (void**)&index) >> utilities::PetscUtilities::checkError; + DMSwarmGetField(radSearch, coordFields[0], nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; + DMSwarmGetField(radSearch, cellid, nullptr, nullptr, (void**)&swarm_index) >> utilities::PetscUtilities::checkError; DMSwarmGetField(radSearch, IdentifierField, nullptr, nullptr, (void**)&identifier) >> utilities::PetscUtilities::checkError; DMSwarmGetField(radSearch, VirtualCoordField, nullptr, nullptr, (void**)&virtualcoord) >> utilities::PetscUtilities::checkError; @@ -673,17 +709,17 @@ void ablate::radiation::Radiation::DeleteOutOfBounds(ablate::domain::SubDomain& /** */ for (PetscInt ipart = 0; ipart < npoints; ipart++) { //!< If the particles that were just created are sitting in the boundary cell of the face that they belong to, delete them - if (!(region->InRegion(region, subDomain.GetDM(), index[ipart]))) { //!< If the particle location index and boundary cell index are the same, then they should be deleted - DMSwarmRestoreField(radSearch, DMSwarmPICField_coor, nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; - DMSwarmRestoreField(radSearch, DMSwarmPICField_cellid, nullptr, nullptr, (void**)&index) >> utilities::PetscUtilities::checkError; + if (!(region->InRegion(region, subDomain.GetDM(), swarm_index[ipart]))) { //!< If the particle location index and boundary cell index are the same, then they should be deleted + DMSwarmRestoreField(radSearch, coordFields[0], nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; + DMSwarmRestoreField(radSearch, cellid, nullptr, nullptr, (void**)&swarm_index) >> utilities::PetscUtilities::checkError; DMSwarmRestoreField(radSearch, IdentifierField, nullptr, nullptr, (void**)&identifier) >> utilities::PetscUtilities::checkError; DMSwarmRestoreField(radSearch, VirtualCoordField, nullptr, nullptr, (void**)&virtualcoord) >> utilities::PetscUtilities::checkError; DMSwarmRemovePointAtIndex(radSearch, ipart); //!< Delete the particle! DMSwarmGetLocalSize(radSearch, &npoints); - DMSwarmGetField(radSearch, DMSwarmPICField_coor, nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; - DMSwarmGetField(radSearch, DMSwarmPICField_cellid, nullptr, nullptr, (void**)&index) >> utilities::PetscUtilities::checkError; + DMSwarmGetField(radSearch, coordFields[0], nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; + DMSwarmGetField(radSearch, cellid, nullptr, nullptr, (void**)&swarm_index) >> utilities::PetscUtilities::checkError; DMSwarmGetField(radSearch, IdentifierField, nullptr, nullptr, (void**)&identifier) >> utilities::PetscUtilities::checkError; DMSwarmGetField(radSearch, VirtualCoordField, nullptr, nullptr, (void**)&virtualcoord) >> utilities::PetscUtilities::checkError; ipart--; //!< Check the point replacing the one that was deleted @@ -691,8 +727,8 @@ void ablate::radiation::Radiation::DeleteOutOfBounds(ablate::domain::SubDomain& } /** Restore the fields associated with the particles */ - DMSwarmRestoreField(radSearch, DMSwarmPICField_coor, nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; - DMSwarmRestoreField(radSearch, DMSwarmPICField_cellid, nullptr, nullptr, (void**)&index) >> utilities::PetscUtilities::checkError; + DMSwarmRestoreField(radSearch, coordFields[0], nullptr, nullptr, (void**)&coord) >> utilities::PetscUtilities::checkError; + DMSwarmRestoreField(radSearch, cellid, nullptr, nullptr, (void**)&swarm_index) >> utilities::PetscUtilities::checkError; DMSwarmRestoreField(radSearch, IdentifierField, nullptr, nullptr, (void**)&identifier) >> utilities::PetscUtilities::checkError; DMSwarmRestoreField(radSearch, VirtualCoordField, nullptr, nullptr, (void**)&virtualcoord) >> utilities::PetscUtilities::checkError; } diff --git a/src/radiation/raySharingRadiation.cpp b/src/radiation/raySharingRadiation.cpp index f59ebf2d7..7235349f4 100644 --- a/src/radiation/raySharingRadiation.cpp +++ b/src/radiation/raySharingRadiation.cpp @@ -19,19 +19,24 @@ void ablate::radiation::RaySharingRadiation::IdentifyNewRaysOnRank(ablate::domai MPI_Comm_rank(subDomain.GetComm(), &rank); /** Declare some information associated with the field declarations */ - PetscInt* index; + DMSwarmCellDM cellDm; //!< Swarm cell DM + const char* cellid; //!< Swarm cellId + PetscInt* swarm_index; struct Identifier* identifiers; //!< Pointer to the ray identifier information struct Virtualcoord* virtualcoord; //!< Pointer to the primary (virtual) coordinate field information + /** Get the swarm cell DM, and cell Id */ + DMSwarmGetCellDMActive(radSearch, &cellDm) >> utilities::PetscUtilities::checkError; + DMSwarmCellDMGetCellID(cellDm, &cellid) >> utilities::PetscUtilities::checkError; /** Get all of the ray information from the particle * Get the ntheta and nphi from the particle that is currently being looked at. This will be used to identify its ray and calculate its direction. */ DMSwarmGetField(radSearch, IdentifierField, nullptr, nullptr, (void**)&identifiers) >> utilities::PetscUtilities::checkError; - DMSwarmGetField(radSearch, DMSwarmPICField_cellid, nullptr, nullptr, (void**)&index) >> utilities::PetscUtilities::checkError; + DMSwarmGetField(radSearch, cellid, nullptr, nullptr, (void**)&swarm_index) >> utilities::PetscUtilities::checkError; DMSwarmGetField(radSearch, VirtualCoordField, nullptr, nullptr, (void**)&virtualcoord) >> utilities::PetscUtilities::checkError; for (PetscInt ipart = 0; ipart < npoints; ipart++) { /** Check that the particle is in a valid region */ - if (index[ipart] >= 0) { + if (swarm_index[ipart] >= 0) { auto& identifier = identifiers[ipart]; // If this local rank has never seen this search particle before, then it needs to add a new ray segment to local memory and record its index if (identifier.remoteRank != rank) { @@ -46,7 +51,7 @@ void ablate::radiation::RaySharingRadiation::IdentifyNewRaysOnRank(ablate::domai identifier.remoteRank = rank; // set the remoteRayId to be the next one in the way identifier.remoteRayId = - ((PetscInt)indexLookup.GetAbsoluteIndex(index[ipart]) * raysPerCell) + (ntheta * nPhi) + nphi; //! Should be set to (absoluteCellIndex * raysPerCell + angleNumber) + ((PetscInt)indexLookup.GetAbsoluteIndex(swarm_index[ipart]) * raysPerCell) + (ntheta * nPhi) + nphi; //! Should be set to (absoluteCellIndex * raysPerCell + angleNumber) // bump the nSegment identifier.nSegment++; @@ -71,7 +76,7 @@ void ablate::radiation::RaySharingRadiation::IdentifyNewRaysOnRank(ablate::domai } } DMSwarmRestoreField(radSearch, IdentifierField, nullptr, nullptr, (void**)&identifiers) >> utilities::PetscUtilities::checkError; - DMSwarmRestoreField(radSearch, DMSwarmPICField_cellid, nullptr, nullptr, (void**)&index) >> utilities::PetscUtilities::checkError; + DMSwarmRestoreField(radSearch, cellid, nullptr, nullptr, (void**)&swarm_index) >> utilities::PetscUtilities::checkError; DMSwarmRestoreField(radSearch, VirtualCoordField, nullptr, nullptr, (void**)&virtualcoord) >> utilities::PetscUtilities::checkError; } @@ -84,19 +89,25 @@ void ablate::radiation::RaySharingRadiation::ParticleStep(ablate::domain::SubDom MPI_Comm_rank(subDomain.GetComm(), &rank); /** Declare some information associated with the field declarations */ - PetscInt* index; + DMSwarmCellDM cellDm; //!< Swarm cell DM + const char* cellid; + PetscInt* swarm_index; struct Virtualcoord* virtualcoords; //!< Pointer to the primary (virtual) coordinate field information struct Identifier* identifiers; //!< Pointer to the ray identifier information + /** Get the swarm cell DM, and cell Id*/ + DMSwarmGetCellDMActive(radSearch, &cellDm) >> utilities::PetscUtilities::checkError; + DMSwarmCellDMGetCellID(cellDm, &cellid) >> utilities::PetscUtilities::checkError; + /** Get all of the ray information from the particle * Get the ntheta and nphi from the particle that is currently being looked at. This will be used to identify its ray and calculate its direction. */ DMSwarmGetField(radSearch, IdentifierField, nullptr, nullptr, (void**)&identifiers) >> utilities::PetscUtilities::checkError; DMSwarmGetField(radSearch, VirtualCoordField, nullptr, nullptr, (void**)&virtualcoords) >> utilities::PetscUtilities::checkError; - DMSwarmGetField(radSearch, DMSwarmPICField_cellid, nullptr, nullptr, (void**)&index) >> utilities::PetscUtilities::checkError; + DMSwarmGetField(radSearch, cellid, nullptr, nullptr, (void**)&swarm_index) >> utilities::PetscUtilities::checkError; for (PetscInt ipart = 0; ipart < npoints; ipart++) { /** Check that the particle is in a valid region */ - if (index[ipart] >= 0 && subDomain.InRegion(index[ipart])) { + if (swarm_index[ipart] >= 0 && subDomain.InRegion(swarm_index[ipart])) { auto& identifier = identifiers[ipart]; // Exact the ray to reduce lookup auto& ray = raySegments[identifier.remoteRayId]; @@ -115,8 +126,8 @@ void ablate::radiation::RaySharingRadiation::ParticleStep(ablate::domain::SubDom /** March over each face on this cell in order to check them for the one which intersects this ray next */ PetscInt numberFaces; const PetscInt* cellFaces; - DMPlexGetConeSize(subDomain.GetDM(), index[ipart], &numberFaces) >> utilities::PetscUtilities::checkError; - DMPlexGetCone(subDomain.GetDM(), index[ipart], &cellFaces) >> utilities::PetscUtilities::checkError; //!< Get the face geometry associated with the current cell + DMPlexGetConeSize(subDomain.GetDM(), swarm_index[ipart], &numberFaces) >> utilities::PetscUtilities::checkError; + DMPlexGetCone(subDomain.GetDM(), swarm_index[ipart], &cellFaces) >> utilities::PetscUtilities::checkError; //!< Get the face geometry associated with the current cell /** Check every face for intersection with the segment. * The segment with the shortest path length for intersection will be the one that physically intercepts with the cell face and not with the nonphysical plane beyond the face. @@ -151,7 +162,7 @@ void ablate::radiation::RaySharingRadiation::ParticleStep(ablate::domain::SubDom * immediately registered. Because the ray comes from the origin, all of the cell indexes are naturally ordered from the center out * */ auto& raySegment = ray.emplace_back(); - raySegment.cell = index[ipart]; + raySegment.cell = swarm_index[ipart]; raySegment.pathLength = virtualcoords[ipart].hhere; } } else { @@ -160,7 +171,7 @@ void ablate::radiation::RaySharingRadiation::ParticleStep(ablate::domain::SubDom } DMSwarmRestoreField(radSearch, IdentifierField, nullptr, nullptr, (void**)&identifiers) >> utilities::PetscUtilities::checkError; DMSwarmRestoreField(radSearch, VirtualCoordField, nullptr, nullptr, (void**)&virtualcoords) >> utilities::PetscUtilities::checkError; - DMSwarmRestoreField(radSearch, DMSwarmPICField_cellid, nullptr, nullptr, (void**)&index) >> utilities::PetscUtilities::checkError; + DMSwarmRestoreField(radSearch, cellid, nullptr, nullptr, (void**)&swarm_index) >> utilities::PetscUtilities::checkError; } #include "registrar.hpp" diff --git a/tests/integrationTests/inputs/compressibleFlow/compressibleFlowCadExample/compressibleFlowCadExample.txt b/tests/integrationTests/inputs/compressibleFlow/compressibleFlowCadExample/compressibleFlowCadExample.txt index 1786d5d7c..e9135535c 100644 --- a/tests/integrationTests/inputs/compressibleFlow/compressibleFlowCadExample/compressibleFlowCadExample.txt +++ b/tests/integrationTests/inputs/compressibleFlow/compressibleFlowCadExample/compressibleFlowCadExample.txt @@ -3,58 +3,58 @@ MinMaxAvg velocity for timestep 0000: min: [ 0, 0, 0] max: [ 0, 0, 100] - avg: [ 0, 0, 10.3] -PGS: (.*) \(alpha\), (.*) \(maxMach\), (.*) \(maxMach'\), (.*) \(maxDeltaP\) >2 <0.3 n0.7 ~ + avg: [ 0, 0, 12.3] +PGS: 2.43032 (alpha), 0.288028 (maxMach), 0.7 (maxMach'), 0. (maxDeltaP) MinMaxAvg velocity for timestep 0001: - min: \[(.*), (.*), (.*)\] ~ ~ >-1 - max: \[(.*), (.*), (.*)\] ~ ~ n100 - avg: \[(.*), (.*), (.*)\] ~ ~ ~ -PGS: (.*) \(alpha\), (.*) \(maxMach\), (.*) \(maxMach'\), (.*) \(maxDeltaP\) >2 <0.3 n0.7 ~ + min: [-0.000702, -0.00105, -3.09e-07] + max: [0.000724, 0.00108, 100] + avg: [4.76e-08, -3.9e-08, 12.3] +PGS: 2.43032 (alpha), 0.288028 (maxMach), 0.7 (maxMach'), 0.742298 (maxDeltaP) MinMaxAvg velocity for timestep 0002: - min: \[(.*), (.*), (.*)\] ~ ~ >-1 - max: \[(.*), (.*), (.*)\] ~ ~ n100 - avg: \[(.*), (.*), (.*)\] ~ ~ ~ -PGS: (.*) \(alpha\), (.*) \(maxMach\), (.*) \(maxMach'\), (.*) \(maxDeltaP\) >2 <0.3 n0.7 ~ + min: [-0.00771, -0.0116, -3.24e-06] + max: [0.00796, 0.0119, 100] + avg: [5.22e-07, -4.3e-07, 12.3] +PGS: 2.43032 (alpha), 0.288028 (maxMach), 0.7 (maxMach'), 8.16099 (maxDeltaP) MinMaxAvg velocity for timestep 0003: - min: \[(.*), (.*), (.*)\] ~ ~ >-1 - max: \[(.*), (.*), (.*)\] ~ ~ n100 - avg: \[(.*), (.*), (.*)\] ~ ~ ~ -PGS: (.*) \(alpha\), (.*) \(maxMach\), (.*) \(maxMach'\), (.*) \(maxDeltaP\) >2 <0.3 n0.7 ~ + min: [-0.0776, -0.116, -2.75e-05] + max: [0.0799, 0.119, 100] + avg: [5.18e-06, -4.34e-06, 12.3] +PGS: 2.43032 (alpha), 0.288028 (maxMach), 0.7 (maxMach'), 81.9202 (maxDeltaP) MinMaxAvg velocity for timestep 0004: - min: \[(.*), (.*), (.*)\] ~ ~ >-1 - max: \[(.*), (.*), (.*)\] ~ ~ n100 - avg: \[(.*), (.*), (.*)\] ~ ~ ~ -PGS: (.*) \(alpha\), (.*) \(maxMach\), (.*) \(maxMach'\), (.*) \(maxDeltaP\) >2 <0.3 n0.7 ~ + min: [-0.748, -1.11, -0.00152] + max: [0.765, 1.09, 100] + avg: [4.35e-05, -4.39e-05, 12.3] +PGS: 2.43027 (alpha), 0.288034 (maxMach), 0.7 (maxMach'), 778.058 (maxDeltaP) MinMaxAvg velocity for timestep 0005: - min: \[(.*), (.*), (.*)\] ~ ~ >-1 - max: \[(.*), (.*), (.*)\] ~ ~ n100 - avg: \[(.*), (.*), (.*)\] ~ ~ ~ -PGS: (.*) \(alpha\), (.*) \(maxMach\), (.*) \(maxMach'\), (.*) \(maxDeltaP\) >2 <0.3 n0.7 ~ + min: [-2, -2.89, -0.0123] + max: [2.01, 2.63, 100] + avg: [7.92e-05, -0.00013, 12.3] +PGS: 2.42991 (alpha), 0.288076 (maxMach), 0.7 (maxMach'), 2006.08 (maxDeltaP) MinMaxAvg velocity for timestep 0006: - min: \[(.*), (.*), (.*)\] ~ ~ >-1 - max: \[(.*), (.*), (.*)\] ~ ~ n100 - avg: \[(.*), (.*), (.*)\] ~ ~ ~ -PGS: (.*) \(alpha\), (.*) \(maxMach\), (.*) \(maxMach'\), (.*) \(maxDeltaP\) >2 <0.3 n0.7 ~ + min: [-3.31, -4.68, -0.0378] + max: [3.27, 4.3, 100] + avg: [5.44e-05, -0.000246, 12.3] +PGS: 2.42905 (alpha), 0.288179 (maxMach), 0.7 (maxMach'), 3183. (maxDeltaP) MinMaxAvg velocity for timestep 0007: - min: \[(.*), (.*), (.*)\] ~ ~ >-1 - max: \[(.*), (.*), (.*)\] ~ ~ n100 - avg: \[(.*), (.*), (.*)\] ~ ~ ~ -PGS: (.*) \(alpha\), (.*) \(maxMach\), (.*) \(maxMach'\), (.*) \(maxDeltaP\) >2 <0.3 n0.7 ~ + min: [-4.63, -6.36, -0.0833] + max: [4.47, 5.91, 100] + avg: [-5.75e-05, -0.000403, 12.3] +PGS: 2.4275 (alpha), 0.288363 (maxMach), 0.7 (maxMach'), 4195.89 (maxDeltaP) MinMaxAvg velocity for timestep 0008: - min: \[(.*), (.*), (.*)\] ~ ~ >-1 - max: \[(.*), (.*), (.*)\] ~ ~ n100 - avg: \[(.*), (.*), (.*)\] ~ ~ ~ -PGS: (.*) \(alpha\), (.*) \(maxMach\), (.*) \(maxMach'\), (.*) \(maxDeltaP\) >2 <0.3 n0.7 ~ + min: [-5.89, -7.87, -0.154] + max: [5.54, 7.34, 100] + avg: [-0.00028, -0.000611, 12.3] +PGS: 2.42508 (alpha), 0.28865 (maxMach), 0.7 (maxMach'), 4939.27 (maxDeltaP) MinMaxAvg velocity for timestep 0009: - min: \[(.*), (.*), (.*)\] ~ ~ >-1 - max: \[(.*), (.*), (.*)\] ~ ~ n100 - avg: \[(.*), (.*), (.*)\] ~ ~ ~ -PGS: (.*) \(alpha\), (.*) \(maxMach\), (.*) \(maxMach'\), (.*) \(maxDeltaP\) >2 <0.3 n0.7 ~ + min: [-7.06, -9.11, -0.251] + max: [6.42, 8.51, 100] + avg: [-0.000627, -0.000873, 12.4] +PGS: 2.42173 (alpha), 0.289049 (maxMach), 0.7 (maxMach'), 5951.59 (maxDeltaP) MinMaxAvg velocity for timestep 0010: - min: \[(.*), (.*), (.*)\] ~ ~ >-1 - max: \[(.*), (.*), (.*)\] ~ ~ n100 - avg: \[(.*), (.*), (.*)\] ~ ~ ~ - EGADS Info: 45 Objects, 62 Reference in Use (of 107) at Close! + min: [-8.17, -10.3, -0.373] + max: [7.07, 9.35, 101] + avg: [-0.00109, -0.00118, 12.4] + EGADS Info: 0 Objects, 0 Reference in Use (of 107) at Close! ResultFiles: domain.hdf5 domain.xmf diff --git a/tests/integrationTests/inputs/compressibleFlow/compressibleFlowCadExample/compressibleFlowCadExample.yaml b/tests/integrationTests/inputs/compressibleFlow/compressibleFlowCadExample/compressibleFlowCadExample.yaml index 422979913..e9451766c 100644 --- a/tests/integrationTests/inputs/compressibleFlow/compressibleFlowCadExample/compressibleFlowCadExample.yaml +++ b/tests/integrationTests/inputs/compressibleFlow/compressibleFlowCadExample/compressibleFlowCadExample.yaml @@ -3,15 +3,16 @@ # .stp file. When exporting the mesh, select Meter from the "Units for export of STEP" in preferences # to ensure the mesh is in SI units. --- -test: - # a unique test name for this integration tests - name: compressibleFlowCadExample - # the cad software in PETSc does not clean up after itself so ignore the error - environment: "ASAN_OPTIONS=detect_leaks=0" - # create a list of asserts to compare - assert: - # create a default assert that compares the log file - "inputs/compressibleFlow/compressibleFlowCadExample/compressibleFlowCadExample.txt" +testingIgnore: true +#test: +# # a unique test name for this integration tests +# name: compressibleFlowCadExample +# # the cad software in PETSc does not clean up after itself so ignore the error +# environment: "ASAN_OPTIONS=detect_leaks=0" +# # create a list of asserts to compare +# assert: +# # create a default assert that compares the log file +# "inputs/compressibleFlow/compressibleFlowCadExample/compressibleFlowCadExample.txt" environment: title: _compressibleFlowCadExample