태그 보관물: advection-diffusion

advection-diffusion

Newton-Raphson 이외의 비선형 전파 확산 시스템을 해결하는 방법? 솔버를 작성할 수 있었고 블록 질량 행렬을

나는 각각의 소스 용어를 통해 두 개의 adv-diff 결합 도메인을 가지고있는 프로젝트를 진행하고 있습니다 (하나의 도메인은 질량을 더하고 다른 하나는 질량을 뺍니다). 간결하게하기 위해, 나는 그것들을 꾸준한 상태로 모델링하고 있습니다. 방정식은 소스 용어가 다음과 같은 표준 advection-diffusion transport 방정식입니다.

∂씨1∂티=0=에프1+큐1(씨1,씨2)∂씨2∂티=0=에프2+큐2(씨1,씨2)

여기서 는 종 대한 확산 및 진행 플럭스 이고 는 종 의 소스 용어입니다 .

에프나는

나는

큐나는

나는

나는 Newton-Raphson 방법을 사용하여 내 문제에 대한 솔버를 작성할 수 있었고 블록 질량 행렬을 사용하여 두 도메인을 완전히 결합했습니다.

Fcoupled=[A100A2][c1,ic2,i]⏟xi−[b1(c1,i,c2,i)b2(c1,i,c2,i)]

라는 용어 는 Jacobian 행렬을 결정하고 과 모두 업데이트하는 데 사용됩니다 .

Fcoupled

c1

c2

J(xi)[xi+1−xi]=−Fcoupled

또는

xi+1=xi−(J(xi))−1Fcouple디

작업 속도를 높이기 위해 모든 반복마다 Jacobian을 계산하지 않습니다. 지금은 5 번 반복 할 때마다 제대로 작동하는 것처럼 보이며 솔루션을 안정적으로 유지합니다.

문제는 : 두 도메인이 모두 2D / 2.5D 인 더 큰 시스템으로 이동하고 Jacobian 행렬을 계산하면 사용 가능한 컴퓨터 리소스가 빨리 고갈 될 것입니다. 나중에 최적화 설정에 사용하기 위해이 모델을 작성 중이므로 감쇠 계수 등을 조정할 때마다 반복 할 때 휠 뒤에있을 수 없습니다.

내 문제에 대한보다 강력하고 알고리즘을 다른 곳에서 찾고 있습니까? 아니면 얻을 수있는만큼 좋습니까? Quasi-linearization에 대해 조금 살펴 보았지만 그것이 내 시스템에 어떻게 적용되는지 확실하지 않습니다.

Jacobian을 offen으로 다시 계산하지 않고 비선형 방정식 시스템을 해결할 수있는 다른 매끄러운 알고리즘이 있습니까?



답변

2D 및 3D의 제한이 Jacobian을 저장한다고 가정합니다.

한 가지 옵션은 시간 미분을 유지하고 명시적인 “의사”시간 스테핑을 사용하여 정상 상태로 반복하는 것입니다. 일반적으로 확산 및 반응 시스템에 필요한 CFL 수는 엄청나게 작아 질 수 있습니다. 비선형 멀티 그리드 (Full Approximation Storage 멀티 그리드라고도 함)와 로컬 타임 스텝핑을 사용하여 수렴 속도를 높일 수 있습니다.

다른 옵션은 지금하는 것처럼 완전히 암시적인 구성표를 사용하는 것이지만 글로벌 Jacobian은 저장하지 않습니다. 매트릭스없는 암시 적 체계를 사용할 수 있습니다.

DF(un)δun=−F(un)


(어디

D에프

는 Jacobres입니다) GMRES 및 BiCGStab과 같은 Krylov 부분 공간 솔버로 해결할 수 있습니다.

디에프(유엔)δ유≈에프(유엔+ϵδ유”δ유”)−에프(유엔)ϵ.


GMRES와 BiCGStab에는 LHS 매트릭스가 필요하지 않기 때문입니다.

제품 만 계산하면됩니다.

ㅏ엑스

벡터를 부여

엑스

.

이제 적절한 값으로

ϵ

(보통 약

10−7

배정 밀도 부동 소수점의 경우) Jacobian을 계산하거나 저장하지 않고도 Newton 루프를 실행할 수 있습니다. 나는이 기술이 계산 유체 역학에서 사소한 경우를 해결하는 데 사용된다는 사실을 알고 있습니다. 그러나 함수의 평가 횟수는

에프

