要從此存儲庫中的源代碼構建此項目,您需要擁有一個支持Fortran 2008的Fortran編譯器,也需要一個受支持的構建系統之一:
目前,該項目支持GCC,Intel和PGI/NVHPC編譯器。
與
meson setup _build
您可以通過FC
環境變量選擇FORTRAN編譯器。編譯項目運行
meson compile -C _build
您可以使用
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構建此項目(在這種情況下,需要忍者1.10或更新):
cmake -B _build -G Ninja
用Cmake Run編譯項目
cmake --build _build
您可以使用
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
運行測試套件
fpm test
您可以使用運行子命令訪問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
Enumerator提供了所有受支持的文件類型的標識符,可以將其作為可選參數傳遞給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
中查看實現。
幾何輸入讀取器試圖提供有用的錯誤消息,任何用戶都不應單獨使用無效輸入等錯誤消息。不清楚的錯誤消息被認為是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許可證中定義的任何有意提交此項目中的任何捐款,均應在上面的許可中獲得許可,而無需任何其他條款或條件。