Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <cstddef>
7 :
8 : #include "DataStructures/ComplexDataVector.hpp"
9 : #include "DataStructures/ComplexModalVector.hpp"
10 : #include "DataStructures/SpinWeighted.hpp"
11 : #include "DataStructures/Tensor/TypeAliases.hpp"
12 : #include "Evolution/Systems/Cce/BoundaryDataTags.hpp"
13 :
14 : /// \cond
15 : class DataVector;
16 : namespace gsl {
17 : template <class T>
18 : class not_null;
19 : } // namespace gsl
20 : /// \endcond
21 :
22 : namespace Cce {
23 : /*
24 : * \brief Compute \f$\gamma_{i j}\f$, \f$\gamma^{i j}\f$,
25 : * \f$\partial_i \gamma_{j k}\f$, and
26 : * \f$\partial_t g_{i j}\f$ from input libsharp-compatible modal spatial
27 : * metric quantities.
28 : *
29 : * \details This function will apply a correction factor associated with a SpEC
30 : * bug.
31 : */
32 0 : void cartesian_spatial_metric_and_derivatives_from_unnormalized_spec_modes(
33 : gsl::not_null<tnsr::ii<DataVector, 3>*> cartesian_spatial_metric,
34 : gsl::not_null<tnsr::II<DataVector, 3>*> inverse_cartesian_spatial_metric,
35 : gsl::not_null<tnsr::ijj<DataVector, 3>*> d_cartesian_spatial_metric,
36 : gsl::not_null<tnsr::ii<DataVector, 3>*> dt_cartesian_spatial_metric,
37 : gsl::not_null<Scalar<SpinWeighted<ComplexModalVector, 0>>*>
38 : interpolation_modal_buffer,
39 : gsl::not_null<Scalar<SpinWeighted<ComplexDataVector, 0>>*>
40 : interpolation_buffer,
41 : gsl::not_null<Scalar<SpinWeighted<ComplexDataVector, 1>>*> eth_buffer,
42 : gsl::not_null<Scalar<DataVector>*> radial_correction_factor,
43 : const tnsr::ii<ComplexModalVector, 3>& spatial_metric_coefficients,
44 : const tnsr::ii<ComplexModalVector, 3>& dr_spatial_metric_coefficients,
45 : const tnsr::ii<ComplexModalVector, 3>& dt_spatial_metric_coefficients,
46 : const CartesianiSphericalJ& inverse_cartesian_to_spherical_jacobian,
47 : const tnsr::I<DataVector, 3>& unit_cartesian_coords, size_t l_max);
48 :
49 : /*!
50 : * \brief Compute \f$\beta^{i}\f$, \f$\partial_i \beta^{j}\f$, and
51 : * \f$\partial_t \beta^i\f$ from input libsharp-compatible modal spatial
52 : * metric quantities.
53 : *
54 : * \details This function will apply a correction factor associated with a SpEC
55 : * bug.
56 : */
57 1 : void cartesian_shift_and_derivatives_from_unnormalized_spec_modes(
58 : gsl::not_null<tnsr::I<DataVector, 3>*> cartesian_shift,
59 : gsl::not_null<tnsr::iJ<DataVector, 3>*> d_cartesian_shift,
60 : gsl::not_null<tnsr::I<DataVector, 3>*> dt_cartesian_shift,
61 : gsl::not_null<Scalar<SpinWeighted<ComplexModalVector, 0>>*>
62 : interpolation_modal_buffer,
63 : gsl::not_null<Scalar<SpinWeighted<ComplexDataVector, 0>>*>
64 : interpolation_buffer,
65 : gsl::not_null<Scalar<SpinWeighted<ComplexDataVector, 1>>*> eth_buffer,
66 : const tnsr::I<ComplexModalVector, 3>& shift_coefficients,
67 : const tnsr::I<ComplexModalVector, 3>& dr_shift_coefficients,
68 : const tnsr::I<ComplexModalVector, 3>& dt_shift_coefficients,
69 : const CartesianiSphericalJ& inverse_cartesian_to_spherical_jacobian,
70 : const Scalar<DataVector>& radial_derivative_correction_factor,
71 : size_t l_max);
72 :
73 : /*!
74 : * \brief Compute \f$\alpha\f$, \f$\partial_i \alpha\f$, and
75 : * \f$\partial_t \beta^i\f$ from input libsharp-compatible modal spatial
76 : * metric quantities.
77 : *
78 : * \details This function will apply a correction factor associated with a SpEC
79 : * bug.
80 : */
81 1 : void cartesian_lapse_and_derivatives_from_unnormalized_spec_modes(
82 : gsl::not_null<Scalar<DataVector>*> cartesian_lapse,
83 : gsl::not_null<tnsr::i<DataVector, 3>*> d_cartesian_lapse,
84 : gsl::not_null<Scalar<DataVector>*> dt_cartesian_lapse,
85 : gsl::not_null<Scalar<SpinWeighted<ComplexModalVector, 0>>*>
86 : interpolation_modal_buffer,
87 : gsl::not_null<Scalar<SpinWeighted<ComplexDataVector, 0>>*>
88 : interpolation_buffer,
89 : gsl::not_null<Scalar<SpinWeighted<ComplexDataVector, 1>>*> eth_buffer,
90 : const Scalar<ComplexModalVector>& lapse_coefficients,
91 : const Scalar<ComplexModalVector>& dr_lapse_coefficients,
92 : const Scalar<ComplexModalVector>& dt_lapse_coefficients,
93 : const CartesianiSphericalJ& inverse_cartesian_to_spherical_jacobian,
94 : const Scalar<DataVector>& radial_derivative_correction_factor,
95 : size_t l_max);
96 : } // namespace Cce
|