前言
前置的基础操作可见笔者之前一篇文章,在此不再赘述
因为整个实验要求都要用英文,有些不便更改部分的英文就没翻译了,见谅
CST Studio Suite 基础操作实验(静电场)-CSDN博客
核心步骤
- 无限长设置
假如是z轴上的无限长设置,那么只需要对background进行如下修改即可,将z的distance设置为零,由于镜像,其长度在z轴上即为无限长
- 模型建造
可以直接通过参数设置以满足具体实验要求
- Solver选择
再做下一步之前一定要先选定好solver,不然很多界面操作都不一样
- 轴向电流设定
按照下图进行电流设置,但要注意同轴电流朝向一定要相同,倘若不相同则勾选Invert current direction进行方向的调转,两个面都要设置电流
朝屏幕内的面不是很好设置,可以使用modeling的cutting plane去查看切开的视图再去设置
第一题
仿真模型:
无限长空心圆柱轴线为z轴,内外半径分别为1mm和1.5mm,其上均匀分布轴向电流(1+0.3)A,求x轴上B的大小。
材料选用normal,步骤略
理论问题:
内外半径分别为a和b的无限长空心圆柱中均匀分布轴向电流I,求柱内外的磁感应强度。
matlab代码
% Constants
mu_0 = 4 * pi * 1e-7; % Permeability of free space (H/m)
I_base = 1; % Base current (A)
adj = 3/10; % Given adjustment factor
I_total = I_base * (1 + adj); % Total current (A)
% Radii of the cylinder
r_inner = 1e-3; % Inner radius (m)
r_outer = 1.5e-3; % Outer radius (m)
% Define x positions where B is to be calculated
x_positions = linspace(0, 10e-3, 100); % Example x positions from 0 to 10mm
% Initialize B array
B = zeros(size(x_positions));
% Calculate B at each x position
for i = 1:length(x_positions)
x = x_positions(i);
if abs(x) <= r_inner
% Inside the inner radius, B is 0
B(i) = 0;
elseif abs(x) > r_inner && abs(x) <= r_outer
% Between inner and outer radius
B(i) = (mu_0 * I_total / (2 * pi * abs(x))) * (abs(x)^2 - r_inner^2) / (r_outer^2 - r_inner^2);
else
% Outside the outer radius
B(i) = (mu_0 * I_total / (2 * pi * abs(x))) * (r_outer^2 - r_inner^2) / (r_outer^2 - r_inner^2);
end
end
% Load data from file
data_B = importdata('B1.txt');
if isstruct(data_B)
data_B = data_B.data;
end
% Extract X values and B-Field values
x_exp_B = data_B(:, 1); % First column
B_exp = data_B(:, 2); % Second column
% Plot B vs x
figure;
plot(x_positions * 1e3, B, 'LineWidth', 2, 'DisplayName', 'Calculated B-Field'); % Convert x_positions to mm for plotting
hold on;
plot(x_exp_B, B_exp, 'r--', 'LineWidth', 2, 'Marker', 'o', 'MarkerSize', 3, 'DisplayName', 'Experimental B-Field');
xlabel('Position (x) [mm]');
ylabel('Magnetic Field (B) [T]');
title('Magnetic Field (B) along the x-axis');
xlim([0, 10]); % Correct usage of xlim
grid on;
legend('show');
结果分析和比较
我们首先分析计算值和模拟值的 B 分布趋势。从图中我们可以看出,B 分布是对称的,因此我们只分析沿正 x 轴的 B 分布。当 0<=x<1.5mm 时,B 分布等于 0;当 1.5<=x<2 时,B 分布呈线性增长。当 x>=2mm 时,B 分布按反比例函数递减。
当 0 <= x <= 2mm 时,计算值与模拟值一致。当 x > 2mm 时,所有部分重合。
第二题
仿真模型:
载流的圆形导线半径为(20+0.3)mm,求圆心处B的大小。电流为1A
按照下图绘制圆形导线
理论问题:
同轴线内外导体半径为a,外导体的内半径为b,外半径为c,如下图。设内外导体分别流过反相的电流,两导体之间介质的磁导率为μ,求各区域的H、B。若电流流向+z方向
matlab代码
% Constants
mu_0 = 4 * pi * 1e-7; % Permeability of free space (H/m)
I_total = 1; % Total current (A)
adj = 3 / 10; % Given adjustment factor
% Radius of the circular wire
radius = (20 + adj) * 1e-3; % Radius in meters
% Define x positions where B is to be calculated
x_positions = linspace(-10e-3, 10e-3, 100); % Example x positions from -10 to 10mm
% Calculate B at each x position
B = mu_0 * I_total * radius^2 ./ (2 * (radius^2 + x_positions.^2).^(3/2));
% Load data from file
data_B = importdata("B2.txt");
if isstruct(data_B)
data_B = data_B.data;
end
% Extract X values and B-Field values
x_exp_B = data_B(:, 1); % First column
B_exp = data_B(:, 2); % Second column
% Plot B vs x
figure;
plot(x_positions * 1e3, B, 'LineWidth', 2, 'DisplayName', 'Calculated B-Field'); % Convert x_positions to mm for plotting
hold on;
plot(x_exp_B, B_exp, 'r--', 'LineWidth', 2, 'Marker', 'o', 'MarkerSize', 3, 'DisplayName', 'Experimental B-Field');
xlabel('Position (x) [mm]');
ylabel('Magnetic Field (B) [T]');
title('Magnetic Field (B) along the x-axis');
xlim([-10, 10]); % Correct usage of xlim
grid on;
legend('show');
结果分析和比较
我们首先分析计算值和模拟值的 B 分布趋势。从图中可以看出,B 分布是对称的,因此我们只分析沿正 x 轴的 B 分布。当 x = 0mm 时,B 分布达到最大值。当 x > 0mm 时,B 分布按反比例函数递减。
我们注意到计算值与模拟值有一定的偏差。
这两种差异可能是边界条件造成的,也可能是求解器精度造成的。在实验中,我设置的边界条件等于 30,这与实际情况相比相对较小。虽然存在微小误差,但这是可以接受的,因为不可能绝对模拟真实情况。
第三题
仿真模型:
同轴线轴线为z轴,a=0.5mm,b=1mm,c=1.5mm, 两导体之间介质的相对磁导率为(4+0.3),求x轴上的H、B。(记得上反向的电)
建造一个三个同心圆柱即可,在参数设置的时候设定实验要求的大小
理论问题:
求载流的圆形导线回路在圆心处的B。
matlab代码
% Constants
mu_0 = 4 * pi * 1e-7; % Permeability of free space (H/m)
adj = 3/10; % Given adj
mu_r = 4 + adj; % Relative permeability
I_current = 1; % Current (A)
% Radii
radius_inner = 0.5e-3; % Inner radius (m)
radius_middle = 1e-3; % Middle radius (m)
radius_outer = 1.5e-3; % Outer radius (m)
% Define x positions where H and B are to be calculated
x_positions = linspace(0, 5e-3, 100); % Example x positions from 0 to 5mm
% Initialize H and B arrays
H_field = zeros(size(x_positions));
B_flux = zeros(size(x_positions));
% Calculate H and B at each x position
for i = 1:length(x_positions)
x_pos = x_positions(i);
if abs(x_pos) < radius_inner
% Region 1: r < a
H_field(i) = I_current * abs(x_pos) / (2 * pi * radius_inner^2);
B_flux(i) = mu_0 * H_field(i);
elseif abs(x_pos) >= radius_inner && abs(x_pos) < radius_middle
% Region 2: a <= r < b
H_field(i) = I_current / (2 * pi * abs(x_pos));
B_flux(i) = mu_0 * mu_r * H_field(i);
elseif abs(x_pos) >= radius_middle && abs(x_pos) < radius_outer
% Region 3: b <= r < c
H_field(i) = (I_current / (2 * pi * abs(x_pos))) - (I_current * (abs(x_pos) - radius_middle) / (2 * pi * radius_outer^2));
B_flux(i) = mu_0 * H_field(i);
else
% Region 4: r >= c
H_field(i) = 0;
B_flux(i) = 0;
end
end
% Load data from file
data_H = importdata('H3.txt');
if isstruct(data_H)
data_H = data_H.data;
end
% Load data from file
data_B = importdata('B3.txt');
if isstruct(data_B)
data_B = data_B.data;
end
% Extract X values and H-Field values
x_exp_H = data_H(:, 1); % First column
H_exp = data_H(:, 2); % Second column
% Extract X values and B-Field values
x_exp_B = data_B(:, 1); % First column
B_exp = data_B(:, 2); % Second column
% Plot H and B vs x
figure;
subplot(2, 1, 1);
plot(x_positions * 1e3, H_field, 'LineWidth', 2, 'DisplayName', 'Calculated H-Field'); % Convert x_positions to mm for plotting
hold on;
plot(x_exp_H, H_exp, 'r--', 'LineWidth', 2, 'Marker', 'o', 'MarkerSize', 3, 'DisplayName', 'Experimental H-Field');
xlabel('Position (x) [mm]');
ylabel('Magnetic field H (A/m)');
title('Magnetic field H along the x-axis');
grid on;
legend('show');
subplot(2, 1, 2);
plot(x_positions * 1e3, B_flux, 'LineWidth', 2, 'DisplayName', 'Calculated B-Field'); % Convert x_positions to mm for plotting
hold on;
plot(x_exp_B, B_exp, 'r--', 'LineWidth', 2, 'Marker', 'o', 'MarkerSize', 3, 'DisplayName', 'Experimental B-Field');
xlabel('Position (x) [mm]');
ylabel('Magnetic flux density B (T)');
title('Magnetic flux density B along the x-axis');
grid on;
legend('show');
结果分析和比较
我们首先分析计算值和模拟值的 B 分布和 H 分布的趋势。从图中可以看出,B 分布和 H 分布是对称的,因此我们只分析沿正 x 轴的 B 分布和 H 分布。当 x = 0mm 时,B 分布等于 0。当 x = 0.5mm 时,B 分布达到最大值。当 0.5 < x < 1mm 时,B 分布按反比例函数递减。当 1 < x < 1.5mm 时,B 分布呈线性递减。当 x >= 1.5mm 时,B 分布等于 0。当 x = 0mm 时,H 分布等于 0。当 0 < x < 0.5mm 时,H 分布按反比例函数递减。当 0.5 <= x < 1.5mm 时,H 分布呈线性递减趋势。当 x >= 1.5mm 时,H 分布等于 0。
磁场强度 H 的比较:计算结果和实验结果在内侧和中间半径显示出相同的趋势,但在外侧半径有一些偏差。这可能是由于简化模型未能捕捉到实验中复杂的边界条件和材料特性变化。
磁通密度 B 的比较:同样,计算结果和实验结果在内半径和中间半径处显示出相同的趋势,但在外半径处的数值存在一些偏差。这可能与实验设备、材料特性或模型简化的误差有关。
第四题
仿真模型:
如下图所示,两个圆柱半径为1mm, 轴线与z轴平行,轴线位置分别为x=0.5mm和x=-0.5mm, 除两柱重叠部分R外,两柱上各有大小相等、方向相反的电流1A, 求x轴上[-0.4mm,0.4mm]范围上B的大小。
这个模型需要灵活运用下面的操作调整到如下图所示的图形
理论问题:
两个半径都为a的圆柱体,轴间距为d, d<2a,如下图。除两柱重叠部分R外,两柱上各有大小相等、方向相反的电流,密度为J,求区域R的B。
matlab代码
% Constants definition
mu_0 = 4 * pi * 10^-7; % Vacuum permeability in H/m
radius = 0.001; % Radius in meters
distance = 0.001; % Distance between axes in meters
I_current = 1; % Current in Amperes
% Calculate current density
J_density = I_current / ((1/3) * pi * radius^2 + (sqrt(3)/2) * radius^2); % Current density in A/m^2
% Define x-axis range
x_positions = -0.0005:0.00001:0.0005; % x-axis from -0.5mm to 0.5mm
% Calculate magnetic field B
B_field = (mu_0 * J_density * distance) / 2 * ones(size(x_positions)); % B is constant in this range
% Load data from file
data_B = importdata("B4.txt").data;
% Calculate the mean of the imported data
mean_data_B = mean(data_B(:, 2));
% Plot the results
figure;
plot(x_positions * 1000, B_field, 'LineWidth', 2, 'DisplayName', 'Calculated'); % Convert x to mm for better readability
hold on;
plot(data_B(:, 1), data_B(:, 2), '--o', 'LineWidth', 2, 'MarkerSize', 3, 'DisplayName', 'Imported');
xlabel('x (mm)');
ylabel('B (T)');
ylim([min(min(B_field), min(data_B(:, 2))) * 0.5, max(max(B_field), max(data_B(:, 2))) * 1.5]); % Adjust y-axis limits
title('Magnetic Field B along x-axis');
grid on;
legend('show');
结果分析和比较
我们首先分析了计算值和模拟值的 B 分布趋势。在[-0.4,0.4]毫米范围内,B 分布是一个常数,即在此范围内 B 分布值相同。
从图中可以看出,计算值与模拟值基本吻合,这说明我们的实验设置是合理的。