情報の倉庫ページ

(2/1、2002、開始)本ページでは、 古くなった情報を溜めて置く場所です。その性格上やや重いページとなってい ます(ご了承下さい)。従って、本ページにある内容は、許可なく無断で転載、 (再)投稿、(ここ以外での)公開などを行なうことを禁止します。これ以外(リンク等:基本的にリンク は自由)に関しては、著作権、リンク等に関してのページを[ ご参照]下さい。
目次
つくってみようバンド計算プログ ラム
用語集番外編

つくってみようバンド計算プログラム[Top]

目次
はじめに
その1、まず取り敢えず作ってみよう
取り敢えず動かす
改良してみよう
とにかく単独で動くようにする
ダウンロードと解凍、展開

はじめに

1997年の日本物理学会の春の年会に参加し、これまでこのホームページ で扱っている(公開している)バンド計算プログラムに関して、この製作に関 わった共同研究者(まだ全員ではないです)と相談し、これまで公開できなかっ た部分も、公開できそうです(これもまだ全てではないです)。公開に関して 快諾してくれた方々に深く感謝する次第です。

これだけでは、まだ1つのプログラムとしては稼働はしませんが、近日中に 更に公開できる部分を増やすべく、(他の)共同研究者とも相談する予定です。
目標としては、一つのプログラムとして稼働できる状態としての公開を目指 します。

そして、これを元にして、新たにバンド計算プログラムを作ってみようと思 います。構想としては、既存の公開されたルーチンを可能な限り再利用する。 言語仕様はFOTRAN77(できればFORTRAN90以上)とする。VPPでの並列化 (k点並列)が可能である。可能な限り、汎用性、可読性、効率性(特に、速 度やメモリーに関して)を考慮する(汎用性、可読性と効率性は互いに相反す る面があることに注意)。などを考慮しつつ作成します(それ以外にもいろい ろ考えていますが、まだ完全に煮詰まっていません)。

なるべく話しをどんどん進めていった方が良いと 判断しましたが、事実上頓座しています。

昨日(4/4、1997)、日大の石田先生から、プログラム公開に関して、 問題無しの回答を頂きました(既に融合研の森川氏からは許可を貰っています)。 両名には快諾していただき深く感謝する次第です。

これによってこれまで公開していなかったサブルーチンの大部分が公開可能 となりました。実質的に、既に公開しているものも含めると、公開する(した) サブルーチンだけから1本のバンド計算プログラムの作成がほほ可能であるこ とがわかりました(厳密に言うと、まだ完全ではありません)。

従って、取り敢えず、新たに公開可能になったサブルーチンの説明から行な いたいと思います。各サブルーチンの説明は、むしろ各論編で行なった方が良 いと思います。[ 各論編]へ行く。

4/16、1998、朝、各論編での公開、説明一段落着きました。いよい よ本題に入りたいと思います。


その1、まず取り敢えず作って みよう [目次]

では、ここで再び、現在公開しているサブルーチンを 示してみましょう。

このサブルーチンリストで公開されていないもので、(1)本バンド計算プ ログラムに必須だが公開していない、できないもの。(2)必須でなく公開し ていないもの。があります。

(1)としては、 各論編でも述べた、対角化(固有値問題)や、その他にもFFT部分(M FFTはインターネットからソースを 入手可能)、特殊関数(球べッセル関数、誤差関数、Γ関数など)などを 使っている部分は公開できません。

これらは、各自自力で入手してもらうしかないと言え ます(手段は選んで入手して下さい)。

またこのようなもの以外に、重要なサブルーチンが3つ欠けています。それ はHPSORTとFERMI(とWIDTH2)です。
HPSORTは作った逆格子ベクトルを小さい値(つまりG=0)から、大きい方 へ並べ替える(ヒープ法を使っています)サブルーチンなのですが、作成者が 外国人で、現在日本にいないため、公開の許可がとれていません。
FERMI(とWIDTH2)は、エネルギー固有値(バンド)からフェルミエネルギー (フェルミ面)を求めるサブルーチンです。現在、公開できるように作業を進 めています(既に公開、5/17、1999)。

並べ替えに関しては、大変効率は悪いですが、バブル法によっても可能で、 この方法自体は、サブルーチン MSDのバンドの並べ替えのところで使っています。多分、これを参考に すれば逆格子ベクトルの並べ替え用のルーチンも作れると思います(但し、バ ブルソートはソートすべき数Nの二乗で計算量が増えるので、大規模な計算に なると計算量が莫大なものになってしまいます。既に、これも公開、5/17、1999)。
フェルミエネルギーを求めるサブルーチンは取り敢えず後回しにして話しを 進めていきたいと思います。

(問題点)

「やさしい(?)バンド計算プログラムの 作り方」で既に述べられているように、(主に)筆者の作ったプログラム は汎用性も可読性もない、公開には元々不向きなものです。
そこで次のような方針を立ててみました。

  1. 当然、NCPS95(97)に対応している必要がある。
  2. 最初は、現行のままで、電子状態のみの計算をする、最も基本的なもの を提示。
  3. そして、段階的に新しい機能を加えていく(PCC、力、ストレス)。
  4. 富士通VPP用の並列化指示行は有効(つまりVPP上での並列計算が 可能)であるように作る。
  5. 最終的に、可能な限り汎用性や可読性を 考慮したプログラムを作っていき、これを新バージョンとして提示する。
    • まずはメイン文を改良する。
    • 個々のサブルーチン全てに渡る改良、拡張、チューンアップは事実上 不可能。
    • 問題はCOMMON文をどうするか。
  6. 計算対象となる系に対しても汎用性が要求される(可能な限り多くの系 に対応する必要がある)。
