请不要再跟我要 readband.py 了!

June 19, 2013

我曾经在 2009 年写过一篇 phonopy 的简单介绍,那个时候 phonopy 算出的声子谱,还不能方便的提取数据,用来在 origin 等软件中画图。

所以我就写了一个简单的工具,readband.py , 用来提取声子谱数据。

现在都过去 4 年了,phonopy 已经有了巨大的改进,我写的那个 phonopy 简单介绍早就过时了。readband.py 也早就不适用了,也没有必要存在了。

而现在几乎每天都有人给我写信要 readband.py 这个工具。

我就很纳闷,难道大家都不看 phonopy 的文档么?

http://phonopy.sourceforge.net/auxiliary-tools.html

bandplot

Band structure is plotted reading phonopy output in band.yaml format. -o option with a file name is used to save the plot into a file in PDF format. A few more options are prepared and shown by -h option. If you specify more than two yaml files, they are plotted together.

bandplot band.yaml

To obtain a simple text format data:

bandplot --gnuplot band.yaml

如果你想把数据放在 origin 等软件里面画图,直接执行

bandplot –gnuplot band.yaml > band.dat

就可以了。

提示:其中 band.dat 的第一行是 q 点的位置。

 

5

逝去的暑假

September 1, 2012

本来计划这个暑假应该是我在东北,或者说是吉大渡过的最后一个暑假,但是悲剧的是我被老板无情的延期了,所以我应该还有一个暑假要在吉大渡过。这样算来我就是要在长春呆上十年了,从 二十岁到三十岁,我的青春都扔在了这个地方。

其实我说“暑假”这个词还是有点矫情的,因为我自从上了研究生以后,就没有暑假了。不过姑且还是用“暑假”这个此来形容这段时间吧。

这个暑假可能是我近年来读完书最多的一个暑假,一共是 7 本。《史蒂夫·乔布斯传》 、《信仰之旅》、《黑客与画家》、《拖延心里学》、《异类》、《番茄工作法》、《不二》。能读下去书,其实 Kindle 还是立下了不少功劳的,以上的所有书都是在 Kindle 上读完的。话说 Kindle 还真是一个看书的利器,和电脑相比他可以让你专注的看书,和纸质书相比,他会更方便携带和掌握,总之这个是可以让你沉浸下去看书的设备。

我个人是对电子书的未来充满信心,纸质书可能只会落入到仅仅成为收藏品的地步。

有些人认为纸质书有很多不可替代的特点,比如当你翻看多年前在书边留下的笔记时,就有一种时间的沧桑感,这个是电子书没法给你的。是的,我承认纸质书的确有一些无法可以替代的特点。

但是,我之前还听过一个故事。有一些文人特别讨厌人们对月亮的科学探索,因为探索的结果就是月球上一篇荒芜,凄凉。之前在文学作品中描写的美好的月亮的映像都破灭了,再也不浪漫了。但是,能因为满足一部分人的浪漫的幻想,就要停止科技的进步么?

0

瞧病

August 14, 2012

吃饭时,食道堵堵的感觉已经快有一个月了。之前一直没怎么在意,偶尔一次看到一个关于食道健康问题的视频,我才注意到我的食道好像不舒服已经有一段时间了。后来的一段时间,这种感觉并没有消失,反而越来越严重。吃米饭的时候感觉食道有些疼,而且感觉胸骨后点点的刺痛和胸闷。

我隐约感到有一件不妙的事情发生在我身上。于是我上网去查关于‘吞咽困难,疼痛’等症状时,发现结果和我的预感是一致的。

于是我做好了去医院的准备,并同时开始思考我的余生要如何渡过。虽然我年龄还算是年轻,但是这种事情也并不完全是和年龄正相关。

于是我开始和一些弟兄姐们开始分享这个事情,我感觉我必须要找人说说这事。因为我的自私希望有人来关心我。当我和一些弟兄姐妹分享这件事情的时候,大家基本都是带着安慰的口吻。但是有一位姐妹说,“这是个好事情啊,你刚好可以借着这个事情好好的去思考一下生命。”

