金刚狼百度网盘3的百度网盘

 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
VASP经验小结
下载积分:760
内容提示:VASP经验小结
文档格式:PPT|
浏览次数:42|
上传日期: 03:00:33|
文档星级:
全文阅读已结束,如果下载本文需要使用
 760 积分
下载此文档
该用户还上传了这些文档
VASP经验小结
官方公共微信君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
VASP的个人经验手册-侯柱峰2004版-几个测试脚本文件
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口最近一段时间都在弄sybase和ms-sqlserver,写了一份学习笔记3
【娱乐休闲】
【生活服务】
【电脑网络】
【文体教育】
【行业部门】
文章浏览→→→最近一段时间都在弄sybase和ms-sqlserver,写了一份学习笔记3最近一段时间都在弄sybase和ms-sqlserver,写了一份学习笔记3
create&procedure&p_convert_num_to_char&@cint&numeric,&@outchar&varchar(10)&output&as&if&(@cint=4)&&&select&@outchar='Four'if&(@cint=5)&&&select&@outchar='Five'if&(@cint=6)&&&select&@outchar='Six'&&&(1&row&affected)(return&status&=&0)18、 oracle中查看源码,查看该sources表19、 在一个过程中调用另外一个过程,例如:create&procedure&test_one&@test_proc_name&varchar(255)as&exec&@test_proc_name20、 记住在sybase中执行sql是用'go'不是以';'为结束兼执行21、创建数据库用户:sa用户&master库中,sp_addlogin&user,password,dbname22、变更数据属主::sa用户进入要变更的数据库执行&sp_changedbowner&user,dbname23、设置用户的默认登陆数据库::sa用户进入要设定的数据库执行:sp_defaultdb&user,dbname24、以#开头的临时表只是在某一过程或sql操作中存在,一旦过程或sql操作结束,则临时表就不存在了,如果再要访问就回出错。解决是不建立以#为preffix的表。25、要想直接手工插入值到表中identity字段,需要打开该表的identity_insert选项。Set&identity_insert&表名&on/off如:set&identity_insert&t_dns_rezo_gs&on这样insert&into&t_dns_rezo_gs(rzgs_id,rzgs_name)&values(999,'12121')才会成功。26、指定某个过程什么时候执行后用waitfor&delay&"hh24:mi:ss",并且用了这种方式后该connection不会有什么响应直到过程被执行完成。如半个小时后执行过程test_pbeginwaitfor&delay&"0:30:00"&&&&exec&test_pend&27、 调用带返回参数的过程完整例子create&procedure&p_convert_num_to_char&@cint&numeric,&@outchar&varchar(10)&output&as&if&(@cint=4)&&&select&@outchar='Four'if&(@cint=5)&&&select&@outchar='Five'if&(@cint=6)&&&select&@outchar='Six'&&&godeclare&@getchar&varchar(10)&exec&p_convert_num_to_char&4,@outchar=@getchar&output28、 过程中有返回参数时,如果预先设定参数值,最终都会改变如:declare&@First&intselect&@First=123exec&test_p&@second=@First&output//运行结果为999则@second和@First&都为99929、过程名改名sp_rename&oldname,&newName30、ct-library编程,在sybase提供的linux中有,环境搭建要点,要确定$SYBASE设定了,$SYBASE_OCS设定open&client所在目录即可不要是全目录,还要设定平台$SYBPLATFORM=&具有这三个环境变量,open&client提供的sample才可大部分编译通过;其中有几个程序由于找不到-lsrv,而编译通不过。推测可能涉及了open&server的东西,所以没有通过。例子程序可以单独编译,如make&例子名&&&&[F.E&&&make&firstapp&]设定LD_LIBRARY_PATH=$SYBASE/$SYBASE_OCS/lib编译形式例如firstapp.c$SYBASE=/opt/sybase-12.5$SYBASE_OCS=&OCS-12_5cc&-o&fist&firstapp.c&-I.&-I/opt/sybase-12.5/OCS-12_5/include&-L/opt/sybase-12.5/OCS-12_5/lib&-rdynamic&-ldl&-lnsl&-lm&&-lct&-lcs&-lsybtcl&-lcomn&-lintl31、 db-library编译语句:cc&&-I.&-I/opt/sybase-12.5/OCS/include&example1.c&/opt/sybase-12.5/OCS/lib/libsybdb.a&-lm&-o&example1&&&同样要设好SYBASE&SYBASE_OCS&SYBPLATFORM&&&并且要保证interface文件中连接服务器是对的。&&&同时对于想要连接的服务器名要在环境变量DSQUERY中设好。&&如:&&export&DSQUERY=accunetsvr&&注意,用hostname作为连接名时,确保/etc/hosts中的IP和hostname有对应且对应正确。32、db-library&经实验数据库连接结构支持线程间的传递,将函数打包用下列样式:gcc&-c&-I.&-I/opt/sybase-12.5/OCS/include&s_fcts.car&r&libleon.a&s_fcts.orm&-rf&*.o打包完毕调用函数进行编译样式:cc&-I.&-I/opt/sybase-12.5/OCS/include&ss_nip_checkUGandUser.c&libleon.a&&&&&&&&&/opt/sybase-12.5/OCS/lib/libsybdb.a&-lm&-o&leon4&或者cc&&-I.&-I/opt/sybase-12.5/OCS/include&-o&leon4&ss_nip_checkUGandUser.c&libleon.a&/opt/sybase-12.5/OCS/lib/libsybdb.a&&-lm33、DB-library的应用程序运行其他机上访问另一台机(数据库所在的机器).在客户机上需要装sybase-comom&和syabse-openclient组件。需要设定对SYBASE&/&DSQUERY.&其中sybase要设定为指向interfaces文件的路径,DSQUERY要设定为要远程访问的主机名(adapative_server_name).将远程主机的interfaces拷贝到客户机上SYBASE指定的目录即可。注意如果没有设定DSQUERY,则程序默认去找sybase的数据库,这时如果没有该数据库名字在interfaces文件中,程序就会不能运行。&&&[实际只需设定好DSQUERY环境变量和interface文件即可]34、DB-library应用在多线程中每次都要重新连接数据库,否则一定时间后连接会被操作系统重置掉。&&Connection&reset&by&peer35、DB-library的错误捕捉。系统提供一种系统错误信息函数自动在出现错误时去捕捉显示错误信息。&&&int&msg_handler(dbproc,&msgno,&msgstate,&severity,&msgtext,&&&&&&&&&&&&&&&&&srvname,&procname,&line)DBPROCESS&&&&&&&*DBINT&&&&&&&&&&&int&&&&&&&&&&&&&int&&&&&&&&&&&&&char&&&&&&&&&&&&*char&&&&&&&&&&&&*char&&&&&&&&&&&&*int&&&&&&{};int&err_handler(dbproc,&severity,&dberr,&oserr,&dberrstr,&oserrstr)DBPROCESS&&&&&&&*int&&&&&&&&&&&&&int&&&&&&&&&&&&&int&&&&&&&&&&&&&char&&&&&&&&&&&&*char&&&&&&&&&&&&*{};  dbmsghandle(msg_handler);&dberrhandle(err_handler);除此之外,用户如果想要自己控制错误信息可在dbsqlexec()&调用后并且while()处理完后,调用dbcount(dbproc)进行错误信息判断,如果等于-1则出现错误。特例调用没有select的过程::dbnocount设为on::没有select的sql语句::sql写错::sql执行错误等都可以出现-1所以要小心判断处理。36、Jdbc连接sybase。首先需要jconn2.jar和jTDS2.jar文件,在环境变量CLASSPATH设定好。Class.forName("com.sybase.jdbc2.jdbc.SybDriver");url结构为:&jdbc:sybase:Tds:dbserver_ip/dbserver_hostname:dbserver_port/dbnamedbserver的端口为数据库服务器上的interfaces文件中对应的数据库端口。例子:192.168.0.6interfaces[root@accunetsvr&sybase-12.5]#&more&interfaces&accunetsvr_text&&&&&&&&master&tcp&ether&accunetsvr&4500&&&&&&&&query&tcp&ether&accunetsvr&4500accunetsvr&&&&&&&&master&tcp&ether&accunetsvr&4100&&&&&&&&query&tcp&ether&accunetsvr&4100accunetsvr_back&&&&&&&&master&tcp&ether&accunetsvr&4200&&&&&&&&query&tcp&ether&accunetsvr&4200accunetsvr_mon&&&&&&&&master&tcp&ether&accunetsvr&4300&&&&&&&&query&tcp&ether&accunetsvr&4300ACCUNETSVR_XP&&&&&&&&master&tcp&ether&accunetsvr&4400&&&&&&&&query&tcp&ether&accunetsvr&4400可知dbserver_name是accunetsvr&&&dbserver_ip&&&&是192.168.0.6dbserver_port&&是4100dbname为nextip&&url为&&jdbc:sybase:Tds:192.168.0.6:4100/nextip37、创建identity列,如果是create&table&时一定是numeric型。如果想要创建数据库自动为新建的所有表增加一个隐藏的identity字段,用[sp_dboption&database_name,&"auto&identity",&"true"]。在检索数据的时候必须隐式加上SYB_IDENTITY_COL作为隐藏的identity列,例如select&SYB_IDENTITY_COL,&sn_name&from&t-subnet默认的隐藏精度大小为10如果用户想要增大其精度,可用[sp_configure&&"size&of&&auto&&identity",&新的精度],例如:&sp_configure&"size&of&auto&identity",1538、从select&into&创建一个新的idenetity列,这在sql语句分页检索用。Select&idenetity_name=identity(精度)&,&*&&into&new_table&from&old_如:select&id0=identity(18),*&into&#subnets&from&t_subnet&where&sn_type=10;39、 &实现用sql语句进行分页查询方法:A.创建一个临时表带identity字段&select&id=indentity(20),&*&into&#table_anme&from&table_name&where&条件B.然后根据id进行检索第n条到m条数据&(也可用between&and)C. 最后Drop掉该临时表D.注意要打开数据库的select&into&/bulk&copy属性&sp_dboption&database_name,&"select&into/bulk&copy",&"true"才能进行select&into操作E.mssql中格式为select&identity(int)&&id,&*&from&#table_name&from&table_name&where&条件40、linux下访问sql-server用db-library与sybase相同要素。只是远程访问端口为sql-server指定的143341、 JDBC访问MS-SQLSERVER&连接数据库:[需要这三个jar文件msbase.jar&msutil.jar&mssqlserver.jar]JDBC&DRIVER:com.microsoft.jdbc.sqlserver.SQLServerDriverURL:jdbc:microsoft:sqlserver://Ip&Or&Name:1433;DatabaseName=XXX42、Oracle中的外连接符为=(+)&或(+)=&在Sybase中为=*&或&*=43、执行sybase过程中会有日志满了或存储空间不够了,出现supsend状态,可用isql&&-Usa&-Ppassword&-Sdbservername进去执行dump&tran&db_name&with&truncate_only进行清空操作或者dump&tran&db_name&to&'path/file'进行备份在执行清空。44、ms-sql中的substring(string,&start,&length)函数参数,start和length为INT型不能为numeric型。45、select&*&into&在oracle中的用法在ms-sql和sybase中的用法为select&@变量=column&from&表名&where&条件46、游标在ms-sql和sybase中差别主要为while&判断的全局变量不同。Sybase中为@@sqlstatus&=&0Ms-sql中为@@FETCH_STATUS&=&0&&&关闭游标时在ms-sql中除了[close&游标名]&还要增加[deallocate&游标名]&&&47、 MS-SQL对于sql语句大小写不敏感,sybase对大小写敏感。48、 oracle同sybase和mssql的常用函数对比ORACLE SYBASE MS-SQLSERVERSysdateTo_char(,&'格式')格式:yyyymmddhh24miss任意组合getdate()可用year()&month()&day()分解获得年月日&convert(varchar,&getdate(),&108)是hh:mm:ssgetdate()可用year()&month()&day()分解获得年月日convert(varchar,&getdate(),&108)108是hh:mm:ss120是yyyy-mm-ddLength() Datalength() Datalength()Ltrim()&rtrim()Ltrim()&rtrim()&Ltrim()&rtrim()Substr() Substring()Substring(varchar,&INT,&INT)Replace('123',&'2',&'A)Replace('123',&'2',&'A)instrLpad()&rpad() Replicate('0',&32)Replicate('0',&32)Upper()&lower() Upper()&lower()Upper()&lower()49、 日期计算在ms-sql中dateadd(日期代码,日期值,&日期)select&convert(varchar,getdate(),120)&as&year,convert(varchar,dateadd(ss,&1200,getdate()),120)&as&nYeargo日期部分&&&&&&&&&&&简写&&&&&&&&&&&&&&&值year&&&&&&&&&&&&&&&&yy&&&&&&&&&&&&&&&&quarter&&&&&&&&&&&&&qq&&&&&&&&&&&&&&&&1--4month&&&&&&&&&&&&&&&mm&&&&&&&&&&&&&&&&1--12day&of&year&&&&&&&&&dy&&&&&&&&&&&&&&&&1--366day&&&&&&&&&&&&&&&&&dd&&&&&&&&&&&&&&&&1--31week&&&&&&&&&&&&&&&&wk&&&&&&&&&&&&&&&&1--53weekday&&&&&&&&&&&&&dw&&&&&&&&&&&&&&&&1--7(Sunday--Saturday)hour&&&&&&&&&&&&&&&&hh&&&&&&&&&&&&&&&&0--23minute&&&&&&&&&&&&&&mi&&&&&&&&&&&&&&&&0--59second&&&&&&&&&&&&&&ss&&&&&&&&&&&&&&&&0--59milisecond&&&&&&&&&&ms&&&&&&&&&&&&&&&&0-999也可select&convert(varchar,&getdate(),&111)+'&'+convert(varchar,getdate(),108)&as&oldtime,convert(varchar,dateadd(ss,1200,getdate()),111)+'&'+convert(varchar,dateadd(ss,1200,getdate()),108)&as&date也可select&convert(varchar,convert(datetime,''),111)go50、PostgreSQL中的lib编程时,select&和update&/delete的成功失败条件判断是不同的。Update/delete::&strcmp(PQcmdStatus(temp_res),&"")==0select&::&!temp_res||PQresultStatus(temp_res)&!=&PGRES_TUPLES_OK51、 日期各格式的引用模式ms-sql和sybase中都通用yyyy/mm/dd&hh24:mi:ssselect&convert(varchar,&getdate(),&111)+'&'+convert(varchar,getdate(),108)&as&oldtime,convert(varchar,dateadd(ss,1200,getdate()),111)+'&'+convert(varchar,dateadd(ss,1200,getdate()),108)&as&dateselect&name,text&from&all_source&where&type='FUNCTION'&and&name='F_CHECK_IB_SCOPE';select&convert(varchar,convert(datetime,''),111)goSelect&count(ipgs_host_name)||',host-'||f_ipad_change_dec4('%s','1')&From&t_ipdev_gsyyyy/mm/ddhh24missSelect&CO_DESC,to_char(sysdate&-&1/48,'yyyymmddhh24miss')&co_date&from&T_LICENSEdateadd(ss,&-1800,&getdate())select&co_desc,&convert(varchar,&dateadd(ss,&-1800,&getdate()),111)+convert(varchar,dateadd(ss,&-1800,&getdate()),108)&as&co_date&from&t_licenseselect&convert(varchar,&getdate(),&111)+'&'+convert(varchar,getdate(),108)&as&oldtime,convert(varchar,&dateadd(ss,&-1800,&getdate()),111)+convert(varchar,dateadd(ss,&-1800,&getdate()),108)&as&co_dateyymmddhh:mi:ssselect&convert(varchar,getdate(),112)+convert(varchar,getdate(),8)go52、显示sql执行时间用:&isql&&-Unextip&-Pnextip&&-Sleon1&-p&&&&&&&&进入即可,加小写-p参数53、 MS-SQL中创建数据库create&database&NEXTIPDBon&primary(name&=&DEVDB,filename&=&'d:\mssql_data\devdb.mdf',size&=&30MB,maxsize&=&100MB,filegrowth&=&10MB),(name&=&DEVDB1,filename&=&'d:\mssql_data\devdb1.ndf',size&=&10MB,filegrowth&=&10MB&)Log&on(name&=&DEVDBLOG,filename&=&'e:\mssql_log\devdblog.ldf',size&=&10MB,maxsize&=&100MB,filegrowth&=&10MB)go54、 细小区别Sybase::IF&NOT&EXISTS&(SELECT&*&FROM&master..syslogins,&master..sysdatabasesWHERE&master..syslogins.suid&=&master..sysdatabases.suidAND&master..syslogins.name&=&'nextip')EXEC&sp_changedbowner&nextip,&NEXTIPDBGOMs-sqlserver::IF&NOT&EXISTS&(SELECT&*&FROM&master..syslogins,&master..sysdatabasesWHERE&master..syslogins.sid&=&master..sysdatabases.sidAND&master..syslogins.name&=&'nextip')EXEC&sp_changedbowner&nextip,&NEXTIPDBGO所属分类:→&&&&作者:新浪博客&&&&时间: 0:00:00
All Right Reservedpython os模块详解 打包发布Python模块的方法详解-Python教程
当前位置:&>&&>& &
打包发布Python模块的方法详解
python os模块详解 打包发布Python模块的方法详解
| 来源:网络 | 关键字:
前言昨天把自己的VASP文件处理库进行了打包并上传到PyPI,现在可以直接通过pip和easy_install来安装VASPy啦(同时欢迎使用VASP做计算化学的童鞋们加星和参与进来),VASPy的G
前言昨天把自己的VASP文件处理库进行了打包并上传到PyPI,现在可以直接通过pip和easy_install来安装VASPy啦(同时欢迎使用VASP做计算化学的童鞋们加星和参与进来),VASPy的GotHub地址:/PytLab/VASPyVASPy的PyPI地址:https://pypi.python.org/pypi/vaspy/由于自己的记性真是不咋地,怕时间久了就忘了,于是在这里趁热打铁以自己的VASPy程序为例对python的打包和上传进行下总结。VASPy包文件结构首先写贴上来VASPy包的整个文件结构, 后面的内容都是以此为例进行说明:VASPy/├── LICENSE├── MANIFEST├── MANIFEST.in├── README.rst├── requirements.txt├── scripts│
├── change_incar_parameters.py│
├── create_inputs.py│
└── ...├── setup.cfg├── setup.py├── tests│
├── incar_test.py│
├── __init__.py│
├── oszicar_test.py│
├── outcar_test.py│
├── testdata│
├── CONTCAR│
├── DOS_SUM│
├── ELFCAR│
└── ...│
└── ...└── vaspy
├── __init__.py
├── iter.py
├── matstudio.py
└── ... 4 directories, 54 files打包和安装第三方包的工具这里我们需要借助setuptools和pip等工具进行自己包的打包和发布以及安装,如果需要构建成wheel还需要安装wheel模块。如果python版本&=2.7.9或者&=3.4,setuptools和pip是已经安装好的,可能需要进行更新到最新版本pip install -U pip setuptools可以使用包管理工具,例如yum install pipsudo apt-get install pip通过get-pip.py脚本安装,如果检测到没有安装wheel和setuptools也会自动安装python get-pip.py具体的工具安装和介绍就不多讲了,可以请参考requirements for installing packages包中不同文件的作用setup.py这个文件是打包整个项目最重要的文件,它里面提供了两个主要的功能:setup()函数,此函数的参数指定了如何配置自己的项目。命令行工具,包括打包,测试,发布等。可以通过下面的命令查看;python setup.py --help-commandssetup.cfg此文件包含了构建时候的一些默认参数例如构建bdist_wheel的时候的--universal参数[bdist_wheel]universal=1这样每次打包的时候就会默认使用--universal参数了,效果类似:python setup.py bdist_wheel --universalREADME.rst这个最初我是用markdown写的,打包发布到PyPI之后发现PyPI不支持markdown的渲染,页面上真是一片混乱,于是就用reStrutruedText的语法重新写了一遍。毕竟标记语言语法基本上可以秒上手,实在不行找个模板比葫芦画瓢就行。reStructureText的语法规则可参考官方文档:Quick reStructuredText其实还有一种方法就是使用pandoc将markdown转换成rst格式,一种省事的方式就是使用pyandoc模块在发布的时候自动转换。具体方法可以参考:Use Markdown README's in Python modulesMANIFEST.in此文件在打包的时候告诉setuptools还需要额外打包那些文件,例如我VASPy中的单元测试的测试数据文件我就使用这个文件将其包含进来。当然README,LICENSE这些也可以通过它来一起打包进来。下面是我自己的MANIFEST.in的内容:include README.rstinclude requirements.txtinclude LICENSErecursive-include scripts *recursive-include tests *具体的语法规则可以参考:The MANIFEST.in templatevaspy/此文件夹就是vaspy源代码所在的包。tests/此文件夹也是一个子包,包含了单元测试脚本,为了能使用python setup.py test进行单元测试,特地添加了__init__.pys使其成为一个包。setup()的参数这里只介绍我使用的几个参数,其他参数的具体使用可以参考:https://docs.python.org/3/distutils/setupscript.htmlnameversions = "vaspy"是整个项目的名字,打包后会使用此名字和版本号。versionfrom vaspy import __version__version = __version__description是一个简短的对项目的描述,一般一句话就好,会显示在pypi上名字下端。long_description是一个长的描述,相当于对项目的一个简洁,如果此字符串是rst格式的,PyPI会自动渲染成HTML显示。这里可以直接读取README.rst中的内容。url包的连接,通常为GitHub上的链接或者readthedocs的链接。packages需要包含的子包列表,setuptools提供了find_packages()帮助我们在根路径下寻找包,这个函数distutil是没有的。setup_requires这个参数定义了VASPy安装和顺利运行所需要的其他依赖项(最基本的),使用pip安装的时候会对这些依赖项进行安装。关于这个参数与requirements.txt的区别可以参考:install_requires vs Requirements filesclassifier这个参数提供了一系列的分类,在PyPI上会将其放入不同的目录中讲项目进行归类。具体的categories的名称和规则参考:https://pypi.python.org/pypi?%3Aaction=list_classifierstest_suite这个参数可以帮助我们使用python setup.py test来跑单元测试,再也不需要单独再写一个脚本例如run_tests.py这样来跑单元测试了。此参数的官方解释:A string naming a unittest.TestCase subclass (or a package or module containing one or more of them, or a method of such a subclass), or naming a function that can be called with no arguments and returns a unittest.TestSuite. If the named suite is a module, and the module has an additional_tests() function, it is called and the results are added to the tests to be run. If the named suite is a package, any submodules and subpackages are recursively added to the overall test suite.也就是说这个参数可以接受多种类型的参数:接收unittest.TestCase子类,我们可以讲所有单元测试写入一个测试用例中,然后import进来,再传你给test_suite接收函数对象,此函数对象没有任何参数,且返回一个unittest.TestSuite.这样我们就可以单独写一个函数,将多个测试用例合并成一个suite然后返回,然后再将函数import进来传给test_suite。模块和包名称,我就是使用这种方式,之前自己的测试都是分开的多个脚本,这样我添加一个__init__.py就可以将其变成一个包,将包名传给test_suite,setuptools就会神奇的将此包下的所有测试全部跑一边,这样我以后再加测试脚本的时候直接就添加新的脚本就好了,其他的都不需要改动了。运行效果:zjshao@SHAO-PC:/mnt/d/Dropbox/Code/CentOS_code/VASPy$ python setup.py testrunning testrunning egg_infocreating vaspy.egg-infowriting vaspy.egg-info/PKG-INFOwriting top-level names to vaspy.egg-info/top_level.txtwriting dependency_links to vaspy.egg-info/dependency_links.txtwriting manifest file 'vaspy.egg-info/SOURCES.txt'reading[.Cn] manifest file 'vaspy.egg-info/SOURCES.txt'reading manifest template 'MANIFEST.in'writing manifest file 'vaspy.egg-info/SOURCES.txt'running build_exttest_compare (tests.incar_test.InCarTest)Make sure we can compare two InCar objects correctly. ... oktest_eq (tests.incar_test.InCarTest)Test __eq__() function. ... ok...此处省略若干输出 ----------------------------------------------------------------------Ran 22 tests in 3.574s OK发布自己的python包1. 首先先去PyPI注册帐号2. 配置~/.pypirc如下:[distutils]index-servers =
pypitest [pypi]username:ShaoZhengjiangpassword:mypassword [pypitest]username:ShaoZhengjiangpassword:mypassword3. 然后注册并上传自己的包到测试服务器pypi提供了一个测试服务器,我们可以在这个测试服务器上做测试。python setup.py register -r pypitest然后python setup.py sdist upload -r pypitest若没有问题我们应该不会得到任何错误。4. 上传至PyPI若上面的测试成功,我们就可以按照相同的步骤将包注册并上传。python setup.py register -r pypipython setup.py sdist upload -r pypiOk,之后我们就可以在PyPI(https://pypi.python.org/pypi/vaspy/)上看到我们自己的包了。
网友评论仅供其表达个人看法,并不表明网易立场。新浪广告共享计划>
广告共享计划
赝势的一些东西
赝势现在分为ECP和MCP两种,前一种是常用的,后一种在gamess里才能见到.
赝势实际上就是核的库仑势V加上一个短程非厄密的排斥势,两项之和使总的势减弱,变得比较平坦.
虽然是赝波函数,但由此得到的能量并非"赝能量",而是相应于真实晶体价态的本征能量.
赝势的导出不是唯一的,原始的赝势方法建立在正交化平面波基础上,对一个由许多原子组成的固体,坐标空间根据波函数的不同特点可分成两部分:
(1)近原子核区域,所谓的芯区.波函数由紧束缚的芯电子波函数组成,与近邻原子的波函数相互作用很小;(2)其余区域,价电子波函数交叠并相互作用.尽管芯区的势很强地吸引价电子,但是正交化平面波方法中对价态与芯态正交的要求而产生的大动能,对价态的贡献如同一个有效的排斥势.两者之和是价态的有效势,与核的库仑势相比,这种有效势较弱.
常用所谓经验赝势的方法(见固体的能带)。这种方法是用只包含几个参数的所谓“赝势”近似描述电子在晶体内的势能场,从理论上计算出能带结论,然后通过拟合本征光谱的数据(如各奇点处的光子能量)反过来确定赝势中的参数
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
这些都是我自己科研经验和以前读的文献的总结。也没写什么参考文献,就是随便扯扯,这就全凭自己的经验和记忆啦,想到哪儿写到哪儿。这里面肯定有不对的,甚至有荒谬之极的东西,还请大家指正。也希望自己抛砖引玉,其他高手也讲讲自己的经验。
很少见到高手们总结自己的科研经验和阅览的文献。小卒我这个屁股上还没褪干净蛋壳的小菜鸟,只好抛出一块又丑又粗糙的破砖,引引高手们的美玉啦。
以下探讨均不涉及cluster。主要是有机化合物、以及金属离子和有机配体组建成的配合物。其计算也都是基于单个分子的计算。周期体系不在考虑之列——这是一句无奈的词句,因为我的研究方向不在此处,所以我确实没有仔细思考过它们
1分子结构、键长和键角:
对于比较轻的元素,b3lyp/6-311++g**就很优秀,如果把基组加到了aug-cc-pv?z的程度,就没什么大的必要了。
对于一些中等重量的元素,LanL2DZ就不错啦,没必要加更高的机组了,加了也是浪费。
再重一些,比如稀土,LanL2DZ就不行了,M.
Dolg先生搞出来的那个基组,斯图加特RECP的[5s4p3d]-GTO占了大部分市场份额。而泛函选择上,百分之四十用的是B3LYP,百分之四十用的是B3PW91,百分之五用的是MPn族,百分之五用的是CCSD(T)族,百分之五用的是PBE族,百分之五用的是经过改进的半经验。有时候还要自己选择,是用小核赝势呢,还是大核赝势呢。听说ADF用PBE/DZPZORA处理稀土,效果也不错,但是我没用过。
有金属的时候,据说tpss不错,但是我也没用过,不敢说。
这里我要批一批我偶然见到的一个文献:Int.J.Electrochem.Sci. 2009, 4,
295-307,伊朗的一群人做的工作。他们居然用6-31G*计算稀土元素,这简直是扯淡,大家不要学他。
半经验方法中,处理CHNO之类的元素,AM1和PM3都不错,PM6也很好,他们可以作为我们前期粗略优化的手段。不过要注意AM1处理共轭体系不太好。有人用Sparkle/AM1和Sparkle/PM3处理稀土元素。精度并不是多么好,但是极大地减轻了计算量,可以说还是很有成效的一个工作。不过这里不探讨半经验,仅仅探讨密度泛函,所以不多说了。
一个例子:[Fe(CN)6]3-,我会选择B3lyp/genecp来优化其分子结构,然后用PBE1PBE/genecp来计算其电子结构。genecp对应关系如下(其实,这个混合基组有自己的专门的名字,叫做LACVP+*)
氢键的计算,还是以b3lyp、b97-?、pwb6k、b2plyp、b3p86、pbe1pbe这几族泛函比较好。基组的话,还是aug-cc-
pv?z、mg3s好一些。其实劈裂价键基组也不错,但是必须加“大弥散”和“高角动量”,因为氢键还是比较弱一些,氢键对应的波函数必须加大离域程度。
其实氢键还算是一个比较好算的东西。流行的DFT中,除了OLYP和O3LYP之外,基本都有一定精度。氢键的计算,基组的选择影响大一些,大弥散基组是必须的。
3远程弱作用
远程作用就比较扯淡了。B3交换泛函彻底完蛋。虽然我主要也是B3LYP阵营的人,但是要我在这个领域夸夸B3LYP,我还真不能瞪着眼睛说瞎话。这个领域DFTB和DFTB+曾经试图在这个领域做些贡献,但是成就并不是很大。比较成功的是DFT-D,包括b97-d,b2plyp-d等等这些加上
dispersion项的DFT了。听说G09对传统DFT有了两种加dispersion项的方法,但是还没用过,不敢乱说。
远程作用还有别的选择——尽管它会大大增加我的计算量
一种选择,使用MPn,还是不够准
另一种选择,是把MPn改造成SCF-MPn,计算量忒大
再一种选择,使用CCSD(t)之类的,……呃,还是算了吧,计算量我更受不了。
基组问题:算远程作用必须用极大的基组——这是一句废话,因为你要让两个分子相互作用,那么它们的波函必须能“够到对方”才行。从TZV(d),到TZV(d,p),到TZV(2d,2p),到TZV(2df,2pd),到
TZV(3d2f,3p2d),……继续加吧,能加多高,就加多高,算远程弱作用,您永远别吝啬你的资源。当然,我绝不反对你使用DZV族
另一个选择:从6-311++g(d,p),到6-311++g(2d,p),到6-311++g(2df,2pd),到6-311++g(3df,3pd),到6-311++g(3d2f,2p2d),……继续加呀加呀加呀加!
再来个选择:从aug-cc-pvtz,到aug-cc-pvdz,到aug-cc-pvqz,……子子孙孙无穷尽也
听说过一族巨型机组,叫ANO基组,当然还有它的一些变体。但是从没在文献中见过,也许是基组规模太大了,以至于丧失了实用性?
4多加一句:关于核磁,给某些人提个醒儿
昨天,有人在qq上问我,他说核磁计算结果与实验值相差太大。我问他你用啥算的?他说是b3lyp/6-31g*。我直接就无语+仆街了。
很多人习惯用6-31g*。这确实是一个很优秀的基组。但是您居然扛着6-31g*跑去算核磁,误差不达到百分之一千才怪。算核磁最小的基组,至少要用6-31++g(d,p)。这已经是最低要求了,不能再低了,建议使用6-311++g(2df,2pd)或更高
请大家斧正,谢谢各位高手的批评!请各位高手一定要批评我的不足之处呀,没有批评没有进步。大家给点儿批评吧
网友们已经给我的斧正和补充如下:
csfn先生的补充和斧正:
1,Fe的LanL2DZ换车SDD试过没,换了以后貌似得到不同基态结果,千万小心使用SDD
2,Fe貌似很多人用DZVP基组,ps最近我用过
3,对于基组我给个经验给大家,是简单的经验,如果出了问题,别迷信哈哈
ps,下一次会在相关发表工作中的体系中用数据简单表述这个结果
1,Bp86,Bpw91,Blyp等以B开头的基组,得到的基态结果基本是一致的,频率一般相差很小,可能在20左右。
2,B3lyp,B3p86,B3pw91等以B3开头的基组,得到的基态结果基本一致,频率相差也非常小,一般都会大于相应的如Bp86等方法的频率。
3,Mpw1pw91和Pbe1pbe预测的基态结果基本一致,频率会超过前面带B和带B3的,超过可能在100波数以上。
jiewei先生的补充和斧正:
分子结构、键长和键角:
对于比较轻的元素,b3lyp/6-311++g**就很优秀,如果把基组加到了aug-cc-pv?z的程度,就没什么大的必要了。(我觉得,Cl以前的元素用6-31g就好,如果有故对电子加个d就行了)
2氢键(JACS2008上一篇文献)处理弱相互作用,比如说氢键的话MPW1K比一般的其他密度泛函要好,比如说B3LYP;基组选择(我个人感觉)小卒说的就很好)
3远程弱作用
π-π相互作用在2009是研究的热点,众多文献表明:
常用的B3LYP以及半经验法都是不可靠的,我自己也做过,结构都不理想。
文献常见的高斯09的方法有:MPW1KCIS&&MPW1B95,MPWB1K
(JPCB的某篇文献,具体忘了)
MS的话一般用GGA/PEB (我做的体系结构非常理想)
其他:BLYD-D;B97-D都不错
基组选择一般用 tzv(2d,2p)/QZV3P
zhangmt先生的补充和评价
小卒版主如此热心啊,值得大家学习。
我接触高斯不到一年,经验甚少,不敢乱说的。
感觉如果对各泛函的了解如果很深入,以及对化合物性质有很多实验上的了解,
那么选择方法和基组就是很想当然的事情。
如果象我一样属于新手,那么我的经验就是:查文献。
已经发表在高水平杂志上的文章,作者的选择通常是被专家普遍认可的。
或者作者在文章中给出了选择的理由,无外乎两种:
1、引他人文献
2、做了多种方法+基组的组合实验,以各种计算结果与实验数据对照,选取最佳匹配的方案。
所以,如果你是新手,而且没有更合适的文献可以引证,那么方法2必然是最好的选择。
如果说说一点经验
1、虽然算非金属的普通CHON一类原子,6-31g*应该差不多了,但是发国内杂志恐怕也是底限了。所以,科研时可以用6-31g*看趋势,发文章最好加大基组
2、第一行过渡金属,如果只有一个,那么6-311+g*的计算量还是可以承受的
两个及两个以上,非赝势很难算。lanl2dz和sdd都是比较好的选择。除非做单点算,否则非要上mp2算就没太大必要了。
3、对化合物性质比较熟悉,对于选择方法和基组很重要。比如如果有分子内氢键,那么++**就是有用的,如果反应过渡态活性中心的弱键性质,也要++**描述的精确些。
4、其实,理论化学的尴尬之处也在于,计算永远是实验的奴仆。实验的结构是现实存在,存在即合理。它有单晶结构,它有光谱。什么才是你的最佳方法+基组方案?答:计算结果越能符合实验数据的,就越好。否则,你认为最好的,或者引证其他文献大家公认好的,都不算数,抛弃它好了,就用能符合实验数据的方法+基组。
仅就键长而言,实验误差在0.00x埃的误差,对于化学已经没有什么影响了。计算值与实验值误差能在0.01埃以下就可以说perfect了,那是相当精确的了。误差在0.02左右,也可以说匹配的很好了。你随便找个配合物来计算一下,试验不同的方法和不同的基组计算,跟实验数据对照一下就能看出来。增大的基组以及更精确的方法,得出来的键长能有多大的改进?当然,我们单独算一个分子是在气相下的,在晶体中的结构会有一定不同,但差异并不明显。通常用计算的稳定结构来表达晶体中的分子结构并无不妥。
女士的补充和评价
1. Truhlar的泛函
M05, M05-2X, M06, M06-2X等等可能只适用于某些体系,对于有些体系,照样给出糟糕的结果。
LDA居然能出乎意料地给出vdW作用,而其他GGA泛函都不行。这应该是个偶然,可能是正负误差相消的结果。比如,用LDA优化出的石墨层间距和实验值符合得相当好。
3. 我计算过一些pi-pi
stacking周期性体系,发现PBE-D方法总是倾向于高估vdW作用。另外,关于方法和基组之于几何构型,并非LZ说得那么简单。比如,我问一下,
MP2/6-311++G(d,p) 能否给出苯分子的正确构型?
答案是否!&&如果你用MP2/6-311++G(d,p)保持D6h对称性优化,会得到一个虚频。不要对称性优化,会得到非平面结构的苯。
原因请看这篇JACS文章:J. Am. Chem. Soc.,
先生的补充和评价
楼主提出的问题很好,但就目前QC 的发展现状来看,解决这些问题的方法一点也不十全十美。
1、分子结构计算结果的优劣可以用有2种方法加以检验,一是与可获得的实验数据进行对照(但不要忘了实验数据本身只是接近事实,而不是准确事实的本身,因为它们仍然是有误差的),二是在优化结构的基础上计算性质,同样的,还是要拿计算结果与更为有限的性质实验测定结果(它们同样有误差)进行对照。这充分体现了人类认识自然规律的有限性——我们总是只能获得相对真理。由于现有的计算理论本身在处理相关能和相对论效应时有很多困难(理论的和实际计算上的),所以,本人的研究都不涉及重金属,而只做轻元素体系,多为生物分子体系,大量的计算实验表明DZP加弥散基组与B3LYP的结合所得的结果可靠,所以一直使用。个人的精力是有限的,无法大量进行方法的尝试与鉴别,所以,只有大量阅读文献来弥补。实际上,就轻元素物质的结构而言,6-31++G**的结果已然非常不错了,但在计算性质时不妨对基组适当选择。如前所述,因为实验有误差,所以有时实验并非一定可靠,更重要的是,有的性质的测定,实验上是不可能进行的(至少目前是如此),因而,计算怎样走在实验的前面,恐怕值得思考。
2、氢键和远程弱相互作用实际上都是属于远程作用,一强一弱而已。因理论上尚不完善,且涉及的问题又十分的广泛,研究工作量巨大,现有的结论又十分分散,所以只能看文献了。而这些结论在楼上各位的回帖里已讨论不少,在此学习了。
coolrainbow先生的补充和评价:
说的非常好!
补充几点吧:
NMR计算时,必须要用非常大的基组。具体来说:在几何优化时至少TZ一颗星以上,连cc-pvdz都不行;在具体算NMR时,我推荐基组:6-311++g**以上;aug-cc-pvtz以上。当然,你的机器嘛~~
方法。Gaussian里只提供了HF,DFT,MP2的方法算NMR,一般DFT就可以啦,比较结果是可用MP2,不过一般差别不大。如果有别的软件的话,推荐CCSD。不推荐HF,因为结果几乎没有用。
3 弱相互作用。ANO叫原子自然轨道基组,确实很巨大,算的能量相当精确,但是对于分子性质没有那么好的效果。至于弱相互作用,其实BSSE是算不准的一个重要因素,常用的CP方法在这里没有好的效果。因此目前已有的方法都无效。但是究竟为什么算的如此不准,原因不明,呵呵呵,说不定是个重大科研项目呢
beefly先生的补充和评价:
谢谢斑竹总结的方法。这些方法应该是大众化的,在目前计算条件下大家都能承受的。如果想提高精度的话,或者提高计算速度的话,还有一些可能的途径,当然,光靠Gaussian程序可能不行了,必须多学几个软件,至少要达到粗通的程度。
考虑用RI-DFT、RI-MP2方法,能比常规方法快一个数量级,但精度接近。此外还有RI-CCSD、RI-CCSD(T)等,不过用得很少。Gaussian
0x的话可以试试纯GGA+密度拟合,不会比ADF的同类方法差太多。
大体系可以试试局域轨道方法,QM/MM,QM/QM等方法。
加大基组以获得更高精度。建议试试最近开发的Def2-TZVPP、Def2-QZVPP等分块收缩基组,精度相当于ANO、cc-pVnZ等,但算起来比较快。需要注意的是,Def2基组有数种类型,常见的有全电子非相对论和相对论ECP两种类型。DKH相对论和ZORA相对论收缩的全电子Def2基组尚未发表,但在免费的ORCA程序库里有,需要做个原子计算打印出来。
喜欢追新潮的朋友,还可以试试支持GPU计算的程序。比如最新发布的pc-gamess。
关于“实验靠不住”的一个例子:气态
CaI2的构型。闭壳层,没有过渡金属,应该很简单吧。共有三篇实验文章,两篇说是直的,一篇说是弯的。一本经典的金属有机教科书如今出到了第三版,采用了弯曲的结果。但所有的理论计算,都说是直的。另外,从CaX2,
X=F,Cl,Br的变化趋势,也支持直线结构。
先生的补充和评价
yjcmwgk&&版主的经验之谈很精辟,
文献阅读量相当广泛, 我在此也附谈一些我的看法,希望大家批评指正.
1.分子结构、键长和键角
“百分之四十用的是B3LYP,百分之四十用的是B3PW91,百分之五用的是MPn族,百分之五用的是CCSD(T)族”
在节省时间,提高效率以及降低资源消耗方面,B3LYP和B3PW91是不错的选择,而在这方面MPn族CCSD(T)族则是相当耗时和耗资源,所以研究有机反应机理的和研究一些相对体系较大的分子的更偏好B3LYP和B3PW91
虽然dft在研究氢键方面也一直有人在用,但现在大多数的审稿人总是对这种方法持怀疑的态度,因为对扩散相互作用,dft无法预测,而审稿人更为信任的是
mp2,而且一般需要大基组来计算,如aug-cc-pvdz,aug-cc-pvtz等,但如果无法完成这些基组,一些低一些的基组来做计算也是可以被接受的,如6-31G++(d,p),6-311G++(d,p)等,但bsse校正是做氢键方面一个必须要做的一部分。如aug-cc-
pvdz,aug-cc-pvtz等这些大基组,bsse似乎影响不大,可以不做。
3.远程弱作用
这方面我看到的更多的是电荷转移, 方法选择上版主的介绍很详细.
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
POTCAR 赝势文件
可以理解为分子力学模拟中的力场文件 但包括的信息更多
VASP4.6将各元素优化的INCAR里的参数也包括在这里了,作为支持PREC的缺省选择
通常各元素的POTCAR已经包括在软件包里了
我们只需要按照POSCAR里的顺序,将各元素的POTCAR按顺序连接起来就可以了
如以下命令:
cat file1 file2 file3 & POTCAR
软件包自带的绝大多数赝势是超软赝势(US-PP)了,但不少元素有两个版本,如何
一个简单的办法是看后缀
标准的没有后缀 _h 硬一点 _s 软一点
_pv,_sv,_d 就是说semi-core的p,s或者d也当做价态处理了
如果是数字的话,表示的可能是不同的半径截距
也可以参考各版本同目录下的V_RHFIN file ,PSCTR file
这两个文件告知该版本的赝势是如何生成的。比如:
V_RHFIN file
Sc: 6p d2 s1
&.002000&&44.95590
125.& &.25E-05
.300&&200FCA 12.00000
&.5 -320.0
&.5&&-34.4217
2.0&&1.0&&1.5&&-28.2366
&.5& &-3.7944
3.0&&1.0&&1.5&
3.0&&2.0&&2.5&
&.5& & -.2699
4.0&&3.0&&2.5&
-.1000&&.0000
第一行是注释行 给出基本的信息
第二行是最重要的控制行
2000&&44.95590
125.& &.25E-05
.300&&200 F CA 12.00000
&PHI&&NC1 | CH
J - 轨道数&&Z -
原子序数& & XION - 离子化程度 一般设为0 N -
AM - 原子质量& &H -
决定格点间距& & DELRVR - 自洽收敛标准
PHI - 线性拟合参数 NC1 - 最大自洽循环次数 GREEN - 是否存在初始的势
CH - 交换相关能(XC)类型
HL Hedin Lundquist (1971)
CA Ceperly and Alder parameterized by J.Perdew and Zunger
WI Wigner interpolation
PB Perdew -Becke
PW Perdew -Wang 86
LM Langreth-Mehl-Hu
91 Perdew -Wang 91
QCOR - 非价键电子数(core electrons)
第三行开始是每个轨道的具体参数,依次为
n l j(=l±1/2) 原子轨道能 占有率
PSCTR file of LDA/H1.25
TITEL&&= US H
LULTRA =& & T&
& use ultrasoft PP ?
& 0.57&&nn
distance ! Wigner-Seitz radius
RMAX& &= 3.0 ! core radius for
Description
TYP&&RCUT(cutoff radius)
&0.80&&23&
&0.80&&23&
&0.80&&23&
最重要的地方上面已经用颜色标出来啦:)
说明一下,TYP是指赝势的类型,RCUT是半径截距,TYP可取的值如下:
7 RRKJ wave function possibly with node
15 RRKJ wave function strictly no node
最后一个问题是LDA or GGA。貌似没有定论目前。
这个最好是两个一起做做看啦。或者看文献别人验证过哪个数据好。
其实据说目前最好的是PAW(P.E.Blochl,Phys.Rev.B 50,).,Phys.Rev.B
).),PP已经落伍了,不过好像我们用的VASP不带这个,就不展开讨论了。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
赝势文件的分类
& 按方法:超软赝势和缀加投影波(PAW)势
& 按交换关联函数: LDA和GGA(又再细分为PW91和PBE)
& 按是否处理了semi-core态:A, A_sv, A_pv和A_d (A为元素
& 按赝势文件中ENMAX的大小:A, A_s和A_h
paw_GGA/ paw_LDA/ paw_PBE/ uspp_GGA/ uspp_LDA/
Ac/ Be_sv/ Ce_s/ F/ H/ In/ Mg_pv/ Nb_sv/ O_s/ Pt/ S/ Ta_pv/
Ac_s/ B_h/ C_h/ Fe/ H1.25/ In_d/ Mn/ Ne/ Os_pv/ Pu/ Sb/ Tc/
Ag/ Bi/ Cl/ Fe_pv/ H1.5/ Ir/ Mn_pv/ N_h/ P/ Pu_s/ Sc_sv/ Tc_pv/
Al/ Bi_d/ Cl_h/ F_h/ H.5/ K_pv/ Mo/ Ni/ Pa/ Rb_pv/ Se/ Te/
Al_h/ Br/ Co/ F_s/ H.75/ Kr/ Mo_pv/ Ni_pv/ Pa_s/ Rb_sv/ S_h/ Th/
Ar/ B_s/ Cr/ Ga/ He/ K_sv/ Mo_sv/ Np/ Pb/ Re/ Si/ Th_s/ W/
As/ C/ Cr_pv/ Ga_d/ Hf/ La/ N/ Np_s/ Pb_d/ Re_pv/ Si_h/ Ti/
Au/ Ca_pv/ C_s/ Ga_h/ Hf_pv/ La_s/ Na/ N_s/ Pd/ Rh/ Sn/ Ti_pv/
B/ Ca_sv/ Cs_sv/ Ge/ Hg/ Li/ Na_pv/ O/ Pd_pv/ Rh_pv/ Sn_d/ Ti_sv/
Ba_sv/ Cd/ Cu/ Ge_d/ H_h/ Li_sv/ Na_sv/ O_h/ P_h/ Ru/ Sr_sv/ Tl/
Be/ Ce/ Cu_pv/ Ge_h/ I/ Mg/ Nb_pv/ Os/ Ru_pv/ Ta/ Tl_d/ Zr_sv/
软件包自带的绝大多数赝势是超软赝势(US-PP),但不少元素有两个版本,如何
一个简单的办法是看后缀
标准的没有后缀 _h 硬一点 _s 软一点
_pv,_sv,_d 就是说semi-core的p,s或者d也当做价态处理了
如果是数字的话,表示的可能是不同的半径截距
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
简单来说,赝势就是不计算内层电子,而是把内层电子的贡献用一个势来描述,放在哈密顿里面。适用于重元素。
赝势基组,实际上包括 赝势和基组两个部分,内层电子采用赝势,即effective core potential
(ECP),外层价电子采用一般的基组。 比如:
LanL2DZ: D95V on first row, Los Alamos ECP plus DZ on Na-Bi.
就是对第一行原子是
D95V (这个是非赝势基组),对Na-Bi是使用一个叫做Los
Alamos的有效核势加上一个DZ基组。所以Lanl2dz就是对前面的原子全电子基组,对后面的原子是赝势基组。(再次说明,量化里面,C,O那一行,算周期表的第一行)
使用赝势的3个原因:
1。没有相应的全电子基组。
2。减少计算量。
3。赝势可以包含重金属相对论效应的修正。
在高斯中,lanl2dz基组,在手册中可以查到其定义为:
LanL2DZ: D95V on first row , Los Alamos ECP plus DZ on
Na-Bi,也就是说,对于C,O等元素来说(量化中,H大概算第0周期,C,O才是第一周期),Lanl2dz实际上还是全电子基组,而对于Na以后才是对内层电子用Los
Alamos ECP赝势,外层电子用DZ 基组。
使用赝势的输入文件:
1.所有原子使用lanl2dz
--------------------------
#HF/lanl2dz opt
lanl2dz for all atoms
O 0.0 0.0 0.0
C 0.0 0.0 1.2
Cu 0.0 0.0 3.2
--------------------------
2.所有原子使用lanl2dz的另一种输入方法。
--------------------------
#HF/genecp opt
lanl2dz for all atoms
O 0.0 0.0 0.0
C 0.0 0.0 1.2
Cu 0.0 0.0 3.2
lanl2dz //定义价电子的基组, C O 0 是碳,氧,零,其中零用作终止符号。
lanl2dz //定义内层电子的赝势
--------------------------
3.混和基组,即有的使用全电子,有的使用Lanl2dz。格式同2。
#HF/genecp opt
lanl2dz for Cu, 6-31G(d) for C and O
O 0.0 0.0 0.0
C 0.0 0.0 1.2
Cu 0.0 0.0 3.2
6-31G(d) //另一种全电子基组
lanl2dz //定义价电子的基组
lanl2dz //定义内层电子的赝势
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 金刚狼3百度网盘 的文章

 

随机推荐