Closed keefemitman closed 11 months ago
Oh I've also noticed that the tolerances in the transformation code regarding supertranslations are a bit stringent.
@moble how did you come up with these? Can we relax them?
Looks like there are some sxs/scri compatibility issues. Working on a fix and will push sometime next week.
This PR updates the
map_to_superrest_frame.py
code to use the classscri.bms_transformations.BMSTransformation
to keep track of the BMS transformations that we're applying. By doing so, this enables us to only ever transform the original ABD object (since we can compose transformations), which, in theory, should help reduce numerical noise.Apart from updating the
map_to_superrest_frame.py
code, this also adds a new file,map_to_abd_frame.py
, which includes the functionmap_to_abd_frame
. This function maps one ABD object to the frame of another.This is achieved by doing the following:
target_ABD
to the superrest frame; call itT1
self
to the superrest frame; call itT2
self
totarget_ABD
viaT1.inverse() * T_time_phase * T2
To ensure this function works as expected, the test file
test_abd_frame.py
has also been added.One thing I'm unsure of is how to define the error between the two ABD objects. If the user chooses to do an optimization over the time/phase freedom, then the error is simply the relative error between the strain waveforms. If not, then the error is defined to be the average of the relative error of the Weyl scalars and strain. I don't think this should matter too much, but if people have ideas that are better than what I've implemented, I'd be happy to change the code accordingly.
@moble @duetosymmetry might find this of interest.