units_and_constants.py 995 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from dataclasses import dataclass
  2. @dataclass
  3. class BaseUnits:
  4. distance: float
  5. charge: float
  6. voltage: float
  7. concentrationM: float
  8. @property
  9. def charge_density(self):
  10. return self.charge / (self.distance ** 2)
  11. @property
  12. def energy(self):
  13. return self.charge * self.voltage
  14. @property
  15. def concentration(self):
  16. return self.concentrationM * 6.02214076 * 1e23 / (10 * self.distance) ** 3
  17. @dataclass
  18. class Constants:
  19. Boltzmann: float
  20. epsilon0: float
  21. e0: float
  22. base_units = {'distance': 1e-9,
  23. 'charge': 1.602176634 * 1e-19,
  24. 'voltage': 1,
  25. 'concentrationM': 1e-3}
  26. UNITS = BaseUnits(**base_units)
  27. # values of different constants in provided base units
  28. CONSTANTS = Constants(Boltzmann=1.380649 * 1e-23 / UNITS.energy,
  29. epsilon0=8.8541878128 * 1e-12 * UNITS.distance * UNITS.voltage / UNITS.charge,
  30. e0=1.602176634 * 1e-19 / UNITS.charge)