Skip to content

Commit 1ad4d69

Browse files
slayooemmacware
authored andcommitted
simple adaptivity in deposition growth; add ABIFM and multi-realisation curves to A&A example Fig 2; code cleaups (#1658)
1 parent 1a912f8 commit 1ad4d69

File tree

14 files changed

+19132
-2768
lines changed

14 files changed

+19132
-2768
lines changed

PySDM/backends/impl_numba/methods/condensation_methods.py

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
_Attributes = namedtuple(
2222
typename="_Attributes",
2323
field_names=(
24-
"water_mass",
24+
"signed_water_mass",
2525
"v_cr",
2626
"multiplicity",
2727
"vdry",
@@ -60,7 +60,7 @@ def condensation(**kwargs):
6060
n_cell=kwargs["n_cell"],
6161
cell_start_arg=kwargs["cell_start_arg"].data,
6262
attributes=_Attributes(
63-
water_mass=kwargs["water_mass"].data,
63+
signed_water_mass=kwargs["signed_water_mass"].data,
6464
v_cr=kwargs["v_cr"].data,
6565
multiplicity=kwargs["multiplicity"].data,
6666
vdry=kwargs["vdry"].data,
@@ -273,7 +273,7 @@ def step_impl( # pylint: disable=too-many-arguments,too-many-locals
273273
):
274274
timestep /= n_substeps
275275
ml_old = calculate_ml_old(
276-
attributes.water_mass, attributes.multiplicity, cell_idx
276+
attributes.signed_water_mass, attributes.multiplicity, cell_idx
277277
)
278278
count_activating, count_deactivating, count_ripening = 0, 0, 0
279279
RH_max = 0
@@ -358,11 +358,11 @@ def step_impl( # pylint: disable=too-many-arguments,too-many-locals
358358
@staticmethod
359359
def make_calculate_ml_old(jit_flags):
360360
@numba.njit(**jit_flags)
361-
def calculate_ml_old(water_mass, multiplicity, cell_idx):
361+
def calculate_ml_old(signed_water_mass, multiplicity, cell_idx):
362362
result = 0
363363
for drop in cell_idx:
364-
if water_mass[drop] > 0:
365-
result += multiplicity[drop] * water_mass[drop]
364+
if signed_water_mass[drop] > 0:
365+
result += multiplicity[drop] * signed_water_mass[drop]
366366
return result
367367

368368
return calculate_ml_old
@@ -429,12 +429,14 @@ def calculate_ml_new( # pylint: disable=too-many-branches,too-many-arguments,to
429429
lambdaK = formulae.diffusion_kinetics__lambdaK(T, p)
430430
lambdaD = formulae.diffusion_kinetics__lambdaD(DTp, T)
431431
for drop in cell_idx:
432-
if attributes.water_mass[drop] <= 0:
432+
if attributes.signed_water_mass[drop] <= 0:
433433
continue
434434
v_drop = formulae.particle_shape_and_density__mass_to_volume(
435-
attributes.water_mass[drop]
435+
attributes.signed_water_mass[drop]
436+
)
437+
x_old = formulae.diffusion_coordinate__x(
438+
attributes.signed_water_mass[drop]
436439
)
437-
x_old = formulae.diffusion_coordinate__x(attributes.water_mass[drop])
438440
r_old = formulae.trivia__radius(v_drop)
439441
x_insane = formulae.diffusion_coordinate__x(
440442
formulae.particle_shape_and_density__volume_to_mass(
@@ -559,13 +561,16 @@ def calculate_ml_new( # pylint: disable=too-many-branches,too-many-arguments,to
559561
)
560562
result += attributes.multiplicity[drop] * mass_new
561563
if not fake:
562-
if mass_new > mass_cr and mass_new > attributes.water_mass[drop]:
564+
if (
565+
mass_new > mass_cr
566+
and mass_new > attributes.signed_water_mass[drop]
567+
):
563568
n_activated_and_growing += attributes.multiplicity[drop]
564-
if mass_new > mass_cr > attributes.water_mass[drop]:
569+
if mass_new > mass_cr > attributes.signed_water_mass[drop]:
565570
n_activating += attributes.multiplicity[drop]
566-
if mass_new < mass_cr < attributes.water_mass[drop]:
571+
if mass_new < mass_cr < attributes.signed_water_mass[drop]:
567572
n_deactivating += attributes.multiplicity[drop]
568-
attributes.water_mass[drop] = mass_new
573+
attributes.signed_water_mass[drop] = mass_new
569574
n_ripening = n_activated_and_growing if n_deactivating > 0 else 0
570575
return result, success, n_activating, n_deactivating, n_ripening
571576

0 commit comments

Comments
 (0)