From 6d82685d1ccf861abb9f243cfeb864f7688b2f7e Mon Sep 17 00:00:00 2001 From: Teodoro Laino Date: Tue, 28 Oct 2008 22:41:39 +0000 Subject: [PATCH] 1st step for natively supporting AMBER files: reading coordinates in amber format. added 1 regtest. svn-origin-rev: 7861 --- src/OBJECTDEFS | 1 + src/input_constants.F | 3 +- src/input_cp2k_subsys.F | 12 +- src/topology.F | 9 +- src/topology_amber.F | 266 ++++++++++++++++++++++++++ src/topology_constraint_util.F | 10 +- tests/Fist/regtest-3/TEST_FILES | 2 + tests/Fist/regtest-3/ace_ala_nme.inp | 53 +++++ tests/Fist/sample_crd/ace_ala_nme.crd | 13 ++ tests/Fist/sample_pot/ace_ala_nme.pot | 167 ++++++++++++++++ tests/Fist/sample_psf/ace_ala_nme.psf | 86 +++++++++ 11 files changed, 611 insertions(+), 11 deletions(-) create mode 100644 src/topology_amber.F create mode 100644 tests/Fist/regtest-3/ace_ala_nme.inp create mode 100644 tests/Fist/sample_crd/ace_ala_nme.crd create mode 100644 tests/Fist/sample_pot/ace_ala_nme.pot create mode 100644 tests/Fist/sample_psf/ace_ala_nme.psf diff --git a/src/OBJECTDEFS b/src/OBJECTDEFS index 91cb83c152..80cf041cf3 100644 --- a/src/OBJECTDEFS +++ b/src/OBJECTDEFS @@ -582,6 +582,7 @@ OBJECTS_GENERIC =\ timings.o\ timings_mp.o\ topology.o\ + topology_amber.o\ topology_coordinate_util.o\ topology_connectivity_util.o\ topology_constraint_util.o\ diff --git a/src/input_constants.F b/src/input_constants.F index c983ff1add..56afb15438 100644 --- a/src/input_constants.F +++ b/src/input_constants.F @@ -274,7 +274,8 @@ MODULE input_constants do_coord_pdb=0,& do_coord_xyz=1,& do_coord_g96=2,& - do_coord_off=3 + do_coord_crd=3,& + do_coord_off=4 INTEGER, PARAMETER, PUBLIC :: do_ff_undef=0,& do_ff_quartic=1,& diff --git a/src/input_cp2k_subsys.F b/src/input_cp2k_subsys.F index 18396ff24c..64bbd4a63d 100644 --- a/src/input_cp2k_subsys.F +++ b/src/input_cp2k_subsys.F @@ -365,6 +365,11 @@ CONTAINS default_l_val=.FALSE.,lone_keyword_l_val=.TRUE.,error=error) CALL section_add_keyword(print_key,keyword,error=error) CALL keyword_release(keyword,error=error) + CALL keyword_create(keyword,"crd_info",& + description="if the printkey is active prints information regarding CRD",& + default_l_val=.FALSE.,lone_keyword_l_val=.TRUE.,error=error) + CALL section_add_keyword(print_key,keyword,error=error) + CALL keyword_release(keyword,error=error) CALL keyword_create(keyword,"gtop_info",& description="if the printkey is active prints information regarding GROMOS Topology",& default_l_val=.FALSE.,lone_keyword_l_val=.TRUE.,error=error) @@ -1245,12 +1250,13 @@ CONTAINS CALL keyword_create(keyword, name="COORD_FILE_FORMAT",& variants=s2a("COORDINATE"),& description="Set up the way in which coordinates will be read.",& - usage="COORD_FILE_FORMAT (PDB||XYZ||G96||OFF)", & - enum_c_vals=s2a( "PDB","XYZ","G96","OFF"),& - enum_i_vals=(/do_coord_pdb, do_coord_xyz, do_coord_g96, do_coord_off/),& + usage="COORD_FILE_FORMAT (PDB|XYZ|G96|CRD|OFF)", & + enum_c_vals=s2a( "PDB","XYZ","G96","CRD","OFF"),& + enum_i_vals=(/do_coord_pdb, do_coord_xyz, do_coord_g96, do_coord_crd, do_coord_off/),& enum_desc=s2a("Coordinates provided through a PDB file format",& "Coordinates provided through an XYZ file format",& "Coordinates provided through a GROMOS96 file format",& + "Coordinates provided through an AMBER file format",& "Coordinates read in the &COORD section of the input file"),& default_i_val=do_coord_off,error=error) CALL section_add_keyword(section,keyword,error=error) diff --git a/src/topology.F b/src/topology.F index bf332c5d08..bb16761b7d 100644 --- a/src/topology.F +++ b/src/topology.F @@ -20,8 +20,8 @@ MODULE topology USE f77_blas USE input_constants, ONLY: & do_conn_g87, do_conn_g96, do_conn_generate, do_conn_mol_set, & - do_conn_off, do_conn_psf, do_conn_psf_u, do_coord_g96, do_coord_pdb, & - do_coord_xyz + do_conn_off, do_conn_psf, do_conn_psf_u, do_coord_crd, do_coord_g96, & + do_coord_pdb, do_coord_xyz USE input_section_types, ONLY: section_vals_get,& section_vals_get_subs_vals,& section_vals_type,& @@ -40,6 +40,7 @@ MODULE topology USE termination, ONLY: stop_program USE timings, ONLY: timeset,& timestop + USE topology_amber, ONLY: read_coordinate_crd USE topology_connectivity_util, ONLY: topology_connectivity_pack USE topology_constraint_util, ONLY: topology_constraint_pack USE topology_coordinate_util, ONLY: topology_coordinate_pack @@ -507,6 +508,10 @@ CONTAINS CALL read_coordinate_g96 (topology,para_env,subsys_section,error) CALL read_atoms_input ( topology, overwrite=.TRUE.,& subsys_section=subsys_section,save_mem=save_mem,error=error) + CASE (do_coord_crd) + CALL read_coordinate_crd (topology,para_env,subsys_section,error) + CALL read_atoms_input ( topology, overwrite=.TRUE.,& + subsys_section=subsys_section,save_mem=save_mem,error=error) CASE (do_coord_pdb) CALL read_coordinate_pdb (topology,para_env,subsys_section,error) CALL read_atoms_input ( topology, overwrite=.TRUE.,& diff --git a/src/topology_amber.F b/src/topology_amber.F new file mode 100644 index 0000000000..51c291de6a --- /dev/null +++ b/src/topology_amber.F @@ -0,0 +1,266 @@ +!-----------------------------------------------------------------------------! +! CP2K: A general program to perform molecular dynamics simulations ! +! Copyright (C) 2000 - 2008 CP2K developers group ! +!-----------------------------------------------------------------------------! + +! ***************************************************************************** +!> \brief Handles all functions used to read and interpret AMBER coordinates +!> and topology files +!> \author Teodoro Laino [tlaino] - University of Zurich 10.2008 +! ***************************************************************************** +MODULE topology_amber + USE convert_units, ONLY: convert_to_cp2k_units + USE cp_output_handling, ONLY: cp_print_key_finished_output,& + cp_print_key_unit_nr + USE cp_para_types, ONLY: cp_para_env_type + USE cp_parser_methods, ONLY: parser_get_next_line,& + parser_get_object + USE cp_parser_types, ONLY: cp_parser_type,& + parser_create,& + parser_release + USE f77_blas + USE input_cp2k_restarts, ONLY: section_velocity_val_set + USE input_section_types, ONLY: section_vals_get_subs_vals,& + section_vals_type + USE kinds, ONLY: default_string_length,& + dp + USE memory_utilities, ONLY: reallocate + USE timings, ONLY: timeset,& + timestop + USE topology_types, ONLY: atom_info_type,& + topology_parameters_type +#include "cp_common_uses.h" + + IMPLICIT NONE + + CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'topology_amber' + REAL(KIND=dp), PARAMETER, PUBLIC :: amber_conv_factor = 20.455_dp + + PRIVATE + PUBLIC :: read_coordinate_crd + +CONTAINS + +! ***************************************************************************** +!> \brief Reads the `coord' version generated by the PARM or LEaP programs, as +!> well as the `restrt' version, resulting from energy minimization or +!> molecular dynamics in SANDER or GIBBS. It may contain velocity and +!> periodic box information. +!> +!> Official Format from the AMBER homepage +!> FORMAT(20A4) ITITL +!> ITITL : the title of the current run, from the AMBER +!> parameter/topology file +!> +!> FORMAT(I5,5E15.7) NATOM,TIME +!> NATOM : total number of atoms in coordinate file +!> TIME : option, current time in the simulation (picoseconds) +!> +!> FORMAT(6F12.7) (X(i), Y(i), Z(i), i = 1,NATOM) +!> X,Y,Z : coordinates +!> +!> IF dynamics +!> +!> FORMAT(6F12.7) (VX(i), VY(i), VZ(i), i = 1,NATOM) +!> VX,VY,VZ : velocities (units: Angstroms per 1/20.455 ps) +!> +!> IF constant pressure (in 4.1, also constant volume) +!> +!> FORMAT(6F12.7) BOX(1), BOX(2), BOX(3) +!> BOX : size of the periodic box +!> +!> +!> \author Teodoro Laino [tlaino] - University of Zurich 10.2008 +! ***************************************************************************** + SUBROUTINE read_coordinate_crd (topology,para_env,subsys_section,error) + TYPE(topology_parameters_type) :: topology + TYPE(cp_para_env_type), POINTER :: para_env + TYPE(section_vals_type), POINTER :: subsys_section + TYPE(cp_error_type), INTENT(inout) :: error + + CHARACTER(len=*), PARAMETER :: routineN = 'read_coordinate_crd', & + routineP = moduleN//':'//routineN + + CHARACTER(LEN=default_string_length) :: string + INTEGER :: handle, iw, j, natom, stat + LOGICAL :: failure, my_end, & + setup_velocities + REAL(KIND=dp), DIMENSION(:, :), POINTER :: velocity + TYPE(atom_info_type), POINTER :: atom_info + TYPE(cp_logger_type), POINTER :: logger + TYPE(cp_parser_type), POINTER :: parser + TYPE(section_vals_type), POINTER :: velocity_section + + NULLIFY(parser, logger, velocity) + logger => cp_error_get_logger(error) + iw = cp_print_key_unit_nr(logger,subsys_section,"PRINT%TOPOLOGY_INFO/CRD_INFO",& + extension=".subsysLog",error=error) + CALL timeset(routineN,handle) + + atom_info => topology%atom_info + IF (iw>0) WRITE(iw,*) " Reading in CRD file ",TRIM(topology%coord_file_name) + + ! Title Section + IF(iw>0) WRITE(iw,'(T2,A)') 'CRD_INFO| Parsing the TITLE section' + CALL parser_create(parser,topology%coord_file_name,para_env=para_env,error=error) + CALL parser_get_next_line(parser,1,error=error) + CALL parser_get_object(parser,string,string_length=default_string_length,error=error) + IF(iw>0) WRITE(iw,'(T2,A)') 'CRD_INFO| '//TRIM(string) + ! Natom and Time (which we ignore) + CALL parser_get_next_line(parser,1,error=error) + CALL parser_get_object(parser,natom,error=error) + topology%natoms = natom + IF(iw>0) WRITE(iw,'(T2,A,I0)') 'CRD_INFO| Number of atoms: ',natom + CALL reallocate(atom_info%label_molname, 1, natom) + CALL reallocate(atom_info%label_resname, 1, natom) + CALL reallocate(atom_info%label_resid, 1, natom) + CALL reallocate(atom_info%label_atmname, 1, natom) + CALL reallocate(atom_info%r, 1,3,1,natom) + CALL reallocate(atom_info%atm_mass, 1, natom) + CALL reallocate(atom_info%atm_charge, 1, natom) + CALL reallocate(atom_info%occup, 1, natom) + CALL reallocate(atom_info%beta, 1, natom) + CALL reallocate(atom_info%element, 1, natom) + ! Coordinates + topology%aa_element = .TRUE. + topology%molname_generated = .TRUE. + CALL parser_get_next_line(parser,1,at_end=my_end,error=error) + DO j = 1, natom-MOD(natom,2), 2 + IF (my_end) EXIT + READ(parser%input_line,*)atom_info%r(1,j ),atom_info%r(2,j ),atom_info%r(3,j ),& + atom_info%r(1,j+1),atom_info%r(2,j+1),atom_info%r(3,j+1) + ! All these information will have to be setup elsewhere.. + ! CRD file does not contain anything related.. + atom_info%label_atmname(j ) = "__UNDEF__" + atom_info%label_molname(j ) = "__UNDEF__" + atom_info%label_resname(j ) = "__UNDEF__" + atom_info%element (j ) = "__UNDEF__" + atom_info%label_resid (j ) = HUGE(0) + atom_info%atm_mass (j ) = HUGE(0.0_dp) + atom_info%atm_charge (j ) = -HUGE(0.0_dp) + CALL convert_to_cp2k_units("ANGSTROM",length=atom_info%r(1,j )) + CALL convert_to_cp2k_units("ANGSTROM",length=atom_info%r(2,j )) + CALL convert_to_cp2k_units("ANGSTROM",length=atom_info%r(3,j )) + + atom_info%label_atmname(j+1) = "__UNDEF__" + atom_info%label_molname(j+1) = "__UNDEF__" + atom_info%label_resname(j+1) = "__UNDEF__" + atom_info%element (j+1) = "__UNDEF__" + atom_info%label_resid (j+1) = HUGE(0) + atom_info%atm_mass (j+1) = HUGE(0.0_dp) + atom_info%atm_charge (j+1) = -HUGE(0.0_dp) + CALL convert_to_cp2k_units("ANGSTROM",length=atom_info%r(1,j+1)) + CALL convert_to_cp2k_units("ANGSTROM",length=atom_info%r(2,j+1)) + CALL convert_to_cp2k_units("ANGSTROM",length=atom_info%r(3,j+1)) + + CALL parser_get_next_line(parser,1,at_end=my_end,error=error) + END DO + ! Trigger error + IF ((my_end).AND.(j/=natom-MOD(natom,2)+1)) THEN + CALL cp_assert(j==natom,cp_fatal_level,cp_assertion_failed,routineP,& + "Error while reading CRD file. Unexpected end of file."//& +CPSourceFileRef,& + only_ionode=.TRUE.) + ELSE IF (MOD(natom,2)/=0) THEN + ! In case let's handle the last atom + j = natom + READ(parser%input_line,*)atom_info%r(1,j ),atom_info%r(2,j ),atom_info%r(3,j ) + ! All these information will have to be setup elsewhere.. + ! CRD file does not contain anything related.. + atom_info%label_atmname(j ) = "__UNDEF__" + atom_info%label_molname(j ) = "__UNDEF__" + atom_info%label_resname(j ) = "__UNDEF__" + atom_info%element (j ) = "__UNDEF__" + atom_info%label_resid (j ) = HUGE(0) + atom_info%atm_mass (j ) = HUGE(0.0_dp) + atom_info%atm_charge (j ) = -HUGE(0.0_dp) + CALL convert_to_cp2k_units("ANGSTROM",length=atom_info%r(1,j )) + CALL convert_to_cp2k_units("ANGSTROM",length=atom_info%r(2,j )) + CALL convert_to_cp2k_units("ANGSTROM",length=atom_info%r(3,j )) + + CALL parser_get_next_line(parser,1,at_end=my_end,error=error) + END IF + + IF (my_end) THEN + CALL cp_assert(j==natom,cp_warning_level,cp_assertion_failed,routineP,& + "No VELOCITY or BOX information found in CRD file. "//& +CPSourceFileRef,& + only_ionode=.TRUE.) + ELSE + ! Velocities + CALL reallocate(velocity,1,3,1,natom) + DO j = 1, natom-MOD(natom,2), 2 + IF (my_end) EXIT + READ(parser%input_line,*)velocity(1,j ),velocity(2,j ),velocity(3,j ),& + velocity(1,j+1),velocity(2,j+1),velocity(3,j+1) + + CALL convert_to_cp2k_units("ANGSTROM",length=velocity(1,j )) + CALL convert_to_cp2k_units("ANGSTROM",length=velocity(2,j )) + CALL convert_to_cp2k_units("ANGSTROM",length=velocity(3,j )) + CALL convert_to_cp2k_units("PS",time=velocity(1,j ),t_power=-1) + CALL convert_to_cp2k_units("PS",time=velocity(2,j ),t_power=-1) + CALL convert_to_cp2k_units("PS",time=velocity(3,j ),t_power=-1) + velocity(1:3,j ) = velocity(1:3,j )*amber_conv_factor + + CALL convert_to_cp2k_units("ANGSTROM",length=velocity(1,j+1)) + CALL convert_to_cp2k_units("ANGSTROM",length=velocity(2,j+1)) + CALL convert_to_cp2k_units("ANGSTROM",length=velocity(3,j+1)) + CALL convert_to_cp2k_units("PS",time=velocity(1,j+1),t_power=-1) + CALL convert_to_cp2k_units("PS",time=velocity(2,j+1),t_power=-1) + CALL convert_to_cp2k_units("PS",time=velocity(3,j+1),t_power=-1) + velocity(1:3,j+1) = velocity(1:3,j+1)*amber_conv_factor + + CALL parser_get_next_line(parser,1,at_end=my_end,error=error) + END DO + setup_velocities = .TRUE. + IF ((my_end).AND.(j/=natom-MOD(natom,2)+1)) THEN + CALL cp_assert(j==natom,cp_warning_level,cp_assertion_failed,routineP,& + "No VELOCITY information found in CRD file. Ignoring BOX information. "//& + "Please provide the BOX information directly from the main CP2K input! "//& +CPSourceFileRef,& + only_ionode=.TRUE.) + setup_velocities = .FALSE. + ELSE IF (MOD(natom,2)/=0) THEN + ! In case let's handle the last atom + j = natom + READ(parser%input_line,*)velocity(1,j ),velocity(2,j ),velocity(3,j ) + + CALL convert_to_cp2k_units("ANGSTROM",length=velocity(1,j )) + CALL convert_to_cp2k_units("ANGSTROM",length=velocity(2,j )) + CALL convert_to_cp2k_units("ANGSTROM",length=velocity(3,j )) + CALL convert_to_cp2k_units("PS",time=velocity(1,j ),t_power=-1) + CALL convert_to_cp2k_units("PS",time=velocity(2,j ),t_power=-1) + CALL convert_to_cp2k_units("PS",time=velocity(3,j ),t_power=-1) + velocity(1:3,j ) = velocity(1:3,j )*amber_conv_factor + + CALL parser_get_next_line(parser,1,at_end=my_end,error=error) + END IF + IF (setup_velocities) THEN + velocity_section => section_vals_get_subs_vals(subsys_section,"VELOCITY",error=error) + CALL section_velocity_val_set(velocity_section, velocity=velocity, & + conv_factor=1.0_dp, error=error) + END IF + DEALLOCATE(velocity,STAT=stat) + CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) + END IF + IF (my_end) THEN + CALL cp_assert(j==natom,cp_warning_level,cp_assertion_failed,routineP,& + "BOX information missing in CRD file. "//& +CPSourceFileRef,& + only_ionode=.TRUE.) + ELSE + CALL cp_assert(j==natom,cp_warning_level,cp_assertion_failed,routineP,& + "BOX information found in CRD file. They will be ignored."//& + "Please provide the BOX information directly from the main CP2K input!"//& +CPSourceFileRef,& + only_ionode=.TRUE.) + END IF + CALL parser_release(parser,error=error) + CALL cp_print_key_finished_output(iw,logger,subsys_section,& + "PRINT%TOPOLOGY_INFO/CRD_INFO",error=error) + CALL timestop(handle) + + END SUBROUTINE read_coordinate_crd + +END MODULE topology_amber + diff --git a/src/topology_constraint_util.F b/src/topology_constraint_util.F index ce29479b79..fac221843b 100644 --- a/src/topology_constraint_util.F +++ b/src/topology_constraint_util.F @@ -977,14 +977,14 @@ CONTAINS ! ***************************************************************************** SUBROUTINE setup_g4x6_list(g4x6_list, ilist, cons_info, ng4x6_restraint, error) TYPE(g4x6_constraint_type), & - DIMENSION(:), POINTER :: g4x6_list + DIMENSION(:), POINTER :: g4x6_list INTEGER, DIMENSION(:), POINTER :: ilist TYPE(constraint_info_type), POINTER :: cons_info INTEGER, INTENT(OUT) :: ng4x6_restraint TYPE(cp_error_type), INTENT(inout) :: error CHARACTER(len=*), PARAMETER :: routineN = 'setup_g4x6_list', & - routineP = moduleN//':'//routineN + routineP = moduleN//':'//routineN INTEGER :: j, ng4x6 LOGICAL :: failure @@ -1123,14 +1123,14 @@ CONTAINS ! ***************************************************************************** SUBROUTINE setup_lg4x6(lg4x6, g4x6_list, first_atom, last_atom, error) TYPE(local_g4x6_constraint_type), & - DIMENSION(:), POINTER :: lg4x6 + DIMENSION(:), POINTER :: lg4x6 TYPE(g4x6_constraint_type), & - DIMENSION(:), POINTER :: g4x6_list + DIMENSION(:), POINTER :: g4x6_list INTEGER, INTENT(IN) :: first_atom, last_atom TYPE(cp_error_type), INTENT(inout) :: error CHARACTER(len=*), PARAMETER :: routineN = 'setup_lg4x6', & - routineP = moduleN//':'//routineN + routineP = moduleN//':'//routineN INTEGER :: kk LOGICAL :: failure diff --git a/tests/Fist/regtest-3/TEST_FILES b/tests/Fist/regtest-3/TEST_FILES index e2d6bf6641..87da514e4a 100644 --- a/tests/Fist/regtest-3/TEST_FILES +++ b/tests/Fist/regtest-3/TEST_FILES @@ -23,3 +23,5 @@ water_2_TS.inp 25 water_2_TS_CG.inp 25 argon.inp 25 2d_pot.inp 25 +#amber files +ace_ala_nme.inp 7 diff --git a/tests/Fist/regtest-3/ace_ala_nme.inp b/tests/Fist/regtest-3/ace_ala_nme.inp new file mode 100644 index 0000000000..581735fb1f --- /dev/null +++ b/tests/Fist/regtest-3/ace_ala_nme.inp @@ -0,0 +1,53 @@ + +&FORCE_EVAL + METHOD FIST + &MM + &FORCEFIELD + parm_file_name ../sample_pot/ace_ala_nme.pot + parmtype CHM + &SPLINE + EMAX_SPLINE 1.0 + &END + &END FORCEFIELD + &POISSON + &EWALD + EWALD_TYPE ewald + ALPHA .36 + GMAX 29 + &END EWALD + &END POISSON + &END MM + &SUBSYS + &CELL + ABC 50.0 50.0 50.0 + UNIT ANGSTROM + &END CELL + &TOPOLOGY + CHARGE_BETA + CONN_FILE_NAME ../sample_psf/ace_ala_nme.psf + CONNECTIVITY PSF + COORD_FILE_NAME ../sample_crd/ace_ala_nme.crd + COORDINATE CRD + &DUMP_PDB + &END + &DUMP_PSF + &END + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL +&GLOBAL + PRINT_LEVEL LOW + PROJECT ace_ala_nme + RUN_TYPE GEO_OPT +&END GLOBAL +&MOTION + &GEO_OPT + MAX_ITER 50 + &END + &PRINT + &TRAJECTORY + &END + &RESTART OFF + &END + &END +&END MOTION diff --git a/tests/Fist/sample_crd/ace_ala_nme.crd b/tests/Fist/sample_crd/ace_ala_nme.crd new file mode 100644 index 0000000000..fa15e356f2 --- /dev/null +++ b/tests/Fist/sample_crd/ace_ala_nme.crd @@ -0,0 +1,13 @@ +ACE + 22 + 2.0000010 1.0000000 -0.0000013 2.0000010 2.0900000 0.0000001 + 1.4862640 2.4538490 0.8898240 1.4862590 2.4538520 -0.8898200 + 3.4274200 2.6407950 -0.0000030 4.3905800 1.8774060 -0.0000066 + 3.5553754 3.9696488 -0.0000031 2.7331200 4.5561601 -0.0000013 + 4.8532621 4.6139253 -0.0000043 5.4075960 4.3155388 0.8898151 + 5.6613044 4.2208425 -1.2321480 5.1232615 4.5213630 -2.1312016 + 6.6304840 4.7189354 -1.2057908 5.8085401 3.1408723 -1.2413850 + 4.7126759 6.1294185 0.0000014 3.6006445 6.6527027 0.0000062 + 5.8460533 6.8348833 0.0000025 6.7370014 6.3591620 -0.0000004 + 5.8460551 8.2838837 0.0000062 4.8185761 8.6477349 0.0000104 + 6.3597984 8.6477313 0.8898282 6.3597900 8.6477354 -0.8898188 diff --git a/tests/Fist/sample_pot/ace_ala_nme.pot b/tests/Fist/sample_pot/ace_ala_nme.pot new file mode 100644 index 0000000000..b0a6ce9675 --- /dev/null +++ b/tests/Fist/sample_pot/ace_ala_nme.pot @@ -0,0 +1,167 @@ +*>>>>>>> AMBER FF Converted into CHARMM FF style <<<<<<< +*>>>>>>> Generated on :: 20081028 191942.385 +0100 by :: teo <<<<<<< +*>>>>>>> pcihopt3 <<<<<<< +*>>>>>>> Leap Title :: ACE <<<<<<< +*>>>>>>> Send all comments related to the FFs conversion to <<<<<<< +*>>>>>>> teodoro.laino@gmail.com <<<<<<< + +BONDS +! +!V(bond) = Kb(b - b0)**2 +! +!Kb: kcal/mole/A**2 +!b0: A +! +!atom type Kb b0 +! +CT1 HC1 340.000000000 1.090000000 +CT3 HC2 340.000000000 1.090000000 +CT2 H11 340.000000000 1.090000000 +N H 434.000000000 1.010000000 +CT4 H12 340.000000000 1.090000000 +C O 570.000000000 1.229000000 +C N 490.000000000 1.335000000 +CT1 C 317.000000000 1.522000000 +CT2 CT3 310.000000000 1.526000000 +CT2 C 317.000000000 1.522000000 +N CT2 337.000000000 1.449000000 +N CT4 337.000000000 1.449000000 + +ANGLES +! +!V(angle) = Ktheta(Theta - Theta0)**2 +! +!V(Urey-Bradley) = Kub(S - S0)**2 +! +!Ktheta: kcal/mole/rad**2 +!Theta0: degrees +!Kub: kcal/mole/A**2 (Urey-Bradley) +!S0: A +! +!atom types Ktheta Theta0 Kub S0 +! +C N H 50.000000000 120.000051429 +HC1 CT1 C 50.000000000 109.500046929 +HC1 CT1 HC1 35.000000000 109.500046929 +HC2 CT3 HC2 35.000000000 109.500046929 +H11 CT2 CT3 50.000000000 109.500046929 +H11 CT2 C 50.000000000 109.500046929 +CT2 CT3 HC2 50.000000000 109.500046929 +H N CT2 50.000000000 118.040050474 +N CT2 H11 50.000000000 109.500046929 +H12 CT4 H12 35.000000000 109.500046929 +H N CT4 50.000000000 118.040050474 +N CT4 H12 50.000000000 109.500046929 +O C N 80.000000000 122.900052672 +C N CT2 50.000000000 121.900052243 +CT1 C O 80.000000000 120.400051601 +CT1 C N 70.000000000 116.600049972 +C N CT4 50.000000000 121.900052243 +CT3 CT2 C 63.000000000 111.100047615 +CT2 C O 80.000000000 120.400051601 +CT2 C N 70.000000000 116.600049972 +N CT2 CT3 80.000000000 109.700047015 +N CT2 C 63.000000000 110.100047186 + +DIHEDRALS +! +!V(dihedral) = Kchi(1 + cos(n(chi) - delta)) +! +!Kchi: kcal/mole +!n: multiplicity +!delta: degrees +! +!atom types Kchi n delta +! +O C N H 2.000000000 1 0.000000000 +O C N H 2.500000000 2 180.000077144 +C N CT2 H11 0.000000000 2 0.000000000 +HC1 CT1 C O 0.800000000 1 0.000000000 +HC1 CT1 C O 0.080000000 3 180.000077144 +HC1 CT1 C N 0.000000000 2 0.000000000 +HC1 CT1 C O 0.000000000 2 0.000000000 +CT1 C N H 2.500000000 2 180.000077144 +C N CT4 H12 0.000000000 2 0.000000000 +HC2 CT3 CT2 C 0.155555556 3 0.000000000 +H11 CT2 CT3 HC2 0.155555556 3 0.000000000 +H11 CT2 C O 0.800000000 1 0.000000000 +H11 CT2 C O 0.080000000 3 180.000077144 +H11 CT2 C N 0.000000000 2 0.000000000 +CT2 C N H 2.500000000 2 180.000077144 +H N CT2 H11 0.000000000 2 0.000000000 +H N CT2 CT3 0.000000000 2 0.000000000 +H N CT2 C 0.000000000 2 0.000000000 +N CT2 CT3 HC2 0.155555556 3 0.000000000 +H N CT4 H12 0.000000000 2 0.000000000 +O C N CT2 2.500000000 2 180.000077144 +C N CT2 CT3 0.530000000 1 0.000000000 +C N CT2 CT3 0.150000000 3 180.000077144 +C N CT2 CT3 0.500000000 4 180.000077144 +C N CT2 C 0.800000000 1 0.000000000 +C N CT2 C 0.850000000 2 180.000077144 +CT1 C N CT2 2.500000000 2 180.000077144 +O C N CT4 2.500000000 2 180.000077144 +CT3 CT2 C O 0.000000000 2 0.000000000 +CT3 CT2 C N 0.070000000 2 0.000000000 +CT3 CT2 C N 0.100000000 4 0.000000000 +CT2 C N CT4 2.500000000 2 180.000077144 +N CT2 C O 0.000000000 2 0.000000000 +N CT2 C N 1.700000000 1 180.000077144 +N CT2 C N 2.000000000 2 180.000077144 +C CT2 N H 1.100000000 2 180.000077144 +C CT4 N H 1.100000000 2 180.000077144 +CT1 N C O 10.500000000 2 180.000077144 +CT2 N C O 10.500000000 2 180.000077144 + +IMPROPER +! +!V(improper) = Kpsi(psi - psi0)**2 +! +!Kpsi: kcal/mole/rad**2 +!psi0: degrees +!note that the second column of numbers (0) is ignored +! +!atom types Kpsi psi0 +! + +NONBONDED +! +!V(Lennard-Jones) = Eps,i,j[(Rmin,i,j/ri,j)**12 - 2(Rmin,i,j/ri,j)**6] +! +!epsilon: kcal/mole, Eps,i,j = sqrt(eps,i * eps,j) +!Rmin/2: A, Rmin,i,j = Rmin/2,i + Rmin/2,j +! +!atom ignored epsilon Rmin/2 ignored eps,1-4 Rmin/2,1-4 +! +HC1 0.000000000 0.015700000 1.487000000 +CT1 0.000000000 0.109400000 1.908000000 +C 0.000000000 0.086000000 1.908000000 +O 0.000000000 0.210000000 1.661200000 +N 0.000000000 0.170000000 1.824000000 +H 0.000000000 0.015700000 0.600000000 +CT2 0.000000000 0.109400000 1.908000000 +H11 0.000000000 0.015700000 1.386999999 +CT3 0.000000000 0.109400000 1.908000000 +HC2 0.000000000 0.015700000 1.487000000 +CT4 0.000000000 0.109400000 1.908000000 +H12 0.000000000 0.015700000 1.386999999 + +END + +! +! This Section can be cutted & pasted into the Fist input file.. +! +CHARGES +HC1 0.143700000 +CT1 -0.518800000 +C 0.673099998 +O -0.585399999 +N -0.493700000 +H 0.301800000 +CT2 0.044800000 +H11 0.022800000 +CT3 -0.090900000 +HC2 0.042500000 +CT4 -0.007600000 +H12 0.066500000 +END CHARGES diff --git a/tests/Fist/sample_psf/ace_ala_nme.psf b/tests/Fist/sample_psf/ace_ala_nme.psf new file mode 100644 index 0000000000..043729af9b --- /dev/null +++ b/tests/Fist/sample_psf/ace_ala_nme.psf @@ -0,0 +1,86 @@ +PSF EXT + + 1 !NTITLE + Conversion from AMBER PARMTOP ::ACE + + 22 !NATOM + 1 MOL01 1 ACE HH31 HC1 0.143700 1.008 0 + 2 MOL01 1 ACE CH3 CT1 -0.518800 12.010 0 + 3 MOL01 1 ACE HH32 HC1 0.143700 1.008 0 + 4 MOL01 1 ACE HH33 HC1 0.143700 1.008 0 + 5 MOL01 1 ACE C C 0.673100 12.010 0 + 6 MOL01 1 ACE O O -0.585400 16.000 0 + 7 MOL01 2 ALA N N -0.493700 14.010 0 + 8 MOL01 2 ALA H H 0.301800 1.008 0 + 9 MOL01 2 ALA CA CT2 0.044800 12.010 0 + 10 MOL01 2 ALA HA H11 0.022800 1.008 0 + 11 MOL01 2 ALA CB CT3 -0.090900 12.010 0 + 12 MOL01 2 ALA HB1 HC2 0.042500 1.008 0 + 13 MOL01 2 ALA HB2 HC2 0.042500 1.008 0 + 14 MOL01 2 ALA HB3 HC2 0.042500 1.008 0 + 15 MOL01 2 ALA C C 0.673100 12.010 0 + 16 MOL01 2 ALA O O -0.585400 16.000 0 + 17 MOL01 3 NME N N -0.493700 14.010 0 + 18 MOL01 3 NME H H 0.301800 1.008 0 + 19 MOL01 3 NME CH3 CT4 -0.007600 12.010 0 + 20 MOL01 3 NME HH31 H12 0.066500 1.008 0 + 21 MOL01 3 NME HH32 H12 0.066500 1.008 0 + 22 MOL01 3 NME HH33 H12 0.066500 1.008 0 + + 21 !NBOND + 2 3 2 4 1 2 11 12 + 11 13 11 14 9 10 7 8 + 19 20 19 21 19 22 17 18 + 5 6 5 7 2 5 15 16 + 15 17 9 11 9 15 7 9 + 17 19 + + 36 !NTHETA + 5 7 8 4 2 5 3 2 4 + 3 2 5 1 2 3 1 2 4 + 1 2 5 15 17 18 13 11 14 + 12 11 13 12 11 14 10 9 11 + 10 9 15 9 11 12 9 11 13 + 9 11 14 8 7 9 7 9 10 + 21 19 22 20 19 21 20 19 22 + 18 17 19 17 19 20 17 19 21 + 17 19 22 6 5 7 5 7 9 + 2 5 6 2 5 7 16 15 17 + 15 17 19 11 9 15 9 15 16 + 9 15 17 7 9 11 7 9 15 + + 45 !NPHI + 6 5 7 8 5 7 9 10 + 4 2 5 6 4 2 5 7 + 3 2 5 6 3 2 5 7 + 2 5 7 8 1 2 5 6 + 1 2 5 7 16 15 17 18 + 15 17 19 20 15 17 19 21 + 15 17 19 22 14 11 9 15 + 13 11 9 15 12 11 9 15 + 10 9 11 12 10 9 11 13 + 10 9 11 14 10 9 15 16 + 10 9 15 17 9 15 17 18 + 8 7 9 10 8 7 9 11 + 8 7 9 15 7 9 11 12 + 7 9 11 13 7 9 11 14 + 18 17 19 20 18 17 19 21 + 18 17 19 22 5 9 7 8 + 15 19 17 18 6 5 7 9 + 5 7 9 11 5 7 9 15 + 2 5 7 9 16 15 17 19 + 11 9 15 16 11 9 15 17 + 9 15 17 19 7 9 15 16 + 7 9 15 17 2 7 5 6 + 9 17 15 16 + + 0 !NIMPHI + + 0 !NDON + + 0 !NACC + + 0 !NNB + + 0 !NGRP +