Source code for opendrift.models.openoil.adios.models.oil.properties

'''
    Classes for storing measured values within an Oil record
'''
from dataclasses import dataclass, field

from ..common.utilities import dataclass_to_json, JSON_List
from ..common.measurement import (Time,
                                  Temperature,
                                  MassFraction,
                                  Unitless,
                                  Dimensionless,
                                  Density,
                                  DynamicViscosity,
                                  KinematicViscosity,
                                  InterfacialTension,
                                  Pressure,
                                  AngularVelocity)

# from ..common.validators import EnumValidator
# from .validation.warnings import WARNINGS
# from .validation.errors import ERRORS


[docs]@dataclass_to_json @dataclass class InterfacialTensionPoint: tension: InterfacialTension ref_temp: Temperature interface: str = None method: str = None
[docs]class InterfacialTensionList(JSON_List): item_type = InterfacialTensionPoint
[docs]@dataclass_to_json @dataclass class Dispersibility: dispersant: str = None effectiveness: MassFraction = None method: str = None
[docs]class DispersibilityList(JSON_List): item_type = Dispersibility
[docs]@dataclass_to_json @dataclass class Emulsion: """ There is no use for an empty Emulsion object But there is a use for one that has an arbitrary subset of fields, so making them all optional """ age: Time = None water_content: MassFraction = None ref_temp: Temperature = None # Pa units, some kind of pressure/stress. # Adhesion provides the right units # but we shouldn't use it - so Pressure? complex_modulus: Pressure = None storage_modulus: Pressure = None loss_modulus: Pressure = None tan_delta_v_e: Unitless = None complex_viscosity: DynamicViscosity = None method: str = None visual_stability: str = None
[docs]class EmulsionList(JSON_List): item_type = Emulsion
[docs]@dataclass_to_json @dataclass class ESTSEvaporationTest: a_for_ev_a_b_ln_t_c: float = None a_for_ev_a_b_ln_t: float = None a_for_ev_a_b_sqrt_t: float = None b_for_ev_a_b_ln_t_c: float = None b_for_ev_a_b_ln_t: float = None b_for_ev_a_b_sqrt_t: float = None c_for_ev_a_b_ln_t_c: float = None method: str = None