What's Changed
- stable water isotopologues:
- new base attributes: `Moles1H`, `Moles16O`, `MolesLightWater` + havy isotopes via `make_mole_amount_factory` (previously developed for Hoppel gap)
- new derived attributes: isotopic deltas (via new `make_delta_factory`)
- backend isotope methods: `isotopic_delta` via physics.trivia (both CPU and GPU)
- sketch of `IsotopicFractionation` dynamic (attribite dependencies, trigerring delta calculation)
- VSMOW constants
- isotope-related physics formulae:
- `isotope_equilibrium_fractionation_factors`: `BarkanAndLuz2005` (Oxygen 17, liquid), `HoritaAndWesolowski1994` (Oxygen 18 and Deuterium, liquid), `Majoube1970` (Oxygen 18, ice), `Majoube1971` (Oxygen 18, liquid), `MerlivatAndNief1967` (Deuterium, liquid & ice), `VanHook1968` (D, T, O18, O17; liquid & ice)
- `isotope_meteoric_water_line_excess`: `Dansgaard1964` (Oxygen 18 vs. Deuterium), `BarkanAndLuz2007` (Oxygen 17 vs. Oxygen 18); Craig 1961 Fig 1 and Barkan & Luz 2007 Fig 4 unit tests
- `isotope_ratio_evolution`: `MerlivatAndJouzel1979` (differential), `RayleighDistillation` (integral) + test checking when these two match
- trivia formulae: `isotopic_delta_2_ratio`, `isotopic_ratio_2_delta`, `isotopic_enrichment_to_delta_SMOW`, `mixing_ratio_to_specific_content`
- new examples (all environment-free, depicting formulae):
- `Bolot_et_al_2013`: Fig 1 (incl. unit tests)
- `Merlivat_and_Nief_1967`: Fig 2 (incl. unit tests)
- `Pierchala_et_al_2022`: Fig 3 \& 4 (incl. smoke tests)
- `Van_Hook_1968`: Fig 1
- formulae machinery:
- `constants_defaults`: all calculations logic moved to `compute_derived_values` function called from `Formulae` ctor
- `PPM`, `PER_CENT`, `PER_MEG`, `PER_MILLE`
- dry-air molar mass derived from NIST N2, O2, Ar and C composition ratios
- water molar mass derived from VSMOW isotopic ratios
- CI:
- run `git diff` on pre-commit jpb failure
- bump pypartmc from 1.0.0 to 1.0.1 by dependabot in https://github.com/open-atmos/PySDM/pull/1204
- cleanup precommit workflow (https://github.com/open-atmos/PySDM/pull/1205)
**Full Changelog**: https://github.com/open-atmos/PySDM/compare/v2.33...v2.34