MPB以及周围软件的浅谈介绍

最近在跑MPB程序,把一些心得体会写下来。如果你对这个领域的知识和程序感兴趣,可以发电子邮件到:ghxandsky@gmail.com

a. 如果你喜欢物理,特别是固体物理,又喜欢光学,特别是光子晶体,但是你不熟悉计算机,甚至不知道GNU/Linux和*BSD为何物或者没有安装此系统, 这没关系,先搜索这方面的资料,强化UNIX风格操作系统的基本命令,这个软件将会很适合你。如果有时间,了解一下Scheme,这个语言很大用途,特别 是构建科学计算程序。

b.如果你喜欢计算机,喜欢自由/开源软件,你的机器已经安装了GNU/Linux或者*BSD系统,那么你可以快 速“预览”这个软件,不过,“预览”过后,如果你依然想把源代码洞察清楚,请翻看关于电动力学和固体物理的书籍,甚至还要了解量子力学的内容。如果你只是 从事互联网和计算机行业,这个程序“预览”在此文就为止了,珍惜时间,把精力放在更专注的领域。

c.如果你来自生物信息或者其他搞模拟计算领域的,或许MPB软件的设计“哲学”可以帮助你设计一些高性能计算程序。

d.如果你对以上abc都不“感冒”,纯粹看图片可以了,窥探一下。

以上是我一点心得,但愿可以给读者思想准备。

MPB 全称是MIT Photonic Bands,顾名思义,是MIT科研人员开发的一套关于光子晶体能带结构计算工具,之所以冠名“光子”,因为计算的目的就是为了让普通光源(激光)发出光 能量通过这些“猜想”结构的晶体,使到某些频谱范围的受到限制,就是“禁带”。利用禁带的现象,可以制作光学滤波器,商业化后可以安装在光纤网络交换机 中,提高光通滤波效率能耗,提升性能价格比,促进大规模应用,提高互联网基础设施的带宽,彻底改变“龟速”状况,提高广大人民群众互联网生活的幸福感,构 建和谐社会(小星越吹越远了.^_^.)。说明一个问题,其实物理学研究和广大人民群众是息息相关。

这里说明我的工作平台:硬件 Intel P4 2.8Mhz(HT)、i865G、DDR 1G、Geforece 6800GT 256RAM(原本买来打游戏的,现在却用来搞可视化)、SATAII 500G;软件平台Debian GNU/Linux Lenny 5.05(32bit) ,only use stable ,具体基础软件版本参看debian.org。总的来说:没有钱买新机器,Debian稳定易用。

安装软件环境:

sudo apt-get install mpb h5utils qtiplot nlpot

这里,安装程序自动关联libctl、fftw和guile。

说明一下程序的基本功能:

a.Guile(GPL) 是GNU工程一个项目,主要提供GNU/Linux系统的语言扩展,暂时发现支持C和Scheme(没有深入挖掘),我们知道C语言很快,Scheme脚 本语言很灵活,可不可以把两者结合?对!Guile可以满足你需求,用C语言写核心程序,Scheme写原始数据脚本和递归控制流程,当然,混合编程是一 个很深的学问,慢慢学习(我曾经想过使用Guile对GSL的封装,可惜已经有别人做了,而且公开了,我思想落伍了)。

b.mpb(GPL)提供能带计算的平面波展开法,包含麦克斯韦方程组的变换展开。详细见源代码。

c.h5utils(GPL)是一个可视化的组件,提供生成二维图和三维可视化文件,.v5d和.vtk,可以分别使用vis5d和paraview软件,具体这些程序哪里下载和安装,请自行搜索或者Email我。

d.qtiplot(GPL),Qt界面的绘图软件,功能齐全。

e.libctl(GPL)是一个关于常用晶体格子的函数库,提供晶格和格点的“描述”,向上支持调用,典型的软件有MPB和MEEP。

f.fftw是广泛使用的离散傅立叶变换库之一,类似有GSL,LAPACK和私有的Intel MKL等。

要注意的是,以上软件使用GNU GPL自由软件协议发行。好的,现在默认你已经安装了以上软件。如果不能很好安装或者想使用最新版本,请到MPB官方网站 下载对应软件的最新版本,按照安装提示自行解压安装。

现在要运行测试了,假设目录位置为mpb/,则编写以下文件:

