Untuk membangun proyek ini dari kode sumber di repositori ini, Anda perlu memiliki Fortran Compiler Fortran Fortran 2008 dan salah satu sistem build yang didukung:
Saat ini proyek ini mendukung kompiler GCC, Intel dan PGI/NVHPC.
Siapkan build dengan
meson setup _build
Anda dapat memilih Fortran Compiler dengan variabel lingkungan FC
. Untuk mengkompilasi proyek berjalan
meson compile -C _build
Anda dapat menjalankan proyek TestSuite
meson test -C _build --print-errorlogs
Untuk memasukkan mctc-lib
dalam proyek Anda, tambahkan file bungkus berikut ke direktori Subprojects Anda:
[wrap-git]
directory = mctc-lib
url = https://github.com/grimme-lab/mctc-lib
revision = head
Anda dapat mengambil ketergantungan dari fallback bungkus dengan
mctc_dep = dependency ( ' mctc-lib ' , fallback : [ ' mctc-lib ' , ' mctc_dep ' ])
dan tambahkan sebagai ketergantungan pada target Anda.
Atau, proyek ini dapat dibangun dengan cmake (dalam hal ini Ninja 1.10 atau lebih baru diperlukan):
cmake -B _build -G Ninja
Untuk mengkompilasi proyek dengan cmake run
cmake --build _build
Anda dapat menjalankan Project Testsuite dengan
pushd _build && ctest && popd
Untuk memasukkan mctc-lib
dalam proyek cmake Anda mengambilnya menggunakan modul 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 ()
Dan tautkan dengan perpustakaan antarmuka "mctc-lib"
.
target_link_libraries ( " ${PROJECT_NAME} -lib" PUBLIC "mctc-lib" )
Memohon FPM di root proyek dengan
fpm build
Untuk menjalankan penggunaan testsuite
fpm test
Anda dapat mengakses program mctc-convert
menggunakan sub-perintah run
fpm run -- --help
Untuk menggunakan mctc-lib
untuk pengujian termasuk itu sebagai ketergantungan dalam manifes paket Anda
[ dependencies ]
mctc-lib.git = " https://github.com/grimme-lab/mctc-lib "
Contoh aplikasi disediakan dengan program mctc-convert
untuk mengonversi antara berbagai format input yang didukung.
Untuk membaca file input menggunakan pustaka IO, gunakan rutinitas read_structure
. Data geometri akhir disimpan dalam 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
Perpustakaan Lingkungan menyediakan mekanisme propagasi back error dasar menggunakan error_type
yang dapat dialokasikan, yang diteruskan ke rutinitas perpustakaan. Biasanya pembaca dapat mendeteksi jenis file dari akhiran nama file. Atau, enumerator filetype
menyediakan pengidentifikasi dari semua jenis file yang didukung, yang dapat dilewati sebagai argumen opsional ke rutinitas read_structure
.
Dengan cara yang sama rutinitas write_structure
memungkinkan untuk menulis structure_type
ke file atau unit:
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
Program mctc-convert
menyediakan panggilan pembaca dan penulis yang dirantai untuk bertindak sebagai konverter file geometri. Periksa implementasi di app/main.f90
.
Pembaca input geometri mencoba memberikan pesan kesalahan yang bermanfaat, tidak ada pengguna yang harus ditinggalkan sendirian dengan pesan kesalahan seperti input yang tidak valid . Pesan kesalahan yang tidak jelas dianggap sebagai bug di MCTC-Lib , jika Anda kesulitan memahami kesalahan yang dilaporkan, mengajukan masalah kepada kami dan kami akan membuat laporan lebih baik.
Bagaimana pesan kesalahan yang membantu? Berikut adalah beberapa contoh.
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
|
Kami mencoba menyimpan informasi sebanyak mungkin saat menampilkan pesan kesalahan untuk memudahkan untuk memperbaiki bagian yang menyinggung dalam input.
Berlisensi di bawah lisensi Apache, versi 2.0 ("lisensi"); Anda tidak boleh menggunakan file ini kecuali sesuai dengan lisensi. Anda dapat memperoleh salinan lisensi di http://www.apache.org/licenses/license-2.0
Kecuali diharuskan oleh hukum yang berlaku atau disepakati secara tertulis, perangkat lunak yang didistribusikan di bawah lisensi didistribusikan berdasarkan "apa adanya" , tanpa jaminan atau ketentuan dalam bentuk apa pun , baik tersurat maupun tersirat. Lihat lisensi untuk bahasa spesifik yang mengatur izin dan batasan di bawah lisensi.
Kecuali jika Anda secara eksplisit menyatakan sebaliknya, kontribusi apa pun secara sengaja diserahkan untuk dimasukkan dalam proyek ini oleh Anda, sebagaimana didefinisikan dalam lisensi APACHE-2.0, harus dilisensikan seperti di atas, tanpa syarat atau ketentuan tambahan.