このフォーラムに寄せられた「御意見・御質問」を整理してみました。 ここに載せられていないことに関するご質問や御意見などは「フォーラムへの御意見・御質問コーナー」に お書き込み下さい。
A1: 1997年11月27日現在、動作が確認されている環境は以下の通りです。
A2: 今回のVer1.02から、Windows95のDOS窓上でも実行できるように なりました。ただし、御承知のように、AT互換機のパーツ類の組み合わせは 無数にありますから、もしかしたらあなたのマシンでは動かないも知れません が、その場合は当方に御連絡ください。
A3:
f77 -static -O -w dv-xa.f
注意 1. -O3とすると実行モジュールがsegmentation faultを起こした。
注意 2. CPUがR4000以降ならば、-mips2も付ける。
A4: NDP-FORTRANで実行形式ファイル作成の成功例が報告されました。 ポイントは、以下の通り。
C:\NDP>NDPRUN NDPLINK @NDPTMP.LNK
A5: MAC版が種部@旭化成さんから、寄せられました。 以下に、Mac版のdv-xa実行モジュールを作成する際の手順(使用コンパイラは、 MotorolaのFORTRANコンパイラDR2.0以降)を示します。
dv-xa.f関連
SUBROUTINE CPTIME(Tt,J) Tt = 0 RETURN END
と書き換える。Motorolaのコンパイラでは、基本的に時間計測は出来ない。
データのコンソール入力は出来ないので、ファイルから読み込む形に 変更する。例としては、86行目付近を次のようにする。
c INPut = 5 input = 3 IOUt = 6 write (*,*)'INPUT FILENAME' read (5,'(20A)')filein open (input,file=filein,status='old',form='formatted')
出力の方は上と同様のファイル出力でも、コンソール出力でも可。
本コンパイラでは、EXITという名のサブルーチン名を使うと、 実行モジュールの動作に不具合が発生する。これを回避する為に、 ソース最後尾のSUBROUTINE EXITをすべてコメントアウトして、 1770行目付近の
IF ( ntest.NE.0 ) CALL EXIT
を
に変更する。if ( ntest.ne.0 ) stop
mf77 -O3 -Asave
A6: Nifty-serve「化学の広場(テーマ館)」(FCHEMT)の専用会議室において Butchさんから、PC-UNIX環境(Linux,FreeBSD)での実行時に有用な確認手順 が紹介されましたので、当方で一部修正した上で、公開致しました。
f77 -o charge charge.f
(f2c charge.f; gcc -o charge charge.c -lf2c -lc -lm でも可) と入力すると、charge という実行モジュールが生成いたします。
chargeと入力すると、画面にデータが表示されると共に、最後に
do_ud: end of file apparent state: unit 98 named CHARGE.DAT lately reading direct unformatted external IO IOT trap/Abort
と表示され CHARGE.DAT というファイルが生成いたします。
chargeと入力すると、画面にデータが表示されると共に、最後に
do_ud: end of file apparent state: unit 98 named CHARGE.DAT lately reading direct unformatted external IO IOT trap/Abort
と表示されます。
上記のエラーに対する対応は、またの機会ということで先に進みます。エラー表示がでないのなら、それでよし。
gcc -o dv-xa dv-xa.c -lf2c -lc -lm
と入力すると、dv-xa という実行モジュールが生成いたします。
dv-xa < h-atom.inpと入力すると計算が始まり、結果が画面出力されます。
A7: 河合さん(QYN01247@niftyserve.or.jp)から以下の情報が寄せられ ました。「精度で指定した桁数より少なく表示される場合」の対策として、 FreeBSDの98.faqに記載してあるように、/usr/src/lib/libc/stdio ディレクトリの中にある vfprintf.c に対して、コンテキスト(diff形式)を 参考にしながら「手動でパッチ」を当てました。
で作成した差分ファイルを以下に記載します。diff -c vfprintf.c.orig vfprintf.c > vfprintf.dif
----------(ここから)----------
*** vfprintf.c.origTue May 30 14:41:45 1995 --- vfprintf.cSun Dec 22 15:26:03 1996 ***************
*** 302,308 **** u_quad_t uqval;/* %q integers */ int base;/* base for [diouxX] conversion */ int dprec;/* a copy of prec if [diouxX], 0 otherwise */ ! int fieldsz;/* field size expanded by sign, etc */ int realsz;/* field size expanded by dprec */ int size;/* size of converted field or string */ char *xdigs;/* digits for [xX] conversion */
--- 302,308 ---- u_quad_t uqval;/* %q integers */ int base;/* base for [diouxX] conversion */ int dprec;/* a copy of prec if [diouxX], 0 otherwise */ ! int realsz;/* field size expanded by dprec */ int size;/* size of converted field or string */ char *xdigs;/* digits for [xX] conversion */ ***************
*** 695,706 **** * Compute actual size, so we know how much to pad. * fieldsz excludes decimal prec; realsz includes it. */ ! fieldsz = size; if (sign) ! fieldsz++; else if (flags & HEXPREFIX) ! fieldsz += 2; ! realsz = dprec > fieldsz ? dprec : fieldsz; /* right-adjusting blank padding */ if ((flags & (LADJUST|ZEROPAD)) == 0)
--- 695,706 ---- * Compute actual size, so we know how much to pad. * fieldsz excludes decimal prec; realsz includes it. */ ! realsz = dprec > size ? dprec:size; if (sign) ! realsz++; else if (flags & HEXPREFIX) ! realsz += 2; ! /* right-adjusting blank padding */ if ((flags & (LADJUST|ZEROPAD)) == 0) ***************
*** 720,726 **** PAD(width - realsz, zeroes); /* leading zeroes from decimal precision */ ! PAD(dprec - fieldsz, zeroes); /* the string or number proper */ #ifdef FLOATING_POINT
--- 720,726 ---- PAD(width - realsz, zeroes); /* leading zeroes from decimal precision */ ! PAD(dprec - size, zeroes); /* the string or number proper */ #ifdef FLOATING_POINT
------------(ここまで)------------
A8: Nifty-serve「化学の広場(テーマ館)」(FCHEMT)の専用会議室に おいて「HCNの計算などで、charge.dat からのデータ読み込みに失敗した 場合の対処方法」がButchさんから紹介されましたので、ここに紹介します。
IF ( J.EQ.0 ) J = 15
を
J = 15
に変更してコンパイルしてみる。
A9: (1998年02月01日現在)
A10: 「3.2.MAXSYM.EXEによる対称化軌道ファイルの作成方法」に おいて、以下の部分を追加させて頂きます。
------------(ここから)------------
このソースファイルは都合により公開できません(AT互換機用実行形式 のみ)。MAXSYM.EXE用の入力データの作成方法を以下に、メタンCH4(対称性 を使う場合)を具体例として示します。
3.2.1.MAXSYM.EXE用の入力データの作成方法------------(ここまで)------------(1行目)CH4.SYM (2行目) 5 2 (3行目)0.0 0.0 0.0 1 6 (4行目)1.16 1.16 1.16 2 1 (5行目)-1.16 -1.16 1.16 2 1 (6行目)1.16 -1.16 -1.16 2 1 (7行目)-1.16 1.16 -1.16 2 1 (8行目) 2 (9行目) 0 1 (10行目) 1 (11行目) 0 (12行目) (1行目)作る対称化軌道のファイル名 (2行目)総原子数(5)、 等価でない原子数(炭素と水素で2個) (3行目)クラスター構成原子1:座標x,y,zと原子の種類の番号付け、原子番号 (4行目)クラスター構成原子2:座標x,y,zと原子の種類の番号付け、原子番号 (5行目)クラスター構成原子3:座標x,y,zと原子の種類の番号付け、原子番号 (6行目)クラスター構成原子4:座標x,y,zと原子の種類の番号付け、原子番号 (7行目)クラスター構成原子5:座標x,y,zと原子の種類の番号付け、原子番号 (8行目)原子の種類の番号付け1についての軌道角運動量数の種類 (9行目)この場合は、炭素原子で角運動量は 0(s)と1(p) (10行目)原子の種類の番号付け2についての軌道角運動量数の種類 (11行目)この場合、水素で角運動量は0(s)のみ (12行目)ブランク行