SpECTRE  v2026.04.01
Loading...
Searching...
No Matches
domain::creators::time_dependence::ScalingAndZRotation< MeshDim > Class Template Referencefinal

Cubic scaling, followed by uniform rotation about the \(z\) axis: More...

#include <ScalingAndZRotation.hpp>

Classes

struct  Acceleration
 The acceleration of the expansion factors. More...
struct  AngularVelocity
 The \(x\)-, \(y\)-, and \(z\)-velocity. More...
struct  InitialExpansion
 The initial values of the expansion factors. More...
struct  InitialTime
 The initial time of the function of time. More...
struct  OuterBoundary
 The outer boundary or pivot point of the domain::CoordinateMaps::TimeDependent::CubicScale map. More...
struct  UseLinearScaling
 Whether to use linear scaling or cubic scaling. More...
struct  Velocity
 The velocity of the expansion factors. More...

Public Types

using maps_list
using GridToInertialMap
using GridToDistortedMap
using DistortedToInertialMap
using options
Public Types inherited from domain::creators::time_dependence::TimeDependence< MeshDim >
using creatable_classes

Public Member Functions

 ScalingAndZRotation (const ScalingAndZRotation &)=delete
 ScalingAndZRotation (ScalingAndZRotation &&)=default
ScalingAndZRotationoperator= (const ScalingAndZRotation &)=delete
ScalingAndZRotationoperator= (ScalingAndZRotation &&)=default
 ScalingAndZRotation (double initial_time, double angular_velocity, double outer_boundary, bool use_linear_scaling, const std::array< double, 2 > &initial_expansion, const std::array< double, 2 > &velocity, const std::array< double, 2 > &acceleration)
auto get_clone () const -> std::unique_ptr< TimeDependence< MeshDim > > override
 Returns a std::unique_ptr pointing to a copy of the TimeDependence.
auto block_maps_grid_to_inertial (size_t number_of_blocks) const -> std::vector< std::unique_ptr< domain::CoordinateMapBase< Frame::Grid, Frame::Inertial, MeshDim > > > override
 Returns the coordinate maps from the Frame::Grid to the Frame::Inertial frame for each block.
auto block_maps_grid_to_distorted (size_t number_of_blocks) const -> std::vector< std::unique_ptr< domain::CoordinateMapBase< Frame::Grid, Frame::Distorted, MeshDim > > > override
 Returns the coordinate maps from the Frame::Grid to the Frame::Distorted frame for each block. Returns vector of nullptr if there is no distorted frame.
auto block_maps_distorted_to_inertial (size_t number_of_blocks) const -> std::vector< std::unique_ptr< domain::CoordinateMapBase< Frame::Distorted, Frame::Inertial, MeshDim > > > override
 Returns the coordinate maps from the Frame::Distorted to the Frame::Inertial frame for each block. Returns vector of nullptr if is no distorted frame.
auto functions_of_time (const std::unordered_map< std::string, double > &initial_expiration_times={}) const -> std::unordered_map< std::string, std::unique_ptr< domain::FunctionsOfTime::FunctionOfTime > > override
 Returns the functions of time for the domain.
Public Member Functions inherited from domain::creators::time_dependence::TimeDependence< MeshDim >
 TimeDependence (const TimeDependence &)=default
TimeDependenceoperator= (const TimeDependence &)=default
 TimeDependence (TimeDependence &&)=default
TimeDependenceoperator= (TimeDependence &&)=default
bool is_none () const
 Returns true if the instance is None, meaning no time dependence.

Static Public Attributes

static constexpr size_t mesh_dim = MeshDim
static constexpr Options::String help

Friends

template<size_t LocalDim>
bool operator== (const ScalingAndZRotation< LocalDim > &lhs, const ScalingAndZRotation< LocalDim > &rhs)

Detailed Description

template<size_t MeshDim>
class domain::creators::time_dependence::ScalingAndZRotation< MeshDim >

Cubic scaling, followed by uniform rotation about the \(z\) axis:

\begin{eqnarray*}x &\to& x \cos \alpha(t) - y \sin \alpha(t)\text{,} \\ y &\to& x \sin \alpha(t) + y \cos \alpha(t)\text{,} \end{eqnarray*}

where \(\alpha(t)\) is a domain::FunctionsOfTime::FunctionOfTime. For 3 spatial dimensions, \(z \to z\), and the rotation is implemented as a product of the 2D rotation and an identity map. The rotation is undefined (and therefore unimplemented here) for 1 spatial dimension.

The expansion is done by the domain::CoordinateMaps::TimeDependent::CubicScale map. A linear radial scaling can be used by specifying the UseLinearScaling bool.

For this map, the cubic scaling goes from the grid frame to the distorted frame, and the rotation goes from the distorted frame to the inertial frame. This was chosen as a way of testing composed maps in the distorted frame.

Member Typedef Documentation

◆ DistortedToInertialMap

template<size_t MeshDim>
using domain::creators::time_dependence::ScalingAndZRotation< MeshDim >::DistortedToInertialMap
Initial value:
detail::generate_coordinate_map_t<
tmpl::list<tmpl::conditional_t<MeshDim == 2, Rotation,
domain::CoordinateMaps::TimeDependent::
ProductOf2Maps<Rotation, Identity>>>>
Definition IndexType.hpp:47
Definition IndexType.hpp:46

