要从此存储库中的源代码构建此项目,您需要拥有一个支持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许可证中定义的任何有意提交此项目中的任何捐款,均应在上面的许可中获得许可,而无需任何其他条款或条件。