Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
#include "Domain/Structure/ObjectLabel.hpp"
#include "Evolution/Actions/RunEventsAndTriggers.hpp"
#include "Evolution/Executables/ScalarTensor/ScalarTensorBase.hpp"
#include "Evolution/Systems/GeneralizedHarmonic/Actions/SetInitialData.hpp"
#include "Evolution/Systems/ScalarTensor/Actions/SetInitialData.hpp"
#include "Options/FactoryHelpers.hpp"
#include "Options/Protocols/FactoryCreation.hpp"
#include "Options/String.hpp"
Expand Down Expand Up @@ -202,6 +202,15 @@ struct EvolutionMetavars : public ScalarTensorTemplateBase<EvolutionMetavars> {
tmpl::flatten<tmpl::list<
Parallel::PhaseActions<Parallel::Phase::Initialization,
initialization_actions>,
Parallel::PhaseActions<
Parallel::Phase::RegisterWithElementDataReader,
tmpl::list<importers::Actions::RegisterWithElementDataReader,
Parallel::Actions::TerminatePhase>>,
Parallel::PhaseActions<
Parallel::Phase::ImportInitialData,
tmpl::list<ScalarTensor::Actions::SetInitialData,
ScalarTensor::Actions::ReceiveNumericInitialData,
Parallel::Actions::TerminatePhase>>,
Parallel::PhaseActions<
Parallel::Phase::InitializeInitialDataDependentQuantities,
initialize_initial_data_dependent_quantities_actions>,
Expand Down Expand Up @@ -233,7 +242,8 @@ struct EvolutionMetavars : public ScalarTensorTemplateBase<EvolutionMetavars> {
observers::Observer<EvolutionMetavars>,
observers::ObserverWriter<EvolutionMetavars>,
mem_monitor::MemoryMonitor<EvolutionMetavars>,
st_dg_element_array, intrp::Interpolator<EvolutionMetavars>,
importers::ElementDataReader<EvolutionMetavars>, st_dg_element_array,
intrp::Interpolator<EvolutionMetavars>,
control_system::control_components<EvolutionMetavars, control_systems>,
tmpl::transform<interpolation_target_tags,
tmpl::bind<intrp::InterpolationTarget,
Expand Down
7 changes: 6 additions & 1 deletion src/Evolution/Executables/ScalarTensor/ScalarTensorBase.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
#include "Evolution/Systems/GeneralizedHarmonic/Initialize.hpp"
#include "Evolution/Systems/GeneralizedHarmonic/System.hpp"
#include "Evolution/Systems/GeneralizedHarmonic/Tags.hpp"
#include "Evolution/Systems/ScalarTensor/Actions/SetInitialData.hpp"
#include "Evolution/Systems/ScalarTensor/BoundaryConditions/Factory.hpp"
#include "Evolution/Systems/ScalarTensor/BoundaryCorrections/Factory.hpp"
#include "Evolution/Systems/ScalarTensor/Constraints.hpp"
Expand Down Expand Up @@ -162,6 +163,8 @@ struct ScalarTensorTemplateBase;
namespace detail {
constexpr auto make_default_phase_order() {
return std::array{Parallel::Phase::Initialization,
Parallel::Phase::RegisterWithElementDataReader,
Parallel::Phase::ImportInitialData,
Parallel::Phase::InitializeInitialDataDependentQuantities,
Parallel::Phase::Register,
Parallel::Phase::InitializeTimeStepperHistory,
Expand Down Expand Up @@ -351,7 +354,9 @@ struct FactoryCreation : tt::ConformsTo<Options::protocols::FactoryCreation> {
ScalarTensor::BoundaryConditions::BoundaryCondition,
ScalarTensor::BoundaryConditions::standard_boundary_conditions>,
tmpl::pair<gh::gauges::GaugeCondition, gh::gauges::all_gauges>,
tmpl::pair<evolution::initial_data::InitialData, initial_data_list>,
tmpl::pair<
evolution::initial_data::InitialData,
tmpl::push_back<initial_data_list, ScalarTensor::NumericInitialData>>,
tmpl::pair<LtsTimeStepper, TimeSteppers::lts_time_steppers>,
tmpl::pair<PhaseChange, PhaseControl::factory_creatable_classes>,
tmpl::pair<StepChooser<StepChooserUse::LtsStep>,
Expand Down
15 changes: 15 additions & 0 deletions src/Evolution/Systems/ScalarTensor/Actions/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Distributed under the MIT License.
# See LICENSE.txt for details.

spectre_target_sources(
${LIBRARY}
PRIVATE
SetInitialData.cpp
)

spectre_target_headers(
${LIBRARY}
INCLUDE_DIRECTORY ${CMAKE_SOURCE_DIR}/src
HEADERS
SetInitialData.hpp
)
64 changes: 64 additions & 0 deletions src/Evolution/Systems/ScalarTensor/Actions/SetInitialData.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
// Distributed under the MIT License.
// See LICENSE.txt for details.

#include "Evolution/Systems/ScalarTensor/Actions/SetInitialData.hpp"

#include <boost/functional/hash.hpp>
#include <cstddef>
#include <optional>
#include <string>
#include <utility>
#include <variant>

#include "DataStructures/DataVector.hpp"
#include "DataStructures/Tensor/Tensor.hpp"
#include "NumericalAlgorithms/LinearOperators/PartialDerivatives.hpp"
#include "PointwiseFunctions/GeneralRelativity/GeneralizedHarmonic/Phi.hpp"
#include "PointwiseFunctions/GeneralRelativity/GeneralizedHarmonic/Pi.hpp"
#include "PointwiseFunctions/GeneralRelativity/SpacetimeMetric.hpp"
#include "PointwiseFunctions/GeneralRelativity/TimeDerivativeOfSpatialMetric.hpp"
#include "Utilities/GenerateInstantiations.hpp"
#include "Utilities/Gsl.hpp"
#include "Utilities/MakeWithValue.hpp"
#include "Utilities/PrettyType.hpp"

namespace ScalarTensor {

NumericInitialData::NumericInitialData(
std::string file_glob, std::string subfile_name,
std::variant<double, importers::ObservationSelector> observation_value,
std::optional<double> observation_value_epsilon, bool enable_interpolation,
typename GhNumericId::Variables::type gh_selected_variables,
typename ScalarNumericId::Variables::type hydro_selected_variables)
: gh_numeric_id_(file_glob, subfile_name, observation_value,
observation_value_epsilon.value_or(1.0e-12),
enable_interpolation, std::move(gh_selected_variables)),
scalar_numeric_id_(
std::move(file_glob), std::move(subfile_name), observation_value,
observation_value_epsilon.value_or(1.0e-12), enable_interpolation,
std::move(hydro_selected_variables)) {}

NumericInitialData::NumericInitialData(CkMigrateMessage* msg)
: InitialData(msg) {}

// NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables)
PUP::able::PUP_ID NumericInitialData::my_PUP_ID = 0;

size_t NumericInitialData::volume_data_id() const {
size_t hash = 0;
boost::hash_combine(hash, gh_numeric_id_.volume_data_id());
boost::hash_combine(hash, scalar_numeric_id_.volume_data_id());
return hash;
}

void NumericInitialData::pup(PUP::er& p) {
p | gh_numeric_id_;
p | scalar_numeric_id_;
}

bool operator==(const NumericInitialData& lhs, const NumericInitialData& rhs) {
return lhs.gh_numeric_id_ == rhs.gh_numeric_id_ and
lhs.scalar_numeric_id_ == rhs.scalar_numeric_id_;
}

} // namespace ScalarTensor
Loading
Loading