【解决次级亥姆霍兹方程的数值模拟】采用Douglas-Gunn交替方向隐式(DG-ADI)方法高效地模拟在具有任意折射率配置的各种光纤几何结构中电场传播的有限差分光束传播方法(FD-BPM)

  💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

 ⛳️赠与读者

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

【解决次级亥姆霍兹方程的数值模拟】采用Douglas-Gunn交替方向隐式(DG-ADI)方法高效地模拟在具有任意折射率配置的各种光纤几何结构中电场传播的有限差分光束传播方法(FD-BPM)

此外,本文还包含了用于快速傅立叶变换光束传播方法的求解器FFT_BPM。

折射率可以被定义为2D或3D折射率之一。

对于2D折射率,假设在整个段内它保持不变,除非您定义了任何可能存在的锥形和扭曲。对于3D折射率,数组的第三维对应于沿段长度的不同z坐标。

还要注意,在运行段之后,最终的折射率剖面存储在模型中(P.n),准备自动用作下一个段的输入。

您可以从一个段重新定义仿真网格到下一个段(例如,如果一个段需要比其他段更精细的分辨率)。在这种情况下,折射率将自动从旧网格插值到新网格,使用interpn函数,无需用户交互。

定义折射率的两种方法:

方法1,使用initializeRIfromFunction()
这种方法可能是最常见的,它由在模型文件末尾定义一个MATLAB函数组成,该函数将提供2D或3D(可能是复杂的)折射率剖面作为输出。

运行initializeRIfromFunction()函数,如示例1(对于2D)或示例14(对于3D)所示,使BPM-Matlab将您的函数应用于仿真网格,以准备运行求解器。

如果要使用2D折射率剖面,您定义的函数必须以4个参数作为输入:X,Y,n_background和nParameters。nParameters是一个通常为空的单元数组,但用户可以自行使用。例如,用户可能选择将不同元素作为单元数组nParameters的核心宽度,核心折射率等。

如果要使用3D折射率,函数必须以5个参数作为输入:X,Y,Z,n_background和nParameters。

initializeRIfromFunction()函数的语法是:P = initializeRIfromFunction(P,hFunc,nParameters,Nz_n);这里,hFunc是一个MATLAB函数句柄,通常是通过@运算符生成的(见示例1)。在运行initializeRIfromFunction()以初始化3D折射率时,只有在执行initializeRIfromFunction()时才需要参数Nz_n。它描述应该在多少个z切片上评估函数(见示例14)。Nz_n应该足够高,以解析z方向上的所有结构,但它越高,求解器需要的内存就越多,运行速度就越慢。

方法2,手动定义P.n
如果您的折射率是非平凡的,并且您希望从数据文件中加载它,可以使用此方法。在这种方法中,您通过手动设置属性来定义折射率对象P.n。参见示例12。P.n是一个带有五个属性的“BPMmatlab.refractiveIndexProfile”对象:

📚2 运行结果

运行结果图太多,就不一一展示。

部分代码:
 

%% Resolution-related parameters (check for convergence)
P.Lx_main = 20e-6;        % [m] x side length of main area
P.Ly_main = 10e-6;        % [m] y side length of main area
P.Nx_main = 200;          % x resolution of main area
P.Ny_main = 100;          % y resolution of main area
P.padfactor = 1.5;  % How much absorbing padding to add on the sides of the main area (1 means no padding, 2 means the absorbing padding on both sides is of thickness Lx_main/2)
P.dz_target = 1e-6; % [m] z step size to aim for
P.alpha = 3e14;             % [1/m^3] "Absorption coefficient" per squared unit length distance out from edge of main area

%% Problem definition
P.lambda = 1000e-9; % [m] Wavelength
P.n_background = 1.45; % [] (may be complex) Background refractive index (in this case, the cladding)
P.n_0 = 1.47; % [] reference refractive index
P.Lz = 2e-4; % [m] z propagation distances for this segment

P.xSymmetry = 'Symmetry'; % Symmetry under mirroring in the x axis
P.ySymmetry = 'NoSymmetry'; % Symmetry under mirroring in the y axis

P = initializeRIfromFunction(P,@calcRI);
P = initializeEfromFunction(P,@calcInitialE);

% Run solver
FD_BPM(P);

%% Same simulation, without use of symmetry
P.figNum = 4;
P.xSymmetry = 'NoSymmetry';
P.ySymmetry = 'NoSymmetry';
P.Ly_main = 20e-6;        % [m] y side length of main area
P.Ny_main = 200;          % y resolution of main area
FD_BPM(P);

%% Simulation with antisymmetry in x but ordinary symmetry in y
P.figNum = 8;
P.xSymmetry = 'AntiSymmetry';
P.ySymmetry = 'Symmetry';
P.Lx_main = 10e-6;        % [m] x side length of main area
P.Nx_main = 100;          % x resolution of main area
P.Ly_main = 10e-6;        % [m] y side length of main area
P.Ny_main = 100;          % y resolution of main area

P = findModes(P,10,'plotModes',true);
P.E = modeSuperposition(P,1:4);

FD_BPM(P);

%% Same as above, without use of symmetry
P.figNum = 12;
P.xSymmetry = 'NoSymmetry';
P.ySymmetry = 'NoSymmetry';
P.Lx_main = 20e-6;        % [m] x side length of main area
P.Nx_main = 200;          % x resolution of main area
P.Ly_main = 20e-6;        % [m] y side length of main area
P.Ny_main = 200;          % y resolution of main area

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]姜彦吉.震电效应下井外点力源激发井孔声电场的理论研究与数值模拟[J].吉林大学, 2010.

[2]杨阳,曹玉脉,王向丽,等.黏性各向异性等离子体对Kelvin-Helmholtz不稳定性的影响[J].西北师范大学学报:自然科学版, 2022, 58(1):51-57.

🌈4 Matlab代码实现

资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

                                                           在这里插入图片描述

  • 9
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值