mirror of https://github.com/E-Almqvist/hsf
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.0 KiB
40 lines
1.0 KiB
#from phys.particle import particle
|
|
import numpy as np
|
|
|
|
class quantum_system:
|
|
def __init__(self, name: str):
|
|
self.name = name
|
|
self.particles = []
|
|
|
|
def add_particle(self, particle):
|
|
self.particles.append(particle)
|
|
print(f"Added particle {particle} to quantum system '{self.name}' ({self})")
|
|
|
|
class infbox(quantum_system):
|
|
def __init__(self, length: float):
|
|
super().__init__("Inf Box")
|
|
self.length = length
|
|
self.norm_factor = np.sqrt(2/self.length)
|
|
|
|
def get_superpos(self, x, t) -> float:
|
|
waves = []
|
|
for part in self.particles:
|
|
waves.append( part.wave(x, t) )
|
|
|
|
superpos_wave = sum(waves)
|
|
|
|
# normalize the superpos #TODO: ?????
|
|
# superpos_wave *= 1/abs(superpos_wave)
|
|
# superpos_wave = np.exp(superpos_wave)
|
|
|
|
return abs(superpos_wave) ** 2
|
|
|
|
def plot_superpos(self, X, T):
|
|
plots = {}
|
|
for x in X:
|
|
for t in T:
|
|
plots[(x, t)] = self.get_superpos(x, t)
|
|
return plots
|
|
|
|
|
|
|
|
|