Ondas no Grande Lago Salgado
Usando ImageMesh, você pode converter segmentos de imagens em objetos de BoundaryMeshRegion. Estas regiões de malha permitem que você utilize funções em outras áreas, tais como métodos de elementos finitos (FEM).
Para ilustrar esta conexão FEM, determine os principais modos de ondas de superfície no Grande Lago Salgado, em Utah.
img = EntityValue[Entity["Lake", "GreatSaltLake::yw8cf"], "Image"]
Regularize a imagem com um filtro de deslocamento médio.
img2 = MeanShiftFilter[img, 3, 0.1]
Obtenha uma segmentação através do crescimento de uma região.
mask = RegionBinarize[img2, \!\(\*
GraphicsBox[
TagBox[RasterBox[CompressedData["
1:eJzt1jEKwkAQQNFdK0uv4C1sLW0VD6AYxSZCFMRzCJ7XiF3SzFb7lf8ggUCK
D8MmM99f1sdJSuk67W/r3X3ZdbvHZtY/bNvr+dQ2h1V7a05Nt9h/Xnv21ytJ
kiRJkiRJkn5H7tVuGLMqzqo4q+KsiuNW8bKsimNWfbNwXVbF5Yzuqp0xZFUB
dBaui5kF/T5AsxJ1jNAsq0qgs3BlOSPDMrMLmvUBDcNnsbqov2x4FrWrdscA
NIu6SjCzoEOEZlGniF5Ta0eMmVXCqjjmCJlV5KzaDWNWxXGreFnMKvAIazeM
MUfIXEmtKsCs8hSWsCrOqjhmlSRJkiRJkvS/3tRrD1M=
"], {{0, 147}, {150,
0}}, {0, 1},
ColorFunction->GrayLevel],
BoxForm`ImageTag["Bit", ColorSpace -> Automatic, Interleaving -> None],
Selectable->False],
DefaultBaseStyle->"ImageGraphics",
ImageSizeRaw->{150, 147},
PlotRange->{{0, 150}, {0, 147}}]\), 1/5]
Extraia um objeto de BoundaryMeshRegion da superfície do lago.
\[ScriptCapitalR] = ImageMesh[mask]
Crie uma malha da superfície do lago.
\[CapitalOmega] =
TriangulateMesh[\[ScriptCapitalR], MaxCellMeasure -> 8]
Resolva a equação de onda da superfície do lago, determinando primeiro as funções próprias do laplaciano dentro da região do lago.
\[ScriptCapitalL] = -\!\(
\*SubsuperscriptBox[\(\[Del]\), \({x, y}\), \(2\)]\(\[CurlyPhi][x,
y]\)\);
Usando condição de contorno.
\[ScriptCapitalB] = DirichletCondition[\[CurlyPhi][x, y] == 0, True];
Gere uma base ortonormal de funções próprias Φ com valores próprios Λ.
{\[CapitalLambda], \[CapitalPhi]} =
NDEigensystem[{\[ScriptCapitalL], \[ScriptCapitalB]}, \[CurlyPhi][x,
y], {x, y} \[Element] \[CapitalOmega], 64];
Mostre os primeiros seis modos de oscilações.
GraphicsGrid[
Partition[
Table[ContourPlot[\[CapitalPhi][[
k]], {x, y} \[Element] \[CapitalOmega], PlotRange -> All,
PlotLabel -> \[CapitalLambda][[k]], PlotTheme -> "Minimal"], {k,
6}],
3
],
ImageSize -> 512
]
A evolução temporal dos modos de oscilação descendente é dada conforme a seguir.
\[CapitalTheta][\[Lambda]_, \[Xi]_, t_] = FullSimplify[
DSolveValue[Join[{ \!\(
\*SubscriptBox[\(\[PartialD]\), \(t,
t\)]\(\(TraditionalForm\`\[CurlyTheta]\)[
t]\)\) + \[Xi] \!\(
\*SubscriptBox[\(\[PartialD]\), \(t\)]\(\(TraditionalForm\`\
\[CurlyTheta]\)[
t]\)\) == -\[Lambda] \!\(TraditionalForm\`\[CurlyTheta]\)[
t] }, {\!\(TraditionalForm\`\[CurlyTheta]\)[0] ==
1, \[CurlyTheta]'[0] ==
0} ], \!\(TraditionalForm\`\[CurlyTheta]\)[t], t],
{\[Lambda] > 0, \[Xi] > 0, \[Xi]^2 < 4 \[Lambda], t \[Element] Reals}
]
Expandindo uma perturbação inicial em funções próprias e deixando que estas evoluam no tempo, uma simulação da propagação de ondas em frente ao lago é obtida.