주요 콘텐츠

solvepde

PDEModel에 지정된 PDE 풀기

설명

result = solvepde(model)model에 표현된 정상(stationary) PDE의 해를 반환합니다. 정상 PDE는 속성 model.IsTimeDependent = false를 갖습니다. 즉, model.EquationCoefficients의 시간 도함수 계수 md0이어야 합니다.

예제

result = solvepde(model,tlist)는 시간 tlist에서 model에 표현된 시간 종속 PDE의 해를 반환합니다. model.EquationCoefficients의 시간 도함수 계수 m 또는 d 중 적어도 하나는 0이 아니어야 합니다.

예제

예제

모두 축소

PDE 모델을 만들고 L 모양 멤브레인의 지오메트리를 포함시킵니다.

model = createpde();
geometryFromEdges(model,@lshapeg);

모서리 레이블을 사용하여 지오메트리를 표시합니다.

pdegplot(model,"EdgeLabels","on")
ylim([-1.1,1.1])
axis equal

Figure contains an axes object. The axes object contains 11 objects of type line, text.

모든 모서리에 0 디리클레 조건을 설정합니다.

applyBoundaryCondition(model,"dirichlet", ...
                             "Edge",1:model.Geometry.NumEdges, ...
                             "u",0);

푸아송 방정식은 다음과 같습니다.

-u=1.

툴박스 솔버는 다음 형식의 방정식을 다룹니다.

m2ut2+dut-(cu)+au=f.

모델에 푸아송 방정식의 계수를 포함시킵니다.

specifyCoefficients(model,"m",0,...
                          "d",0,...
                          "c",1,...
                          "a",0,...
                          "f",1);

모델의 메시를 생성하고 PDE를 풉니다.

generateMesh(model,"Hmax",0.25);
results = solvepde(model);

해를 표시합니다.

pdeplot(model,"XYData",results.NodalSolution)
axis equal

Figure contains an axes object. The axes object contains an object of type patch.

3차원 사각형 블록 지오메트리를 갖는 모델을 만듭니다.

model = createpde();
importGeometry(model,"Block.stl");

복사 냉각으로 인해 블록 표면에서 해가 온도의 세제곱으로 감소한다고 가정하겠습니다.

gfun = @(region,state)-state.u.^3*1e-6;
applyBoundaryCondition(model,"neumann", ...
                             "Face",1:model.Geometry.NumFaces, ...
                             "g",gfun);

모델 계수에는 소스 항이 없습니다.

specifyCoefficients(model,"m",0,...
                          "d",1,...
                          "c",1,...
                          "a",0,...
                          "f",0);

블록은 일정한 온도 350에서 시작합니다.

setInitialConditions(model,350);

지오메트리의 메시를 생성하고 0에서 20까지의 시간에 대해 모델의 해를 구합니다.

generateMesh(model);
tlist = 0:20;
results = solvepde(model,tlist);

시간 1과 20에서 블록 표면의 해를 플로팅합니다.

pdeplot3D(model,"ColorMapData",results.NodalSolution(:,2))

Figure contains an axes object. The hidden axes object contains 5 objects of type patch, quiver, text.

figure
pdeplot3D(model,"ColorMapData",results.NodalSolution(:,21))

Figure contains an axes object. The hidden axes object contains 5 objects of type patch, quiver, text.

입력 인수

모두 축소

PDE 모델로, PDEModel 객체로 지정됩니다. 모델에는 지오메트리, 메시 및 문제 계수가 포함되어 있습니다.

예: model = createpde(1)

풀이 시간으로, 실수형 벡터로 지정됩니다. tlist는 단조(증가 또는 감소) 벡터여야 합니다.

예: 0:20

데이터형: double

출력 인수

모두 축소

PDE 결과로, StationaryResults 객체 또는 TimeDependentResults 객체로 반환됩니다. result의 유형은 model이 정상 문제(model.IsTimeDependent = false)를 나타내는지 아니면 시간 종속 문제(model.IsTimeDependent = true)를 나타내는지에 따라 달라집니다.

  • 뉴턴 반복이 수렴하지 않으면 solvepde는 오류 메시지 Too many iterations 또는 Stepsize too small을 표시합니다.

  • 초기 추측값이 NaN 또는 Inf 요소를 포함하는 행렬을 생성하는 경우 solvepde는 오류 메시지 Unsuitable initial guess U0 (default: U0 = 0)을 표시합니다.

  • 계수가 매우 작거나 지오메트리 차원이 매우 작으면 solvepde가 수렴하지 못하거나 잘못된 해로 수렴할 수 있습니다. 이 경우 계수나 지오메트리 차원을 차수 1로 스케일링하여 더 나은 결과를 얻을 수 있습니다.

버전 내역

R2016a에 개발됨