Source code for pamtra2.hydrometeors.density

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

from .. import constants

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


[docs]def softEllipsoid(sizeCenter, aspectRatio, mass, minDensity=100, maxDensity=constants.rhoIce): """oblate (AspectRatio <1) or prolate (asectRatio >0) soft spheres Parameters ---------- sizeCenter : array_like particle size at center of size bin aspectRatio : array_like particle aspect ratio mass : array_like particle mass minDensity : float minimal density (Default value = 100) maxDensity : float maximum density (Default value = constants.rhoIce) Returns ------- density : array_like density of hydrometeor """ if np.all(aspectRatio <= 1): density = softOblateEllipsoid( sizeCenter, aspectRatio, mass, minDensity=minDensity, maxDensity=maxDensity ) elif np.all(aspectRatio > 1): density = softProlateEllipsoid( sizeCenter, mass, minDensity=minDensity, maxDensity=maxDensity ) else: density = softOblateEllipsoid( sizeCenter, aspectRatio, mass, minDensity=minDensity, maxDensity=maxDensity ) density[aspectRatio > 1] = softProlateEllipsoid( sizeCenter, mass, minDensity=minDensity, maxDensity=maxDensity )[aspectRatio > 1] return density
[docs]def softOblateEllipsoid(sizeCenter, aspectRatio, mass, minDensity=100, maxDensity=constants.rhoIce): """oblate (AspectRatio <1) soft spheres Parameters ---------- sizeCenter : array_like particle size at center of size bin aspectRatio : array_like particle aspect ratio mass : array_like particle mass minDensity : float minimal density (Default value = 100) maxDensity : float maximum density (Default value = constants.rhoIce) Returns ------- density : array_like density of hydrometeor """ density = (6. * mass) / (np.pi * sizeCenter**3. * aspectRatio) density[density < minDensity] = minDensity density[density > maxDensity] = maxDensity return density
[docs]def softProlateEllipsoid(sizeCenter, aspectRatio, mass, minDensity=100, maxDensity=constants.rhoIce): """prolate (asectRatio >0) soft spheres Parameters ---------- sizeCenter : array_like particle size at center of size bin aspectRatio : array_like particle aspect ratio mass : array_like particle mass minDensity : float minimal density (Default value = 100) maxDensity : float maximum density (Default value = constants.rhoIce) Returns ------- density : array_like density of hydrometeor """ density = (6. * mass * aspectRatio ** 2.) / (np.pi * sizeCenter**3.) density[density < minDensity] = minDensity density[density > maxDensity] = maxDensity return density
[docs]water = constants.rhoWater
[docs]ice = constants.rhoIce