275 """Compute all derived physics quantities."""
281 T = float(re.get(
'T', 600.0))
282 G = float(re.get(
'G', 1.0e-6))
286 a_nm = float(e.get(
'a', 0.2867))
288 Omega = float(e.get(
'Omega', 1.18e-29))
289 r0 = (3.0 * Omega / (4.0 * np.pi)) ** (1.0 / 3.0)
290 b_111 = float(e.get(
'b_111', 0.2482)) * 1.0e-9
293 E_f_v = float(e.get(
'E_f_v', 2.0))
294 E_m_v = float(e.get(
'E_m_v', 0.67))
295 E_m_i = float(e.get(
'E_m_i', 0.34))
296 E_m_h = float(e.get(
'E_m_h', 0.06))
297 E_s_He = float(e.get(
'E_s_He', 2.35))
298 gamma_s = float(e.get(
'gamma_s', 2.0))
301 nu_v = float(e.get(
'nu_v', 1.0e13))
302 nu_i = float(e.get(
'nu_i', 1.0e13))
303 nu_h = float(e.get(
'nu_h', 3.0e12))
306 Dv_Fe = a_m**2 * nu_v * np.exp(-E_m_v / kBT)
307 Di_Fe = a_m**2 * nu_i * np.exp(-E_m_i / kBT)
308 Dh_Fe = a_m**2 * nu_h * np.exp(-E_m_h / kBT)
311 omega_v_Fe = Dv_Fe / a_m**2
312 omega_i_Fe = Di_Fe / a_m**2
313 omega_h_Fe = Dh_Fe / a_m**2
316 c_Cr = float(d.get(
'c_Cr', 0.094))
317 c_W = float(d.get(
'c_W', 0.0033))
318 c_Mn = float(d.get(
'c_Mn', 0.0047))
319 c_C = float(d.get(
'c_C', 5.0e-4))
320 c_N = float(d.get(
'c_N', 2.0e-4))
325 E_b_C_SIA = float(d.get(
'E_b_C_SIA', 0.45)); z_C_SIA = 4
326 E_b_N_SIA = float(d.get(
'E_b_N_SIA', 0.40)); z_N_SIA = 4
327 E_b_Cr_SIA = float(d.get(
'E_b_Cr_SIA', 0.10)); z_Cr_SIA = 8
328 E_b_Mn_SIA = float(d.get(
'E_b_Mn_SIA', 0.20)); z_Mn_SIA = 6
329 return (z_C_SIA * c_C * np.exp(E_b_C_SIA / kBT) +
330 z_N_SIA * c_N * np.exp(E_b_N_SIA / kBT) +
331 z_Cr_SIA * c_Cr * np.exp(E_b_Cr_SIA / kBT) +
332 z_Mn_SIA * c_Mn * np.exp(E_b_Mn_SIA / kBT))
336 E_b_C_V = float(d.get(
'E_b_C_V', 0.45)); z_C_V = 3
337 E_b_N_V = float(d.get(
'E_b_N_V', 0.40)); z_N_V = 3
338 E_b_W_V = float(d.get(
'E_b_W_V', 0.27)); z_W_V = 8
339 E_b_Mn_V = float(d.get(
'E_b_Mn_V', 0.10)); z_Mn_V = 8
340 E_b_Cr_V = float(d.get(
'E_b_Cr_V', 0.05)); z_Cr_V = 8
341 return (z_C_V * c_C * np.exp(E_b_C_V / kBT) +
342 z_N_V * c_N * np.exp(E_b_N_V / kBT) +
343 z_W_V * c_W * np.exp(E_b_W_V / kBT) +
344 z_Mn_V * c_Mn * np.exp(E_b_Mn_V / kBT) +
345 z_Cr_V * c_Cr * np.exp(E_b_Cr_V / kBT))
348 def _trap_sum_loop():
349 E_b_C_loop = float(d.get(
'E_b_C_loop', 0.50)); z_C_loop = 2
350 E_b_N_loop = float(d.get(
'E_b_N_loop', 0.40)); z_N_loop = 2
351 E_b_Cr_loop = float(d.get(
'E_b_Cr_loop', 0.10)); z_Cr_loop = 4
352 return (z_C_loop * c_C * np.exp(E_b_C_loop / kBT) +
353 z_N_loop * c_N * np.exp(E_b_N_loop / kBT) +
354 z_Cr_loop * c_Cr * np.exp(E_b_Cr_loop / kBT))
356 trap_SIA = _trap_sum_SIA()
357 trap_VAC = _trap_sum_VAC()
358 trap_loop = _trap_sum_loop()
361 omega_i_eff = omega_i_Fe / (1.0 + trap_SIA)
362 omega_v_eff = omega_v_Fe / (1.0 + trap_VAC)
363 omega_h_eff = omega_h_Fe
365 Di_eff = omega_i_eff * a_m**2
366 Dv_eff = omega_v_eff * a_m**2
367 Dh_eff = omega_h_eff * a_m**2
370 nu0_1D = float(d.get(
'nu0_1D', 6.0e12))
371 E_m_1D = float(d.get(
'E_m_1D', 0.03))
372 s_1D = float(d.get(
's_1D', 0.7))
373 i_mobile = int(float(d.get(
'i_mobile', 1)))
374 v_mobile = int(float(d.get(
'v_mobile', 1)))
379 boundary_flux = str(re.get(
'boundary_flux',
380 d.get(
'boundary_flux',
'absorption'))).lower().strip()
381 if boundary_flux
not in (
'absorption',
'reflection'):
383 warnings.warn(f
"Unknown boundary_flux='{boundary_flux}', using 'absorption'")
384 boundary_flux =
'absorption'
387 D1D_base = (3.0 * a_m**2 * nu0_1D / 2.0) * np.exp(-E_m_1D / kBT)
394 L_hat = float(d.get(
'L_hat', 50.0))
395 B_rot = float(d.get(
'B_rot', 2.627))
398 Cv_eq = np.exp(-E_f_v / kBT)
401 A_sph = (48.0 * np.pi**2)**(1.0/3.0)
402 A_loop = 8.0 * np.sqrt(np.pi / np.sqrt(3.0))
403 A_1D = 9.0 / (8.0 * np.pi**(2.0/3.0))
413 spectrum = str(re.get(
'spectrum',
'fission')).lower()
414 _G_He_r_default = 0.75
if 'fiss' in spectrum
else 10.0
415 G_He_r = float(re.get(
'G_He_r', _G_He_r_default))
416 G_He = G_He_r * 1.0e-6 * G
441 'omega_i_eff': omega_i_eff,
442 'omega_v_eff': omega_v_eff,
443 'omega_h_eff': omega_h_eff,
444 'trap_SIA': trap_SIA,
445 'trap_VAC': trap_VAC,
446 'trap_loop': trap_loop,
447 'D1D_base': D1D_base,
450 'i_mobile': i_mobile,
451 'v_mobile': v_mobile,
460 'spectrum': spectrum,
461 'boundary_flux': boundary_flux,
464 print(f
"Derived: T={T} K Cv_eq={Cv_eq:.3e}"
465 f
" Di_eff={Di_eff:.3e} Dv_eff={Dv_eff:.3e} m2/s"
466 f
" spectrum='{spectrum}'")