不得不说,这位姐妹的话语虽然有些直,但是的确是我心里所想的。原因不是别的,是因为如果这个时候不去思考生命,不去思考神在我生命上的作为的时候,我就感觉没有指望了。

但是同时,对于生命的结束我自己倒是不难受,毕竟我可以结束痛苦和主见面。我却是担心活着的人的感受,我的新婚妻子和我年迈孤身一人的母亲。

今天,我去了医院,钡餐,拍片。

结果一个小时后就出来了,医生说我得了食道炎和胃炎。

不是我担心的那两个字。于是我跟我的妻子说,看来我们还不用这么快说道别。

从我还没有离开医院的时候一直到晚上,不停的收到一些弟兄姐妹的关心和询问。

我感谢主对我生命的保守,感谢主所赐给我的妻子能一直在安慰陪伴我,感谢弟兄姐妹能甘愿听我的吐槽,能在我陷入困境的时候,伸出援助的手。

0

Hello world!

August 26, 2011

Welcome to WordPress. This is your first post. Login with the username admin and password OpenShiftAdmin to delete this post and begin blogging! (But first, remember to change your password!)

2

永别了,google dict

August 9, 2011
Tags: ,

话说,google dict 是我最喜欢的词典了~
不知道 google 是怎么想的~
算了,以后就用有道词典吧~

1

喜欢文化杉

June 15, 2010
Tags: ,

现在非常喜欢文化杉,去年搞个两个 python 的文化杉(因为我喜欢 python ,平常也经常使用它),今天又买了两个 DA CODE 文化杉,是 apple4.us 那帮人搞出来的。第一眼看到这系列文化杉就特别喜欢,很喜欢这种风格,也觉得很有内涵。zeuux-babe-python-chumo-cool

我是一个还比较喜欢有内涵的衣服,但又不喜欢去挑衣服的人。所以当看到我非常喜欢的文化杉时都想要一件。

发现中文 wikipedia 上没有关于“文化杉”的词条,在百度百科上查到了文化杉的历史。

美国士兵在第一次世界大战期间,注意到欧洲士兵使用的棉质内衣轻巧舒适,而自己的士兵则穿着羊毛(绵)制服,大汗淋漓。这种棉质汗衫在美国士兵之间马上成为抢手货,并其形状而称之为T恤。第二次世界大战期间,T恤成为了美国陆军及海军的标准内衣。
二战后T恤开始以外衣形式出现。约翰·韦恩、马龙·白兰度、詹姆士·狄恩都曾在全国电视如此穿着过。公众当初对此大为惊讶,但到了1955年社会开始接受这种服装。詹姆士·狄恩在电影《无因的反抗》(Rebel Without A Cause)中的穿着,让T恤成为时尚的服装。
1960年代,T恤成为了西方潮流中年轻人和摇滚音乐爱好者的基本装束。人们也开始以扎染和丝网印刷等方式改装T恤,女装吊带背心、香港俗称“鸡翼袖”的背心、紧身T恤、V领等也逐渐开始流行。
自此,T恤成为了自我表达甚至宣传的媒介,展示的图案包罗万有,可以是文字、图画甚至是照片,因此也被称作“文化衫”。
它不仅仅是一件好看的衣服,更是穿着者对个人生活喜好与信仰的一种自由表达。

说到穿文化杉更是对个人生活喜好与信仰的一种自由表达,我现在所拥有的文化杉全是关于我自己的爱好(python, mac 等),却没有一件是关于基督信仰的,在长春房角石书店的确有一些关于基督的文化杉,但是质量却不怎么好。嗯,希望下次和他们提一下这个问题,如果能有质量和设计更好一点的文化杉,我会很乐意买的。

或许我可以帮忙设计一件,话说我还是很喜欢这种设计的,虽然我不太懂~ -_-!

17

突破学校的路由器封禁

May 23, 2010
Tags: , , ,

最近学校网络中心疯狂查封小路由器,我们实验室不幸被查封。看来以后用路由上网是不太可能了。解决方法可以用 iptables 做个路由器,然后根据学校查路由的方法写防查规则,但是查路由的方法有很多种,也不知道学校是如何查的,于是这种方法就放弃了。用 squid 搭代理服务器也是很有可能被查出来的,目前比较方便的解决方法就是用 ssh 隧道方式作代理了,这种发法应该室查不出来的。

