MPB官方网站示例程序的重复
​​​​​​Tutorial - MPB DocumentationMPB官网给出了一个示例程序说明最大化三角晶格光子晶体第一带隙的方法代码是import mathimport meep as mpfrom meep import mpbimport numpy as npimport matplotlib.pyplot as pltnum_bands 2resolution 32geometry_lattice mp.Lattice(sizemp.Vector3(1, 1),basis1mp.Vector3(math.sqrt(3)/2, 0.5),basis2mp.Vector3(math.sqrt(3)/2, -0.5))geometry [mp.Cylinder(0.2, materialmp.Medium(epsilon12))]k_points [mp.Vector3(), # Gammamp.Vector3(y0.5), # Mmp.Vector3(-1./3, 1./3), # Kmp.Vector3(), # Gamma]k_points mp.interpolate(4, k_points)ms mpb.ModeSolver(geometrygeometry,geometry_latticegeometry_lattice,k_pointsk_points,resolutionresolution,num_bandsnum_bands)ms.mesh_size 7def first_tm_gap(r):ms.geometry [mp.Cylinder(r, materialmp.Medium(epsilon12))]ms.run_tm()return -1 * ms.retrieve_gap(1) # return the gap from TM band 1 to TM band 2from scipy.optimize import minimize_scalarresult minimize_scalar(first_tm_gap, methodbounded, bounds[0.1, 0.5], options{xatol: 0.1})print(radius at maximum: {}.format(result.x))print(gap size at maximum: {}.format(result.fun * -1))按理来说运行完应该出现radius at maximum: 0.176393202250021 gap size at maximum: 48.6252611051049但是我运行以后显示radius at maximum: 0.15835921350012622gap size at maximum: 48.15177339844839和官网的结果不同我的代码完全是从网站上复制下来的我思考了一下应该是“options{xatol: 0.1}”设置的不对容差率设置的太大了改成options{xatol: 0.01})就对了能出现正确结果了这说明官网的程序未必都正确我们接下来看呈现点缺陷超晶胞态的例程按照官网代码原原本本复制以后import mathimport meep as mpfrom meep import mpbimport numpy as npimport matplotlib.pyplot as pltnum_bands 50resolution 16ms.geometry_lattice mp.Lattice(sizemp.Vector3(5, 5))ms.geometry [mp.Cylinder(0.2, materialmp.Medium(epsilon12))]ms.geometry mp.geometric_objects_lattice_duplicates(ms.geometry_lattice, ms.geometry)ms.geometry.append(mp.Cylinder(0.2, materialmp.air))ms.k_points [mp.Vector3(0.5, 0.5)]ms mpb.ModeSolver(geometryms.geometry,geometry_latticems.geometry_lattice,k_pointsms.k_points,resolutionresolution,num_bandsnum_bands)ms.run_tm()ms.get_dfield(25) # compute the D field for band 25ms.compute_field_energy() # compute the energy density from Dc mp.Cylinder(1.0, materialmp.air)print(energy in cylinder: {}.format(ms.compute_energy_in_objects([c])))报错了原来是所有的ms.都应该被去除。改成import mathimport meep as mpfrom meep import mpbimport numpy as npimport matplotlib.pyplot as pltnum_bands 50resolution 16geometry_lattice mp.Lattice(sizemp.Vector3(5, 5))geometry [mp.Cylinder(0.2, materialmp.Medium(epsilon12))]geometry mp.geometric_objects_lattice_duplicates( geometry_lattice, geometry)geometry.append(mp.Cylinder(0.2, materialmp.air))k_points [mp.Vector3(0.5, 0.5)]ms mpb.ModeSolver(geometry geometry,geometry_lattice geometry_lattice,k_points k_points,resolutionresolution,num_bandsnum_bands)run_tm()get_dfield(25) # compute the D field for band 25compute_field_energy() # compute the energy density from Dc mp.Cylinder(1.0, materialmp.air)print(energy in cylinder: {}.format( compute_energy_in_objects([c])))以后就可以得到和官网一样的结果了。再看看 使用算法调节点缺陷的特征频率位置官网教程是import mathimport meep as mpfrom meep import mpbimport numpy as npimport matplotlib.pyplot as pltnum_bands 1resolution 16geometry_lattice mp.Lattice(sizemp.Vector3(5, 5))geometry [mp.Cylinder(0.2, materialmp.Medium(epsilon12))]geometry mp.geometric_objects_lattice_duplicates( geometry_lattice, geometry)geometry.append(mp.Cylinder(0.2, materialmp.air))k_points [mp.Vector3(0.5, 0.5)]ms mpb.ModeSolver(geometry geometry,geometry_lattice geometry_lattice,k_points k_points,resolutionresolution,num_bandsnum_bands)ms.target_freq (0.2812 0.4174) / 2ms.tolerance 1e-8from scipy.optimize import ridderold_geometry ms.geometry # save the 5x5 grid with a missing roddef rootfun(eps):# add the cylinder of epsilon eps to the old geometry:ms.geometry old_geometry [mp.Cylinder(0.2, materialmp.Medium(epsiloneps))]ms.run_tm() # solve for the mode (using the targeted solver)print(epsilon {} gives freq. {}.format(eps, ms.get_freqs()[0]))return ms.get_freqs()[0] - 0.314159 # return 1st band freq. - 0.314159rooteps ridder(rootfun, 1, 12)print(root (value of epsilon) is at: {}.format(rooteps))官网结果是我运行出来的倒数第二行是psilon 5.288831274341146 gives freq. 0.314158999981831最优的介电常数和官网不一致5.28和5.41差的太多了我现在还不知道是什么原因导致的最后看看查看特定模式电磁波分布的代码import mathimport meep as mpfrom meep import mpbimport matplotlib.pyplot as pltimport numpy as np #我发现这一行官网没有需要自己加上num_bands 8resolution 32geometry_lattice mp.Lattice(sizemp.Vector3(1, 1),basis1mp.Vector3(math.sqrt(3)/2, 0.5),basis2mp.Vector3(math.sqrt(3)/2, -0.5))geometry [mp.Cylinder(0.2, materialmp.Medium(epsilon12))]k_points [mp.Vector3(), # Gammamp.Vector3(y0.5), # Mmp.Vector3(-1./3, 1./3), # Kmp.Vector3(), # Gamma]k_points mp.interpolate(4, k_points)ms mpb.ModeSolver(geometrygeometry,geometry_latticegeometry_lattice,k_pointsk_points,resolutionresolution,num_bandsnum_bands)efields []def get_efields(ms, band):efields.append(ms.get_efield(band, bloch_phaseTrue))ms.run_tm(mpb.output_at_kpoint(mp.Vector3(1 / -3, 1 / 3), mpb.fix_efield_phase,get_efields))# Create an MPBData instance to transform the efieldsmd mpb.MPBData(rectifyTrue, resolution32, periods3)converted []for f in efields:# Get just the z component of the efieldsf f[..., 0, 2]converted.append(md.convert(f))for i, f in enumerate(converted):plt.subplot(331 i)plt.contour(converted_eps.T, cmapbinary) #官网上是带有.T的。但是我发现需要去掉.T来获得正确的图片不然的话得到的电磁波分布和EPSILON分布是旋转了90度的。plt.imshow(np.real(f).T, interpolationspline36, cmapRdBu, alpha0.9)plt.axis(off)plt.show()官网的结果是我得到的结果是虽然颜色表示有些不同官网的红色在我这是蓝色反之亦然但是内核是一样的。但是非常奇怪的是我的第78条能带的分布在官网结果中正号颠倒了不知道原因是啥。

相关新闻

RyTuneX上手实测:Windows系统优化、系统清理与隐私保护如何一键完成?

RyTuneX上手实测:Windows系统优化、系统清理与隐私保护如何一键完成?

RyTuneX上手实测:Windows系统优化、系统清理与隐私保护如何一键完成? 【免费下载链接】RyTuneX RyTuneX is a cutting-edge optimizer built with the WinUI 3 framework, designed to amplify the performance of Windows devices. Crafted for both Wi…

2026/10/12 10:36:27 阅读更多 →
告别整夜等待:DeepCFD 物理信息神经网络如何把流体力学预测提速3个数量级

告别整夜等待:DeepCFD 物理信息神经网络如何把流体力学预测提速3个数量级

告别整夜等待:DeepCFD 物理信息神经网络如何把流体力学预测提速3个数量级 【免费下载链接】DeepCFD DeepCFD: Efficient Steady-State Laminar Flow Approximation with Deep Convolutional Neural Networks 项目地址: https://gitcode.com/gh_mirrors/de/DeepCFD…

2026/9/25 23:44:36 阅读更多 →
SolidWorks二次开发:JSON驱动设计与自动化集成实战指南

SolidWorks二次开发:JSON驱动设计与自动化集成实战指南

这次我们来看一个名为“Sw模块JSON”的项目。从标题和相关的网络热词来看,这很可能是一个与SolidWorks(简称SW)软件以及JSON数据格式相关的技术模块或工具。在机械设计、产品研发领域,SolidWorks是应用最广泛的三维CAD软件之一&am…

2026/10/2 10:49:00 阅读更多 →

最新新闻

用FODI将OneDrive变成在线文件分享网站:从Azure部署到上线全指南

用FODI将OneDrive变成在线文件分享网站:从Azure部署到上线全指南

如果你手里有大量文件已经躺在个人OneDrive里,又想让别人打开一个网址就能浏览下载,而不是反复发临时分享链接,那FODI这套OneDrive分享型网盘搭建方案就非常适合你。它用PHP把个人云盘目录变成一个公开站点,访客不登录、不装客户端…

2026/10/12 10:37:29 阅读更多 →
SpringBoot水产养殖管理系统:从架构设计到项目落地

SpringBoot水产养殖管理系统:从架构设计到项目落地

1. 项目概述1.1 这个系统到底在解决什么先别急着看技术选型,咱们把问题掰开揉碎,看看这套系统真正要解决的问题是什么。水产养殖这个行当,和普通的进销存系统有本质区别,池塘里的事特别多,而且环环相扣:水质…

2026/10/12 10:37:29 阅读更多 →
React Native鸿蒙跨端列表页开发:组件化、数据驱动与Flex适配

React Native鸿蒙跨端列表页开发:组件化、数据驱动与Flex适配

平时聊起跨端开发,很多人第一反应是“一套代码到处跑”很潇洒,但真正把列表类页面做到多端落差很小,尤其是接上鸿蒙生态后,你会发现大量功夫都花在组件拆解、数据驱动和适配细节上。这篇文章就围绕“React Native鸿蒙跨平台列表类…

2026/10/12 10:37:29 阅读更多 →
数字正则表达式避坑指南:整数、小数与表单校验实战

数字正则表达式避坑指南:整数、小数与表单校验实战

写表单做校验这么多年,数字正则看起来是最不起眼的需求,真上手才发现里面全是坑。你以为写个^\d$就完事了?用户给你输入个-3.14、.5、1e10、01,分分钟教你重新做人。这篇教程我把自己在实际项目中踩过的坑、沉淀下来的写法全整理了…

2026/10/12 10:37:28 阅读更多 →
给AI Agent装上外挂大脑:mem0记忆系统实战指南

给AI Agent装上外挂大脑:mem0记忆系统实战指南

1. 为什么我们需要给 AI Agent 装一个“外挂大脑”做过 AI Agent 项目的人都有一个共同的痛:上下文窗口再大,也扛不住多轮对话的消耗。你精心设计的系统提示词、用户的历史偏好、之前几轮对话里确认过的关键信息,一旦超出 token 上限&#xf…

2026/10/12 10:37:28 阅读更多 →
LDA主题分析实战:豆瓣长评论建模全流程与Python实现

LDA主题分析实战:豆瓣长评论建模全流程与Python实现

简介:这是一套基于LDA主题模型的豆瓣长评论分析项目,面向需要完成NLP方向毕业设计、课程设计的学生,也适合希望快速上手文本主题建模的开发者。项目覆盖数据预处理、停用词过滤、LDA建模、困惑度与主题一致性评估,以及词云、主题热…

2026/10/12 10:36:27 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →