COMPASS  5.0.0
End-to-end AO simulation tool using GPU acceleration
test_fp16.py
1 import numpy as np
2 import naga as ng
3 import os
4 from shesha.sutra_wrap import Rtc_FHF as Rtc
5 from shesha.supervisor.compassSupervisor import CompassSupervisor as Supervisor
6 from scipy.ndimage.measurements import center_of_mass
7 from tqdm import tqdm
8 
9 precision = 1e-2
10 sup = Supervisor(
11  os.getenv("COMPASS_ROOT") + "/shesha/data/par/par4bench/scao_sh_16x16_8pix.py")
12 sup.config.p_controllers[0].delay = 0
13 sup.init()
14 # sup.next()
15 sup.rtc.open_loop(0)
16 sup.rtc.close_loop(0)
17 sup2 = Supervisor(
18  os.getenv("COMPASS_ROOT") + "/shesha/data/par/par4bench/scao_sh_16x16_8pix.py")
19 sup2.config.p_controllers[0].delay = 0
20 sup2.init_config()
21 # sup2.single_next()
22 sup2.open_loop()
23 sup2.close_loop()
24 rtc = Rtc()
25 rtc.add_centroider(sup.context, sup.config.p_wfs0._nvalid,
26  sup.config.p_wfs0.npix / 2 - 0.5, sup.config.p_wfs0.pixsize, False, 0, "cog")
27 rtc.add_controller(sup.context, sup.config.p_wfs0._nvalid, sup.config.p_wfs0._nvalid * 2,
28  sup.config.p_controller0.nactu, sup.config.p_controller0.delay, 0,
29  "generic", idx_centro=np.zeros(1), ncentro=1)
30 centro = rtc.d_centro[0]
31 control = rtc.d_control[0]
32 rtc.d_centro[0].set_npix(sup.config.p_wfs0.npix)
33 xvalid = np.array(sup.rtc.rtc.d_centro[0].d_validx)
34 yvalid = np.array(sup.rtc.rtc.d_centro[0].d_validy)
35 rtc.d_centro[0].load_validpos(xvalid, yvalid, xvalid.size)
36 cmat = sup.rtc.get_command_matrix(0)
37 rtc.d_control[0].set_cmat(cmat)
38 rtc.d_control[0].set_gain(sup.config.p_controller0.gain)
39 # frame = sup.wfs.get_wfs_image(0)
40 # frame /= frame.max()
41 # rtc.d_centro[0].load_img(frame, frame.shape[0])
42 # rtc.d_centro[0].calibrate_img()
43 # rtc.do_centroids(0)
44 # rtc.do_control(0)
45 
46 SR32 = []
47 SR16 = []
48 
49 def goAhead():
50  sup.next()
51  sup2.single_next()
52  sup.dms.set_command(np.array(sup._sim.rtc.d_control[0].d_voltage))
53  sup._sim.raytraceTar(0, "all")
54  sup._sim.comp_tar_image(0,compLE=False)
55  sup._sim.compStrehl(0)
56  SR32.append(sup.get_strehl(0)[0])
57  frame = sup2.get_wfs_image(0)
58  frame /= frame.max()
59  rtc.d_centro[0].load_img(frame, frame.shape[0])
60  rtc.d_centro[0].calibrate_img()
61  rtc.do_centroids(0)
62  rtc.do_control(0)
63  rtc.comp_voltage(0)
64  sup2.dms.set_command(np.array(rtc.d_control[0].d_voltage))
65  sup2._sim.raytraceTar(0, "all")
66  sup2._sim.comp_tar_image(0,compLE=False)
67  sup2._sim.compStrehl(0)
68  SR16.append(sup2.get_strehl(0)[0])
69 
70 def loop(niter):
71  for _ in tqdm(range(niter)):
72  goAhead()
shesha.supervisor.compassSupervisor
Initialization and execution of a COMPASS supervisor.
Definition: compassSupervisor.py:1
test_fp16.loop
def loop(niter)
Definition: test_fp16.py:70
shesha.sutra_wrap
Definition: sutra_wrap.py:1
test_fp16.goAhead
def goAhead()
Definition: test_fp16.py:49