유한 체적 방법을 사용할 때 경계 조건을 어떻게 적용해야합니까?


16

이전 질문에 이어이 비 균일 유한 체적 메쉬에 경계 조건을 적용하려고합니다.

왼쪽 경계에는 고스트 셀이 포함됩니다.

도메인의 lhs ( Robin 유형 경계 조건을 적용하고 싶습니다 x=xL).

σL=(dux+au)|x=xL

여기서 σL 은 경계 값이며; a,d 는 경계, 이류 및 확산에 각각 정의 된 계수이고; 는 경계에서 평가 된uux=ux의 도함수이고u는 우리가 풀고있는 변수입니다.uu

가능한 접근법

위의 유한 볼륨 메쉬에서이 경계 조건을 구현하는 두 가지 방법을 생각할 수 있습니다.

  1. 귀신 세포 접근.

    고스트 셀을 포함하여 유한 차분으로 ux 를 씁니다 .

    σL=du1u0h+au(xL)

    A. 그런 다음 점 x 0으로 선형 보간 을 사용하십시오.x0 로 하여 중간 값 u ( x L ) 를 찾으십시오 .x1u(xL)

    B. 또는 u ( x L 찾기) 셀 평균화하여, U ( 엑스 L ) = 1u(xL)u(xL)=12(u0+u1)

    어느 경우 든, 고스트 셀에 대한 의존성은 일반적인 방식으로 제거 될 수있다 (유한 체적 방정식으로의 대체를 통해).

  2. 외삽 법.

    x 1 , x 2 ( x 3 ) 의 값을 사용하여 선형 (또는 2 차) 함수를 에 맞 춥니 다 . 이것은 u ( x L ) 의 값을 제공합니다 . 그런 다음 선형 (또는 2 차) 함수를 미분하여 미분 값에 대한 식을 찾습니다.u(x)x1,x2x3u(xL)경계에서 u x ( x L )에. 이 방법은고스트 셀을 사용하지않습니다.ux(xL)

질문

  • 세 가지 중 (1A, 1B 또는 2) 중 어떤 접근 방식이 "표준"입니까 아니면 권장합니까?
  • 가장 작은 오류가 발생하거나 가장 안정적인 방법은 무엇입니까?
  • 고스트 셀 접근 방식을 직접 구현할 수 있다고 생각하지만 외삽 방법을 어떻게 구현할 수 있습니까?이 접근 방식에는 이름이 있습니까?
  • 선형 함수 또는 2 차 방정식을 피팅 할 때 안정성 차이가 있습니까?

특정 방정식

이 경계를 비선형 소스 항을 사용하여 (보존 형식으로) 전파 확산 방정식에 적용하고 싶습니다.

ut=aux+duxx+s(x,u,t)

방법을 사용하여 위의 메쉬에서이 방정식을 분리하면θ

wjn+1θrawj1n+1θrbwjn+1θrcwj+1n+1=wjn+(1θ)rawj1n+(1θ)rbwjn+(1θ)rcwj+1n+s(xj,tn)

그러나 경계점 ( )의 경우 복잡성을 줄이기 위해 완전히 암시 적 체계 ( θ = 1 )를 사용하는 것이 좋습니다.j=1θ=1

w1n+1raw0n+1rbw1n+1rcw2n+1=w1n+s1n

고스트 포인트 을 확인하십시오. 경계 조건을 적용하면 제거됩니다.w0n+1

계수에는 다음과 같은 정의가 있습니다.

ra=Δthj(ahj2h+dh)

rb=Δthj(a2[hj1hhj+1h+]+d[1h1h+])

rc=Δthj(ahj2h++dh+)

모든 " "변수는 위의 다이어그램과 같이 정의됩니다. 마지막으로, Δ의 t 시간 단계 ( NB는 이것은이다 간략화 상수 경우 및 D 계수 실제로, " R "계수들은 약간 더 이러한 이유로 복잡하다).hΔtadr


1
유한 체적 방법에 관한 LeVeque의 최근 저서에서는 구현이 간단하기 때문에 고스트 셀을 옹호하지만 오류 용어에 대한 논의는 기억 나지 않습니다.
Geoff Oxberry

