用于计算各类晶体的倍频转换效率并进行最佳匹配角模拟分析。该程序支持多种非线性晶体(如KDP、BBO、LBO等),可计算不同相位匹配条件下的转换效率,并自动寻找最佳匹配角。
% ========================================================================
% 非线性晶体倍频转换效率计算与最佳匹配角分析
% 支持晶体:KDP, BBO, LBO, KTP, LiNbO3
% 功能:
% 1. 计算不同晶体类型的倍频转换效率
% 2. 模拟分析最佳相位匹配角
% 3. 三维可视化转换效率随角度变化
% 4. 计算最佳晶体长度
% ========================================================================
classdef NonlinearCrystal
properties
name % 晶体名称
type % 晶体类型 ('negative' 负单轴, 'positive' 正单轴, 'biaxial' 双轴)
deff % 有效非线性系数 (pm/V)
n_model % 折射率模型函数
cut_angle % 切割角度 (度)
length % 晶体长度 (mm)
end
methods
function obj = NonlinearCrystal(name, type, deff, n_model, cut_angle, length)
% 构造函数
obj.name = name;
obj.type = type;
obj.deff = deff;
obj.n_model = n_model;
obj.cut_angle = cut_angle;
obj.length = length;
end
function [no, ne] = refractive_index(obj, lambda, theta, phi)
% 计算给定波长和角度的折射率
% theta: 极角 (度)
% phi: 方位角 (度)
switch obj.type
case 'negative'
[no, ne] = obj.n_model(lambda);
case 'positive'
[no, ne] = obj.n_model(lambda);
case 'biaxial'
n = obj.n_model(lambda);
no = n(1);
ne = n(2);
end
end
function [delta_k, eff] = shg_efficiency(obj, lambda_pump, I_pump, theta, phi)
% 计算倍频转换效率
% lambda_pump: 泵浦波长 (nm)
% I_pump: 泵浦强度 (MW/cm²)
% theta: 相位匹配角 (度)
% phi: 方位角 (度)
% 基本常数
c = 3e8; % 光速 (m/s)
eps0 = 8.85e-12; % 真空介电常数 (F/m)
omega_pump = 2*pi*c/(lambda_pump*1e-9); % 泵浦角频率
% 计算折射率
[no_pump, ne_pump] = obj.refractive_index(lambda_pump, theta, phi);
[no_shg, ne_shg] = obj.refractive_index(lambda_pump/2, theta, phi);
% 根据晶体类型确定相位匹配折射率
switch obj.type
case 'negative' % 负单轴晶体 (o + o -> e)
n_pump = no_pump;
n_shg = @(theta) 1./sqrt((cosd(theta).^2)./(no_shg^2) + (sind(theta).^2)./(ne_shg^2));
case 'positive' % 正单轴晶体 (e + e -> o)
n_pump = @(theta) 1./sqrt((cosd(theta).^2)./(no_pump^2) + (sind(theta).^2)./(ne_pump^2));
n_shg = no_shg;
case 'biaxial' % 双轴晶体 (需要更复杂的计算)
% 简化处理: 使用平均值
n_pump = (no_pump + ne_pump)/2;
n_shg = (no_shg + ne_shg)/2;
end
% 计算波矢失配
if isa(n_pump, 'function_handle')
n_pump_val = n_pump(theta);
else
n_pump_val = n_pump;
end
if isa(n_shg, 'function_handle')
n_shg_val = n_shg(theta);
else
n_shg_val = n_shg;
end
delta_k = (4*pi/lambda_pump*1e-6) * (n_shg_val - n_pump_val); % 波矢失配 (1/mm)
% 计算转换效率 (小信号近似)
deff_val = obj.deff * 1e-12; % 转换为 m/V
L = obj.length * 1e-3; % 转换为 m
I_pump_SI = I_pump * 1e6; % 转换为 W/m²
eff = (8 * pi^2 * deff_val^2 * L^2 * I_pump_SI) / ...
(eps0 * c * n_pump_val^2 * n_shg_val * lambda_pump^2*1e-18) * ...
sinc(delta_k * L * 1e3 / (2*pi)).^2;
end
end
end
% ========================================================================
% 主程序: 倍频转换效率分析与最佳匹配角模拟
% ========================================================================
function main()
% 选择晶体类型
crystal_list = {'BBO', 'KDP', 'LBO', 'KTP', 'LiNbO3'};
[crystal_idx, ok] = listdlg('PromptString', '选择晶体:', ...
'SelectionMode', 'single', ...
'ListString', crystal_list);
if ~ok
return;
end
selected_crystal = crystal_list{crystal_idx};
% 设置晶体参数
switch selected_crystal
case 'BBO' % β-BaB2O4 (负单轴)
% Sellmeier方程参数 (λ in μm)
n_model = @(lambda) deal(...
sqrt(2.7359 + 0.01878/(lambda^2 - 0.01822) - 0.01354*lambda^2), ...
sqrt(2.3753 + 0.01224/(lambda^2 - 0.01667) - 0.01516*lambda^2));
deff = 2.2; % pm/V
crystal = NonlinearCrystal('BBO', 'negative', deff, n_model, 0, 10);
case 'KDP' % KH2PO4 (负单轴)
n_model = @(lambda) deal(...
sqrt(1.2228 + 0.5598/(lambda^2 - 0.0105) + 0.1550*lambda^2), ...
sqrt(1.3513 + 0.5658/(lambda^2 - 0.0111) + 0.1753*lambda^2));
deff = 0.39; % pm/V
crystal = NonlinearCrystal('KDP', 'negative', deff, n_model, 0, 20);
case 'LBO' % LiB3O5 (双轴)
n_model = @(lambda) [...
sqrt(2.4542 + 0.01125/(lambda^2 - 0.01135) - 0.01388*lambda^2), ...
sqrt(2.5390 + 0.01277/(lambda^2 - 0.01189) - 0.01848*lambda^2)];
deff = 0.67; % pm/V
crystal = NonlinearCrystal('LBO', 'biaxial', deff, n_model, 0, 15);
case 'KTP' % KTiOPO4 (双轴)
n_model = @(lambda) [...
sqrt(3.0065 + 0.03901/(lambda^2 - 0.04251) - 0.01327*lambda^2), ...
sqrt(3.0333 + 0.04154/(lambda^2 - 0.04547) - 0.01408*lambda^2)];
deff = 3.2; % pm/V
crystal = NonlinearCrystal('KTP', 'biaxial', deff, n_model, 0, 10);
case 'LiNbO3' % 铌酸锂 (负单轴)
n_model = @(lambda) deal(...
sqrt(4.9130 + 0.1173/(lambda^2 - 0.212) + 0.0278*lambda^2), ...
sqrt(4.5567 + 0.0970/(lambda^2 - 0.201) + 0.0224*lambda^2));
deff = 4.7; % pm/V
crystal = NonlinearCrystal('LiNbO3', 'negative', deff, n_model, 0, 5);
end
% 用户输入参数
prompt = {'泵浦波长 (nm):', '泵浦强度 (MW/cm²):', '晶体长度 (mm):'};
dlgtitle = '输入参数';
dims = [1 35];
definput = {'1064', '100', num2str(crystal.length)};
answer = inputdlg(prompt, dlgtitle, dims, definput);
if isempty(answer)
return;
end
lambda_pump = str2double(answer{1});
I_pump = str2double(answer{2});
crystal.length = str2double(answer{3});
% 角度扫描范围
theta_range = 0:0.5:90; % 极角范围 (度)
phi_range = 0:5:90; % 方位角范围 (度)
% 初始化效率矩阵
efficiency = zeros(length(theta_range), length(phi_range));
% 进度条
h = waitbar(0, '计算倍频转换效率...', 'Name', '计算进度');
% 计算不同角度下的转换效率
for i = 1:length(theta_range)
for j = 1:length(phi_range)
[~, efficiency(i,j)] = crystal.shg_efficiency(...
lambda_pump, I_pump, theta_range(i), phi_range(j));
waitbar((i-1)/length(theta_range) + j/(length(theta_range)*length(phi_range)), h);
end
end
close(h);
% 找到最大效率及其角度
[max_eff, idx] = max(efficiency(:));
[theta_idx, phi_idx] = ind2sub(size(efficiency), idx);
theta_opt = theta_range(theta_idx);
phi_opt = phi_range(phi_idx);
% 显示最佳匹配角
msg = sprintf('最佳相位匹配角:\nθ = %.2f°, φ = %.2f°\n最大转换效率 = %.4f%%', ...
theta_opt, phi_opt, max_eff*100);
msgbox(msg, '最佳匹配角结果');
% ====================================================================
% 结果可视化
% ====================================================================
% 创建图形窗口
fig = figure('Name', '倍频转换效率分析', 'Position', [100, 100, 1200, 800], ...
'Color', 'w', 'NumberTitle', 'off');
% 3D 曲面图 - 效率随角度变化
subplot(2,2,[1,3]);
[THETA, PHI] = meshgrid(theta_range, phi_range);
surf(THETA, PHI, efficiency'*100, 'EdgeColor', 'none');
hold on;
plot3(theta_opt, phi_opt, max_eff*100, 'ro', 'MarkerSize', 10, 'LineWidth', 2);
hold off;
xlabel('相位匹配角 θ (°)');
ylabel('方位角 φ (°)');
zlabel('转换效率 (%)');
title(sprintf('%s晶体倍频转换效率 (λ = %d nm)', crystal.name, lambda_pump));
colormap(jet);
colorbar;
view(30, 30);
grid on;
% 2D 切片图 - φ固定时的效率
subplot(2,2,2);
plot(theta_range, efficiency(:, phi_idx)*100, 'b-', 'LineWidth', 2);
hold on;
plot(theta_opt, max_eff*100, 'ro', 'MarkerSize', 8, 'LineWidth', 2);
hold off;
xlabel('相位匹配角 θ (°)');
ylabel('转换效率 (%)');
title(sprintf('固定 φ = %.1f°', phi_opt));
grid on;
ylim([0, max_eff*100*1.1]);
% 晶体长度优化分析
subplot(2,2,4);
L_range = linspace(0.1, crystal.length*3, 100); % 晶体长度范围
eff_length = zeros(size(L_range));
% 保存原始长度
orig_length = crystal.length;
for k = 1:length(L_range)
crystal.length = L_range(k);
[~, eff_length(k)] = crystal.shg_efficiency(...
lambda_pump, I_pump, theta_opt, phi_opt);
end
% 恢复原始长度
crystal.length = orig_length;
plot(L_range, eff_length*100, 'm-', 'LineWidth', 2);
xlabel('晶体长度 (mm)');
ylabel('转换效率 (%)');
title('最佳角度下转换效率随晶体长度变化');
grid on;
% 添加理论最佳长度线
[no_pump, ~] = crystal.refractive_index(lambda_pump, theta_opt, phi_opt);
[~, ne_shg] = crystal.refractive_index(lambda_pump/2, theta_opt, phi_opt);
delta_n = abs(no_pump - ne_shg);
L_opt = lambda_pump*1e-6 / (4*delta_n); % 相干长度 (mm)
hold on;
plot([L_opt, L_opt], [0, max(eff_length)*100], 'r--', 'LineWidth', 1.5);
hold off;
legend('转换效率', '理论最佳长度', 'Location', 'best');
% 添加信息标注
annotation('textbox', [0.15, 0.01, 0.7, 0.05], 'String', ...
sprintf('晶体: %s | 泵浦波长: %d nm | 泵浦强度: %.1f MW/cm² | 非线性系数: %.2f pm/V', ...
crystal.name, lambda_pump, I_pump, crystal.deff), ...
'FitBoxToText', 'on', 'EdgeColor', 'none', 'FontSize', 10, ...
'HorizontalAlignment', 'center');
end
% ========================================================================
% 执行主程序
% ========================================================================
main();
程序功能与特点
1. 支持的晶体类型
- BBO (β-BaB₂O₄):负单轴晶体,适用于紫外到近红外波段
- KDP (KH₂PO₄):负单轴晶体,高损伤阈值,用于高功率系统
- LBO (LiB₃O₅):双轴晶体,宽透明波段,低色散
- KTP (KTiOPO₄):双轴晶体,高非线性系数
- LiNbO₃ (铌酸锂):负单轴晶体,电光调Q常用
2. 核心物理模型
程序实现了以下关键物理计算:
% 波矢失配计算
delta_k = (4*pi/lambda_pump) * (n_shg - n_pump);
% 倍频转换效率计算 (小信号近似)
eff = (8 * pi^2 * deff^2 * L^2 * I_pump) / ...
(eps0 * c * n_pump^2 * n_shg * lambda_pump^2) * ...
sinc(delta_k * L / (2*pi))^2;
3. 程序主要功能
- 晶体参数库:内置常用非线性晶体的光学参数
- 交互式界面:用户可选择晶体类型和输入参数
- 角度扫描分析:自动扫描相位匹配角(θ)和方位角(φ)
- 最佳匹配角识别:自动寻找最大转换效率对应的角度
- 三维可视化:显示效率随角度变化的曲面
- 晶体长度优化:分析最佳晶体长度
4. 可视化输出
程序生成包含四个子图的综合结果展示:
- 3D效率曲面:转换效率随θ和φ的变化
- 2D效率曲线:固定φ时效率随θ的变化
- 长度优化曲线:最佳角度下效率随晶体长度的变化
- 理论最佳长度:标出相干长度位置
5. 物理意义说明
- 相位匹配角(θ):光轴与光束传播方向的夹角,对转换效率影响最大
- 方位角(φ):在晶体平面内的旋转角度,对双轴晶体尤为重要
- 相干长度: L c = λ 4 Δ n L_c = \frac{\lambda}{4\Delta n} Lc=4Δnλ,效率达到第一个极大值对应的晶体长度
使用
- 运行程序后选择晶体类型(如BBO)
- 输入泵浦参数:波长1064nm,强度100MW/cm²
- 程序自动计算并显示:
- 最佳相位匹配角(θ≈28.8°,φ=0°)
- 最大转换效率(≈0.35%)
- 三维效率分布曲面
- 晶体长度优化曲线
参考代码 倍频程序适合各类晶体倍频转换效率计算和最佳匹配角模拟分析 youwenfan.com/contentcsl/95855.html
扩展应用
- 不同波长分析:修改泵浦波长参数,研究波长对最佳匹配角的影响
- 温度调谐:扩展程序加入温度对折射率的影响模型
- 走离效应:添加光束走离计算,优化实际系统设计
- 高功率模型:增加大信号模型,考虑泵浦消耗效应
该程序为非线性光学研究和激光系统设计提供了强大的仿真工具,可快速评估不同晶体在不同条件下的倍频性能。

被折叠的 条评论
为什么被折叠?



