自动生成测试位置吸附脚本设计思路

前言

计算一个异质结需要测试对比不同吸附位置之间的能量差异,可以直接手动建模,但是人太懒了,能交给机器的自己就别动手

问题描述

在这里插入图片描述

如图上所示是我计算吸附用的衬底,当原子在上面吸附时我考虑了25个(可以随便取,看需求)位置,如下表矩阵,手动弄却是有点头痛,

x、y0.10.350.50.70.9
0.10.1, 0.10.1, 0.35
0.350.35, 0.10.35, 0.35
0.5
0.7
0.90.9, 0.9

脚本处理思路

先贴出我的POSCAR

3D\Atomistic
1.03.6405000687         0.0000000000         0.0000000000-1.8202500343         3.1527655419         0.00000000000.0000000000         0.0000000000        32.8615989685Br      Ru   Ga    S1        1    2    3
Direct0.748189991         0.421450019         0.6179900170.103529994         0.109910011         0.6656600240.359649986         0.670469999         0.4959400000.708169997         0.353230000         0.3821200130.356599987         0.667739987         0.4282900090.025920033         0.023759961         0.5277299880.021280050         0.019580007         0.347180009
1,POSCAR分析

我POSCAR分两部分,Ga2S3是我的衬底,BrRu是我的吸附原子,其中要考虑的就是Ru原子在Ga2S3上的吸附,当Ru原子移动时,Br原子也得跟着一起移动

所以我需要修改的是第9段和第10段,其他的段不变,

2,处理流程

1.1,Ru的x坐标设置为0.1,Y依次设置为0.1,计算随动的Br原子的x,y坐标。保存POSCAR
1.2, Ru的x坐标设置为0.1,Y依次设置为0.2,计算随动的Br原子的x,y坐标,保存POSCAR
。。。。。
。。。。。
。。。。。
51.2, Ru的x坐标设置为0.9,Y依次设置为0.9,计算随动的Br原子的x,y坐标,保存POSCAR

3代码解释

这只是一个脚本思路,在使用时应该根据自己的实际情况改动

# 目标坐标值 ---这个值需要根据你需要的位置自行修改
POSX=(0.1 0.35 0.5 0.7 0.9)
POSY=(0.1 0.35 0.5 0.7 0.9)#读取不动段
firstpostion=$(sed -n '1,8p' POSCAR)  ##我读取了前8段,这是不需要修改的部分
endpostion=$(sed -n '11,15p' POSCAR)  ##我的POSCAR里12到16段是固定的衬底不需要修改# 读取需要修改的原子坐标值,如果你的体系大有需要可以添加更多行
read -r x9 y9 z9 <<< "$(sed -n '9p' POSCAR)"
read -r x10 y10 z10 <<< "$(sed -n '10p' POSCAR)"for ((i=0; i<5; i++)); #每行的值
dofor ((j=0; j<5; j++));  #每列的值do# 计算你需要的新坐标的位置,到Ru原子目前位置之间的距离差diff_x=$(echo "${POSX[$i]} - $x11" | bc)diff_y=$(echo "${POSY[$j]} - $y11" | bc)#Br(第9行)原子的新位置new_x9=$(awk " BEGIN{ printf \"%.8f\", $x9 + $diff_x}" )new_y9=$(awk " BEGIN{ printf \"%.8f\", $y9 + $diff_y}" )# 处理超出边界的情况()if (( $(echo "$new_x9 > 1" | bc -l) )); thennew_x9=$(awk " BEGIN{ printf \"%.8f\", $new_x9 - 1}" )fiif (( $(echo "$new_y9 > 1" | bc -l) )); thennew_y9=$(awk " BEGIN{ printf \"%.8f\", $new_y9 - 1}" )fi        # 将坐标值乘以10X=$(echo "${POSX[$i]} * 10" | bc)Y=$(echo "${POSY[$j]} * 10" | bc)# 创建一个以坐标位置命名的文件夹,并且将准备好的INCAR, KPOINTS, POTCAR一起复制进去。folder_name="${X}_${Y}"mkdir "$folder_name"cp INCAR KPOINTS POTCAR "$folder_name/"# 将计算得到的更新的POSCAR写入echo -e "$firstpostion" > "$folder_name/POSCAR"echo -e "$new_x9 $new_y9 $z9" >> "$folder_name/POSCAR"echo -e "${POSX[$i]} ${POSY[$j]} $z11" >> "$folder_name/POSCAR"echo -e "$endpostion" >> "$folder_name/POSCAR"done
done

我将脚本命名为pos.sh
使用前需要

chmod 777 pos.sh
./pos.sh

这样就可以得到一系列的文件
在这里插入图片描述

这文件夹有点多,如果懒的一个个投,我们可以使用vasp.pbs进行遍历计算

!/bin/bash
# just for reference
path=`pwd`
for c in *.*
docd $path/$cecho `pwd`mpirun -np 24 vasp_ncl > logrelax   #   ! vasp_job_soc.sh为vasp_ncl作业脚本cd ${path}
done

计算完成后,如果懒得一个个查能量,可以使用我写的read.sh读取数据
对于不同的情况需要做修改。