不过对于 ssh -D 所得到的 socks5 代理肯定是没有路由上网方便。毕竟不是全局代理,有些软件是用不了代理的,这就需要把 socks5 代理转换成全局的代理。对于 windows 来说很简单,装上 Proxifier 就可以了。

对于 Linux 则麻烦一些,需要 redsocks 这个程序。安装后,在 redsocks 目录下,建立 redsocks.conf 文件:

base {
	log_debug = on;
	log_info = on;
	 //日志文件,调试时可指定为标准错误"stderr"
	log = "file:/home/hedaors/redsocks/socks.log";

	// 是否以后台模式运行
	daemon = on
	redirector = iptables;
}

redsocks {
         //local_ip设置为0.0.0.0则可共享,设备为127.0.0.1则只能在本机使用
	local_ip = 0.0.0.0
	local_port = 12345;

	// 本来有的代理的IP和端口,可能是由ssh -D指定的
	ip = 127.0.0.1;
	port = 1080;

	// known types: socks4, socks5, http-connect, http-relay
	type = socks5;
}


建立个 iptables 规则脚本, tpsocks.sh

#!/bin/sh

# iptables路径
IPTABLES="/usr/sbin/iptables"

# redsocks路径
REDSOCKS_DIR="/home/hedaors/redsocks"
REDSOCKS="$REDSOCKS_DIR/redsocks"

# 配置文件中指定的端口
REDSOCKS_PORT="12345"

# socks代理IP和端口
SOCKS_HOST="127.0.0.1"
SOCKS_PORT="1080"

# 运行redsocks
if [ "$USER" != "root" ]; then
	echo -n 'Restarting redsocks... '
	pkill -U $USER redsocks 2>/dev/null
	sleep 1
	cd $REDSOCKS_DIR && $REDSOCKS
	if [ $? -eq 0 ]; then
		echo Done
	else
		echo Error
	fi
	exit 0;
elif [ "$1" != "iptables" ]; then
	exit 0
fi

$IPTABLES -t nat -D PREROUTING -p tcp -j REDSOCKS_FILTER 2>/dev/null
$IPTABLES -t nat -D OUTPUT     -p tcp -j REDSOCKS_FILTER 2>/dev/null
$IPTABLES -t nat -F REDSOCKS_FILTER 2>/dev/null
$IPTABLES -t nat -X REDSOCKS_FILTER 2>/dev/null
$IPTABLES -t nat -F REDSOCKS 2>/dev/null
$IPTABLES -t nat -X REDSOCKS 2>/dev/null

# Create our own chain
$IPTABLES -t nat -N REDSOCKS
$IPTABLES -t nat -N REDSOCKS_FILTER

# Do not try to redirect local traffic
$IPTABLES -t nat -I REDSOCKS_FILTER -o lo -j RETURN

### 以下是iptables策略配置,包括白名单和黑名单,默认开启白名单
### 你应该至少修改一行配置,也很简单

## Do not redirect LAN traffic and some other reserved addresses. (blacklist option)
# 黑名单选项:指定的分组通过默认路由转发,其它的都转向SOCKS代理
$IPTABLES -t nat -A REDSOCKS_FILTER -d 0.0.0.0/8 -j RETURN
$IPTABLES -t nat -A REDSOCKS_FILTER -d 127.0.0.0/8 -j RETURN
$IPTABLES -t nat -A REDSOCKS_FILTER -d 169.254.0.0/16 -j RETURN
$IPTABLES -t nat -A REDSOCKS_FILTER -d 172.16.0.0/12 -j RETURN
$IPTABLES -t nat -A REDSOCKS_FILTER -d 192.168.0.0/16 -j RETURN
$IPTABLES -t nat -A REDSOCKS_FILTER -j REDSOCKS

# Redirect all traffic that gets to the end of our chain
# 将未指定的转发到SOCKS代理,实际上不会用到
$IPTABLES -t nat -A REDSOCKS   -p tcp -j REDIRECT --to-port $REDSOCKS_PORT

