2014-10-10 2 views
0

내가 Freefem ++ 새로운 해요, 내가 해결하기 위해 노력하고있어 문제가 피셔의 방정식 : 나는 약한 형태의 문제를 재구성하려고했습니다Freefem 피셔 방정식

du/dt = d^2u/dx^2 + d^2u/dy^2 + k * u * (1-u) 

du/dn = 0 - border condition 

그러나 Freefem 실수로 표시 수식 :

problem Fisher(uh, vh) = int2d(Th)(uh * vh/dt + Grad(uh)' * Grad(vh)) - int2d(Th)(k * uh * vh) + int2d(Th)(uh0 * vh/dt) - int2d(Th)(k * uh * vh * uh); 

내가 뭘 잘못했는지 알려주실 수 있습니까? 마지막 용어에 문제가 있습니다.

답변

0

피셔 방정식을 모델링하는 가장 쉬운 방법은 비선형 부분을 선형화하여 계산 방법이 안정적으로 유지되도록하는 것입니다. 우리의 경우 이산 공식에서 우리는 u_i (1 - u_i)를 u_ {i-1} (1 - u_i) (i는 시간 카운터)로 대체하고 공간과 시간 단계를주의 깊게 선택한다는 것을 의미합니다. 여기에 결과 코드의 예가 나와 있습니다.

verbosity=0.; 
real Dx=.1,Dy=.1; 
mesh Th=square(floor(10./Dx),floor(10./Dy), [-5 + 10*x, -5 + 10*y]); 
fespace Vh(Th,P1); 
Vh uh, vh, uh0 = ((x)^2+(y)^2)<=1; 

real mu = 0.1, dt=0.01, Tf=10., k = 3.0; 
macro Grad(u)[dx(u),dy(u)]// 

problem KFisher(uh,vh) = int2d(Th)(uh*vh/dt + Grad(uh)'*Grad(vh)*mu) - int2d(Th)(uh0*vh/dt) + int2d(Th)(k*uh0*uh*vh) - int2d(Th)(k*vh*uh0); 

for (real t=0.;t<Tf;t+=dt) 
{ 
    KFisher; 
    uh0 = uh; 
    plot(uh0, cmm="t="+t+"[sec]", dim=2, fill=true, value=true, wait=0); 
} 
0

이것은 온도 의존적이고 비선형적인 생성 기간을 갖는 2D 과도 확산/전도 방정식입니다.

비선형 생성 조건을 사용하지 않으면 방정식이 2D 과도 확산/전도 방정식의 약한 형식과 똑같아 야합니다.

freefem ++는 어떻게 비선형 항을 선형화합니까? 어떻게 처리 할 계획입니까?

물론 마지막 용어는 솔루션을 매우 다른 동물로 만듭니다. 이를 해결하려면 시간 단계 내에서 반복을 사용해야합니다 (예 : Newton-Raphson 해결사).

알고리즘은 반복적이고 비선형적인 알고리즘이됩니다. 당신은 더 이상 u를 풀지 않을 것입니다. 증가분만큼을 풀고 수렴 할 때까지 반복합니다.

당신은 지난 시즌과 같이 선형화 :

d(k*u(1-u)) = k*du(1-u) - k*u*du = k*(1-2*u)*du ~ k*du 

당신은 여전히 ​​유 * 제품이 그 비선형의 뒤. 무엇을해야합니까? 멀리 던져.

이제 du에 대한 비선형 과도 방정식을 풀고 있습니다.

+0

답장을 보내 주셔서 감사합니다. 그러나 Freefem과 Newton 방법을 결합하는 것이 가능한지 아직 이해할 수 없습니다. 알고리즘 체계를 정확하게 알려주시겠습니까? – Tatiana

+0

아니요, 합리적인 요청이 아닙니다. 선형 방법으로 비선형 문제를 풀 수는 없습니다. 그것은 큰 주제입니다. 문서로 돌아가십시오. – duffymo