Defines an image model based on the semi-analytic shearing spot models employed in VRT2. More...

#include "model/model_image_orbiting_spot.h"

Inheritance diagram for model_image_orbiting_spot:
Collaboration diagram for model_image_orbiting_spot:

Public Member Functions

 model_image_orbiting_spot (double start_obs, double tobs, std::string sed_fit_parameter_file=Themis::utils::global_path("src/VRT2/DataFiles/2010_combined_fit_parameters.d"), double frequency=230e9, double M=VRT2::VRT2_Constants::M_SgrA_cm, double D=VRT2::VRT2_Constants::D_SgrA_cm)
 Constructor to make a shearing spot model. Takes the start time of the observation (UTC), time you are observing the spot at (UTC), the frequency (Hz), mass (cm), distance (cm).
 
virtual size_t size () const
 Returns the number of the parameters the model expects.
 
virtual std::string model_tag () const
 Return a string that contains a unique identifying tag for use with the ThemisPy plotting features.
 
void set_image_resolution (int Nray)
 
void set_screen_size (double Rmax)
 
void add_background_riaf ()
 
double frequency () const
 Returns the frequency at which this model is created.
 
double obs_time () const
 Returns the start of the observation time in J2000 at which this model was created.
 
virtual void set_mpi_communicator (MPI_Comm comm)
 Defines a set of processors provided to the model for parallel computation via an MPI communicator. Only facilates code parallelization if the model computation is parallelized via MPI.
 
- Public Member Functions inherited from model_image
virtual void generate_model (std::vector< double > parameters)
 A one-time generate function that permits model construction prior to calling the visibility_amplitude, closure_phase, etc. for each datum. Takes a vector of parameters.
 
virtual void generate_complex_visibilities ()
 A one-time generate function that will generate the complex visibilities and store them. This must be called after generate_model has been called.
 
virtual std::complex< double > visibility (datum_visibility &d, double accuracy)
 Returns complex visibility in Jy computed from the image given a datum_visibility_amplitude object, containing all of the accoutrements. While this provides access to the actual data value, the two could be separated if necessary. Also takes an accuracy parameter with the same units as the data, indicating the accuracy with which the model must generate a comparison value. Note that this can be redefined in child classes.
 
virtual double visibility_amplitude (datum_visibility_amplitude &d, double accuracy)
 Returns visibility ampitudes in Jy computed from the image given a datum_visibility_amplitude object, containing all of the accoutrements. While this provides access to the actual data value, the two could be separated if necessary. Also takes an accuracy parameter with the same units as the data, indicating the accuracy with which the model must generate a comparison value. Note that this can be redefined in child classes.
 
virtual double closure_phase (datum_closure_phase &d, double accuracy)
 Returns closure phase in degrees computed from the image given a datum_closure_phase object, containing all of the accoutrements. While this provides access to the actual data value, the two could be separated if necessary. Also takes an accuracy parameter with the same units as the data, indicating the accuracy with which the model must generate a comparison value. Note that this can be redefined in child classes.
 
virtual double closure_amplitude (datum_closure_amplitude &d, double accuracy)
 Returns closure amplitude computed from the image given a datum_closure_phase object, containing all of the accoutrements. While this provides access to the actual data value, the two could be separated if necessary. Also takes an accuracy parameter with the same units as the data, indicating the accuracy with which the model must generate a comparison value. Note that this can be redefined in child classes.
 
void output_image (std::string fname, bool rotate=false)
 
void get_image (std::vector< std::vector< double > > &alpha, std::vector< std::vector< double > > &beta, std::vector< std::vector< double > > &I) const
 Provides direct access to the constructed image. Sets a 2D grid of angles (alpha, beta) in radians and intensities in Jy per steradian.
 
void get_visibilities (std::vector< std::vector< double > > &u, std::vector< std::vector< double > > &v, std::vector< std::vector< std::complex< double > > > &V) const
 Provides direct access to the complex visibilities. Sets a 2D grid of baselines (u,v) in lambda, and visibilites in Jy.
 
void get_visibility_amplitudes (std::vector< std::vector< double > > &u, std::vector< std::vector< double > > &v, std::vector< std::vector< double > > &V) const
 Provides direct access to the visibility amplitudes. Sets a 2D grid of baselines (u,v) in lambda, and visibilites in Jy.
 
void use_spline_interp (bool use_spline)
 Provides ability to use bicubic spline interpolator (true) instead of regular bicubic. Code defaults to false.
 
void write_model_tag_file (std::string tagfilename="model_image.tag") const
 Write a unique identifying tag for use with the ThemisPy plotting features. This calls the overloaded version with the outstream, which is the only function that need be rewritten in child classes.
 
