SpECTRE  v2024.12.16
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
CurvedScalarWave Namespace Reference

Items related to evolving a scalar wave on a curved background. More...

Namespaces

namespace  Actions
 Actions for the curved scalar wave system.
 
namespace  AnalyticData
 Holds classes implementing analytic data for the CurvedScalarWave system.
 
namespace  BoundaryConditions
 Boundary conditions for the curved scalar wave system.
 
namespace  BoundaryCorrections
 Boundary corrections/numerical fluxes.
 
namespace  Initialization
 Utilities for initializing the curved scalar wave system.
 
namespace  OptionTags
 Option tags for the curved scalar wave system.
 
namespace  Tags
 Tags for the curved scalar wave system.
 
namespace  Worldtube
 The set of utilities for performing CurvedScalarWave evolution with a worldtube excision scheme.
 

Classes

struct  CharacteristicFieldsCompute
 
struct  CharacteristicSpeedsCompute
 
struct  EvolvedFieldsFromCharacteristicFieldsCompute
 
struct  System
 
struct  TimeDerivative
 Compute the time derivative of the evolved variables of the first-order scalar wave system on a curved background. More...
 

Functions

template<size_t SpatialDim>
std::array< DataVector, 4 > characteristic_speeds (const Scalar< DataVector > &gamma_1, const Scalar< DataVector > &lapse, const tnsr::I< DataVector, SpatialDim, Frame::Inertial > &shift, const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &unit_normal_one_form)
 Compute the characteristic speeds for the scalar wave system in curved spacetime. More...
 
template<size_t SpatialDim>
void characteristic_speeds (gsl::not_null< std::array< DataVector, 4 > * > char_speeds, const Scalar< DataVector > &gamma_1, const Scalar< DataVector > &lapse, const tnsr::I< DataVector, SpatialDim, Frame::Inertial > &shift, const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &unit_normal_one_form)
 Compute the characteristic speeds for the scalar wave system in curved spacetime. More...
 
template<size_t SpatialDim>
void characteristic_speeds (gsl::not_null< tnsr::a< DataVector, 3, Frame::Inertial > * > char_speeds, const Scalar< DataVector > &gamma_1, const Scalar< DataVector > &lapse, const tnsr::I< DataVector, SpatialDim, Frame::Inertial > &shift, const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &unit_normal_one_form)
 Compute the characteristic speeds for the scalar wave system in curved spacetime. More...
 
template<size_t SpatialDim>
Variables< tmpl::list< Tags::VPsi, Tags::VZero< SpatialDim >, Tags::VPlus, Tags::VMinus > > characteristic_fields (const Scalar< DataVector > &gamma_2, const Scalar< DataVector > &psi, const Scalar< DataVector > &pi, const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &phi, const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &unit_normal_one_form, const tnsr::I< DataVector, SpatialDim, Frame::Inertial > &unit_normal_vector)
 Computes characteristic fields from evolved fields. More...
 
template<size_t SpatialDim>
void characteristic_fields (gsl::not_null< Variables< tmpl::list< Tags::VPsi, Tags::VZero< SpatialDim >, Tags::VPlus, Tags::VMinus > > * > char_fields, const Scalar< DataVector > &gamma_2, const Scalar< DataVector > &psi, const Scalar< DataVector > &pi, const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &phi, const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &unit_normal_one_form, const tnsr::I< DataVector, SpatialDim, Frame::Inertial > &unit_normal_vector)
 Computes characteristic fields from evolved fields. More...
 
template<size_t SpatialDim>
void characteristic_fields (const gsl::not_null< Scalar< DataVector > * > &v_psi, const gsl::not_null< tnsr::i< DataVector, SpatialDim, Frame::Inertial > * > &v_zero, const gsl::not_null< Scalar< DataVector > * > &v_plus, const gsl::not_null< Scalar< DataVector > * > &v_minus, const Scalar< DataVector > &gamma_2, const Scalar< DataVector > &psi, const Scalar< DataVector > &pi, const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &phi, const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &unit_normal_one_form, const tnsr::I< DataVector, SpatialDim, Frame::Inertial > &unit_normal_vector)
 Computes characteristic fields from evolved fields. More...
 