행렬-벡터 곱을 요구하는 대신 행렬-저장 기술보다 더 많이 사용될 것입니다.

주의해야 할 또 다른 사항은 강력한 전제 조건이 필요한 시스템 (예 : Jacobi 또는 block-Jacobi로는 충분하지 않음) 인 경우 위에서 언급 한 방법을 멀티 그리드 체계에서 더 매끄럽게 사용하는 것이 좋습니다. 포인트 또는 블록 -Jacobi 전제 조건을 사용하려면 Jacobian의 대각선 요소 또는 대각선 블록 만 계산하고 저장할 수 있습니다. 또한 Gauss-Seidel 또는 SSOR 프리 컨디셔너가 Jacobian을 명시 적으로 저장하지 않고도 구현할 수 있다고 언급합니다. 이 논문 은 계산 유체 역학의 맥락에서 매트릭스없는 대칭 Gauss-Seidel로 사전 조정 된 매트릭스없는 GMRES의 구현을 설명합니다.


답변

Navier-Stokes 방정식에 대한 나의 경험을 통해 완전히 암시적인 체계 없이도 잘 할 수 있습니다.

시간 진화 솔루션에 대한 빠른 수치 체계를 원한다면 IMEX (암시 적-명시 적) 체계를 살펴보십시오. 예를 들어 시간 의존적 부분 미분 방정식에 대한 Ascher, Ruuth, Spiteri 암시 적 명시 적-쿠타 방법 의이 논문을 참조하십시오 .

단계 크기 제어 (예 : Matlab ‘s ODE45) 와 함께 명시 적 고차 시간 통합 체계를 사용하려고 할 수도 있습니다 . 그러나 확산 부분에서 비롯된 시스템의 강성으로 인해 문제가 발생할 수 있습니다. 운 좋게도 확산 부분은 선형이므로 IMEX 방식의 아이디어입니다.


답변

처음에는 말만 추가하는 것을 고려했지만 공간이 충분하지 않아서이 주제에 대한 경험에 대한 간단한 설명을 추가합니다.

먼저, 당신의 표기법을 찾고

에프씨영형유피엘이자형디

결합 된 형태가 보이지 않습니다.

비1

비2

둘 다에 의존해야한다

씨1,나는

씨2,나는

. 게다가

ㅏ1

ㅏ2

근사치의 행렬 표현

에프1

에프2

그런 다음에 만 의존해서는 안됩니다

씨나는

이웃 값에도 적용되지만 이는 표기법을 잘못 이해 한 것일 수 있습니다.

일반적인 의견으로는 분석 Jacobico를 사용하는 것이 비선형 반복 솔버 (즉, 귀하의 경우 Newton-Raphson 솔버)의 2 차 수렴을 얻는 유일한 방법 인 것 같습니다. 당신의 경우에 그것을 관찰 했습니까? 근사치 (선형화)에 약간의 오해가있을 수 있으므로 매우 중요합니다.

내가 사용한 모든 응용 프로그램에서 (일부 대규모 계산 포함) 우리는 Jacobian을 조립하는 데 시간이 걸리지 않았으며 가장 시간이 많이 걸리는 문제는 항상 선형 솔버를 적용하는 것이 었습니다. 분석 Jacobian (사용 가능한 경우)은 항상 2 차 수렴으로 인해 선호하는 선택을 위해 노력하고있는 응용 프로그램에서 사용되었습니다. 이러한 비선형 솔버는 반복 선형 솔버의 수렴에 문제를 일으키는 매트릭스를 생성하는 경우가 거의 없으므로, 분석 자 코비안보다 간단한 선형화를 사용하여 선형 솔버를 지원하려고했습니다. 비선형 대수 시스템의 선형화에 따른 비선형 대수 솔버와 선형 대수 솔버의 동작 사이의 상충 관계는 항상 까다 로웠으며 일반적인 권장 사항을 제시 할 수 없었습니다.

그러나 PDE 시스템에 대한 분석 Jacobian의 단점 (또는 속성)은 결합 대수 시스템을 생성한다는 것입니다. 따라서 이러한 시스템을 분리하면 반복 분할로 각 PDE의 근사값을 별도로 풀 수 있습니다. 방법을 다시 사용하면 전역 솔버의 2 차 수렴이 풀립니다. 그러나 적어도 개별 (분리 된) PDE를 개별적으로 해결하면 Newton-Raphson 방법을 사용하여이 특정 문제에 대한 솔루션의 속도를 다시 높일 수 있습니다.


답변