MPB以及周围软件的浅谈介绍
<br />最近在跑MPB程序,把一些心得体会写下来。如果你对这个领域的知识和程序感兴趣,可以发电子邮件到:ghxandsky@gmail.com<br /><br />a.如果你喜欢物理,特别是固体物理,又喜欢光学,特别是光子晶体,但是你不熟悉计算机,甚至不知道GNU/Linux和*BSD为何物或者没有安装此系统,这没关系,先搜索这方面的资料,强化UNIX风格操作系统的基本命令,这个软件将会很适
最近在跑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
|
|
$ chmod 755 run.sh //该为可执行文件
$ ./run.sh //执行
等待结果,那么就可以得到图片和数据。
至于怎样绘制main.tm.dat和main.te.dat的数据?首先删除这些文件的第一行,替换删除“tmfreqs:,”,除去“、”替换为空格。好了,打开qtiplot把数据读取进去,划出来就可以了。这里粗糙画画。
这里附加一个其他main.ctl脚本的结构生成的三维图形:
谢谢你能看到这里。.^_^.
更多推荐
所有评论(0)