123456789101112131415161718192021222324252627282930313233343536373839404142 |
- from dataclasses import dataclass
- from pathlib import Path
- import json
- @dataclass
- class BaseUnits:
- distance: float
- charge: float
- voltage: float
- concentrationM: float
- @property
- def charge_density(self):
- return self.charge / (self.distance ** 2)
- @property
- def energy(self):
- return self.charge * self.voltage
- @property
- def concentration(self):
- return self.concentrationM * 6.02214076 * 1e23 / (10 * self.distance) ** 3
- @dataclass
- class Constants:
- Boltzmann: float
- epsilon0: float
- e0: float
- with open(Path(__file__).resolve().parent.joinpath('units.json')) as f:
- base_units = json.load(f)
- UNITS = BaseUnits(**base_units)
- # values of different constants in provided base units
- CONSTANTS = Constants(Boltzmann=1.380649 * 1e-23 / UNITS.energy,
- epsilon0=8.8541878128 * 1e-12 * UNITS.distance * UNITS.voltage / UNITS.charge,
- e0=1.602176634 * 1e-19 / UNITS.charge)
|