Skip to content

Commit afa5416

Browse files
authored
Merge pull request #779 from slayoo/ice_products
adding RHice product + tests
2 parents 57214ee + 1fb4b91 commit afa5416

File tree

6 files changed

+55
-4
lines changed

6 files changed

+55
-4
lines changed
Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,18 @@
11
"""
2-
ambient relative humidity
2+
ambient relative humidity (wrt water or ice)
33
"""
44
from PySDM.products.impl.moist_environment_product import MoistEnvironmentProduct
55

66

77
class AmbientRelativeHumidity(MoistEnvironmentProduct):
8-
def __init__(self, name=None, unit='dimensionless', var=None):
8+
def __init__(self, name=None, unit='dimensionless', var=None, ice=False):
99
super().__init__(name=name, unit=unit, var=var)
10+
self.ice = ice
11+
12+
def _impl(self, **kwargs):
13+
super()._impl()
14+
if self.ice:
15+
RHw = self.buffer.copy()
16+
self._download_to_buffer(self.environment['a_w_ice'])
17+
self.buffer[:] = RHw / self.buffer[:]
18+
return self.buffer

PySDM/products/size_spectral/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from .effective_radius import EffectiveRadius
33
from .mean_radius import MeanRadius
44
from .particle_size_spectrum import ParticleSizeSpectrumPerMass, ParticleSizeSpectrumPerVolume
5-
from .particles_concentration import ParticleConcentration, ParticleSpecificConcentration
5+
from .particle_concentration import ParticleConcentration, ParticleSpecificConcentration
66
from .particle_volume_versus_radius_logarithm_spectrum import \
77
ParticleVolumeVersusRadiusLogarithmSpectrum
88
from .total_particle_concentration import TotalParticleConcentration

tests/unit_tests/products/__init__.py

Whitespace-only changes.
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# pylint: disable=missing-module-docstring,missing-class-docstring,missing-function-docstring
2+
import numpy as np
3+
import pytest
4+
from PySDM.backends import CPU, GPU
5+
from PySDM.environments import Parcel
6+
from PySDM import Builder, products
7+
from PySDM.physics import si
8+
9+
10+
@pytest.mark.parametrize("backend_class", (
11+
CPU,
12+
pytest.param(GPU, marks=pytest.mark.xfail(strict=True))
13+
))
14+
def test_ambient_relative_humidity(backend_class):
15+
# arrange
16+
n_sd = 1
17+
builder = Builder(n_sd, backend=backend_class())
18+
env = Parcel(
19+
dt=np.nan,
20+
mixed_phase=True,
21+
mass_of_dry_air=np.nan,
22+
p0=1000 * si.hPa,
23+
q0=1 * si.g / si.kg,
24+
T0=260 * si.K,
25+
w=np.nan
26+
)
27+
builder.set_environment(env)
28+
attributes = {
29+
'n': np.ones(n_sd),
30+
'volume': np.ones(n_sd)
31+
}
32+
particulator = builder.build(attributes=attributes, products=(
33+
products.AmbientRelativeHumidity(name='RHw', var='RH'),
34+
products.AmbientRelativeHumidity(name='RHi', var='RH', ice=True),
35+
))
36+
37+
# act
38+
values = {}
39+
for name, product in particulator.products.items():
40+
values[name] = product.get()[0]
41+
42+
# assert
43+
assert values['RHw'] < values['RHi']

tests/unit_tests/test_products.py renamed to tests/unit_tests/products/test_impl.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,6 @@ def set_and_notify():
9696
np.testing.assert_allclose(value1, count / n_steps / dt)
9797
np.testing.assert_allclose(value2, count / n_steps / dt)
9898

99-
10099
@staticmethod
101100
@pytest.mark.parametrize('in_out_pair', (
102101
('CPUTime', 'CPU time'),

0 commit comments

Comments
 (0)