0

웨이브가 전파 될 수있는 공간 영역을 이산 적으로 모델링하기 위해 배열을 사용하여 wave equation 시뮬레이션을 구현합니다. 현재 파도는 공간 영역의 경계를 반사합니다. 그러나 파도가 영원히 전파되는 것처럼 보이도록이 반사를 제거하고 싶습니다.웨이브 방정식 시뮬레이션을위한 무반사 경계

무 반사/흡수 경계 조건 (예 : 완벽하게 일치하는 레이어)을 논의하는 학술 논문이 많이 있지만 대부분은 분석 솔루션에 초점을 맞추고있는 것으로 알고 있습니다. 시뮬레이션에서 비 반사 경계를 수치로 구현하는 방법을 이해할 수 없습니다. d2f_dx2이고, d2f_dt2 시간에 대한 상기 필드의 제 2 부분 유도체, df_dt는 시간에 대한 필드의 편미분이다 f 필드가

for (var i = 1; i < width - 1; ++i) { 
    for (var j = 1; j < height - 1; ++j) { 
     var d2f_dx2 = f[i + 1][j] - f[i][j] * 2 + f[i - 1][j]; 
     var d2f_dy2 = f[i][j + 1] - f[i][j] * 2 + f[i][j - 1]; 
     var d2f_dt2 = c2[i][j] * (d2f_dx2 + d2f_dy2); 
     df_dt[i][j] += d2f_dt2; 
    } 
} 
for (var i = 1; i < width - 1; ++i) { 
    for (var j = 1; j < height - 1; ++j) { 
     f[i][j] += df_dt[i][j]; 
    } 
} 

: 이것은 I가 쓰고 코드 x 방향의 필드의 두 번째 부분 미분과 d2f_dy2은 y 방향의 필드의 두 번째 부분 미분입니다.

아무도이 코드를 무 반사 경계로 조정하는 방법을 알고 있습니까?

+1

위의 코드는 df/dt, dx/dt 또는 dy/dt에 대한 계수 matricies가 점근 적 또는 감쇠되지 않는 한 제거하려고하는 (x, y) 경계 제약 조건을 보여 준다고 생각하지 않습니다. 보시다시피, 위의 코드에서 웨이브 속도 또는 가속도 방향의 반전을 초래할 수있는 어려운 경계를 볼 수 없습니다. 사용하고있는 웨이브 방정식의 관련 부분을 게시 할 수 있습니까 (예, 위키를 보았습니다.하지만 가능한 경계 조건이 많아 코드가 구체적이지 않습니다). 또한 f (x)와 f (y)의 변곡점 주변에 몇 줄의 출력을 게시 할 수 있습니까? –

+0

내가 분명히하자.당신은'f [i + 1] [j] -f [i] [j] * 2 + f [i-1] [j];'x 가속도와'f [i] [j + i] [j] * 2 + f [i] [j-1];'for y. 당신의 조건을보십시오. x의 경우,''(f [i] [j] * 2)> (f [i + 1] [j] + f [i - 1] [j]))' 가속. y에 대해,'((f [i] [j] * 2)> (f [i] [j + 1] + f [i] [j - 1]))'이면 반전을 취합니다. 방정식에'f [i] [j] * 2''가 포함되어 있는지 확인해야합니다. 이것이 모든 계수가 양수이면 반사를 유발할 유일한 용어입니다. –

답변

0

몇 25 년 된 거미줄을 지운 후에 문제에 대한 해결책은 다음 초기 조건과 조건을 무한대로 만족시키는 방정식을 설정하는 것에 따라 달라집니다. 초기 및 무한 경계 조건을 부분 미분으로 변환 한 다음 코드로 변환하는 것은 오랜 시간이 걸렸지 만 적용 할 올바른 경계 조건을 알고 있으면 생성하려고하는 수치 모델을 제공 할 것입니다. 잘하면이 도움이됩니다.

감쇠가없는 비 반사 조건에 대해 모델링하려는 경계 값 문제는 마지막 단락 아래 사이트 인 위키 백과 문서 The_Sturm-Liouville_formulation에 설명되어 있습니다. The_Sturm-Liouville 공식 자체는 적절한 모델을 제공하지 않을 수 있지만 표제의 마지막 단락에서으로 언급 된 경계 조건은 만족해야하는 경계 조건입니다. 파생은 단일 차원으로 설명되지만 기사에서 언급했듯이 1 차원 문제에 대한 수치 해는 여러 차원으로 확장 될 수 있습니다. 비 감쇠 무한 전파

boundary value at t=0 == value at t=infinity after X whole periods, where 
y = Asin(Bx - C) + D or y = Acos(Bx - C) + D. 
f(x)t위한

용액과 f(y)t위한

경계 조건 파도가 무한대로 증식 정기 trigonomic 기능 할 것이다. 그것에 대해 생각하면 조건은 분명합니다. 어느 시점에서든 설명하고자하는 웨이브는 사인파, 코사인 등으로 모델링 될 감쇠가없는주기적인 고조파입니다. 어떤 시점에서든 웨이브 설명의 유일한 차이는 진폭과 위상입니다. 그것은 정상적인주기를 순환합니다. 삼각 함수가 초기 상태를 만족시키는 지의 정체는 위상 각 및 시간 t = 0에서의 이동에 따라 달라집니다. 시간이 무한대에 가까워지면 경계 조건은 전체 기간이 완료된 후 동일한 함수가됩니다.

+0

잘 이해하고 있는지 잘 모르겠습니다. 내가 물어 보려고하는 질문은 공간 영역의 경계 (예 : i == 0 또는 j == 0 또는 i == width - 1 또는 j == height - 시뮬레이션의 경계에서 파도가 반사되지 않도록 필드 및 파생 값의 값을 포함하여 (그림 1). – user76284

+0

나는 네가 머리를 감쌀 수있는 문제를 좋아한다. 짧은 대답 : i, j == 0 + 1 또는 i, j == (너비 -2, 높이 -2)와 다른 점은 없습니다. 그것은 사실주의적인 의도가 아닙니다. 시간 t = 0에서 웨이브 상태가됩니다. 상태는 임의로 선택한 t = 0에서 i, j = 0에 도달 한 파의 연속이거나 새 교란의 결과 인 새 파도가됩니다. 그럼에도 불구하고 단순히 그 웨이브의 전파를 모델링하고 싶다면 웨이브에 대한 전파 벡터는 모든 i, j에 대한 사인/코사인 웨이브로 일정하고 변하지 않습니다. –

+0

그래서 기본적으로 t = 0에서 t = INF까지 모델링 할 sinusoid가 있습니다. 웨이브 시뮬레이션의 목적을위한 모든 일반적인 경계 상호 작용은 계산에 포함되지 않을 것입니다. 모든 웨이브 상태를 설명하기를 원할 것입니다. i, j = 너비, 높이를 포함하여 특정 시점. 관찰자 자신을 i, j = 너비, 높이, 당신이 볼 수있는 것은 단지 물결 치는 물결과 물결에 뒤 따르는 새로운 물결 일 것입니다. 그 점에서 i, j는 x가 너비에 고정되고 y가 파주기의 정상적인 진폭 사이클 인 사인 또는 코사인을 볼 수 있습니다. –