the Creative Commons Attribution 4.0 License.
the Creative Commons Attribution 4.0 License.
BinMod1D v1.0.10: a Python package for explicitly simulating 1D collisional coalescence/breakup processes with corresponding polarimetric radar signatures
Edwin Lee Dunnavan
This paper details a computationally efficient and versatile Python package (BinMod1D v1.0.10) that explicitly evolves spectral bin distributions and corresponding polarimetric radar variables for rain or snow according to atmospheric collisional coalescence and breakup processes. BinMod1D can be executed as a box model, a 1D steady-state model in height, or a full (time and height) 1D column model utilizing multiple particle categories, each of which can have their own densities, aspect ratios, and fall speeds. Forward simulations of polarimetric radar variables are implemented using standard Rayleigh analytic scattering equations. Two-moment (mass and number) or one-moment (mass only) particle interaction calculations follow a source-based spectral bin method. Bin interaction computations are parallelized using just-in-time (JIT) compilation for high performance. BinMod1D box model solutions are validated using analytic solutions of collision-coalescence using a variety of kernels as well as for breakup and the steady-state balance of coalescence with breakup. BinMod1D capabilities are demonstrated through steady-state simulations of rainfall and snow signatures, as well as vertical profiles of diverse meteorological scenarios. Convergence and timing tests are provided for the meteorological scenario of a cloud to rain transition using a realistic collision kernel and fragment distribution. BinMod1D is intended to enable cloud microphysics and weather radar researchers to efficiently simulate vertical profiles of complex weather events. Such a tool can be used to provide reference solutions for training machine learning models and validating various retrieval methodologies.
- Article
(6254 KB) - Full-text XML
- BibTeX
- EndNote
Reference solutions to complex weather phenomena provide a useful way to develop and evaluate new methods for retrieving microphysical variables from weather radar measurements. Such retrievals can involve simple analytic formulas (e.g., Ryzhkov and Zrnić, 2019) or more involved machine learning models (e.g., Chase et al., 2021) that connect radar products like reflectivity to microphysical parameters such as rain or snow rates. Typically, these retrieval equations are developed through a combination of theory and observations, but often without rigorous consideration of microphysical and scattering uncertainties as well as the precise nature of the simulated particle size distribution (PSD). Instead, parameteric approaches, often by assuming an underlying exponential or gamma distribution, are used to connect observed radar variables to desirable microphysical quantities. As a result, however, these parametric approaches sever the important connections between the quantities that are inferred from radar signatures with their underlying microphysical causes.
Of the many microphysical processes in precipitation physics, collision-coalescence and collisional breakup represent two of the most important yet difficult to explicitly simulate. This difficulty can be seen directly from the general equation for collision-coalesence and collsional breakup in time and in height (ignoring horizontal advection terms), which can be expressed as (cf. Mitchell, 1991)
where is the number distribution function for mass m, height z, and time t; vt(m) is the fall speed for particles of mass m; C(x,y) and B(x,y) are the collision-coalescence and collision-breakup kernels, respectively; and is the conditional fragment distribution that determines the number of mass m fragments generated from collisions involving particles of mass x and y. The left hand side of Eq. (1) represents the tendency and sedimentation terms of the evolving PSD (in terms of mass) whereas the first two right hand side terms represent the gain and loss terms for coalescence and the last two terms represent the gain and loss terms for breakup. Equation (1) reduces to the well-known Smoluchowski equation (Smoluchowski, 1917) when the sedimentation and breakup terms are neglected. The Smoluchowski equation is also frequently referred to by many other names such as the coagulation equation, the stochastic collection equation (Tzivion et al., 1987; Feingold et al., 1988; Bott, 2000; Simmel et al., 2002; Prat and Barros, 2007a), the kinetic collection equation (Alfonso et al., 2008) and the scalar transport equation (McLeod, 1964; Drake, 1972; Drake and Wright, 1972). Equation (1) is difficult to solve for several reasons. First, the integro-differential equation is functional in the coalescence gain term through and . As such, standard finite difference numerical methods are not sufficient for directly solving Eq. (1). Secondly, the integral regions are constrained by the particle masses themselves as seen in Eq. (1) with the coalescence gain term and the breakup loss term. This entails that different integration methods are potentially required for different particle m masses. Finally, there are large uncertainties involving the nature and form of the breakup conditional distribution . By its nature, should respect detailed mass conservation in the loss term (i.e., ), however this condition isn't always exactly met (Feingold et al., 1988). For rain collisional breakup, this has led to several intricate methods that use mixture distributions involving, for example, Gaussian and lognormal distributions to represent the different types of breakup events (i.e., filament, sheet, or disk) as constrained by laboratory measurements (Low and List, 1982a, b; McFarquhar, 2004; Straub et al., 2010).
The complexity of Eq. (1) has historically led to roughly three different types of numerical solution methods: point-based methods, target-based spectral moment methods, and source-based spectral moment methods.
Point-based approaches such as the Berry and Reinhardt (1974) method approximate the number distribution function as a set of discrete points and attempt to solve Eq. (1) by interpolating the functional gain term. This approach is computationally intensive compared to other methods but is considered to be quite accurate and is often used to provide reference solutions for other methods (e.g., Wang et al., 2007). The gain and loss terms are handled separately which leads to mass not being exactly conserved, although with enough points this lack of conservation can be mitigated somewhat.
Target-based spectral moment methods instead evolve bin moments (i.e., number and/or mass) and were originally developed by Bleck (1970) and Enukashvily (1980) and improved upon by Tzivion et al. (1987) and Feingold et al. (1988). In the moment-based approach, Eq. (1) is integrated for each k bin with the kernel xrdx from the left bin edge xk to the right bin edge xk+1. This transforms Eq. (1) into
where is the rth mass moment of bin k and is the bin's rth mass moment vertical flux. Often, Eq. (2) is used to generate ordinary differential equations for evolving the mass moment (r=1) and the number moment (r=0). While this integral transform increases the dimensionality by one, the advantage is that differential equations for evolving moments of the number distribution function can be represented, at least partially, in terms of the moments themselves. This can be seen schematically in Fig. 1 for collision-coalescence (panel a) and breakup (panel b). In Fig. 1a, each k bin of the target distribution is treated separately one-at-a-time. Each k bin integrates all i and j source bin regions that overlap with the k bin such that . This can be seen in Fig. 1a by the red “Gain” region created by the and diagonal lines. This collision-coalescence gain term for bin k can be numerically calculated by splitting the full integral region (red) into quadrilateral regions of all i and j bin interactions where the individual interacting source i and j bin amounts are shown as black hashes. The loss region for the k bin (blue) is simply a rectangular integration region created by the k (i) bin interaction with each j bin. The gain term is often very lengthy and suffers from the problem of closure, i.e. the subregions are expressed in terms of higher-order moments of the i and j bins. This has led to different closure techniques. For example, Tzivion et al. (1987) uses a nondimensional integral parameter to connect higher order moments to lower order moments whereby the error is small and the maximum possible error can be determined using Schwarz's inequality for a given bin resolution. Because of this error, mass conservation might not be completely satisfied, however the error is apparently minimal. These tricky integral regions are even more complicated when considering collisional breakup as shown in Fig. 1b where these quadrilateral gain and loss regions are represented as three dimensional volumes that are constrained and separated by the and planes. Other methods such as used by Prat and Barros (2007a) have simplified the lengthy gain and loss integral terms by using the so-called “fixed-pivot” method pioneered by Kovetz and Olund (1969) and later by Kumar and Ramkrishna (1996). In this approach, particles are redistributed by conserving mass and number through a linear interpolation between bin edges and the newly generate particles from the gain terms.
Source-based spectral moment methods are perhaps the most conceptually simple to understand and implement. In these approaches such as detailed in Bott (1998, 2000); Simmel et al. (2002); Wang et al. (2007), each bin-pair interaction (i.e., each pair of i and j bin) and integral region are computed separately and then redistributed to the target distribution bins according to the gain integral regions for each target bin that map to the bin-pair interaction source region. These methods utilize Eulerian geometric mass grids as this ensures that the redistribution will always include a maximum of two bins: a k bin and k+1 bin. By considering each source bin-pair interaction, mass conservation for each bin-pair interaction can be ensured unlike the first two methods. Various source-based models treat the k and k+1 bin partitioning differently. Bott (1998) uses an advection or “flux” scheme whereby the total mass of the i and j collection event are placed in the k bin and a certain fraction of this total mass is then transferred to the k+1 bin by calculating a fractional parameter that is analogous to a weighted Courant number. The Simmel et al. (2002) method is even simpler in that it approximates the collection kernel as a constant such that each source bin-pair interaction provides a fully closed set of ordinary differential equations in terms of the mass and number moments of the interacting distribution bins. A time-dependent linear distribution is then fit between the k and k+1 bins in order to partition the total mass and number between each gain bin.
The source-based method of the Bin Integral Method with Gauss Quadrature (BIMGQ) model by Wang et al. (2007) provided a more rigorous and exact way to perform the k and k+1 bin partitioning compared to the linear flux method of Bott (1998) and the improved version of Bott (2000) as well as the linear discrete method of Simmel et al. (2002). Wang et al. (2007) found that the source bin-pair integral area regions can be calculated exactly through purely geometric considerations and a bilinear approximation of the collection kernel leads to theoretically polynomial terms for each source bin pair. In this way, the gain terms for the k or k+1 bin are expressed in terms of the full source region defined by the i and j bin interaction. Therefore, only the k or k+1 integration calculation is needed as the other bin's calculation can be determined by subtracting the other bin's contribution from the total rectangular source region. In order to simplify these integration calculations, Wang et al. (2007) used a Gaussian quadrature routine which, with enough nodes, would yield the exact polynomial values. Wang et al. (2007) further uses the two predicted moments to diagnose a subgrid linear distribution using the inversion formulas of Enukashvily (1980). Thus, the model evolves both total k bin mass Mk and number Nk whereas Bott (1998) and Bott (2000) evolves the mass distribution function directly by transferring bin-pair interacting masses and then using this mass transfer to fit the new mass distribution function.
While classic Fortran-based collision-coalescence spectral bin solvers exist such as the TAU model (Feingold et al., 1988) and the Bott (1998, 2000) scheme, there has recently been an adoption toward more accessible, modern languages. This transition toward modern accessibility is also reflected in 1D column models and coalescence-based microphysics solvers. For instance, Python-based packages such as LCM1D (Unterstrasser et al., 2020) and PySDM (Bartman et al., 2022) use the Shima et al. (2009) Lagrangian super-droplet method to simulate coalescence. Similarly, Cloudy.jl from Bieli et al. (2022) provides a Julia-based bulk microphysics scheme for simulating cloud microphysics and coalescence. Python-based packages such as the DustPy package from Stammler and Birnstiel (2022) also simulate coagulation but for different disciplines such as astrophysics. For weather radar purposes, it is often not necessary to produce full 3D or 2D simulations when data is often displayed and analyzed in a time/height format such as for quasi-vertical profiles (Ryzhkov et al., 2016), range-defined quasi vertical profiles (Tobin and Kumjian, 2017), columnar vertical profiles (Murphy et al., 2020), Path-columnar vertical profiles (Bukovčić and Krause, 2026). In these cases, it would be convenient for users to specify some initial distribution and then efficiently produce corresponding spectral distributions as well as microphysical and forward simulated radar variables representing mean vertical profiles. Thus, users could use such a simplified model to investigate plausible microphysical explanations for observed vertical radar profiles or for developing retrieval methods from such vertical profiles.
To this end, this paper details a new class-based Python package “BinMod1D” which provides an efficient and versatile spectral bin model along with useful plotting methods. The previous collision-coalescence and breakup methods discussed above often focus on a box model setup and only account for interactions within a single particle class. In contrast, BinMod1D can incorporate as many particle classes as desired as well as custom coalescence and breakup kernels and fragment distributions. Furthermore, the model can be run as a box model, a height-based steady-state model, or a full 1D time/height model. In particular, the steady-state versions of Eqs. (1) and (2) are functionally distinct from the box model and 1D column model in the sense that the tendency term is omitted. Therefore, the ability of BinMod1D to directly simulate steady-state vertical profiles drastically decreases the computational time compared to running the 1D column model to its steady state as done in several rainshaft studies (e.g., Prat and Barros, 2007b; Prat et al., 2012; Kumjian and Prat, 2014). The BinMod1D model is based upon the source-based approach of Wang et al. (2007) but with several computational optimizations. For example, the model heavily utilizes Numba (Lam et al., 2015) which automatically parallelizes calculations for computationally intensive model runs. The model can also be run using the 2-moment (mass and number) subgrid linear distribution approach of Wang et al. (2007) or as a 1-moment (mass only) subgrid uniform distribution approach. The BinMod1D methodology is described in more detail in Sect. 2 along with the Python class architecture. Section 3 provides several box model, steady-state, and column model results derived from Jupyter notebook examples available in the BinMod1D v1.0.10 repository (Dunnavan, 2026a). Section 4 performs a computation speed and accuracy test using a realistic meteorological scenario for both two-moment and one-moment calculations. Finally, Sect. 5 discusses several potential uses of BinMod1D and likely future additions and improvements to the package.
Figure 1The spectral bin “method-of-moments” target-based integration regions from Feingold et al. (1988) for: (a) collision-coalescence and (b) collisional breakup where sbin=2.
2.1 Numerical integration method
For a single distribution with bin k, the moment equations (Eq. 2) can be cast in the following discrete form for moment order r:
where are the combined bin moment losses from the i−j bin-pair interaction1, and the sedimentation shown as the second term on the left hand side of Eq. (3) is approximated using the bin mass midpoint fall speed value in order to achieve moment closure when solving the stochastic collection/breakup equation. The terms and are the gain terms for each k bin moment due to coalescence and breakup, respectively for i−j bin-pair. Each term on the right hand side represents a separate integral
where
and is the collection kernel which dictates the physics of the x and y interactions in the and rectangular space for the i−j bin-pair. Ωk represents the region of the i−j bin-pair (x,y) space that leads to a gain in bin k.
The awkward summation notation in Eq. (3) indicates the conditions under which i−j bin-pair interactions leads to a gain or loss in the k bin. For the first term (coalescence), this means summing all i−j pairs where such that . For the second term (breakup) this means summing all i−j pairs where such that the bin-pair interaction leads to a gain in the k bin. For the third term (combined total loss), this means summing all i−j pairs that involve bin k. Note that cases of self-collection (i.e., collection of bins from the same distribution) necessarily requires the calculation of only one of these pairs. therefore represents the full interaction of all i−j bin pairs that lead to moment changes in the k bin. Therefore, BinMod1D solves one of the three following equations depending upon the user's chosen mode
for either r=1 (mass; 1 moment) or r=1 and r=0 (mass and number; 2 moments). These equations for (1 moment) or Mk(z,t) and (2 moment) are numerically solved using an upwind advection scheme in height and a generalized Runge-Kutta method (with options of 1st to 4th order) in time. Adaptive time steps are also employed to ensure numerical stability where the target timstep is determined from either the dt parameter or, for the steady-state mode, the calculated residence time for each bin while solving . Generally these split time steps are not necessary and are not even used. However, these additional steps become necessary in regimes with, for example, large numbers of particle interactions with aggressive breakup.
The main computational load and complexity of the BinMod1D package comes from using the Wang et al. (2007) approach to solve for r=1 (mass; one-moment prediction) or r=1 and r=2 (mass and number; two-moment prediction). Figure 2 shows a schematic of the Wang et al. (2007) approach using example interactions for self-collection (j−j) and cross-collection (i−j). For this schematic, it is assumed that a distribution with i bins is interacting with a distribution of j bins to produce particles that will be added to a distribution with k bins. Each time/height step therefore calculates each combination of i and j bin-pair interactions and transfers particles (i.e., total mass or total mass and number) from the i and j bin to the k and k+1 bins of a target distribution. Here, distribution k and j are assumed identical although the procedure works if k and j are different. As in Wang et al. (2007) and other coagulation solvers, BinMod1D uses a geometric mass grid where bin edges are determined by
for (see Eq. 9 from Wang et al., 2007) and sbin in Eq. (7) is an integer resolution parameter which governs the number of bins per mass doubling. With the Eq. (7) mass grid, self-collection of an i=j and j bin results in a gain to the bin (green lines in Fig. 2a). This can be seen by and mappings (skewed green arrows). The gain integrals for cross-collection, in general, will cover two bins: k and k+1. An example of cross-collection is shown by the rectangular red/purple region in Fig. 2a. Here the line which delineates the k and k+1 bins cuts directly through the rectangular source region defined by the i and j bin interaction. As a result, the quadrilateral region that is above this line maps to the k (red) bin whereas the quadrilateral region below this line maps to the k+1 (purple) bin. As shown by Fig. 2b, these quadrilateral regions can be segmented into rectangular and triangular parts, each of which can be integrated separately. As stated in Sect. 1, only one of these quadrilateral regions needs to be calculated as the other one can be determined through continuity with the full rectangular region integration needed for computing the loss term for the i and j bin interaction. While the projected integration region for the mass and number gain integrals cuts through both the k and k+1 bins, the values will be added to each respective bin in its entirely. This is shown schematically in Fig. 2 as “smearing” the total added amounts from the left bin edge to the right edge (shown here as red and purple colored transparencies). Each integration region type is therefore treated separately and the general solution is to treat each k or k+1 bin sub region as either a triangle, rectangle, or a triangle and a rectangle as in Fig. 2b. As in Wang et al. (2007), moment closure is ensured by performing a bilinear interpolation of the collision/coalescence kernel in the form: , for each source bin-pair interaction. Notice that this form is slightly different than Eq. (22) in Wang et al. (2007) in order to elucidate the polynomial form of the bilinear collection kernel approximate in the integrand of each integral:
As can be seen from Eqs. (4) and (5), all integrals use the same collection kernel where BinMod1D v1.0.10 considers only a single type of kernel (e.g., hydrodynamic) between each combination of distribution categories. Therefore, the four types of integrals that need to be solved for each term are
where ΩR is either a rectangular region, a triangular region, or a polygonal region that can be split into a triangular and a rectangular region. Rectangular regions can simply be integrated directly into polynomials of one degree higher than in the integrand. However, the number of polynomials from analytical integration of the triangular regions increases geometrically with higher order integrand polynomials. For these triangular regions, the number of monomials for the mass gain integrals becomes very high. To simplify the calculations, the Wang et al. (2007) quadrature idea is used to calculate these triangular region integrals using the 7-point Dunavant rule (Dunavant, 1985) to determine weights and locations for the quadrature rule. The 7-point rule is used here specifically because this rule produces exact values for triangular region integrations with polynomial integrands up to order 5 which is the maximum possible order for subgrid linear distributions of BinMod1D 2-moment scheme.
The Wang et al. (2007) method described above pertains to coalescence only. However, the same general source-based method can be extended to include collisional breakup as well. This new method for collisional breakup is shown schematically in Fig. 3 for an example i and j bin-pair interaction. The BinMod1D model first calculates the total breakup mass (1 moment) or mass and number (2 moments) for the i−j interaction using Eq. (4c). Then, the conditional fragment distribution is determined by taking the assumed fragment distribution form Pf(m) and scaling this distribution by ensuring mass continuity with the total mass integral from the full rectangular i−j region (i.e., ). Then, the total mass (or mass and number) are binned by integrating each k bin from k=0 to 2. This is shown schematically as partitioning the full rectangular integration region into k rectangular subregions, each of which represents the integrated amounts added to each k bin for the j−i bin interaction. Users can specify various fragment distributions by either using examples from the habits.py module or by specifying the fragment dictionaries themselves. These integrations are computed beforehand for a fixed fragment distribution form.
Figure 2The source-based spectral bin model of Wang et al. (2007) (cf. their Fig. 2) using sbin=2 resolution. (a) Shows an example of the self-collection square integration region and target mapping (j+j; green), whereas the rectangular region (b) illustrates cross-collection (i+j). The geometry in (b) illustrates how the integration is handled exactly by splitting the integrals into rectangles and triangles that are used to segregate the target amounts in k and k+1 bins (see Fig. 4 from Wang et al., 2007).
Figure 3The collisional breakup methodology of BinMod1D. Each collision event between i and j bins represents a rectangular integration space from which the total mass is determined. The total mass is binned following the conditional distribution (dashed green line) and then rescaled by ensuring mass continuity of the entire rectangular integral region. Schematically, this can be thought of as breaking the source bin-pair interaction integration region into k pieces (see inset) which are then normalized by the total mass, binned, and added to the k distribution (here shown to be identical to the j distribution).
BinMod1D diagnoses each distribution's linear subgrid distribution set of parameters after each time/height step when Nk and/or Mk evolves. This form is given as
where the Eq. (10a) formulas for ak and ck can be derived from equations 15 through 20 in Wang et al. (2007). Each bin therefore has four separate parameters that govern the subgrid linear distribution function: ak, ck, xk,1, and xk,2. Note that when moments=1, a subgrid uniform distribution across each bin is used such that these parameters are diagnosed as: , , ak=0, and and , where is the bin midpoint mass.
To simplify the calculations, each term is computed separately and then recombined for each k bin for each distribution. This is because each i−j interaction will generate gains in multiple, scattered bins. To perform these calculations, BinMod1D first flattens all arrays needed for each bin-pair interaction such that each bin-pair interaction has a unique set of integration values and destination bin indices. Then, BinMod1D efficiently utilizes “just-in-time” (JIT) compilation using the Numba Python package to perform the interaction integration calculations in parallel for all bin-pair interactions at all heights at once. This leads to BinMod1D effectively using machine code to loop through each possible bin-pair interaction even when utilizing multiple distributions in the full 1D column model mode for all heights at once. For coalescence, the loss and gain transfer calculations are performed for each bin-pair interaction first using Numba-compiled loops and are stored in arrays with the length of the total number of bin pairs. The transfer of the calculation from the i−j source space to the k and k+1 target space (Fig. 2) is performed through scattered addition using the Numpy add.at method after all integration calculations are performed and stored. Collisional breakup, on the other hand, uses additional Numba-compiled loops after the breakup gain amounts are calculated to transfer the breakup fraction of the total i−j bin-pair source loss to each k target bin (see Fig. 3) in the breakup distribution. Multidimensional temporary arrays are used to prevent race conditions during this transfer process where the Numba thread number, heights, and bins represent a three dimensional buffer array from which the transfer sequentially adds to each bin and height in the fragment distribution index for Mk (and Nk if 2 moments are used). Several core BinMod1D components, including the parallelizable interaction kernel computations, were algorithmically streamlined using Google Gemini Pro as a code-refinement tool to ensure maximum computational speed in standard Python environments.
2.2 BinMod1D class architecture and workflow
Comprehensive documentation and step-by-step tutorials that cover BinMod1D model initialization, parameter specification, customization, and more are provided in the software documentation (Dunnavan, 2026b). This section provides only a technical overview of the BinMod1D methodology and classes.
Regardless of how the model is run, the general workflow is the same. Users first initialize a spectral_1d object with a set of input parameters that govern the initial distribution, habit parameters, processes included, and model mode. Each spectral_1d object represents a separate model instance of BinMod1D where the object performs several tasks:
-
It uses the user's prescribed number of distributions and other input parameters and initializes an object of the
Interactionclass which is used to determine the bin-pair interactions when therunmethod is called. Ifmoments=1is specified, then bin-pair interactions for collision-coalescence is precalculated whereasmoments=2bin interaction calculations are computed during model runtime. -
It runs the BinMod1D model with the
runmethod which runs the model as a box model, a steady-state model, or a full 1D (time/height) model with either one or two predicted moments for each bin. The run mode selection depends upon the prescribed inputs for parameters tmax, zbot and ztop. If and zbot=ztop then the box model is run, if and zbot<ztop then the steady-state model is run, and if and zbot<ztop then the full 1D model is run. -
It stores each distribution's Mk or (Mk and Nk) value in a 4D array where the array is indexed by distribution, height, bins, and output time.
-
It plots the model results using methods that start with
plot_(e.g.,spectral_1d.plot_dists()). -
It writes model output after the
runmethod is called to a netcdf file with thewrite_netcdfmethod.
Users can initialize the particle size distribution(s) using one of six different methods using the spectral_1d input init_method:
-
init_method = 'gamma': The initial distribution is a gamma distribution with parameters specified by the user as additional arguments inspectral_1d. -
init_method = 'analytical':The initial distribution is defined using a custom Python lambda function.
-
init_method = 'empirical':The initial distribution is prescribed using edges and number distribution function value evaluated at the prescribed bin midpoints.
-
init_method = 'empirical_counts':As in
init_method = 'empirical'but where users prescribe bin counts rather than number distribution function values. -
init_method = 'direct':The user directly prescribes the bin masses (Mbins) and/or bin numbers (Nbins) along with bin edges.
-
empty:The initial distribution is initialized with no bin mass or number amounts.
When spectral_1d is first initialized, an initial distribution using the dist class is binned according to the user's input parameter specifications. If users use the input init_method = 'gamma' (default), then the initial binned distribution is calculated from a gamma distribution of the form
where n0(D) has units of m−3 mm−1 with a full initial number concentration Nt,0 in L−1, full mean volume diameter Dm in mm, and shape parameter μ. Note the prescribed Nt,0 and Dm,0 values represent values that are valid for the full distribution from (0,∞) whereas the total binned values for Nt and Dm will depend upon the bin resolution sbin and the minimum and maximum bin masses (sizes). Users who instead prefer the gamma distribution form
can diagnose the spectral_1d parameters with the equations
where Λ0 has units of mm−1 and N0 has units of . The gam_norm parameter determines if instead the initial gamma distribution is normalized to have a total mass concentration of unity. Thus, when gam_norm=True the form of the initial gamma distribution is instead with respect to mass m and normalized as
where . Equation (11) is generally used in practice but Eq. (14) is often used when comparing numerical results to known analytical solutions of the stochastic collection equation (see Sect. 3.1 and the BM1D_analytical_examples.ipynb Jupyter notebook for example). When Eq. (14) is used for gam_norm=True, users will specify the Nt,0, Mt,0, μ0, and x0 parameters with dist_var="mass" (where ) whereas when Eq. (11) is used for gam_norm=False users will specify Nt,0, Dm,0, μ0, D1 parameters along with dist_var="size". Alternatively, users can directly specify with the mbar0 input parameter. The D1 (x0) parameter determines the minimum left hand bin edge size (mass) used for the first bin when specifying dist_var="size" (dist_var="mass").
Users can specify the number and type of distributions used in spectral_1d by adding subsequent distributions to the list in the habit_params input parameter (e.g., habit_params=["snow","fragments"]). The length of habit_params determines the number of separate distributions that are solved where the names refer to the particle microphysical parameters in habits.py that are used for each distribution. The spectral_1d input parameter kernel determines the type of interaction kernel (i.e., K(x,y)) with the kernel input (e.g., kernel="Hydro", for the hydrodynamic or gravitational kernel). Users can explicitly set the cc_dest and br_dest input parameters when more than one distribution is specified. Here, cc_dest and br_dest determine the distribution (i.e., category) destination of coalesced and breakup bin-pair interactions, respectively where integer values are given from 1 to len(habit_params). For example, a two-category BinMod1D simulation where the first distribution represents a primary category such as ice crystals and the second category represents snow aggregates can be initialized with cc_dest=2 and habit_params=["snow","snow"]. Similarly, a two-category BinMod1D simulation with snow (and its aggregates) as one category and breakup fragments as the second category can be specified with cc_dest=1, br_dest=2, and habit_params=["snow","fragments"]. Only one distribution/category is used when cc_dest= br_dest=1 (the default behavior). Collision (Ecol), coalescence (Es) and breakup (Eb) efficiencies are treated as constants that can be passed into spectral_1d directly (e.g., spectral_1d(Ecol=1.0,Es=0.5,Eb=0.5)). Here, the total collision-coalescence efficiency is given by ECC=EcolEs whereas the total breakup efficiency EBR is determined by: . In this way, Eb represents the fraction of collisions that occur that do not coalesce but do break up. Therefore, Eb=1.0 indicates the impossibility of rebounding whereas indicates a combination of breakup and rebounding.
Finally, users can also programatically save their spectral_1d model runs using the write_netcdf method. This method saves the 4D mass and number bins for all distributions, heights, and times as well as model attributes. Users can also load back these model runs by initializing spectral_1d with the load input parameter.
2.3 Radar forward operator
BinMod1D v1.0.10 calculates radar reflectivity (Z), differential reflectivity (ZDR), specific differential phase (Kdp), and correlation coefficient (ρhv). Radar calculations for each bin as well as for the entire distribution are calculated when radar=True for a spectral_1d object or when the calc_radar method is called. These polarimetric radar calculations follow the Rayleigh formulas from Ryzhkov et al. (2011) for rain and dry snow modeled as homogeneous soft spheroids. Scattering amplitudes are calculated at each bin edge with the formula (cf. Eq. 22 from Ryzhkov et al., 2011)
where λ is the radar wavelength (defaulted to S band with λ=110 mm), Di is the equivolume diameter at bin edge i, is the spheroidal shape factor at bin edge i determined by the aspect ratio at i, and ϵi is the dieletric constant for bin edge i. Indices a and b refer to the radar scattering along the particle's major (a) and minor (b) axes, respectively. Angular moments for a two-dimensional axisymetric Gaussian orientation distribution (A1 through A7) are used along with these scattering amplitudes to calculate radar contributions for each bin edge with the formulas
where ∗ denotes a complex conjugate and is a dielectric constant for liquid water. Here, an assumed, fixed standard deviation of angles (σ) is used to calculate each angular moment according to the equations in Ryzhkov et al. (2011). Each habit therefore can be assigned a separate σ value in its habit_params dictionary. The left and right bin edge values of each g parameter are then used to determine a linear approximation from gi to gi+1 in the form: , where
The radar variables V for each bin are then analytically integrated from xi to xi
where Mi is the total bin mass and Ni is the total bin number.
Most of the results presented in this section are derived from Jupyter notebook examples: “BM1D_analytical_examples.ipynb”, “BM1D_steady_state_examples.ipynb”, and “BM1D_full_1D_examples.ipynb”, which are provided in the BinMod1D repository (Dunnavan, 2026a). Users can execute these examples locally or within a pre-configured Binder environment which can be accessed through the project's documentation interface in Dunnavan (2026b).
3.1 Box model examples
Several previous studies (see Tzivion et al., 1987; Bott, 1998; Wang et al., 2007, for example) have leveraged the analytical solutions of the stochastic collection equation outlined by Scott (1968) using the Safronov/Golovin (cf. Safronov, 1962; Golovin, 1963) or sum (i.e., ), product (i.e., ), and constant (i.e., const.) kernels to validate their spectral models. Similarly, the BinMod1D model in this section is compared to these analytical solutions for μ0=3 and for the normalized gamma distribution (Eq. 14) where is unity as in Scott (1968).
These comparisons are shown in Fig. 4 using a high-resolution mass grid (sbin=32) in order to highlight the accuracy of the model. As in previous studies, these distributions are plotted with a log scaling3. Plotting in this way using the variable log (m) as the independent variable produces attractive bell-like plots that permit an easier way to compare these numerical solutions to the analytical solutions from Scott (1968). All plots here use the default moments=2 (i.e., two-moment solution) spectral_1d option. The Safronov/Golovin solution shows a rapid decrease in number at t=20 min near the initial gamma distribution mode and the emergence of a long tail which shifts the mass distribution mode to 10 times the initial gamma mode. The product solution at t=10 min, on the other hand, maintains the mass distribution mode at the initial value but produces a long tail toward much larger masses4. The constant kernel shows a much more gradual transition and shifting of the number and mass distribution modal values. Overall, the BinMod1D solutions are indistinguishable from the analytical solutions.
Figure 4BinMod1D Jupyter notebook examples for the number (top row) and mass (bottom row) distribution functions with the Safronov/Golovin, product, and constant kernel (sbin=32) with analytical solutions from Scott (1968) for μ0=3 and Δt=1 s. Here, particle masses and mass distributions are normalized according to Scott (1968) such that the initial total number and total mass are both unity. The spectral_1d option moments=2 is used for all model runs.
Figure 5 shows examples of collisional breakup only and the steady-state balance of coalescence with breakup along with the analytical solutions from Feingold et al. (1988). In these cases, the mass distributions very closely match the analytical solutions. There are somewhat larger differences in the number distributions. However, it is important to realize that the validity of the Feingold et al. (1988) analytical solutions depend upon several assumptions. In particular, the Feingold solutions do not exactly preserve explicit mass conservation for each breakup event although it does conserve the overall total distribution mass. BinMod1D, by contrast, explicitly calculates each bin-pair interaction such that mass is always conserved for each interaction event regardless of the fragment distribution. In this way, BinMod1D represents a much more physically realistic way to explicitly simulate collisional breakup compared to the target-based method-of-moments models such as Feingold et al. (1988).
Figure 5As in Fig. 4 but for the breakup (s=6, Es=1.0, and Eb=0.1) and coalescence-breakup (s=4, Es=0.8, Eb=1.0) constant kernel examples and analytical solutions from Feingold et al. (1988) assuming μ0=0 and Λf=10 g−1. The collision-coalescence and collisional breakup analytical solution is a steady-state solution.
3.2 Steady-state examples
Figure 6 shows two examples of the steady-state (i.e., height only) BinMod1D simulation for a rain case using the plot_moments_radar and plot_dists_height methods of the spectral_1d class. For these simulations, the initial distribution is given by mm, L−1, and μ0=0. A 3 km layer is considered here with ztop=3000., zbot=0., and Δz=10 m (dz=10.). For collision-coalescence only (Es=0.8), number concentration and liquid water content (LWC) decrease with decreasing height whereas mean volume diameters increase with decreasing height. Similarly, Z, ZDR, and Kdp all increase with decreasing heights as coalescence transfers mass from smaller sizes to larger sizes. This, in turn, increases raindrop sizes and decreases raindrop aspect ratios according to the Brandes et al. (2002) aspect ratio-diameter polynomial relationship. Figure 6 also shows the size distributions at 3.0, 1.5, and 0.0 km. As the size distributions evolve downward, the initial inverse-exponential distribution transitions to a more gamma-like shape.
Figure 6 also shows the same simulation but with the incorporation of breakup with Eb=0.005 and an exponential fragment distribution (frag_dist='exp'). By default, the mean volume diameter of frag_dist='exp' is 0.25 mm. The combined coalescence-breakup simulation overall is quite similar to the coalescence only simulation, however there is a noticable stagnation effect that is most obvious for Dm, liquid water content (LWC) and the radar variables. This stagnation effect results from the presence of breakup stunting the coalescence growth effects. The size distribution at 1.5 km is very similar to the coalescence only simulation, especially in the tail portion of the distribution. However, the exponential fragment distribution is clearly visible and becomes more pronounced at z=0.0 km.
Figure 6Various microphysical and radar variables for the steady-state rain example including: (a) Number concentration, (b) Mean volume diameter, (c) Liquid water content, (d) Rain rate, (e) Radar reflectivity, (f) Differential reflectivity, (g) Specific differential phase, and (h) Correlation coefficient. Solid lines represent the collision-coalescence only simulation (CC only) whereas dashed lines show the combined collision-coalescence/collisional-breakup (CC-BC) simulations. Subpanels (i) through (k) show the number distribution function at 3.0, 1.5, and 0.0 km, respectively.
Figure 7 shows a steady-state example of snow aggregation and collisional breakup. This scenario can be thought of as the effects of aggregation and breakup below the dendritic growth layer (DGL). Many studies have investigated these polarimetric radar signatures (Kennedy and Rutledge, 2011; Andrić et al., 2013; Schrom et al., 2015; Griffin et al., 2018; Dunnavan et al., 2022) and it is well known that reflectivity typically increases downward below whereas differential reflectivity and specific differential phase typically decreases downward. Here, BinMod1D is run with an initial gamma distribution with L−1, mm, and μ0=3. Furthermore, two distinct category distributions are used: snow and fragments, where each sample distribution has microphysical parameters determined by the habits.py module (i.e., habit_params=['snow','fragments']). In particular, snow particles have a fixed aspect ratio of 0.6 with an orientation parameter of 0° (horizontal orientation) whereas fragments have aspect ratios of 0.8 and an orientation parameter of 20°. The simulation is also set up so that aggregated particles go to the snow distribution (cc_dest=1) whereas the breakup fragments go to the fragment distribution (br_dest=2) that is governed by an assumed lognormal distribution with a mode at Dmode=0.2 mm and a median of Dmed=0.25 mm (i.e., frag_dist='LGN'). As shown in Fig. 7, the microphysical variables can be shown independently for each category when running spectral_1d with multiple distribution categories. This simulation shows the domination of aggregation from 3.0 to 2.0 km where reflectivity and Dm rapidly increase downward. From 2.0 to 1.0 km, breakup overwhelms aggregation which leads to a U-shaped reversal of the height profiles. Finally, 1.0 to 0.0 km shows a balance of aggregation with collisional breakup such that the total distribution and its bulk variables more-or-less stagnate. It is important to note that this stagnation effect is typically ignored in models as collisional breakup is often not explicitly taken into account.
3.3 Full model examples
Figure 8 shows an example of a rain “fallout” when boundary=None. In this case, the same initial rain distribution from Sect. 3.2 is used but with Ecol=1.0, Es=0.25, sbin=2, Δt=2 s, Δz=20 m, and 60 bins. With these parameters, this full simulation out to s takes about 50 s on a laptop (see Sect. 4 for more information regarding the laptop specifications). The initial inverse-exponential distribution is only in the top height grid box initially. As time progresses, the initial distribution both sediments and engages in collision-coalescence. Size sorting of drops in different bins accounts for the gradual spreading of the reflectivity signature as the largest drops land before smaller drops.
Figure 8A time/height reflectivity profile (for a radar wavelength of 110 mm) for a rain fallout example where boundary=None.
Figure 9 shows a full 1D column model simulation for snow with aggregation (Es=0.35) representing the DGL simulation from Sect. 3.2 but with slightly larger initial snow particles ( mm). Unlike in the rain fallout example, here boundary='fixed' which indicates that the top particle size distribution (and therefore the topmost mass and number fluxes) is held constant. Therefore, this simulation will tend toward the steady-state solution as t→∞. As in the steady-state simulation, sbin=2 with 60 total bins. The model is run with only one category out to 5400 seconds with Δt=2 s and Δz=20 m and an output frequency of 1 (i.e., every Δt timestep). The simulation itself takes just less than 5 min to run on the laptop used to conduct timing and convergence tests in Sect. 4. The radar time/height profiles in Fig. 9 show the classic aggregation signature of an increasing reflectivity and decreasing ZDR and Kdp toward ground. The system itself evolves slower than the rain case due to the slower fall speeds as it takes slightly less than an hour for the largest snowflakes to reach the surface. The ZDR time/height profile also shows the presence of size sorting as the larger, more oblate snowflakes reach the surface before the smaller, slower falling snowflakes. The simulation itself reaches a quasi steady-state after about 4000 s.
Figure 9A snow aggregation example (left column) for reflectivity (top), differential reflectivity (middle), and specific differential phase (bottom) of BinMod1D where boundary=fixed. Right column represents the 2 category aggregation and breakup simulation.
Figure 10 shows the results of the previous DGL simulation but with the addition of collisional breakup. As in the steady-state simulation, the default lognormal fragment distribution is used. However, here Es=0.6 and Eb=0.05 and the full simulation took 26 min to run. Figure 10 shows that the moments and radar variables for the full 1D column model simulation at t=1.5 h is nearly identical to the corresponding steady-state simulation. The behavior of the profiles are also similar to Fig. 7 but where reflectivity maximizes at 1.0 km rather than 2.0 km. The corresponding time/height profiles are shown alongside the aggregation only results in Fig. 9. The simulations are very similar up until 2000 s where the presence of fragmentation begins to influence the radar fields. Although the start of the surface snowfall occurs at roughly the same time, the combined aggregation and breakup simulation produces a lower surface reflectivity than the aggregation only simulation. The presence of fragments also leads to a higher ZDR and Kdp which both stay very constant in the bottom 1.5 km of the model domain.
Timing tests are performed on a workstation laptop equipped with a 12th generation Intel(R) Core i7-12850HX processor (2.1 GHz and 16 cores) and 64 GB of RAM running in a standard Python environment. These specifications represent standard high-end consumer hardware, thereby demonstrating that the model can be effectively used without the need for specialized high-performance computing (HPC) resources.
These timing and convergence tests use the box model capability of BinMod1D to simulate a transition from continental cloud droplets to moderate rain with Z≈40 dBZ. This is similar to simulations performed by Simmel et al. (2002) and Wang et al. (2007). However, unlike those simulations, the BinMod1D simulations include both collision-coalescence and collisional breakup. Here, the precipitation type is considered to be rain with one category and the Best (1950) fall speed parameterization is used rather than the default Atlas and Ulbrich (1977) power-law parameterization. The Long kernel (kernel='Long') is used where the collision efficiency5 is given by (cf. Long, 1974; Simmel et al., 2002)
where Dx≥Dy and the hydrodynamic kernel is used such that
and the sticking efficiency Es is set to 0.6. The Straub et al. (2010) fragment distribution parameterization with Eb=1.0 (i.e., no rebounding) is used as well (frag_dist='Straub') which characterizes rain-rain fragments with a lognormal distribution, two Gaussian distributions, and a Dirac delta function for the residual rain drop. In order to prevent the breakup of cloud droplets, two linear ramp functions are used to scale Eb based on both the maximum size of the (i,j) collection pair diameter bin midpoints (1.2 mm < < 2.8 mm) and based on the size ratio ) between the collection pair diameter bin midpoints (). Pairs with values less than the first edge have EBR scaled by 0 (i.e., breakup is not considered) whereas pairs with values greater than the second edge values are scaled by unity (i.e., breakup is only scaled by EBR as it is by default). In addition to the Long kernel being a more accurate representation of the autoconversion process for cloud droplets, previous studies such as Wang et al. (2007) have also found that more realistic kernels like the Long kernel can have a slower numerical convergence for different sbin values than for less realistic kernels (i.e., Safronov/Golovin, product, constant, etc.). Furthermore, these tests are, generally speaking, much more numerically demanding than what most users will typically experience. There are a number of reasons for this. First, the initial distribution consists of a very large number concentration (𝒪(105 L−1)). This means that the number of binary interactions that occur at the beginning of the simulation is much greater than for simulations involving fully developed rain and snow. This also means that breakup requires adaptive stepping in order to ensure numerical stability.
In each test, a sbin=16 value with two-moment calculations is used as the reference solution to determine the accuracy of the BinMod1D model runs. The results shown herein are similar to the box model results from Simmel et al. (2002) and Wang et al. (2007) where the initial distribution is a gamma distribution with μ=0 (i.e., an exponential distribution) and normalized according to mass similar to Scott (1968) but with µm and g m−3 (parameters consistent with both Simmel et al., 2002 and Wang et al., 2007). This leads to L−1. In this sense, these convergence and timing tests are representative of continental cloud systems that transition from autoconversion of cloud droplets to accretion of cloud droplets by rain droplets and the resulting steady-state balance of coalescence and collisional breakup.
Figure 11The timeseries evolution of number concentration, mean volume diameter, liquid water content, rain rates as well as radar reflectivity, differential reflectivity, specific differential phase, and correlation coefficient for cloud-rain convergence and testing simulations. Here, the radar wavelength is 110 mm which is consistent with S band radars. Each simulation uses Δt=1 s and an output frequency of 10 s.
Figure 12Number (a) and mass (b) distribution functions from the box model simulations at 3 h for different sbin parameters and for 2-moment simulations (solid lines) and 1-moment simulations (dotted lines).
Figure 11 shows the timeseries of microphysical and radar variables for each simulation. Each simulation, regardless of resolution or moment prediction, produces the same qualitative behavior in the 3 h period. Initially, autoconversion of cloud droplets is gradual and the distributions do not change much. For the reference solution sbin=16 and moments=2, it is clear that it takes roughly 40 min for accretion to finally become dominant. However, the one-moment simulations struggles to capture this delay effect and instead accelerates the accretion process sooner. This is primarily because the collision-coalescence and collisional breakup processes are very sensitive to number concentration as the number of collisions increases rapidly with number concentration. The explicit prediction of number concentration with the two-moment simulations offsets this rapid acceleration and produces the correct transition point even with a somewhat coarse sbin=2 value. The sbin=1 with moments=2 simulation actually over-delays the autoconversion-accretion process slightly. As shown in Table 1, the root-mean-square (RMSE) errors for BinMod1D one-moment number concentrations with sbin=16 (1282.16 L−1) is actually more than twice as large as the BinMod1D two-moment number concentrations with sbin=2. Despite this, the absolute errors of number concentration at 3 h is overall quite low for all simulations where the maximum error is only 0.46 L−1 for sbin=1 and moments=1 for a reference value of 3.17 L−1 from the sbin=16 and moments=2 simulation. This behavior is consistent with the other microphysical variables as well. Even the coarse bin resolution sbin=1 two-moment model run leads to only a slight overestimation of Nt, Dm, and R by 0.22 L−1, 0.088 mm and 0.81 mm h−1, respectively. Similarly, Z, ZDR, and Kdp are within 1.17 dBZ, 0.19 dB, and 0.038 ° km−1 of the sbin=16 reference solution, respectively.
The radar variables, particular the polarimetric ones, show more sensitivity. The diffusive nature of the one-moment solutions exacerbates the accelerated autoconversion-accretion transition shown in the reflectivity timeseries due to the D6 weighting. As a result, the sbin=1 with moments=1 simulation almost immediately increases rapidly with reflectivity and differential reflectivity whereas specific differential phase has a slightly longer apparent transition period. Most notably the sbin=1 with moments=1 simulation dramatically overestimates the ZDR by 3.36 dB and underestimates ρhv by 0.0732. These exaggerated values are due to the extreme diffusion at the large end of the particle mass distribution (Fig. 12) which shows a near exponential behavior with size rather than the super-exponential behavior from collisional breakup that the more accurate, higher resolution simulations show. Increasing sbin from 1 to 2 noticeably improves this diffusive behavior much closer to the reference solutions. Overall, even sbin=2 with moments=2 faithfully captures the correct timeseries of each variable and the correct bimodal steady-state number and mass distribution functions at 3 h. Run times range from 13 s for the coarsest run to 5380 s for the reference simulation. However, even the second highest resolution run (sbin=8 for moments=2) only takes slightly longer than 10 min to perform on a laptop computer. As stated before, these simulations are typically much more demanding than what most users will experience due to the large initial number concentration and the adaptive stepping needed to accurately simulate breakup for these large number of interactions.
BinMod1D is a simple, economic spectral bin microphysics model that should be accessible for those familiar with the Python programming language. Other similar Python packages like LCM1D and PySDM use Lagrangian depictions of the PSD evolution rather than the typical Eulerian description given by traditional spectral bin microphysics schemes. In this way, BinMod1D represents a much more traditional approach that is more similar to the widely-used Fast Spectral Bin Microphysics scheme (FSBM; Khain and Lynn, 2009) which is available in the Fortran-based Weather Research and Forecasting (WRF) model. BinMod1D provides an expedient way to not only generate box model or 1D column model PSD evolution due to coalescence and/or breakup, but also to easily incorporate various habit parameters, numbers of distributions, and interaction kernels. Additionally, BinMod1D, unlike other similar Python packages, allows for direct, explicit simulation of steady-state vertical radar profiles. This article provides only a small set of examples for using the model. However, due to its flexibility, BinMod1D can be customized for a variety of different purposes. For example, users could use BinMod1D to perform in-situ-type bin model simulations similar to Field et al. (2006) where actual in-situ-derived particle size distributions are used to initialize the bin model and investigate the theoretical effects of aggregation (and/or breakup) compared to measured distributions taken from such Lagrangian aircraft spirals. Similarly, users could also develop theoretical particle size distributions valid for laboratory studies such as done in Connolly et al. (2012).
Figure 13BinMod1D (black lines) steady-state results for a heavy snow case. Panels (a) through (d) and (i) through (k) also show corresponding retrievals using the Bukovčić et al. (2020) (B20; red lines) and Ryzhkov and Zrnić (2019) (RZ19; blue lines) power law relations.
Figure 13 presents another possible application: retrieval methodology validation. In this example, BinMod1D is run in the steady-state mode to produce synthetic snow size distributions in height. Here, sbin=6 with 180 bins in order to produce a high resolution set of PSDs. This simulation uses an initial exponential distribution with parameters L−1 and mm which produces an initial reflectivity of about 20 dBZ. Es=0.35 is used to simulate the explicit steady-state PSD evolution in height due only to aggregation. This increases the reflectivity to approximately 30 dBZ at the surface. The Bukovčić et al. (2020) (B20) and the Ryzhkov and Zrnić (2019) (RZ19) power-law retrievals are then used to retrieve Nt, Dm, IWC, and R solely from the BinMod1D polarimetric radar height signatures (see Table 1 from Dunnavan et al., 2022, for these retrieval equations). In this way, these comparisons shows the limitations of these retrieval methods due to using a fixed distribution shape. The BinMod1D simulation and Ryzhkov and Zrnić (2019) retrievals assumes the same snow parameters as used in Bukovčić et al. (2020) to derive their retrievals where the snow aspect ratios are 0.65, σ=0°, the density-size power-law relation is , and the fall speed-size relation is vt(D)=0.81D0.15. Both sets of retrievals assume μ=0 for all heights. Initially, the retrieved size distribution parameters (Fig. 13a, b) are within 5 L−1 and 0.05 mm of the initial BinMod1D exponential distribution Nt and Dm, respectively. The initial differences between the BinMod1D microphysical variables are due to the capping of the density at 0.92 g cm−3 at small sizes which the analytical retrieval formulas do not consider (for the retrievals to be simple power-law formulas, ). Both B20 and RZ19 demonstrate the same general behavior of Nt(z) and Dm(z) from the explicit BinMod1D steady-state simulation. However, both retrievals underestimate the increase in Dm due to aggregation toward ground by nearly 1.0 mm. Figure 13 panels (i) through (k) shows that this is due to the retrievals tendency to approximate the quasi-exponential behavior in the millimeter size range but underestimate the size distribution of large aggregates present in the centimeter range. These sparse but large aggregates that generate in the BinMod1D simulation overall heavily weights the Dm calculation. Both B20 and RZ19 overestimate the snow rates particularly at the surface where both retrievals overestimate the size distribution in the mid-millimeter range (Fig. 13k). Figure 13c show that B20 retrieves a near constant IWC profile whereas RZ19 retrieves an IWC profiles that increases toward ground unlike the slightly decreasing IWC profile from BinMod1D. Overall, while the retrievals exhibit the correct overall behavior, these retrievals are still fundamentally limited by their inability to account for a changing distribution shape due to aggregation. This is one example where the reference solution provided by BinMod1D could be used to improve the retrieval equations of B20, RZ19, and others. Similarly, BinMod1D reference solutions can also be used to train retrieval-based artificial intelligence models.
There are a number of planned future improvements to the BinMod1D package including but not limited to
-
T-matrix radar forward simulation calculations.
-
Additional microphysical processes such as riming, melting, vapor deposition, condensation, evaporation, sublimation, and refreezing.
-
Incorporating non-constant coalescence and breakup efficiency parameterizations.
-
Incorporation of mixed-phase species (i.e., melting snow).
-
Incorporation of additional detailed collision-coalescence parameterizations including those of Phillips et al. (2015, 2017) for snow aggregation and collisional breakup.
-
The ability to specify a user-prescribed time-dependent top boundary condition for the
boundaryinput parameter or an initial set of distributions in height. -
Variable order Weighted Essentially Non-Oscillatory (WENO) advection calculations.
-
Ability to run the model using GPUs via the CuPy package (Okuta et al., 2017).
The current version of BinMod1D is available at the project website (https://github.com/NOAA-National-Severe-Storms-Laboratory/BinMod1D, last access: 27 July 2026) and documented at https://binmod1d.readthedocs.io/ which is archived on Zenodo at https://doi.org/10.5281/zenodo.19890222 (Dunnavan, 2026b). The exact version of the model (v1.0.10) used to produce Figs. 4 through 13 presented in this paper is archived on Zenodo at https://doi.org/10.5281/zenodo.19889377 (Dunnavan, 2026a). Readers can reproduce these figures by running the reproduce_paper.py Python script that is available in the scripts directory. The BinMod1D package can be installed via PIP (pip install binmod1d), and a Conda Forge distribution is currently under review. For the most up-to-date installation instructions, please visit https://binmod1d.readthedocs.io/en/latest/installation.html (last access: 27 July 2026). BinMod1D is distributed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) license, supplemented by specific redistribution and attribution conditions required by the Board of Regents of the University of Oklahoma.
The author has declared that there are no competing interests.
Publisher's note: Copernicus Publications remains neutral with regard to jurisdictional claims made in the text, published maps, institutional affiliations, or any other geographical representation in this paper. The authors bear the ultimate responsibility for providing appropriate place names. Views expressed in the text are those of the authors and do not necessarily reflect the views of the publisher.
The author would like to thank Ted Mansell (NSSL) and Jacob Carlin (NSSL) for their suggestions that improved this paper. The author acknowledges the use of Google Gemini Pro for assistance with optimization and refinement of the manuscript's software architecture.
Funding for this work was provided by the NOAA/Office of Oceanic and Atmospheric Research under NOAA–University of Oklahoma Cooperative Agreement NA21OAR4320204, U.S. Department of Commerce.
This paper was edited by Sylwester Arabas and reviewed by two anonymous referees.
Alfonso, L., Raga, G. B., and Baumgardner, D.: The validity of the kinetic collection equation revisited, Atmos. Chem. Phys., 8, 969–982, https://doi.org/10.5194/acp-8-969-2008, 2008. a, b
Andrić, J., Kumjian, M. R., Zrnić, D. S., Straka, J. M., and Melnikov, V. M.: Polarimetric signatures above the melting layer in winter storms: An observational and modeling study, J. Appl. Meteorol. Clim., 52, 682–700, https://doi.org/10.1175/JAMC-D-12-028.1, 2013. a
Atlas, D. and Ulbrich, C. W.: Path- and Area-integrated rainfall measurement by microwave attenuation in the 1-3 cm band, J. Appl. Meteorol. Clim., 16, 1322–1331, https://doi.org/10.1175/1520-0450(1977)016<1322:PAAIRM>2.0.CO;2, 1977. a
Bartman, P., Bulenok, O., Górski, K., Jaruga, A., Łazarski, G., Olesik, M. A., Piasecki, B., Singer, C. E., Talar, A., and Arabas, S.: PySDM v1: particle-based cloud modeling package for warm-rain microphysics and aqueous chemistry, J. Open Source Softw., 7, 3219, https://doi.org/10.21105/joss.03219, 2022. a
Berry, E. X. and Reinhardt, R. L.: An analysis of cloud drop growth by coalescence: Part I. Double distributions, J. Atmos. Sci., 31, 1814–1824, https://doi.org/10.1175/1520-0469(1974)031%3C1814:AAOCDG%3E2.0.CO;2, 1974. a
Best, A. C.: Empirical formulae for the terminal velocity of water drops falling through the atmosphere, Q. J. Roy. Meteor. Soc., 76, 302–311, https://doi.org/10.1002/qj.49707632905, 1950. a
Bieli, M., Dunbar, O. R. A., de Jong, E. K., Jaruga, A., Schneider, T., and Bischoff, T.: An Efficient Bayesian Approach to Learning Droplet Collision Kernels: Proof of Concept Using “Cloudy”, a New n-Moment Bulk Microphysics Scheme, J. Adv. Model Earth Sy., 14, e2022MS002994, https://doi.org/10.1029/2022MS002994, 2022. a
Bleck, R.: A fast, approximative method for integrating the stochastic coalescence equation, J. Geophys. Res., 75, 5165–5171, https://doi.org/10.1029/JC075i027p05165, 1970. a
Bott, A.: A flux method for the numerical solution of the stochastic collection equation, J. Atmos. Sci., 55, 2284–2293, https://doi.org/10.1175/1520-0469(1998)055<2284:AFMFTN>2.0.CO;2, 1998. a, b, c, d, e, f
Bott, A.: A flux method for the numerical solution of the stochastic collection equation: Extension to two-dimensional particle distributions, J. Atmos. Sci., 57, 284–294, https://doi.org/10.1175/1520-0469(2000)057<0284:AFMFTN>2.0.CO;2, 2000. a, b, c, d, e
Brandes, E. A., Zhang, G., and Vivekanandan, J.: Experiments in Rainfall Estimation with a Polarimetric Radar in a Subtropical Environment, J. Appl. Meteor., 41, 674–685, https://doi.org/10.1175/1520-0450(2002)041<0674:EIREWA>2.0.CO;2, 2002. a
Bukovčić, P. and Krause, J.: Path-CVP (pCVP) – polarimetric radar data snapshot along the predefined path based on Columnar Vertical Profiles, Atmos. Meas. Tech., 19, 775–791, https://doi.org/10.5194/amt-19-775-2026, 2026. a
Bukovčić, P., Ryzhkov, A. V., and Zrnić, D.: Polarimetric relations for snow estimation – radar verification, J. Appl. Meteorol. Clim., 59, 1–52, https://doi.org/10.1175/JAMC-D-19-0140.1, 2020. a, b, c
Chase, R. J., Nesbitt, S. W., and McFarquhar, G. M.: A dual-frequency radar retreival of two parameters of the snowfall particle size distribution using a neural network, J. Appl. Meteorol. Clim., 60, 341–359, https://doi.org/10.1175/JAMC-D-20-0177.1, 2021. a
Connolly, P. J., Emersic, C., and Field, P. R.: A laboratory investigation into the aggregation efficiency of small ice crystals, Atmos. Chem. Phys., 12, 2055–2076, https://doi.org/10.5194/acp-12-2055-2012, 2012. a
Drake, R. L.: The scalar transport equation of coalesence theory: Moments and kernels, J. Atmos. Sci., 29, 537–547, https://doi.org/10.1175/1520-0469(1972)029<0537:TSTEOC>2.0.CO;2, 1972. a
Drake, R. L. and Wright, T. J.: The scalar transport equation of coalesence theory: New families of exact solutions, J. Atmos. Sci., 29, 548–556, https://doi.org/10.1175/1520-0469(1972)029<0548:TSTEOC>2.0.CO;2, 1972. a
Dunavant, D. A.: High degree efficient symmetrical Gaussian quadrature rules for the triangle, Int. J. Numer. Meth. Eng., 21, 1129–1148, https://doi.org/10.1002/nme.1620210612, 1985. a
Dunnavan, E. L.: BinMod1D v1.0.10: A Python package for explicitly simulating 1D collisional coalescence/breakup processes with corresponding polarimetric radar signatures, Zenodo [code and data set], https://doi.org/10.5281/zenodo.19889377, 2026a. a, b, c
Dunnavan, E. L.: BinMod1D (v1.0.10) Documentation, Zenodo, https://doi.org/10.5281/zenodo.19890222, 2026b. a, b, c
Dunnavan, E. L., Carlin, J. T., Hu, J., Bukovčić, P., Ryzhkov, A. V., McFarquhar, G. M., Finlon, J. A., Matrosov, S. Y., and Delene, D. J.: Radar retrieval evaluation and investigation of dendritic growth layer polarimetric signatures in a winter storm, J. Appl. Meteorol. Clim., 61, 1685–1711, https://doi.org/10.1175/JAMC-D-21-0220.1, 2022. a, b
Enukashvily, I. M.: A numerical method for integrating the kinetic equation of coalescence and breakup of cloud droplets, J. Atmos. Sci., 37, 2521–2534, https://doi.org/10.1175/1520-0469(1980)037<2521:ANMFIT>2.0.CO;2, 1980. a, b
Feingold, G., Tzivion, S., and Levin, Z.: Evolution of raindrop spectra. Part I: Solution to the Stochastic Collection/Breakup equation using the method of moments, J. Atmos. Sci., 45, 3387–3399, https://doi.org/10.1175/1520-0469(1988)045<3387:EORSPI>2.0.CO;2, 1988. a, b, c, d, e, f, g, h, i, j, k
Field, P. R., Heymsfield, A. J., and Bansemer, A.: A test of ice self-collection kernels using aircraft data, J. Atmos. Sci., 63, 651–666, https://doi.org/10.1175/JAS3653.1, 2006. a
Golovin, A. M.: The solution of the coagulation equation for cloud droplets in a rising air current, Bull. Acad. Sci. SSSR Geophys. Ser. (English Transl.), 482–487, http://mi.mathnet.ru/dan27630 (last access: 27 July 2026), 1963. a
Griffin, E. M., Schuur, T. J., and Ryzhkov, A. V.: A polarimetric analysis of ice microphysical processes in snow, using quasi-vertical profiles, J. Appl. Meteorol. Clim., 57, 31–50, https://doi.org/10.1175/JAMC-D-17-0033.1, 2018. a
Kennedy, P. C. and Rutledge, S. A.: S-band dual-polarization radar observations of winter storms, J. Appl. Meteorol. Clim., 50, 844–858, https://doi.org/10.1175/2010JAMC2558.1, 2011. a
Khain, A. and Lynn, B.: Simulation of a supercell storm in clean and dirty atmosphere using weather research and forecast model with spectral bin microphysics, J. Geophys. Res., 114, D19209, https://doi.org/10.1029/2009JD011827, 2009. a
Kovetz, A. and Olund, B.: The effect of coalescence and condensation on rain formation in a cloud of finite vertical extent, J. Atmos. Sci., 26, 1060–1065, https://doi.org/10.1175/1520-0469(1969)026<1060:TEOCAC>2.0.CO;2, 1969. a
Kumar, S. and Ramkrishna, D.: On the solution of population balance equations by discretization – I. A fixed pivot technique, Chem. Eng. Sci., 51, 1311–1332, https://doi.org/10.1016/0009-2509(96)88489-2, 1996. a
Kumjian, M. R. and Prat, O. P.: The impact of raindrop collisional processes on the polarimetric radar variables, J. Atmos. Sci., 71, 3052–3067, https://doi.org/10.1175/JAS-D-13-0357.1, 2014. a
Lam, S. K., Pitrou, A., and Seibert, S.: Numba: A LLVM-based Python JIT compiler, in: Proceedings of the Second Workshop on the LLVM Compiler Infrastructure in HPC, LLVM '15, Association for Computing Machinery, New York, NY, USA, 1–6, https://doi.org/10.1145/2833157.2833162, 2015. a
Long, A. B.: Solutions to the droplet collection equation for polynomial kernels, J. Atmos. Sci., 31, 1040–1051, https://doi.org/10.1175/1520-0469(1974)031<1040:STTDCE>2.0.CO;2, 1974. a
Low, T. B. and List, R.: Collision, coalescence, and breakup of raindrops. Part I: Experimentally established coalescence efficiencies and fragment size distributions in breakup, J. Atmos. Sci., 39, 1591–1606, https://doi.org/10.1175/1520-0469(1982)039<1591:CCABOR>2.0.CO;2, 1982a. a
Low, T. B. and List, R.: Collision, coalescence, and breakup of raindrops. Part II: Parameterization of fragment size distributions, J. Atmos. Sci., 39, 1607–1618, https://doi.org/10.1175/1520-0469(1982)039<1607:CCABOR>2.0.CO;2, 1982b. a
McFarquhar, G. M.: A new representation of collision-induced breakup of raindrops and its implications for the shapes of raindrop size distributions, J. Atmos. Sci., 61, 777–794, https://doi.org/10.1175/1520-0469(2004)061<0777:ANROCB>2.0.CO;2, 2004. a
McLeod, J. B.: On the Scalar Transport Equation, Proc. Lond. Math. Soc., 14, 445–458, https://doi.org/10.1112/plms/s3-14.3.445, 1964. a
Mitchell, D. L.: Evolution of snow-size spectra in cyclonic storms. Part II: Deviations from exponential form, J. Atmos. Sci., 48, 1885–1899, https://doi.org/10.1175/1520-0469(1991)048<1885:EOSSSI>2.0.CO;2, 1991. a
Murphy, A. M., Ryzhkov, A., and Zhang, P.: Columnar vertical profiles (CVP) methodology for validating polarimetric retrievals in ice using in situ aircraft measurements, J. Atmos. Ocean. Technol., 37, 1623–1642, https://doi.org/10.1175/JTECH-D-20-0011.1, 2020. a
Okuta, R., Unno, Y., Nishino, D., Hido, S., and Loomis, C.: CuPy: A NumPy-Compatible Library for NVIDIA GPU Calculations, in: Proceedings of Workshop on Machine Learning Systems (LearningSys) in The Thirty-first Annual Conference on Neural Information Processing Systems (NIPS), http://learningsys.org/nips17/assets/papers/paper_16.pdf (last access: 27 July 2026), 2017. a
Phillips, V. T. J., Formenton, M., Bansemer, A., Kudzotsa, I., and Lienert, B.: A parameterization of sticking efficiency for collisions of snow and graupel with ice crystals, J. Atmos. Sci., 72, 4885–4902, https://doi.org/10.1175/JAS-D-14-0096.1, 2015. a
Phillips, V. T. J., Yano, J.-I., and Khain, A.: Ice multiplication by breakup in ice-ice collisions. Part I: Theoretical formulation, J. Atmos. Sci., 74, 1705–1719, https://doi.org/10.1175/JAS-D-16-0224.1, 2017. a
Prat, O. P. and Barros, A. P.: A robust numerical solution of the stochastic collection–breakup equation for warm rain, J. Atmos. Sci., 46, 1480–1497, https://doi.org/10.1175/JAM2544.1, 2007a. a, b
Prat, O. P. and Barros, A. P.: Exploring the use of a column model for the characterization of microphysical processes in warm rain: results from a homogeneous rainshaft model, Adv. Geosci., 10, 145–152, https://doi.org/10.5194/adgeo-10-145-2007, 2007b. a
Prat, O. P., Barros, A. P., and Testik, F. Y.: On the influence of raindrop collision outcomes on equlibrium drop size distributions, J. Atmos. Sci., 69, 1534–1546, https://doi.org/10.1175/JAS-D-11-0192.1, 2012. a
Ryzhkov, A., Pinsky, M., Pokrovsky, A., and Khain, A.: Polarimetric radar observation operator for a cloud model with spectral microphysics, J. Appl. Meteorol. Clim., 50, 873–894, https://doi.org/10.1175/2010JAMC2363.1, 2011. a, b, c
Ryzhkov, A., Zhang, P., Reeves, H., Kumjian, M., Tschallener, T., Trömel, S., and Simmer, C.: Quasi-Vertical Profiles – A new way to look at polarimetric radar data, J. Atmos. Ocean. Technol., 33, 551–562, https://doi.org/10.1175/JTECH-D-15-0020.1, 2016. a
Ryzhkov, A. V. and Zrnić, D. S.: Radar polarimetry for weather observations, Springer Atmospheric Sciences, https://doi.org/10.1007/978-3-030-05093-1, 2019. a, b, c, d
Safronov, V. S.: A particular case of the solution of the coagulation equation, Dokl. Acad. Nauk SSSR, 147, 64–67, https://mathnet.ru/dan27172 (last access: 27 July 2026), 1962. a
Schrom, R. S., Kumjian, M. R., and Lu, Y.: Polarimetric radar signatures of dendritic growth zones within Colorado winter storms, J. Appl. Meteorol. Clim., 54, 2365–2388, https://doi.org/10.1175/JAMC-D-15-0004.1, 2015. a
Scott, W. T.: Analytical studies of cloud droplet coalesence I, J. Atmos. Sci., 25, 54–65, https://doi.org/10.1175/1520-0469(1968)025<0054:ASOCDC>2.0.CO;2, 1968. a, b, c, d, e, f
Shima, S., Kusano, K., Kawano, A., Sugiyama, T., and Kawahara, S.: The super-droplet method for the numerical simulation of clouds and precipitation: a particle-based and probabilistic microphysics model coupled with a non-hydrostatic model, Q. J. Roy. Meteor. Soc., 135, 1307–1320, https://doi.org/10.1002/qj.441, 2009. a
Simmel, M., Trautmann, T., and Tetzlaff, G.: Numerical solution of the stochastic collection equation – comparison of the Linear Discrete Method with other methods, Atmos. Res., 61, 135–148, https://doi.org/10.1016/S0169-8095(01)00131-4, 2002. a, b, c, d, e, f, g, h
Smoluchowski, M.: Versuch einer mathematischen Theorie der Koagulations-kinetik kolloider Lösungen, Z. Phys. Chem., 92, 129–168, https://doi.org/10.1515/zpch-1918-9209, 1917. a
Stammler, S. M. and Birnstiel, T.: DustPy: A Python Package for Dust Evolution in Protoplanetary Disks, Astrophys. J., 935, 35, https://doi.org/10.3847/1538-4357/ac7d58, 2022. a
Straub, W., Beheng, K. D., Seifert, A., Schlottke, J., and Weigand, B.: Numerical investigation of collision-induced breakup of raindrops. Part II: Parameterizations of coalescence efficiencies and fragment size distributions, J. Atmos. Sci., 46, 576–588, https://doi.org/10.1175/2009JAS3175.1, 2010. a, b
Tobin, D. M. and Kumjian, M. R.: Polarimetric radar and surface-based precipitation-type observations of ice pellet to freezing rain transitions, Weather Forecast., 32, 2065–2082, https://doi.org/10.1175/WAF-D-17-0054.1, 2017. a
Tzivion, S., Feingold, G., and Levin, Z.: An efficient numerical solution to the Stochastic Collection Equation, J. Atmos. Sci., 44, 3139–3149, https://doi.org/10.1175/1520-0469(1987)044<3139:AENSTT>2.0.CO;2, 1987. a, b, c, d
Unterstrasser, S., Hoffmann, F., and Lerch, M.: Collisional growth in a particle-based cloud microphysical model: insights from column model simulations using LCM1D (v1.0), Geosci. Model Dev., 13, 5119–5145, https://doi.org/10.5194/gmd-13-5119-2020, 2020. a
Wang, L.-P., Xue, Y., and Grabowski, W. W.: A bin integral method for solving the kinetic collection equation, J. Comput. Phys., 226, 59–88, https://doi.org/10.1016/j.jcp.2007.03.029, 2007. a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x
Combining the coalescence and breakup losses like this only works because Es and Eb are constants. Future work will allow for Es and Eb to be parameterized separately.
The formulation of the stochastic breakup equation used in target-based spectral moment approaches such as Feingold et al. (1988) actually considers the fragment distribution to span from m=0 to as shown in Eqs. (1) and (2). The physical intuition behind these bounds stems from the logic that a fragment cannot be greater than the combined mass of the two interacting species. This upper bound could be plausible if coalescence and breakup are conceptually and mathematically thought of as mutually independent processes (i.e., coalesced particles can then break up in the same time step). However, because BinMod1D considers coalescence and breakup to be mutually exclusive events within a timestep, the maximum bin is instead taken to be the maximum bin of the i−j pair. The assumption is therefore used in the idealistic kernels in order to compare the BinMod1D results with the analytical breakup and steady-state coalescence-breakup solutions of Feingold et al. (1988) in Sect. 3.1.
This is the default plotting method for spectral_1d.plot_dists as follows: n(m)dm=mn(m)dlog (m) and .
It is worth pointing out here that the product solution is known to exhibit gellation (see Alfonso et al., 2008, for more information) and, as such, does not actually preserve mass after a certain period or time. Therefore, the shorter time here is used to avoid the point of gellation.
The kernel='Long' option actually modifies the collision kernel K(x,y) rather than Ecol to keep Ecol as a constant parameter. In these cases, Ecol can be set to unity.