virtual void write_model_tag_file (std::ofstream &tagout) const
 Write a unique identifying tag for use with the ThemisPy plotting features. For most child classes, the default implementation is suffcient. However, should that not be the case, this is the only function that need be rewritten in child classes.
 

Protected Attributes

MPI_Comm _comm
 
- Protected Attributes inherited from model_image
MPI_Comm _comm
 
bool _generated_model
 True when a model is generated with generate_model.
 
bool _generated_visibilities
 True when model visibilities have been computed.
 
bool _use_spline
 True when want to use bicubic spline interpolator.
 
double _position_angle
 Position angle of the image, assumed to be the last element of the parameter list passed to generate_model. Assumed to be in radians and defined E of N.
 
std::vector< double > _current_parameters
 Last set of parameters passed to generate_image, useful to determine if it is necessary to recompute the model. Useful, e.g., if we are varying only position angle, or if recomputing for a number of different data sets at the same set of parameters.
 
std::vector< std::vector< double > > _alpha
 2D grid of horizonal pixel locations in radians, relative to the fiducial direction of the image (i.e., unrotated by the position angle).
 
std::vector< std::vector< double > > _beta
 2D grid of vertical pixel locations in radians, relative to the fiducial direction of the image (i.e., unrotated by the position angle).
 
std::vector< std::vector< double > > _I
 2D grid of intensities at pixel locations in Jy/str.
 
- Protected Attributes inherited from model_visibility
MPI_Comm _comm
 
- Protected Attributes inherited from model_visibility_amplitude
MPI_Comm _comm
 
- Protected Attributes inherited from model_closure_phase
MPI_Comm _comm
 
- Protected Attributes inherited from model_closure_amplitude
MPI_Comm _comm
 

Private Member Functions

virtual void generate_image (std::vector< double > parameters, std::vector< std::vector< double > > &I, std::vector< std::vector< double > > &alpha, std::vector< std::vector< double > > &beta)
 Generates and returns rectalinear grid of intensities associated with the shearing spot image model in Jy/pixel located at pixels centered on angular positions alpha and beta, both specified in radians and aligned with a fiducial direction. Note that the parameter vector has had the position removed.
 
void open_error_streams ()
 Opens model-communicator-specific error streams for debugging output.
 

Private Attributes

const double _start_obs
 Start time of the simulation in J2000.
 
const double _tobs
 Observation time of spot in J2000 in seconds.
 
VRT2::SgrA_PolintDiskModelParameters2010 _sdmp
 Interpolation object to return.
 
const double _frequency
 Internal frequency in Hz for the current model.
 
const double _M
 Internal mass in cm.
 
const double _D
 Internal distance in cm for the current model.
 
int _Nray
 Image resolution.
 
double _Rmax
 Default image sizes in M (note, not applied to flux estimates)
 
bool _bkgd_riaf
 Specifies whether to include riaf model in radiative transfer scheme.
 
std::ofstream _merr
 Model-specific error stream.
 

Detailed Description

Provides explicit implementation of the model_image object for the semi-analytic shearing spot models. There are additional tuning parameters that may impact accuracy, e.g., distance to the image screen, number of rays to produce, etc. See the appropriate parts of model_image_orbiting_spot.cpp for more. Parameter list:

  • parameters[0] ... Black hole spin parameter (-1 to 1).
  • parameters[1] ... Cosine of the inclincation relative to the line of sight.
  • parameters[2] ... Spot electron density normalization \( n_0 \).
  • parameters[3] ... Standard deviation of the Gaussian in M of initial shearing spot \( R_s \).
  • parameters[4] ... Initial time of spot in observers time relative to start of observation time, in units of (M).
  • parameters[5] ... Initial radius of spot in M.
  • parameters[6] ... Initial azimuthal angle of spot around accretion disk.
  • parameters[7] ... Infalling rate parameter \(\alpha_r\) of accretion flow \(u^r = u_K^r + \alpha_r(u_{ff}^r - u_K^r)\).
  • parameters[8] ... Subkeplerian factor \(\kappa\) of accretion flow \(\Omega = u^{\phi}/u^t = \Omega_{ff} + \kappa(\Omega_K - \Omega_{ff})\).
    • parameters[9] ... Position angle (radians).
Warning
Model requires VRT2 to be installed and it explicitly time dependent. Model assumes one time is passed.

Member Function Documentation

void add_background_riaf ( )

Adds background sed fitted riaf to model as specified by sed_fit_parameters_file that was given in the constructor.

void set_image_resolution ( int  Nray)

Sets model_image_orbiting_spot to generate production images with resolution Nray x Nray. The default is 128x128, which is probably larger than required in practice.

void set_screen_size ( double  Rmax)

Sets the screen size of the image in units M so that image has size Rmax x Rmax. The default is 15 which is probably larger than needed.


The documentation for this class was generated from the following files: