Моделирование теплового поля при рассеивании ультразвуковых акустических колебаний в вязкой среде¶
Данный пример демонстрирует моделирование распространения ультразвукового излучения в вязкой среде. Моделируется затухание акустических колебаний и нагрев среды засчёт распределённых источников тепла.
Энергия переносимая ультразвуковым пучком, затухает при прохождении её через вязкую среду. Если в начале координат при $x=0$ интенсивность плоской бегущей волны равна $I_0$, то на расстоянии x она уменьшается до величины $I(x)$:
$$I(x) = I_0 \cdot e^{-kx},$$
где (k) – коэффициент затухания по интенсивности. Таким образом, потери энергии исходного ультразвукового пучка при его распространении на единичное расстояние, $\frac{dI}{dx}\$, равны $k \cdot I$. Коэффициент затухания, $k$, состоит из двух компонент, одной, обусловленной поглощением, и другой, обусловленной рассеянием. Энергия, рассеянная из основного пучка, может поглощаться в других областях вязкой среды.
Используя простые уравнения распространения тепла, можно рассчитать ожидаемый нагрев. Распределение температуры вязкой среды описывается уравнением:
$$\frac{\partial T(x,t)}{\partial \tau} = \frac{\partial}{\partial x} \frac{\partial T(x,t)}{\partial x} + \frac{q_0}{c\gamma} e^{-kx}$$
где $T$ – температура, $t$ – время воздействия, $x$ – координата по оси распространения излучения, $q_0$ - начальное значение мощности объёмных источников тепла, $c$ – теплоёмкость среды, $\gamma$ - плотность среды. Мощность объёмных источников в зависимости от координаты:
$q(x) = I_0 k e^{-kx}.$
Расчёт температурного поля¶
Подключение необходимых библиотек:
Определение параметров излучения и вязкой среды:
Реализация функции расчёта температуры по времени и координате:
Out[0]:
heat_equation! (generic function with 1 method)
Определение параметров расчёта:
Out[0]:
(0.5, 10000.0, 3360.0, 1050.0, 0.35, 0.0:0.010101010101010102:1.0)
Реализация функции расчёта теплового потока в зависимости от координаты:
Out[0]:
teplo (generic function with 1 method)
Визуализация величины теплового потока в зависимости от координаты с учётом коэффициента затухания:
Решение задачи методами библиотеки DifferentialEquations:
Определение температурного поля на конечном шаге расчёта:
Визуализация температурного поля на конечном шаге расчёта:
В данном примере было продемонстрировано моделирование распространения акустических колебаний в вязкой среде, а также их затухание и преобразование энергии в тепло. Было построено температурное поле полубесконечной пластины, а также продемонстрированы методы библиотеки DifferentialEquations для решения систем дифференциальных уравнений.
{"id": "05889e39-1a3c-4dc9-98b4-13c506981508", "data": [{"xaxis": "x", "colorbar": {"title": {"text": ""}}, "yaxis": "y", "x": [1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 100], "showlegend": true, "mode": "lines", "name": "y1", "zmin": null, "legendgroup": "y1", "zmax": null, "line": {"color": "rgba(0, 154, 250, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0.002834467120181406, 0.002834467120181406, 0.0028244639695830286, 0.0028144961212187756, 0.002804563450503125, 0.0027946658332902324, 0.0027848031458723756, 0.0027749752649784127, 0.00276518206777224, 0.002755423431851253, 0.0027456992352448235, 0.002736009356412768, 0.002726353674243834, 0.002716732068054183, 0.0027071444175858833, 0.0026975906030054075, 0.0026880705049021343, 0.002678584004286854, 0.002669130982590285, 0.0026597113216615897, 0.002650324903766897, 0.0026409716115878322, 0.0026316513282200497, 0.002622363937171774, 0.002613109322362341, 0.0026038873681207475, 0.0025946979591842077, 0.0025855409806967095, 0.002576416318207582, 0.002567323857670062, 0.0025582634854398718, 0.0025492350882737945, 0.0025402385533282636, 0.0025312737681579493, 0.0025223406207143533, 0.0025134389993444095, 0.002504568792789088, 0.002495729890182004, 0.0024869221810480333, 0.0024781455553019296, 0.002469399903246951, 0.0024606851155734863, 0.002452001083357692, 0.002443347698060126, 0.002434724851524397, 0.0024261324359758085, 0.0024175703440200125, 0.002409038468641668, 0.0024005367032031034, 0.0023920649414429828, 0.0023836230774749783, 0.002375211005786447, 0.002366828621237113, 0.00235847581905775, 0.0023501524948488753, 0.0023418585445794432, 0.002333593864585545, 0.002325358351569115, 0.0023171519025966354, 0.0023089744150978538, 0.0023008257868645, 0.002292705916049007, 0.0022846147011632402, 0.0022765520410772274, 0.002268517835017896, 0.0022605119825678107, 0.0022525343836639245, 0.00224458493859632, 0.0022366635480069695, 0.0022287701128884904, 0.002220904534582908, 0.0022130667147804224, 0.002205256555518181, 0.0021974739591790514, 0.002189718828490404, 0.0021819910665228956, 0.0021742905766892564, 0.002166617262743084, 0.002158971028777641, 0.0021513517792246546, 0.0021437594188531243, 0.0021361938527681298, 0.0021286549864096447, 0.0021211427255513567, 0.002113656976299489, 0.002106197645091625, 0.002098764638695541, 0.0020913578642080396, 0.0020839772290537906, 0.0020766226409841717, 0.0020692940080761155, 0.0020619912387309625, 0.0020547142416733146, 0.0020474629259498948, 0.00204023720092841, 0.002033036976296419, 0.002025862162060203, 0.0020187126685436425, 0.0020115884063870923, 0.0020044892865462697, 0.001997415220291138, 0.001997415220291138], "type": "scatter", "zaxis": null, "z": null}], "config": {"showlegend": true, "xaxis": {"showticklabels": true, "gridwidth": 0.5, "range": [-1.970000000000006, 102.97], "domain": [0.09545056867891513, 0.9934383202099738], "mirror": false, "tickangle": 0, "showline": true, "zeroline": false, "tickfont": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 11}, "zerolinecolor": "rgba(0, 0, 0, 1)", "anchor": "y", "visible": true, "ticks": "inside", "tickmode": "array", "linecolor": "rgba(0, 0, 0, 1)", "showgrid": true, "title": {"text": "", "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 15}}, "gridcolor": "rgba(0, 0, 0, 0.1)", "tickcolor": "rgb(0, 0, 0)", "type": "linear"}, "paper_bgcolor": "rgba(255, 255, 255, 1.000)", "annotations": [], "height": 500, "margin": {"l": 0, "b": 20, "r": 0, "t": 20}, "plot_bgcolor": "rgba(255, 255, 255, 1.000)", "yaxis": {"showticklabels": true, "gridwidth": 0.5, "range": [0.0019723036632944297, 0.0028595786771781137], "domain": [0.03762029746281716, 0.9901574803149606], "mirror": false, "tickangle": 0, "showline": true, "zeroline": false, "tickfont": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 11}, "zerolinecolor": "rgba(0, 0, 0, 1)", "anchor": "x", "visible": true, "ticks": "inside", "tickmode": "array", "linecolor": "rgba(0, 0, 0, 1)", "showgrid": true, "title": {"text": "", "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 15}}, "gridcolor": "rgba(0, 0, 0, 0.1)", "tickcolor": "rgb(0, 0, 0)", "type": "linear"}, "legend": {"yanchor": "auto", "xanchor": "auto", "bordercolor": "rgba(0, 0, 0, 1)", "bgcolor": "rgba(255, 255, 255, 1.000)", "borderwidth": 1, "tracegroupgap": 0, "y": 1, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 11}, "title": {"font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 15}, "text": ""}, "traceorder": "normal", "x": 1}, "width": 1098.109375}}
{"id": "5524e6c9-7e82-484c-bcec-c0f6bc50bcc8", "data": [{"xaxis": "x", "colorbar": {"title": {"text": ""}}, "yaxis": "y", "x": [1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 100], "showlegend": true, "mode": "lines", "name": "y1", "zmin": null, "legendgroup": "y1", "zmax": null, "line": {"color": "rgba(0, 154, 250, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [320.01802610464284, 320.01802610464284, 320.0177480346657, 320.00036079266476, 319.9670516198617, 319.91899630625306, 319.8573555651587, 319.78327152528965, 319.6978643277066, 319.60222888492893, 319.4974318104426, 319.38450853654064, 319.26446061477003, 319.13825331406343, 319.0068133529176, 318.8710269766631, 318.7317382581273, 318.589747662141, 318.44581086679636, 318.3006379077715, 318.15489254016535, 318.0091918999511, 317.86410638586125, 317.7201598729823, 317.57783009099063, 317.43754926307724, 317.2997050295461, 317.164641434822, 317.03266027575756, 316.90402249403695, 316.7789497773836, 316.65762635061753, 316.540200783186, 316.42678795029167, 316.3174710958065, 316.21230392163426, 316.11131273858155, 316.0144986202486, 315.9218395482356, 315.8332926325307, 315.7487961985169, 315.6682718670532, 315.5916266575966, 315.5187548825849, 315.449540097915, 315.38385691262334, 315.3215727195957, 315.2625492733864, 315.2066442985431, 315.15371284011724, 315.10360860053214, 315.05618512700414, 315.0112969136831, 314.96880035577476, 314.9285546345439, 314.8904224453754, 314.8542707004557, 314.8199710344414, 314.78740027644943, 314.75644084919816, 314.7269810195129, 314.69891513999437, 314.6721437533347, 314.6465737272846, 314.6221182051735, 314.59869664238835, 314.57623469266645, 314.5546641291021, 314.53392268966735, 314.51395392656957, 314.49470700875423, 314.47613655274836, 314.45820239304317, 314.4408693797923, 314.42410718273004, 314.4078900361272, 314.39219657257553, 314.3770095839528, 314.3623158574715, 314.34810595377854, 314.3343740444221, 314.32111773398447, 314.308337934538, 314.2960386453316, 314.28422689872417, 314.2729125846054, 314.262108354741, 314.2518295101715, 314.24209390042114, 314.2329218792792, 314.2243361902721, 314.21636189262676, 314.20902635984174, 314.20235916450827, 314.1963920664224, 314.1911589835472, 314.18669594414115, 314.18304106081445, 314.18023451034895, 314.1783185233443, 314.17733738279446, 314.17733738279446], "type": "scatter", "zaxis": null, "z": null}], "config": {"showlegend": true, "xaxis": {"showticklabels": true, "gridwidth": 0.5, "range": [-1.970000000000006, 102.97], "domain": [0.05100612423447069, 0.9934383202099737], "mirror": false, "tickangle": 0, "showline": true, "zeroline": false, "tickfont": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 11}, "zerolinecolor": "rgba(0, 0, 0, 1)", "anchor": "y", "visible": true, "ticks": "inside", "tickmode": "array", "linecolor": "rgba(0, 0, 0, 1)", "showgrid": true, "title": {"text": "", "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 15}}, "gridcolor": "rgba(0, 0, 0, 0.1)", "tickcolor": "rgb(0, 0, 0)", "type": "linear"}, "paper_bgcolor": "rgba(255, 255, 255, 1.000)", "annotations": [], "height": 500, "margin": {"l": 0, "b": 20, "r": 0, "t": 20}, "plot_bgcolor": "rgba(255, 255, 255, 1.000)", "yaxis": {"showticklabels": true, "gridwidth": 0.5, "range": [314.00211672113903, 320.19324676629833], "domain": [0.03762029746281716, 0.9901574803149606], "mirror": false, "tickangle": 0, "showline": true, "zeroline": false, "tickfont": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 11}, "zerolinecolor": "rgba(0, 0, 0, 1)", "anchor": "x", "visible": true, "ticks": "inside", "tickmode": "array", "linecolor": "rgba(0, 0, 0, 1)", "showgrid": true, "title": {"text": "", "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 15}}, "gridcolor": "rgba(0, 0, 0, 0.1)", "tickcolor": "rgb(0, 0, 0)", "type": "linear"}, "legend": {"yanchor": "auto", "xanchor": "auto", "bordercolor": "rgba(0, 0, 0, 1)", "bgcolor": "rgba(255, 255, 255, 1.000)", "borderwidth": 1, "tracegroupgap": 0, "y": 1, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 11}, "title": {"font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 15}, "text": ""}, "traceorder": "normal", "x": 1}, "width": 1098.109375}}