Enzoプロジェクトシミュレーションを実行し、Webサイトに記載されている手順に従ってください。https://enzo.readthedocs.io/en/latest/user_guide/bootcamp.html。エラーが発生しており、インターネット検索では、私が正確に何を間違っているのかわかりません。私が受け取ったエラーは次のとおりです。
Compiling BlockSolve.F
gfortran -c -o BlockSolve.o -fno-second-
underscore -m64 -g -DLINUX -DH5_USE_16_API -D__max_subgrids=100000 -D__max_baryons=30 -D__max_cpu_per_node=8 -D__memory_pool_size=100000 -DINITS64 -DLARGE_INTS -DCONFIG_PINT_8 -DIO_32 -DUSE_MPI -DCONFIG_PFLOAT_8 -DCONFIG_BFLOAT_8 -DUSE_HDF5_GROUPS -DTRANSFER -DNEW_GRID_IO -DFAST_SIB -DENZO_PERFORMANCE -DUSE_UUID -DSAB BlockSolve.F
BlockSolve.F:1070:11:
1070 | NB = ILAENV( 1, 'UGETRF', ' ', M, N, -1, -1 )
| 1
Error: Type mismatch in argument 'ispec' at (1); passed INTEGER(4) to INTEGER(8)
BlockSolve.F:1070:11:
1070 | NB = ILAENV( 1, 'UGETRF', ' ', M, N, -1, -1 )
| 1
Error: Type mismatch in argument 'n3' at (1); passed INTEGER(4) to INTEGER(8)
BlockSolve.F:1070:11:
1070 | NB = ILAENV( 1, 'UGETRF', ' ', M, N, -1, -1 )
| 1
Error: Type mismatch in argument 'n4' at (1); passed INTEGER(4) to INTEGER(8)
BlockSolve.F:932:30:
932 | JP = J - 1 + e_idamax( M-J+1, A( J, J ), 1 )
| 1
Error: Type mismatch in argument 'incx' at (1); passed INTEGER(4) to INTEGER(8)
BlockSolve.F:2628:18:
2628 | ILAENV = IEEECK( 0, 0._RKIND, 1._RKIND )
| 1
Error: Type mismatch in argument 'ispec' at (1); passed INTEGER(4) to INTEGER(8)
BlockSolve.F:2639:18:
2639 | ILAENV = IEEECK( 1, 0._RKIND, 1._RKIND )
| 1
Error: Type mismatch in argument 'ispec' at (1); passed INTEGER(4) to INTEGER(8)
make: *** [BlockSolve.o] Error 1
答え1
これはMakefileエラーではありません。作る正しい動作:BlockSolve.F Fortranソースコードに6つの言語エラー(1070行に3つのエラー、932、2628、および2639行にそれぞれ1つ)があるため、ビルドが停止しました。
コンパイル時エラーを修正し、 make は次のステップに進みます。
すべてのエラーは、INT(8)が必要な関数にINT(4)変数を渡すことに関連しています。これは、ダウンロードしたソースコードが以前のFortran標準用であるか、ユーザーとは異なるアーキテクチャ用であるためです。
引用した文書には実際には「これは矛盾を引き起こします。 」正しい設定(MACH_FFLAGS_INTEGER_64など)になり、さまざまなアーキテクチャとオペレーティングシステム用に複数のmakefileが提供されます。
この記事では、これらの問題を解決するのに役立つフォーラムへのリンクも提供しますenzo-users
。