BinMod1D v1.0.10: A Python package for explicitly simulating 1D collisional coalescence/breakup processes with corresponding polarimetric radar signatures
Abstract. 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 approach but with parallelizable 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.
General Comments
This manuscript presents BinMod1d, a package for atmospheric coagulation and breakup using spectral methods. The paper is clearly written and the figures are intuitive. Overall, this is a useful software contribution that is appropriate for the target journal, filling an important niche for an accessible, open-source spectral-bin microphysics model implemented in a modern computing language. The manuscript provides relevant use cases, validation experiments, and demonstrations of the code's capabilities, and the software should be of interest to a broad community of researchers working in cloud microphysics and precipitation modeling.
The instructions for setting up and running the simulations were clear, and configuring the computational environment was straightforward. The figures were reproduced without difficulty and were consistent with those presented in the paper.
I recommend publication after the following suggestions are addressed.
Specific Comments
The parameter sbin appears throughout the manuscript but is not clearly defined upon first use. Readers unfamiliar with the author's notation must infer its meaning from the equation in line 197 and the subsequent discussion. Please provide an explicit definition (e.g., "number of bins per mass doubling") when first introduced.
L183: More detail on the parallelization strategy would be helpful. Since multiple collision pairs may access the same source and destination bins, it is not immediately clear how race conditions are avoided. Are collision rates evaluated from a frozen particle distribution at the beginning of the timestep, or are bin populations updated during the collision loop? A brief description of the strategy would help readers assess the scalability of the implementation.
L316–324: The manuscript describes the use of multiple particle categories and destination-category routing through “cc_dest” and “br_dest”. However, I think the paper would benefit from expanding on this, as well as an earlier description of how the kernels or efficiencies may change between classes. Please clarify whether kernels (or probably more importantly the associated efficiencies) are evaluated specifically for each category pair, and if all category pairs are allowed to interact. The flexibiIity is evident, but I think some recommendations for specifying these interactions would also be helpful, or at least a discussion of the default behavior when category-pair-specific information is not provided.
Eq. 18 Specify if Dx needs to be the larger size.
L106: Since the manuscript highlights the advantages of a Python implementation and this paragraph details the recent trend towards accessible languages, I suggest including citations of other Python-based microphysics frameworks that have coagulation, including Particula (https://github.com/Gorkowski/particula) and PySDM (https://github.com/open-atmos/PySDM). While these models use a Lagrangian rather than spectral-bin approach, they provide useful context for readers interested in open-source Python tools for cloud microphysics. It is also worth noting the language of LCM1d in L110.
While the repository includes tests for initialization, conservation, and basic diagnostics, the automated test suite appears to contain relatively few tests tied directly to the scientific validation presented in the manuscript. Given the emphasis on analytical benchmark solutions, breakup parameterizations, radar diagnostics, and multi-category interactions, I encourage the authors to consider incorporating more tests based on these published validation cases.