孫引き以下を除くサブルーチンはメインプログラムの中で呼び出されていま す。従って、構造上サブルーチンはプログラム構成上の部品(パーツ)とみな すことが可能です。そしてメインプログラムで、プログラムの(実行時の)流 れが決定されています。

従って、メインプログラムの構成を変えれば、ある程度自由な、プログラム 実行に関しての仕様変更が可能です(例えば、電子状態計算と分子動力学部分 との計算ステップ数の割り振り〔1回毎に原子を動かすか、10回毎に原子を 動かすか〕など)。
更に、メインプログラム内に新しい機能を持たせたサブルーチンを呼び出す ようにするだけで、プログラムの拡張ができます(そういうようなプログラム にする)。

そこで筆者としては、まずメインプログラムに最重点を置き、その改良、拡 張を目指していくことにします。

むしろ問題なのは、インクルード用のプログラムPACVPP で定義されているCOMMON文(とその〔配列〕変数)です。作った本人にとって は、COMMON文による配列定義の多用は比較的便利(時間が経つと便利でなくな る)なのですが、汎用性、可読性を考えると、現行のPACVPP内での定義の仕方 は、大変好ましくないものと言えます。
従って、PACVPP内のCOMMON文による定義部分にも大幅に手を加える予定でい ます(いまのところCOMMON文による定義の仕方そのものは変更しない方針です)。

一番最初はリスト(項目2)にもあるように、現行のま まの、とにかく公開されたものを繋げただけのものを 公開したいと思います。

今回、公開したものは色分け等は施していません。最低限必要なHTML用 のタグ以外は何も付けていないので、テキスト形式でそのままダウンロードし てHTMLタグの付いた最初の数行と、最後の数行を取り除けば、即FORTRAN プログラムとして利用可能です。
全体で4961行もあり300kb以上ありますので、ダウンロードの際は 気を付けて下さい。

但し、公開できない、していない部分があるので、これ単独ではバンド計算 プログラムとして稼働しません。その他に、必要なものとしてインクルード用 ファイルPACVPPREINIT、 入力データファイルI.DAT、 プログラム制御用入力ファイルCONTL.DAT などがあります。

また忘れていけないものに、使うべき擬ポテンシャルデータが必要です(N CPS95〔97〕の利用が一番簡単)。

このプログラムは公開を全く想定していません。ある時点で実際に使用して いたものを提示しています。従って、余計な注釈行や、デバッグ用の制御命令 が不用意に挿入されている可能性があります(筆者にも把握しきれていない ^^;)。

取り敢えず動かす [目次]

公開できない、していない部分が何とかなったとして、このプログラムの簡 単な動かし方について説明したいと思います。

以上は、ごく狭い参考例でしかありません。各研究者が置かれた計算機環境 はまちまちです。上記で説明しなかった、昔ながらの非UNIX系のOSが稼働し ている大型計算機(スパコンを含む)をいまだに使用しなければならない状況 にある場合もあるかと思いますが、それらについてはフォローできません。


補足、6/25、1998)
HPにおいては、最新のOS、フォートランコンパイラ環境では、筆者のプ ログラムが正常に動かないことが判明していま す(どうも64ビット対応による障害らしい)。(10/8、1998)既に、 HPでも正しくコンパイル、動作することが確認されています(詳細は不明)。 HP730,HP735,HP750のような古い環境では、上記リストのコンパイル手順で正 しく動くはずです。

補足2、6/26、1998)
これらSGI、SUN、IBMで動かしたプログラムrevpe_d.fは、本ペー ジで公開しているものと若干バージョンが異なります。
まずSGIでは組み込み関数であるIMAGDIMAGに変更しています。SUNではDABSDEXPABSEXPに変更して います。またSUNでは倍精度化がコンパイラオプションとして存在しないの で、netlibにある、s2dなるツールを使って倍精度化しています。IBMでは 特に留意事項はありません(但し、オプションには扱う計算の規模に依存した ものもあり、計算によって値が異なるものもあります。またオプションも非常 に多いですが、中には実行には必ずしも必要のないものもあるかと思われます)。


このプログラムはFFTサブルーチンとの整合(元々のFFTルーチンがク レイのスパコン上で開発されたもので、単精度〔クレイでは倍精度〕で記述さ れていたため)のため、ソースコードをコンパイルする時、倍精度化のオプショ ン(-Aadや-r8など)を付けてコンパイルしています。従って、上記のコンパ イル例以外の機種での場合も、倍精度化しておく必要があります。これらのオ プションに関しては、各機種毎のコンパイラーに関してのマニュアルを参照し て下さい(つまり自力で対応してください)。
倍精度化に関しては、それを行なう(FORTRANソース 用)フリーソフトが存在するようです(詳細は不明、5/17、1999)。

