sciforge_core/quantum/
tunneling.rs1use sciforge_hub::prelude::physics::quantum as q;
2
3#[derive(Debug, Clone, Copy)]
4pub struct RectangularBarrier {
5 pub height_j: f64,
6 pub width_m: f64,
7 pub mass_kg: f64,
8}
9
10impl RectangularBarrier {
11 pub fn new(height_j: f64, width_m: f64, mass_kg: f64) -> Self {
12 Self {
13 height_j,
14 width_m,
15 mass_kg,
16 }
17 }
18
19 pub fn transmission(&self, energy_j: f64) -> f64 {
20 q::tunneling_coefficient(energy_j, self.height_j, self.width_m, self.mass_kg)
21 }
22}
23
24pub fn wkb_phase<F: Fn(f64) -> f64>(
25 potential: F,
26 energy_j: f64,
27 x1_m: f64,
28 x2_m: f64,
29 mass_kg: f64,
30) -> f64 {
31 q::wkb_phase(potential, energy_j, x1_m, x2_m, mass_kg)
32}
33
34pub fn wkb_transmission<F: Fn(f64) -> f64>(
35 potential: F,
36 energy_j: f64,
37 x1_m: f64,
38 x2_m: f64,
39 mass_kg: f64,
40) -> f64 {
41 q::wkb_transmission(potential, energy_j, x1_m, x2_m, mass_kg)
42}