## Filter all traffic from the own host
# 将分组转到REDSOCKS_FILTER,以保证对分组的区分处理,作用于本机
## BE CAREFULL HERE IF THE SOCKS-SERVER RUNS ON THIS MACHINE
$IPTABLES -t nat -A OUTPUT     -p tcp -j REDSOCKS_FILTER

# Filter all traffic that is routed over this host
# 将分组转到REDSOCKS_FILTER,以保证对分组的区分处理,作用于子网
$IPTABLES -t nat -A PREROUTING -p tcp -j REDSOCKS_FILTER

echo IPtables reconfigured.


打开redsocks

./tp-socks.sh

加载iptables策略

sudo ./tpsocks.sh iptables

好了,现在就可以傲视学校的网络中心了。

PS: 因为redsocks 不能把 dns 在远端解析,所以还要在 主机上做个 dns 转发,要安装 bind9 软件包。在 /etc/bind/named.conf 里的 options 字段里加入:

forwarders { 8.8.8.8;  }

forward only;

重启 named 服务就行了。
6

玻璃窗的瞬间

October 7, 2009
Tags:

玻璃窗被钉住的瞬间
当锤击已经停止
当小艺离去
当长春已经在忘却

那无形地坐在
角落里的四个学者
起身

--------------------------------------------

哈哈,这是一首用程序自动生成的诗,来自 http://www.dopoem.com/

4

Phonopy 计算声子谱

October 7, 2009
Tags: ,

(2012.8.14) update: 现在这个教程已经严重过时,已经不适合最新的 phonopy 版本了。

1. Phonopy 简介

Phonopy 是一个由 python 实现的的晶体声子分析程序。它是目前提供了 VASP 的 Wien2k 的接口用来计算原子受力。它的主要功能有:

计算声子色散谱;
计算声子态密度,包括分立态密度;
声子热力学性质,包括自由能,热容量,焓;

Phonopy 通过力常数的方法计算声子谱。力常数由计算原子在超晶胞中被移动后的受力得到(Parlinsk-Li-Kawasoe 方法)。

同样类型的程序还有 phon, fropho, phonon. 其中 phonon 是商业软件,卖的很贵,fropho 和 phonopy 的代码其实都是来自于 phon, fropho 是为了代替 phon 而开发的,目的是为了使用 phon 更方便,phon 和 fropho 主要都是由 fortran 开发的,而现在 fropho 已经停止开发,由 python 开发的 phonopy 代替了 fropho, phonopy 在使用上更为方便,在计算量上更为减少。因为 phon, fropho 和 phonon 在移动原子位置时都是一次只移动一个原子的一个方向,而 phonopy 则可以一次移动一个原子的多个方向,所以和其它程序相比, phonopy 最多可以减少 2/3 的计算量。

2. Phonopy 的安装

phonopy 主要由 python 开发,其中的找晶体空间群功能是由 C 语言(spglib)实现。在安装 phonopy 时需要安装以下它所依赖的软件包:

Python 的开发包
numpy , numpy-dev
matplotlib
python-lxml
python-yaml

如果是使用的 Ubuntu/Debian 系统只需:
sudo aptitude install python-dev python-numpy
python-matplotlib python-tk python-lxml python-yaml

如果是 OpenSUSE 则可以去 http://software.opensuse.org/search 搜索下载安装相关软件包。

去 https://sourceforge.net/projects/phonopy/ 下载 phonopy 的最新软件包.

解压后进入 软件包的 c 目录,

su
python setup.py install

编译安装所需要的 python 模块。

将 PATH/phonopy-0.6.1 $PATH 里:
比如: export PATH=~/opt/phonopy-0.6.1:$PATH

3. Phonopy 的简单使用

下面我以 BC5 为例说明如何和 VASP 做接口计算声子谱:

a, 建立超胞

准备 POSCAR 文件
单胞和原胞都可以

准备 INPHON 文件

ATOM_NAME = B C
NDIM = 2 2 1
LSUPER = .TRUE.