またいわゆるPC-UNIX環境では、フォートランのコ ンパイラが無い可能性があります。本ソースコードはf2c+ccでも正常に動作す るはずです。

f2c -r8 revpe_d.f
cc -I /usr/local/include/f2c -lF77 -lI77 -lm revpe_d.c -lf2c

又は、

gcc -lm revpe_d.c -lf2c

上記で、-r8は倍精度化のオプションです。その他のオプションは環境によっ て全く異なる(必要ない)可能性があります。またf2cでrevpe_d.cが生成され ます。-I /usr/local/include/f2cや-lI77、-lF77は必要ない場合もあります。 またcc、gcc、いずれでもコンパイル可能だと思われます。
いま公開しているrevpe_d.fではないですが、ほぼ同じバージョンのソース コードをf2cでC言語に変換し、それをCコンパイラでコンパイルし、正常に 動作することを確認しています。
動作確認をしたPC-UNIX環境としては、Linux MLDII、Turbo Linux(ver 2.0)、PANIX(ver4.0)です。
最近、GNUがg77なるフォートランコンパイラを世に出しましたが、現時点で は動きません(倍精度化ができない、前述の倍精度化を行なうソフトで倍精度 化した後では動く可能性がありますが、動作未確認です)。
(1/25、2000)現在、富士通から富士通Fortran&C@Linux Packageが購入可能です。いくつかのPC-UNIXに対応しており、TurboLinux (ver 4.0や4.2)も対応しています。revpe_d.fもプログラムfrt -Ad revpe_d.fでコンパイル可能です。

改良してみよう [目次]

取り敢えず、公開できるものは公開してしまいました。このままでも何とか して動かすことはできると思います。しかし、汎用性や可読性は全くありませ ん。既に効率も決して良くはありません。

まずは、メインプログラム部分に注目し、プログラム全体としての見通しの 悪いこの部分を思い切ってすっきりさせて行きたいと思います。
これ以降は、比較的規模の大きなソースコードに対する改良を行なっていく ので、作業の進行速度が著しく遅くなります。気長に待って下さい。

メインプログラムの改良 [目次]

現在、メインプログラムの解析中

■■■■■■■■■■■■■■________________

 0%   10%   20%   30%   40%   50%   60%   70%   80%   90%   100%
(3/11、1998、事実上中断状態です) 。多分、この作業は続行が困難と考えられます。作業開始の目処は立っ ていません。

現在(5/20、1997)、メインプログ ラムを以下の方針で改良中です(上に同じく中断 中)

  1. 電子状態計算のみを行なう(簡単なところから始める)
  2. メインプログラムは、可能な限りわかり易く単純にする
  3. 並列化はそのまま(メインプログラムでは、ほとんど設定はないが)
  4. これに伴い、PACVPPREINIT も改良する。
  5. 但し、PACVPP、REINITの名前は変更しない(これがいいかどうかには議 論のあるところです)
(5/28)改良中にいろいろと雑音(?)が聞こえてきます。FORTR AN90(95)、HPF(HPF2)果てはMPI、PVMなどの仕様を入 れろと聞こえてきます。
この手のソフト上の進歩も急速です。すぐに新しい概念や仕様が出てきます。 それに追い着いていかなければならないことは大変なことです(このこと自身 が、日本ではあまり評価されない)。

中途版公開(6/4、 1997)[目次]

取り敢えず、上記リストに則った形で、改良した(まだ完成ではない) メインプログラム、及びインクルードファイル(PACVPPREINIT) を公開します。
このメインプログラムでは、現時点で可能な限りの簡単化を行なったので電 子状態の計算しかできません。
ここでちょっと 付録、補足へ寄り道します(6/5、1997)。
今日(6/6、1997、D-DAY)も、 寄り道します。
今日(6/11、1997)は、並列化に関して 寄り道します。
最近(8/21)、大分御無沙汰しています。実は一連の「バンド計算共通 互換規格」に対する 推移編(経緯を含む)を書いていく上で、新たな問題点がいくつか出てき ました。

問題点
  1. 今後公開するプログラムソースはFORTRAN90かHPFで記述されるべき ではないか?
  2. 具体的な共通互換規格がない今、公開しても意味があるか?
  3. ましてや、今わざわざFORTRAN90等にプログラムを書き直す必要があ るか?
  4. そもそも、雑用が多くて、仕事が捗 らない!
  5. 大体、プログラムの改良と言っても、まだメインプログラムしか変 更していない(できていない)。
  6. 取り敢えず、プログラムの整形化ツール*を使って、既存のFORTRAN77によるバ ンド計算プログラムを整形化してみたが、それを公開して良いか問題あり (著作権問題)。
*整形化ツールについては、(大分)後で 詳しく解説する予定。
平成9年度物理学会秋の分科会(10/5から10/ 8まで)で、東京理科大学の浜田先生から、サブルーチンFERMI 及び、WIDTH2 の公開の許可を頂きました(大変感謝する次第です)。これにより、現在公開 可能なサブルーチンのリストは次のように 更新されます。

とにかく単独で動くようにする (10/27頃、1997)[目次 ]

