def calculate_counts_full(channel, loop, emission_model, flattened_emissivities):
"""
Calculate the AIA intensity using the wavelength response functions and a
full emission model.
"""
density = loop.density
electron_temperature = loop.electron_temperature
counts = np.zeros(electron_temperature.shape)
itemperature, idensity = emission_model.interpolate_to_mesh_indices(loop)
for ion, flat_emiss in zip(emission_model, flattened_emissivities):
if flat_emiss is None:
continue
ionization_fraction = emission_model.get_ionization_fraction(loop, ion)
tmp = np.reshape(map_coordinates(flat_emiss.value, np.vstack([itemperature, idensity])),
electron_temperature.shape)
tmp = u.Quantity(np.where(tmp < 0., 0., tmp), flat_emiss.unit)
counts_tmp = ion.abundance*0.83/(4*np.pi*u.steradian)*ionization_fraction*density*tmp
if not hasattr(counts, 'unit'):
counts = counts*counts_tmp.unit
counts += counts_tmp
return counts
评论列表
文章目录