主程序
项目中共有10个主程序,主程序文件以program
开头
中间为程序特征描述,如3_level_magnet
,如L3_Bg
等
末尾为程序目标,如Current_Change
,Quench
等
子函数
项目中还有一些子函数,它们以fun
开头,函数功能结尾,如
%fun_Arc_segment_Mutual_inductance.m
function M = fun_Arc_segment_Mutual_inductance(r1,r2,h,Ply,afa1,afa2,bta1,bta2)
% 计算互感
% 输入三个变量时计算两个不同高度不同半径同轴圆环的互感、自感;输入五个变量时计算圆弧段和圆之间的互感;输入八个变量时计算两个不同高度同轴螺旋圆弧的互感
函数内的变量尽量进行了容易理解的命名,如上述函数中的半径r1,r2
,高度差h
,带材厚度Ply
,角度afa1,afa2,bta1,bta2
等
工具函数
项目中的工具函数以tool
开头,函数功能结尾,主要用于产生预处理的数据,如
%tool_level_2_2_Mutual_inductance_Matrix.m - 描述二级模型与二级模型之间的互感
% 三级模型-整个单饼;二级模型-每匝一个元素;一级模型-T*A个元素,输入高度差input,输出互感列向量output
...
save([this_path,'/level_2_2_Mutual_inductance_Matrix.mat'],'level_2_2_Mutual_inductance_Matrix');
program_3_level_magnet_Current_Change.m
三级尺度模型仿真32.35T磁体的电流、温度和磁场变化。一级模型为每匝分解为36个元素,二级模型为每匝为一个元素,三级模型为每个单饼一个元素
program_3L_self_adaption.m
以自适应时间间隔仿真磁体的电流变化,使用三级模型,(自适应的尝试没有成功)
program_4_level_magnet_Current_Change.m
四级尺度模型仿真32.35T磁体的电流变化,零级模型为三维模型,将带材在宽度上划分为40份,(只有DP3的第101匝被细分)
program_20_Single_pancake_Current_Change
仿真一个20个单饼的磁体的电流-温度和磁场变化,其中第一个单饼为一级模型,其他19个单饼为二级模型
program_Current_Change.m
针对单饼的早期仿真尝试,使用的子函数少
program_Data_prepare.m
早期的数据预处理尝试
program_Double_pancake_Current_Change.m
针对的单个双饼的仿真,只考虑垂直磁场,一侧为一级模型,一侧为二级模型
program_L3_Bg_Quench.m
以三级模型仿真背场磁体失超时内插磁体的电流变化
program_level_2_20_Single_pancake_Current_Change.m
以二级模型仿真20个单饼的电流变化,早期用于验证多尺度模型,忽略环向电阻
program_level_2_20_Single_pancake_Current_Change.m
二级模型的电流变化,用来验证多尺度模型,增加三级模型的影响,忽略环向电阻
program_Symmetric_DP_Current_Change.m
利用对称结构的双饼进行大致计算,早期用于验证多尺度模型
% program_3_level_magnet_Current_Change.m
% 三级尺度模型仿真电流变化:一级模型为每匝分解为36个元素,二级模型为每匝为一个元素,三级模型为每个单饼一个元素
%% 运算环境
disp('运算环境处理...')
programdate = datestr(datetime,'yyyymmdd_hhMMss');
this_path = '/public1/home/sc40009/QinLang/TME-model'; % A区
%this_path = '/public1/home/sc40009/QinLang/From Lptp_2/TME-model'; % D区
addpath(this_path);
disp('运算环境处理完毕...')
%% 导入数据
disp('正在载入数据...')
IC = 1./1.09;
% Lv.1模型
load('Single_pancake_Mutual_inductance_Matrix.mat','-mat'); %一级模型每个元素的互感矩阵,包括自感
...
disp('数据导入完毕!')
%% 初始化数值
disp('变量初始化中...')
[T,A,r0,Ply,W] = single_pancake_parameter(0); %单饼参数
%时间初始值
t = 0;
...
%% 数据预处理
disp('数据预处理中...')
% 根据一级模型的位置调整二级模型对一级模型的垂直场和互感影响
Vertical_Field_Matrix_2_1 = fun_VMF_beta(level_2_2_Vertical_Field,Beta_up,Beta_down);% 二级垂直场计算矩阵
...
%% 数据记录
disp('展开记录文件...')
% 记录值
current_record = zeros(N_4,loop_number);%电流记录
...
disp('开始循环运算...')
%% 循环计算
for loop_count = 1:loop_number
% 循环时间
tic
dt = 15;%fun_Time_Interval_Control('time',t); %此次循环对应的时间间隔
...
% 组合成为一个方程组
Equation = ...
% 解方程
organize_time = toc;tic
I = real(Equation\Canstant);
%% 记录
current_record(:,loop_count) = I;%记录电流
...
%% 显示
...
end
%% 保存记录
save([this_path,'/record/','record_',programdate,'.mat'],'time_record','current_record','temperature_record','voltage_record','field_record','Circle_Resistance_Matrix_1_record','Circle_Resistance_Matrix_2_record');