更に、現在入手(有料)可能なサブルーチンを使って、プログラム revpe_d.fを動かすテストを行なっています。まずは、対角化サブルーチンか ら作業(デバッグに苦労する。[ 内容])を始めています。
参考としている文献「Fortran77による数値計算ソフトウェア」、渡辺力、 名取亮、小国力監修、丸善刊です。この中にエルミート行列の対角化と固有値、 固有ベクトルを求めるサブルーチン、球ベッセル関数、誤差関数などが載って おり、添付の(筆者が購入した時は5インチフロッピーだった)フロッピーに、 これらのサブルーチン、関数が収録されています。

誤差関数に関しては、「FORTRAN-77による科学技術計算サブルーチンライブ ラリ」、黒瀬、松島、松尾著、啓学出版に、プログラムリストが載っています。

また、書籍「Numerical Recipes」のFortran版にも球ベッセル関数、誤差関 数、エルミート行列の固有値問題など、多数の有用なルーチンが収録されてい ます。[関連サイト]

現在、これらのサブルーチン、関数をrevpe_d.fにくっつけて動作のテスト を行なっています(全てをチェックしている訳ではない)。既にエルミート行 列の対角化(固有値問題)のサブルーチンは正常に動作することを確認しまし た。現在も他の関数のルーチンの動作テストを行なうべく準備を進めています。

尚、これらのサブルーチン、関数の入手は、前述の文献「Fortran77による 数値計算ソフトウェア」の購入を強く勧めます。 価格は筆者が購入した当時(数年前)で7004円(消費税3%を含む。当時 はまだ5%でないことに注意)でした。
高いと思われるかもしれませんが、これは収録されているサブルーチン、関 数も豊富で、内容も非常に良い本です。また、このような形で科学技術計算関 連のサブルーチン、関数群が入手できる例は他にあまりなく、この意味でも著 者の先生方(の御尽力)に敬意を払う(購入する)必要があると思います。

当然のことですが、購入以外の手段での入手は、著作権法が認めるごく内輪 (この場合研究室内というのはごく内輪には該当しな い可能性があります、丸善に問い合わせる必要があると思います)の 場合、著者(及び丸善)の許諾を得た場合を除けば、明らかな犯罪ですので、 くれぐれも注意してください。

現在(10/27、1997)、更に前述の文献「Fortran77による数値計 算ソフトウェア」を利用して、誤差関数DERF、球ベッセル関数DSJBESがテスト 計算において正しく動作することを確認しました。加えて、逆格子ベクトルを 小さい順に並べ替えるサブルーチン(バブルソートによる方法を採用、このた め大変遅いです)も用意しました。並べ替えに関しては本当はヒープ法による ものがあるのですが、作成者に公開の可否について確認していないので、今回 は公開できません(御容赦下さい)。

現在、高速フーリエ変換サブルーチン[MFFT]の最 新版が旧バージョンと同じように、revpep_d.fで正常に動作するかどうか確認 できれば、(まだ対称性には対応できませんが)一応単独(計算機やメーカー 依存の科学技術計算ライブラリに頼らないで動くこと)で動くバンド計算プロ グラムが提供できます(但し、文献「Fortran77による数値計算ソフトウェア」 の購入またはそのサブルーチンソースの合法的 な入手が前提)。

これらのサブルーチン、関数使用に関しては今のところ、ごく限定的なテス ト計算しか行なっていません。既に対角化(固有値問題)サブルーチンに関し て、文献「Fortran77による数値計算ソフトウェア」によるものは、縮退のあ る系ではうまく計算でいきない可能性があるという指摘を頂いております(情 報提供に感謝)。ただ、これがこのサブルーチン固有の問題なのか、それとも 組み込まれたプログラムとの相性の問題なのかは今のところはっきりしません (現在、調査準備中)。
このように、今後本格的な計算を行なうようになると、システム(OSや機 種)や扱う系に依存するような問題(大きな系では動かなくなる、コンパイラー のバージョンや機種によって動かない、ある特定の系の時に正常に動かなくな るなど)に遭遇する可能性があります。

現在(11/6、1997)、ベッセル関数、誤差関数に関して、文献 「Fortran77による数値計算ソフトウェア」のフロッピーに収録されているも のが利用可能(正常に稼働すること)が確認できています。更に、最新版の [MFFT] をくっつけても正常に稼働するかどうかをテストしましたが、これは動く場合 と全く動かない場合(システム)とに分れました。

DEC上では、オプションの追加で対応可能であることがわかりました。プ ログラムrevpe_d.fに対して、古いMFFTルーチンから新しいMFFTルー チンへ付け替えて、コンパイルを、

f77 -r8 -O5 revpe_d.f

から、

f77 -r8 -i8 -O5 revpe_d.f

とするだけで、テスト計算では問題なく動作することを確認しました。古い MFFTルーチンは、開発途中で倍精度用の改良がなされており、オリジナル なものとは内容が変わっています。従って、逆に新しいMFFTをそのまま付 け替えて、全く従来と同じコンパイル方法を用いただけではプログラムは動き ません。

動かすためには、新たに-i8というオプションが必要になります。実は古い MFFTも改良する前はこのオプションを付けていました。

