:py:mod:`gnome.utilities.weathering` ==================================== .. py:module:: gnome.utilities.weathering .. autoapi-nested-parse:: weathering package This is where we keep a reasonably organized assortment of algorithms for calculating behavior due to weathering. Submodules ---------- .. toctree:: :titlesonly: :maxdepth: 1 adios2/index.rst banerjee_huibers/index.rst delvigne_sweeney/index.rst ding_farmer/index.rst huibers_lehr/index.rst lee_huibers/index.rst lehr_simecek/index.rst monahan/index.rst overstreet/index.rst pierson_moskowitz/index.rst riazi/index.rst spill_area/index.rst stokes/index.rst zhao_toba/index.rst Package Contents ---------------- Classes ~~~~~~~ .. autoapisummary:: gnome.utilities.weathering.LeeHuibers gnome.utilities.weathering.BanerjeeHuibers gnome.utilities.weathering.HuibersLehr gnome.utilities.weathering.Riazi gnome.utilities.weathering.Stokes gnome.utilities.weathering.PiersonMoskowitz gnome.utilities.weathering.DelvigneSweeney gnome.utilities.weathering.DingFarmer gnome.utilities.weathering.ZhaoToba gnome.utilities.weathering.Adios2 gnome.utilities.weathering.LehrSimecek .. py:class:: LeeHuibers Bases: :py:obj:`object` The combination of correlations by Huibers and Katritzky (1998) and Lee et al (1992) to estimate the correlation between a specific aromatic hydrocarbon's density and molecular weight with its partition coefficient. rho_arom = density of aromatic mol_wt = molecular weight s = solubility s = Huibers(rho_arom, mol_wt) k_ow = Lee(s) = Lee(Huibers(rho_arom, mol_wt)) We calibrate an empiric coefficient A with the measured values of Toluene. .. py:attribute:: A .. py:method:: partition_coeff(mol_wt, density) :classmethod: :param mol_wt: Molecular weight in kg/kmole :param density: Density in kg/m^3 .. py:class:: BanerjeeHuibers Bases: :py:obj:`object` The combination of correlations by Huibers and Katritzky (1998) and Banerjee et al (1980) to estimate the correlation between a specific aromatic hydrocarbon's density and molecular weight with its partition coefficient. rho_arom = density of aromatic mol_wt = molecular weight s = solubility s = Huibers(rho_arom, mol_wt) k_ow = Banerjee(s) = Banerjee(Huibers(rho_arom, mol_wt)) .. py:method:: partition_coeff(mol_wt, density) :classmethod: :param mol_wt: Molecular weight in kg/kmole :param density: Density in kg/m^3 .. py:class:: HuibersLehr Bases: :py:obj:`object` Using Huibers & Katrisky for solubility. Using EPA report (2012), and tweaking by Bill so that results better match measured values, to estimate the correlation between a specific aromatic hydrocarbon's density and molecular weight with its partition coefficient. rho_arom = density of aromatic mol_wt = molecular weight S_w = solubility S_w = Huibers(rho_arom, mol_wt) k_ow = 5.45 * s**(-.89) (EPA) k_ow = 10 * s**(-.95) (Lehr) .. py:method:: partition_coeff(mol_wt, density) :classmethod: :param mol_wt: Molecular weight in kg/kmole :param density: Density in kg/m^3 .. py:class:: Riazi Bases: :py:obj:`object` Using Riazi (2005), aromatic properties are approximated from distillation cut temperature (degrees Kelvin) .. py:method:: mol_wt(temp) :classmethod: returns molecular weight in kg/kmole .. py:method:: density(temp) :classmethod: returns density in kg/m^3 .. py:method:: molar_volume(temp) :classmethod: returns molar_volume in m^3/kmole .. py:class:: Stokes Bases: :py:obj:`object` .. py:method:: water_phase_xfer_velocity(oil_water_rho_delta, diameter) :staticmethod: water phase transfer velocity k_w (m/s) This assumes spherical droplets with a diameter < 400 microns. Bigger droplets will be distorted and rise more rapidly, and they are presumed to rise so quickly that little dissolution takes place for them except as part of the dissolution from the surface slick. :param oil_water_rho_delta: density difference (unit-less) :param diameter: droplet diameter (m) :returns: transfer velocity (m/s) .. py:class:: PiersonMoskowitz Bases: :py:obj:`object` Pierson-Moskowitz spectrum for fully developed, wind induced, surface waves. This relates significant wave height to U_10 (m/s), which is the wind speed at 10m elevation. .. py:method:: significant_wave_height(wind_speed) :classmethod: significant wave height H_13 (m) .. py:method:: peak_wave_period(wind_speed) :classmethod: peak wave period T_w (s) .. py:method:: peak_wave_speed(wind_speed) :classmethod: peak wave speed .. py:method:: peak_angular_frequency(wind_speed) :classmethod: peak angular frequency (1/s) .. py:class:: DelvigneSweeney Bases: :py:obj:`object` Delvigne and Sweeney (1988) computes the fraction of breaking waves f_bw. DS assumes no breaking waves for winds less than 10 knots. .. py:method:: breaking_waves_frac(wind_speed, peak_wave_period) :staticmethod: Field observations of Holthuysen and Herbers (1986) and Toba et al. (1971) lead to a simple empirical relation for spilling breakers in deep water. .. py:class:: DingFarmer Bases: :py:obj:`object` .. py:method:: calm_between_wave_breaks(breaking_waves_frac, peak_wave_period) :classmethod: The time available (calm period) for the droplets to re-float D&F note that the duration of the breaking event is about half the wave period, presumably 0.5 * T_w, although this is unclear from their text. .. py:method:: refloat_time(significant_wave_height, water_phase_xfer_velocity) :classmethod: Assuming that the 'average' droplet is inserted to a depth of 0.75 * H_13, calculate the average re-float time T_rfl for the droplet. .. py:method:: water_column_time_fraction(breaking_waves_frac, peak_wave_period, significant_wave_height, water_phase_xfer_velocity) :classmethod: The time fraction that the droplet spends in the water column f_wc .. py:class:: ZhaoToba Bases: :py:obj:`object` Zhao and Toba (2001) percent whitecap coverage formula They use a Reynolds-like dimensionless number rather than an integer power of the wind speed fits the data better .. py:method:: percent_whitecap_coverage(wind_speed) :classmethod: percent whitecap coverage drag coefficient reduces linearly with wind speed for winds less than 2.4 m/s .. py:class:: Adios2 Bases: :py:obj:`object` This is for any Adios 2 algorithms for which a scientific reference is not documented. Note: We should really try to look up the references for these and move them to an appropriately referenced class. .. py:method:: wave_height(U, fetch) :staticmethod: compute the wave height :param U: wind speed :type U: floating point number in m/s units :returns Hrms: RMS wave height in meters .. py:method:: wind_speed_from_height(H) :staticmethod: Compute the wind speed to use for the whitecap fraction This is the reverse of wave_height() - Used if the wave height is specified. - Unlimited fetch is assumed: :param H: given wave height. .. py:method:: mean_wave_period(U, wave_height, fetch) :staticmethod: Compute the mean wave period fixme: check for discontinuity at large fetch.. Is this s bit low??? 32 m/s -> T=15.7 s .. py:method:: dissipative_wave_energy(water_density, H) :staticmethod: Compute the dissipative wave energy units? -- should be: 1/s^3 i.e. energy disspiation rate per m^2 so water density is in there -- but something else is up does the constant have units? .. py:class:: LehrSimecek Bases: :py:obj:`object` This based on formulas by: Lehr and Simecek-Beatty .. py:method:: whitecap_fraction(U, salinity) :staticmethod: compute the white capping fraction This based on Lehr and Simecek-Beatty The Relation of Langmuir Circulation Processes to the Standard Oil Spill Spreading, Dispersion, and Transport Algorithms Spill Sci. and Tech. Bull, 6:247-253 (2000) (maybe typo -- didn't match) Additionally: Ocean Waves Breaking and Marine Aerosol Fluxes By Stanislaw R. Massel