このリポジトリのソースコードからこのプロジェクトを構築するには、Fortran 2008とサポートされているビルドシステムの1つをサポートするFortranコンパイラが必要です。
現在、このプロジェクトはGCC、Intel、およびPGI/NVHPCコンパイラをサポートしています。
でビルドをセットアップします
meson setup _build
FC
環境変数でFortranコンパイラを選択できます。プロジェクトの実行をコンパイルするには
meson compile -C _build
Projects TestSuiteを使用して実行できます
meson test -C _build --print-errorlogs
プロジェクトにmctc-lib
を含めるには、次のラップファイルをサブプロジェクトディレクトリに追加します。
[wrap-git]
directory = mctc-lib
url = https://github.com/grimme-lab/mctc-lib
revision = head
ラップフォールバックから依存関係を取得できます
mctc_dep = dependency ( ' mctc-lib ' , fallback : [ ' mctc-lib ' , ' mctc_dep ' ])
ターゲットへの依存関係として追加します。
あるいは、このプロジェクトをCmakeで構築することができます(この場合、Ninja 1.10以降が必要です):
cmake -B _build -G Ninja
Cmake Runでプロジェクトをコンパイルします
cmake --build _build
プロジェクトTestSuiteを使用して実行できます
pushd _build && ctest && popd
cmakeプロジェクトにmctc-lib
を含めるには、 FetchContent
モジュールを使用して取得します。
if ( NOT TARGET mctc-lib)
set ( "mctc-lib-url" "https://github.com/grimme-lab/mctc-lib" )
message (STATUS "Retrieving mctc-lib from ${mctc-lib-url} " )
include (FetchContent)
FetchContent_Declare(
"mctc-lib"
GIT_REPOSITORY " ${mctc-lib-url} "
GIT_TAG "HEAD"
)
FetchContent_MakeAvailable( "mctc-lib" )
endif ()
"mctc-lib"
インターフェイスライブラリにリンクします。
target_link_libraries ( " ${PROJECT_NAME} -lib" PUBLIC "mctc-lib" )
プロジェクトルートでFPMを呼び出します
fpm build
TestSuiteの使用を実行します
fpm test
Run Subcommandを使用してmctc-convert
プログラムにアクセスできます
fpm run -- --help
テストにmctc-lib
を使用するには、パッケージマニフェストの依存関係としてそれを含めます
[ dependencies ]
mctc-lib.git = " https://github.com/grimme-lab/mctc-lib "
サンプルアプリケーションにmctc-convert
プログラムが提供され、異なるサポートされている入力形式間で変換されます。
IOライブラリを使用して入力ファイルを読み取るには、 read_structure
ルーチンを使用します。最終的なジオメトリデータは、 structure_type
に保存されます。
use mctc_io
use mctc_env
type(structure_type) :: mol
type(error_type), allocatable :: error
call read_structure(mol, " input.xyz " , error)
if (allocated(error)) then
print ' (a) ' , error%message
error stop
end if
環境ライブラリは、ライブラリルーチンに渡される割り当て可能なerror_type
を使用した基本的なエラーバックプロパゲーションメカニズムを提供します。通常、リーダーはファイル名の接尾辞からファイルタイプを検出できます。あるいは、 filetype
列挙器は、すべてのサポートされているファイルタイプの識別子を提供します。これは、 read_structure
ルーチンにオプションの引数として渡すことができます。
同様に、 write_structure
ルーチンでは、ファイルまたはユニットにstructure_type
を書き込むことができます。
use mctc_io
use mctc_env
type(structure_type) :: mol
type(error_type), allocatable :: error
call write_structure(mol, " output.xyz " , error)
if (allocated(error)) then
print ' (a) ' , error%message
error stop
end if
mctc-convert
プログラムは、ジオメトリファイルコンバーターとして機能するためのチェーンリーダーとライターコールを提供します。 app/main.f90
の実装をチェックアウトします。
Geometry入力リーダーは、役立つエラーメッセージを提供しようとします。ユーザーは、無効な入力のようなエラーメッセージを残してはなりません。不明確なエラーメッセージはMCTC-LIBのバグと見なされます。報告されたエラーを理解するのに苦労している場合は、問題を提出してください。レポートを改善します。
役立つエラーメッセージはどのように見えますか?ここにいくつかの例があります。
Error: Impossible number of atoms provided
--> struc.xyz:1:1-2
|
1 | -3
| ^^ expected positive integer value
|
Error: Cannot read eht entry
--> struc.coord:18:13-15
|
18 | $eht charge=one unpaired=0
| ^^^ expected integer value
|
Error: Cannot read charges
--> struc.mol:29:23-25
|
29 | M CHG 3 1 1 3 b 2 -1
| ^^^ expected integer value
|
Error: Conflicting lattice and cell groups
--> struc.coord:37:1-5
|
35 | $lattice angs
| -------- lattice first defined here
:
37 | $cell angs
| ^^^^^ conflicting cell group
|
エラーメッセージを表示して、入力の問題を簡単に修正できるようにするときに、できるだけ多くの情報を保持しようとします。
Apacheライセンス、バージョン2.0(「ライセンス」)に基づいてライセンスされています。ライセンスに準拠している場合を除き、このファイルを使用することはできません。 http://www.apache.org/licenses/license-2.0でライセンスのコピーを入手できます。
適用法で要求されていないか、書面で合意されていない限り、ライセンスに基づいて配布されたソフトウェアは、明示的または黙示的な保証または条件なしに、 「現状のまま」ベースで配布されます。ライセンスに基づく権限と制限を管理する特定の言語のライセンスを参照してください。
明示的に特に述べない限り、Apache-2.0ライセンスで定義されているように、お客様がこのプロジェクトに含めるために意図的に提出された拠出は、追加の条件なしで、上記のようにライセンスされます。