そして問題なのは、DEC上では比較的すんなり(本当は全く別の理由で 問題はありますが)動きましたが、それ以外の場合には大分問題がありそ うです。

まずPC(DOS/V互換機、本当はIBM PC‐AT互換)上で動く富 士通のフォートラン90コンパイラでは正常に動作しません。現時点であらゆ る操作を試みていますが、正しい計算結果を得られません。この様子からVP P等の富士通、ファコム系スパコンでも動作しない可能性があります(まだス パコン上ではテスト計算していない)。

いろいろ試行錯誤した(11/11、1997)結果、ようやくPC上の富 士通FORTRAN90コンパイラで動くようになりました(まだテスト計算のでのみ 確認)。ここまで来るためには、いろいろなことを試しました。

まずrevpe_d.fに新しいMFFTルーチンをくっつけ(旧MFFTは削除)、 従来のコンパイル(frt -Ad revpe_d.f)ではまるで動かないので、オプショ ンをいろいろ変えて試してみました。試したのは、-AAd、/Cp、/Cp4、/Cp8な どです(それぞれのオプションの意味は各自で調べて下さい。どれも精度拡張 に関係したものです)。しかしながら結果としてはどの場合も計算途中で止まっ たり、全エネルギーが発散したりして全くまるで動きませんでした。

次に、revpe_d.f内のsin,cos,exp,cmplx,conjgなどの組み込み関数で、倍精 度表示になっているものを単精度にしたり、MFFT用の作業配列のサイズを 変えたりと、いろいろな場合を試してみましたが、どれも全く状況の改善につ ながりませんでした。

そうこうしている内に、DEC側ではオプションを-r8から-r8 -i8と、-i8 という整数変数を8バイト(普通の既定値は4バイト)にするオプションを付 けると正しく動くこと、富士通FORTRANコンパイラのマニュアルを良く見てみ ると、このコンパイラにはDECの-i8に相当するオプションはないが、 INTEGER*8(8バイト整数)の宣言が可能であることがわかりました。

ひょっとしたらと思い、revpe_d.f(新MFFTを含む)のINTEGER宣言を全 てINTEGER*8にしてみました。これは正しく動きませんでしたが、新しいMF FT部分内のみのINTEGER宣言をINTEGER*8にし、frt /Cp4 revpe_d.fの条件で コンパイルすると正しく動くことが確認できました。

オプション/Cp4は、単精度→倍精度(精度拡張を行なう)、倍精度はそのま まで、記憶合わせを行なうものです。但し、INTEGER*8という宣言は、コンパ イラの仕様によって宣言できない場合もあります。

また最近、PC-UNIX系(筆者はLinuxを使用、普通の UNIX、例えばDigital UNIXでも可能)で、f2cを使ってまずrevpe_d.fをC言語 版に変換し(f2c -r8 revpe_d.f)、それをgcc(gnuのCコンパイラ)で翻訳 すると、従来のMFFTを使っている場合は問題なく動きますが、新しいMF FTではどうしても動かないことを確認しました(実行途中で止まってしまい ます)。先の方法で回避できるかと思い、MFFT部分のINTEGER宣言を INTEGER*8に書き変えてみましたが、これもうまく動作しませんでした。今の ところ、新MFFTでは、f2cによる方法での実行はできていません(11/ 21、1997)。

gnuのg77(フォートランコンパイラ)は筆者の使用しているバージョンでは 全くコンパイルできませんでした。

ヒューレットパッカード(HP)上では、旧MFFTを新MFFTに挿し替 え、問題なくコンパイル、実行できましたが、実行結果に問題がありました。 まず、従来のMFFTでの実行結果(全エネルギー)が、-48.7833775a.u.で した。一方、新MFFTの方は、-48.7833740a.u.でした。エネルギー差は、 0.0000035a.u.(0.0952meV)です。一見、この位なら問題ないだろうと思いそ うですが、話はそう簡単ではありません。このHP上の新MFFT付きのコー ドをそのままDEC側にコピーしてコンパイル、実行させると全エネルギーは ちゃんと-48.7833775a.u.と出てきます(-48.7833740a.u.にならない)。従って、新MFFT に関してHP上では何らかの問題があることが判明しましたが、全エネルギー の違いは0.1meV以下と非常に小さく、それ以外に異常終了や、明らかにおかし な計算結果が出ている訳ではないので、現状で問題点を突き止め、修正を行な うことは非常に難しいと考えられます(5/17、1999現在、HPではC PUが64ビット化したことに伴い、フォートランコンパイラもバージョンアッ プしているため、これ以上の原因調査い続行は無理と判断しました)。

因みにHPでは、INTEGER*8はコンパイルエラーによりコンパイルできませ んでした(但し、コンパイラのバージョンは古いです。最新版でどうなってい るかは不明です。〔5/17、1999現在いまだ不明〕)。

以上をまとめてみると、新MFFTが動作する環境は([目次]に戻る)、

となります。まだVPP、SX等の(ベクトル並列型)スーパーコンピュー ターでの動作テストは行なっていません。

次に、現在(11/22、1997)公開可能な追加サブルーチン(二つ) を示したいと思います。

まず、バブルソートを行なうサブルーチンBUBBLE です。そしてもう一つは、ベッセル関数呼び出しのためのサブルーチンDNV です。

