Source code for mechmat.properties.viscosity.crossarrhenius

from mechmat import ureg
from mechmat.core.chainable import Chainable, Guarded
from mechmat.principal import crossarrhenius
from mechcite import cite

[docs]class CrossArrhenius(Chainable): r""" The model is based on the assumption that the fluid flow obeys the Arrhenius equation for molecular kinetics. .. math:: \eta(T, \dot{\gamma})=\frac{\eta_{0}(T)}{1+(\lambda(T) \dot{\gamma})^{a}} where: * :math:`\eta_{0}\left(T_{\mathrm{ref}}\right)` zero shear rate viscosity at reference temperature * :math:`\lambda\left(T_{\text { ref }}\right)` “relaxation time” at reference temperature * :math:`a` “shear-thinning”constant * :math:`E_{\mathrm{a}}` Arrhenius activation energy * :math:`R` gas constant * :math:`T` temperature * :math:`T_{ref}` reference temperature The input for fully specified state: * temperature * temperature_cross_arrhenius_ref * arrhenius_activation_energy * relaxation_time_ref * shear_rate * shear_thinning_const * viscosity_zero_shear_rate_ref """ @cite('osswald_polymer_2006') def __init__(self, **kwargs): super(CrossArrhenius, self).__init__(**kwargs) self.set_guard('arrhenius_activation_energy', ureg.J / ureg.mol) self.set_guard('_arrhenius', ureg.dimensionless) self.link_attr('_arrhenius', crossarrhenius.arrhenius_shift, temperature='temperature', arrhenius_activation_energy='arrhenius_activation_energy', temperature_ref='temperature_cross_arrhenius_ref') self.set_guard('relaxation_time', ureg.s) self.link_attr('relaxation_time', crossarrhenius.relaxation_time, relaxation_time_ref='relaxation_time_ref', zero_shear_viscosity_ref='viscosity_zero_shear_rate_ref') self.set_guard('relaxation_time_ref', ureg.s) self.link_attr('viscosity_dynamic', crossarrhenius.viscosity_dynamic, shear_rate='shear_rate', zero_shear_viscosity='viscosity_zero_shear_rate', relaxation_time='relaxation_time', shear_thinning_const='shear_thinning_const') self.set_guard('viscosity_zero_shear_rate', ureg.Pa * ureg.s) self.link_attr('viscosity_zero_shear_rate', crossarrhenius.zero_shear_viscosity, arrhenius='_arrhenius', zero_shear_viscosity_ref='viscosity_zero_shear_rate_ref') self.set_guard('viscosity_zero_shear_rate_ref', ureg.Pa * ureg.s) self.set_guard('shear_thinning_const', ureg.dimensionless) self.set_guard('temperature_cross_arrhenius_ref', ureg.degC) arrhenius_activation_energy = Guarded() _arrhenius = Guarded() relaxation_time = Guarded() relaxation_time_ref = Guarded() viscosity_zero_shear_rate = Guarded() viscosity_zero_shear_rate_ref = Guarded() shear_thinning_const = Guarded() temperature_cross_arrhenius_ref = Guarded()