|
SpECTRE
v2025.08.19
|
A standard trigger that monitors the separation between two objects (either black holes or neutron stars, typically) is below a threshold. More...
#include <SeparationLessThan.hpp>
Classes | |
| struct | Value |
Public Types | |
| using | options = tmpl::list< Value > |
| using | argument_tags = tmpl::conditional_t< UseGridCentersFunctionOfTime, tmpl::list< Tags::Time, domain::Tags::FunctionsOfTime >, tmpl::list< Tags::Time, domain::Tags::Domain< 3 >, domain::Tags::FunctionsOfTime, domain::Tags::ObjectCenter< domain::ObjectLabel::A >, domain::Tags::ObjectCenter< domain::ObjectLabel::B > > > |
Public Member Functions | |
| SeparationLessThan (double separation) | |
| bool | operator() (double time, const ::Domain< 3 > &domain, const std::unordered_map< std::string, std::unique_ptr< domain::FunctionsOfTime::FunctionOfTime > > &functions_of_time, const tnsr::I< double, 3, Frame::Grid > &grid_object_center_a, const tnsr::I< double, 3, Frame::Grid > &grid_object_center_b) const |
| bool | operator() (double time, const std::unordered_map< std::string, std::unique_ptr< domain::FunctionsOfTime::FunctionOfTime > > &functions_of_time) const |
| void | pup (PUP::er &p) override |
Public Member Functions inherited from Trigger | |
| WRAPPED_PUPable_abstract (Trigger) | |
| template<typename DbTags > | |
| bool | is_triggered (const db::DataBox< DbTags > &box) const |
Static Public Attributes | |
| static constexpr Options::String | help |
A standard trigger that monitors the separation between two objects (either black holes or neutron stars, typically) is below a threshold.
If UseGridCentersFunctionOfTime is true then the distance between the two object is computed using the GridCenters function of time. It is assume that the GridCenters function of time holds the grid coordinates, {x_A, y_A, z_A, x_B, y_B, z_B}. The Cartesian distance is computed between these two locations.
If UseGridCentersFunctionOfTime is false then domain::Tags::ObjectCenter<A> and domain::Tags::ObjectCenter<B> (in the inertial frame) are used to compute the separation.
Once the separation is smaller than (or equal to) the input separation, then the operator() returns true.
UseGridCentersFunctionOfTime is false then this trigger requires that domain::Tags::ObjectCenter<domain::ObjectLabel::A> and domain::Tags::ObjectCenter<domain::ObjectLabel::B> are in the DataBox. It also requires that there are two ExcisionSpheres in the Domain named ExcisionSphereA/B and that these ExcisionSpheres have had time dependent maps injected into them. The coordinate maps from these ExcisionSpheres will be used to calculate the separation in the inertial frame.UseGridCentersFunctionOfTime is true then this trigger requires that GridCenters and Rotation are a valid function of time and will only trigger true if the Rotation function of time is not a domain::FunctionsOfTime::SettleToConstantQuaternion.
|
staticconstexpr |