バブルソートのルーチンは、各自力のある人はヒープ法や、クィックソート にルーチンを改良変更することを強く勧めます。 バブルソートのままでは系が大きくなると大変遅くなります。
ベッセル関数呼び出しルーチンでは、文献「Fortran77による数値計算ソフ トウェア」にある球ベッセル関数DSJBESを呼び出しています。このルーチンは 先の文献付属のフロッピー内に収録されています (この文献を持ってない人は購入しましょう)

(3/11、1998)それでは、これらDVN,BUBBLEを付けた形での、公開 可能な全体 プログラムを示します。

この段階で、バンド計算にとって基本的に必要な部分は、全て揃ったと言え ます。後は、先の文献「Fortran77による数値計算ソフトウェア」とMFFT ルーチンさえあれば、対称性を考慮しない場合での電子状態計算が可能です。 但し、このままではコンパイル時に対称性関係のサブルーチンが存在しないと いうエラーが出てくる可能性があります。その場合は、サブルーチンSYMM 内のサブルーチンの呼び出し(CALL文)を注釈にすれば良いと思います。

対称性を考慮しない場合の指定は、CONTL.DAT での、上から10行目の、0 0 2 0 4、という記述を 0 0 2 0 1、とすれば対称性なしのバルクの計算ができます(表 面系では10に すればよい)。

サブルーチンKPMWBZ で、バルクでの対称性を考慮しない場合のk点の設定を行なっています(KPMSF は表面系用です)。この中で、Γ点のみの計算から等間隔でのk点(少しずら して設定するなど)の設定などが可能です。ただこれはプログラム内で設定す るようになっているため、変更後再コンパイルが必要です(まだ汎用性がない 好例)。

この全体プログラムは以前示した ものと、細かな内容が異なる可能性がありますが、基本的な内容、性能は 全く変わらないと思って良いと思います。


この時点で唯一残っているのが対称性部分です。これに関しては公開なしで も、対称性を考慮した計算を可能にする方法があります。それはこのプログラ ムは対称性考慮用のサブルーチンを公開していないだけで、その他の部分の対 称性関係の演算(例えば、対称操作用オペレーターを、電荷密度にかけて足し 上げるなどの操作)はそのままになっています。従って、対称操作用のオペレー ターや、対称性を考慮した系でのk点座標をデータとして入力するようにすれ ば良い訳です。あとは、それを本計算用に加工して、各変数に渡していけば対 称性を考慮した計算も可能になります。

但し、これに関しての改良の目処は今のところ立っていません。対称性計算 のために必要な変数データを見つけ出し、それを出力できるようにプログラム を変更し(出力用の専用プログラムを作る)、更にデータ入力側としてのプロ グラムを新たに作成、公開する必要が生じます。つまり入力されたデータを処 理するルーチンを加えたプログラムを作らなければなりません。


先にも述べたように、この新たに公開されたプログラムに、ベッセル関数用 ルーチン、DSJBES、エルミート行列の固有値問題を扱う、EIGCH、高速フーリ エ変換用サブルーチン集であるMFFTを付ければ、若干の修正で、そのまま コンパイル、実行できるはずです。


ダウンロードと解凍、展開 [目次]

(3/17、1998)ここで、Alのfcc構造の計算ができる、入力データ、 擬ポテンシャルデータ、インクルードファイル、プログラム本体をパッケージ 化し圧縮したファイルをダウンロード (107kb、ちょっと大きい、5/7、1999、重大な バグを取り除いたバージョンに更新)できるようにしてみました。

システムや、ブラウザの種類、バージョンによって はダウンロードできない可能性がありますが、残念ながらこちらでは対応(の しようがない)できません。自力で解決されることを強く期待します。
特に、最新のバージョンのブラウザ環境では、その ままではダウンロードできない可能性が高いです。

圧縮形式は、まずファイル群をtarでアーカイブし、それをgzipで圧縮して います(OSはUNIX上であることを想定しています)。多分、先のリンク部分 をクリックすればファイルをダウンロードするためのウィンドウが開くと思い ます。アーカイブ、圧縮したのはDECのマシン上ですが、他のUNIXマシンで もtarとgzipが使えれば、問題なく解凍できると思います。

解凍の仕方は、ダウンロードしたディレクトリ上で、

gzip -d Al.tar.gz
tar -xvf Al.tar

で必要なファイルが解凍、展開されるはずです。

DOS/V(IBM PC‐AT互換)マシン上でも、DOS用のtarやgzip がフリーソフトとして入手が可能です。多分、ダウンロード時にバイナリとし て正しく自分のマシン上に転送されていれば、それらDOS用のソフトでの解 凍、展開は可能かと思います。

(注意)但し、このパッケージに含まれるプ ログラムには、前述の通り、EIGCH、DSJBES、DERF、FTT、対称性関連等のサブ ルーチンは付いていません。従って、解凍 したソースをコンパイルしてもおそらくリンク段階でエラーが出て実行可能ファ イルは作られません。

実行させるためには、「とにかく[]独で動くように する」部分を熟読して下さい。必要なファイル(サブルーチン)の入手方法、 コンパイル、実行の仕方などが書かれています。

