![]() |
MAOS
Multithreaded Adaptive Optics Simulator
|
Setup tomography parameters. More...
Macros | |
#define | TIMING 0 |
#define | TIC_tm |
#define | tic_tm |
#define | toc_tm(A) |
Functions | |
void | setup_recon_tomo_reg (recon_t *recon, const parms_t *parms) |
void | setup_recon_tomo_matrix (recon_t *recon, const parms_t *parms) |
void | setup_recon_tomo (recon_t *recon, const parms_t *parms, const powfs_t *powfs) |
void | Tomo_nea_gpt (Tomo_T *data, int nthread, int gpt) |
void | TomoR (dcell **xout, const void *A, const dcell *gin, const real alpha) |
void | TomoRt (dcell **gout, const void *A, const dcell *xin, const real alpha) |
void | TomoL (dcell **xout, const void *A, const dcell *xin, const real alpha) |
Setup tomography parameters.
Regularization terms for tomography. Can be called multiple times for Cn2 update.
assemble tomography matrix. In CG mode, this function is not executed if tomo.assemble=0, Instead, the algorithm is contained in recon.c. When you modify anything, make sure you also do it there.
For integrated tomograhy:
\(\hat{x}=(G_{lgs}^{T}C_{lgs}^{-1}G_{lgs}+C_{x}^{-1}+G_{ngs}^{T}C_{ngs}^{-1} G_{ngs})^{-1}(G_{lgs}^{T}C_{lgs}^{-1}s_{lgs}+G_{ngs}^{T}C_{ngs}^{-1}s_{ngs}){\equiv}RL^{-1}RR s.\)
For split tomography, the terms regarding NGS are dropped:
\(\hat{x}_{lgs}=(G_{lgs}^{T}C_{lgs}^{-1}G_{lgs}+C_{x}^{-1})^{-1} G_{lgs}^{T}C_{lgs}^{-1}s_{lgs}\equiv R_L^{-1} R_R s.\)
The left hand side of linear equation (inside the inverse) is stored in RL. The right hand side of the linear equation (outside of the inverse) is stored in RR. The terms regarding the NGS are handled using low rank terms. The gradients from LGS and NGS and concatenated to \(s\).
In the LGS part, there is a global tip/tilt removal operator because LGS is insensitive to global tip/tilts.
For details see www.opticsinfobase.org/abstract.cfm?URI=josaa-19-9-1803
Sets up the tomogrpahy turbulence reconstruction structs including wavefront reconstructor and DM fitting operator
Calls setup_recon_tomo_matrix() and setup_recon_fit_matrix() to setup the tomography and DM fitting matrix.
AHST is handled in setup_ngsmod().
MVST is handled in setup_recon_mvst().
MOAO is handled in setup_recon_moao().
void Tomo_nea_gpt | ( | Tomo_T * | data, |
int | nthread, | ||
int | gpt | ||
) |
Apply NEA weighting with optional Gp' gg = GP' * NEAI * gg;
Apply tomography right hand operator without using assembled matrix. Fast and saves memory. The operation is the same as the Tomo_nea_gpt and Tomo_iprop in TomoL, so merge the implemenations.
xout=HXW'GP'*NEAI(1-TTF*PTTF)*gin.
Transpose operation of TomoRt. From xout -> gin
Apply tomography left hand side operator without using assembled matrix. Fast and saves memory. Only useful in CG. Accumulates to xout;
Some timing information: Generated in T410s with Intel Core i5 520 M @ 2.4 GHz (1 T is 1 thread, 2 T is 2 thread) and Poweredge with dual Xeon X5355 2.66Ghz (1 P is 1 thread, 8 P is 8 thread) Time 1 T 2 T 1 P 8 P HXW: 7.8 5.4 7.7 5.0 GP: 4.3 2.6 3.6 1.4 remove_mode: 0.3 0.3 0.4 0.6 neai: 0.5 0.3 0.5 0.4 GP': 3.2 2.1 3.4 1.0 HXW': 5.5 4.7 7.4 4.9 cxx: 3.2 2.5 3.5 2.7