template<size_t SpatialDim>
Variables< tmpl::list< Tags::Psi, Tags::Pi, Tags::Phi< SpatialDim > > > evolved_fields_from_characteristic_fields (const Scalar< DataVector > &gamma_2, const Scalar< DataVector > &v_psi, const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &v_zero, const Scalar< DataVector > &v_plus, const Scalar< DataVector > &v_minus, const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &unit_normal_one_form)
 For expressions used here to compute evolved fields from characteristic ones, see CharacteristicFieldsCompute.
 
template<size_t SpatialDim>
void evolved_fields_from_characteristic_fields (gsl::not_null< Variables< tmpl::list< Tags::Psi, Tags::Pi, Tags::Phi< SpatialDim > > > * > evolved_fields, const Scalar< DataVector > &gamma_2, const Scalar< DataVector > &v_psi, const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &v_zero, const Scalar< DataVector > &v_plus, const Scalar< DataVector > &v_minus, const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &unit_normal_one_form)
 For expressions used here to compute evolved fields from characteristic ones, see CharacteristicFieldsCompute.
 
template<size_t SpatialDim>
void evolved_fields_from_characteristic_fields (gsl::not_null< Scalar< DataVector > * > psi, gsl::not_null< Scalar< DataVector > * > pi, gsl::not_null< tnsr::i< DataVector, SpatialDim, Frame::Inertial > * > phi, const Scalar< DataVector > &gamma_2, const Scalar< DataVector > &v_psi, const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &v_zero, const Scalar< DataVector > &v_plus, const Scalar< DataVector > &v_minus, const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &unit_normal_one_form)
 For expressions used here to compute evolved fields from characteristic ones, see CharacteristicFieldsCompute.
 
template<size_t SpatialDim>
tnsr::i< DataVector, SpatialDim, Frame::Inertialone_index_constraint (const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &d_psi, const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &phi)
 Computes the scalar-wave one-index constraint. More...
 
template<size_t SpatialDim>
void one_index_constraint (gsl::not_null< tnsr::i< DataVector, SpatialDim, Frame::Inertial > * > constraint, const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &d_psi, const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &phi)
 Computes the scalar-wave one-index constraint. More...
 
template<size_t SpatialDim>
tnsr::ij< DataVector, SpatialDim, Frame::Inertialtwo_index_constraint (const tnsr::ij< DataVector, SpatialDim, Frame::Inertial > &d_phi)
 Computes the scalar-wave 2-index constraint. More...
 
template<size_t SpatialDim>
void two_index_constraint (gsl::not_null< tnsr::ij< DataVector, SpatialDim, Frame::Inertial > * > constraint, const tnsr::ij< DataVector, SpatialDim, Frame::Inertial > &d_phi)
 Computes the scalar-wave 2-index constraint. More...
 

Detailed Description

Items related to evolving a scalar wave on a curved background.

Function Documentation

◆ characteristic_fields() [1/3]

template<size_t SpatialDim>
void CurvedScalarWave::characteristic_fields ( const gsl::not_null< Scalar< DataVector > * > &  v_psi,
const gsl::not_null< tnsr::i< DataVector, SpatialDim, Frame::Inertial > * > &  v_zero,
const gsl::not_null< Scalar< DataVector > * > &  v_plus,
const gsl::not_null< Scalar< DataVector > * > &  v_minus,
const Scalar< DataVector > &  gamma_2,
const Scalar< DataVector > &  psi,
const Scalar< DataVector > &  pi,
const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &  phi,
const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &  unit_normal_one_form,
const tnsr::I< DataVector, SpatialDim, Frame::Inertial > &  unit_normal_vector 
)

Computes characteristic fields from evolved fields.

CharacteristicFieldsCompute and EvolvedFieldsFromCharacteristicFieldsCompute convert between characteristic and evolved fields for the scalar-wave system in curved spacetime.

CharacteristicFieldsCompute computes characteristic fields as described in "Optimal constraint projection for hyperbolic evolution systems" by Holst et. al . Their names used here differ from this paper:

SpECTREHolstvψ^Z1vi0^Zi2v±^u1±

The characteristic fields u are given in terms of the evolved fields by Eq. (33) - (35) of , respectively:

vψ^=ψvi0^=(δiknink)Φk:=PikΦkv±^=Π±niΦiγ2ψ

where ψ is the scalar field, Π and Φi are evolved fields introduced by first derivatives of ψ, γ2 is a constraint damping parameter, and nk is the unit normal to the surface.

EvolvedFieldsFromCharacteristicFieldsCompute computes evolved fields w in terms of the characteristic fields. This uses the inverse of above relations (c.f. Eq. (36) - (38) of ):

