#include <refractive_atmosphere.h>
Inheritance diagram for Arroyo::refractive_atmospheric_model:

Public Member Functions | |
| refractive_atmospheric_model () | |
| refractive_atmospheric_model (const refractive_atmospheric_model &ref_atm_model) | |
| refractive_atmospheric_model (const char *filename) | |
| refractive_atmospheric_model (const iofits &iof) | |
| refractive_atmospheric_model (const vector< power_spectrum * > &power_spectra, const vector< double > &layer_heights, const three_frame &ground_ref_frame) | |
| ~refractive_atmospheric_model () | |
| refractive_atmospheric_model & | operator= (const refractive_atmospheric_model &ref_atm_model) |
| virtual refractive_atmospheric_model * | clone () const |
| void | read (const char *filename) |
| void | read (const iofits &iof) |
| void | write (const char *filename) const |
| void | write (iofits &iof) const |
| void | print (ostream &os, const char *prefix="") const |
| long | get_number_of_layers () const |
| vector< double > | get_layer_heights () const |
| vector< power_spectrum * > | get_power_spectra () const |
| three_frame | get_three_frame () const |
| double | turbulence_moment (double moment, double zenith_angle_degrees=0) const |
| double | velocity_moment (const vector< three_vector > &layer_wind_velocities_meters_per_sec, double moment, double azimuth_angle_degrees=0, double zenith_angle_degrees=0) const |
| double | fried_parameter (double wavelength_meters, double zenith_angle_degrees=0, double guide_star_height_meters=-1) const |
| double | seeing (double wavelength_meters, double zenith_angle_degrees=0) const |
| double | isoplanatic_angle (double wavelength_meters, double zenith_angle_degrees=0) const |
| double | isokinetic_angle (double wavelength_meters, double aperture_diameter_meters, double zenith_angle_degrees=0) const |
| double | greenwood_frequency (vector< three_vector > &layer_wind_velocities_meters_per_sec, double wavelength_meters, double azimuth_angle_degrees=0, double zenith_angle_degrees=0) const |
| double | d_0 (double guide_star_height_meters, double wavelength_meters, double zenith_angle_degrees=0) const |
| double | Tyler_F_1 (double x) const |
| double | Tyler_H (double &rho, double &omega, vector< double > &numerator_args, vector< double > &denominator_args) const |
| double | Tyler_K_1 (double rho, double q) const |
| double | Tyler_F_2 (double q, double omega, int nsamples_in_integration) const |
| double | Tyler_G_hat (double rho) const |
| double | Tyler_G_1 (three_vector r1, three_vector r2) const |
| double | Tyler_G_2 (three_vector r, double q, three_vector omega, int nsamples_in_integration) const |
| double | Tyler_G_3 (double q, double omega, int nsamples_in_integration) const |
| double | Tyler_G_4 (three_vector r1, three_vector r2, double q, three_vector omega, int nsamples_in_integration) const |
| void | Tyler_get_constants (const emitter &emtr_a, const emitter &emtr_b, const three_frame &tf, double aperture_diameter_meters, double &secant_zenith_angle, double &max_range_meters, double &min_range_meters, three_vector &little_omega) const |
| vector< double > | get_cn2_coefficients () const |
| double | caliph_A (const emitter &emtr_a, const emitter &emtr_b, double aperture_diameter_meters, const three_vector &rho) const |
| template<class T> | |
| pixel_array< T > | caliph_A (const emitter &emtr_a, const emitter &emtr_b, double aperture_diameter_meters, double pixel_scale_meters) const |
| double | caliph_B (const emitter &emtr_a, const emitter &emtr_b, double aperture_diameter_meters, const three_vector &rho) const |
| template<class T> | |
| pixel_array< T > | caliph_B (const emitter &emtr_a, const emitter &emtr_b, double aperture_diameter_meters, double pixel_scale_meters) const |
| double | caliph_C (const emitter &emtr_a, const emitter &emtr_b, double aperture_diameter_meters, const three_vector &rho_1, const three_vector &rho_2) const |
| template<class T> | |
| pixel_array< T > | caliph_C (const emitter &emtr_a, const emitter &emtr_b, double aperture_diameter_meters, double pixel_scale_meters) const |
| double | caliph_D (const emitter &emtr_a, const emitter &emtr_b, double aperture_diameter_meters, int nsteps_in_integration) const |
| double | caliph_E (const emitter &emtr_a, const emitter &emtr_b, double aperture_diameter_meters, int nsteps_in_integration) const |
| double | caliph_F (const emitter &emtr_a, const emitter &emtr_b, double aperture_diameter_meters, int nsteps_in_integration) const |
| double | caliph_F_bar (const emitter &emtr_a, const emitter &emtr_b, double aperture_diameter_meters, int nsteps_in_integration) const |
| double | caliph_G (const emitter &emtr_a, const emitter &emtr_b, double aperture_diameter_meters, const three_vector &rho) const |
| template<class T> | |
| pixel_array< T > | caliph_G (const emitter &emtr_a, const emitter &emtr_b, double aperture_diameter_meters, double pixel_scale_meters) const |
| double | caliph_H (const emitter &emtr_a, const emitter &emtr_b, double aperture_diameter_meters, const three_vector &rho) const |
| template<class T> | |
| pixel_array< T > | caliph_H (const emitter &emtr_a, const emitter &emtr_b, double aperture_diameter_meters, double pixel_scale_meters) const |
| double | caliph_I (const emitter &emtr_a, const emitter &emtr_b, double aperture_diameter_meters, const three_vector &rho) const |
| template<class T> | |
| pixel_array< T > | caliph_I (const emitter &emtr_a, const emitter &emtr_b, double aperture_diameter_meters, double pixel_scale_meters) const |
| double | caliph_J (const emitter &emtr_a, const emitter &emtr_b, double aperture_diameter_meters, const three_vector &rho) const |
| template<class T> | |
| pixel_array< T > | caliph_J (const emitter &emtr_a, const emitter &emtr_b, double aperture_diameter_meters, double pixel_scale_meters) const |
| double | caliph_K (const emitter &emtr_a, const emitter &emtr_b, double aperture_diameter_meters, int nsteps_in_integration) const |
| double | caliph_L (const emitter &emtr_a, const emitter &emtr_b, double aperture_diameter_meters, int nsteps_in_integration) const |
| double | caliph_M (const emitter &emtr_a, const emitter &emtr_b, double aperture_diameter_meters) const |
| double | aperture_averaged_phase_covariance (const emitter &emtr_a, const emitter &emtr_b, const aperture &ap, double wavelength_meters, int nsteps_in_integration=1000) const |
| double | aperture_averaged_tilt_phase_covariance (const emitter &emtr_a, const emitter &emtr_b, const aperture &ap, double wavelength_meters, int nsteps_in_integration=1000) const |
| double | aperture_averaged_parallel_tilt_phase_covariance (const emitter &emtr_a, const emitter &emtr_b, const aperture &ap, double wavelength_meters, int nsteps_in_integration=1000) const |
| double | aperture_averaged_perpendicular_tilt_phase_covariance (const emitter &emtr_a, const emitter &emtr_b, const aperture &ap, double wavelength_meters, int nsteps_in_integration=1000) const |
| double | phase_covariance (const emitter &emtr_a, const three_point &pupil_location_one, const emitter &emtr_b, const three_point &pupil_location_two, const aperture &ap, double wavelength_meters, int nsteps_in_integration=1000) const |
| double | tilt_phase_covariance (const emitter &emtr_a, const three_point &pupil_location_one, const emitter &emtr_b, const three_point &pupil_location_two, const aperture &ap, double wavelength_meters, int nsteps_in_integration=1000) const |
| template<class T> | |
| diffractive_wavefront_header< T > | get_diffractive_wavefront_header (double wavelength, double pixscale, const emitter *emtr, const aperture *ap, bool layer_foreshortening, propagation_plan *pplan) const |
| template<class T, class U> | |
| void | get_refractive_atmospheric_layers (const vector< double > &layer_pixscales, const subharmonic_method &subm, const vector< diffractive_wavefront_header< T > > dwfhdrs, const vector< three_vector > layer_wind_vectors, double time_interval, bool layer_axes_wind_vector_aligned, bool layer_foreshortening, vector< refractive_atmospheric_layer< U > > &ref_atm_layers) const |
Static Public Attributes | |
| int | verbose_level |
Protected Member Functions | |
| void | read_common_data (const iofits &iof) |
| void | write_common_data (iofits &iof) const |
Protected Attributes | |
| vector< power_spectrum * > | power_spectra_ |
| The array of power spectra - one for each layer. | |
| vector< double > | layer_heights_ |
| The layer heights in meters. | |
| three_frame | ground_ref_frame_ |
| The reference frame for the ground. | |
|
|
Null constructor |
|
|
Copy constructor |
|
|
Construct from a file |
|
|
Construct from an iofits object |
|
||||||||||||||||
|
Construct from the bits Layer heights are measured in meters. The ground reference frame serves to define the zero points for the heights, which are measured along the positive z axis of this frame |
|
|
Destructor |
|
||||||||||||||||||||||||
|
Get the perpendicular component of the tilt covariance between two beams, averaged over a circular aperture. The value returned is in radians squared This function throws an error unless all layers in the model have a Komolgorov turbulence power spectrum. |
|
||||||||||||||||||||||||
|
Get the perpendicular component of the tilt covariance between two beams, averaged over a circular aperture. The value returned is in radians squared This function throws an error unless all layers in the model have a Komolgorov turbulence power spectrum. |
|
||||||||||||||||||||||||
|
Get the piston removed phase covariance between two beams, averaged over a circular aperture. This quantity is computed from Tyler, JOSA 11 p 339 1994 The value returned is in radians squared This function throws an error unless all layers in the model have a Komolgorov turbulence power spectrum. |
|
||||||||||||||||||||||||
|
Get the tilt covariance between two beams, averaged over a circular aperture. This quantity is computed from Tyler, JOSA 11 p 339 1994 The value returned is in radians squared This function throws an error unless all layers in the model have a Komolgorov turbulence power spectrum. |
|
||||||||||||||||||||||||
|
A_{ab} term in phase covariance |
|
||||||||||||||||||||
|
A_{ab} term in phase covariance The vector rho must have amplitude less than unity |
|
||||||||||||||||||||||||
|
B_{ab} term in phase covariance |
|
||||||||||||||||||||
|
B_{ab} term in phase covariance The vector rho must have amplitude less than unity |
|
||||||||||||||||||||||||
|
C_{ab} term in phase covariance |
|
||||||||||||||||||||||||
|
C_{ab} term in phase covariance The vectors rho_1 and rho_2 must have amplitudes less than unity |
|
||||||||||||||||||||
|
D_{ab} term in phase covariance |
|
||||||||||||||||||||
|
E_{ab} term in phase covariance |
|
||||||||||||||||||||
|
F_{ab} term in phase covariance |
|
||||||||||||||||||||
|
{F}_{ab} term in phase covariance |
|
||||||||||||||||||||||||
|
G_{ab} term in phase covariance |
|
||||||||||||||||||||
|
G_{ab} term in phase covariance The vector rho must have amplitude less than unity |
|
||||||||||||||||||||||||
|
H_{ab} term in phase covariance |
|
||||||||||||||||||||
|
H_{ab} term in phase covariance The vector rho must have amplitude less than unity |
|
||||||||||||||||||||||||
|
I_{ab} term in phase covariance |
|
||||||||||||||||||||
|
I_{ab} term in phase covariance The vector rho must have amplitude less than unity |
|
||||||||||||||||||||||||
|
J_{ab} term in phase covariance |
|
||||||||||||||||||||
|
J_{ab} term in phase covariance The vector rho must have amplitude less than unity |
|
||||||||||||||||||||
|
K_{ab} term in phase covariance |
|
||||||||||||||||||||
|
L_{ab} term in phase covariance |
|
||||||||||||||||
|
M_{ab} term in phase covariance |
|
|
Virtual clone method Calling routine is responsible for deleting memory Reimplemented in Arroyo::Ellerbroek_Cerro_Pachon_model, Arroyo::Ellerbroek_Mauna_Kea_model, Arroyo::Gemini_GLAO_study_model, Arroyo::NGAO_system_design_model, and Arroyo::Palomar_DIMM_MASS_model. |
|
||||||||||||||||
|
Get the value of d_0 (See Hardy eq 7.36) The value returned is in meters This function throws an error unless all layers in the model have a Komolgorov turbulence power spectrum. |
|
||||||||||||||||
|
Get the Fried parameter The value returned is in meters This function throws an error unless all layers in the model have a Komolgorov turbulence power spectrum. |
|
|
Get the vector of cn2 coefficients These are in units of meters^{1/3} |
|
||||||||||||||||||||||||||||||||
|
Get a diffractive wavefront header suitable for this atmospheric model. The three frame of the wavefront header has an origin at the topmost layer of the model, with z axis directed towards the center of the aperture. The wavefront is sized according to the covering region of the aperture and the padding required by the propagation plan. This padding itself depends on the electromagnetic wavelength and the distance from the uppermost layer to the aperture. Finally, the transverse axes are chosen according to whether layer foreshortening has been selected Wavelength and pixel scale must be specified in meters |
|
|
Get the number of layers in the model |
|
|
Get the number of layers in the model |
|
|
Get the power spectra in the model Memory is dynamically allocated, and must be freed. |
|
||||||||||||||||||||||||||||||||||||||||
|
Get a randomly generated set of refractive atmospheric layers This function selects random velocities for the layers according to the wind model contained in this refractive atmospheric model. This function determines the size of the layers so that throughout the specified time_interval and for each layer, every wavefront (as defined by their headers in dwfhs) - after being propagated along its own z axis to the height of the layer - will be contained by the layer. The flag layer_axes_wind_vector_aligned determines whether one of the layer axes will be aligned with the wind vector of the layer. This choice will save RAM, but requires much more computation. The flag layer_foreshortening determines whether foreshortening of the layers will be used. This is another computationally expensive choice. Layer pixel scales should be specified in meters |
|
|
Get the three frame. |
|
||||||||||||||||||||
|
Get the Greenwood frequency The wind velocities should be in meters/sec, and ordered in the same way as the layer heights The value returned is in Hertz This function throws an error unless all layers in the model have a Komolgorov turbulence power spectrum. |
|
||||||||||||||||
|
Get the isokinetic angle The value returned is in radians This function throws an error unless all layers in the model have a Komolgorov turbulence power spectrum. |
|
||||||||||||
|
Get the isoplanatic angle The value returned is in radians This function throws an error unless all layers in the model have a Komolgorov turbulence power spectrum. |
|
|
Operator = |
|
||||||||||||||||||||||||||||||||
|
Get the piston removed phase covariance between two beams The three_points pupil_location_one and pupil_location_two must lie within the aperture diameter, whose origin is assumed to that of the three frame in the refractive atmospheric model This quantity is computed from Tyler, JOSA 11 p 409 1994 The value returned is in radians squared This function throws an error unless all layers in the model have a Komolgorov turbulence power spectrum. |
|
||||||||||||
|
|
|
|
Read the data members from file. This member function may be called directly from the read member function of a derived class, after the unique type key has been checked. |
|
||||||||||||
|
Get the seeing The value returned is in radians This function throws an error unless all layers in the model have a Komolgorov turbulence power spectrum. |
|
||||||||||||||||||||||||||||||||
|
Get the tilt covariance between two beams. This quantity is computed from Tyler, JOSA 11 p 409 1994 The three_points pupil_location_one and pupil_location_two must lie within the aperture diameter, whose origin is assumed to that of the three frame in the refractive atmospheric model The value returned is in radians squared This function throws an error unless all layers in the model have a Komolgorov turbulence power spectrum. |
|
||||||||||||
|
Get a turbulence moment The value returned has units of meters^{1/3 + moment} This function throws an error unless all layers in the model have a Komolgorov turbulence power spectrum. |
|
|
Tyler F_1 |
|
||||||||||||||||
|
Tyler |
|
||||||||||||
|
Tyler |
|
||||||||||||||||||||
|
Tyler |
|
||||||||||||||||
|
Tyler |
|
||||||||||||||||||||||||
|
Tyler |
|
|
Tyler |
|
||||||||||||||||||||||||||||||||||||
|
Tyler |
|
||||||||||||||||||||
|
Tyler |
|
||||||||||||
|
Tyler |
|
||||||||||||||||||||
|
Get a velocity moment The wind velocities should be in meters/sec, and are assumed to be ordered in the same way as the heights and power spectra The value returned has units of meters^{1/3 + moment} sec^{-moment} This function throws an error unless all layers in the model have a Komolgorov turbulence power spectrum. |
|
|
|
|
Write the data members to file. This member function may be called directly from the write member function of a derived class, after the unique type key has been written. |
|
|
The reference frame for the ground.
|
|
|
The layer heights in meters.
|
|
|
The array of power spectra - one for each layer.
|
|
|
|
1.3.9.1