(注意)上記ソフトなどは自力で入手して下さ い。不正な手段での入手は厳禁です。当然、こち らから提供することもできません。
(免責) また、このプログラムパッケージをダウンロード、解凍、展開、コン パイル、実行、運用等を行なった過程で生じた、如何なる障害、損害に対して、 筆者及び、無機材研は一切責任を負わないものとします。
(禁止)本パッケージの再配布は禁止します(いわゆる常識の範囲内での内輪での 使用は可)。直接、間接に関わらず悪用すること(それを目的とした使用、利 用全てを含む)も禁止します。
(補足)上記3事項に関連するより詳しい 説明があります(ご一読下さい)。


用語集番外編[Top]

サルにもできるバンド計算
「学問に王道がない」ように、バンド計算にも王道はありません。従っ て、お猿さんにできるようなバンド計算法があろうはずがありません(^^;;)。
白い擬ポテンシャルでも黒 い擬ポテンシャルでも正しい結果を与える擬ポテンシャルは良いポテンシャル である。
元々は、某中国の偉いさんのお言葉が出典です。正直、NCPS95 は、経験と勘で作っているところもあるので、厳密な意味での第一原理で作ら れたものではないと言われると、反論できないところがあります。
かと言ってインチキをしている訳ではありませ ん。ただ本当にインチキだったとしても、正しい 結果を与える擬ポテンシャルが系統立って作れたら、それは既にインチキではないとも言えます。
KKR
KKR:Kokka Koumuin Kyousai Kumiai Rengoukai Kouhou-shi:国家公務員共済組合連合 会広報紙([KKR]ページへ)
筆者は無機材研に就職した当初、この広報紙を見て、ぎょっとした憶えがあ ります。
当然、 KKR法とは何ら、一切関係ありません。
なんでも計算しちゃおう会
何でもバンド計算してしまおうという、の組織、秘密結社である。現在、会員 (兼会長)は筆者一名のみである(当分、1名のみの予定)。

どうしても会員になりたいという奇特な方は、E-mail(のみ)で、入会希望 のメイルを筆者(メイルアドレス削除)に送って下さい(形式は、個々の創意 工夫に任せます)。筆者の独断と偏見で入 会許可を行なう可能性もあります。

SiCとSIC
SiCはこの世界では炭化ケイ素の事である。一方、SICは 自己相互作用補正のことである。間違えないように。

最近(10/2、1998)、新たに超イオン伝導体(Superionic Conductor)がSICと略されることが分かった。

