PDE和非线性边界条件

3视图(30天)
亚历山大
亚历山大 2016年3月22日
评论道: 艾伦·韦斯 2016年3月23日
我想解决一个椭圆PDE非线性边界条件,即边界条件取决于u (PDE的解决方案。PDE如下的设置,它创建一个矩形域有一个洞,总共8边界,PDE是解决矩形域内的电位分布:
cover_x = 100;
cover_y = 45;
rebar_diameter = 14;
max_elem_size = 1.5;
elem_growth_rate = 1.999;
length_domain = (cover_x * 2 + rebar_diameter) / 1000;
width_domain = (cover_y + cover_x + rebar_diameter) / 1000;
rect_temp = [3;4;0;length_domain;length_domain;0;0;0;width_domain;width_domain];
circ_temp = [1;length_domain / 2;cover_y / 1000 + rebar_diameter / 1000/2;rebar_diameter / 1000/2];
circ_temp = [circ_temp;0(长度(rect_temp)长度(circ_temp), 1)];
gd_temp = [rect_temp, circ_temp];
ns_temp = char (“通过rect1”,“circ1”);
ns_temp = ns_temp ';
sf_temp =“rect1-circ1”;
[dl_temp ~] = decsg (gd_temp, sf_temp ns_temp);
[p, e t] = initmesh (dl_temp,
“Hmax”max_elem_size / 1000,“Hgrad”elem_growth_rate,“MesherVersion”,“R2013a”);
c = 1;
= 0;
f = 0;
b = @boundaryconditions_corr;
u = assempde (b、p, e、t、c、a、f);
行使的边界boundaryconditions_corr函数中定义如下,即不为边界定义通量边界行使1 - 4(外缘rectangluar域),而通量边界条件应用于内部边界(5,6,7,8):
函数[q, g h r] = boundaryconditions_corr (p, e, u,时间)
% (q, g h, r) = boundaryconditions (p, e u时间)返回
%诺伊曼公元前公元前(q, g)和狄利克雷(h, r)矩阵
% p点矩阵从INITMESH回来
% e是优势矩阵从INITMESH回来
% u是解向量(仅用于非线性情况下)
%的时间(仅用于抛物线和双曲线例)
%
%参见PDEBOUND INITMESH
% 2012年版权MathWorks公司。
% $修订:1.1.6.2 $ $日期:2012/08/21 01:12:25美元
i_0_a = 1.88的军医;
E_0a = -0.78;
b_a = 0.06;
i_0_c = 6.25 e-6;
E_0c = 0.16;
b_c = 0.16;
i_lim = 1;
N = 1;
不=大小(e, 2);
q = 0 (N ^ 2, ne);
g = 0 (N ne);
h = 0 (N ^ 2, 2 * ne);
r = 0 (N, 2 * ne);
我= 1:不
开关e(我);
情况下{1,2,3,4}
问(我)= 0;
g (1,) = 0;
情况下{5、6}
问(我)= 0;
g (1,) = (i_0_a * exp (2.303 * (“u”-E_0a) / b_a)) * 500;
情况下{7 8}
问(我)= 0;
g (1,) = abs (1-exp (-2.303 * (“美国/ 1000”-E_0c) / b_c)) / (1 / i_0_c + exp (-2.303 * (“美国/ 1000”-E_0c) / b_c) / i_lim)) * 500;
结束
结束
结束
当前设置了正无穷边界5和6的给出了一个不正确的问题的解决方案,我想相关的问题是语法的耦合边界行使u (PDE的解决方案。
提前谢谢你的帮助。
问候
1评论
艾伦·韦斯
艾伦·韦斯 2016年3月23日
你能告诉我你使用的版本的MATLAB ?答案很大程度上取决于版本,正如你所看到的 最新的文档
艾伦·韦斯
MATLAB数学工具箱文档

登录置评。

答案(1)

艾伦·韦斯
艾伦·韦斯 2016年3月23日
实际上,现在我看更密切,你给出的边界条件 “u” “美国/ 1000” 。这是不正确的语法。把单引号,你不应该传递字符串信息矩阵,只是数字。
艾伦·韦斯
MATLAB数学工具箱文档
2的评论
艾伦·韦斯
艾伦·韦斯 2016年3月23日
看看这个错误:
错误在boundaryconditions_corr(41)行
g (1,) = (i_0_a。* exp (2.303 * (u-E_0a)。/ b_a));
这个表达式的大小是什么?也许你想写
g (:, i) = (i_0_a。* exp (2.303 * (u-E_0a)。/ b_a));
我没有检查你所有的矩阵的大小,你应该经过认真的事情。
祝你好运,
艾伦·韦斯
MATLAB数学工具箱文档

登录置评。

s manbetx 845

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!