Source code for gtsimulation.Interaction.GenSynchCounter

import numpy as np


# Угол между скоростью и магнитным полем, радианы
[docs] def get_alpha(B, V): cos_BV = np.dot(B, V) / (np.linalg.norm(B) * np.linalg.norm(V)) alpha = np.arccos(cos_BV) return alpha
# Норма перпендикулярной к скорости проекции вектора магнитного поля
[docs] def get_norm_B_perp(B, V): norm_B = np.linalg.norm(B) alpha = get_alpha(B, V) return norm_B * np.sin(alpha)
[docs] class SynchCounter: def __init__(self): self.T = 0 # Кинетическая энергия self.norm_B_perp = 0 # Норма перпендикулярной к скорости проекции вектора магнитного поля self.delta_t = 0 # Промежуток времени self.records = 0 # Количество записей
[docs] def add_iteration(self, T, B, V, dt): self.T += T self.norm_B_perp += get_norm_B_perp(B, V) self.delta_t += dt self.records += 1
[docs] def get_averages(self): T_avg = self.T / self.records B_perp_avg = self.norm_B_perp / self.records return T_avg, B_perp_avg
[docs] def print(self): print(f"T: {self.T}, norm_B_perp: {self.norm_B_perp}, delta_t: {self.delta_t}, records: {self.records}")
[docs] def reset(self): self.__init__()