22immersion freezing using either singular or time-dependent formulation
33"""
44
5- from PySDM .backends .impl_common .freezing_attributes import (
6- SingularAttributes ,
7- TimeDependentAttributes ,
8- )
95from PySDM .physics .heterogeneous_ice_nucleation_rate import Null
106from PySDM .dynamics .impl import register_dynamic
117
@@ -25,22 +21,24 @@ def __init__(self, *, singular=True, record_freezing_temperature=False, thaw=Fal
2521 def register (self , builder ):
2622 self .particulator = builder .particulator
2723
28- assert builder .formulae .particle_shape_and_density .supports_mixed_phase ()
24+ assert (
25+ self .particulator .formulae .particle_shape_and_density .supports_mixed_phase ()
26+ )
2927
3028 builder .request_attribute ("signed water mass" )
3129 if self .singular or self .record_freezing_temperature :
3230 builder .request_attribute ("freezing temperature" )
3331
3432 if not self .singular :
3533 assert not isinstance (
36- builder .formulae .heterogeneous_ice_nucleation_rate , Null
34+ self . particulator .formulae .heterogeneous_ice_nucleation_rate , Null
3735 )
3836 builder .request_attribute ("immersed surface area" )
3937 self .rand = self .particulator .Storage .empty (
4038 self .particulator .n_sd , dtype = float
4139 )
4240 self .rng = self .particulator .Random (
43- self .particulator .n_sd , self .particulator .backend . formulae .seed
41+ self .particulator .n_sd , self .particulator .formulae .seed
4442 )
4543
4644 def __call__ (self ):
@@ -54,39 +52,12 @@ def __call__(self):
5452 return
5553
5654 if self .singular :
57- self .particulator .backend .freeze_singular (
58- attributes = SingularAttributes (
59- freezing_temperature = self .particulator .attributes [
60- "freezing temperature"
61- ],
62- signed_water_mass = self .particulator .attributes ["signed water mass" ],
63- ),
64- temperature = self .particulator .environment ["T" ],
65- relative_humidity = self .particulator .environment ["RH" ],
66- cell = self .particulator .attributes ["cell id" ],
67- thaw = self .thaw ,
68- )
55+ self .particulator .immersion_freezing_singular (thaw = self .thaw )
6956 else :
7057 self .rand .urand (self .rng )
71- self .particulator .backend . freeze_time_dependent (
58+ self .particulator .immersion_freezing_time_dependent (
7259 rand = self .rand ,
73- attributes = TimeDependentAttributes (
74- immersed_surface_area = self .particulator .attributes [
75- "immersed surface area"
76- ],
77- signed_water_mass = self .particulator .attributes ["signed water mass" ],
78- ),
79- timestep = self .particulator .dt ,
80- cell = self .particulator .attributes ["cell id" ],
81- a_w_ice = self .particulator .environment ["a_w_ice" ],
82- temperature = self .particulator .environment ["T" ],
83- relative_humidity = self .particulator .environment ["RH" ],
8460 record_freezing_temperature = self .record_freezing_temperature ,
85- freezing_temperature = (
86- self .particulator .attributes ["freezing temperature" ]
87- if self .record_freezing_temperature
88- else None
89- ),
9061 thaw = self .thaw ,
9162 )
9263
0 commit comments