Skip to content

Commit

Permalink
fixup
Browse files Browse the repository at this point in the history
  • Loading branch information
nikwit committed Feb 16, 2023
1 parent bdf061d commit a89fdbb
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 19 deletions.
Expand Up @@ -5,5 +5,5 @@ spectre_target_headers(
${LIBRARY}
INCLUDE_DIRECTORY ${CMAKE_SOURCE_DIR}/src
HEADERS
InitializeElementFaceCoordinatesMap.hpp
InitializeElementFacesGridCoordinates.hpp
)
Expand Up @@ -30,16 +30,28 @@ namespace CurvedScalarWave::Worldtube::Initialization {

/*!
* \brief Initializes a map of the grid coordinates of all faces that abut the
* worldtube with corresponding ElementIds.
* worldtube with corresponding ElementIds on the worldtube singleton.
*
* DataBox changes:
* \details The worldtube singleton computes an internal solution in the grid
* frame and evaluates it at the grid coordinates of each element face abutting
* the worldtube each time step. This data is sent to the corresponding element
* where it is used to apply pointwise boundary conditions. The
* `ElementFacesGridCoordinates` holds a map of all the element ids abutting the
* worldtube with the corresonding grid coordinates.
*
* \warning This currently assumes that initial domain remains the same and
* there is no AMR. To support this, the worldtube could send the
* coefficients of its internal solution to each element which can evaluate the
* it on their current grid in the boundary conditions.
*
* DataBox changes:
* - Adds: nothing
* - Removes: nothing
* - Modifies: Tags::ElementFacesCoordinatesMap<Dim>
*/
template <size_t Dim>
struct InitializeElementFacesCoordinatesMap {
using return_tags = tmpl::list<Tags::ElementFacesCoordinatesMap<Dim>>;
struct InitializeElementFacesGridCoordinates {
using return_tags = tmpl::list<Tags::ElementFacesGridCoordinates<Dim>>;
using argument_tags =
tmpl::list<::domain::Tags::Domain<Dim>,
::domain::Tags::InitialExtents<Dim>,
Expand All @@ -48,7 +60,7 @@ struct InitializeElementFacesCoordinatesMap {
static void apply(
const gsl::not_null<std::unordered_map<
ElementId<Dim>, tnsr::I<DataVector, Dim, Frame::Grid>>*>
element_face_coords_map,
element_faces_grid_coords,
const Domain<Dim>& domain,
const std::vector<std::array<size_t, Dim>>& initial_extents,
const std::vector<std::array<size_t, Dim>>& initial_refinement,
Expand Down Expand Up @@ -78,7 +90,7 @@ struct InitializeElementFacesCoordinatesMap {
for (size_t i = 0; i < 3; ++i) {
faces_grid_coords.get(i) -= worldtube_grid_coords.get(i);
}
element_face_coords_map->operator[](element_id) =
element_faces_grid_coords->operator[](element_id) =
std::move(faces_grid_coords);
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/Evolution/Systems/CurvedScalarWave/Worldtube/Tags.hpp
Expand Up @@ -72,7 +72,7 @@ struct ExcisionSphere : db::SimpleTag {
* worldtube with the corresponding ElementIds.
*/
template <size_t Dim>
struct ElementFacesCoordinatesMap : db::SimpleTag {
struct ElementFacesGridCoordinates : db::SimpleTag {
using type =
std::unordered_map<ElementId<Dim>, tnsr::I<DataVector, Dim, Frame::Grid>>;
};
Expand Down
Expand Up @@ -17,7 +17,7 @@ set(LIBRARY_SOURCES
Test_Tags.cpp
Test_TimeDerivative.cpp
Worldtube/Test_Tags.cpp
Worldtube/SingletonActions/Test_InitializeElementFaceCoordinatesMap.cpp
Worldtube/SingletonActions/Test_InitializeElementFacesGridCoordinates.cpp
)

add_test_library(
Expand Down
Expand Up @@ -20,7 +20,7 @@
#include "Domain/Structure/ExcisionSphere.hpp"
#include "Domain/Tags.hpp"
#include "Evolution/DiscontinuousGalerkin/Initialization/QuadratureTag.hpp"
#include "Evolution/Systems/CurvedScalarWave/Worldtube/SingletonActions/InitializeElementFaceCoordinatesMap.hpp"
#include "Evolution/Systems/CurvedScalarWave/Worldtube/SingletonActions/InitializeElementFacesGridCoordinates.hpp"
#include "Evolution/Systems/CurvedScalarWave/Worldtube/Tags.hpp"
#include "Framework/TestCreation.hpp"
#include "Helpers/DataStructures/DataBox/TestHelpers.hpp"
Expand All @@ -44,17 +44,18 @@ void test_initialize_element_faces_coordinates_map(
::domain::Tags::Domain<Dim>, ::domain::Tags::InitialExtents<Dim>,
::domain::Tags::InitialRefinementLevels<Dim>,
evolution::dg::Tags::Quadrature, Tags::ExcisionSphere<Dim>,
Tags::ElementFacesCoordinatesMap<Dim>>>(
Tags::ElementFacesGridCoordinates<Dim>>>(
domain_creator.create_domain(), initial_extents, initial_refinements,
quadrature, excision_sphere,
std::unordered_map<ElementId<3>,
tnsr::I<DataVector, Dim, Frame::Grid>>{});

db::mutate_apply<Initialization::InitializeElementFacesCoordinatesMap<Dim>>(
db::mutate_apply<
Initialization::InitializeElementFacesGridCoordinates<Dim>>(
make_not_null(&box));

const auto& element_faces_coords =
db::get<Tags::ElementFacesCoordinatesMap<Dim>>(box);
db::get<Tags::ElementFacesGridCoordinates<Dim>>(box);

// refinement is the same everywhere so we just get the 0th block in 0th
// direction
Expand All @@ -73,15 +74,14 @@ void test_initialize_element_faces_coordinates_map(
} // namespace

SPECTRE_TEST_CASE(
"Unit.Evolution.Systems.CSW.Worldtube.InitializeElementFaceCoordinatesMap",
"Unit.Evolution.Systems.Worldtube.InitializeElementFacesGridCoordinates",
"[Unit][Evolution]") {
for (const auto& [initial_refinement, initial_extents, quadrature] :
for (const auto& [initial_refinement, quadrature] :
cartesian_product(std::array<size_t, 2>{{0, 1}},
std::array<size_t, 2>{{4, 6}},
make_array(Spectral::Quadrature::Gauss,
Spectral::Quadrature::GaussLobatto))) {
const size_t initial_extents = 3;
CAPTURE(initial_refinement);
CAPTURE(initial_extents);
CAPTURE(quadrature);
INFO("Testing Shell time independent");
const domain::creators::Shell shell{
Expand Down
Expand Up @@ -41,7 +41,7 @@ SPECTRE_TEST_CASE("Unit.Evolution.Systems.CurvedScalarWave.Worldtube.Tags",
TestHelpers::db::test_simple_tag<
CurvedScalarWave::Worldtube::Tags::ExcisionSphere<3>>("ExcisionSphere");
TestHelpers::db::test_simple_tag<
CurvedScalarWave::Worldtube::Tags::ElementFacesCoordinatesMap<3>>(
"ElementFacesCoordinatesMap");
CurvedScalarWave::Worldtube::Tags::ElementFacesGridCoordinates<3>>(
"ElementFacesGridCoordinates");
test_excision_sphere_tag();
}

0 comments on commit a89fdbb

Please sign in to comment.