Skip to content

Commit 40fc4ed

Browse files
committed
Update ScalarTensor executable
1 parent 2fa8f05 commit 40fc4ed

File tree

9 files changed

+223
-114
lines changed

9 files changed

+223
-114
lines changed

src/Evolution/Executables/ScalarTensor/CMakeLists.txt

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,9 @@
11
# Distributed under the MIT License.
22
# See LICENSE.txt for details.
33

4-
set(EXECUTABLE EvolveScalarTensorSingleBlackHole)
5-
6-
add_spectre_executable(
7-
${EXECUTABLE}
8-
EXCLUDE_FROM_ALL
9-
EvolveScalarTensorSingleBlackHole.cpp
10-
)
11-
12-
target_link_libraries(
13-
${EXECUTABLE}
14-
PRIVATE
4+
set(LIBS_TO_LINK
155
Actions
166
ApparentHorizonFinder
17-
Cce
187
Charmxx::main
198
ControlSystem
209
CoordinateMaps
@@ -47,3 +36,16 @@ target_link_libraries(
4736
Time
4837
Utilities
4938
)
39+
40+
set(SINGLE_BH_EXECUTABLE EvolveScalarTensorSingleBlackHole)
41+
add_spectre_executable(
42+
${SINGLE_BH_EXECUTABLE}
43+
EXCLUDE_FROM_ALL
44+
EvolveScalarTensorSingleBlackHole.cpp
45+
)
46+
target_link_libraries(
47+
${SINGLE_BH_EXECUTABLE}
48+
PRIVATE
49+
${LIBS_TO_LINK}
50+
Cce
51+
)

src/Evolution/Executables/ScalarTensor/EvolveScalarTensorSingleBlackHole.hpp

Lines changed: 51 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,13 @@
88

99
#include "ControlSystem/Actions/InitializeMeasurements.hpp"
1010
#include "ControlSystem/Component.hpp"
11+
#include "ControlSystem/ControlErrors/Size/Factory.hpp"
12+
#include "ControlSystem/ControlErrors/Size/State.hpp"
1113
#include "ControlSystem/Measurements/SingleHorizon.hpp"
1214
#include "ControlSystem/Metafunctions.hpp"
1315
#include "ControlSystem/Systems/Shape.hpp"
16+
#include "ControlSystem/Systems/Size.hpp"
17+
#include "ControlSystem/Systems/Translation.hpp"
1418
#include "ControlSystem/Trigger.hpp"
1519
#include "Domain/Structure/ObjectLabel.hpp"
1620
#include "Evolution/Actions/RunEventsAndTriggers.hpp"
@@ -32,6 +36,8 @@
3236
#include "ParallelAlgorithms/ApparentHorizonFinder/ComputeHorizonVolumeQuantities.tpp"
3337
#include "ParallelAlgorithms/ApparentHorizonFinder/HorizonAliases.hpp"
3438
#include "ParallelAlgorithms/ApparentHorizonFinder/InterpolationTarget.hpp"
39+
#include "ParallelAlgorithms/ApparentHorizonFinder/ObserveCenters.hpp"
40+
#include "ParallelAlgorithms/EventsAndTriggers/Actions/RunEventsOnFailure.hpp"
3541
#include "ParallelAlgorithms/Interpolation/Actions/CleanUpInterpolator.hpp"
3642
#include "ParallelAlgorithms/Interpolation/Actions/ElementInitInterpPoints.hpp"
3743
#include "ParallelAlgorithms/Interpolation/Actions/InitializeInterpolationTarget.hpp"
@@ -53,9 +59,13 @@
5359
#include "PointwiseFunctions/GeneralRelativity/Surfaces/Tags.hpp"
5460
#include "Time/Actions/SelfStartActions.hpp"
5561
#include "Time/ChangeSlabSize/Action.hpp"
62+
#include "Time/ChangeSlabSize/Tags.hpp"
5663
#include "Time/StepChoosers/Factory.hpp"
64+
#include "Time/Tags/StepperErrors.hpp"
5765
#include "Time/Tags/Time.hpp"
66+
#include "Utilities/Algorithm.hpp"
5867
#include "Utilities/ErrorHandling/Error.hpp"
68+
#include "Utilities/PrettyType.hpp"
5969
#include "Utilities/ProtocolHelpers.hpp"
6070

6171
struct EvolutionMetavars : public ScalarTensorTemplateBase<EvolutionMetavars> {
@@ -70,27 +80,31 @@ struct EvolutionMetavars : public ScalarTensorTemplateBase<EvolutionMetavars> {
7080
"field \n"
7181
"on a domain with a single horizon and corresponding excised region"};
7282

73-
struct AhA : tt::ConformsTo<intrp::protocols::InterpolationTargetTag> {
83+
template <typename Frame>
84+
struct Ah : tt::ConformsTo<intrp::protocols::InterpolationTargetTag> {
7485
using temporal_id = ::Tags::Time;
75-
using tags_to_observe = ::ah::tags_for_observing<Frame::Inertial>;
86+
using tags_to_observe = ::ah::tags_for_observing<Frame>;
7687
using surface_tags_to_observe = ::ah::surface_tags_for_observing;
7788
using compute_vars_to_interpolate = ah::ComputeHorizonVolumeQuantities;
7889
using vars_to_interpolate_to_target =
79-
::ah::vars_to_interpolate_to_target<volume_dim, ::Frame::Inertial>;
90+
::ah::vars_to_interpolate_to_target<volume_dim, Frame>;
8091
using compute_items_on_target =
81-
::ah::compute_items_on_target<volume_dim, Frame::Inertial>;
92+
::ah::compute_items_on_target<volume_dim, Frame>;
8293
using compute_target_points =
83-
intrp::TargetPoints::ApparentHorizon<AhA, ::Frame::Inertial>;
84-
using post_interpolation_callbacks = tmpl::list<
85-
intrp::callbacks::FindApparentHorizon<AhA, ::Frame::Inertial>>;
94+
intrp::TargetPoints::ApparentHorizon<Ah, Frame>;
95+
using post_interpolation_callbacks =
96+
tmpl::list<intrp::callbacks::FindApparentHorizon<Ah, Frame>>;
8697
using horizon_find_failure_callbacks =
8798
tmpl::list<intrp::callbacks::IgnoreFailedApparentHorizon>;
8899
using post_horizon_find_callbacks = tmpl::list<
89-
intrp::callbacks::ObserveTimeSeriesOnSurface<tags_to_observe, AhA>,
90-
intrp::callbacks::ObserveSurfaceData<surface_tags_to_observe, AhA,
91-
::Frame::Inertial>>;
100+
intrp::callbacks::ObserveTimeSeriesOnSurface<tags_to_observe, Ah>,
101+
intrp::callbacks::ObserveSurfaceData<surface_tags_to_observe, Ah,
102+
Frame>,
103+
::ah::callbacks::ObserveCenters<Ah, Frame>>;
92104
};
93105

106+
using ApparentHorizon = Ah<::Frame::Distorted>;
107+
94108
struct ExcisionBoundaryA
95109
: tt::ConformsTo<intrp::protocols::InterpolationTargetTag> {
96110
using temporal_id = ::Tags::Time;
@@ -130,10 +144,17 @@ struct EvolutionMetavars : public ScalarTensorTemplateBase<EvolutionMetavars> {
130144
using interpolating_component = typename metavariables::st_dg_element_array;
131145
};
132146

133-
using control_systems = tmpl::list<control_system::Systems::Shape<
134-
::domain::ObjectLabel::None, 2,
135-
control_system::measurements::SingleHorizon<
136-
::domain::ObjectLabel::None>>>;
147+
using control_systems =
148+
tmpl::list<control_system::Systems::Shape<
149+
::domain::ObjectLabel::None, 2,
150+
control_system::measurements::SingleHorizon<
151+
::domain::ObjectLabel::None>>,
152+
control_system::Systems::Translation<
153+
2,
154+
control_system::measurements::SingleHorizon<
155+
::domain::ObjectLabel::None>,
156+
1>,
157+
control_system::Systems::Size<::domain::ObjectLabel::None, 2>>;
137158

138159
static constexpr bool use_control_systems =
139160
tmpl::size<control_systems>::value > 0;
@@ -142,7 +163,7 @@ struct EvolutionMetavars : public ScalarTensorTemplateBase<EvolutionMetavars> {
142163

143164
using interpolation_target_tags = tmpl::push_back<
144165
control_system::metafunctions::interpolation_target_tags<control_systems>,
145-
AhA, ExcisionBoundaryA, SphericalSurface, BondiSachs>;
166+
ApparentHorizon, ExcisionBoundaryA, SphericalSurface, BondiSachs>;
146167
using interpolator_source_vars = ::ah::source_vars<volume_dim>;
147168

148169
using scalar_charge_interpolator_source_vars =
@@ -185,25 +206,29 @@ struct EvolutionMetavars : public ScalarTensorTemplateBase<EvolutionMetavars> {
185206
tmpl::pair<
186207
Event,
187208
tmpl::flatten<tmpl::list<
188-
intrp::Events::Interpolate<volume_dim, AhA,
209+
intrp::Events::Interpolate<volume_dim, ApparentHorizon,
189210
interpolator_source_vars>,
190211
intrp::Events::InterpolateWithoutInterpComponent<
191212
3, BondiSachs, source_vars_no_deriv>,
213+
control_system::metafunctions::control_system_events<
214+
control_systems>,
192215
intrp::Events::InterpolateWithoutInterpComponent<
193216
volume_dim, ExcisionBoundaryA, interpolator_source_vars>,
194217
intrp::Events::InterpolateWithoutInterpComponent<
195218
volume_dim, SphericalSurface,
196219
scalar_charge_interpolator_source_vars>>>>,
197220
tmpl::pair<DenseTrigger,
198-
control_system::control_system_triggers<control_systems>>>;
221+
control_system::control_system_triggers<control_systems>>,
222+
tmpl::pair<control_system::size::State,
223+
control_system::size::States::factory_creatable_states>>;
199224
};
200225

201226
using typename st_base::const_global_cache_tags;
202227

203228
using observed_reduction_data_tags =
204229
observers::collect_reduction_data_tags<tmpl::push_back<
205230
tmpl::at<typename factory_creation::factory_classes, Event>,
206-
typename AhA::post_horizon_find_callbacks>>;
231+
typename ApparentHorizon::post_horizon_find_callbacks>>;
207232

208233
using dg_registration_list =
209234
tmpl::push_back<typename st_base::dg_registration_list,
@@ -252,7 +277,14 @@ struct EvolutionMetavars : public ScalarTensorTemplateBase<EvolutionMetavars> {
252277
::domain::Actions::CheckFunctionsOfTimeAreReady<volume_dim>,
253278
evolution::Actions::RunEventsAndTriggers<local_time_stepping>,
254279
Actions::ChangeSlabSize, step_actions, Actions::AdvanceTime,
255-
PhaseControl::Actions::ExecutePhaseChange>>>>>;
280+
PhaseControl::Actions::ExecutePhaseChange>>,
281+
Parallel::PhaseActions<
282+
Parallel::Phase::PostFailureCleanup,
283+
tmpl::list<Actions::RunEventsOnFailure<::Tags::Time>,
284+
Parallel::Actions::TerminatePhase>>>>>;
285+
286+
// ControlSystem/Measurements/CharSpeed.hpp assumes gh_dg_element_array
287+
using gh_dg_element_array = st_dg_element_array;
256288

257289
template <typename ParallelComponent>
258290
struct registration_list {

src/Evolution/Executables/ScalarTensor/ScalarTensorBase.hpp

Lines changed: 20 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -208,8 +208,7 @@ struct ObserverTags {
208208
Frame::Inertial>,
209209
gr::Tags::Shift<DataVector, volume_dim, Frame::Inertial>,
210210
gr::Tags::Lapse<DataVector>,
211-
gr::Tags::SqrtDetSpatialMetricCompute<DataVector, volume_dim,
212-
Frame::Inertial>,
211+
gr::Tags::SqrtDetSpatialMetric<DataVector>,
213212
gr::Tags::SpacetimeNormalOneFormCompute<DataVector, volume_dim,
214213
Frame::Inertial>,
215214
gr::Tags::SpacetimeNormalVector<DataVector, volume_dim,
@@ -228,19 +227,16 @@ struct ObserverTags {
228227
Frame::Inertial>,
229228
gr::Tags::ExtrinsicCurvature<DataVector, volume_dim, Frame::Inertial>,
230229
gr::Tags::TraceExtrinsicCurvature<DataVector>,
230+
// More 3 plus 1 variables
231+
::Tags::deriv<gr::Tags::SpatialChristoffelSecondKind<
232+
DataVector, volume_dim, Frame::Inertial>,
233+
tmpl::size_t<volume_dim>, Frame::Inertial>,
234+
gr::Tags::SpatialRicci<DataVector, volume_dim, Frame::Inertial>,
235+
gr::Tags::SpatialRicciScalar<DataVector>,
231236
// Compute the constraints of GH
232237
gh::Tags::GaugeConstraintCompute<volume_dim, Frame::Inertial>,
233238
gh::Tags::TwoIndexConstraintCompute<volume_dim, Frame::Inertial>,
234239
gh::Tags::ThreeIndexConstraintCompute<volume_dim, Frame::Inertial>,
235-
::Tags::DerivTensorCompute<
236-
gr::Tags::SpatialChristoffelSecondKind<DataVector, volume_dim>,
237-
::domain::Tags::InverseJacobian<volume_dim, Frame::ElementLogical,
238-
Frame::Inertial>,
239-
::domain::Tags::Mesh<volume_dim>>,
240-
gr::Tags::SpatialRicciCompute<DataVector, volume_dim,
241-
::Frame::Inertial>,
242-
gr::Tags::SpatialRicciScalarCompute<DataVector, volume_dim,
243-
::Frame::Inertial>,
244240
// Compute the constraints of CSW
245241
ScalarTensor::Tags::CswOneIndexConstraintCompute<volume_dim>,
246242
ScalarTensor::Tags::CswTwoIndexConstraintCompute<volume_dim>,
@@ -259,6 +255,10 @@ struct ObserverTags {
259255
// Damping parameters
260256
gh::Tags::ConstraintGamma0, gh::Tags::ConstraintGamma1,
261257
gh::Tags::ConstraintGamma2,
258+
ScalarTensor::Tags::CswCompute<
259+
CurvedScalarWave::Tags::ConstraintGamma1>,
260+
ScalarTensor::Tags::CswCompute<
261+
CurvedScalarWave::Tags::ConstraintGamma2>,
262262
// Sources
263263
ScalarTensor::Tags::TraceReversedStressEnergyCompute,
264264
ScalarTensor::Tags::ScalarSource,
@@ -274,13 +274,14 @@ struct ObserverTags {
274274
::Tags::PointwiseL2NormCompute<
275275
gh::Tags::FourIndexConstraint<DataVector, volume_dim>>,
276276
gh::Tags::ConstraintEnergyCompute<volume_dim, Frame::Inertial>,
277-
::Tags::DerivTensorCompute<
278-
gr::Tags::ExtrinsicCurvature<DataVector, volume_dim>,
279-
::domain::Tags::InverseJacobian<volume_dim, Frame::ElementLogical,
280-
Frame::Inertial>,
281-
::domain::Tags::Mesh<volume_dim>>,
282-
gr::Tags::WeylElectricCompute<DataVector, volume_dim,
283-
Frame::Inertial>,
277+
::Tags::deriv<gr::Tags::ExtrinsicCurvature<DataVector, volume_dim,
278+
Frame::Inertial>,
279+
tmpl::size_t<volume_dim>, Frame::Inertial>,
280+
gr::Tags::CovariantDerivativeOfExtrinsicCurvature<
281+
DataVector, volume_dim, Frame::Inertial>,
282+
gr::Tags::WeylElectric<DataVector, volume_dim, Frame::Inertial>,
283+
gr::Tags::WeylElectricScalar<DataVector>,
284+
gr::Tags::WeylMagneticScalar<DataVector>,
284285
gr::Tags::Psi4RealCompute<Frame::Inertial>>>;
285286
using non_tensor_compute_tags = tmpl::list<
286287
::Events::Tags::ObserverMeshCompute<volume_dim>,
@@ -400,9 +401,7 @@ struct ScalarTensorTemplateBase {
400401
tmpl::at<typename factory_creation::factory_classes, Event>>>;
401402

402403
using initialize_initial_data_dependent_quantities_actions = tmpl::list<
403-
Initialization::Actions::AddComputeTags<
404-
ScalarTensor::Initialization::scalar_tensor_3plus1_compute_tags<
405-
volume_dim>>,
404+
ScalarTensor::Actions::InitializeGhAnd3Plus1Variables,
406405
Actions::MutateApply<gh::gauges::SetPiAndPhiFromConstraints<
407406
gh::ScalarTensor::AnalyticData::all_analytic_data, volume_dim>>,
408407
Parallel::Actions::TerminatePhase>;
@@ -455,21 +454,13 @@ struct ScalarTensorTemplateBase {
455454
dg::Actions::Filter<Filters::Exponential<1>,
456455
system::scalar_system::variables_tag::tags_list>>;
457456

458-
// // For labeling the yaml option for RandomizeVariables
459-
// struct RandomizeInitialGuess {};
460-
461457
template <bool UseControlSystems>
462458
using initialization_actions = tmpl::list<
463459
Initialization::Actions::InitializeItems<
464460
Initialization::TimeStepping<derived_metavars, TimeStepperBase>,
465461
evolution::dg::Initialization::Domain<volume_dim, UseControlSystems>,
466462
Initialization::TimeStepperHistory<derived_metavars>>,
467463
Initialization::Actions::NonconservativeSystem<system>,
468-
evolution::Initialization::Actions::SetVariables<
469-
domain::Tags::Coordinates<volume_dim, Frame::ElementLogical>>,
470-
// Random noise system::variables_tag
471-
// Actions::RandomizeVariables<typename system::variables_tag,
472-
// RandomizeInitialGuess>,
473464
Initialization::Actions::AddComputeTags<::Tags::DerivCompute<
474465
typename system::variables_tag, domain::Tags::Mesh<volume_dim>,
475466
domain::Tags::InverseJacobian<volume_dim, Frame::ElementLogical,

0 commit comments

Comments
 (0)