XIAN-FEM-2026June/三维matlab代码/matlab 3D一阶基+散射边界条件/main.m

43 lines
1.1 KiB
Matlab
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

clc
clear all
%参考四面体
%顶点1-[1,0,0] 2-[0,1,0] 3-[0,0,1] 4-[0,0,1]
% 算例配置(改波长/材料/边界请编辑 case_config.m
[phy, cfg] = case_config();
% 读取网格(与 C++ Release/SBCmesh.dat 同一文件)
meshFile = fullfile(fileparts(mfilename('fullpath')), cfg.meshDatFile);
mesh = load_SBCmesh_dat(meshFile);mesh.incIndex=findTri(phy.inc,mesh);
mesh.outIndex=findTri(phy.out,mesh);
%矩阵组装
solver.Ai=[];solver.Aj=[];solver.Av=[];
solver.b=zeros(mesh.NbrEdge,1);
solver=assembly_equ(phy,mesh,solver);
%出射处理
solver=assembly_out(phy,mesh,solver);
%入射处理
solver=assembly_inc(phy,mesh,solver);
solver.A=sparse(solver.Ai,solver.Aj,solver.Av);
% 导出 A、b与 C++ FemType=4 OutFile 格式一致lda0=2 m
export_ab_matrix(solver, fullfile(fileparts(mfilename('fullpath')), 'OutFile'));
%求解
solver.x=solver.A\solver.b;
%计算电场
triIndex=findTri(4,mesh);
[x,y,normE]=get_ele2(triIndex,mesh,solver);
patch(x,y,normE,'EdgeAlpha',0)
colormap jet;
colorbar
max(max(normE))
condest(solver.A)
% model=mphopen('SBC.mph');
% [A, b] = extract_mph_Matrice(model, 1);
% full_A=full(A);
% full_A2=full(solver.A);