14 #include "./base/base_uses.f90"
18 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qmmm_ff_fist'
39 CHARACTER(LEN=default_string_length), &
41 CHARACTER(LEN=default_string_length), &
42 INTENT(INOUT),
OPTIONAL :: id2, id3, id4
43 LOGICAL,
INTENT(OUT),
OPTIONAL :: is_link
46 CHARACTER(LEN=default_string_length) :: tmp
47 INTEGER :: j, my_index
52 DO WHILE (index(id1,
"_QM_") /= 0)
53 my_link = qmmm_ff_precond_only_link(id1) .OR. my_link
54 my_index = index(id1,
"_QM_") + len_trim(
"_QM_")
56 tmp = trim(id1(my_index:))
63 IF (
PRESENT(id2))
THEN
64 IF (index(id2,
"_QM_") == 0) only_qm = .false.
65 DO WHILE (index(id2,
"_QM_") /= 0)
66 my_link = qmmm_ff_precond_only_link(id2) .OR. my_link
67 my_index = index(id2,
"_QM_") + len_trim(
"_QM_")
68 tmp = trim(id2(my_index:))
76 IF (
PRESENT(id3))
THEN
77 IF (index(id3,
"_QM_") == 0) only_qm = .false.
78 DO WHILE (index(id3,
"_QM_") /= 0)
79 my_link = qmmm_ff_precond_only_link(id3) .OR. my_link
80 my_index = index(id3,
"_QM_") + len_trim(
"_QM_")
81 tmp = trim(id3(my_index:))
89 IF (
PRESENT(id4))
THEN
90 IF (index(id4,
"_QM_") == 0) only_qm = .false.
91 DO WHILE (index(id4,
"_QM_") /= 0)
92 my_link = qmmm_ff_precond_only_link(id4) .OR. my_link
93 my_index = index(id4,
"_QM_") + len_trim(
"_QM_")
94 tmp = trim(id4(my_index:))
102 IF (
PRESENT(is_link)) is_link = my_link
111 FUNCTION qmmm_ff_precond_only_link(id1)
RESULT(is_link)
112 CHARACTER(LEN=default_string_length), &
116 CHARACTER(LEN=default_string_length) :: tmp
117 INTEGER :: j, my_index
120 DO WHILE (index(id1,
"_LNK") /= 0)
121 my_index = index(id1,
"_LNK") + 1
122 my_index = index(id1(my_index:),
"_QM_") + my_index - 1
124 tmp = trim(id1(my_index:))
127 END DO clean_string_1
131 END FUNCTION qmmm_ff_precond_only_link
Defines the basic variable types.
integer, parameter, public default_string_length
logical function, public qmmm_ff_precond_only_qm(id1, id2, id3, id4, is_link)
This function handles the atom names and modifies the "_QM_" prefix, in order to find the parameters ...