24小时热门版块排行榜    

查看: 1120  |  回复: 1

maomao-666

木虫 (小有名气)


[交流] 【求助】siesta中PDOS文件的处理

请教高手,如题,在siesta中怎么处理PDOS文件!
回复此楼

» 收录本帖的淘帖专辑推荐

siesta问题

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

» 抢金币啦!回帖就可以得到:

查看全部散金贴

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiaochun37

铁虫 (初入文坛)


★ ★ ★ ★
cenwanglai(金币+2):谢谢回复! 2010-11-10 17:33:18
sunyang1988(金币+2):呵呵,辛苦了 2010-11-10 19:00:47
maomao-666(金币+5): 2010-11-10 19:03:48
百度来的哈~~
一: pdosxm

我主要参考的http://fisica.ehu.es/ag/siesta-extra/issues.html 使得siesta输出的PDOS文件中没有*。
另外对于nspin=2的情况,修改了pdosxml的代码,使得其能用。

(1) 在arch.make中加入
    FPPFLAGS= -DWXML_INIT_FIX
   
    $make clean ,
    $make
    这样siesta输出的PDOS文件中就没有*。

(2)推荐使用/Util/pdosxml,来读取PDOS文件,并转化成gnuplot能处理的形式
   使用参见/Util/pdosxml/README


   主要步骤如下:
   1  在m_orbital_chooser.f90 中选好你要的轨道
   2  make
   3 ./pdos h2o_dos.PDOS >out
   
   采用原来的代码,计算nspin=2时会出错,http://fisica.ehu.es/ag/siesta-extra/issues.html给出的 m_pdos.f90文件 其实和原来的一样。我们要自己改一下代码
    在 m_pdos.f90 大概150多行的地方:

           if (spin_polarized) then
              dos1 = dos1 + data(1:ndata:2)
              dos2 = dos2 + data(2:ndata:2)
           else
              dos1 = dos1 + data
           endif

        
               || 替换成
               ||
               ||
               \ /


  

          if (spin_polarized) then

             !shanghui add here to make nspin=2's pdos
             do i=1,ndata/2
             dos1(i) = dos1(i) + data(2*i-1)
             dos2(i) = dos2(i) - data(2*i)
             enddo
             !shanghui end add here
          else
              dos1 = dos1 + data
          endif

      

这样你就能做出正负分开的PDOS了。

上面修改好的siesta放在 cluster4  /public/soft/siesta/siesta_Util_pdosxml




二  : readpdos

    我写的一个小代码,放在 210.45.121.200
   ~/share/Seminar_backup/siesta_tutorial/soft_siesta/readpdos
   可以对有*号的PDOS文件都能处理,但是每次体系,都要重新修改代码
2楼2010-11-10 17:30:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 maomao-666 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见