Язык Wolfram Language

Визуализация объёма

Визуализация данных об урагане

Простая модель вихревого поля задана комбинированием вращения тела вокруг стержня и уменьшения угловой скорости снаружи.

код на языке Wolfram Language целиком
In[1]:=
Click for copyable input
w = 6; rcore = 3; a = 1; g = 9.82; rho = 1; Subscript[rho, 0] = 1;
In[2]:=
Click for copyable input
wind[r_, z_] := If[r <= rcore, w r, (w a^2)/r];

Формула для нахождения давления задаёт следующую формулу через радиус и вертикальную проекцию.

In[3]:=
Click for copyable input
pressure[r_, z_] := If[r < rcore, 1/2 rho w^2 r^2 - rho g z + Subscript[rho, 0], -((rho w^2 rcore^4)/(2 r^2)) - rho g z + rho w^2 rcore^2 + Subscript[rho, 0]];

Графически изобразите самые быстрые системы скорости ветра за пределами центра.

In[4]:=
Click for copyable input
SliceContourPlot3D[ wind[Sqrt[x^2 + y^2], z], {x^2 + y^2 == 3 z, x^2 + y^2 == 6 z, x^2 + y^2 == 1 z}, {x, -5, 5}, {y, -5, 5}, {z, 1, 5}, Contours -> 20, RegionFunction -> Function[{x, y, z}, x < 0 || y > 0], PlotTheme -> "NoAxes", PlotLegends -> Automatic, PlotLabel -> "Wind Strength", ImageSize -> 400]
Out[4]=

Графически изобразите направления ветра в виде векторного поля.

In[5]:=
Click for copyable input
SliceVectorPlot3D[{(wind[Sqrt[x^2 + y^2], z] y)/ Norm[{x, y}], (-wind[Sqrt[x^2 + y^2], z] x)/Norm[{x, y}], 0}, {x^2 + y^2 == z, x^2 + y^2 == 3 z, x^2 + y^2 == 6 z}, {x, -5, 5}, {y, -5, 5}, {z, 1, 5}, ImageSize -> 400, PlotLegends -> None, VectorStyle -> "Arrow3D", VectorScale -> {Medium, 0.5, Automatic}, VectorPoints -> 8, RegionFunction -> Function[{x, y, z}, x < 0 || y > 0], PlotTheme -> "NoAxes", PlotLabel -> "Wind Direction"]
Out[5]=

Графически изобразите давление как трёхмерную плотность. Обратите внимание на относительно более низкое давление в центре системы.

In[6]:=
Click for copyable input
DensityPlot3D[ pressure[Sqrt[x^2 + y^2], z], {x, -5, 5}, {y, -5, 5}, {z, 1, 5}, ImageSize -> 400, PlotLegends -> Automatic, PlotTheme -> "NoAxes", RegionFunction -> Function[{x, y, z}, (x^2 + y^2 <= 6 z) && (x < 0 || y > 0)], PlotLabel -> "Air Pressure", OpacityFunction -> Function[f, f/5 + 0.1]]
Out[6]=

Родственные примеры

de en es fr ja ko pt-br zh