码迷,mamicode.com
首页 > 其他好文 > 详细

【物理应用】基于matlab二维边界单元法计算腐蚀电位【含Matlab源码 523期】

时间:2021-06-28 20:17:15      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:运行   二维   ffffff   scanf   alt   matlab源码   vpd   代码   else   

一、简介

基于matlab二维边界单元法计算腐蚀电位

二、源代码

clear;

fid=fopen(‘input.dat‘,‘r‘);
indat=fscanf(fid,‘%g%g%d%g‘,[4,inf]);
indat=indat‘;
xb=indat(:,1);
yb=indat(:,2);
bt=indat(:,3);
bv=indat(:,4);
n=length(xb)-1;

for i=1:n
    xm(i)=0.5d0*(xb(i)+xb(i+1));
    ym(i)=0.5d0*(yb(i)+yb(i+1));
    lm(i)=sqrt((xb(i+1)-xb(i))^2d0+(yb(i+1)-yb(i))^2d0);
    nx(i)=(yb(i+1)-yb(i))/lm(i);
    ny(i)=(xb(i)-xb(i+1))/lm(i);
end

for m=1:n
    b(m)=0d0;
    for k=1:n
        if(k==m)
            G=0.0;
            F=lm(k)/(2.0*pi)*(log(lm(k)/2.0)-1.0);
            del=1.0;
        else
            [F,G]=findfg(xm(m),ym(m),xb(k),yb(k),nx(k),ny(k),lm(k));
            del=0.0;
        end
        if(bt(k)==0)
            A(m,k)=-F;
            b(m)=b(m)+bv(k)*(-G+0.5d0*del);
        else
            A(m,k)=G-0.5d0*del;
            b(m)=b(m)+bv(k)*F;
        end
    end
end
z=A\b‘;

for m=1:n
   u(m)=(1-bt(m))*bv(m)+bt(m)*z(m);
   q(m)=(1-bt(m))*z(m)+bt(m)*bv(m);
end

for j=1:9
   y(j)=0.1*j;
   for i=1:9
      x(i)=0.1*i;
      s(j,i)=0d0;
      for k=1:n
         [F,G]=findfg(x(i),y(j),xb(k),yb(k),nx(k),ny(k),lm(k));
         s(j,i)=s(j,i)+u(k)*G-q(k)*F;
      end
   end
end

三、运行结果

技术图片

四、备注

版本:2014a
完整代码或代写加1564658423

【物理应用】基于matlab二维边界单元法计算腐蚀电位【含Matlab源码 523期】

标签:运行   二维   ffffff   scanf   alt   matlab源码   vpd   代码   else   

原文地址:https://www.cnblogs.com/homeofmatlab/p/14941952.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!