Note
Go to the end 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, c_f=c_glycerin,
70 eta_f=eta_glycerin, zeta_f=0,
71 p_0=p_0,
72 wave_type=wave_type,
73 position=0,
74 long_wavelength=True,
75 large_boundary_layer=True,
76 )
77 D_glycerin.name = 'Doinikov: Glycerin'
78
79 # Theory of Doinikov with water as medium
80 D_water = osaft.doinikov1994rigid.ARF(
81 f=f,
82 R_0=R_0,
83 rho_s=rho_sandstone,
84 rho_f=rho_water, c_f=c_water,
85 eta_f=eta_water, zeta_f=0,
86 p_0=p_0,
87 wave_type=wave_type,
88 position=0,
89 )
90 D_water.name = 'Doinikov: Water'
91
92 # Theory of King with glycerin as medium
93 K_glycerin = osaft.king1934.ARF(
94 f=f,
95 R_0=R_0,
96 rho_s=rho_sandstone,
97 rho_f=rho_glycerin, c_f=c_glycerin,
98 p_0=p_0,
99 wave_type=wave_type,
100 position=0,
101 small_particle_limit=True,
102 )
103 K_glycerin.name = 'King: Glycerin'
104
105 # Theory of King with water as medium
106 K_water = K_glycerin.copy()
107 K_water.rho_f = rho_water
108 K_water.c_f = c_water
109 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().
115 # create the x values we want to use for plotting
116 x_values = np.linspace(0, np.pi, num=500)
117
118 # Plotting the solutions
119 plotter = osaft.ARFPlot('position', x_values)
120 plotter.add_solutions(D_water, D_glycerin, K_water, K_glycerin)
121 plotter.plot_solutions()
122
123 plt.show()

/home/docs/checkouts/readthedocs.org/user_builds/osaft/checkouts/patch-doinikov2021_streaming/osaft/plotting/datacontainers/arf_datacontainer.py:61: AssumptionWarning: Theory might not be valid anymore!
self._change_attr_and_compute_arf(
Total running time of the script: ( 0 minutes 9.017 seconds)
Estimated memory usage: 9 MB