mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-27 15:01:08 +00:00
Speed of sound (#8803)
* Create TestShiva * Delete TestShiva * Add speed of sound * Update physics/speed_of_sound.py Co-authored-by: Christian Clauss <cclauss@me.com> * Update physics/speed_of_sound.py Co-authored-by: Christian Clauss <cclauss@me.com> * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update speed_of_sound.py * Update speed_of_sound.py --------- Co-authored-by: jlhuhn <134317018+jlhuhn@users.noreply.github.com> Co-authored-by: Christian Clauss <cclauss@me.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
parent
80d95fccc3
commit
fa12b9a286
52
physics/speed_of_sound.py
Normal file
52
physics/speed_of_sound.py
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
"""
|
||||||
|
Title : Calculating the speed of sound
|
||||||
|
|
||||||
|
Description :
|
||||||
|
The speed of sound (c) is the speed that a sound wave travels
|
||||||
|
per unit time (m/s). During propagation, the sound wave propagates
|
||||||
|
through an elastic medium. Its SI unit is meter per second (m/s).
|
||||||
|
|
||||||
|
Only longitudinal waves can propagate in liquids and gas other then
|
||||||
|
solid where they also travel in transverse wave. The following Algo-
|
||||||
|
rithem calculates the speed of sound in fluid depanding on the bulk
|
||||||
|
module and the density of the fluid.
|
||||||
|
|
||||||
|
Equation for calculating speed od sound in fluid:
|
||||||
|
c_fluid = (K_s*p)**0.5
|
||||||
|
|
||||||
|
c_fluid: speed of sound in fluid
|
||||||
|
K_s: isentropic bulk modulus
|
||||||
|
p: density of fluid
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Source : https://en.wikipedia.org/wiki/Speed_of_sound
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
def speed_of_sound_in_a_fluid(density: float, bulk_modulus: float) -> float:
|
||||||
|
"""
|
||||||
|
This method calculates the speed of sound in fluid -
|
||||||
|
This is calculated from the other two provided values
|
||||||
|
Examples:
|
||||||
|
Example 1 --> Water 20°C: bulk_moduls= 2.15MPa, density=998kg/m³
|
||||||
|
Example 2 --> Murcery 20°: bulk_moduls= 28.5MPa, density=13600kg/m³
|
||||||
|
|
||||||
|
>>> speed_of_sound_in_a_fluid(bulk_modulus=2.15*10**9, density=998)
|
||||||
|
1467.7563207952705
|
||||||
|
>>> speed_of_sound_in_a_fluid(bulk_modulus=28.5*10**9, density=13600)
|
||||||
|
1447.614670861731
|
||||||
|
"""
|
||||||
|
|
||||||
|
if density <= 0:
|
||||||
|
raise ValueError("Impossible fluid density")
|
||||||
|
if bulk_modulus <= 0:
|
||||||
|
raise ValueError("Impossible bulk modulus")
|
||||||
|
|
||||||
|
return (bulk_modulus / density) ** 0.5
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
import doctest
|
||||||
|
|
||||||
|
doctest.testmod()
|
Loading…
Reference in New Issue
Block a user