From 71ca352a96672f3a4a97dba91694418c1b1cd2b4 Mon Sep 17 00:00:00 2001 From: "Kurt A. O'Hearn" <ohearnku@msu.edu> Date: Mon, 15 Feb 2021 13:46:35 -0500 Subject: [PATCH] Tests: refactor QMMM Fortran tester for Amber integration. --- .../library/qmmm_amber/fortran_stub/.gitignore | 5 +++++ .../library/qmmm_amber/fortran_stub/driver.F03 | 18 +++++++++++++----- .../{puremd.F03 => reaxff_puremd.F03} | 11 ++++++----- 3 files changed, 24 insertions(+), 10 deletions(-) create mode 100644 test/library/qmmm_amber/fortran_stub/.gitignore rename test/library/qmmm_amber/fortran_stub/{puremd.F03 => reaxff_puremd.F03} (98%) diff --git a/test/library/qmmm_amber/fortran_stub/.gitignore b/test/library/qmmm_amber/fortran_stub/.gitignore new file mode 100644 index 00000000..7e90176f --- /dev/null +++ b/test/library/qmmm_amber/fortran_stub/.gitignore @@ -0,0 +1,5 @@ +# Fortran object, module files +*.o +*.mod +# Generatd executable +driver diff --git a/test/library/qmmm_amber/fortran_stub/driver.F03 b/test/library/qmmm_amber/fortran_stub/driver.F03 index d89af2be..a61d3774 100644 --- a/test/library/qmmm_amber/fortran_stub/driver.F03 +++ b/test/library/qmmm_amber/fortran_stub/driver.F03 @@ -95,7 +95,7 @@ end module driver_utils program driver use, intrinsic :: iso_c_binding use driver_utils - use puremd + use reaxff_puremd implicit none @@ -109,11 +109,13 @@ program driver #define stderr 0 #endif + integer, parameter :: max_sim_steps = 3 + character(len=1024), dimension(:), allocatable :: args character(len=1024) :: filename integer :: num_args, ix, num_atoms integer (c_int) :: num_qm_atoms, num_mm_atoms - real (c_double) :: sim_box_info(6), e_tot + real (c_double) :: sim_box_info(6), e_total real (c_double), dimension(:), allocatable :: qm_pos, qm_q, qm_f, mm_pos_q, mm_f character(len=5), dimension(:), allocatable :: qm_types, mm_types integer (c_int), dimension(:), allocatable :: qm_types_map, mm_types_map @@ -180,9 +182,13 @@ program driver endif end do - call get_qc_forces( 100, 0, sim_box_info, num_qm_atoms, qm_pos, & - qm_types_map, qm_q, num_mm_atoms, mm_pos_q, mm_types_map, & - e_tot, qm_f, mm_f ) + do ix = 1, max_sim_steps + call get_reaxff_puremd_forces( max_sim_steps, ix, sim_box_info, & + num_qm_atoms, qm_pos, qm_types_map, qm_q, num_mm_atoms, & + mm_pos_q, mm_types_map, e_total, qm_f, mm_f ) + + write (stdout, fmt=75) 'Sim. Step:', ix, 'Total energy:', e_total + end do deallocate(args) deallocate(qm_types) @@ -194,4 +200,6 @@ program driver deallocate(mm_types_map) deallocate(mm_pos_q) deallocate(mm_f) + + 75 format (A10, 1X, I3, 1X, A13, 1X, ES24.15) end program driver diff --git a/test/library/qmmm_amber/fortran_stub/puremd.F03 b/test/library/qmmm_amber/fortran_stub/reaxff_puremd.F03 similarity index 98% rename from test/library/qmmm_amber/fortran_stub/puremd.F03 rename to test/library/qmmm_amber/fortran_stub/reaxff_puremd.F03 index b8266ea3..dfa29adb 100644 --- a/test/library/qmmm_amber/fortran_stub/puremd.F03 +++ b/test/library/qmmm_amber/fortran_stub/reaxff_puremd.F03 @@ -1,5 +1,5 @@ ! module for interfacing with PuReMD code (ReaxFF+EEM in QM/MM mode) -module puremd +module reaxff_puremd implicit none interface @@ -112,7 +112,7 @@ module puremd end interface contains - subroutine get_qc_forces( itermax, nstep, sim_box_info, num_qm_atoms, & + subroutine get_reaxff_puremd_forces( itermax, nstep, sim_box_info, num_qm_atoms, & qm_pos, qm_types, qm_q, num_mm_atoms, mm_pos_q, & mm_types, e_total, qm_f, mm_f ) use, intrinsic :: iso_c_binding @@ -305,9 +305,10 @@ contains c_loc(e_total), c_null_ptr, c_null_ptr, c_null_ptr ) if ( ret /= 0_c_int ) stop "ERROR: get_system_info" end if - if (nstep > itermax) then + + if (nstep >= itermax) then ret = cleanup( handle ) if ( ret /= 0_c_int ) stop "ERROR: cleanup" end if - end subroutine get_qc_forces -end module puremd + end subroutine get_reaxff_puremd_forces +end module reaxff_puremd -- GitLab