算例03-震动频率全套

乙醇结构优化

POSCAR准备

bigbro推荐了一个网址还可以 http://www.chemspider.com/Default.aspx
其中可以搜索到.mol文件(操作的时候复制的时候不好复制是可能会用到Alt + shift)
这里首先一个先学一下如何书写POSCAR

首先写出头头

Ethanol
1.0
20.0 0.0 0.0
0.0 20.0 0.0
0.0 0.0 20.0
O C H
1 2 6
Cartesian #以上头部信息 下面是结构信息
  1.4330   -0.5348    0.0000
  0.0078   -0.5407    0.0000
 -0.5147    0.9054   -0.0000
 -0.3506   -1.0670    0.8867
 -0.3506   -1.0670   -0.8867
 -1.6061    0.9135   -0.0000
 -0.1616    1.4335   -0.8875
 -0.1616    1.4335    0.8875
  1.7044   -1.4764   -0.0000

此处应该再写一个移动原子的脚本(。。。。。 )以后再写

INCAR准备

这里写简易的INCAR有些参数直接就是默认,直接抄bigbro

SYSTEM = ethanol
START=1

#ISPIN=2 乙醇是闭壳层分子 不用



IBRION=2
NSW=100

EDIFFG=-0.05


ISMEAR=0  #气象分子用0
SIGMA=0.01  #气象分子用0.01

POTCAR准备~简单

cat ~/pbe/O/POTCAR ~/pbe/C/POTCAR ~/pbe/H/POTCAR > POTCAR

KPOINTS也简单

KPOINTS
0
G
1 1 1
0 0 0

频率计算

INCAR修改

SYSTEM = ethanol
#频率计算
IBRION=5
NSW=1
NFREE=2
EDIFF=1E-6

EDIFFG=-0.05
ISMEAR=0  #气象分子用0
SIGMA=0.01  #气象分子用0.01

计算完后检查OSZICAR 于OUTCAR
OSZICAR 最底部可以看到一共55步
在这里插入图片描述
这里的55的由来: 一共9个原子9x3=27然后+POTIM与-POTIM两个方向一共9x3x2=54个 然后多一个频率计算前的单点计算

固定原子

用linux的方法固定原子

  1. :set nu 显示行数
  2. 第八行的位置插入Selected
  3. :10,18s/$/ T T T/g (解释一下这个命令10,18表示选取行的范围,s表示替换,T T T表示要替换的内容 g表示全部替换的意思)
  4. :11,17s/T/F/g 固定除了OH以外的所有东西

jmol就是显示出OUTCAR中每一条的震动信息

数据分析:OUTCAR频率信息的提取

grep cm-1 OUTCAR

在这里插入图片描述
bigbro的结果
可以看出9x3=27种震动模式
对于虚频来说100cm-1以下的都可以忽略
因此我们的结构是稳定的

零点能的计算

grep ‘f =’ OUTCAR | awk ‘{print $10}’ | paste -sd+ |bc
解析语言 grep ‘f =’ OUTCAR’ (注意中间是两个空格)可以检索出所有实频率, 然后用awk 把第十行的能量值打印出来,
paste是黏贴合并语言-s表示按照行合并, d+表示用+号隔开 然后bc属于计算器把前面的东西合并运算
在这里插入图片描述
我的计算结果与bigbro的基本一样0.5%的差距可以忽略
脚本书写
在这里插入图片描述
这里的scale是定义精确度,然后2000是因为 2来自于零点能得1/2 hv, 1000是因为起始单位是mev 而最后能量是ev

成功得出频率得零点能结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
频率计-外部频率测试LCD1602显示实验例程C51单片机KEIL工程源码文件: /*----------------------------------------------- 名称:频率计 内容:T0外部计数,T1计时1S,计算1S内外部脉冲个数,并在液晶显示 频率:单位时间内完成振动的次数 ------------------------------------------------*/ #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #include<stdio.h> #include"1602.h" #include"delay.h" #define HIGH (65536-10000)/256 #define LOW (65536-10000)%256 sbit LED=P1^2; //定义LED端口 bit OVERFLOWFLAG; bit TIMERFLAG; /*------------------------------------------------ 定时器0初始化子程序 本程序用于计数 ------------------------------------------------*/ void Init_Timer0(void) { TMOD |= 0x01 | 0x04; //使用模式1,16位计数器,使用"|"符号可以在使用多个定时器时不受影响 TH0=0x00; //给定初值 TL0=0x00; EA=1; //总中断打开 ET0=1; //定时器中断打开 TR0=1; //定时器开关打开 } /*------------------------------------------------ 定时器1初始化子程序 本程序用于定时 ------------------------------------------------*/ void Init_Timer1(void) { TMOD |= 0x10; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响 TH1=HIGH; //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出 TL1=LOW; EA=1; //总中断打开 ET1=1; //定时器中断打开 TR1=1; //定时器开关打开 } /*------------------------------------------------ 主程序 ------------------------------------------------*/ main() { unsigned long int a; char temp[16]; //定义字符显示缓冲数组 Init_Timer0(); //初始化定时器0 Init_Timer1(); //初始化定时器1 LCD_Init(); //初始化液晶屏 DelayMs(10); //延时用于稳定,可以去掉 LCD_Clear(); //清屏 LCD_Write_String(0,0,"www.doflye.net");//写入第一行信息,主循环中不再更改此信息,所以在while之前写入 while(1) { if(OVERFLOWFLAG)//检测溢出标志,如果溢出表明频率过高,显示溢出信息 { OVERFLOWFLAG=0;//标志清零 LCD_Write_String(0,1,"overflow >655KHz"); } if(TIMERFLAG) //定时100ms到,做数据处理 { a=TL0+TH0*256;//读取计数值 a=a*10; //扩大到实际值 sprintf(temp,"FREQ:%08.0f Hz",(float)a); LCD_Write_String(0,1,temp);//显示到液晶第二行 TR0=1; //2个定时器打开 TR1=1; TH0=0; //保
在MATLAB中进行有限元算例的振动响应求解需要以下几个步骤: 1. 定义结构模型:将结构抽象为一个有限元模型,包括节点、单元和材料等属性。在MATLAB中可以通过定义节点坐标、节点自由度和单元连接关系等信息来描述结构模型。 2. 定义边界条件:根据实际情况设置结构的边界条件,包括固定边界条件和外力边界条件。固定边界条件可以通过设置节点的位移和旋转约束来实现,而外力边界条件可以通过施加节点受力或单元荷载来表示。 3. 求解特征值问题:使用有限元方法将结构的振动行为离散化为特征值问题。通过在MATLAB中定义结构的质量矩阵和刚度矩阵,并使用求解特征值和特征向量的函数(如eig或eigs)可以求解结构的固有频率和振型。 4. 求解振动响应:根据外力激励和结构的自由度,可以使用MATLAB中的模型缩减、模态叠加和模态超级位置法等方法来求解结构的振动响应。这些方法可以通过结构的特征向量和固有频率来进行计算,得到结构在不同频率下的振动响应。 5. 结果后处理:通过MATLAB中的绘图函数(如plot或surf)和结果分析工具可以对振动响应结果进行可视化和分析。可以绘制结构的振动模态、振动位移时间历程和频谱等图形,并根据振动响应结果评估结构的稳定性和安全性等指标。 综上所述,MATLAB可以提供丰富的工具和函数来求解有限元算例的振动响应问题。通过定义结构模型、设置边界条件、求解特征值问题和求解振动响应,可以得到结构在不同频率下的振动特性,并进行结果分析和可视化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值