create_simple_vdem#
- muse.synthesis.utils.create_simple_vdem(
- temperature,
- velocity,
- ne_nh,
- cell_length,
- x,
- y,
- velocity_axis,
- log_temperature_axis,
- n_x_chunks=1,
Calculates DEM as a function of temperature and velocity, x (0) and y (1) axes are horizontal z (2) vertical. Right hand rule. velocity is LOS velocity and positive is towards the observer [km/s].
- Parameters:
temperature (
ArrayLike) – 3D array of gas temperature in K.velocity (
ArrayLike) – 3D array of line-of-sight velocity in km/s (positive towards the observer).ne_nh (
ArrayLike) – 3D array ofn_e * n_Hin 1/cm^6.cell_length (
ArrayLike) – 1D array of cell length along the line-of-sight (z) axis in cm (may be non-uniform).x (
ArrayLike) – 1D array of the x-axis coordinate in cm.y (
ArrayLike) – 1D array of the y-axis coordinate in cm.velocity_axis (
ArrayLike) – 1D velocity bin centers in km/s.log_temperature_axis (
ArrayLike) – 1D temperature bin centers in log10(K).n_x_chunks (
int) – Split the x axis into this many contiguous blocks and process them one at a time, by default 1. The line-of-sight integration is independent per (x, y) column, so this is exact (identical result ton_x_chunks=1), just trading a few extra cheap passes for a smaller peak memory footprint. Clamped down tolen(x)if larger.
- Returns:
VDEM with dimensions of the 2D spatial axes from the simulation plus temperature and velocity bins.
- Return type:
- Raises:
ValueError – If
temperatureis not 3D, ifvelocity/ne_nhdo not match its shape, ifcell_length/x/ylengths do not match the corresponding axes.
Notes
Remove any convection zone from the box first.
Integration is along the z axis.
The intensity of a spectral line can be defined as \(I = \int n_e^2\, G(T) dl\), where \(n_e\) is the electron density, \(G(T)\) is the contribution function, and the emission measure is \(EM = \int n_e^2\, dl\). This can be defined also as \(I = \int DEM\, G(T) dT\), where DEM is the differential emission measure typically defined as \(DEM(T) = n_e^2\, dl / dT\). However, one could break the EM into finite voxels as a function of other variables. This is relevant when the response function depends on various variables. For MUSE or any spectrograph, one could build a response function which depends on the velocity (Doppler shift), hence it will need a VDEM which is defined as follows:
\[VDEM = \sum_l n_e(T, v_{los})^2 \Delta l / (\Delta T\, \Delta v_{los})\]So, with a response function that includes the Doppler shift information (\(G(T,v_{los})_\lambda\)), the convolution of the VDEM with this response function will be
\[I(\lambda) = \sum_T \sum_{vlos} VDEM\, G(T,v_{los})_\lambda \Delta T\, \Delta v_{los}\]and the total intensity:
\[I = \sum_\lambda I(\lambda) d\lambda = \sum_\lambda \sum_T \sum_{vlos} VDEM\, G(T,v_{los})_\lambda \Delta T\, \Delta v_{los}\, \Delta\lambda = \sum_T DEM\, G(T) \Delta T\]In principle, we could even create VDEM as a function of density
\[VDEM = \sum_l n_e(T, v_{los})^2 / \Delta l / (\Delta T\, \Delta v_{los}\, \Delta n_e)\]or abundances.
Working with VDEMs allows us to create a single one and synthesize any optically thin spectral line.