コード例 #1
0
def observe_objects(objs, controllers, end_t=600.0, dt=10.0, verbose=True):

    p = Profiler()

    class ObservedScanning(StaticList, ObservedParameters):
        pass

    #set radar
    for ctrl in controllers:
        ctrl.radar = eiscat3d
        ctrl.profiler = p
        ctrl.logger = logger

    p.start('total')
    scheduler = ObservedScanning(
        radar=eiscat3d,
        controllers=controllers,
        logger=logger,
        profiler=p,
    )

    t = np.arange(0, end_t, dt)

    if verbose:
        for obj in objs:
            print(obj)

    datas = []
    passes = []
    states = []
    for ind in range(len(objs)):

        p.start('get_state')
        states += [objs[ind].get_state(t)]
        p.stop('get_state')

        p.start('find_passes')
        passes += [eiscat3d.find_passes(t, states[ind], cache_data=True)]
        p.stop('find_passes')

        p.start('observe_passes')
        data = scheduler.observe_passes(passes[ind],
                                        space_object=objs[ind],
                                        snr_limit=False)
        p.stop('observe_passes')

        datas.append(data)

    p.stop('total')
    if verbose:
        print(p.fmt(normalize='total'))

    return {'t': t, 'observations': datas, 'passes': passes, 'states': states}
コード例 #2
0
def run_scanning_simulation(radar_ctrl):

    p = Profiler()
    radar_ctrl.profiler = p

    p.start('total')
    scheduler = ObservedScanning(
        radar=eiscat3d,
        controllers=[radar_ctrl],
        logger=logger,
        profiler=p,
    )

    p.start('equidistant_sampling')
    t = sorts.equidistant_sampling(
        orbit=obj.state,
        start_t=0,
        end_t=end_t,
        max_dpos=1e3,
    )
    p.stop('equidistant_sampling')

    print(f'Temporal points obj: {len(t)}')

    p.start('get_state')
    states = obj.get_state(t)
    p.stop('get_state')

    p.start('find_passes')
    #rename cache_data to something more descriptive
    passes = eiscat3d.find_passes(t, states, cache_data=True)
    p.stop('find_passes')

    p.start('observe_passes')
    data = scheduler.observe_passes(passes, space_object=obj, snr_limit=False)
    p.stop('observe_passes')

    for psi in data:
        for txps in psi:
            for rxtxps in txps:
                print(f'Max SNR={10*np.log10(rxtxps["snr"].max())} dB')

    p.stop('total')
    print(f'\n {radar_ctrl.__class__}: len(t) = {len(radar_ctrl.t)} \n')
    print(p.fmt(normalize='total'))
コード例 #3
0
passes_rx1 = sorts.find_passes(t, states, eiscat3d.rx[1])
print(f'rx-1 passes: {len(passes_rx1)}')
p.stop('find_passes')

p.start('sim_passes')
#finding simultaneous passes
chtx0 = np.full((len(t), ), False, dtype=np.bool)
chtx0[passes_tx0[0].inds] = True
chrx1 = np.full((len(t), ), False, dtype=np.bool)
chrx1[passes_rx1[0].inds] = True

inds = np.where(np.logical_and(chtx0, chrx1))[0]
p.stop('sim_passes')

print(f'Pass 0 length tx-0: {len(passes_tx0[0].inds)}')
print(f'Pass 0 length rx-1: {len(passes_rx1[0].inds)}')
print(f'Full tx-0 to rx-1 pass: {len(inds)}')

print('Using the predefined paired passes function')

p.start('find_simultaneous_passes')
tx0rx1_passes = sorts.find_simultaneous_passes(
    t, states, [eiscat3d.tx[0], eiscat3d.rx[1]])
p.stop('find_simultaneous_passes')

print(f'tx-0 and rx-1 passes: {len(tx0rx1_passes)}')
print(f'Full tx-0 to rx-1 pass: {len(tx0rx1_passes[0].inds)}')

p.stop('total')
print(p.fmt(normalize='total'))
コード例 #4
0
ファイル: profiler_orekit.py プロジェクト: danielk333/SORTS
    profiler=p,
)

print(prop)

state0 = np.array(
    [-7100297.113, -3897715.442, 18568433.707, 86.771, -3407.231, 2961.571])
t = np.linspace(0, 3600 * 24.0 * 2, num=5000)
mjd0 = 53005

states = prop.propagate(t, state0, mjd0, A=1.0, C_R=1.0, C_D=1.0)

p.stop('total')

print(p)
print(p.fmt(timedelta=True))
print(p.fmt(normalize='total'))

print('\n Enable Drag Force \n')

p2 = Profiler()
p2.start('total')

prop = Orekit(
    orekit_data=orekit_data,
    settings=dict(
        in_frame='ITRS',
        out_frame='GCRS',
        drag_force=True,
        radiation_pressure=False,
    ),