이 저장소의 소스 코드 에서이 프로젝트를 구축하려면 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를 사용하여 구축 할 수 있습니다 (이 경우 Ninja 1.10 또는 최신이 필요합니다).
cmake -B _build -G Ninja
Cmake Run으로 프로젝트를 컴파일합니다
cmake --build _build
Project 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
테스트 스위트 사용을 실행합니다
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
열거자는 모든 지원되는 파일 유형의 식별자를 제공하며, 이는 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
프로그램은 체인 독자 및 작가 전화를 제공하여 Geometry 파일 변환기 역할을합니다. app/main.f90
에서 구현을 확인하십시오.
Geometry Input Reader는 유용한 오류 메시지를 제공하려고 시도합니다. 유효하지 않은 입력 과 같은 오류 메시지가있는 사용자는 아무도 남지 않아야합니다. 명확하지 않은 오류 메시지는 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 라이센스에 정의 된대로 귀하 가이 프로젝트에 포함시키기 위해 의도적으로 제출 된 기부금은 추가 약관이나 조건없이 위와 같이 라이센스를 부여받습니다.