Source code for gtsimulation.MagneticFields.magnetic_field

from abc import ABC, abstractmethod

from gtsimulation.Global import Units, Regions


[docs] class AbsBfield(ABC): ToMeters = 1 def __init__(self, use_tesla=True, use_meters=True, **kwargs): self.Region = Regions.Undefined self.ModelName = None self.Units = 'm' self.use_tesla = use_tesla self.use_meters = use_meters
[docs] @abstractmethod def CalcBfield(self, x, y, z, **kwargs): pass
[docs] @abstractmethod def UpdateState(self, new_date): pass
[docs] @classmethod def from_meters(cls, x, y, z): return x / cls.ToMeters, y / cls.ToMeters, z / cls.ToMeters
[docs] @staticmethod def to_tesla(Bx, By, Bz): return Bx / Units.T2nT, By / Units.T2nT, Bz / Units.T2nT
[docs] def GetBfield(self, x, y, z, **kwargs): if self.use_meters: x, y, z = self.from_meters(x, y, z) Bx, By, Bz = self.CalcBfield(x, y, z, **kwargs) if self.use_tesla: return self.to_tesla(Bx, By, Bz) return Bx, By, Bz
[docs] @abstractmethod def to_string(self): pass
def __str__(self): return self.to_string()