ψ=vψ^,Π=12(v+^+v^)+γ2vψ^,Φi=12(v+^v^)ni+vi0^.

The corresponding characteristic speeds λ are computed by CharacteristicSpeedsCompute .

◆ characteristic_fields() [2/3]

template<size_t SpatialDim>
Variables< tmpl::list< Tags::VPsi, Tags::VZero< SpatialDim >, Tags::VPlus, Tags::VMinus > > CurvedScalarWave::characteristic_fields ( const Scalar< DataVector > &  gamma_2,
const Scalar< DataVector > &  psi,
const Scalar< DataVector > &  pi,
const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &  phi,
const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &  unit_normal_one_form,
const tnsr::I< DataVector, SpatialDim, Frame::Inertial > &  unit_normal_vector 
)

Computes characteristic fields from evolved fields.

CharacteristicFieldsCompute and EvolvedFieldsFromCharacteristicFieldsCompute convert between characteristic and evolved fields for the scalar-wave system in curved spacetime.

CharacteristicFieldsCompute computes characteristic fields as described in "Optimal constraint projection for hyperbolic evolution systems" by Holst et. al . Their names used here differ from this paper:

SpECTREHolstvψ^Z1vi0^Zi2v±^u1±

The characteristic fields u are given in terms of the evolved fields by Eq. (33) - (35) of , respectively:

vψ^=ψvi0^=(δiknink)Φk:=PikΦkv±^=Π±niΦiγ2ψ

where ψ is the scalar field, Π and Φi are evolved fields introduced by first derivatives of ψ, γ2 is a constraint damping parameter, and nk is the unit normal to the surface.

EvolvedFieldsFromCharacteristicFieldsCompute computes evolved fields w in terms of the characteristic fields. This uses the inverse of above relations (c.f. Eq. (36) - (38) of ):

ψ=vψ^,Π=12(v+^+v^)+γ2vψ^,Φi=12(v+^v^)ni+vi0^.

The corresponding characteristic speeds λ are computed by CharacteristicSpeedsCompute .

◆ characteristic_fields() [3/3]

template<size_t SpatialDim>
void CurvedScalarWave::characteristic_fields ( gsl::not_null< Variables< tmpl::list< Tags::VPsi, Tags::VZero< SpatialDim >, Tags::VPlus, Tags::VMinus > > * >  char_fields,
const Scalar< DataVector > &  gamma_2,
const Scalar< DataVector > &  psi,
const Scalar< DataVector > &  pi,
const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &  phi,
const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &  unit_normal_one_form,
const tnsr::I< DataVector, SpatialDim, Frame::Inertial > &  unit_normal_vector 
)

Computes characteristic fields from evolved fields.

CharacteristicFieldsCompute and EvolvedFieldsFromCharacteristicFieldsCompute convert between characteristic and evolved fields for the scalar-wave system in curved spacetime.

CharacteristicFieldsCompute computes characteristic fields as described in "Optimal constraint projection for hyperbolic evolution systems" by Holst et. al . Their names used here differ from this paper:

SpECTREHolstvψ^Z1vi0^Zi2v±^u1±

The characteristic fields u are given in terms of the evolved fields by Eq. (33) - (35) of , respectively:

vψ^=ψvi0^=(δiknink)Φk:=PikΦkv±^=Π±niΦiγ2ψ

where ψ is the scalar field, Π and Φi are evolved fields introduced by first derivatives of ψ, γ2 is a constraint damping parameter, and nk is the unit normal to the surface.

EvolvedFieldsFromCharacteristicFieldsCompute computes evolved fields w in terms of the characteristic fields. This uses the inverse of above relations (c.f. Eq. (36) - (38) of ):

ψ=vψ^,Π=12(v+^+v^)+γ2vψ^,Φi=12(v+^v^)ni+vi0^.

The corresponding characteristic speeds λ are computed by CharacteristicSpeedsCompute .

◆ characteristic_speeds() [1/3]

template<size_t SpatialDim>
std::array< DataVector, 4 > CurvedScalarWave::characteristic_speeds ( const Scalar< DataVector > &  gamma_1,
const Scalar< DataVector > &  lapse,
const tnsr::I< DataVector, SpatialDim, Frame::Inertial > &  shift,
const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &  unit_normal_one_form 
)

Compute the characteristic speeds for the scalar wave system in curved spacetime.

