4.3.28. tmpvec.dat

CalcModファイルのReStart=1, 2の場合に、計算途中のベクトルを出力します。 ファイルはバイナリ形式で出力されます。 ファイル名およびファイル形式は以下の通りです(ファイル形式はeigenvec.datと同様です)。

ファイル名

  • Lanczos法:##_tmpvec_rank_$$.dat
  • TPQ法, LOBPCG法:##_tmpvec_set_&&_rank_$$.dat

##はModParaファイル内の[string02]で指定されるヘッダ、 $$はランク番号を表します。また、&&はTPQ時のサンプリングの番号 もしくはLOBPCG法での固有値の番号を表します。

ファイル形式

次のようなソースコードを用いて、バイナリファイルとして出力されます (実際の HPhi++のソースコードとは変数名等が異なります)。

Lanczos
fp = fopen("zvo_tmpvec_rank_0.dat", "wb");
fwrite(&number_of_interations, sizeof(int), 1,fp);
fwrite(&local_size, sizeof(unsigned long int),1,fp);
fwrite(&last_vector[0], sizeof(complex double),local_size+1, fp);
fwrite(&second_last_vector[0], sizeof(complex double),local_size+1, fp);
fclose(fp);
TPQおよびLOBPCG
fp = fopen("zvo_tmpvec_set_0_rank_0.dat", "wb");
fwrite(&number_of_interations, sizeof(int), 1,fp);
fwrite(&local_size, sizeof(unsigned long int),1,fp);
fwrite(&last_vector[0], sizeof(complex double),local_size+1, fp);
fclose(fp);

ただし、number_of_interationsは反復回数、 local_sizeは固有ベクトルのサイズ(MPI並列を使っている場合は全ヒルベルト次元とは異なります)、 last_vectorは最後の反復でのベクトル、 second_last_vectorは最後から2番目の反復でのベクトルをそれぞれ表します。

last_vectorsecond_last_vectorの一番最初の成分に計算に使用しない値が入っています。