Specify non-homogeneous initial conditions - Partial Differential Equation Toolbox

3 ビュー (過去 30 日間)
Jacopo Biasetti
Jacopo Biasetti 2020 年 11 月 26 日
編集済み: Jacopo Biasetti 2020 年 11 月 26 日
Hi,
I am using the Partial Differential Equation Toolbox to solve one PDE over a two-dimensional quadratic domain with a mesh composed of 3-by-3 nodes (for the sake of simplicity).
I would like to assign the following initial conditions: init = [2 3 4; 5 6 7; 8 9 10] - meaning that the value of 2 will be assigned to the node located in the upper left corner of my geometry, and so on.
I am using the command setInitialConditions(model,init) to set up the initial conditions but I do not know how to pass the init matrix correctly. If I simply pass it as reported in the command above Matlab rejectes it. I think I would need to create a local function to pass the matrix init, but there is no clear example in the documentation page for setInitialConditions https://se.mathworks.com/help/pde/ug/pde.pdemodel.setinitialconditions.html
I am trying to pass the initial conditions as follow
% Initial conditions
setInitialConditions(model,@initfun);
function g = initfun(location)
nr = length(location.x); % Number of nodes
g = zeros(1,nr); % Allocate f
init = [2 3 4; 5 6 7; 8 9 10];
g(1,:) = init(:);
end
But I get the following error
Error using
pde.GeometricInitialConditions/checkIcFcnHdlArgCounts (line
230)
Function handle specifying an initial condition must accept
one input argument and return one output argument.
Error in pde.GeometricInitialConditions/precheckIC (line 207)
pde.GeometricInitialConditions.checkIcFcnHdlArgCounts(icval);
Error in pde.GeometricInitialConditions/set.InitialValue
(line 118)
self.precheckIC(val);
Error in pde.GeometricInitialConditions (line 75)
obj.InitialValue = varargin{2};
Error in pde.PDEModel/setInitialConditions (line 136)
ic =
pde.GeometricInitialConditions(argsToPass{:});
Error in feature_testing (line 45)
setInitialConditions(model,@initfun);
Additionally, if I modify the function in the following form
function g = initfun(location)
nr = length(location.x); % Number of nodes
g = zeros(1,nr); % Allocate f
location.x
g(1,:) = ones(1,length(location.x));
end
so to have the output of location.x I get the following output
ans =
0
ans =
0
ans =
0
ans =
0
ans =
0
ans =
0
ans =
Columns 1 through 10
1 1 1 1 2 2 2 2 3 3
Columns 11 through 16
3 3 4 4 4 4
>>
I do not understand where the six zeros are coming from since the x location of my nodes is represented by the 1 1 1... 4 4 4 part.
Ideas?
Many thanks,
Jacopo

回答 (0 件)

カテゴリ

Help Center および File ExchangeGeneral PDEs についてさらに検索

製品


リリース

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by