• 검색 결과가 없습니다.

3. EIT를 위한 전산해석체계 개발

3.2. 전산해석체계 개발

본 연구에서 개발한 전산해석체계의 도식은 그림 3.1과 같다. 그림 3.1에서 보는 것처럼 반지름, 전극의 개수 및 폭, 이물질에 대한 정보, 접촉저항 값, 격자의 수 준, 측정 오차, 전류 패턴 등과 같은 기본 값을 설정하고 기하 구조를 그린다. 기 하 구조를 그린 후 격자를 생성하면 전산해석체계와 연동한 상용 소프트웨어에 서 제공하는 함수를 통해 Node의 정보를 얻고 이 Node를 통해 EIT 문제를 풀기 위해 필요한 모든 정보를 얻을 수 있다.

Fig. 3.1. The flow chart of a computational analysis system for EIT.

앞서 언급했던 바와 같이 EIT 기법은 이상유동 거동 예측, 화학공정, 의학 분야 에 적용되고 있고, 주로 MATLAB 기반 패키지인 EIDORS(Electrical Impedance and

Diffuse Optical Reconstruction Software)가 전산해석도구로 사용되고 있다[Vaukonen 외, 2001]. EIDORS는 전기적인 신호나 Diffuse optical 신호로부터 영상을 복원하기 위한 소프트웨어 시스템이다. 현재 이 소프트웨어는 EIT 해석을 위한 프로그램으 로 세계적으로 많이 쓰이고 있다. 그러나 EIDORS 에서는 격자의 개수 및 배열을 구성하는데 한계가 있어 해(Solution)의 정확성에 큰 영향을 줄 수 있을 뿐만 아 니라 복잡한 기하구조를 생성하는데 많은 어려움이 있다. 이에 반해, COMSOL

Multiphysics의 경우 비교적 간단한 MATLAB 스크립트를 이용하여 복잡한 기하구 조를 형성할 수 있고, 격자구조 및 배열을 구성함에 있어 사용하기가 편리하다.

예를 들어

geo{1} = circ2(1,'base','center','pos',{'0','0'},'rot','0');

는 중심 좌표가 (0,0)이고 반지름이1인 원형의 구조를 그리는 스크립트다. 이처럼 COMSOL with MATLAB에서 제공하는 도형 함수를 사용해서 기하구조를 스크립 트를 이용하여 쉽게 구성할 수 있다. 또한 격자 생성 함수 중 하나는 다음과 같 다.

fem.mesh = meshinit(fem, 'hauto',meshlevel);

여기서 meshlevel은 숫자로 조절이 가능하고 숫자가 작을수록 조밀한 격자를 만 든다. mesh의 node 정보와 element 정보를 얻기 위한 스크립트는 다음과 같다.

nodes = xmeshinfo(fem ,'out', 'nodes');

element = get(fem.mesh, 'el');

또한 EIT 문제를 풀기 위해 사용한 경계조건은 다음과 같이 Neumann 조건을 설 정 하였다.

for ell = 1:num_elec+1, fem.bnd.name{ell} = ell-1; end

Bk = sparse(zeros(num_node,num_node));

for elmi = 1:num_elem

Bk = Bk+cond_in(elmi)*Bm{elmi};

End

elmn = element{3}.elem; % element nodes for elmi = 1:num_elem

x = pt(1,elmn(:,elmi)); y = pt(2,elmn(:,elmi));

elm_area(elmi) = det([ones(1,3); x; y])/2;

phix = [y(2)-y(3); y(3)-y(1); y(1)-y(2)]/2/elm_area(elmi);

phiy = -[x(2)-x(3); x(3)-x(1); x(1)-x(2)]/2/elm_area(elmi);

Bm_temp(elmn(:,elmi),elmn(:,elmi)) = phix*phix'+phiy*phiy')*elm_area(elmi);

Bm{elmi} = sparse(Bm_temp);

end

- B

2

matrix

fem.bnd.q = cell(1,num_elec+1);

for ell = 1:num_elec, fem.bnd.q{ell+1} = 1/cont_imp(ell); end fem.xmesh = meshextend(fem);

Bz = assemble(fem, 'out', 'K');

Bz = sparse(Bz(UI,UI));

 

, 1

j

i j e

i j dS

z

 

C , i

 1, 2,  ,

N, j

 1, 2,  ,

L (2.42)

C matrix는 식 (2.42)이므로 다음과 같은 스크립트로 표현할 수 있다.

- Cmatrix

fem.bnd.weak = cell(1,num_elec+1);

fem.bnd.g = cell(1,num_elec+1);

for ell = 1:num_elec, fem.bnd.g{ell+1} = 1; end fem.xmesh=meshextend(fem);

C_temp = assemble(fem, 'out', 'L');

C_temp = sparse(C_temp(UI));

  

 

 

DN N CN

CN

A B T T (2.40)

이렇게 구한 matrix들을 조합해서 식 (2.40)과 같은 시스템 matrix를 만들 수 있다.

시스템 matrix를 구하는 스크립트는 다음과 같다.

N = sparse([ones(1,num_elec-1); -eye(num_elec-1)]);

D = sparse(diag(elec_area./cont_imp));

I_tilde = sparse([zeros(num_node,num_cp); N'*I_current']);

CN = sparse(C*N); NDN = sparse(N'*D*N);

A0 = sparse([Bz, CN; CN', NDN]);

Bk = sparse(zeros(num_node,num_node));

for elmi = 1:num_elem

Bk = Bk+cond_in(elmi)*Bm{elmi};

end A = A0;

A(1:num_node,1:num_node) = A(1:num_node,1:num_node)+Bk;

I

Ab~ (2.36)

본 연구에서는 이렇게 구한 시스템 matrix를 통해 EIT 문제를 풀 수 있는 식 (2.36)을 완성하였다. 여기서 b matrix를 구해서 전극의 전압값을 구하는 것이 EIT의 정문제를 푸는 것이라 할 수 있다.

b = A I-1 (2.61)

식 (2.61) 같이 식 (2.36)을 변경하면 EIT의 정문제를 푸는 것이기 때문에 다음과 같이 스크립트를 작성하면 된다.

b = A\F_load;

R1 = b(1:num_node,1:num_elec);

alpha = b(1:num_node,num_elec+1:end);

beta = b(num_node+1:end,num_elec+1:end);

U = full(N * beta);

 

 

 

ζ I 0

~

(2.37)

단 여기서 I는 식 (2.37)과 같으므로 다음과 같은 스크립트를 이용한다.

R_load = [zeros(num_node,num_elec); N'];

F_load = [R_load I_tilde];

본 연구에서는 완전전극모델로 전산해석체계를 개발하기 위해 접촉저항을 고려 하여 시스템 행렬을 구성하였다. 본 연구에서 개발한 전산해석체계를 검증한 내 용은 다음 절에 기술하였다.

관련 문서