Source code for mythos.utils.units

"""Units for the oxDNA model."""

import mythos.utils.types as jd_types

ANGSTROMS_PER_OXDNA_LENGTH = 8.518
ANGSTROMS_PER_NM = 10
NM_PER_OXDNA_LENGTH = ANGSTROMS_PER_OXDNA_LENGTH / ANGSTROMS_PER_NM
PN_PER_OXDNA_FORCE = 48.63
JOULES_PER_OXDNA_ENERGY = 4.142e-20


[docs] def get_kt(t_kelvin: jd_types.ARR_OR_SCALAR) -> jd_types.ARR_OR_SCALAR: """Converts a temperature in Kelvin to kT in simulation units.""" return 0.1 * t_kelvin / 300.0
[docs] def get_kt_from_c(t_celsius: jd_types.ARR_OR_SCALAR) -> jd_types.ARR_OR_SCALAR: """Converts a temperature in Celsius to kT in simulation units.""" return get_kt(t_celsius + 273.15)
[docs] def get_kt_from_string(temp_str: str) -> float: """Converts a temperature string (e.g. '300K', '27C') to kT in simulation units.""" if temp_str.endswith("K"): t_kelvin = float(temp_str.replace("K", "")) return get_kt(t_kelvin) if temp_str.endswith("C"): t_celsius = float(temp_str.replace("C", "")) return get_kt_from_c(t_celsius) raise ValueError(f"Invalid temperature string: {temp_str}")
[docs] def from_kt(kt: jd_types.ARR_OR_SCALAR) -> jd_types.ARR_OR_SCALAR: """Converts kT in simulation units to temperature in Kelvin.""" return 300.0 * kt / 0.1