웨이브가 전파 될 수있는 공간 영역을 이산 적으로 모델링하기 위해 배열을 사용하여 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 방향의 필드의 두 번째 부분 미분입니다.
아무도이 코드를 무 반사 경계로 조정하는 방법을 알고 있습니까?
위의 코드는 df/dt, dx/dt 또는 dy/dt에 대한 계수 matricies가 점근 적 또는 감쇠되지 않는 한 제거하려고하는 (x, y) 경계 제약 조건을 보여 준다고 생각하지 않습니다. 보시다시피, 위의 코드에서 웨이브 속도 또는 가속도 방향의 반전을 초래할 수있는 어려운 경계를 볼 수 없습니다. 사용하고있는 웨이브 방정식의 관련 부분을 게시 할 수 있습니까 (예, 위키를 보았습니다.하지만 가능한 경계 조건이 많아 코드가 구체적이지 않습니다). 또한 f (x)와 f (y)의 변곡점 주변에 몇 줄의 출력을 게시 할 수 있습니까? –
내가 분명히하자.당신은'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''가 포함되어 있는지 확인해야합니다. 이것이 모든 계수가 양수이면 반사를 유발할 유일한 용어입니다. –