www.pudn.com > loopantenna.rar > rwg2.m, change:2002-04-17,size:3451b

```%RWG2 Geometry calculations - all Chapters
%   Uses the mesh file from RWG1, mesh1.mat,
%   as an input.
%
%   Creates the following parameters of the RWG edge elements:
%
%   Position vector rho_c_plus from the free vertex of
%   the "plus" triangle to its center
%                                   RHO_Plus(1:3,1:EdgesTotal)
%   Position vector rho_c_minus from the center of the "minus"
%   triangle to its free vertex
%                                   RHO_Minus(1:3,1:EdgesTotal)
%
%   In addition to these parameters creates the following
%   arrays for nine subtriangles (barycentric subdivision):
%
%   Midpoints of nine subtriangles
%                                   Center_(1:3,1:9,1:TrianglesTotal)
%   Position vectors rho_c_plus from the free vertex of
%   the "plus" triangle to nine subtriangle midpoints
%                                   RHO__Plus(1:3,1:9,1:EdgesTotal)
%   Position vectors rho_c_minus from nine subtriangle midpoints
%   to the free vertex of the "minus" triangle
%                                   RHO__Minus(1:3,1:9,1:EdgesTotal)
%
%   See Rao, Wilton, Glisson, IEEE Trans. Antennas and Propagation,
%   vol. AP-30, No 3, pp. 409-418, 1982.
%
%   Copyright 2002 AEMM. Revision 2002/03/05
%   Chapter 2

clear all

%Find nine sub-triangle midpoints
IMT=[];
for m=1:TrianglesTotal
n1=t(1,m);
n2=t(2,m);
n3=t(3,m);
M=Center(:,m);
r1=    p(:,n1);
r2=    p(:,n2);
r3=    p(:,n3);
r12=r2-r1;
r23=r3-r2;
r13=r3-r1;
C1=r1+(1/3)*r12;
C2=r1+(2/3)*r12;
C3=r2+(1/3)*r23;
C4=r2+(2/3)*r23;
C5=r1+(1/3)*r13;
C6=r1+(2/3)*r13;
a1=1/3*(C1+C5+r1);
a2=1/3*(C1+C2+M);
a3=1/3*(C2+C3+r2);
a4=1/3*(C2+C3+M);
a5=1/3*(C3+C4+M);
a6=1/3*(C1+C5+M);
a7=1/3*(C5+C6+M);
a8=1/3*(C4+C6+M);
a9=1/3*(C4+C6+r3);
Center_(:,:,m)=...
[a1 a2 a3 a4 a5 a6 a7 a8 a9];
end
%PLUS
for m=1:EdgesTotal
NoPlus=TrianglePlus(m);
n1=t(1,NoPlus);
n2=t(2,NoPlus);
n3=t(3,NoPlus);
if((n1~=Edge_(1,m))&(n1~=Edge_(2,m))) NODE=n1; end;
if((n2~=Edge_(1,m))&(n2~=Edge_(2,m))) NODE=n2; end;
if((n3~=Edge_(1,m))&(n3~=Edge_(2,m))) NODE=n3; end;
FreeVertex=p(:,NODE);

RHO_Plus(:,m)   =+Center(:,NoPlus)-FreeVertex;
%Nine rho's of the "plus" triangle
RHO__Plus(:,:,m)  =...
+Center_(:,:,NoPlus)-repmat(FreeVertex,[1 9]);
end
%MINUS
for m=1:EdgesTotal
NoMinus=TriangleMinus(m);
n1=t(1,NoMinus);
n2=t(2,NoMinus);
n3=t(3,NoMinus);
if((n1~=Edge_(1,m))&(n1~=Edge_(2,m))) NODE=n1; end;
if((n2~=Edge_(1,m))&(n2~=Edge_(2,m))) NODE=n2; end;
if((n3~=Edge_(1,m))&(n3~=Edge_(2,m))) NODE=n3; end;
FreeVertex=p(:,NODE);

RHO_Minus(:,m)   =-Center(:,NoMinus) +FreeVertex;
%Nine rho's of the "minus" triangle
RHO__Minus(:,:,m)=...
-Center_(:,:,NoMinus)+repmat(FreeVertex,[1 9]);
end

%Save result
save mesh2  p ...
t ...
TrianglesTotal ...
EdgesTotal ...
Edge_ ...
TrianglePlus ...
TriangleMinus ...
EdgeLength ...
EdgeIndicator ...
Area ...
RHO_Plus ...
RHO_Minus ...
RHO__Plus ...
RHO__Minus ...
Center ...
Center_```