Source code for pybbda.analysis.trajectories.batted_balls.parameters

import attr
import numpy as np
from pybbda.analysis.utils import check_greater_zero
from pybbda.utils import Singleton


[docs]@attr.s(frozen=True, kw_only=True) class BattedBallConstants: mass = attr.ib( default=5.125, validator=check_greater_zero, metadata={"units": "oz"} ) circumference = attr.ib( default=9.125, validator=check_greater_zero, metadata={"units": "in"} )
[docs]@attr.s(frozen=True, kw_only=True) class DragForceCoefficients: cd0 = attr.ib(default=0.3008) cdspin = attr.ib(default=0.0292)
[docs]@attr.s(frozen=True, kw_only=True) class LiftForceCoefficients: cl0 = attr.ib(default=0.583) cl1 = attr.ib(default=2.333) cl2 = attr.ib(default=1.120) tau = attr.ib(default=10000, metadata={"units": "seconds"})
[docs]@attr.s(kw_only=True) class EnvironmentalParameters: # environmental parameters g_gravity = attr.ib(default=32.174, metadata={"units": "ft_per_s_per_s"}) vwind = attr.ib(default=0, metadata={"units": "mph"}) # mph phiwind = attr.ib(default=0, metadata={"units": "deg"}) # deg hwind = attr.ib(default=0, metadata={"units": "ft"}) # ft relative_humidity = attr.ib(default=50) pressure_in_hg = attr.ib(default=29.92) temperature_f = attr.ib(default=70, metadata={"units": "F"}) # F elevation_ft = attr.ib(default=15, metadata={"units": "ft"}) beta = attr.ib( default=1.217e-4, validator=check_greater_zero, metadata={"units": "per_meter"} ) def __attrs_post_init__(self): self.unit_conversions = UnitConversions() self.elevation_m = self.elevation_ft * self.unit_conversions.ft_to_m self.temperature_c = (self.temperature_f - 32) * 5 / 9 self.pressure_mm_hg = self.pressure_in_hg * 1000 / 39.37 self.SVP = 4.5841 * np.exp( (18.687 - self.temperature_c / 234.5) * self.temperature_c / (257.14 + self.temperature_c) ) self.air_density = 1.2929 * ( 273 / (self.temperature_c + 273) * ( self.pressure_mm_hg * np.exp(-self.beta * self.elevation_m) - 0.3783 * self.relative_humidity * self.SVP * 0.01 ) / 760 )
@attr.s(frozen=True, kw_only=True) class UnitConversions(Singleton): # conversions, mph_to_fts = attr.ib(default=1.467) ft_to_m = attr.ib(default=0.3048037) lbft3_to_kgm3 = attr.ib(default=16.01848) kgm3_to_lbft3 = attr.ib(default=0.06242789)