1. 程式人生 > 其它 >【物理應用】基於matlab二維邊界單元法計算腐蝕電位【含Matlab原始碼 523期】

【物理應用】基於matlab二維邊界單元法計算腐蝕電位【含Matlab原始碼 523期】

一、簡介

基於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