简单说明:
第一行为原子符号名 B C ,注意要和 POSCAR 中的顺序相同。
第二行为要建的超胞的维数。
第三行是指要建立移动原子的 POSCAR.

然后输入命令:
phonopy.py

就会输出 DISP, POSCAR-* (001, 002, 003, …)
在本例出会输出 12 个 POSCAR-*, 依次为 POSCAR-001,…POSCAR-012

b, 计算力常数

将这些 POSCAR-* 做 SCF, 将输出文件 vasprun.xml 保存下来。
我的计算脚本为:

#!/bin/sh

for a in 01 02 03 04 05 06 07 08 09 10 11 12
do
cp POSCAR-0$a POSCAR
/opt/intel/impi/3.1/bin64/mpiexec -n 8 /share/apps/vasp/bin/vaspmpi_mkl10_O1 >>out.vasp 2>>err.vasp &
wait
cp vasprun.xml vasprun.xml-0$a
done

我的 INCAR 为:

SYSTEM = BC5
PREC = Accurate
ENCUT = 520
EDIFF = 1e-5
NSW = 0
ISMEAR = 0
SIGMA = 0.05
LCHARG = FALSE
LWAVE = FALSE

这样计算结束后会得到 vasprun.xml-001, …, vasprun.xml-012

然后,执行命令:
phonopy.py -f vasprun.xml-*

就会得到文件 FORCES

c, 得到声子谱

有了文件 FORCES 后就可以计算声子谱了,这时将 INPHON 改为以下内容:

ATOM_NAME = B C
NDIM = 2 2 1
ND = 7
NPOINTS = 51
QI = 0.0 0.0 0.5 0.0 0.5 0.5 0.0 0.5 0.0 0.0 0.0 0.0 0.5 0.5 0.0 0.5 0.0 0.0 0.5 0.0 0.5
QF = 0.0 0.5 0.5 0.0 0.5 0.0 0.0 0.0 0.0 0.5 0.5 0.0 0.5 0.0 0.0 0.5 0.0 0.5 0.5 0.5 0.5

简单说明:
ND 是指有几条路径;
NPOINTS 是指在每两个高对称性点间插入多少个点,包括边界;
QI 和 QF 给出路径的起始和结束点。

其中我用的 Q 点顺序为:
0.0 0.0 0.5 Z
0.0 0.5 0.5 T
0.0 0.5 0.0 Y
0.0 0.0 0.0 G
0.5 0.5 0.0 S
0.5 0.0 0.0 X
0.5 0.0 0.5 U
0.5 0.5 0.5 R

执行 命令
phonopy.py -p

即可画出声子谱, 如果执行 phonopy.py -p -s 即可将声子谱曲线保存为 PDF 文件。
其中 声子谱的数据是以 yaml 格式保存在 band.yaml 里的。

如果你想用 Origin, Qtiplot, Xmgrace 等工具画图的话,可以用我写的 python 脚本,readband.py (http://www.zhuli.name/file/readband.py) 将 band.yaml 转换一下,输出文件有两个 band.dat, qpoint.dat.
其中 band.dat 是声子谱数据, qpoint.dat 是高对称性点的数据。

以上只是 phonopy 的其本用法,如果要计算声子态度度和热力学性质的话可以参考
http://phonopy.sourceforge.net 上的文档,还是比较简单的。

我的计算结果:

screenshot_001

11

解决 flash 输入框不能输中文

September 30, 2009
Tags: , ,

在英文 Linux 下的浏览器里的 flash 输入框输入中文时会出现乱码,但是把中文复制过去却没有问题。这个问题在 亦歌,gtalkd gadget 等程序里都会出现。
但在中中文 Linux 下就没有这个问题 。

如果不想把 linux 的默认语言换为中文的话,可以通过一个有点点 dirty 的方式解决。

我平时该要用 firefox ,由是我在 /usr/bin/firefox 里的开头加上了一行 LANG=zh_CN.UTF-8 , 即为

#!/bin/sh
LANG=zh_CN.UTF-8

即将 firefox 在临时的中文环境下启动,这样 flash 里输入中文就不会出乱码了。

0