Note
Click here to download the full example code
Doinikov Rigid (1994): Sandstone in Glycerin#
6.b.ii. Doinikov compute the acoustic radiation force on a sandstone particle in water and in glycerin. Doinikov shows that the acoustic radiation force will change sign in the case \(|x| \ll |x_v| \ll 1\), i.e. if the particle and the viscous boundary layer are small compared to the wavelength and the boundary layer is much larger than the particle.
First we need to get an instance of our solution class. In this case
osaft.king1934.ARF()
and osaft.doinikov1994rigid.ARF()
. The steps are
the same as in the earlier examples.
16 import matplotlib.pyplot as plt
17 import numpy as np
18
19 import osaft
20
21 # --------
22 # Geometry
23 # --------
24 # Radius
25 R_0 = 1e-6 # [m]
26
27 # -----------------------
28 # Properties of Sandstone
29 # -----------------------
30 # Density
31 rho_sandstone = 7.8e3 # [kg/m^3]
32
33 # ----------------------
34 # Properties of Glycerin
35 # ----------------------
36 # Speed of sound
37 c_glycerin = 1_964 # [c/m]
38 # Density
39 rho_glycerin = 1.26e3 # [kg/m^3]
40 # dynamic viscosity
41 eta_glycerin = 0.950 # [Pa s]
42
43
44 # -------------------
45 # Properties of Water
46 # -------------------
47 # Speed of sound
48 c_water = 1_492 # [m/s]
49 # Density
50 rho_water = 997 # [kg/m^3]
51 # dynamic viscosity
52 eta_water = 8.9e-4 # [Pa s]
53
54 # --------------------------------
55 # Properties of the Acoustic Field
56 # --------------------------------
57 # Frequency
58 f = 1e6 # [Hz]
59 # Pressure
60 p_0 = 1e5 # [Pa]
61 # Wave type
62 wave_type = osaft.WaveType.STANDING
63
64 # Theory of Doinikov with glycerin as medium
65 D_glycerin = osaft.doinikov1994rigid.ARF(
66 f=f,
67 R_0=R_0,
68 rho_s=rho_sandstone,
69 rho_f=rho_glycerin,
70 c_f=c_glycerin,
71 eta_f=eta_glycerin,
72 zeta_f=0,
73 p_0=p_0,
74 wave_type=wave_type,
75 position=0,
76 long_wavelength=True,
77 large_boundary_layer=True,
78 )
79 D_glycerin.name = "Doinikov: Glycerin"
80
81 # Theory of Doinikov with water as medium
82 D_water = osaft.doinikov1994rigid.ARF(
83 f=f,
84 R_0=R_0,
85 rho_s=rho_sandstone,
86 rho_f=rho_water,
87 c_f=c_water,
88 eta_f=eta_water,
89 zeta_f=0,
90 p_0=p_0,
91 wave_type=wave_type,
92 position=0,
93 )
94 D_water.name = "Doinikov: Water"
95
96 # Theory of King with glycerin as medium
97 K_glycerin = osaft.king1934.ARF(
98 f=f,
99 R_0=R_0,
100 rho_s=rho_sandstone,
101 rho_f=rho_glycerin,
102 c_f=c_glycerin,
103 p_0=p_0,
104 wave_type=wave_type,
105 position=0,
106 small_particle_limit=True,
107 )
108 K_glycerin.name = "King: Glycerin"
109
110 # Theory of King with water as medium
111 K_water = K_glycerin.copy()
112 K_water.rho_f = rho_water
113 K_water.c_f = c_water
114 K_water.name = "King: Water"
We plot the acoustic radiation force by initializing an instance of
osaft.ARFPlot()
and adding our solutions using add_solutions()
.
120 # create the x values we want to use for plotting
121 x_values = np.linspace(0, np.pi, num=500)
122
123 # Plotting the solutions
124 plotter = osaft.ARFPlot("position", x_values)
125 plotter.add_solutions(D_water, D_glycerin, K_water, K_glycerin)
126 plotter.plot_solutions()
127
128 plt.show()
/home/docs/checkouts/readthedocs.org/user_builds/osaft/checkouts/stable/osaft/plotting/datacontainers/arf_datacontainer.py:67: AssumptionWarning: Theory might not be valid anymore!
self._change_attr_and_compute_arf(
Total running time of the script: ( 0 minutes 8.864 seconds)
Estimated memory usage: 9 MB