RadioAstronomySoftwareGroup / pyuvsim

A ultra-high precision package for simulating radio interferometers in python on compute clusters.
https://pyuvsim.readthedocs.io/en/latest/
BSD 3-Clause "New" or "Revised" License
42 stars 7 forks source link

Are the uvw coordinates taking into account gravitational delay? #493

Closed Joshuaalbert closed 2 months ago

Joshuaalbert commented 2 months ago

From the docs it looks like you UVW are ENU. However, typically the uvw are defined as

    delay(l,m) ~ u l + v m + w sqrt(1 - l^2 - m^2)

which includes many effects from GR using PPN, from which it follows:

    w = delay(l=0, m=0)
    u = d/dl delay(l=0, m=0)
    v = d/dm delay(l=0, m=0)

The delay error based on this approximation when used in the standard RIME is then:

    error(l,m) = delay(l,m) - (u l + v m + w sqrt(1 - l^2 - m^2))
aelanman commented 2 months ago

Hi @Joshuaalbert -- Our coordinate definitions are strictly geometric, and don't take into account GR effects. UVW coordinates are the baseline vector projected in the direction of the phase center, though the documentation of pyuvdata should be more precise on that. I'll note that this is motivated by the parameters available to the simulator. We don't know delay a priori, only the source position (in ICRS coords) and the baseline vector (in ITRS). Can you show what you get for error(l,m)?

Since the main applications of pyuvsim so far have been in simulating short baselines in connected arrays, we didn't account for the much higher-order effects relevant to VLBI. I can point you to my package pycalc11, which provides a python interface to the CALC11 VLBI delay model. I'm still experimenting with providing access to the UVWs it computes, but can push on that if you need.

Joshuaalbert commented 2 months ago

The effect varies throughout the year. For a zenith phase centre or tracking antenna on 3km baselines (the effect is linear in baseline length) it looks like this

EDIT: previous uploads excluded som bigger solar system objects. This one includes all the planets and Earth's moon and Sun. delay_error_3km_01_Apr_2024 delay_error_3km_01_Jan_2024 delay_error_3km_01_Jul_2024 delay_error_3km_01_Oct_2024

aelanman commented 2 months ago

How are you generating delay(l,m)?

Joshuaalbert commented 2 months ago

Some code I wrote myself that computes the delay taking into account effects down to 0.1 ps

aelanman commented 2 months ago

pyuvsim isn't currently designed with that specification in mind, but if you're interested in sharing your code we can try to include higher-order effects. I'd also be interested in seeing a comparison between your delay model and pycalc11

Joshuaalbert commented 2 months ago

Sounds good. Let's close this issue, but open another one related to comparing with calc11. After that if the results are favorable we can discuss contributing.