Skip to content

Commit

Permalink
kelvin radius and term (#315)
Browse files Browse the repository at this point in the history
  • Loading branch information
ngam authored Oct 23, 2022
1 parent 285d076 commit 4c0fb03
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 0 deletions.
37 changes: 37 additions & 0 deletions particula/util/kelvin_correction.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
""" calculate kelvin correction """

import numpy as np

from particula import u
from particula.util.input_handling import in_temperature, in_density, in_radius
from particula.util.input_handling import in_handling, in_molecular_weight
from particula.constants import GAS_CONSTANT


def kelvin_radius(surface_tension, molecular_weight, density, temperature):
""" Kelvin radius (Neil's definition)
https://en.wikipedia.org/wiki/Kelvin_equation
"""

temperature = in_temperature(temperature).to_base_units()
molecular_weight = in_molecular_weight(molecular_weight).to_base_units()
density = in_density(density).to_base_units()
surface_tension = in_handling(surface_tension, u.N/u.m) # type: ignore

return 2 * surface_tension * molecular_weight / (
GAS_CONSTANT * temperature * density
)


def kelvin_term(surface_tension, molecular_weight, density, temperature, radius):
""" Kelvin term (Neil's definition)
https://en.wikipedia.org/wiki/Kelvin_equation
"""

rad = in_radius(radius)

kelvin_rad = kelvin_radius(
surface_tension, molecular_weight, density, temperature
)

return np.exp(kelvin_rad / rad)
26 changes: 26 additions & 0 deletions particula/util/tests/kelvin_correction_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
""" test kelvin correct """

from particula import u

from particula.util.kelvin_correction import kelvin_radius, kelvin_term


def test_kelvin_radius():
""" test: parcelona.kelvin_radius """
assert kelvin_radius(
surface_tension=0.072 * u.N/u.m,
molecular_weight=0.01815 * u.kg/u.mol,
density=1000 * u.kg/u.m**3,
temperature=300
).u == u.m


def test_kelvin_term():
""" test: parcelona.kelvin_term """
assert kelvin_term(
surface_tension=0.072 * u.N/u.m,
molecular_weight=0.01815 * u.kg/u.mol,
density=1000 * u.kg/u.m**3,
temperature=300,
radius=1 * u.m
).u == u.dimensionless

0 comments on commit 4c0fb03

Please sign in to comment.