1881 RECURSIVE SUBROUTINE rotmat(sepi, sepj, rjiv, r, ij_matrix, do_derivatives, &
1882 do_invert, debug_invert)
1883 TYPE(semi_empirical_type),
POINTER :: sepi, sepj
1884 REAL(kind=dp),
DIMENSION(3),
INTENT(IN) :: rjiv
1885 REAL(kind=dp),
INTENT(IN) :: r
1886 TYPE(rotmat_type),
POINTER :: ij_matrix
1887 LOGICAL,
INTENT(IN) :: do_derivatives
1888 LOGICAL,
INTENT(OUT),
OPTIONAL :: do_invert
1889 LOGICAL,
INTENT(IN),
OPTIONAL :: debug_invert
1891 INTEGER :: imap(3), k, l
1892 LOGICAL :: dbg_inv, eval
1893 REAL(kind=dp) :: b, c2a, c2b, ca, ca2, cb, cb2, check, &
1894 pt5sq3, r2i, s2a, s2b, sa, sb, sb2, &
1895 sqb, sqb2i, x11, x22, x33
1896 REAL(kind=dp),
DIMENSION(3) :: b_d, c2a_d, c2b_d, ca2_d, ca_d, cb2_d, &
1897 cb_d, r_d, s2a_d, s2b_d, sa_d, sb2_d, &
1898 sb_d, sqb_d, x11_d, x22_d, x33_d
1899 REAL(kind=dp),
DIMENSION(3, 3) :: p
1900 REAL(kind=dp),
DIMENSION(3, 3, 3) :: p_d
1901 REAL(kind=dp),
DIMENSION(3, 5, 5) :: d_d
1902 REAL(kind=dp),
DIMENSION(5, 5) :: d
1904 cpassert(
ASSOCIATED(ij_matrix))
1905 IF (
PRESENT(do_invert)) do_invert = .false.
1906 IF ((sepi%natorb > 1) .OR. (sepj%natorb > 1))
THEN
1914 pt5sq3 = 0.5_dp*sqrt(3.0_dp)
1919 IF (
PRESENT(debug_invert)) dbg_inv = debug_invert
1921 IF (abs(check) > 0.99999999_dp)
THEN
1922 IF (
PRESENT(do_invert))
THEN
1931 IF (check < 0.0_dp)
THEN
1934 ELSE IF (check > 0.0_dp)
THEN
1947 cpassert(.NOT. do_derivatives)
1974 IF (sepi%dorb .OR. sepj%dorb)
THEN
1978 c2a = 2.0_dp*ca2 - 1.0_dp
1979 c2b = 2.0_dp*cb2 - 1.0_dp
1982 d(1, 1) = pt5sq3*c2a*sb2
1983 d(2, 1) = 0.5_dp*c2a*s2b
1985 d(4, 1) = c2a*(cb2 + 0.5_dp*sb2)
1987 d(1, 2) = pt5sq3*ca*s2b
1990 d(4, 2) = -0.5_dp*ca*s2b
1992 d(1, 3) = cb2 - 0.5_dp*sb2
1993 d(2, 3) = -pt5sq3*s2b
1995 d(4, 3) = pt5sq3*sb2
1997 d(1, 4) = pt5sq3*sa*s2b
2000 d(4, 4) = -0.5_dp*sa*s2b
2002 d(1, 5) = pt5sq3*s2a*sb2
2003 d(2, 5) = 0.5_dp*s2a*s2b
2005 d(4, 5) = s2a*(cb2 + 0.5_dp*sb2)
2011 ij_matrix%sp(k, l) = p(k, l)
2016 ij_matrix%pp(1, k, k) = p(k, 1)*p(k, 1)
2017 ij_matrix%pp(2, k, k) = p(k, 2)*p(k, 2)
2018 ij_matrix%pp(3, k, k) = p(k, 3)*p(k, 3)
2019 ij_matrix%pp(4, k, k) = p(k, 1)*p(k, 2)
2020 ij_matrix%pp(5, k, k) = p(k, 1)*p(k, 3)
2021 ij_matrix%pp(6, k, k) = p(k, 2)*p(k, 3)
2024 ij_matrix%pp(1, k, l) = 2.0_dp*p(k, 1)*p(l, 1)
2025 ij_matrix%pp(2, k, l) = 2.0_dp*p(k, 2)*p(l, 2)
2026 ij_matrix%pp(3, k, l) = 2.0_dp*p(k, 3)*p(l, 3)
2027 ij_matrix%pp(4, k, l) = p(k, 1)*p(l, 2) + p(k, 2)*p(l, 1)
2028 ij_matrix%pp(5, k, l) = p(k, 1)*p(l, 3) + p(k, 3)*p(l, 1)
2029 ij_matrix%pp(6, k, l) = p(k, 2)*p(l, 3) + p(k, 3)*p(l, 2)
2033 IF (sepi%dorb .OR. sepj%dorb)
THEN
2037 ij_matrix%sd(k, l) = d(k, l)
2043 ij_matrix%pd(1, k, l) = d(k, 1)*p(l, 1)
2044 ij_matrix%pd(2, k, l) = d(k, 1)*p(l, 2)
2045 ij_matrix%pd(3, k, l) = d(k, 1)*p(l, 3)
2046 ij_matrix%pd(4, k, l) = d(k, 2)*p(l, 1)
2047 ij_matrix%pd(5, k, l) = d(k, 2)*p(l, 2)
2048 ij_matrix%pd(6, k, l) = d(k, 2)*p(l, 3)
2049 ij_matrix%pd(7, k, l) = d(k, 3)*p(l, 1)
2050 ij_matrix%pd(8, k, l) = d(k, 3)*p(l, 2)
2051 ij_matrix%pd(9, k, l) = d(k, 3)*p(l, 3)
2052 ij_matrix%pd(10, k, l) = d(k, 4)*p(l, 1)
2053 ij_matrix%pd(11, k, l) = d(k, 4)*p(l, 2)
2054 ij_matrix%pd(12, k, l) = d(k, 4)*p(l, 3)
2055 ij_matrix%pd(13, k, l) = d(k, 5)*p(l, 1)
2056 ij_matrix%pd(14, k, l) = d(k, 5)*p(l, 2)
2057 ij_matrix%pd(15, k, l) = d(k, 5)*p(l, 3)
2062 ij_matrix%dd(1, k, k) = d(k, 1)*d(k, 1)
2063 ij_matrix%dd(2, k, k) = d(k, 2)*d(k, 2)
2064 ij_matrix%dd(3, k, k) = d(k, 3)*d(k, 3)
2065 ij_matrix%dd(4, k, k) = d(k, 4)*d(k, 4)
2066 ij_matrix%dd(5, k, k) = d(k, 5)*d(k, 5)
2067 ij_matrix%dd(6, k, k) = d(k, 1)*d(k, 2)
2068 ij_matrix%dd(7, k, k) = d(k, 1)*d(k, 3)
2069 ij_matrix%dd(8, k, k) = d(k, 2)*d(k, 3)
2070 ij_matrix%dd(9, k, k) = d(k, 1)*d(k, 4)
2071 ij_matrix%dd(10, k, k) = d(k, 2)*d(k, 4)
2072 ij_matrix%dd(11, k, k) = d(k, 3)*d(k, 4)
2073 ij_matrix%dd(12, k, k) = d(k, 1)*d(k, 5)
2074 ij_matrix%dd(13, k, k) = d(k, 2)*d(k, 5)
2075 ij_matrix%dd(14, k, k) = d(k, 3)*d(k, 5)
2076 ij_matrix%dd(15, k, k) = d(k, 4)*d(k, 5)
2079 ij_matrix%dd(1, k, l) = 2.0_dp*d(k, 1)*d(l, 1)
2080 ij_matrix%dd(2, k, l) = 2.0_dp*d(k, 2)*d(l, 2)
2081 ij_matrix%dd(3, k, l) = 2.0_dp*d(k, 3)*d(l, 3)
2082 ij_matrix%dd(4, k, l) = 2.0_dp*d(k, 4)*d(l, 4)
2083 ij_matrix%dd(5, k, l) = 2.0_dp*d(k, 5)*d(l, 5)
2084 ij_matrix%dd(6, k, l) = d(k, 1)*d(l, 2) + d(k, 2)*d(l, 1)
2085 ij_matrix%dd(7, k, l) = d(k, 1)*d(l, 3) + d(k, 3)*d(l, 1)
2086 ij_matrix%dd(8, k, l) = d(k, 2)*d(l, 3) + d(k, 3)*d(l, 2)
2087 ij_matrix%dd(9, k, l) = d(k, 1)*d(l, 4) + d(k, 4)*d(l, 1)
2088 ij_matrix%dd(10, k, l) = d(k, 2)*d(l, 4) + d(k, 4)*d(l, 2)
2089 ij_matrix%dd(11, k, l) = d(k, 3)*d(l, 4) + d(k, 4)*d(l, 3)
2090 ij_matrix%dd(12, k, l) = d(k, 1)*d(l, 5) + d(k, 5)*d(l, 1)
2091 ij_matrix%dd(13, k, l) = d(k, 2)*d(l, 5) + d(k, 5)*d(l, 2)
2092 ij_matrix%dd(14, k, l) = d(k, 3)*d(l, 5) + d(k, 5)*d(l, 3)
2093 ij_matrix%dd(15, k, l) = d(k, 4)*d(l, 5) + d(k, 5)*d(l, 4)
2099 IF (do_derivatives)
THEN
2103 x11_d = 0.0_dp; x11_d(1) = 1.0_dp
2104 x22_d = 0.0_dp; x22_d(2) = 1.0_dp
2105 x33_d = 0.0_dp; x33_d(3) = 1.0_dp
2106 r_d = (/x11, x22, x33/)/r
2107 b_d = 2.0_dp*(x11*x11_d + x22*x22_d)
2108 sqb_d = (0.5_dp/sqb)*b_d
2110 sqb2i = 1.0_dp/sqb**2
2111 cb_d = (x33_d*r - x33*r_d)*r2i
2112 ca_d = (x11_d*sqb - x11*sqb_d)*sqb2i
2113 sa_d = (x22_d*sqb - x22*sqb_d)*sqb2i
2114 sb_d = (sqb_d*r - sqb*r_d)*r2i
2116 p_d(:, 1, 1) = ca_d*sb + ca*sb_d
2117 p_d(:, 2, 1) = ca_d*cb + ca*cb_d
2118 p_d(:, 3, 1) = -sa_d
2119 p_d(:, 1, 2) = sa_d*sb + sa*sb_d
2120 p_d(:, 2, 2) = sa_d*cb + sa*cb_d
2123 p_d(:, 2, 3) = -sb_d
2124 p_d(:, 3, 3) = 0.0_dp
2125 IF (sepi%dorb .OR. sepj%dorb)
THEN
2126 ca2_d = 2.0_dp*ca*ca_d
2127 cb2_d = 2.0_dp*cb*cb_d
2128 sb2_d = 2.0_dp*sb*sb_d
2129 c2a_d = 2.0_dp*ca2_d
2130 c2b_d = 2.0_dp*cb2_d
2131 s2a_d = 2.0_dp*(sa_d*ca + sa*ca_d)
2132 s2b_d = 2.0_dp*(sb_d*cb + sb*cb_d)
2133 d_d(:, 1, 1) = pt5sq3*(c2a_d*sb2 + c2a*sb2_d)
2134 d_d(:, 2, 1) = 0.5_dp*(c2a_d*s2b + c2a*s2b_d)
2135 d_d(:, 3, 1) = -s2a_d*sb - s2a*sb_d
2136 d_d(:, 4, 1) = c2a_d*(cb2 + 0.5_dp*sb2) + c2a*(cb2_d + 0.5_dp*sb2_d)
2137 d_d(:, 5, 1) = -s2a_d*cb - s2a*cb_d
2138 d_d(:, 1, 2) = pt5sq3*(ca_d*s2b + ca*s2b_d)
2139 d_d(:, 2, 2) = ca_d*c2b + ca*c2b_d
2140 d_d(:, 3, 2) = -sa_d*cb - sa*cb_d
2141 d_d(:, 4, 2) = -0.5_dp*(ca_d*s2b + ca*s2b_d)
2142 d_d(:, 5, 2) = sa_d*sb + sa*sb_d
2143 d_d(:, 1, 3) = cb2_d - 0.5_dp*sb2_d
2144 d_d(:, 2, 3) = -pt5sq3*s2b_d
2145 d_d(:, 3, 3) = 0.0_dp
2146 d_d(:, 4, 3) = pt5sq3*sb2_d
2147 d_d(:, 5, 3) = 0.0_dp
2148 d_d(:, 1, 4) = pt5sq3*(sa_d*s2b + sa*s2b_d)
2149 d_d(:, 2, 4) = sa_d*c2b + sa*c2b_d
2150 d_d(:, 3, 4) = ca_d*cb + ca*cb_d
2151 d_d(:, 4, 4) = -0.5_dp*(sa_d*s2b + sa*s2b_d)
2152 d_d(:, 5, 4) = -ca_d*sb - ca*sb_d
2153 d_d(:, 1, 5) = pt5sq3*(s2a_d*sb2 + s2a*sb2_d)
2154 d_d(:, 2, 5) = 0.5_dp*(s2a_d*s2b + s2a*s2b_d)
2155 d_d(:, 3, 5) = c2a_d*sb + c2a*sb_d
2156 d_d(:, 4, 5) = s2a_d*(cb2 + 0.5_dp*sb2) + s2a*(cb2_d + 0.5_dp*sb2_d)
2157 d_d(:, 5, 5) = c2a_d*cb + c2a*cb_d
2162 ij_matrix%sp_d(:, k, l) = p_d(:, k, l)
2167 ij_matrix%pp_d(:, 1, k, k) = p_d(:, k, 1)*p(k, 1) + p(k, 1)*p_d(:, k, 1)
2168 ij_matrix%pp_d(:, 2, k, k) = p_d(:, k, 2)*p(k, 2) + p(k, 2)*p_d(:, k, 2)
2169 ij_matrix%pp_d(:, 3, k, k) = p_d(:, k, 3)*p(k, 3) + p(k, 3)*p_d(:, k, 3)
2170 ij_matrix%pp_d(:, 4, k, k) = p_d(:, k, 1)*p(k, 2) + p(k, 1)*p_d(:, k, 2)
2171 ij_matrix%pp_d(:, 5, k, k) = p_d(:, k, 1)*p(k, 3) + p(k, 1)*p_d(:, k, 3)
2172 ij_matrix%pp_d(:, 6, k, k) = p_d(:, k, 2)*p(k, 3) + p(k, 2)*p_d(:, k, 3)
2175 ij_matrix%pp_d(:, 1, k, l) = 2.0_dp*(p_d(:, k, 1)*p(l, 1) + p(k, 1)*p_d(:, l, 1))
2176 ij_matrix%pp_d(:, 2, k, l) = 2.0_dp*(p_d(:, k, 2)*p(l, 2) + p(k, 2)*p_d(:, l, 2))
2177 ij_matrix%pp_d(:, 3, k, l) = 2.0_dp*(p_d(:, k, 3)*p(l, 3) + p(k, 3)*p_d(:, l, 3))
2178 ij_matrix%pp_d(:, 4, k, l) = (p_d(:, k, 1)*p(l, 2) + p(k, 1)*p_d(:, l, 2)) + &
2179 (p_d(:, k, 2)*p(l, 1) + p(k, 2)*p_d(:, l, 1))
2180 ij_matrix%pp_d(:, 5, k, l) = (p_d(:, k, 1)*p(l, 3) + p(k, 1)*p_d(:, l, 3)) + &
2181 (p_d(:, k, 3)*p(l, 1) + p(k, 3)*p_d(:, l, 1))
2182 ij_matrix%pp_d(:, 6, k, l) = (p_d(:, k, 2)*p(l, 3) + p(k, 2)*p_d(:, l, 3)) + &
2183 (p_d(:, k, 3)*p(l, 2) + p(k, 3)*p_d(:, l, 2))
2187 IF (sepi%dorb .OR. sepj%dorb)
THEN
2191 ij_matrix%sd_d(:, k, l) = d_d(:, k, l)
2197 ij_matrix%pd_d(:, 1, k, l) = (d_d(:, k, 1)*p(l, 1) + d(k, 1)*p_d(:, l, 1))
2198 ij_matrix%pd_d(:, 2, k, l) = (d_d(:, k, 1)*p(l, 2) + d(k, 1)*p_d(:, l, 2))
2199 ij_matrix%pd_d(:, 3, k, l) = (d_d(:, k, 1)*p(l, 3) + d(k, 1)*p_d(:, l, 3))
2200 ij_matrix%pd_d(:, 4, k, l) = (d_d(:, k, 2)*p(l, 1) + d(k, 2)*p_d(:, l, 1))
2201 ij_matrix%pd_d(:, 5, k, l) = (d_d(:, k, 2)*p(l, 2) + d(k, 2)*p_d(:, l, 2))
2202 ij_matrix%pd_d(:, 6, k, l) = (d_d(:, k, 2)*p(l, 3) + d(k, 2)*p_d(:, l, 3))
2203 ij_matrix%pd_d(:, 7, k, l) = (d_d(:, k, 3)*p(l, 1) + d(k, 3)*p_d(:, l, 1))
2204 ij_matrix%pd_d(:, 8, k, l) = (d_d(:, k, 3)*p(l, 2) + d(k, 3)*p_d(:, l, 2))
2205 ij_matrix%pd_d(:, 9, k, l) = (d_d(:, k, 3)*p(l, 3) + d(k, 3)*p_d(:, l, 3))
2206 ij_matrix%pd_d(:, 10, k, l) = (d_d(:, k, 4)*p(l, 1) + d(k, 4)*p_d(:, l, 1))
2207 ij_matrix%pd_d(:, 11, k, l) = (d_d(:, k, 4)*p(l, 2) + d(k, 4)*p_d(:, l, 2))
2208 ij_matrix%pd_d(:, 12, k, l) = (d_d(:, k, 4)*p(l, 3) + d(k, 4)*p_d(:, l, 3))
2209 ij_matrix%pd_d(:, 13, k, l) = (d_d(:, k, 5)*p(l, 1) + d(k, 5)*p_d(:, l, 1))
2210 ij_matrix%pd_d(:, 14, k, l) = (d_d(:, k, 5)*p(l, 2) + d(k, 5)*p_d(:, l, 2))
2211 ij_matrix%pd_d(:, 15, k, l) = (d_d(:, k, 5)*p(l, 3) + d(k, 5)*p_d(:, l, 3))
2216 ij_matrix%dd_d(:, 1, k, k) = (d_d(:, k, 1)*d(k, 1) + d(k, 1)*d_d(:, k, 1))
2217 ij_matrix%dd_d(:, 2, k, k) = (d_d(:, k, 2)*d(k, 2) + d(k, 2)*d_d(:, k, 2))
2218 ij_matrix%dd_d(:, 3, k, k) = (d_d(:, k, 3)*d(k, 3) + d(k, 3)*d_d(:, k, 3))
2219 ij_matrix%dd_d(:, 4, k, k) = (d_d(:, k, 4)*d(k, 4) + d(k, 4)*d_d(:, k, 4))
2220 ij_matrix%dd_d(:, 5, k, k) = (d_d(:, k, 5)*d(k, 5) + d(k, 5)*d_d(:, k, 5))
2221 ij_matrix%dd_d(:, 6, k, k) = (d_d(:, k, 1)*d(k, 2) + d(k, 1)*d_d(:, k, 2))
2222 ij_matrix%dd_d(:, 7, k, k) = (d_d(:, k, 1)*d(k, 3) + d(k, 1)*d_d(:, k, 3))
2223 ij_matrix%dd_d(:, 8, k, k) = (d_d(:, k, 2)*d(k, 3) + d(k, 2)*d_d(:, k, 3))
2224 ij_matrix%dd_d(:, 9, k, k) = (d_d(:, k, 1)*d(k, 4) + d(k, 1)*d_d(:, k, 4))
2225 ij_matrix%dd_d(:, 10, k, k) = (d_d(:, k, 2)*d(k, 4) + d(k, 2)*d_d(:, k, 4))
2226 ij_matrix%dd_d(:, 11, k, k) = (d_d(:, k, 3)*d(k, 4) + d(k, 3)*d_d(:, k, 4))
2227 ij_matrix%dd_d(:, 12, k, k) = (d_d(:, k, 1)*d(k, 5) + d(k, 1)*d_d(:, k, 5))
2228 ij_matrix%dd_d(:, 13, k, k) = (d_d(:, k, 2)*d(k, 5) + d(k, 2)*d_d(:, k, 5))
2229 ij_matrix%dd_d(:, 14, k, k) = (d_d(:, k, 3)*d(k, 5) + d(k, 3)*d_d(:, k, 5))
2230 ij_matrix%dd_d(:, 15, k, k) = (d_d(:, k, 4)*d(k, 5) + d(k, 4)*d_d(:, k, 5))
2233 ij_matrix%dd_d(:, 1, k, l) = 2.0_dp*(d_d(:, k, 1)*d(l, 1) + d(k, 1)*d_d(:, l, 1))
2234 ij_matrix%dd_d(:, 2, k, l) = 2.0_dp*(d_d(:, k, 2)*d(l, 2) + d(k, 2)*d_d(:, l, 2))
2235 ij_matrix%dd_d(:, 3, k, l) = 2.0_dp*(d_d(:, k, 3)*d(l, 3) + d(k, 3)*d_d(:, l, 3))
2236 ij_matrix%dd_d(:, 4, k, l) = 2.0_dp*(d_d(:, k, 4)*d(l, 4) + d(k, 4)*d_d(:, l, 4))
2237 ij_matrix%dd_d(:, 5, k, l) = 2.0_dp*(d_d(:, k, 5)*d(l, 5) + d(k, 5)*d_d(:, l, 5))
2238 ij_matrix%dd_d(:, 6, k, l) = (d_d(:, k, 1)*d(l, 2) + d(k, 1)*d_d(:, l, 2)) + &
2239 (d_d(:, k, 2)*d(l, 1) + d(k, 2)*d_d(:, l, 1))
2240 ij_matrix%dd_d(:, 7, k, l) = (d_d(:, k, 1)*d(l, 3) + d(k, 1)*d_d(:, l, 3)) + &
2241 (d_d(:, k, 3)*d(l, 1) + d(k, 3)*d_d(:, l, 1))
2242 ij_matrix%dd_d(:, 8, k, l) = (d_d(:, k, 2)*d(l, 3) + d(k, 2)*d_d(:, l, 3)) + &
2243 (d_d(:, k, 3)*d(l, 2) + d(k, 3)*d_d(:, l, 2))
2244 ij_matrix%dd_d(:, 9, k, l) = (d_d(:, k, 1)*d(l, 4) + d(k, 1)*d_d(:, l, 4)) + &
2245 (d_d(:, k, 4)*d(l, 1) + d(k, 4)*d_d(:, l, 1))
2246 ij_matrix%dd_d(:, 10, k, l) = (d_d(:, k, 2)*d(l, 4) + d(k, 2)*d_d(:, l, 4)) + &
2247 (d_d(:, k, 4)*d(l, 2) + d(k, 4)*d_d(:, l, 2))
2248 ij_matrix%dd_d(:, 11, k, l) = (d_d(:, k, 3)*d(l, 4) + d(k, 3)*d_d(:, l, 4)) + &
2249 (d_d(:, k, 4)*d(l, 3) + d(k, 4)*d_d(:, l, 3))
2250 ij_matrix%dd_d(:, 12, k, l) = (d_d(:, k, 1)*d(l, 5) + d(k, 1)*d_d(:, l, 5)) + &
2251 (d_d(:, k, 5)*d(l, 1) + d(k, 5)*d_d(:, l, 1))
2252 ij_matrix%dd_d(:, 13, k, l) = (d_d(:, k, 2)*d(l, 5) + d(k, 2)*d_d(:, l, 5)) + &
2253 (d_d(:, k, 5)*d(l, 2) + d(k, 5)*d_d(:, l, 2))
2254 ij_matrix%dd_d(:, 14, k, l) = (d_d(:, k, 3)*d(l, 5) + d(k, 3)*d_d(:, l, 5)) + &
2255 (d_d(:, k, 5)*d(l, 3) + d(k, 5)*d_d(:, l, 3))
2256 ij_matrix%dd_d(:, 15, k, l) = (d_d(:, k, 4)*d(l, 5) + d(k, 4)*d_d(:, l, 5)) + &
2257 (d_d(:, k, 5)*d(l, 4) + d(k, 5)*d_d(:, l, 4))
2262 IF (debug_this_module)
THEN
2294 invert, ii, kk, rep, logv, ij_matrix, v, lgrad, rep_d, v_d, logv_d, drij)
2295 TYPE(semi_empirical_type),
POINTER :: sepi, sepj
2296 REAL(kind=dp),
DIMENSION(3),
INTENT(IN) :: rijv
2297 TYPE(se_int_control_type),
INTENT(IN) :: se_int_control
2298 TYPE(se_taper_type),
POINTER :: se_taper
2299 LOGICAL,
INTENT(IN) :: invert
2300 INTEGER,
INTENT(IN) :: ii, kk
2301 REAL(kind=dp),
DIMENSION(491),
INTENT(IN) :: rep
2302 LOGICAL,
DIMENSION(45, 45),
INTENT(OUT) :: logv
2303 TYPE(rotmat_type),
POINTER :: ij_matrix
2304 REAL(kind=dp),
DIMENSION(45, 45),
INTENT(OUT) :: v
2305 LOGICAL,
INTENT(IN) :: lgrad
2306 REAL(kind=dp),
DIMENSION(491),
INTENT(IN), &
2308 REAL(kind=dp),
DIMENSION(3, 45, 45),
INTENT(OUT), &
2310 LOGICAL,
DIMENSION(45, 45),
INTENT(OUT),
OPTIONAL :: logv_d
2311 REAL(kind=dp),
DIMENSION(3),
INTENT(IN),
OPTIONAL :: drij
2313 INTEGER :: i, i1, ij, j1, k, k1, kl, l, l1, limkl, &
2315 REAL(kind=dp) :: wrepp, wrepp_d(3)
2318 cpassert(
PRESENT(rep_d))
2319 cpassert(
PRESENT(v_d))
2320 cpassert(
PRESENT(logv_d))
2321 cpassert(
PRESENT(drij))
2326 logv(i, k) = .false.
2348 ELSE IF (mm == 2)
THEN
2350 v(ij, 2) = v(ij, 2) + ij_matrix%sp(k, 1)*wrepp
2351 v(ij, 4) = v(ij, 4) + ij_matrix%sp(k, 2)*wrepp
2352 v(ij, 7) = v(ij, 7) + ij_matrix%sp(k, 3)*wrepp
2353 ELSE IF (mm == 3)
THEN
2356 v(ij, 3) = v(ij, 3) + ij_matrix%pp(1, k, l)*wrepp
2357 v(ij, 6) = v(ij, 6) + ij_matrix%pp(2, k, l)*wrepp
2358 v(ij, 10) = v(ij, 10) + ij_matrix%pp(3, k, l)*wrepp
2359 v(ij, 5) = v(ij, 5) + ij_matrix%pp(4, k, l)*wrepp
2360 v(ij, 8) = v(ij, 8) + ij_matrix%pp(5, k, l)*wrepp
2361 v(ij, 9) = v(ij, 9) + ij_matrix%pp(6, k, l)*wrepp
2362 ELSE IF (mm == 4)
THEN
2364 v(ij, 11) = v(ij, 11) + ij_matrix%sd(k, 1)*wrepp
2365 v(ij, 16) = v(ij, 16) + ij_matrix%sd(k, 2)*wrepp
2366 v(ij, 22) = v(ij, 22) + ij_matrix%sd(k, 3)*wrepp
2367 v(ij, 29) = v(ij, 29) + ij_matrix%sd(k, 4)*wrepp
2368 v(ij, 37) = v(ij, 37) + ij_matrix%sd(k, 5)*wrepp
2369 ELSE IF (mm == 5)
THEN
2372 v(ij, 12) = v(ij, 12) + ij_matrix%pd(1, k, l)*wrepp
2373 v(ij, 13) = v(ij, 13) + ij_matrix%pd(2, k, l)*wrepp
2374 v(ij, 14) = v(ij, 14) + ij_matrix%pd(3, k, l)*wrepp
2375 v(ij, 17) = v(ij, 17) + ij_matrix%pd(4, k, l)*wrepp
2376 v(ij, 18) = v(ij, 18) + ij_matrix%pd(5, k, l)*wrepp
2377 v(ij, 19) = v(ij, 19) + ij_matrix%pd(6, k, l)*wrepp
2378 v(ij, 23) = v(ij, 23) + ij_matrix%pd(7, k, l)*wrepp
2379 v(ij, 24) = v(ij, 24) + ij_matrix%pd(8, k, l)*wrepp
2380 v(ij, 25) = v(ij, 25) + ij_matrix%pd(9, k, l)*wrepp
2381 v(ij, 30) = v(ij, 30) + ij_matrix%pd(10, k, l)*wrepp
2382 v(ij, 31) = v(ij, 31) + ij_matrix%pd(11, k, l)*wrepp
2383 v(ij, 32) = v(ij, 32) + ij_matrix%pd(12, k, l)*wrepp
2384 v(ij, 38) = v(ij, 38) + ij_matrix%pd(13, k, l)*wrepp
2385 v(ij, 39) = v(ij, 39) + ij_matrix%pd(14, k, l)*wrepp
2386 v(ij, 40) = v(ij, 40) + ij_matrix%pd(15, k, l)*wrepp
2387 ELSE IF (mm == 6)
THEN
2390 v(ij, 15) = v(ij, 15) + ij_matrix%dd(1, k, l)*wrepp
2391 v(ij, 21) = v(ij, 21) + ij_matrix%dd(2, k, l)*wrepp
2392 v(ij, 28) = v(ij, 28) + ij_matrix%dd(3, k, l)*wrepp
2393 v(ij, 36) = v(ij, 36) + ij_matrix%dd(4, k, l)*wrepp
2394 v(ij, 45) = v(ij, 45) + ij_matrix%dd(5, k, l)*wrepp
2395 v(ij, 20) = v(ij, 20) + ij_matrix%dd(6, k, l)*wrepp
2396 v(ij, 26) = v(ij, 26) + ij_matrix%dd(7, k, l)*wrepp
2397 v(ij, 27) = v(ij, 27) + ij_matrix%dd(8, k, l)*wrepp
2398 v(ij, 33) = v(ij, 33) + ij_matrix%dd(9, k, l)*wrepp
2399 v(ij, 34) = v(ij, 34) + ij_matrix%dd(10, k, l)*wrepp
2400 v(ij, 35) = v(ij, 35) + ij_matrix%dd(11, k, l)*wrepp
2401 v(ij, 41) = v(ij, 41) + ij_matrix%dd(12, k, l)*wrepp
2402 v(ij, 42) = v(ij, 42) + ij_matrix%dd(13, k, l)*wrepp
2403 v(ij, 43) = v(ij, 43) + ij_matrix%dd(14, k, l)*wrepp
2404 v(ij, 44) = v(ij, 44) + ij_matrix%dd(15, k, l)*wrepp
2410 logv(ij, kl) = (abs(v(ij, kl)) > 0.0_dp)
2418 logv_d(i, k) = .false.
2419 v_d(1, i, k) = 0.0_dp
2420 v_d(2, i, k) = 0.0_dp
2421 v_d(3, i, k) = 0.0_dp
2436 wrepp_d = rep_d(nd)*drij
2441 v_d(1, ij, 1) = wrepp_d(1)
2442 v_d(2, ij, 1) = wrepp_d(2)
2443 v_d(3, ij, 1) = wrepp_d(3)
2444 ELSE IF (mm == 2)
THEN
2446 v_d(1, ij, 2) = v_d(1, ij, 2) + ij_matrix%sp_d(1, k, 1)*wrepp + ij_matrix%sp(k, 1)*wrepp_d(1)
2447 v_d(1, ij, 4) = v_d(1, ij, 4) + ij_matrix%sp_d(1, k, 2)*wrepp + ij_matrix%sp(k, 2)*wrepp_d(1)
2448 v_d(1, ij, 7) = v_d(1, ij, 7) + ij_matrix%sp_d(1, k, 3)*wrepp + ij_matrix%sp(k, 3)*wrepp_d(1)
2450 v_d(2, ij, 2) = v_d(2, ij, 2) + ij_matrix%sp_d(2, k, 1)*wrepp + ij_matrix%sp(k, 1)*wrepp_d(2)
2451 v_d(2, ij, 4) = v_d(2, ij, 4) + ij_matrix%sp_d(2, k, 2)*wrepp + ij_matrix%sp(k, 2)*wrepp_d(2)
2452 v_d(2, ij, 7) = v_d(2, ij, 7) + ij_matrix%sp_d(2, k, 3)*wrepp + ij_matrix%sp(k, 3)*wrepp_d(2)
2454 v_d(3, ij, 2) = v_d(3, ij, 2) + ij_matrix%sp_d(3, k, 1)*wrepp + ij_matrix%sp(k, 1)*wrepp_d(3)
2455 v_d(3, ij, 4) = v_d(3, ij, 4) + ij_matrix%sp_d(3, k, 2)*wrepp + ij_matrix%sp(k, 2)*wrepp_d(3)
2456 v_d(3, ij, 7) = v_d(3, ij, 7) + ij_matrix%sp_d(3, k, 3)*wrepp + ij_matrix%sp(k, 3)*wrepp_d(3)
2457 ELSE IF (mm == 3)
THEN
2460 v_d(1, ij, 3) = v_d(1, ij, 3) + ij_matrix%pp_d(1, 1, k, l)*wrepp + ij_matrix%pp(1, k, l)*wrepp_d(1)
2461 v_d(1, ij, 6) = v_d(1, ij, 6) + ij_matrix%pp_d(1, 2, k, l)*wrepp + ij_matrix%pp(2, k, l)*wrepp_d(1)
2462 v_d(1, ij, 10) = v_d(1, ij, 10) + ij_matrix%pp_d(1, 3, k, l)*wrepp + ij_matrix%pp(3, k, l)*wrepp_d(1)
2463 v_d(1, ij, 5) = v_d(1, ij, 5) + ij_matrix%pp_d(1, 4, k, l)*wrepp + ij_matrix%pp(4, k, l)*wrepp_d(1)
2464 v_d(1, ij, 8) = v_d(1, ij, 8) + ij_matrix%pp_d(1, 5, k, l)*wrepp + ij_matrix%pp(5, k, l)*wrepp_d(1)
2465 v_d(1, ij, 9) = v_d(1, ij, 9) + ij_matrix%pp_d(1, 6, k, l)*wrepp + ij_matrix%pp(6, k, l)*wrepp_d(1)
2467 v_d(2, ij, 3) = v_d(2, ij, 3) + ij_matrix%pp_d(2, 1, k, l)*wrepp + ij_matrix%pp(1, k, l)*wrepp_d(2)
2468 v_d(2, ij, 6) = v_d(2, ij, 6) + ij_matrix%pp_d(2, 2, k, l)*wrepp + ij_matrix%pp(2, k, l)*wrepp_d(2)
2469 v_d(2, ij, 10) = v_d(2, ij, 10) + ij_matrix%pp_d(2, 3, k, l)*wrepp + ij_matrix%pp(3, k, l)*wrepp_d(2)
2470 v_d(2, ij, 5) = v_d(2, ij, 5) + ij_matrix%pp_d(2, 4, k, l)*wrepp + ij_matrix%pp(4, k, l)*wrepp_d(2)
2471 v_d(2, ij, 8) = v_d(2, ij, 8) + ij_matrix%pp_d(2, 5, k, l)*wrepp + ij_matrix%pp(5, k, l)*wrepp_d(2)
2472 v_d(2, ij, 9) = v_d(2, ij, 9) + ij_matrix%pp_d(2, 6, k, l)*wrepp + ij_matrix%pp(6, k, l)*wrepp_d(2)
2474 v_d(3, ij, 3) = v_d(3, ij, 3) + ij_matrix%pp_d(3, 1, k, l)*wrepp + ij_matrix%pp(1, k, l)*wrepp_d(3)
2475 v_d(3, ij, 6) = v_d(3, ij, 6) + ij_matrix%pp_d(3, 2, k, l)*wrepp + ij_matrix%pp(2, k, l)*wrepp_d(3)
2476 v_d(3, ij, 10) = v_d(3, ij, 10) + ij_matrix%pp_d(3, 3, k, l)*wrepp + ij_matrix%pp(3, k, l)*wrepp_d(3)
2477 v_d(3, ij, 5) = v_d(3, ij, 5) + ij_matrix%pp_d(3, 4, k, l)*wrepp + ij_matrix%pp(4, k, l)*wrepp_d(3)
2478 v_d(3, ij, 8) = v_d(3, ij, 8) + ij_matrix%pp_d(3, 5, k, l)*wrepp + ij_matrix%pp(5, k, l)*wrepp_d(3)
2479 v_d(3, ij, 9) = v_d(3, ij, 9) + ij_matrix%pp_d(3, 6, k, l)*wrepp + ij_matrix%pp(6, k, l)*wrepp_d(3)
2480 ELSE IF (mm == 4)
THEN
2482 v_d(1, ij, 11) = v_d(1, ij, 11) + ij_matrix%sd_d(1, k, 1)*wrepp + ij_matrix%sd(k, 1)*wrepp_d(1)
2483 v_d(1, ij, 16) = v_d(1, ij, 16) + ij_matrix%sd_d(1, k, 2)*wrepp + ij_matrix%sd(k, 2)*wrepp_d(1)
2484 v_d(1, ij, 22) = v_d(1, ij, 22) + ij_matrix%sd_d(1, k, 3)*wrepp + ij_matrix%sd(k, 3)*wrepp_d(1)
2485 v_d(1, ij, 29) = v_d(1, ij, 29) + ij_matrix%sd_d(1, k, 4)*wrepp + ij_matrix%sd(k, 4)*wrepp_d(1)
2486 v_d(1, ij, 37) = v_d(1, ij, 37) + ij_matrix%sd_d(1, k, 5)*wrepp + ij_matrix%sd(k, 5)*wrepp_d(1)
2488 v_d(2, ij, 11) = v_d(2, ij, 11) + ij_matrix%sd_d(2, k, 1)*wrepp + ij_matrix%sd(k, 1)*wrepp_d(2)
2489 v_d(2, ij, 16) = v_d(2, ij, 16) + ij_matrix%sd_d(2, k, 2)*wrepp + ij_matrix%sd(k, 2)*wrepp_d(2)
2490 v_d(2, ij, 22) = v_d(2, ij, 22) + ij_matrix%sd_d(2, k, 3)*wrepp + ij_matrix%sd(k, 3)*wrepp_d(2)
2491 v_d(2, ij, 29) = v_d(2, ij, 29) + ij_matrix%sd_d(2, k, 4)*wrepp + ij_matrix%sd(k, 4)*wrepp_d(2)
2492 v_d(2, ij, 37) = v_d(2, ij, 37) + ij_matrix%sd_d(2, k, 5)*wrepp + ij_matrix%sd(k, 5)*wrepp_d(2)
2494 v_d(3, ij, 11) = v_d(3, ij, 11) + ij_matrix%sd_d(3, k, 1)*wrepp + ij_matrix%sd(k, 1)*wrepp_d(3)
2495 v_d(3, ij, 16) = v_d(3, ij, 16) + ij_matrix%sd_d(3, k, 2)*wrepp + ij_matrix%sd(k, 2)*wrepp_d(3)
2496 v_d(3, ij, 22) = v_d(3, ij, 22) + ij_matrix%sd_d(3, k, 3)*wrepp + ij_matrix%sd(k, 3)*wrepp_d(3)
2497 v_d(3, ij, 29) = v_d(3, ij, 29) + ij_matrix%sd_d(3, k, 4)*wrepp + ij_matrix%sd(k, 4)*wrepp_d(3)
2498 v_d(3, ij, 37) = v_d(3, ij, 37) + ij_matrix%sd_d(3, k, 5)*wrepp + ij_matrix%sd(k, 5)*wrepp_d(3)
2499 ELSE IF (mm == 5)
THEN
2502 v_d(1, ij, 12) = v_d(1, ij, 12) + ij_matrix%pd_d(1, 1, k, l)*wrepp + ij_matrix%pd(1, k, l)*wrepp_d(1)
2503 v_d(1, ij, 13) = v_d(1, ij, 13) + ij_matrix%pd_d(1, 2, k, l)*wrepp + ij_matrix%pd(2, k, l)*wrepp_d(1)
2504 v_d(1, ij, 14) = v_d(1, ij, 14) + ij_matrix%pd_d(1, 3, k, l)*wrepp + ij_matrix%pd(3, k, l)*wrepp_d(1)
2505 v_d(1, ij, 17) = v_d(1, ij, 17) + ij_matrix%pd_d(1, 4, k, l)*wrepp + ij_matrix%pd(4, k, l)*wrepp_d(1)
2506 v_d(1, ij, 18) = v_d(1, ij, 18) + ij_matrix%pd_d(1, 5, k, l)*wrepp + ij_matrix%pd(5, k, l)*wrepp_d(1)
2507 v_d(1, ij, 19) = v_d(1, ij, 19) + ij_matrix%pd_d(1, 6, k, l)*wrepp + ij_matrix%pd(6, k, l)*wrepp_d(1)
2508 v_d(1, ij, 23) = v_d(1, ij, 23) + ij_matrix%pd_d(1, 7, k, l)*wrepp + ij_matrix%pd(7, k, l)*wrepp_d(1)
2509 v_d(1, ij, 24) = v_d(1, ij, 24) + ij_matrix%pd_d(1, 8, k, l)*wrepp + ij_matrix%pd(8, k, l)*wrepp_d(1)
2510 v_d(1, ij, 25) = v_d(1, ij, 25) + ij_matrix%pd_d(1, 9, k, l)*wrepp + ij_matrix%pd(9, k, l)*wrepp_d(1)
2511 v_d(1, ij, 30) = v_d(1, ij, 30) + ij_matrix%pd_d(1, 10, k, l)*wrepp + ij_matrix%pd(10, k, l)*wrepp_d(1)
2512 v_d(1, ij, 31) = v_d(1, ij, 31) + ij_matrix%pd_d(1, 11, k, l)*wrepp + ij_matrix%pd(11, k, l)*wrepp_d(1)
2513 v_d(1, ij, 32) = v_d(1, ij, 32) + ij_matrix%pd_d(1, 12, k, l)*wrepp + ij_matrix%pd(12, k, l)*wrepp_d(1)
2514 v_d(1, ij, 38) = v_d(1, ij, 38) + ij_matrix%pd_d(1, 13, k, l)*wrepp + ij_matrix%pd(13, k, l)*wrepp_d(1)
2515 v_d(1, ij, 39) = v_d(1, ij, 39) + ij_matrix%pd_d(1, 14, k, l)*wrepp + ij_matrix%pd(14, k, l)*wrepp_d(1)
2516 v_d(1, ij, 40) = v_d(1, ij, 40) + ij_matrix%pd_d(1, 15, k, l)*wrepp + ij_matrix%pd(15, k, l)*wrepp_d(1)
2518 v_d(2, ij, 12) = v_d(2, ij, 12) + ij_matrix%pd_d(2, 1, k, l)*wrepp + ij_matrix%pd(1, k, l)*wrepp_d(2)
2519 v_d(2, ij, 13) = v_d(2, ij, 13) + ij_matrix%pd_d(2, 2, k, l)*wrepp + ij_matrix%pd(2, k, l)*wrepp_d(2)
2520 v_d(2, ij, 14) = v_d(2, ij, 14) + ij_matrix%pd_d(2, 3, k, l)*wrepp + ij_matrix%pd(3, k, l)*wrepp_d(2)
2521 v_d(2, ij, 17) = v_d(2, ij, 17) + ij_matrix%pd_d(2, 4, k, l)*wrepp + ij_matrix%pd(4, k, l)*wrepp_d(2)
2522 v_d(2, ij, 18) = v_d(2, ij, 18) + ij_matrix%pd_d(2, 5, k, l)*wrepp + ij_matrix%pd(5, k, l)*wrepp_d(2)
2523 v_d(2, ij, 19) = v_d(2, ij, 19) + ij_matrix%pd_d(2, 6, k, l)*wrepp + ij_matrix%pd(6, k, l)*wrepp_d(2)
2524 v_d(2, ij, 23) = v_d(2, ij, 23) + ij_matrix%pd_d(2, 7, k, l)*wrepp + ij_matrix%pd(7, k, l)*wrepp_d(2)
2525 v_d(2, ij, 24) = v_d(2, ij, 24) + ij_matrix%pd_d(2, 8, k, l)*wrepp + ij_matrix%pd(8, k, l)*wrepp_d(2)
2526 v_d(2, ij, 25) = v_d(2, ij, 25) + ij_matrix%pd_d(2, 9, k, l)*wrepp + ij_matrix%pd(9, k, l)*wrepp_d(2)
2527 v_d(2, ij, 30) = v_d(2, ij, 30) + ij_matrix%pd_d(2, 10, k, l)*wrepp + ij_matrix%pd(10, k, l)*wrepp_d(2)
2528 v_d(2, ij, 31) = v_d(2, ij, 31) + ij_matrix%pd_d(2, 11, k, l)*wrepp + ij_matrix%pd(11, k, l)*wrepp_d(2)
2529 v_d(2, ij, 32) = v_d(2, ij, 32) + ij_matrix%pd_d(2, 12, k, l)*wrepp + ij_matrix%pd(12, k, l)*wrepp_d(2)
2530 v_d(2, ij, 38) = v_d(2, ij, 38) + ij_matrix%pd_d(2, 13, k, l)*wrepp + ij_matrix%pd(13, k, l)*wrepp_d(2)
2531 v_d(2, ij, 39) = v_d(2, ij, 39) + ij_matrix%pd_d(2, 14, k, l)*wrepp + ij_matrix%pd(14, k, l)*wrepp_d(2)
2532 v_d(2, ij, 40) = v_d(2, ij, 40) + ij_matrix%pd_d(2, 15, k, l)*wrepp + ij_matrix%pd(15, k, l)*wrepp_d(2)
2534 v_d(3, ij, 12) = v_d(3, ij, 12) + ij_matrix%pd_d(3, 1, k, l)*wrepp + ij_matrix%pd(1, k, l)*wrepp_d(3)
2535 v_d(3, ij, 13) = v_d(3, ij, 13) + ij_matrix%pd_d(3, 2, k, l)*wrepp + ij_matrix%pd(2, k, l)*wrepp_d(3)
2536 v_d(3, ij, 14) = v_d(3, ij, 14) + ij_matrix%pd_d(3, 3, k, l)*wrepp + ij_matrix%pd(3, k, l)*wrepp_d(3)
2537 v_d(3, ij, 17) = v_d(3, ij, 17) + ij_matrix%pd_d(3, 4, k, l)*wrepp + ij_matrix%pd(4, k, l)*wrepp_d(3)
2538 v_d(3, ij, 18) = v_d(3, ij, 18) + ij_matrix%pd_d(3, 5, k, l)*wrepp + ij_matrix%pd(5, k, l)*wrepp_d(3)
2539 v_d(3, ij, 19) = v_d(3, ij, 19) + ij_matrix%pd_d(3, 6, k, l)*wrepp + ij_matrix%pd(6, k, l)*wrepp_d(3)
2540 v_d(3, ij, 23) = v_d(3, ij, 23) + ij_matrix%pd_d(3, 7, k, l)*wrepp + ij_matrix%pd(7, k, l)*wrepp_d(3)
2541 v_d(3, ij, 24) = v_d(3, ij, 24) + ij_matrix%pd_d(3, 8, k, l)*wrepp + ij_matrix%pd(8, k, l)*wrepp_d(3)
2542 v_d(3, ij, 25) = v_d(3, ij, 25) + ij_matrix%pd_d(3, 9, k, l)*wrepp + ij_matrix%pd(9, k, l)*wrepp_d(3)
2543 v_d(3, ij, 30) = v_d(3, ij, 30) + ij_matrix%pd_d(3, 10, k, l)*wrepp + ij_matrix%pd(10, k, l)*wrepp_d(3)
2544 v_d(3, ij, 31) = v_d(3, ij, 31) + ij_matrix%pd_d(3, 11, k, l)*wrepp + ij_matrix%pd(11, k, l)*wrepp_d(3)
2545 v_d(3, ij, 32) = v_d(3, ij, 32) + ij_matrix%pd_d(3, 12, k, l)*wrepp + ij_matrix%pd(12, k, l)*wrepp_d(3)
2546 v_d(3, ij, 38) = v_d(3, ij, 38) + ij_matrix%pd_d(3, 13, k, l)*wrepp + ij_matrix%pd(13, k, l)*wrepp_d(3)
2547 v_d(3, ij, 39) = v_d(3, ij, 39) + ij_matrix%pd_d(3, 14, k, l)*wrepp + ij_matrix%pd(14, k, l)*wrepp_d(3)
2548 v_d(3, ij, 40) = v_d(3, ij, 40) + ij_matrix%pd_d(3, 15, k, l)*wrepp + ij_matrix%pd(15, k, l)*wrepp_d(3)
2549 ELSE IF (mm == 6)
THEN
2552 v_d(1, ij, 15) = v_d(1, ij, 15) + ij_matrix%dd_d(1, 1, k, l)*wrepp + ij_matrix%dd(1, k, l)*wrepp_d(1)
2553 v_d(1, ij, 21) = v_d(1, ij, 21) + ij_matrix%dd_d(1, 2, k, l)*wrepp + ij_matrix%dd(2, k, l)*wrepp_d(1)
2554 v_d(1, ij, 28) = v_d(1, ij, 28) + ij_matrix%dd_d(1, 3, k, l)*wrepp + ij_matrix%dd(3, k, l)*wrepp_d(1)
2555 v_d(1, ij, 36) = v_d(1, ij, 36) + ij_matrix%dd_d(1, 4, k, l)*wrepp + ij_matrix%dd(4, k, l)*wrepp_d(1)
2556 v_d(1, ij, 45) = v_d(1, ij, 45) + ij_matrix%dd_d(1, 5, k, l)*wrepp + ij_matrix%dd(5, k, l)*wrepp_d(1)
2557 v_d(1, ij, 20) = v_d(1, ij, 20) + ij_matrix%dd_d(1, 6, k, l)*wrepp + ij_matrix%dd(6, k, l)*wrepp_d(1)
2558 v_d(1, ij, 26) = v_d(1, ij, 26) + ij_matrix%dd_d(1, 7, k, l)*wrepp + ij_matrix%dd(7, k, l)*wrepp_d(1)
2559 v_d(1, ij, 27) = v_d(1, ij, 27) + ij_matrix%dd_d(1, 8, k, l)*wrepp + ij_matrix%dd(8, k, l)*wrepp_d(1)
2560 v_d(1, ij, 33) = v_d(1, ij, 33) + ij_matrix%dd_d(1, 9, k, l)*wrepp + ij_matrix%dd(9, k, l)*wrepp_d(1)
2561 v_d(1, ij, 34) = v_d(1, ij, 34) + ij_matrix%dd_d(1, 10, k, l)*wrepp + ij_matrix%dd(10, k, l)*wrepp_d(1)
2562 v_d(1, ij, 35) = v_d(1, ij, 35) + ij_matrix%dd_d(1, 11, k, l)*wrepp + ij_matrix%dd(11, k, l)*wrepp_d(1)
2563 v_d(1, ij, 41) = v_d(1, ij, 41) + ij_matrix%dd_d(1, 12, k, l)*wrepp + ij_matrix%dd(12, k, l)*wrepp_d(1)
2564 v_d(1, ij, 42) = v_d(1, ij, 42) + ij_matrix%dd_d(1, 13, k, l)*wrepp + ij_matrix%dd(13, k, l)*wrepp_d(1)
2565 v_d(1, ij, 43) = v_d(1, ij, 43) + ij_matrix%dd_d(1, 14, k, l)*wrepp + ij_matrix%dd(14, k, l)*wrepp_d(1)
2566 v_d(1, ij, 44) = v_d(1, ij, 44) + ij_matrix%dd_d(1, 15, k, l)*wrepp + ij_matrix%dd(15, k, l)*wrepp_d(1)
2568 v_d(2, ij, 15) = v_d(2, ij, 15) + ij_matrix%dd_d(2, 1, k, l)*wrepp + ij_matrix%dd(1, k, l)*wrepp_d(2)
2569 v_d(2, ij, 21) = v_d(2, ij, 21) + ij_matrix%dd_d(2, 2, k, l)*wrepp + ij_matrix%dd(2, k, l)*wrepp_d(2)
2570 v_d(2, ij, 28) = v_d(2, ij, 28) + ij_matrix%dd_d(2, 3, k, l)*wrepp + ij_matrix%dd(3, k, l)*wrepp_d(2)
2571 v_d(2, ij, 36) = v_d(2, ij, 36) + ij_matrix%dd_d(2, 4, k, l)*wrepp + ij_matrix%dd(4, k, l)*wrepp_d(2)
2572 v_d(2, ij, 45) = v_d(2, ij, 45) + ij_matrix%dd_d(2, 5, k, l)*wrepp + ij_matrix%dd(5, k, l)*wrepp_d(2)
2573 v_d(2, ij, 20) = v_d(2, ij, 20) + ij_matrix%dd_d(2, 6, k, l)*wrepp + ij_matrix%dd(6, k, l)*wrepp_d(2)
2574 v_d(2, ij, 26) = v_d(2, ij, 26) + ij_matrix%dd_d(2, 7, k, l)*wrepp + ij_matrix%dd(7, k, l)*wrepp_d(2)
2575 v_d(2, ij, 27) = v_d(2, ij, 27) + ij_matrix%dd_d(2, 8, k, l)*wrepp + ij_matrix%dd(8, k, l)*wrepp_d(2)
2576 v_d(2, ij, 33) = v_d(2, ij, 33) + ij_matrix%dd_d(2, 9, k, l)*wrepp + ij_matrix%dd(9, k, l)*wrepp_d(2)
2577 v_d(2, ij, 34) = v_d(2, ij, 34) + ij_matrix%dd_d(2, 10, k, l)*wrepp + ij_matrix%dd(10, k, l)*wrepp_d(2)
2578 v_d(2, ij, 35) = v_d(2, ij, 35) + ij_matrix%dd_d(2, 11, k, l)*wrepp + ij_matrix%dd(11, k, l)*wrepp_d(2)
2579 v_d(2, ij, 41) = v_d(2, ij, 41) + ij_matrix%dd_d(2, 12, k, l)*wrepp + ij_matrix%dd(12, k, l)*wrepp_d(2)
2580 v_d(2, ij, 42) = v_d(2, ij, 42) + ij_matrix%dd_d(2, 13, k, l)*wrepp + ij_matrix%dd(13, k, l)*wrepp_d(2)
2581 v_d(2, ij, 43) = v_d(2, ij, 43) + ij_matrix%dd_d(2, 14, k, l)*wrepp + ij_matrix%dd(14, k, l)*wrepp_d(2)
2582 v_d(2, ij, 44) = v_d(2, ij, 44) + ij_matrix%dd_d(2, 15, k, l)*wrepp + ij_matrix%dd(15, k, l)*wrepp_d(2)
2584 v_d(3, ij, 15) = v_d(3, ij, 15) + ij_matrix%dd_d(3, 1, k, l)*wrepp + ij_matrix%dd(1, k, l)*wrepp_d(3)
2585 v_d(3, ij, 21) = v_d(3, ij, 21) + ij_matrix%dd_d(3, 2, k, l)*wrepp + ij_matrix%dd(2, k, l)*wrepp_d(3)
2586 v_d(3, ij, 28) = v_d(3, ij, 28) + ij_matrix%dd_d(3, 3, k, l)*wrepp + ij_matrix%dd(3, k, l)*wrepp_d(3)
2587 v_d(3, ij, 36) = v_d(3, ij, 36) + ij_matrix%dd_d(3, 4, k, l)*wrepp + ij_matrix%dd(4, k, l)*wrepp_d(3)
2588 v_d(3, ij, 45) = v_d(3, ij, 45) + ij_matrix%dd_d(3, 5, k, l)*wrepp + ij_matrix%dd(5, k, l)*wrepp_d(3)
2589 v_d(3, ij, 20) = v_d(3, ij, 20) + ij_matrix%dd_d(3, 6, k, l)*wrepp + ij_matrix%dd(6, k, l)*wrepp_d(3)
2590 v_d(3, ij, 26) = v_d(3, ij, 26) + ij_matrix%dd_d(3, 7, k, l)*wrepp + ij_matrix%dd(7, k, l)*wrepp_d(3)
2591 v_d(3, ij, 27) = v_d(3, ij, 27) + ij_matrix%dd_d(3, 8, k, l)*wrepp + ij_matrix%dd(8, k, l)*wrepp_d(3)
2592 v_d(3, ij, 33) = v_d(3, ij, 33) + ij_matrix%dd_d(3, 9, k, l)*wrepp + ij_matrix%dd(9, k, l)*wrepp_d(3)
2593 v_d(3, ij, 34) = v_d(3, ij, 34) + ij_matrix%dd_d(3, 10, k, l)*wrepp + ij_matrix%dd(10, k, l)*wrepp_d(3)
2594 v_d(3, ij, 35) = v_d(3, ij, 35) + ij_matrix%dd_d(3, 11, k, l)*wrepp + ij_matrix%dd(11, k, l)*wrepp_d(3)
2595 v_d(3, ij, 41) = v_d(3, ij, 41) + ij_matrix%dd_d(3, 12, k, l)*wrepp + ij_matrix%dd(12, k, l)*wrepp_d(3)
2596 v_d(3, ij, 42) = v_d(3, ij, 42) + ij_matrix%dd_d(3, 13, k, l)*wrepp + ij_matrix%dd(13, k, l)*wrepp_d(3)
2597 v_d(3, ij, 43) = v_d(3, ij, 43) + ij_matrix%dd_d(3, 14, k, l)*wrepp + ij_matrix%dd(14, k, l)*wrepp_d(3)
2598 v_d(3, ij, 44) = v_d(3, ij, 44) + ij_matrix%dd_d(3, 15, k, l)*wrepp + ij_matrix%dd(15, k, l)*wrepp_d(3)
2604 logv_d(ij, kl) = (any(abs(v_d(1:3, ij, kl)) > 0.0_dp))
2608 IF (debug_this_module)
THEN