◆ GridToDistortedMap

template<size_t MeshDim>
using domain::creators::time_dependence::ScalingAndZRotation< MeshDim >::GridToDistortedMap
Initial value:
A coordinate map or composition of coordinate maps.
Definition CoordinateMap.hpp:314

◆ GridToInertialMap

template<size_t MeshDim>
using domain::creators::time_dependence::ScalingAndZRotation< MeshDim >::GridToInertialMap
Initial value:
detail::generate_coordinate_map_t<
tmpl::list<CubicScaleMap,
tmpl::conditional_t<MeshDim == 2, Rotation,
domain::CoordinateMaps::TimeDependent::
ProductOf2Maps<Rotation, Identity>>>>
Definition IndexType.hpp:45

◆ maps_list

template<size_t MeshDim>
using domain::creators::time_dependence::ScalingAndZRotation< MeshDim >::maps_list
Initial value:
tmpl::flatten<tmpl::list<
tmpl::conditional_t<
MeshDim == 2,
Rotation>,
CubicScaleMap, Rotation>>,
Rotation3D>,
CubicScaleMap, Rotation3D>>>>>

◆ options

template<size_t MeshDim>
using domain::creators::time_dependence::ScalingAndZRotation< MeshDim >::options
Initial value:
The initial time of the functions of time.
Definition BinaryCompactObject.hpp:149
The acceleration of the expansion factors.
Definition CubicScale.hpp:82
The initial values of the expansion factors.
Definition CubicScale.hpp:71
The outer boundary or pivot point of the domain::CoordinateMaps::TimeDependent::CubicScale map.
Definition CubicScale.hpp:65
Whether to use linear scaling or cubic scaling.
Definition CubicScale.hpp:87
The velocity of the expansion factors.
Definition CubicScale.hpp:77
The -, -, and -velocity.
Definition ScalingAndZRotation.hpp:100

Member Function Documentation

◆ block_maps_distorted_to_inertial()

template<size_t MeshDim>
auto domain::creators::time_dependence::ScalingAndZRotation< MeshDim >::block_maps_distorted_to_inertial ( size_t number_of_blocks) const -> std::vector< std::unique_ptr< domain::CoordinateMapBase< Frame::Distorted, Frame::Inertial, MeshDim > > >
overridevirtual

Returns the coordinate maps from the Frame::Distorted to the Frame::Inertial frame for each block. Returns vector of nullptr if is no distorted frame.

Implements domain::creators::time_dependence::TimeDependence< MeshDim >.

◆ block_maps_grid_to_distorted()

template<size_t MeshDim>
auto domain::creators::time_dependence::ScalingAndZRotation< MeshDim >::block_maps_grid_to_distorted ( size_t number_of_blocks) const -> std::vector< std::unique_ptr< domain::CoordinateMapBase< Frame::Grid, Frame::Distorted, MeshDim > > >
overridevirtual

Returns the coordinate maps from the Frame::Grid to the Frame::Distorted frame for each block. Returns vector of nullptr if there is no distorted frame.

Implements domain::creators::time_dependence::TimeDependence< MeshDim >.

◆ block_maps_grid_to_inertial()

template<size_t MeshDim>
auto domain::creators::time_dependence::ScalingAndZRotation< MeshDim >::block_maps_grid_to_inertial ( size_t number_of_blocks) const -> std::vector< std::unique_ptr< domain::CoordinateMapBase< Frame::Grid, Frame::Inertial, MeshDim > > >
overridevirtual

Returns the coordinate maps from the Frame::Grid to the Frame::Inertial frame for each block.

Implements domain::creators::time_dependence::TimeDependence< MeshDim >.

◆ functions_of_time()

template<size_t MeshDim>
auto domain::creators::time_dependence::ScalingAndZRotation< MeshDim >::functions_of_time ( const std::unordered_map< std::string, double > & initial_expiration_times = {}) const -> std::unordered_map< std::string, std::unique_ptr< domain::FunctionsOfTime::FunctionOfTime > >
overridevirtual

Returns the functions of time for the domain.

Implements domain::creators::time_dependence::TimeDependence< MeshDim >.

◆ get_clone()

template<size_t MeshDim>
auto domain::creators::time_dependence::ScalingAndZRotation< MeshDim >::get_clone ( ) const -> std::unique_ptr< TimeDependence< MeshDim > >
overridevirtual

Member Data Documentation

◆ help

template<size_t MeshDim>
Options::String domain::creators::time_dependence::ScalingAndZRotation< MeshDim >::help
staticconstexpr
Initial value:
= {
"A spatial radial scaling followed by a rotation about the z-axis.\n"
"The spatial radial scaling is either based on a cubic scaling or a\n"
"simple linear scaling. If the two expansion functions of time have\n"
"the same name then the scaling is a linear radial scaling.\n"
"The spatially uniform rotation about is initialized with a\n"
"constant angular velocity."}

The documentation for this class was generated from the following file:
  • src/Domain/Creators/TimeDependence/ScalingAndZRotation.hpp