25 lines
556 B
Matlab
25 lines
556 B
Matlab
function [A, b] = apply_pec_bele(A, b, mesh, phy, pecEdgeIds)
|
||
%APPLY_PEC_BELE 散射场 PEC:n×(E_s+E_b)=0 → E_s·e = -(E_b·e)
|
||
|
||
pecEdgeIds = pecEdgeIds(:);
|
||
n = mesh.NbrEdge;
|
||
|
||
for k = 1:numel(pecEdgeIds)
|
||
id = pecEdgeIds(k);
|
||
v1 = mesh.Edge(id, 1);
|
||
v2 = mesh.Edge(id, 2);
|
||
p1 = mesh.Vertex(v1, :);
|
||
p2 = mesh.Vertex(v2, :);
|
||
edgeVec = (p2 - p1).';
|
||
mid = 0.5 * (p1 + p2);
|
||
Eb = phy.bele.Eb(mid(1), mid(2), mid(3));
|
||
rhs = -dot(Eb, edgeVec);
|
||
|
||
A(id, :) = 0;
|
||
A(:, id) = 0;
|
||
A(id, id) = 1;
|
||
b(id) = rhs;
|
||
end
|
||
|
||
end
|