Commit ac74dde185bdd46239fcb39eb4a60883deb2d4f0
1 parent
53761528
Exists in
master
addition of the ionization potential associated with the anion
Showing
1 changed file
with
13 additions
and
11 deletions
Show diff stats
four_levels_model.py
... | ... | @@ -9,8 +9,7 @@ import radiation_fields as rf |
9 | 9 | |
10 | 10 | ''' |
11 | 11 | |
12 | -This programme seeks to calculate how a neutral gas subjected to a radiation field | |
13 | -is heated, involving pahs in the ionization of the gas | |
12 | +This programme computes the photoelectric heating rate and efficiency by PAHs | |
14 | 13 | |
15 | 14 | This program works with the script "radiation_fields.py" |
16 | 15 | which calculates the scale factor of the radiation field G0 |
... | ... | @@ -61,7 +60,7 @@ class HeatingGas: |
61 | 60 | |
62 | 61 | ---------- |
63 | 62 | |
64 | - Returns total_gas_heating, heating efficiency, g_0 , gamma , t_gas, n_e , n_c | |
63 | + Returns total_gas_heating, heating_efficiency, g_0 , gamma , t_gas, n_e , n_c | |
65 | 64 | |
66 | 65 | total_gas_heating : float, |
67 | 66 | gas heating rate in erg s-1 H-1 |
... | ... | @@ -131,6 +130,7 @@ class HeatingGas: |
131 | 130 | self.pah_cross_n = None |
132 | 131 | self.pah_cross_c = None |
133 | 132 | self.pah_cross_dc = None |
133 | + self.ip_negative_charged = None | |
134 | 134 | self.ip_neutral = None |
135 | 135 | self.ip_charged = None |
136 | 136 | self.detachment_yield = None |
... | ... | @@ -156,6 +156,8 @@ class HeatingGas: |
156 | 156 | #IP to ionize the molecule : neutral to charged, in ev |
157 | 157 | self.ip_charged = 3.9 + one_in_4_pi_eps_0 * ( ( z_1 + (1/2) ) * (ev**2/a) + ( z_1 + 2 ) * (ev**2/a) *(0.03/a) ) * (1/ev) |
158 | 158 | #IP to ionize the charged molecule : charged 1 to charged 2, in ev |
159 | + self.ip_negative_charged = 6 | |
160 | + #IP to detache the electron from a PAH anion, in ev | |
159 | 161 | |
160 | 162 | '''==========================|building of the cross section|=======================''' |
161 | 163 | ''' derives a mean photoabsorption cross section of the molecule considered, in 3 size ranges''' |
... | ... | @@ -239,7 +241,7 @@ class HeatingGas: |
239 | 241 | self.pah_cross_dc = self.pah_cross_dc[self.energy_range] |
240 | 242 | |
241 | 243 | ''' yield from anion to neutral ''' |
242 | - part = np.where(self.energy_negative_charged <=13.6)[0] | |
244 | + part = np.where(self.energy_negative_charged<=13.6)[0] | |
243 | 245 | |
244 | 246 | self.detachment_yield = np.full(len(part), 1) |
245 | 247 | #the anion being unstable, any energy is enough to detach the electron |
... | ... | @@ -288,10 +290,10 @@ class HeatingGas: |
288 | 290 | |
289 | 291 | '''===================== dust and gas heating calculation ===================''' |
290 | 292 | energy_range_power_absorbed = np.where(self.energy<=13.6)[0] |
291 | - energy_range_anion = np.where(self.energy<=13.6)[0] | |
293 | + energy_range_anion = np.where(np.logical_and(self.energy >= self.ip_negative_charged, self.energy <= 13.6))[0] | |
292 | 294 | energy_range_neutral = np.where(np.logical_and(self.energy >= self.ip_neutral, self.energy <= 13.6))[0] |
293 | 295 | energy_range_charged = np.where(np.logical_and(self.energy >= self.ip_charged, self.energy <= 13.6))[0] |
294 | - | |
296 | + | |
295 | 297 | ''' photoabsorption of the neutrals, cations and dications molecules ''' |
296 | 298 | photo_absorption_a = self.energy_intensity*pah_crossa*2*np.pi #erg s-1 eV-1 /!\ the 2*np.pi is the solid angle considered => the RF comes from the star only |
297 | 299 | photo_absorption_n = self.energy_intensity*pah_crossn*2*np.pi #erg s-1 eV-1 |
... | ... | @@ -310,7 +312,7 @@ class HeatingGas: |
310 | 312 | #number of ionizations per s per eV for a charge state |
311 | 313 | |
312 | 314 | ''' detachment rate ''' |
313 | - kdet = np.trapz(number_ionization_absorption_a[energy_range_anion], self.energy[energy_range_anion]) | |
315 | + kdet = np.trapz(number_ionization_absorption_a[energy_range_anion], (self.energy-self.ip_negative_charged)[energy_range_anion]) | |
314 | 316 | #in s-1 |
315 | 317 | |
316 | 318 | ''' photoemission rate ''' |
... | ... | @@ -323,7 +325,7 @@ class HeatingGas: |
323 | 325 | #in s-1 |
324 | 326 | |
325 | 327 | ''' recombination rate ''' |
326 | - phi = ( 1.85*1e5 )/( self.t_gas*np.sqrt(self.n_c) ) #dimensionless | |
328 | + phi = ( 1.85 * 1e5 )/( self.t_gas*np.sqrt(self.n_c) ) #dimensionless | |
327 | 329 | krec_neutral = self.n_e * 1.28e-10 * self.n_c * np.sqrt(self.t_gas) * ( 1 + phi ) |
328 | 330 | krec_charged = self.n_e * 1.28e-10 * self.n_c * np.sqrt(self.t_gas) * ( 1 + phi * (1 + z_1) ) |
329 | 331 | #in s-1 |
... | ... | @@ -343,7 +345,7 @@ class HeatingGas: |
343 | 345 | |
344 | 346 | ''' spectrum of the gas heating per charge state ''' |
345 | 347 | |
346 | - anion_heating_rate_spectrum = 1 * (self.energy-0) *\ | |
348 | + anion_heating_rate_spectrum = 1 * (self.energy-self.ip_negative_charged) *\ | |
347 | 349 | number_ionization_absorption_a * ev_to_erg #erg s-1 eV-1 |
348 | 350 | neutral_heating_rate_spectrum = partition_coeff * (self.energy-self.ip_neutral) *\ |
349 | 351 | number_ionization_absorption_n * ev_to_erg #erg s-1 eV-1 |
... | ... | @@ -353,7 +355,7 @@ class HeatingGas: |
353 | 355 | |
354 | 356 | ''' gas heating rate per charge state ''' |
355 | 357 | anion_gas_heating_rate = np.trapz(anion_heating_rate_spectrum[energy_range_anion],\ |
356 | - self.energy[energy_range_anion] ) #erg s-1 molecule-1 | |
358 | + (self.energy-self.ip_negative_charged)[energy_range_anion] ) #erg s-1 molecule-1 | |
357 | 359 | neutral_gas_heating_rate = np.trapz(neutral_heating_rate_spectrum[energy_range_neutral],\ |
358 | 360 | (self.energy-self.ip_neutral)[energy_range_neutral] ) #erg s-1 molecule-1 |
359 | 361 | charged_gas_heating_rate = np.trapz(charged_heating_rate_spectrum[energy_range_charged],\ |
... | ... | @@ -394,5 +396,5 @@ class HeatingGas: |
394 | 396 | self.total_gas_heating = total_injected_power * (self.fc_pah/self.n_c) * 2.7e-4 |
395 | 397 | #2.7e-4 : elemental abundance of C relative to H (Tielens 2021) |
396 | 398 | #total gas heating in erg s-1 H-1 |
397 | - | |
399 | + | |
398 | 400 | return self.total_gas_heating, self.heating_efficiency, self.g_0 , self.gamma, self.t_gas, self.n_e, self.n_c |
399 | 401 | \ No newline at end of file | ... | ... |