풀고 자하는 방정식을 내려 놓을 수 있습니까? 갈 길도 문제에 달려 있습니다. 예를 들어, 'Neumann'부분으로 인해 경계 조건이 이산 공식에서 자연스럽게 해결되는 것과 유사 할 수 있습니다.
1 월

@GeoffOxberry 제안 해 주셔서 감사합니다. 고스트 셀을 사용하여 기쁘게 생각합니다. 그런 식으로 구현하려고합니다.
boyfarrell 2016 년

@Jan I initially avoided putting the equations down because of the complexity due to the non-uniform mesh discretisation, but I just updated the question with these details. This is an advection-diffusion problem. I'm not too sure what you mean by "naturally resolved".
boyfarrell

0hdx(au+dux)dx=(au+dux)|x=h1(au+dux)|x=0=s . If you have a value for ux on the boundary, there is no need to discretize it.
Jan

답변:


9

This is rather a general remark on FVM than an answer to the concrete questions. And the message is that there shouldn't be the need for such an adhoc discretization of the boundary conditions.

Unlike in FE- or FD-methods, where the starting point is a discrete ansatz for the solution, the FVM approach leaves the solution untouched (at first) but averages on a segmentation of the domain. The discretization of the solution comes into play only when the obtained system of balance equations is turned into an algebraic equation system by approximating the fluxes across the interfaces.

In this sense, in view of the boundary conditions, I advise to stick to the continuous form of the solution as long as possible and to introduce the discrete approximations only at the very end.

Say, the equation

ut=aux+duxx+s(x,u,t)
holds on the entire domain. Then it holds on the subdomain [0,h1), and an integration in space gives
0h1utdx=0h1x(au+dux)dx+0h1s(x,u,t)dx=(au+dux)|x=h1(au+dux)|x=0+0h1s(x,u,t)dx,
which is the contribution of the first cell to the equation system. Note that, apart from taking only averages, there has been no discretization of u.

But now, to turn this into an algebraic equation, one typically assumes that on cell Ci the function u is constant in space, i.e. u(t,x)|Ci=ui(t). Thus, having associated u(xi)ui, one can express ux|hi at the cell boarders via the difference quotient in ui and ui+1. To express u at the cell boarders one can use interpolation (i.e. central differences or upwind schemes).

What to do at the boundary? In the example, it is all about approximating (au+dux)|x=0, no matter what has been done to u so far.

  • Given u|x=0=gD one can introduce a ghost cell and the condition that an interpolant between u0 and u1 is equal to gD at the boarder.

  • Given ux|x=0=gN one can introduce a ghost cell and the condition that an approximation to the derivative between u0 and u1 matches gN at the boarder

  • If the flux itself is prescribed: (au+dux)|x=0=gR, there is no need for a discretization.

However, I am not sure, what to do in the case that there are Robin type bc's that do not match the flux directly. This, will need some regularization because of the discontinuity of the advection and diffusion parameters.


===> Some personal thoughts on FVM <===

  • FVM is not a scaled FDM, as examples of 1D Poisson's equations on a regular grid often suggest
  • There shouldn't be a grid in FVM, there should be cells with interfaces and, if necessary, centers
  • That's why I think that a stencil formulation of the discretization is not suitable
  • Assembling of the equation system should be done according to the discretization approach, i.e. by iterating over the cells rather than defining an equation for every unknown. I mean to think of the i-th row of the coefficient matrix as the part of the problem posed on cell Ωi, rather than of the equation that is associated with ui.
  • This is particularly important for 2D or 3D problems but may also help to have a clear notation in 1D: Make a difference between the volume (in 1D: length) of the cell, here hi, and the distance between the centers, maybe in 1D: di:=di,i+1=|xixi+1|.


Thanks for your guidance while I was learning about this method. Maybe I can share my thoughts too. I agree it is best to say with the FVM form for as long as possible; particularly for the boundary conditions as you have shown! But I think it is very helpful when implementing to write the equation in matrix form; it is a precise and clear notation. Also, the stability and other numerical properties crucially depend on how the problem is discretised (for FVM this means how the fluxes an the cell faces are approximated). In that respect I prefer a matrix equations, to iteration over cells.
boyfarrell

Maybe my last point was ambiguous. In the end, you will have a coefficient matrix and a variable vector. I will edit my post. I was more about interpreting than actually doing.
Jan

Fantastic, I understand your point. Thanks.
boyfarrell
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.