Source code for scp.water

from scp.base_fluid import BaseFluid


[docs] class Water(BaseFluid): def __init__(self) -> None: """ This class represents water as a fluid. The constructor does not require any arguments for the pure water fluid. """ super().__init__(0.0, 100.0) @property def fluid_name(self) -> str: """ Returns the fluid name for this derived fluid. @return: "Water" """ return "Water"
[docs] def viscosity(self, temp: float) -> float: """ Returns the viscosity of water. @param temp: Fluid temperature, in degrees Celsius @return: The dynamic viscosity of water in [Pa-s] """ temp = self._check_temperature(temp) am0 = -3.30233 am1 = 1301 am2 = 998.333 am3 = 8.1855 am4 = 0.00585 am5 = 1.002 am6 = -1.3272 am7 = -0.001053 am8 = 105 am10 = 0.68714 am11 = -0.0059231 am12 = 2.1249e-05 am13 = -2.69575e-08 if temp < 20: exponent = am0 + am1 / (am2 + (temp - 20) * (am3 + am4 * (temp - 20))) return (10**exponent) * 0.1 if temp > 100: return (am10 + temp * am11 + (temp**2) * am12 + (temp**3) * am13) * 0.001 return (am5 * 10 ** ((temp - 20) * (am6 + (temp - 20) * am7) / (temp + am8))) * 0.001
[docs] def specific_heat(self, temp: float) -> float: """ Returns the fluid specific heat. Specific heat of water at 1 atmosphere, 0 to 100 C. Equation from linear least-squares regression of data from CRC Handbook (op.cit.) page D-174 @param temp: Fluid temperature, in degrees Celsius @return: Specific heat, in [J/kg-K] """ temp = self._check_temperature(temp) acp0 = 4.21534 acp1 = -0.00287819 acp2 = 7.4729e-05 acp3 = -7.79624e-07 acp4 = 3.220424e-09 return (acp0 + temp * acp1 + (temp**2) * acp2 + (temp**3) * acp3 + (temp**4) * acp4) * 1000
[docs] def freeze_point(self, _=None) -> float: """ Returns the freezing point temperature of water @param _: Unused variable @return Freezing point temperature, in Celsius """ return 0.0
[docs] def conductivity(self, temp: float) -> float: """ Returns the fluid thermal conductivity for this derived fluid. Thermal conductivity equation from linear least-squares fit to data in CRC Handbook (op.cit.), page E-11 @param temp: Fluid temperature, in degrees Celsius @return: Thermal conductivity, in [W/m-K] """ temp = self._check_temperature(temp) ak0 = 0.560101 ak1 = 0.00211703 ak2 = -1.05172e-05 ak3 = 1.497323e-08 ak4 = -1.48553e-11 return ak0 + temp * ak1 + (temp**2) * ak2 + (temp**3) * ak3 + (temp**4) * ak4
[docs] def density(self, temp: float) -> float: """ Returns the fluid density for this derived fluid. Density eq. for water at 1 atm., from CRC Handbook of Chem. & Phys., 61st Edition (1980-1981), p. F-6. @param temp: Fluid temperature, in degrees Celsius @return: Density, in [kg/m3] """ temp = self._check_temperature(temp) ar0 = 999.83952 ar1 = 16.945176 ar2 = -0.0079870401 ar3 = -4.6170461e-05 ar4 = 1.0556302e-07 ar5 = -2.8054253e-10 ar6 = 0.01687985 return (ar0 + temp * ar1 + (temp**2) * ar2 + (temp**3) * ar3 + (temp**4) * ar4 + (temp**5) * ar5) / ( 1 + ar6 * temp )