Source code for pamtra2.hydrometeors.size

# -*- coding: utf-8 -*-
import numpy as np

# input names are not arbritrary and have to follow Pamtra2 defaults!

# if this is too slow think about implementing @vectorize
# https://numba.pydata.org/numba-doc/dev/user/vectorize.html


[docs]def linspaceBounds(nBins=None, Dmin=None, Dmax=None): """ Distribute size bins linearly. Parameters ---------- nBins : int number of bins Dmin : minimum size (Default value = None) Dmax : maximum size (Default value = None) Returns ------- size : array_like particle size at bounds of bin. length is nBins+1 """ return np.linspace(Dmin, Dmax, nBins+1)
[docs]def logspaceBounds(nBins=None, Dmin=None, Dmax=None): """ Distribute size bins in log scale. Parameters ---------- nBins : int number of bins Dmin : minimum size (Default value = None) Dmax : maximum size (Default value = None) Returns ------- size : array_like particle size at bounds of bin. length is nBins+1 """ return np.logspace(np.log10(Dmin), np.log10(Dmax), nBins+1)
[docs]def boundsToMid(sizeBounds): """ Return mid points of size bounds Parameters ---------- sizeBounds : array_like (len nBins+1) size boundaries Returns ------- sizeCenter : array_like particle size at center bin. length is nBins """ return sizeBounds[..., :-1] + 0.5*np.diff(sizeBounds)
[docs]def boundsWidth(sizeBounds): """ Return width of size bounds Parameters ---------- sizeBounds : array_like (len nBins+1) size boundaries Returns ------- boundsWidth : array_like width of size bounds """ return np.diff(sizeBounds)