Source code for constants

from dataclasses import dataclass

[docs] @dataclass class MaterialConstants: """ This class represents material properties for geophysical calculations. Attributes ---------- alpha0 : float Thermal expansivity coefficient at reference temperature. Default is 1e-5. alpha1 : float Temperature derivative of thermal expansion coefficient. Default is 2.9e-8. K : float Bulk modulus, invariant with pressure and temperature. Default is 90e9. alpha0_unc : float Uncertainty in alpha0. Default is 0.5e-5. alpha1_unc : float Uncertainty in alpha1. Default is 0.5e-8. K_unc : float Uncertainty in K. Default is 20e9. """ # parameter values alpha0: float = 1e-5 alpha1: float = 2.9e-8 K: float = 90e9 # parameter uncertainties alpha0_unc: float = 0.5e-5 alpha1_unc: float = 0.5e-8 K_unc: float = 20e9
[docs] @dataclass class VpConstants: """ This class represents constants for compressional wave velocity (Vp). Attributes ---------- v0 : float Initial velocity at reference conditions. Default is -9.3521e-01. b : float Velocity gradient as function of pressure at constant temperature. Default is 1.69478e-03. d0 : float Velocity gradient with respect to density at standard temperature and pressure. Default is 2.55911. dp : float Pressure dependence of velocity gradient with respect to density. Default is -4.76050e-04. c : float Exponential drop-off magnitude. Default is 1.674065. k : float Exponential drop-off of Vp at low pressure. Default is 1.953466e-02. m : float Velocity gradient as function of temperature at constant pressure. Default is -4e-4. v0_unc : float, optional Uncertainty in v0. Default is None. b_unc : float, optional Uncertainty in b. Default is None. d0_unc : float, optional Uncertainty in d0. Default is None. dp_unc : float, optional Uncertainty in dp. Default is None. c_unc : float, optional Uncertainty in c. Default is None. k_unc : float, optional Uncertainty in k. Default is None. m_unc : float, optional Uncertainty in m. Default is 1e-4. """ # parameter values v0: float = -9.3521e-01 b: float = 1.69478e-03 d0: float = 2.55911 dp: float = -4.76050e-04 c: float = 1.674065 k: float = 1.953466e-02 m: float = -4e-4 # parameter uncertainties v0_unc: float = None b_unc: float = None d0_unc: float = None dp_unc: float = None c_unc: float = None k_unc: float = None m_unc: float = 1e-4
[docs] @dataclass class VsConstants: """ This class represents constants for shear wave velocity (Vs). Attributes ---------- v0 : float Initial velocity at reference conditions. Default is -6.0777e-01. b : float Velocity gradient as function of pressure at constant temperature. Default is 1.0345e-03. d0 : float Velocity gradient with respect to density at standard temperature and pressure. Default is 1.4808. dp : float Pressure dependence of velocity gradient with respect to density. Default is -2.9773e-04. c : float Exponential drop-off magnitude. Default is 7.3740e-01. k : float Exponential drop-off of Vs at low pressure. Default is 2.0041e-02. m : float Velocity gradient as function of temperature at constant pressure. Default is -2.3e-4. v0_unc : float, optional Uncertainty in v0. Default is None. b_unc : float, optional Uncertainty in b. Default is None. d0_unc : float, optional Uncertainty in d0. Default is None. dp_unc : float, optional Uncertainty in dp. Default is None. c_unc : float, optional Uncertainty in c. Default is None. k_unc : float, optional Uncertainty in k. Default is None. m_unc : float, optional Uncertainty in m. Default is 1e-4. """ # parameter values v0: float = -6.0777e-01 b: float = 1.0345e-03 d0: float = 1.4808 dp: float = -2.9773e-04 c: float = 7.3740e-01 k: float = 2.0041e-02 m: float = -2.3e-4 # parameter uncertainties v0_unc: float = None b_unc: float = None d0_unc: float = None dp_unc: float = None c_unc: float = None k_unc: float = None m_unc: float = 1e-4
[docs] @dataclass class Constants: """ Master class controlling instantiation of VpConstants and VsConstants. Usage ----- Initialize Constants class to create instances for VpConstants and VsConstants. Example ------- :: constants = Constants() constants.get_v_constants('Vp', v0=-0.9, b=0.001, d0=2.5, dp=-0.0005, c=1.7, k=0.019, m=1.5) constants.get_v_constants('Vs', v0=-0.9, b=0.001, d0=2.5, dp=-0.0005, c=1.7, k=0.019, m=2.5) vp_instance = constants.vp_constants vs_instance = constants.vs_constants """ # Instance of VpConstants vp_constants: VpConstants = None # Instance of VsConstants vs_constants: VsConstants = None # Instance of MaterialConstants material_constants: MaterialConstants = None
[docs] def get_v_constants(self, data_type: str, **kwargs): """ Get constants instance based on data_type ('Vp' or 'Vs') and assign them to class attributes. Parameters ---------- data_type : str Indicates whether VpConstants or VsConstants should be instantiated. **kwargs Variable keyword arguments representing constant values. Raises ------ ValueError If an invalid data_type is provided. """ if data_type == 'Vp': self.vp_constants = VpConstants(**kwargs) elif data_type == 'Vs': self.vs_constants = VsConstants(**kwargs) else: raise ValueError("Invalid data_type. Must be 'Vp' or 'Vs'.")
[docs] def get_material_constants(self, **kwargs): """ Get material constants instance and assign them to class attributes. Parameters ---------- **kwargs Variable keyword arguments representing constant values. """ self.material_constants = MaterialConstants(**kwargs)