필터 지우기
필터 지우기

Solving PDEs: time dependent c coefficient

조회 수: 1 (최근 30일)
Ollie A
Ollie A 2019년 1월 30일
편집: Alan Weiss 2019년 2월 1일
I am solving a PDE to simulate current flow through a conductive medium in 2D.
My geometry is as follows:
With Neumann boundary conditions applied to edges E2 and E4, like so:
applyBoundaryCondition(model,'neumann','Edge',1:model.Geometry.NumEdges,'q',0,'g',0);
applyBoundaryCondition(model,'neumann','Edge',2,'q',0,'g',1);
applyBoundaryCondition(model,'neuman','Edge',4,'q',0,'g',-1);
I am only interested in solving the PDE in the form of the Laplace equation:
,
where is electric potential (which we are solving for) and σ is the conductivity tensor, which is represented as the c coefficient in our PDE model.
I want to apply a time-dependent c coefficient to the subdomain, F2, whereby the conductivity changes in time such that c = t/(t+constant).
I have tried the following lines of code:
c1 = [1;0;0;1];
specifyCoefficients(model,'m',0,'d',0,'c',c1,'a',0,'f',0,'Face',1);
c2 = @(location,state)(repmat([1;0;0;1].*state.time./(state.time + 1),1,length(location.x))); % Conductivity tensor for Face 2.
specifyCoefficients(model,'m',0,'d',0,'c',c2,'a',0,'f',0,'Face',2);
However, I am unsure about how to specify the time scale as the rest of the PDE is time-independent. I have found that
tlist = 0:0.01:1;
results = solvepde(model,tlist);
does not work.
Any help is appreciated.
Additional, but less urgent:
Once this step is completed, I aim to have the conductivity tensor also non-constant in x and y, so that it has something resembling a normal distribution (smallest conductivity in the centre of Face 2 and parabolically tending towards equilibrium at the edges. If anyone has any ideas on how to tackle this, that would be great.

채택된 답변

Alan Weiss
Alan Weiss 2019년 2월 1일
편집: Alan Weiss 2019년 2월 1일
If I understand you correctly, you have a sequence of independent problems; the solution at one time t does not depend on or influence the solution at a different time.
As such, you do not have a time-dependent model. I believe that all you need to do is solve a set of time-independent models, where each model uses the same geometry but a different c coefficient. Solve the problems in a loop, something like
tspan = linspace(0,5,20); % 20 times from 0 through 5, just for example
for i = 1:length(tspan)
c2 = tspan(i)/(1 + tspan(i));
specifyCoefficients(model,'m',0,'d',0,'c',c2,'a',0,'f',0,'Face',2);
results{i} = solvepde(model);
end
As for your second question, I am not sure exactly what you need, but if you can write out the equations for your conductivity, then I would imagine that the c coefficient documentation would lead you to the correct formulation.
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Eigenvalue Problems에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by