###############loactions###############################################end###################
cat >f_date<< !
坐标    磁矩        能量          优化步数     收敛情况    
!for q  in 1.0 3.50 5.0 7.0 9.0 
do
for i in 1.0 3.50 5.0 7.0 9.0 
do
X=$(echo "$q" | bc)
Y=$(echo "$i" | bc)
folder_name="${X}_${Y}"cd  $folder_name/long_log=`echo | wc -l logscf| awk '{print$1}'`situation=`echo|awk NR==$long_log logscf`log_max=$(tail -n 3 logscf | awk '{print $2}')#cd scf/magnetic=`echo |grep F OSZICAR| sed -n '$p' | awk '{print$10}'`enegry=`echo|grep 'energy(sigma->0) =' OUTCAR| sed -n '$p' | awk '{print$7}'`cd ..#echo $tall_date >> f_date
cat >f_date1<< !
$q  $i   $magnetic    $enegry         $log_max             $situation   
!
head -1 f_date1 >> f_date
done
done
rm f_date1

得到结果如下

在这里插入图片描述

处理数据

接着对坐标进行简单的处理,把他用ecel转化成平面坐标,在导入orign即可得图
在这里插入图片描述

结语

只是临时弄得还很粗糙,后续慢慢改进。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/573006.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Xilinx IDDR及ODDR使用和仿真

平台&#xff1a;Vivado2018 官方相关文档&#xff0c;ug471_7Series_SelectIO.pdf 关于IDDR与ODDR Input DDR Resource(IDDR) 外部的数据在时钟的上下沿同时传输数据&#xff0c;我们可以使用IDDR原语将输入的单bit数据转化为2bit的数据输出。同时数据速率变为原来的二分之一…

hadoop 查询hdfs资源信息的方式

hdfs dfsadmin -report &#xff3b;-live&#xff3d;&#xff3b;-dead&#xff3d;&#xff3b;-decommissioning&#xff3d;

OSCP靶场--GLPI

OSCP靶场–GLPI 考点(CVE-2022-35914 php执行函数绕过ssh端口转发jetty xml RCE) 1.nmap扫描(ssh端口转发) ## ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.194.242 -sV -sC --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-26 22:22 EDT Nmap…

基于Rflysim平台的无人机拦截三维比例导引算法仿真

【后厂村路钢铁侠出品】 一、Rflysim简介 RflySim是一套专为科研和教育打造的Pixhawk /PX4 和MATLAB/Simulink生态系统或工具链&#xff0c;采用基于模型设计&#xff08;Model-Based Design&#xff0c; MBD&#xff09;的思想&#xff0c;可用于无人系统的控制和安全测试。…

nginx代理服务后,有关文件的操作无法执行,nginx代理jupyter或为知笔记后无法创建文件及文件夹,无法操作文件

nginx配置 server {listen 18001; # 修改转发的接口listen [::]:18001; # 修改转发的接口server_name _;root /usr/share/nginx/html;location / {proxy_pass http://127.0.0.1:7777; # 指定自己服务地址proxy_set_header Host $host;}# Load configurat…

react+redux完成登录页面及token的存取和登录保持

reactredux完成登录页面及token的存取和路由守卫 关于登录页面&#xff0c;我在写vue项目的时候&#xff0c;写了很多篇博客来记录。原因是登录确实比较复杂&#xff0c;涉及前后端联调、全局数据管理、浏览器本地存储等多个环节的技术。框架换成react后&#xff0c;逻辑是一样…

虹科Pico汽车示波器 | 免拆诊断案例 | 2018款东风风神AX7车发动机怠速抖动、加速无力

一、故障现象 一辆2018款东风风神AX7车&#xff0c;搭载10UF01发动机&#xff0c;累计行驶里程约为5.3万km。该车因发动机怠速抖动、加速无力及发动机故障灯异常点亮而进厂维修&#xff0c;维修人员用故障检测仪检测&#xff0c;提示气缸3失火&#xff1b;与其他气缸对调点火线…

【Flink架构】关于FLink BLOB的组织架构:FLIP-19: Improved BLOB storage architecture:官网解读

文章目录 一. BlobServer架构1.BlobClient2. BlobServer3. BlobCache4. LibraryCacheManager 二、BLOB的生命周期1. 分阶段清理2. BlobCache的生命周期3. BlobServer 三、文件上下载流程1. BlobCache 下载2. BlobServer 上传3. BlobServer 下载 四. Flink中支持的BLOB文件类型1…

electron打包桌面版.exe之vue项目踩坑(vue3+electron 解决打包后首页打开空白,打包后路由不跳转及请求不到后端数据等问题)

vue项目https://www.qingplus.cn/components-web/index打包桌面版问题集合 一、静态资源加载问题 npm run electron_dev桌面版运行后页面空白&#xff0c;内容未加载。 填坑&#xff1a; 打包配置要用相对路径 vite.config.ts文件中的base要改成./&#xff0c;之前加了项目…

AWS基础网络产品及协同架构-Networking

简介 一个完整的AWS网络架构图&#xff0c;包含了如下能力&#xff1a; Users (用户): 表示使用AWS服务的用户或系统。 SaaS (软件即服务): 表示在AWS上运行的软件服务&#xff0c;如企业微信可能作为SaaS提供。 example.com?: 这可能是一个示例域名&#xff0c;用于展示如何…

ES面试题

1、如何同步索引库 同步调用 在完成数据库操作后&#xff0c;直接调用搜索服务提供的接口 异步通知 在完成数据库操作后&#xff0c;发送MQ消息 搜索服务监听MQ&#xff0c;接收到消息后完成数据修改 监听binlog 2、分词器 ik分词器 ik_smart ik_max_word 自定义分词器 以拼…

Zookeeper的系统架构

先看一张图&#xff1a; ZooKeeper 的架构图中我们需要了解和掌握的主要有&#xff1a; 1&#xff1a; ZooKeeper分为服务器端&#xff08;Server&#xff09; 和客户端&#xff08;Client&#xff09;&#xff0c;客户端可以连接到整个ZooKeeper服务的任意服务器上&#xff…