差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

ab_initio:波動関数 2009/02/01 00:58 ab_initio:波動関数 2009/05/25 16:28 現在
ライン 1: ライン 1:
====== 波動関数 ====== ====== 波動関数 ======
 +===== getwfs スクリプト =====
 +==== 使い方 ====
 +<note warning >
 +出力ファイルが山のようにできるので、どこでコマンドを実行するかよく考えてから実行すること。
-<code> +''-w'' をつけなければ''gettotaldensity''コマンドと同じ働きをする。 
-[kimi@ssp1 ncfiles]$ ./getwfs +</note> 
 + 
 +<code sh
 +$ getwfs
usage: getwfs [-w] input_nc_file output_file_prefix usage: getwfs [-w] input_nc_file output_file_prefix
ライン 9: ライン 16:
  -w, --wavefunction  create xyz format files for all wavefunctions   -w, --wavefunction  create xyz format files for all wavefunctions
-[kimi@ssp1 ncfiles]$ cat ./getdensity ./getwfs  +
-#!/usr/bin/env python +</code>
-from math import log10 +
-from optparse import OptionParser+
-from Dacapo import Dacapo +  * [[script:getwfs|ソースコード]] 
-from ASE.IO.Cube import WriteCube+ * [[makevestafileスクリプト|単位格子ベクトルが互いに直交しない場合のVESTAの問題]]
-cmd = OptionParser(usage = '%prog [-w] input_nc_file output_file_prefix') 
-cmd.add_option('-w', '--wavefunction', action = "store_true", default = False, 
-              help = 'create xyz format files for all wavefunctions') 
- 
- 
-(opt, argv) = cmd.parse_args() 
- 
-if len(argv) != 2: 
-    cmd.print_help() 
-    raise SystemExit 
- 
-ncfile = argv[0] 
-cubefileprefix = argv[1] 
- 
-model = Dacapo.ReadAtoms(ncfile) 
-calculator = model.GetCalculator() 
- 
-if opt.wavefunction is not True: 
-  density = calculator.GetDensityArray() 
-  cubefile = '%s.xyz' % cubefileprefix 
-  WriteCube(model, density, cubefile) 
-else: 
-  NumberOfBands = calculator.GetNumberOfBands() 
-  NumberOfKpoints = len(calculator.GetIBZKPoints()) 
-  isSpinPolarized = calculator.GetSpinPolarized() 
-  if (isSpinPolarized): 
-    NumberOfSpins = 2 
-  else: 
-    NumberOfSpins = 1 
- 
-  for nband in range(NumberOfBands): 
-    for nkpt in range(NumberOfKpoints): 
-      for nspin in range(NumberOfSpins): 
-        cubefile = '%s' % cubefileprefix 
-        fmts = '%%0%dd' % (log10(NumberOfBands) + 1) 
-        cubefile += fmts % nband 
-        if (NumberOfKpoints > 1): 
-          fmts = 'k%%0%dd' % (log10(NumberOfKpoints) + 1) 
-          cubefile += fmts % nkpt 
-        if (NumberOfSpins > 1): 
-          cubefile += 's%1d' % nspin 
-        cubefile += '.cube' 
-        print cubefile 
-        wf = calculator.GetWaveFunctionArray(band = nband, 
-                                              kpt = nkpt, 
-                                            spin = nspin) 
-        WriteCube(model, wf, cubefile) 
- 
- 
-[kimi@ssp1 ncfiles]$  
-</code> 
ab_initio/波動関数.1233417521.txt.gz · 最終更新: 2009/02/01 00:58 by kimi
www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0