ノーベル賞徒労会
ノーベル賞を取ろうとして、人生徒労に終ってしまうおそろしい組織で ある。当然、会員(兼会長)は筆者しかいない。新会員募集の予定も全くない。
CPA:「保険金支払能力」
ある保険の広告を見ていたら、ふと目に留まった言葉。世界的な格付け 機関、スタンダード&プアーズ社の保険会社に対する格付け項目の一つらしい。 どのような英語の略かは現在不明である(一応、調査中)。無論、 CPA法とは何ら関係はない。
CPA:「米国公認会計 士」
本日(11/27、1998)朝、gooを見ていたら偶然発見した。ど のような英語の略であるのかは不明(一応、調査中)。上記のCPAとも何か 関係があるのかもしれないが、これも不明(これも一応、調査中)。当然、 CPA法と何ら関係ないことは、言うまでもない。
cpa
Raphael & Associates
何気なく打ち込んでみたら、存在を確認(6/6、2000)。当然、 CPA法と何ら関係ない。
CPA‐2000:高安定 フェムト秒レーザーシステム
Chirped Pulse Amplification
日本物理学会誌の広告に出ていた商品名。HOYAコンテニュアム社が扱っ ている。ソニー中研の近藤さんからの情報により何の略語であるか判明(情報感謝)。近藤さんの情報によるとこれは高ピー ク出力の超短パルス光を得る増幅方法とのことです。(やはりこれも、 CPA法(CPAの西暦2000年版という訳ではない)とは何ら関係は ない。
12/27、1999、応用物理学会誌2000年1月号の広告(前付39) によると、CPA-2000がCPA-2001(シリーズ)になっていることを確認。
Chirped Pulse Amplification法(チャープパルス増幅法): D. Strickland and G. Mourou, Opt. Commun. 56, 219(1985)
PAW
Physical Analysis Workstation:PAW
CernのASD(Application Software & Database)のサービスとプロ ジェクトのページに ある項目。当然、 PAW法とは何ら関係ない。ただ、このCernのプロジェクトは役に立ちそ う。
PAW(また また発見!)
Personal Agent World:PAW
3DブラウザであるSony Community Placeに対応したコンテンツのことらし い。参照アドレス、"http://www.so-net.ne.jp/paw/"。PAW恐るべし。
PAW
PAW(ソフト名らしい)
UNIX上のグラフ描画ソフトに、PAWというものが存在するらしい(詳細不明、 調査中)。
PAW(久々 の発見!)
PAW.COM
何気なく打ち込んでみたら実際に存在したサイト(6/6、2000)。当 然、 PAW法とは何ら一切関係ない。
つくバンド計算(せん)会
つくばでバンド計算する会、つくるバンド計算会、つくす(?)バン ド計算会、つか(?)えるバンド計算会と何とでも解釈できるあやしい組織を 作る計画、密かに進行中(怪しい”つくバンド会Tシャツ”、”つくバンド会 うちわ”、”つくバンド会プリクラ名刺”など作成予定^^;;)。
つくバンドパック 構想(Tsuku-BAND Pack)を、とうとう”第一回計算物質科学フォーラム 研究会”で発表(11/22、1999)。実現可能性は低い。
新たにTsukuBand-Pack[ ページ]を開設(内容はまだない。7/14、2000)。
”JAVA”+”バンド”で”じゃバンド” (Ja-VAND)、これもなかなか語呂がよい。FORTRANからJAVAへのコン バータも存在するのであながち非現実的な話でもない。
LDAP
Lightweight Directory Access Protocol:LDAP
「UNIX USER」(ソフトバンク刊行)の2月号(1998年)の152頁に 載っていた「LDAP」(Tim Howes, Mark Smith共著、松島英樹、岡 薫訳、 プレンティスホール出版発行)という書籍の書評より。当然、LDA とは何ら関わりがない(最後のPがおしい)。
LDA
Learning Disabilities Association:LDA
Alta Vistaで検索中、偶然見つけたサイト(11/30、2001、ア ドレス変更を確認)、これも当然、LDA とは何ら関わりがない。
LDAシリーズ
ロジテックの大容量ハイセキュリティーRAIDディスクのシリーズ名。 これもAlta Vistaで検索中発見。言うまでもないが、これもLDA とは何ら関わりがない。
LDA
Louisiana Dental Association:LDA
澤村先生情報感謝(Infoseekで見つけたそうである)。 言わずもがなであるが、これもLDA とは何ら関わりがない。
板東桂さん
板東桂さん:阪東ケイさん:板東圭さん:板東啓さんなど
なんで今まで気付かなかったんだろう。全国探せば何人かいそうである。さ すがに板戸桂(磐土、盤土など)さん(そのものずばり)はいないだろう。
(11/6、1998)と思っていたら、サッカー選手の中に「ばんど」(漢 字は播戸と判明、12/17、1998)という方がいます(尚も調査中)。
NCPS95
AIESEC 1995 NCPs Alumni listというウェブサイトのメイルアドレス が、INT-NCPS95@....となっている。INT-NCPS95 archivesというのもあるらし い。当然、本ウェブページのNCPS95(97)(2K) とは何ら関係ない。

(世界のNCPS)
(8/1、1998)探してみると、世界中にNCPS が存在することがわかった(AltaVistaで検索)。その代表的なものを 以下に挙げる。
North Country Photograph Society (NCPS)
The North Carolina Poety Society (NCPS)
The Northern California Psychiatric Society (NCPS)
Novell Cross-Platform Services (NCPS)
The National Crime Prevention Strategy (NCPS)
National Commission on Public Service (NCPS)

など多数存在することが判明した。

また、Network Control Protocolsのことを略 して、NCPsと書くようです。

ばん土
Alumina:ばん土(漢字が難しくてここでは書けない。)、アルミナと 言った方が早いでしょう。英和辞書を見ていたら、そう訳されていた。
「第一原理」
"First principles": 第一原理、有名な哲学者スペンサー先生の著書。 読んだ訳ではないが、おそらくバンド屋さん世界での 第一原理とは余り関係ないであろう。
ASA
何気なくその看板が目にとまった。某有名新聞社の多分ローマ字略名 と考えられる。当然原子球近似(Atomic Sphere Approximation)とは何ら関係無いはずである。
また、American Sailing Associationなる 組織とも全く関係ない(はず)。
PVM
Database System for Pressure Vessel Materials(圧力容器データベースシステム)の略 である。従って、ページアドレスが、http://www-pvm.jst.go.jp/index.htm となる。勿論、 PVMとは何ら関係ない。
Abintio
アビンティオと発音する。リクルートのメディアデザインセンターが 開発したフリーソフト。大変有用なソフトのようである。参照サイトは、 "http://abintio.isr.recruit.co.jp/"である(参考文献、Internet User Vol. 3, No. 5, p182(1997))。惜しい、あと一文字(i)でabinitio(ab initio)だったのに。残念である。
FPMD
Family Planning Management Development: FPMD、家族計画に関 してのページである。当然FPMD とは何ら関係ない。
fpmd
fpmd
何気なく打ち込んでみたら、存在を確認(6/6、2000)。当然FPMD とは何ら関係ない(と思う)。(10/12以降、2001、現在アクセス不 能)。
GW
Graphics World(月刊コンピューター グラフィックス ワールド): 株式会社IDGジャパンが発刊している雑誌名、当然 GW近似とは何ら関係ない。
Hanage
Hanage:痛さの単位 痛さ: 1 Hanage = ??? a.u.(不明です^^;)
(注意)この”Hanage”の話はどうもガセネタのようです。
DFT
Drive Fitness Test: DFT、雑誌ASAHIパソコン、5・1、39頁(2 000)に載っていた用語。IBM製のハードディスク装置には、無償で配布 されているツールの略称。
当然、バンド計算の世界でのDFT とは何の関わりもない。
[Top]