Speed up baselineGrid.py and cut prints (#314)

* track the prev guess in `geo2rdr`, break after convergence

* create doppler Poly once, avoid prints

Orbit.geo2rdr creates a poly, which prints "Polynomial Order: 0 - by - 0" each time
LT1AB
Scott Staniewicz 2021-07-21 00:59:00 -05:00 committed by GitHub
parent 85463f182a
commit eb5790a884
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 3 deletions

View File

@ -1003,7 +1003,6 @@ class Orbit(Component):
Takes a lat, lon, height triplet and returns azimuth time and range. Takes a lat, lon, height triplet and returns azimuth time and range.
Assumes zero doppler for now. Assumes zero doppler for now.
''' '''
from isceobj.Planet.Planet import Planet from isceobj.Planet.Planet import Planet
from isceobj.Util.Poly2D import Poly2D from isceobj.Util.Poly2D import Poly2D
if doppler is None: if doppler is None:
@ -1021,6 +1020,8 @@ class Orbit(Component):
delta = (self.maxTime - self.minTime).total_seconds() * 0.5 delta = (self.maxTime - self.minTime).total_seconds() * 0.5
tguess = self.minTime + datetime.timedelta(seconds = delta) tguess = self.minTime + datetime.timedelta(seconds = delta)
outOfBounds = False outOfBounds = False
# Start the previous guess tracking with dummy value
t_prev_guess = tguess + datetime.timedelta(seconds=10)
for ii in range(51): for ii in range(51):
try: try:
sv = self.interpolateOrbit(tguess, method='hermite') sv = self.interpolateOrbit(tguess, method='hermite')
@ -1045,11 +1046,14 @@ class Orbit(Component):
fnprime = c1 + c2 * dopfact fnprime = c1 + c2 * dopfact
tguess = tguess - datetime.timedelta(seconds = fn/fnprime) tguess = tguess - datetime.timedelta(seconds = fn/fnprime)
if abs(tguess - t_prev_guess).total_seconds() < 5e-9:
break
else:
t_prev_guess = tguess
if outOfBounds: if outOfBounds:
raise Exception('Interpolation time out of bounds') raise Exception('Interpolation time out of bounds')
return tguess, rng return tguess, rng

View File

@ -52,6 +52,7 @@ def main(iargs=None):
''' '''
inps=cmdLineParse(iargs) inps=cmdLineParse(iargs)
from isceobj.Planet.Planet import Planet from isceobj.Planet.Planet import Planet
from isceobj.Util.Poly2D import Poly2D
import numpy as np import numpy as np
import shelve import shelve
@ -101,6 +102,8 @@ def main(iargs=None):
nAzimuth = int(np.max([30,int(np.ceil(azimuthLimits))])) nAzimuth = int(np.max([30,int(np.ceil(azimuthLimits))]))
azimuthTime = [mSensingStart + datetime.timedelta(seconds= x * azimuthLimits/(nAzimuth-1.0)) for x in range(nAzimuth)] azimuthTime = [mSensingStart + datetime.timedelta(seconds= x * azimuthLimits/(nAzimuth-1.0)) for x in range(nAzimuth)]
doppler = Poly2D()
doppler.initPoly(azimuthOrder=0, rangeOrder=0, coeffs=[[0.]])
Bperp = np.zeros((nAzimuth,nRange), dtype=np.float32) Bperp = np.zeros((nAzimuth,nRange), dtype=np.float32)
Bpar = np.zeros((nAzimuth,nRange), dtype=np.float32) Bpar = np.zeros((nAzimuth,nRange), dtype=np.float32)
@ -123,7 +126,7 @@ def main(iargs=None):
target = mOrb.rdr2geo(taz, rng) target = mOrb.rdr2geo(taz, rng)
targxyz = np.array(refElp.LLH(target[0], target[1], target[2]).ecef().tolist()) targxyz = np.array(refElp.LLH(target[0], target[1], target[2]).ecef().tolist())
slvTime,slvrng = sOrb.geo2rdr(target) slvTime, slvrng = sOrb.geo2rdr(target, doppler=doppler, wvl=0)
secondarySV = sOrb.interpolateOrbit(slvTime, method='hermite') secondarySV = sOrb.interpolateOrbit(slvTime, method='hermite')