8 #include "DataStructures/DataVector.hpp"
13 #include "Utilities/TypeTraits/CreateHasTypeAlias.hpp"
15 namespace TestHelpers::evolution::dg::detail {
17 CREATE_HAS_TYPE_ALIAS_V(inverse_spatial_metric_tag)
19 template <
bool HasInverseSpatialMetricTag = false>
20 struct inverse_spatial_metric_tag {
21 template <
typename System>
22 using f = tmpl::list<>;
26 struct inverse_spatial_metric_tag<true> {
27 template <
typename System>
28 using f =
typename System::inverse_spatial_metric_tag;
37 void adjust_inverse_spatial_metric(
38 const gsl::not_null<tnsr::II<DataVector, Dim>*> inv_spatial_metric) {
39 for (
size_t i = 0; i < Dim; ++i) {
40 for (
size_t j = i; j < Dim; ++j) {
41 inv_spatial_metric->get(i, j) *= 0.01;
44 for (
size_t i = 0; i < Dim; ++i) {
45 inv_spatial_metric->get(i, i) += 1.0;
55 void normalize_vector_and_covector(
56 const gsl::not_null<tnsr::i<DataVector, Dim>*> unit_normal_covector,
57 const gsl::not_null<tnsr::I<DataVector, Dim>*> unit_normal_vector,
58 const tnsr::II<DataVector, Dim>& inv_spatial_metric) {
59 for (
size_t i = 0; i < Dim; ++i) {
60 unit_normal_vector->get(i) =
61 inv_spatial_metric.get(i, 0) * get<0>(*unit_normal_covector);
62 for (
size_t j = 1; j < Dim; ++j) {
63 unit_normal_vector->get(i) +=
64 inv_spatial_metric.get(i, j) * unit_normal_covector->get(j);
70 for (
auto& t : *unit_normal_covector) {
71 t /= normal_magnitude;
73 for (
auto& t : *unit_normal_vector) {
74 t /= normal_magnitude;