subroutine rdelem(symbol2, ierror) implicit double precision (a-h,o-z) #include "divcon.dim" #include "divcon.h" ! convert AMBER atom types into atomic number for SEBOMD ! ! input: symbol2 the list of atom types (natoms length) ! output: iatnum the atomic number ! ierror a flag (= 0 -> no error) character*4 symbol2(*) integer ierror character*4 element ! search element for each atom type, then convert to atomic number do i = 1, natoms call rdelem_get_element(symbol2(i), element, ierror) if (ierror.ne.0) return call rdelem_get_atomic_number(element, iatnum(i), ierror) if (ierror.ne.0) return end do return end !------------------------------------------------------------------------ subroutine rdelem_get_element(symbol, element, ierror) implicit none character*4 symbol character*4 element integer ierror integer atom_type_size parameter (atom_type_size=213) character*4 type_conversion_table(2,atom_type_size) data type_conversion_table / . 'H ', 'H ', . 'H0 ', 'H ', . 'H1 ', 'H ', . 'H2 ', 'H ', . 'H3 ', 'H ', . 'H4 ', 'H ', . 'H5 ', 'H ', . 'HA ', 'H ', . 'HC ', 'H ', . 'HD ', 'H ', . 'HK ', 'H ', . 'HN ', 'H ', . 'HO ', 'H ', . 'HP ', 'H ', . 'HS ', 'H ', . 'HT ', 'H ', . 'HW ', 'H ', . 'HZ ', 'H ', . 'Ha ', 'H ', . 'Hc ', 'H ', . 'Ho ', 'H ', . 'Hp ', 'H ', . 'h1 ', 'H ', . 'h2 ', 'H ', . 'h3 ', 'H ', . 'h4 ', 'H ', . 'h5 ', 'H ', . 'hA ', 'H ', . 'hB ', 'H ', . 'hE ', 'H ', . 'hL ', 'H ', . 'hN ', 'H ', . 'hO ', 'H ', . 'hR ', 'H ', . 'hS ', 'H ', . 'hX ', 'H ', . 'ha ', 'H ', . 'hc ', 'H ', . 'hn ', 'H ', . 'ho ', 'H ', . 'hp ', 'H ', . 'hs ', 'H ', . 'hw ', 'H ', . 'hx ', 'H ', . '2C ', 'C ', . '3C ', 'C ', . 'C ', 'C ', . 'C* ', 'C ', . 'C1 ', 'C ', . 'C2 ', 'C ', . 'C3 ', 'C ', . 'C4 ', 'C ', . 'C5 ', 'C ', . 'C6 ', 'C ', . 'C8 ', 'C ', . 'CA ', 'C ', . 'CB ', 'C ', . 'CC ', 'C ', . 'CD ', 'C ', . 'CG ', 'C ', . 'CI ', 'C ', . 'CJ ', 'C ', . 'CK ', 'C ', . 'CM ', 'C ', . 'CN ', 'C ', . 'CO ', 'C ', . 'CP ', 'C ', . 'CQ ', 'C ', . 'CR ', 'C ', . 'CS ', 'C ', . 'CT ', 'C ', . 'CV ', 'C ', . 'CW ', 'C ', . 'CX ', 'C ', . 'CY ', 'C ', . 'CZ ', 'C ', . 'Cg ', 'C ', . 'Cj ', 'C ', . 'Ck ', 'C ', . 'Cp ', 'C ', . 'Cy ', 'C ', . 'TG ', 'C ', . 'c ', 'C ', . 'c1 ', 'C ', . 'c2 ', 'C ', . 'c3 ', 'C ', . 'cA ', 'C ', . 'cB ', 'C ', . 'cC ', 'C ', . 'cD ', 'C ', . 'cP ', 'C ', . 'cR ', 'C ', . 'ca ', 'C ', . 'cc ', 'C ', . 'cd ', 'C ', . 'ce ', 'C ', . 'cf ', 'C ', . 'cg ', 'C ', . 'ch ', 'C ', . 'cp ', 'C ', . 'cq ', 'C ', . 'cu ', 'C ', . 'cv ', 'C ', . 'cx ', 'C ', . 'cy ', 'C ', . 'cz ', 'C ', . 'N ', 'N ', . 'N* ', 'N ', . 'N2 ', 'N ', . 'N3 ', 'N ', . 'NA ', 'N ', . 'NB ', 'N ', . 'NC ', 'N ', . 'ND ', 'N ', . 'NL ', 'N ', . 'NO ', 'N ', . 'NP ', 'N ', . 'NT ', 'N ', . 'NX ', 'N ', . 'NY ', 'N ', . 'NZ ', 'N ', . 'Ng ', 'N ', . 'TN ', 'N ', . 'n ', 'N ', . 'n1 ', 'N ', . 'n2 ', 'N ', . 'n3 ', 'N ', . 'n4 ', 'N ', . 'nA ', 'N ', . 'na ', 'N ', . 'nb ', 'N ', . 'nc ', 'N ', . 'nd ', 'N ', . 'ne ', 'N ', . 'nf ', 'N ', . 'nh ', 'N ', . 'no ', 'N ', . 'O ', 'O ', . 'O2 ', 'O ', . 'O3 ', 'O ', . 'O4 ', 'O ', . 'OA ', 'O ', . 'OD ', 'O ', . 'OH ', 'O ', . 'OM ', 'O ', . 'OP ', 'O ', . 'OQ ', 'O ', . 'OR ', 'O ', . 'OS ', 'O ', . 'OT ', 'O ', . 'OV ', 'O ', . 'OW ', 'O ', . 'OX ', 'O ', . 'OZ ', 'O ', . 'Oh ', 'O ', . 'Os ', 'O ', . 'Oy ', 'O ', . 'W ', 'O ', . 'o ', 'O ', . 'oC ', 'O ', . 'oH ', 'O ', . 'oO ', 'O ', . 'oP ', 'O ', . 'oR ', 'O ', . 'oS ', 'O ', . 'oT ', 'O ', . 'oh ', 'O ', . 'os ', 'O ', . 'ow ', 'O ', . 'F ', 'F ', . 'F- ', 'F ', . 'f ', 'F ', . 'P ', 'P ', . 'p2 ', 'P ', . 'p3 ', 'P ', . 'p4 ', 'P ', . 'p5 ', 'P ', . 'pA ', 'P ', . 'pb ', 'P ', . 'pc ', 'P ', . 'pd ', 'P ', . 'pe ', 'P ', . 'pf ', 'P ', . 'px ', 'P ', . 'py ', 'P ', . 'S ', 'S ', . 'S* ', 'S ', . 'S4 ', 'S ', . 'SF ', 'S ', . 'SH ', 'S ', . 'SO ', 'S ', . 'SS ', 'S ', . 'Sm ', 'S ', . 's ', 'S ', . 's2 ', 'S ', . 's4 ', 'S ', . 's6 ', 'S ', . 'sh ', 'S ', . 'ss ', 'S ', . 'sx ', 'S ', . 'sy ', 'S ', . 'CL ', 'Cl ', . 'Cl ', 'Cl ', . 'Cl- ', 'Cl ', . 'IM ', 'Cl ', . 'cl ', 'Cl ', . 'BR ', 'Br ', . 'Br ', 'Br ', . 'Br- ', 'Br ', . 'br ', 'Br ', . 'I ', 'I ', . 'I- ', 'I ', . 'i ', 'I '/ integer j do j = 1, atom_type_size if (symbol.eq.type_conversion_table(1,j)) then element = type_conversion_table(2,j) return end if end do write(6,*) 'ERROR in rdelem_get_element: symbol "', . symbol, '" unknown' ierror = 1 return end !------------------------------------------------------------------------ subroutine rdelem_get_atomic_number(element, atomic_number, ierr) implicit none integer atomic_number integer ierr character*4 element integer number_of_known_element parameter (number_of_known_element = 10) character*4 element_to_atomic_number1(number_of_known_element) integer element_to_atomic_number2(number_of_known_element) data element_to_atomic_number1/ . 'H ', . 'C ', . 'N ', . 'O ', . 'F ', . 'P ', . 'S ', . 'Cl ', . 'Br ', . 'I '/ data element_to_atomic_number2/ . 1, . 6, . 7, . 8, . 9, . 15, . 16, . 17, . 35, . 53/ integer j do j = 1, number_of_known_element if (element.eq.element_to_atomic_number1(j)) then atomic_number = element_to_atomic_number2(j) return end if end do write(6,*) 'ERROR in rdelem_get_atomic_number: element "', . element,'" unknown' ierr = 1 return end !------------------------------------------------------------------------