没有合适的资源?快使用搜索试试~ 我知道了~
软件X 15(2021)100741原始软件出版物PyGLLE:一个求解广义Lugiato-Lefever方程的Python工具包Oliver Melchert,Ayhan Demircan德国汉诺威莱布尼茨大学量子光学研究所(IQO),邮编:30167PhoenixD(光子学、光学和工程-跨学科创新),德国汉诺威ar t i cl e i nf o文章历史记录:收到2020年2021年6月9日接受保留字:非线性偏微分方程耗散孤子a b st ra ct我们提出了一个Python工具包,用于模拟耗散孤子的传播动力学,的Lugiato-Lefever方程(LLE),包括三阶和四阶色散项。此外,所提供的软件允许准备的初始条件,由固定的本地化解决方案的标准LLE在异常群速度色散制度。自定义控制参数和初始条件的传播场景可以由用户通过简单的类数据结构指定。我们展示了实现的功能,显示如何获得固定的解决方案的标准LLE包含耗散孤子,并展示不同的特性传播的情况。PyGLLE软件包是开源的,并在公开可用的软件库中根据X11许可证发布。版权所有©2021作者。由爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)中找到。代码元数据当前代码版本1.0用于此代码版本的代码/存储库的永久链接https://github.com/ElsevierSoftwareX/SOFTX_2020_88法律代码许可证MIT许可证使用的代码版本控制系统无使用Python、GitHub的软件代码语言、工具和服务编译要求,操作环境依赖性pyGLLE包需要Python,numpy和scipy。所提供的示例需要Pythonmatplotlib来生成图形。如果可用,链接到开发人员文档/手册代码中提供的文档问题支持电子邮件melchert@iqo.uni-hannover.de1. 介绍The 它最初是为了研究非线性响应、泵浦损耗光谐振腔中的模式形成而引入的[1],它构成了具有附加阻尼和驱动的非线性薛定谔方程(NSE)的变体。在保守的NSE中,孤波解,即孤子,具有特殊的意义。它们描述了由于色散和非线性效应的平衡而存在的局部场脉冲,并且传播时不改变其形状[2在LLE的情况下,通讯作者:量子光学研究所(IQO),莱布尼茨大学汉 诺 威 ,30167汉诺威,德国。电子邮件地址:melchert@iqo.uni-hannover.de(Oliver Melchert),demircan@iqo.uni-hannover.de(Ayhan Demircan)。https://doi.org/10.1016/j.softx.2021.100741耗散孤子[1,5,6]。这些是嵌入在均匀背景场中的局部耗散结构(LDS)虽然这两个模型是密切相关的,LLE不满足任何的NSEs守恒律和没有明确的耗散孤子解是已知的。由LLE及其广义变体描述的系统允许详细研究单个LDS以及LDS的稳定聚集体的动力学[7-9 ],类似于在保守系统中研究的特别是,对于具有克尔非线性的谐振器的倍频程跨越频率梳的建模,重要的是还要考虑高阶色散[112. 软件解决的科学问题该软件解决的科学问题是场AA(x, t)在时间t中的传播,服从广义2352-7110/©2021作者。 由Elsevier B.V.出版。这是一篇开放获取的文章,使用CC BY许可证(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表SoftwareX期刊主页:www.elsevier.com/locate/softxOliver Melchert和Ayhan Demircan软件X 15(2021)1007412=-=−= −≥ − ≤≤XXXLugiato–Lefever equationA = P −(1− iθ)A−(id2<$2− d3<$3− id4<$4)A + i|一|2A(1)文件夹scripts/包含主要Python模块,实现用户提供的代码(参见第3.2节)与对于t坐标间隔上的0XXX,满足边界条件A(X,t)A(X,t)并且从初始条件A0(x)A(x,t0)开始。场的演化,由方程描述。 (1),由频率失谐量θ,均匀标量驱动场振幅P,二阶、三阶和四阶色散参数d2,d3和d4,Re决定。标准LLE,即具有附加阻尼和驱动的NSE的变体,由(d2,d3,d4)(1, 0, 0)指定。随后,我们提出了我们的数值实现的广义Lugiato-Lefever方程的形式方程的主要特点。(1),包括求解包含一个或多个局部耗散结构的标准LLE的稳态解的功能。提供的Python包pyGLLE来自我们的研究软件,其开发目的是简单易用,可扩展和可重用。 例如,它可以很容易地通过高阶的线性和非线性项进行修正,并且可以直接实现基于非均匀驱动场或以下形式的耦合方程的模型: 当量(一).3. 软件描述pyGLLE是使用Python编程语言[15]并依赖于numpy和scipy的功能[16]。3.1. 源码结构所提供的软件具有以下模块化结构[17]:pyGLLE/src/data_handler.pystationary_solution.pysolver.pyscripts/pyGLLE.pynumExp01_stationarySolution/main_findStationarySolution.py run.shpp_figure/numExp02_propagationScenarios/main_findStationarySolution.pymain_propagateInitialCondition.pyrun.sh pp_figure_propagation场景/文件夹src/包含实现软件基本功能的模块:data_handler.py提供了一个处理数据累积和输出的类。输出数据使用numpy原生npz-格式存储,参见第3.3.1节。stationary_solution.py提供的函数允许获得齐次稳态解和稳态解,对于给定的控制参数θ,P和固定的(d2,d3,d4)=(−1,0, 0),可能包括一个或多个局部耗散结构。solver.py实现了方程的数值积分的求解器(1)使用显式高阶这可以通过在函数求解器中重新设置积分器类型来改变。文件夹src/中的模块:pyGLLE.py 定 义 了findStationarySolut- ion ( 参 见 第 3.3.2节)和propagateInitialCondit-ion(参见第3.3.1节)的主要函数。这些功能实现了所提供软件的主要功能。文件夹numExp01_stationarySolution/和num-Exp02_propagationScenarios/分别包含实现第4.1节和第4.2节中详述的示例的脚本。有关以上定义的函数的更详细描述模块,它们的参数和返回值,我们参考代码中提供的示例案例和文档[19]。3.2. 传播场景一个简单的Python类形成了用户定义的代码和pyGLLE之间的接口。它允许定义系统参数,用于设置计算域,指定控制参数和实现初始条件。这个类(这里称为SIM_SETUP,在清单1中有详细说明)需要声明和指定后续的属性和方法。列表1:用于指定传播场景的Python类。1class SIM_SETUP:2#--COMPUTATIONALDOMAIN-3NX=“啊!!- -REQUIRESINT--!!“的4xMax=“啊!!- -REQUIRESFLO AT-!!“的5Nt=“啊!!- -REQUIRESINT--!!“的6tMax=“啊!!- -REQUIRESFLO AT-!!“的7nSkip=“啊!!- -REQUIRESINT--!!“的8#--模型参数-=-9d2=“!!- -REQUIRESFLO AT-!!“的10d3=“!!- -REQUIRESFLO AT-!!“的11d4=“!!- -REQUIRESFLO AT-!!“的12你好!!- -REQUIRESFLO AT-!!“的13P=“!!- -REQUIRESFLO AT-!!“的14号--输出数据--15fName=“!!- -REQUIRESTR---!!“的1617d e finitial_field(self,x):18raise我不执行命令用户定义的属性。以下属性使用格式Nx(int):用于离散化x坐标的网格点数。为获得最佳性能,应将其设置为2的整数倍。xMax(float):x坐标的边界。在内部,离散x网格以宽度dx=2*xMax/(Nx+1)的等距步长从最小值-xMax延伸到(唯一的)最大值xMaxNt(int):用于离散化t坐标。tMax(float):沿传播坐标t的最大网格点的值。离散t网格以宽度dt=tMax/Nt的等距步长从0延伸到tMax。nSkip(int):在模拟运行期间,仅存储每个第nSkiptheta(float):频率失谐。P(float):均匀驱动场振幅。d2(float):二阶色散参数。d3(float):三阶色散参数。d4(float):四阶色散参数。fName(str):模拟运行期间生成的数据的输出文件名···········Oliver Melchert和Ayhan Demircan软件X 15(2021)1007413=X=X=-()下一页为|+的|=函数findStationarySolution和为||条件D|2|2 DX =0,在传播图 1. 用 户 定义的 试验解决方案的 比较试验和优化通过找到复值解A0(x),使得F(A0(x))0,其中F是Nx维对象F(A)= P −(1 − iθ)A + i<$2A + i|一|凌晨2(二)这里采用的求根过程的近似试探解的一个例子是A试验(x)=AHSS+ALDS(x),(3)其中AHSS表示齐次稳态解,并且LDS(x)是裸局域耗散结构。对于给定的控制参数θ和P,标准LLE的齐次稳态解为[7]Re[AHSS] =P/[1+(IHSS−θ)2],(4)Im[AHSS]=(IHSS-θ)P/[1+(IHSS-θ)2],(5)稳态解A选择具有参数(θ,P)的标准LLE(15,8)。(a)场振幅的比较,以及(b)各个实部和虚部的比较。用户定义的方法。下面的方法是使用for- mat "method-name(arg1,arg 2):prediction“列出的initial_field(self,x):作为参数,函数提供长度为Nx的numpy数组x,表示离散x网格。该函数应返回指定初始条件A0(x)的数组数据3.3. 软件功能浏览主模块pyGLLE.py允许访问IHSS=|的HSS|2是一个解决方案IHSS[1+(θ−IHSS)2] =P2,(6)通过在等式中设置ΔtA0和ΔnA(一).在内部,Eq. (6)是从初始估计I试验P/(θi)开始得到的。作为可能的局域耗散结构的近似试函数,LLE与扰动非线性薛定谔方程的相似性表明[5,20,21]ALDS(x)=<$2θsech θx ei类似于标准的非线性薛定谔孤子。在考虑的情况下,即。对于均匀的驱动场幅度P,a由此得到了常相位θ=θarccos[8θ/πP]DTpropagateInitialCondition,它提供了用户提供的代码(参见第3.2节)与src/文件夹中包含的算法和数据结构之间的接口。随后给出了这些功能的简要描述和实现细节3.3.1. 的函数propagateInitialCondition使用由用户定义的接口类SIM_SETUP的实例提供的控制参数,该函数将计算域和GLLE的实例(即,Eq.(一). 通过调用SIM_SETUP类的方法initial_field来获得初始字段配置GLLE求解器,使用scipy对于t传播,其中使用由SCIPY的fftpack模块提供的快速傅立叶变换来评估x导数。在传播例程终止时,文件夹数据如果不存在,则创建,并且在模拟运行期间生成的数据使用numpy原生npz-格式存储在data/{fName}.npz下(fName由用户指定,请参见第3.2节)。存储的数据包括x(numpy数组):定义计算域的离散x网格。t(numpy数组):离散t-网格定义数据存储的时间坐标。Axt(numpy数组):在模拟运行期间获得的离散字段A(x, t)• info(str):数据管理元数据。3.3.2. 的函数findStationarySolution所提供的软件包括从用户提供的试验函数开始求解标准LLE的稳态解的功能,满足λtA(x, t)0来实现这一点的LLE。注意,pyGLLE并不直接实现完整的试验溶液ALDS(x)。为了在设计上有更大的灵活性可 以 包 括 一 个 或 多 个 LDS 种 子 脉 冲 的 静 态 解 , 期 望 接 口 类SIM_SETUP的用户定义方法initial_field实现类似于Eq.(7)见第4.1节。对于在我们的数值模拟中考虑的控制参数范围,我们发现由方程给出的试验解。(3),其中AHSS和ALDS(x)如上所述,已经接近于适当的稳态解。因此,方程的求根过程。(2)通过根解算器(使用牛顿-克雷洛夫(Newton-Krylov))实现scipy的优化模块提供的方法)快了根查找过程终止后,将创建文件夹data_stationary_solution,并生成具有用户指定文件名的输出文件(参见第节中的示例)。4.1)。存储的数据包括x(numpy数组):定义计算域的离散x网格。Ax0(numpy数组):从根查找过程中得到的离散字段A0(xNx(int):用于离散化网格的网格点的数量。x坐标。• xMax(float):x坐标的边界。• theta(float):频率失谐。• P(float):均匀驱动场振幅。4. 样本结果对 于 给 定 的 控 制 参 数 θ 和 P , 标 准 LLE 表 现 出 齐 次 稳 态 解(HSS)。(6),立方英寸,IHSSHSS2.简而言之,LLE表现出不同的图案形成机制,这些机制可以通过θ值来区分。稳态曲线IHSS(P)·······Oliver Melchert和Ayhan Demircan软件X 15(2021)1007414=−=−=图二. GLLE的不同特征传播场景的图示,从标准LLE的静态解开始。时间演变控制参数(a)(θ,P,d2,d3,d4)=(15,8,−1,0,0),(b)(θ,P,d2,d3,d4)=(15,8,−1,0,0)的强度(左)和光谱强度(右)。04,0),(c)(θ,P,d2,d3,d4)=(15,8,−1,0,0. 001)。是单值的θ=3,多值的θ>3。下面给出的例子考虑了控制参数(θ,P)(15,8),其中存在三种解决方案。在这里,我们专注于在背景字段AHSS 上0的情况。037i 0. 542.第542章可以发展LLE及其广义变体所表现出的局部和图案化结构的动力学的详细分析在物理和数学文献中报道[12,224.1. 寻找标准LLE的固定解作为第一个例子,在文件夹numExp01_stationarySolution中提供,我们展示了如何求解具有控制参数(θ,P)的标准LLE的稳态解(15,8)。清单2中详细介绍了一个示例性Python脚本,它通过实现必要的用户定义接口类SIM_SETUP来简化此任务。 在第15行中,图17是Eq.形式的试验函数。(7)实施。接下来,pyGLLE在内部将此用户提供的局部扰动添加到齐次解,即方程:(4)和(5),并应用求根过程来识别方程(1)的稳态。(二)、图1将用户提供的试验函数与求根过程的结果进行了比较。从图中可以明显看出,试验解决方案已经非常接近优化解决方案。清单2:脚本main_findStationarySolution.py设置一个试验函数来搜索标准LLE的稳态解。1我很抱歉 sys;sys。 path. append( '.. /scripts/2进口PyGLLE3 从numpy进口 圆周率,平方,余弦45class SIM_SETUP:6xMax=20。7Nx= 2**108P =8。9theta= 1510fName=s t a t i o n a r y _ s o l u t i o n。 达特1112d e finitial_field(self,x):13St=sqrt(self. theta)14cosZeta=sqrt(8)*st/self. P/Pi15sinZeta=sqrt(1-cosZeta*cosZeta)16Ax=sqrt(2)* st/cosh(st*x)17return Ax*(cosZeta+1j*sinZeta)1819pyGLLE. 查找StationarySolution(SIM_SETUP())4.2. 不同传播场景作 为 第 二 个 例 子 , 在 文 件 夹 numExp02_propag-ationScenarios中提供,我们展示了如何使用先前确定的标准LLE的静态解进行t-传播Oliver Melchert和Ayhan Demircan软件X 15(2021)1007415−==→ −==-→ −在Eq。(一).清单3中详细介绍了实现接口类SIM_SETUP的脚本,该脚本从文件中获取一个容易确定的固定解决方案。三个示例性传播场景如图所示。二、其中,图。图2(a)展示了前面在4.1节中得到的控制参数(θ,P, d2,d3,d4)(15, 8, 1,0,0)的稳态解。在由GLLE控制的动力学下的传播,即包括更高阶的色散,表现出LDS的LLE的静止解可以演变成具有振荡LDS的解。等 在非零d的情况下,x x对称性被破坏。04(d40)显示在图。 2(b),并保持xx对称的情况下,非零d40的情况下。001(d30)如图所示。2(c).图1所示的空间反转对称性破缺。图2(b)所示的局域结构在传播时向较高x值漂移,可以解释为LDS经历的光谱反冲的结果[20,25]。研究了高阶色散对光学微谐振器中频率梳产生的影响。(1),在Ref. [26]第10段。清单3:脚本main_propagateInitialCondition.py使用固定LLE解作为初始条件调用GLLE求解器1我很抱歉 sys;sys。 path. append('.. /scripts/2进口PyGLLE3进口numpyas NP45class SIM_SETUP:6_path='。/da_stationary_solution/7_fName=s t a t i o n a r y _ s o l u t i o n。 dat。NPZ8_data=np。load(_path+_fName)9_x=_data[' x ' ]10_Ax0=_data[' A x 0 ' ]11xMax=float(_data[12Nx=int(_data[13P=float(_data[14theta=float(_data[1516tMax=6。017Nt=1000018nSkip=2019d2=-1.0020D3=f l o a t(sys.argv[1])21D4=f l o a t(sys.argv[2])2223fName=' ou t F il e. 达特2425d e finitial_field(self,x):26return Self. _Ax02728pyGLLE. propagateIinitialConditionn(SIM_SETUP())5. 影响和结论本文介绍了一个用于研究由广义Lugiato-Lefever方程控制的复场的时间演化的软件包PyGLLE它是基于我们的研究代码,开发了一个强大的重点放在可扩展性和可重用性。它的实用 性 可 以 远 远 超 出 GLLE 的 专 用 上 下 文 , 因 为 它 的 模 块data_handler.py和solver.py可以直接用于作为其他系统的仿真软件解决方案,由一阶偏微分方程建模。第4节中的示例通过说明从传播设置规范到数据可视化的小型工作流程,简要描述了软件的使用它们可以在笔记本电脑上运行,旨在展示访问pyGLLE的核心功能是多么容易,以及如何读取和后处理生成的原始数据我们进一步指出,提供实现细节,可以指导感兴趣的用户调整软件以满足他或她的需求。感兴趣的特定应用包括GLLE支持的局部化结构的动力学研究,以及非线性微谐振器中的频率梳产生。所提供的软件已广泛用于我们的研究工作,包括研究存在三阶色散的振荡耗散孤子的多频辐射的共振发射[27],以及具有负四次群速度色散的GLLE中LDS的动力学[28]。它可以用来复制和建立在其中报告的结果。 pyGLLE软件工具,包括实现第4节中示例结果的脚本,可在[19]下下载竞合利益作者声明,他们没有已知的竞争性财务利益或个人关系,可能会影响本文报告的工作致谢我们感谢德国研究院(DFG)在卓越集群PhoenixD(光子学、光学和工程-跨学科创新)(EXC 2122,项目ID 390833453)内的德国卓越战略下提供的支持。本文的出版由汉诺威莱布尼茨大学开放获取基金引用[1]Lugiato LA,Lefever R.无源光学系统中的空间耗散结构。物理评论快报1987;58:2209-11。[2]Zabusky NJ,Kruskal MD.无碰撞等离子体中“孤子”的相互作用和 初 态 的 重现 。物理评论快报1965;15:240[3]Drazin PG,Johnson RS. Solitons:An Introduction.剑桥:剑桥大学出版社,1989年.[4]Kivshar YS,Agrawal GP.光孤子:从光纤到光子晶体。北京:人民出版社,2003.[5]Cardoso WB,Salasnich L,Malomed BA.带聚焦泵的Lugiato- Lefever方程的局部解。Sci Rep 2017;7:16876.[6]Akhmediev N , Ankiewicz A. 耗 散 孤 子 。 Berlin , Heidelberg : Springer-Verlag.[7]Parra-Rivas P,Gomila D,Colet P,Gelens L.广义Lugiato-Lefever方程中孤子的相互作用和束缚态的形成。欧洲物理学J D2017;71:198。[8]Krupa K,Nithyanandan K,Anabel U,Tchofo-Dinda P,Grelu P.超快耗散光孤子分子内部运动的实时观测。Phys Rev Lett2017;118:243901。[9]Wang ZQ,Nithyanandan K,Coillet A,Tchofo-Dinda P,Grelu P.被动锁模光纤激光器中的光孤子分子复合物。自然通讯2019;10:830.[10]放大图片Stratmann M,Pagel T,Mitschke F.时间孤子分子的实验观察。物理学评论快报2005;95:143902。[11][10]杨文辉,李文辉,李文辉.使用广义平均场Lugiato-Lefever模型模拟倍频程跨越克尔频率梳。Opt Lett2013;38:37-9.[12]Parra-Rivas P,Gomila D,Matías MA,Coen S,Gelens L. Lugiato-Lefever方程中的局域化和图案化结构的动力学决定了光学频率梳的稳定性和形状。物理学修订版A2014;89:043813。[13][10] Gerens L,Gomila D,Van der Sande G,Danckaert J,Colet P,MatíasMA. 非局域介质非线性光学腔中耗散孤子的动力学不稳定性。物理学修订版A2008;77:033841。[14]Tlidi M , Gelens L. 高 阶 色 散 稳 定 了 全 光 纤 腔 中 的 暗 耗 散 孤 子 。 OptLett2010;35:306-8.[15]罗森湾Python参考手册。阿姆斯特丹,荷兰,荷兰:CWI(数学和计算机科学中心); 1995年。[16] Jones E,Oliphant T,Peterson P,et al. SciPy:Open source scientifictools for Python. 2020 年 , [ 在 线 ;访 问 2020-03-09] ( 2001-2018 ) http ://www. scipy.org/网站。[17]组织计算生物学项目的快速指南。PLoS Comput Biol2009;5:e1000424.Oliver Melchert和Ayhan Demircan软件X 15(2021)1007416[18]吴晓波,王晓波,王晓波.求解常微分方程I(第二修订版):非刚性问题。Berlin:Springer-Verlag.[19]梅尔切特岛PyGLLE-Python工具包,用于求解广义Lugiato- Lefever方程。2020,[在线;访问时间:2020-03-09]https://github.com/omelchert/pyGLLE.git。[20]Milián C,Skryabin DV.零群速度色散附近微环谐振腔中的孤子族和谐振辐射。Opt Express2014;22:3732-9.[21]Jang JK,Erkintalo M,Luo K,Oppo G-L,Coen S,Murdoch SG.在交流驱动 的阻 尼非 线性 薛定 谔系 统 中局 部耗 散结 构的 受控 合 并和 湮灭 。 New JPhys2016;18:033034.[22]作者:Miyaji T,Ohnishi I,Tsutsumi Y.一维Lugiato-Lefever方程的分歧分析Physica D 2010;239:2066-83.[23]Mandel R,Reichel W. Lugiato-Lefever方程模拟的频率梳的先验界和全局分叉结果。SIAM J ApplMath2017;77:315-45.[24]吴伟杰,王晓刚,王晓刚. 周期光波导Lugiato-Lefever模型中稳定克尔频率梳的产生。SIAM J Appl Math 2019;79:477[25]放大图片创作者:M.光纤中孤子发射的切伦科夫辐射。物理学修订版A1995;51:2602[26]包成,张磊,张伟,张文,张文,等J Opt Soc Amer B2017;34:715-25.[27]Melchert O,Demircan A,Yulin A.光纤腔中耗散孤子的多频辐射。Sci Rep2020;10:8849.[28]Melchert O,Yulin A,Demircan A.具有负四次群速度色散的广义Lugiato-Lefever模型中局域耗散结构的动力学。Opt Lett2020;54:2764-7.
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功