65 double PreciseRange::ComputeAtTransmitTime(
const CommonTime& nomRecTime,
70 const std::string& freq1,
71 const std::string& freq2,
83 std::tie(success, transmit) =
84 RawRange::estTransmitFromObs(nomRecTime, pr, eph,
88 InvalidRequest ir(
"getXvt failed");
94 InvalidRequest ir(
"getXvt failed");
98 SatR.setECEF(svPosVel.
x);
104 Sagnac = ((SatR.X() / ellipsoid.
c()) * (rxPos.
Y() / ellipsoid.
c()) -
105 (SatR.Y() / ellipsoid.
c()) * (rxPos.
X() / ellipsoid.
c())) *
111 double rx = rxPos.
radius();
112 if (::fabs(rx) < 1.e-8)
116 double rs = SatR.radius();
118 std::tie(dr, std::ignore) =
119 RawRange::computeRange(rxPos, SatR, 0, ellipsoid);
120 relativity2 = -0.00887005608 *
::log((rx + rs + dr) / (rx + rs - dr));
121 transmit -= relativity2 / ellipsoid.
c();
126 InvalidRequest ir(
"getXvt failed");
132 relativity = svPosVel.
relcorr * ellipsoid.
c();
133 satclkbias = svPosVel.
clkbias * ellipsoid.
c();
134 satclkdrift = svPosVel.
clkdrift * ellipsoid.
c();
137 std::tie(rawrange, std::ignore) =
138 RawRange::computeRange(rxPos, SatR, 0, ellipsoid);
139 double dt = rawrange / ellipsoid.
c();
140 std::tie(rawrange, svPosVel) =
141 RawRange::computeRange(rxPos, svPosVel, dt, ellipsoid);
144 SatR.setECEF(svPosVel.
x);
145 SatV.setECEF(svPosVel.
v);
148 Triple S2R(rxPos.
X() - SatR.X(), rxPos.
Y() - SatR.Y(), rxPos.
Z() - SatR.Z());
153 if (isCOM && antenna.
isValid())
156 unsigned int freq1num(strtoul(freq1.substr(1).c_str(), 0, 10));
157 unsigned int freq2num(strtoul(freq2.substr(1).c_str(), 0, 10));
159 double fact1((alpha + 1.0) / alpha);
160 double fact2(-1.0 / alpha);
192 for (
unsigned int i = 0; i < 3; i++)
195 PCO(i) = (fact1 * pco1[i] + fact2 * pco2[i]) / 1000.0;
201 Triple pcoxyz(SatPCOXYZ(0), SatPCOXYZ(1), SatPCOXYZ(2));
203 satLOSPCO = pcoxyz.
dot(S2R);
207 double nadir, az, pcv1, pcv2(0.0);
214 satLOSPCV = 0.001 * (fact1 * pcv1 + fact2 * pcv2);
218 satLOSPCO = satLOSPCV = 0.0;
224 for (
unsigned int i = 0; i < 3; i++)
226 cosines[i] = -S2R[i];
236 return (rawrange - satclkbias - relativity - relativity2 - satLOSPCO +