Computes the speeds as described in "Optimal constraint projection for hyperbolic evolution systems" by Holst et. al [see text following Eq. (32)]. The characteristic fields' names used here are similar to the paper:

SpECTREHolstvψ^Z1vi0^Zi2v±^u1±

The corresponding characteristic speeds λ are given in the text following Eq. (38) of :

λψ^=(1+γ1)nkNkλ0^=nkNkλ±^=nkNk±N

where nk is the unit normal to the surface.

◆ characteristic_speeds() [2/3]

template<size_t SpatialDim>
void CurvedScalarWave::characteristic_speeds ( gsl::not_null< std::array< DataVector, 4 > * >  char_speeds,
const Scalar< DataVector > &  gamma_1,
const Scalar< DataVector > &  lapse,
const tnsr::I< DataVector, SpatialDim, Frame::Inertial > &  shift,
const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &  unit_normal_one_form 
)

Compute the characteristic speeds for the scalar wave system in curved spacetime.

Computes the speeds as described in "Optimal constraint projection for hyperbolic evolution systems" by Holst et. al [see text following Eq. (32)]. The characteristic fields' names used here are similar to the paper:

SpECTREHolstvψ^Z1vi0^Zi2v±^u1±

The corresponding characteristic speeds λ are given in the text following Eq. (38) of :

λψ^=(1+γ1)nkNkλ0^=nkNkλ±^=nkNk±N

where nk is the unit normal to the surface.

◆ characteristic_speeds() [3/3]

template<size_t SpatialDim>
void CurvedScalarWave::characteristic_speeds ( gsl::not_null< tnsr::a< DataVector, 3, Frame::Inertial > * >  char_speeds,
const Scalar< DataVector > &  gamma_1,
const Scalar< DataVector > &  lapse,
const tnsr::I< DataVector, SpatialDim, Frame::Inertial > &  shift,
const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &  unit_normal_one_form 
)

Compute the characteristic speeds for the scalar wave system in curved spacetime.

Computes the speeds as described in "Optimal constraint projection for hyperbolic evolution systems" by Holst et. al [see text following Eq. (32)]. The characteristic fields' names used here are similar to the paper:

SpECTREHolstvψ^Z1vi0^Zi2v±^u1±

The corresponding characteristic speeds λ are given in the text following Eq. (38) of :

λψ^=(1+γ1)nkNkλ0^=nkNkλ±^=nkNk±N

where nk is the unit normal to the surface.

◆ one_index_constraint() [1/2]

template<size_t SpatialDim>
tnsr::i< DataVector, SpatialDim, Frame::Inertial > CurvedScalarWave::one_index_constraint ( const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &  d_psi,
const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &  phi 
)

Computes the scalar-wave one-index constraint.

Details

Computes the scalar-wave one-index constraint, Ci=iψΦi, which is given by Eq. (19) of

◆ one_index_constraint() [2/2]

template<size_t SpatialDim>
void CurvedScalarWave::one_index_constraint ( gsl::not_null< tnsr::i< DataVector, SpatialDim, Frame::Inertial > * >  constraint,
const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &  d_psi,
const tnsr::i< DataVector, SpatialDim, Frame::Inertial > &  phi 
)

Computes the scalar-wave one-index constraint.

Details

Computes the scalar-wave one-index constraint, Ci=iψΦi, which is given by Eq. (19) of

◆ two_index_constraint() [1/2]

template<size_t SpatialDim>
tnsr::ij< DataVector, SpatialDim, Frame::Inertial > CurvedScalarWave::two_index_constraint ( const tnsr::ij< DataVector, SpatialDim, Frame::Inertial > &  d_phi)

Computes the scalar-wave 2-index constraint.

Details

Computes the scalar-wave 2-index FOSH constraint [Eq. (20) of ],

(1)CijiΦjjΦi

where Φi=iψ; and ψ is the scalar field.

◆ two_index_constraint() [2/2]

template<size_t SpatialDim>
void CurvedScalarWave::two_index_constraint ( gsl::not_null< tnsr::ij< DataVector, SpatialDim, Frame::Inertial > * >  constraint,
const tnsr::ij< DataVector, SpatialDim, Frame::Inertial > &  d_phi 
)

Computes the scalar-wave 2-index constraint.

Details

Computes the scalar-wave 2-index FOSH constraint [Eq. (20) of ],

(2)CijiΦjjΦi

where Φi=iψ; and ψ is the scalar field.