Decomposição 2D Helmholtz-Hodge discreta rápida e simples usando FFTs?

8

Para um protetor de tela bobo que estou tentando desenvolver, gostaria de gerar aleatoriamente uma matriz 2D livre de divergência de vetores 2D e usá-la para gerar um gráfico de convolução integral de linha. Ouvi que uma maneira de fazer isso é gerar ruído aleatório e depois projetar o componente solenoidal de sua decomposição Helmholtz-Hodge. Para fazer isso, tentei usar o seguinte raciocínio:1

Uma função possui decomposição de Helmholtz-Hodge onde e onde são funções escalares. Por enquanto, assuma que o componente harmônico desapareça.2 f = h + φ + J ψ J = ( 0 - 1 1 0 ) φ , ψ hf:R2R22

f=h+ϕ+Jψ
J=(0 0-110 0)
ϕ,ψh

No espaço de Fourier, isso se torna e podemos definir uma projeção solenoidal operador no espaço de Fourier como que projeta uma função em seu componente solenoidal, via P = I - kk

Ff=-Eukϕ^-EuJkψ^
F-1PFf=Jψ.
P=Eu-kkkk
F-1PFf=Jψ.

Tentei implementar isso no Mathematica, aplicando-o a uma matriz aleatória . Primeiro, giro a matriz aleatória e aplico a FFT a cada um de seus dois componentes:21×21×2

arr = RandomReal[{-1, 1}, {2, 21, 21}];
fArr = Fourier /@ arr;

Em seguida, defino como uma função do índice da matriz:k

k[k1_, k2_] := Mod[{k1 - 1, k2 - 1}, 21, -10]/21;

Em seguida, realizo a projeção nos componentes de Fourier (a singularidade em é deixada sozinha usando uma instrução):k=0 0If

dat = Transpose[
   Table[If[k1 == 1 && k2 == 1, fArr[[;; , k1, k2]], 
     fArr[[;; , k1, k2]] - 
      k[k1, k2] (k[k1, k2].fArr[[;; , k1, k2]])/(k[k1, k2].k[k1, 
           k2])], {k1, 21}, {k2, 21}], {2, 3, 1}];

Então euFFFF os dois componentes:

projArr = InverseFourier /@ dat;

Isso fornece uma matriz puramente real, e eu esperaria ingenuamente que o resultado fosse uma aproximação de . Minha pergunta é:Jψ

  • Em que sentido o resultado se aproxima de ?Jψ

Supostamente, a decomposição de dados 2D de Helmholtz-Hodge é uma tarefa não trivial, pois a rotina HH_DECOMP de Chris Beaumont deve usar FFTs para executar a decomposição de Helmholtz-Hodge, mas ele também diz (nos comentários na parte superior do código) que o método parece impreciso. Da mesma forma, existem métodos variacionais mais complicados para realizar decomposições de Helmholtz-Hodge dos dados 2D, o que parece sugerir que o método FFT mais simples é de alguma forma inadequado. Por quê? O que o método FFT está errado? E é errado assumir que o componente harmônico desaparece para o meu ruído aleatório?3

(1): Fluidos Estáveis , Jos Stam.

(2): Detecção de recursos em campos vetoriais usando a decomposição de Helmholtz-Hodge , Alexander Wiebel, página 12.

(3): Decomposição discreta de campos vetoriais em múltiplas escalas, Yiying Tong.

DumpsterDoofus
fonte
ψf=Jψ

Respostas:

5

ψ

você=ψyumandv=-ψx

ψ

Bill Barth
fonte
JψψF-1euPFfeuf2Jk^N1N2porque(2πkr+τ)
4

Você fez várias perguntas em sua postagem; portanto, embora Bill tenha fornecido uma solução para o problema subjacente, acho que alguém deveria dizer algumas coisas sobre suas perguntas também.

Jψ

f=h+ϕ+Jψh+Jψ

fh

A rotina HH_DECOMP de Chris Beaumont deve usar FFTs para executar a decomposição de Helmholtz-Hodge, mas ele também diz (nos comentários na parte superior do código) que o método parece impreciso.

Não tenho certeza do que está acontecendo lá porque não consigo ler IDL, mas parece que os campos do vetor de teste não são periódicos?

Da mesma forma, existem métodos variacionais mais complicados para realizar decomposições de Helmholtz-Hodge de dados 2D, o que parece sugerir que o método FFT mais simples é de alguma forma inadequado. Por quê?

Eu acho que você está se preocupando demais. Na segunda página do artigo que você cita, eles declaram: "A decomposição discreta de Helmholtz-Hodge em grades regulares já foi usada em gráficos (ver [25, 10] por exemplo)] e é relativamente simples de implementar com uma abordagem de diferenças finitas No entanto, é muito mais difícil projetar um método prático e preciso para grades arbitrárias ".

O que o método FFT está errado?

Se você tiver condições de contorno periódicas, nada. De fato, nessas condições, métodos espectrais como este fornecem convergência exponencial em comparação com a convergência polinomial de métodos de diferenças finitas. Eles são mais difíceis de aplicar a geometrias arbitrárias.

E é errado assumir que o componente harmônico desaparece para o meu ruído aleatório?

Tecnicamente, sim, mas no caso periódico, o único campo vetorial harmônico possível é uma constante. Então você está indo bem, deixando o componente DC sozinho.


fonte