6个版本
0.3.2 | 2020年4月17日 |
---|---|
0.3.1 | 2019年5月27日 |
0.2.0 | 2018年1月22日 |
0.1.1 | 2018年1月9日 |
#343 in 模拟
每月 41次下载
用于 6 个Crates(4个直接使用)
105KB
1.5K SLoC
POSACAR格式的Rust
[dependencies]
vasp-poscar = "0.3.2"
用于表示晶体化合物的POSCAR文件格式的解析器和打印器。
POSCAR主要是维也纳从头算模拟包(VASP)使用的输入文件格式,它已经得到了与晶体学和分子动力学相关的广泛软件的良好支持。
示例
示例文件
cubic diamond
3.7
0.5 0.5 0.0
0.0 0.5 0.5
0.5 0.0 0.5
C
2
Direct
0.0 0.0 0.0
0.25 0.25 0.25
示例代码
extern crate vasp_poscar;
use vasp_poscar::{Poscar, ScaleLine};
// read from a BufRead instance, such as &[u8] or BufReader<File>
let file = io::BufReader::new(File::open("POSCAR")?);
let poscar = Poscar::from_reader(file)?;
// get a RawPoscar object with public fields you can freely match on and manipulate
let mut poscar = poscar.into_raw();
assert_eq!(poscar.scale, ScaleLine::Factor(3.7));
poscar.comment = "[Subject Name Here] was here".into();
poscar.scale = ScaleLine::Volume(10.0);
// Turn back into a Poscar for writing.
// Notice Poscar implements Display.
let poscar = poscar.validate()?;
print!("{}", poscar); // default uses dtoa crate to format floats (roundtrip precision)
print!("{:>9.6}", poscar); // you can also specify flags to format each float
关于格式的说明
整体视角
POSCAR格式主要包含两到三个关键信息
- 一个 周期性晶格。
- 一个单位细胞中位点的 坐标。
- (从Vasp 5开始) 与位点关联的 元素符号。
POSCAR中的结构在 三维 上始终是周期的。低维结构通过为非周期性方向分配一个长的周期长度 (一个“真空分离”) 来近似表示。这可以与只能表示非周期性结构的XYZ文件进行对比。
POSCAR还有一些可选部分,这些部分可能主要只由VASP本身使用
- 速度
- 选择动态,允许位点被约束在晶格向量的子集上移动。
- (待办事项) ...嗯... “预测校正”。
细节
不幸的是,格式也严重缺乏规范。
有关VASP自身文档,请参阅此处:http://cms.mpi.univie.ac.at/vasp/guide/node59.html。有关文件中每个元素的目的和语义的问题,请参阅该页面。
关于格式语法的一种更完整的规范(如本crate实现)可以在doc/format.md中找到。
本crate的范围
vasp-poscar
主要是一个后端crate,用于读取和写入文件格式。其目标是提供
- 合理的错误诊断,特别关注容易犯的错误
- 可往返的精度;当读取POSCAR时,它不会自动将比例因子吸收到晶格矩阵中,也不会将所有内容转换为它喜欢的表示形式(直接相对于笛卡尔)。这些是您的决定!
vasp-poscar
次要是一个crate,用于管理文件中存在的冗余数据形式。特别是
- 获取缩放后的晶格和真实的笛卡尔坐标
- (待办事项)在直接和笛卡尔表示之间转换
- (待办事项)根据比例因子和晶格进行操作(例如,在比例和体积之间切换,或将比例因子吸收到晶格中)
vasp-poscar
实际上并不是一个用于做科学的crate。它永远不会提供对称性分析、原始结构搜索、超单元构建、位置扰动或平面切割等功能。这些事情根本不是它的职责。
预期是,由vasp-poscar
读取的数据可以用来构建一个更通用且更具意见的Structure
类型的实例——该类型由另一个crate实现。(当然,如果您正在设计此类类型,我们邀请您依赖这个crate作为解析后端!)
许可证
根据您的要求,许可为以下之一
- Apache许可证,版本2.0(LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确声明,否则任何有意提交以包含在您的工作中的贡献,根据Apache-2.0许可证定义,都应双许可如上所述,没有任何额外条款或条件。
依赖项
~105KB