main.ctl 和 run.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
;-------main.ctl-------------

(set! num-bands 8)
;这里设置八个带,是每一个k点计算带的个数

(set! geometry-lattice (make lattice (size 1 1 no-size)
(basis1 (/ (sqrt 3) 2) 0.5)
(basis2 (/ (sqrt 3) 2) -0.5)))
;这里设置晶格的组成结构,晶格基矢为(1 1 no-size),因为是平面的原因
;这里是元包的两个基矢,注意语法


(set! geometry (list (make cylinder
(center 0 0 0) (radius 0.2) (height infinity)
(material (make dielectric (epsilon 12))))))
;设置格点位置放置的晶系,有方格,球,椭圆,圆柱,锥体,台体
;这里设置圆柱,中心(0 0 0),半径0.2,高为无穷大,绝缘介质中,介电常数e=12
;具体的设置见官方文档

(set! k-points (list (vector3 0 0 0) ; Gamma
(vector3 0 0.5 0) ; M
(vector3 (/ -3) (/ 3) 0) ; K
(vector3 0 0 0))) ; Gamma
;设置布里渊区倒空间的k点模样,由于是三角格子,倒空间也是三角格子,
;注意对称性的关系可以减少范围

(set! k-points (interpolate 4 k-points))
;设置k点,使每个k点间隔4个点内差值细分

(set! resolution 32)
;设置分辨率,也就是精确度

(run-tm (output-at-kpoint (vector3 (/ -3) (/ 3) 0)
fix-efield-phase output-efield-z))
;计算TM模式在矢量方向的数值
(run-te)
;计算TE模式
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash

mpb main.ctl >& main.out
h5topng -S 3 epsilon.h5
h5tov5d epsilon.h5
h5tovtk epsilon.h5

mpb-data -r -m 3 -n 32 epsilon.h5
h5ls epsilon.h5

h5topng epsilon.h5:data-new
h5tov5d epsilon.h5:data-new

grep Gap main.out
grep tmfreqs main.out > main.tm.dat
grep tefreqs main.out > main.te.dat

在/mpb目录下输入命令:

$ chmod 755 run.sh  //该为可执行文件
$ ./run.sh                  //执行

等待结果,那么就可以得到图片和数据。

MPB以及周围软件的浅谈介绍

至于怎样绘制main.tm.dat和main.te.dat的数据?首先删除这些文件的第一行,替换删除“tmfreqs:,”,除去“、”替换为空格。好了,打开qtiplot把数据读取进去,划出来就可以了。这里粗糙画画。

MPB以及周围软件的浅谈介绍

这里附加一个其他main.ctl脚本的结构生成的三维图形:

MPB以及周围软件的浅谈介绍


谢谢你能看到这里。.^_^.

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评价参数模型和广义加性模型的统计量主要有以下几个: 1. 平均绝对误差(MAB):是预测值与真实值之间差的绝对值的平均值,用来衡量模型的预测误差大小。MAB越小,说明模型的预测误差越小,预测效果越好。 2. 相对百分误差(MPB):是预测值与真实值之间差的绝对值与真实值之间的比值的平均值,用来衡量模型的预测误差相对大小。MPB越小,说明模型的预测误差相对较小,预测效果越好。 3. 均方根误差(RMSE):是预测值与真实值之间差的平方的平均值的平方根,用来衡量模型的预测误差大小。RMSE越小,说明模型的预测误差越小,预测效果越好。 4. 确定系数(R方):是预测值与真实值之间的相关系数的平方,用来衡量模型的拟合优度。R方越接近1,说明模型的拟合效果越好。 留一交叉检验法是一种常用的模型检验方法,它通过将数据集中的一个观测值作为测试集,剩余的观测值作为训练集,来评估模型的预测性能。具体地,对于每个观测值,模型都会被训练并预测其对应的响应变量,接着通过计算MAB、MPB、RMSE等统计量来评估模型的预测精度。最终,将所有的测试集上的预测精度指标进行平均,得到模型的整体预测性能评估结果。 在比较不同模型的预测效果时,通常可以通过比较MAB、MPB、RMSE等指标来选择最优模型。一般而言,预测效果好的模型应该具有较小的MAB、MPB和RMSE值,以及较高的R方值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值