19#include "./base/base_uses.f90"
26 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'kpsym'
61 SUBROUTINE group1s(iout, a1, a2, a3, nat, ty, x, b1, b2, b3, &
62 ihg, ihc, isy, li, nc, indpg, ib, ntvec, &
63 v, f0, r, tvec, origin, rx, isc, delta)
167 REAL(
dp) :: a1(3), a2(3), a3(3)
168 INTEGER :: nat, ty(nat)
169 REAL(
dp) :: x(3, nat), b1(3), b2(3), b3(3)
170 INTEGER :: ihg, ihc, isy, li, nc, indpg, ib(48), &
173 INTEGER :: f0(49, nat)
174 REAL(
dp) :: r(3, 3, 48), tvec(3, nat), origin(3), &
180 REAL(
dp) :: a(3, 3), ai(3, 3), ap(3, 3), api(3, 3)
207 CALL primlatt(a, ai, ap, api, nat, ty, x, ntvec, tvec, f0, isc, delta)
210 CALL pgl1(ap, api, ihc, nc, ib, ihg, r, delta)
216 CALL pgl1(a, ai, ihc, nc, ib, ihg, r, delta)
217 IF (ncprim > nc)
THEN
219 CALL pgl1(ap, api, ihc, nc, ib, ihg, r, delta)
224 CALL atftm1(iout, r, v, x, f0, origin, ib, ty, nat, ihg, ihc, rx, &
225 nc, indpg, ntvec, a, ai, li, isy, isc, delta)
230 WRITE (iout,
'(1X,A)') &
231 'KPSYM| THE POINT GROUP OF THE CRYSTAL CONTAINS THE INVERSION'
245 SUBROUTINE calbrec(a, ai)
255 REAL(
dp) :: a(3, 3), ai(3, 3)
257 INTEGER :: i, il, iu, j, jl, ju
260 det = a(1, 1)*a(2, 2)*a(3, 3) + a(2, 1)*a(1, 3)*a(3, 2) + &
261 a(3, 1)*a(1, 2)*a(2, 3) - a(1, 1)*a(2, 3)*a(3, 2) - &
262 a(2, 1)*a(1, 2)*a(3, 3) - a(3, 1)*a(1, 3)*a(2, 2)
274 ai(j, i) = (-1._dp)**(i + j)*det* &
275 (a(il, jl)*a(iu, ju) - a(il, ju)*a(iu, jl))
280 END SUBROUTINE calbrec
297 SUBROUTINE primlatt(a, ai, ap, api, nat, ty, x, ntvec, tvec, f0, isc, delta)
323 REAL(
dp) :: a(3, 3), ai(3, 3), ap(3, 3), api(3, 3)
324 INTEGER :: nat, ty(nat)
325 REAL(
dp) :: x(3, nat)
327 REAL(
dp) :: tvec(3, nat)
328 INTEGER :: f0(49, nat), isc(nat)
331 INTEGER :: i, il, iv, j, k2
333 REAL(
dp) :: vr(3), xb(3)
349 IF (ty(1) /= ty(k2)) cycle
351 xb(i) = x(i, k2) - x(i, 1)
354 CALL rlv3(ai, xb, vr, il, delta)
355 CALL checkrlv3(1, nat, ty, x, x, vr, f0, ai, isc, .true., oksym, delta)
362 IF (f0(49, i) > f0(1, i)) f0(49, i) = f0(1, i)
365 tvec(i, ntvec) = vr(i)
387 xb(i) = tvec(1, iv)*a(i, 1) &
388 + tvec(2, iv)*a(i, 2) &
389 + tvec(3, iv)*a(i, 3)
392 CALL rlv3(api, xb, vr, il, delta)
394 IF (abs(vr(i)) > delta)
THEN
395 il = nint(1._dp/abs(vr(i)))
402 CALL calbrec(ap, api)
411 END SUBROUTINE primlatt
424 SUBROUTINE pgl1(a, ai, ihc, nc, ib, ihg, r, delta)
461 REAL(
dp) :: a(3, 3), ai(3, 3)
462 INTEGER :: ihc, nc, ib(48), ihg
463 REAL(
dp) :: r(3, 3, 48), delta
465 INTEGER :: i, j, k, lx, n, nr
466 REAL(
dp) :: tr, vr(3), xa(3)
478 loop_rotation:
DO n = 1, nr
485 xa(i) = xa(i) + r(i, j, n)*a(j, k)
488 CALL rlv3(ai, xa, vr, lx, delta)
494 IF (tr > delta) cycle loop_rotation
503 IF (nc == 12) ihg = 6
512 IF (nc == 16) ihg = 4
529 SUBROUTINE rlv3(ai, xb, vr, il, delta)
550 REAL(
dp) :: ai(3, 3), xb(3), vr(3)
561 ts = abs(xb(1)) + abs(xb(2)) + abs(xb(3))
562 IF (ts <= delta)
RETURN
564 vr(i) = vr(i) + ai(i, 1)*xb(1) + ai(i, 2)*xb(2) + ai(i, 3)*xb(3)
565 il = il + nint(abs(vr(i)))
569 vr(i) = nint(vr(i)) - vr(i)
599 SUBROUTINE atftm1(iout, r, v, x, f0, origin, ib, ty, nat, ihg, ihc, &
600 rx, nc, indpg, ntvec, a, ai, li, isy, isc, delta)
666 REAL(
dp) :: r(3, 3, 48), v(3, 48), origin(3)
667 INTEGER :: ib(48), nat, ty(nat), f0(49, nat)
668 REAL(
dp) :: x(3, nat)
670 REAL(
dp) :: rx(3, nat)
671 INTEGER :: nc, indpg, ntvec
672 REAL(
dp) :: a(3, 3), ai(3, 3)
673 INTEGER :: li, isy, isc(nat)
676 CHARACTER(len=10),
DIMENSION(48),
PARAMETER :: rname_cubic = [
' 1 ',
' 2[ 10 0] ', &
677 ' 2[ 01 0] ',
' 2[ 00 1] ',
' 3[-1-1-1]',
' 3[ 11-1] ',
' 3[-11 1] ',
' 3[ 1-11] ', &
678 ' 3[ 11 1] ',
' 3[-11-1] ',
' 3[-1-11] ',
' 3[ 1-1-1]',
' 2[-11 0] ',
' 4[ 00 1] ', &
679 ' 4[ 00-1] ',
' 2[ 11 0] ',
' 2[ 0-11] ',
' 2[ 01 1] ',
' 4[ 10 0] ',
' 4[-10 0] ', &
680 ' 2[-10 1] ',
' 4[ 0-10] ',
' 2[ 10 1] ',
' 4[ 01 0] ',
'-1 ',
'-2[ 10 0] ', &
681 '-2[ 01 0] ',
'-2[ 00 1] ',
'-3[-1-1-1]',
'-3[ 11-1] ',
'-3[-11 1] ',
'-3[ 1-11] ', &
682 '-3[ 11 1] ',
'-3[-11-1] ',
'-3[-1-11] ',
'-3[ 1-1-1]',
'-2[-11 0] ',
'-4[ 00 1] ', &
683 '-4[ 00-1] ',
'-2[ 11 0] ',
'-2[ 0-11] ',
'-2[ 01 1] ',
'-4[ 10 0] ',
'-4[-10 0] ', &
684 '-2[-10 1] ',
'-4[ 0-10] ',
'-2[ 10 1] ',
'-4[ 01 0] ']
685 CHARACTER(len=11),
DIMENSION(24),
PARAMETER :: rname_hexai = [
' 1 ',
' 6[ 00 1] ', &
686 ' 3[ 00 1] ',
' 2[ 00 1] ',
' 3[ 00 -1] ',
' 6[ 00 -1] ',
' 2[ 01 0] ',
' 2[-11 0] ', &
687 ' 2[ 10 0] ',
' 2[ 21 0] ',
' 2[ 11 0] ',
' 2[ 12 0] ',
'-1 ',
'-6[ 00 1] ', &
688 '-3[ 00 1] ',
'-2[ 00 1] ',
'-3[ 00 -1] ',
'-6[ 00 -1] ',
'-2[ 01 0] ',
'-2[-11 0] ', &
689 '-2[ 10 0] ',
'-2[ 21 0] ',
'-2[ 11 0] ',
'-2[ 12 0] ']
690 CHARACTER(len=12),
DIMENSION(7),
PARAMETER :: icst = [
'TRICLINIC ',
'MONOCLINIC ', &
691 'ORTHORHOMBIC',
'TETRAGONAL ',
'CUBIC ',
'TRIGONAL ',
'HEXAGONAL ']
692 CHARACTER(len=3),
DIMENSION(32),
PARAMETER :: pgrd = [
'c1 ',
'ci ',
'c2 ',
'c1h',
'c2h', &
693 'c3 ',
'c3i',
'd3 ',
'c3v',
'd3 ',
'c4 ',
's4 ',
'c4h',
'd4 ',
'c4v',
'd2d',
'd4h',
'c6 ',&
694 'c3h',
'c6h',
'd6 ',
'c6v',
'd3h',
'd6h',
'd2 ',
'c2v',
'd2h',
't ',
'th ',
'o ',
'td ',&
696 CHARACTER(len=5),
DIMENSION(32),
PARAMETER :: pgrp = [
' 1',
' <1>',
' 2',
' m', &
697 ' 2/m',
' 3',
' <3>',
' 32',
' 3m',
' <3>m',
' 4',
' <4>',
' 4/m',
' 422', &
698 ' 4mm',
'<4>2m',
'4/mmm',
' 6',
' <6>',
' 6/m',
' 622',
' 6mm',
'<6>m2',
'6/mmm', &
699 ' 222',
' mm2',
' mmm',
' 23',
' m3',
' 432',
'<4>3m',
' m3m']
701 INTEGER :: i, iis(48), il, info, j, k, k2, l, n, &
703 LOGICAL :: nodupli, oksym
704 REAL(
dp) :: vc(3, 48), vr(3), vs, xb(3)
718 rx(i, k) = r(i, 1, l)*x(1, k) + r(i, 2, l)*x(2, k) + r(i, 3, l)*x(3, k)
726 CALL checkrlv3(n, nat, ty, rx, x, vr, f0, ai, isc, nodupli, oksym, delta)
727 IF (.NOT. oksym)
THEN
731 IF (f0(49, k2) < k2) cycle
732 IF (ty(1) /= ty(k2)) cycle
734 xb(i) = rx(i, 1) - x(i, k2)
737 CALL rlv3(ai, xb, vr, il, delta)
746 CALL checkrlv3(n, nat, ty, rx, x, vr, f0, ai, isc, nodupli, oksym, delta)
749 IF (.NOT. oksym)
THEN
773 IF (iis(l) == 0) cycle
776 IF (ib(i) == ni) li = i
785 vs = vs + abs(v(1, n)) + abs(v(2, n)) + abs(v(3, n))
801 WRITE (iout,
'(" ATFTM1! IHG=",A," NC=",I2)') icst(ihg), nc
803 cpabort(
'ATFTM1: NUMBER OF ROTATION NULL')
805 ELSE IF (nc == 1)
THEN
808 ELSE IF (nc == 2 .AND. ib(2) == 25)
THEN
811 ELSE IF (nc == 2 .AND. ( &
820 ELSE IF (nc == 2 .AND. ( &
828 ELSE IF (nc == 4 .AND. ( &
840 ELSE IF (nc == 4 .AND. ( &
849 ELSE IF (nc == 4 .AND. ( &
857 ELSE IF (nc == 8 .AND. ( &
858 (ib(3) == 14 .AND. ib(8) == 39) .OR. &
859 (ib(3) == 19 .AND. ib(8) == 44) .OR. &
860 (ib(3) == 22 .AND. ib(8) == 48)))
THEN
865 ELSE IF (nc == 8 .AND. ib(4) == 4 .AND. ( &
873 ELSE IF (nc == 8 .AND. ( &
881 ELSE IF (nc == 8 .AND. ( &
882 (ib(3) == 13 .AND. ib(8) == 39) .OR. &
883 (ib(3) == 17 .AND. ib(8) == 44) .OR. &
884 (ib(3) == 21 .AND. ib(8) == 48)))
THEN
889 ELSE IF (nc == 16 .AND. ( &
897 ELSE IF (nc == 4 .AND. (ib(4) == 4))
THEN
901 ELSE IF (nc == 4 .AND. ( &
908 ELSE IF (nc == 8)
THEN
911 ELSE IF (nc == 12 .AND. ( &
920 ELSE IF (nc == 24 .AND. ib(24) == 36)
THEN
924 ELSE IF (nc == 24 .AND. ib(24) == 24)
THEN
928 ELSE IF (nc == 24 .AND. ib(24) == 48)
THEN
932 ELSE IF (nc == 48)
THEN
942 ELSE IF (ihg >= 6)
THEN
945 WRITE (iout,
'(" ATFTM1! IHG=",A," NC=",I2)') icst(ihg), nc
947 cpabort(
'ATFTM1: NUMBER OF ROTATION NULL')
949 ELSE IF (nc == 1)
THEN
952 ELSE IF (nc == 2 .AND. ib(2) == 13)
THEN
955 ELSE IF (nc == 2 .AND. ( &
960 ELSE IF (nc == 2 .AND. ( &
964 ELSE IF (nc == 4 .AND. ( &
970 ELSE IF (nc == 3 .AND. ib(3) == 5)
THEN
974 ELSE IF (nc == 6 .AND. ib(6) == 17)
THEN
977 ELSE IF (nc == 6 .AND. ib(6) == 11)
THEN
980 ELSE IF (nc == 6 .AND. ib(6) == 23)
THEN
983 ELSE IF (nc == 12 .AND. ib(12) == 23)
THEN
986 ELSE IF (nc == 6 .AND. ib(6) == 6)
THEN
990 ELSE IF (nc == 6 .AND. ib(6) == 18)
THEN
993 ELSE IF (nc == 12 .AND. ib(12) == 18)
THEN
996 ELSE IF (nc == 12 .AND. ib(12) == 12)
THEN
999 ELSE IF (nc == 12 .AND. ib(2) == 2 .AND. ib(12) == 24)
THEN
1002 ELSE IF (nc == 12 .AND. ib(2) == 3 .AND. ib(12) == 24)
THEN
1005 ELSE IF (nc == 24)
THEN
1022 vc(1, n) = a(1, 1)*v(1, n) + a(1, 2)*v(2, n) + a(1, 3)*v(3, n)
1023 vc(2, n) = a(2, 1)*v(1, n) + a(2, 2)*v(2, n) + a(2, 3)*v(3, n)
1024 vc(3, n) = a(3, 1)*v(1, n) + a(3, 2)*v(2, n) + a(3, 3)*v(3, n)
1026 CALL symmorphic(nc, ib, r, vc, ai, info, origin, delta)
1028 CALL rlv3(ai, origin, xb, il, delta)
1032 IF (-xb(i) >= 0._dp)
THEN
1035 origin(i) = 1._dp - xb(i)
1039 xb(i) = a(i, 1)*origin(1) + a(i, 2)*origin(2) + a(i, 3)*origin(3)
1042 ELSE IF (info == 0)
THEN
1060 IF ((ihg == 7 .AND. nc == 24) .OR. &
1061 (ihg == 5 .AND. nc == 48))
THEN
1063 WRITE (iout,
'(A,A,A)') &
1064 ' KPSYM| THE POINT GROUP OF THE CRYSTAL IS THE FULL ', &
1070 WRITE (iout,
'(A,A,A,I2,A)') &
1071 ' KPSYM| THE CRYSTAL SYSTEM IS ', &
1073 ' WITH ', nc,
' OPERATIONS:'
1077 WRITE (iout,
'( 5(5(A13),/))') (rname_hexai(ib(i)), i=1, nc)
1081 WRITE (iout,
'(10(5(A13),/))') (rname_cubic(ib(i)), i=1, nc)
1088 WRITE (iout,
'(A)') &
1089 ' KPSYM| THE SPACE GROUP OF THE CRYSTAL IS SYMMORPHIC'
1091 ELSE IF (isy == -1)
THEN
1093 WRITE (iout,
'(A)') &
1094 ' KPSYM| THE SPACE GROUP OF THE CRYSTAL IS SYMMORPHIC'
1097 WRITE (iout,
'(A,A,/,T3,3F10.6,3X,3F10.6)') &
1098 ' KPSYM| THE STANDARD ORIGIN OF COORDINATES IS: ', &
1099 '[CARTESIAN] [CRYSTAL]', xb, origin
1101 ELSE IF (isy == 0)
THEN
1103 WRITE (iout,
'(A,/,3X,A,F15.6,A)') &
1104 ' KPSYM| THE SPACE GROUP IS NON-SYMMORPHIC,', &
1105 ' (SUM OF TRANSLATION VECTORS=', vs,
')'
1107 ELSE IF (isy == -2)
THEN
1109 WRITE (iout,
'(A,A)') &
1110 ' KPSYM| CANNOT DETERMINE IF THE SPACE GROUP IS', &
1111 ' SYMMORPHIC OR NOT'
1114 WRITE (iout,
'(A,/,A,/,3X,A,F15.6,A)') &
1115 ' KPSYM| THE SPACE GROUP IS NON-SYMMORPHIC,', &
1116 ' KPSYM| OR ELSE A NON STANDARD ORIGIN OF COORDINATES WAS USED.', &
1117 ' KPSYM| (SUM OF TRANSLATION VECTORS=', vs,
')'
1121 CALL xstring(pgrp(indpg), i, j)
1122 CALL xstring(pgrd(indpg), k, l)
1124 WRITE (iout,
'(A,A,"(",A,")",T56,"[INDEX=",I2,"]")') &
1125 ' KPSYM| THE POINT GROUP OF THE CRYSTAL IS ', pgrp(indpg) (i:j), &
1126 pgrd(indpg) (k:l), indpg
1129 CALL xstring(pgrp(-indpg), i, j)
1130 CALL xstring(pgrd(-indpg), k, l)
1132 WRITE (iout,
'(A,I2,A,A,"(",A,")",T56,"[INDEX=",I2,"]")') &
1133 ' KPSYM| POINT GROUP: GROUP ORDER=', nc, &
1134 ' SUBGROUP OF ', pgrp(-indpg) (i:j), &
1135 pgrd(-indpg) (k:l), -indpg
1138 IF (ntvec == 1)
THEN
1140 WRITE (iout,
'(A,T60,I6)') &
1141 ' KPSYM| NUMBER OF PRIMITIVE CELL:', ntvec
1145 WRITE (iout,
'(A,T60,I6)') &
1146 ' KPSYM| NUMBER OF PRIMITIVE CELLS:', ntvec
1151 END SUBROUTINE atftm1
1168 SUBROUTINE checkrlv3(n, nat, ty, rx, x, vr, f0, ai, isc, &
1169 nodupli, oksym, delta)
1197 INTEGER :: n, nat, ty(nat)
1198 REAL(
dp) :: rx(3, nat), x(3, nat), vr(3)
1199 INTEGER :: f0(49, nat)
1200 REAL(
dp) :: ai(3, 3)
1202 LOGICAL :: nodupli, oksym
1205 INTEGER :: ia, ib, il
1206 REAL(
dp) :: tol, vt(3), xb(3)
1211 tol = delta + 32.0_dp*epsilon(1.0_dp)*max(1.0_dp, &
1212 maxval(sum(abs(ai), dim=2))*max(maxval(abs(rx)), maxval(abs(x))))
1218 atom:
DO ia = 1, nat
1220 IF (ty(ia) == ty(ib) .AND. isc(ib) == 0)
THEN
1221 xb(1) = rx(1, ia) - x(1, ib)
1222 xb(2) = rx(2, ia) - x(2, ib)
1223 xb(3) = rx(3, ia) - x(3, ib)
1224 CALL rlv3(ai, xb, vt, il, delta)
1226 oksym = all(abs((vr - vt) - anint(vr - vt)) <= tol)
1228 IF (nodupli) isc(ib) = 1
1239 END SUBROUTINE checkrlv3
1252 SUBROUTINE symmorphic(nc, ib, r, v, ai, info, origin, delta)
1277 INTEGER :: nc, ib(nc)
1278 REAL(
dp) :: r(3, 3, 48), v(3, nc), ai(3, 3)
1280 REAL(
dp) :: origin(3), delta
1282 INTEGER :: i, i1, ierror, igood(3), il, imissing2, &
1283 imissing3, iok(3), ionly, ir, j, j1
1284 REAL(
dp) ::
diag, dif, r2(2, 2), r3(3, 3), vr(3), &
1298 dif = v(1, ir)*v(1, ir) + v(2, ir)*v(2, ir) + v(3, ir)*v(3, ir)
1299 IF (dif > delta*delta)
THEN
1306 r3(i, j) = -r(i, j, ib(ir))
1308 r3(i, i) = 1 + r3(i, i)
1311 IF (ierror == 0)
THEN
1314 vr(i) = r3(i, 1)*v(1, ir) &
1315 + r3(i, 2)*v(2, ir) &
1325 IF (i /= ierror)
THEN
1329 IF (j /= ierror)
THEN
1331 r2(i1, j1) = -r(i, j, ib(ir))
1334 r2(i1, i1) = 1 + r2(i1, i1)
1338 IF (ierror == 0)
THEN
1343 IF (igood(i) == 1)
THEN
1348 IF (igood(j) == 1)
THEN
1350 vr(i) = vr(i) + r2(i1, j1)*(v(j, ir) + &
1351 origin(imissing3)*r(j, imissing3, ib(ir)))
1362 IF (i /= imissing3)
THEN
1364 IF (i1 == ierror)
THEN
1372 diag = (1 - r(ionly, ionly, ib(ir)))
1373 IF (abs(
diag) > delta)
THEN
1374 vr(ionly) = 1._dp/
diag*(v(ionly, ir) + &
1375 origin(imissing3)*r(ionly, imissing3, ib(ir)) + &
1376 origin(imissing2)*r(ionly, imissing2, ib(ir)))
1378 vr(ionly) = origin(ionly)
1381 vr(imissing3) = origin(imissing3)
1382 vr(imissing2) = origin(imissing2)
1390 IF (iok(i) == 1)
THEN
1391 dif = dif + abs(origin(i) - vr(i))
1394 IF (dif > delta)
THEN
1400 IF (iok(i) /= 1 .AND. igood(i) == 1)
THEN
1409 IF (iok(1) == 0 .AND. iok(2) == 0 .AND. iok(3) == 0)
THEN
1419 vr(i) = r(i, 1, ib(ir))*origin(1) &
1420 + r(i, 2, ib(ir))*origin(2) &
1421 + r(i, 3, ib(ir))*origin(3)
1422 vr(i) = (origin(i) - vr(i)) - v(i, ir)
1424 CALL rlv3(ai, vr, xb, il, delta)
1425 dif = abs(xb(1)) + abs(xb(2)) + abs(xb(3))
1426 IF (dif > delta)
THEN
1434 END SUBROUTINE symmorphic
1441 SUBROUTINE rot1(ihc, r)
1466 REAL(
dp) :: r(3, 3, 48)
1468 INTEGER :: i, j, k, n, nv
1483 s = 0.5_dp*sqrt(3.0_dp)
1494 r(3, 3, n + 18) = 1._dp
1495 r(3, 3, n + 6) = -1._dp
1496 r(3, 3, n + 12) = -1._dp
1504 r(i, j, 6) = r(j, i, 2)
1506 r(i, j, 3) = r(i, j, 3) + r(i, k, 2)*r(k, j, 2)
1507 r(i, j, 8) = r(i, j, 8) + r(i, k, 2)*r(k, j, 7)
1508 r(i, j, 12) = r(i, j, 12) + r(i, k, 7)*r(k, j, 2)
1514 r(i, j, 5) = r(j, i, 3)
1516 r(i, j, 4) = r(i, j, 4) + r(i, k, 2)*r(k, j, 3)
1517 r(i, j, 9) = r(i, j, 9) + r(i, k, 2)*r(k, j, 8)
1518 r(i, j, 10) = r(i, j, 10) + r(i, k, 12)*r(k, j, 3)
1519 r(i, j, 11) = r(i, j, 11) + r(i, k, 12)*r(k, j, 2)
1527 r(i, j, nv) = -r(i, j, n)
1539 r(2, 3, 19) = -1._dp
1544 r(i, j, 20) = r(j, i, 19)
1545 r(i, j, 5) = r(j, i, 9)
1547 r(i, j, 2) = r(i, j, 2) + r(i, k, 19)*r(k, j, 19)
1548 r(i, j, 16) = r(i, j, 16) + r(i, k, 9)*r(k, j, 19)
1549 r(i, j, 23) = r(i, j, 23) + r(i, k, 19)*r(k, j, 9)
1556 r(i, j, 6) = r(i, j, 6) + r(i, k, 2)*r(k, j, 5)
1557 r(i, j, 7) = r(i, j, 7) + r(i, k, 16)*r(k, j, 23)
1558 r(i, j, 8) = r(i, j, 8) + r(i, k, 5)*r(k, j, 2)
1559 r(i, j, 10) = r(i, j, 10) + r(i, k, 2)*r(k, j, 9)
1560 r(i, j, 11) = r(i, j, 11) + r(i, k, 9)*r(k, j, 2)
1561 r(i, j, 12) = r(i, j, 12) + r(i, k, 23)*r(k, j, 16)
1562 r(i, j, 14) = r(i, j, 14) + r(i, k, 16)*r(k, j, 2)
1563 r(i, j, 15) = r(i, j, 15) + r(i, k, 2)*r(k, j, 16)
1564 r(i, j, 22) = r(i, j, 22) + r(i, k, 23)*r(k, j, 2)
1565 r(i, j, 24) = r(i, j, 24) + r(i, k, 2)*r(k, j, 23)
1572 r(i, j, 3) = r(i, j, 3) + r(i, k, 5)*r(k, j, 12)
1573 r(i, j, 4) = r(i, j, 4) + r(i, k, 5)*r(k, j, 10)
1574 r(i, j, 13) = r(i, j, 13) + r(i, k, 23)*r(k, j, 11)
1575 r(i, j, 17) = r(i, j, 17) + r(i, k, 16)*r(k, j, 12)
1576 r(i, j, 18) = r(i, j, 18) + r(i, k, 16)*r(k, j, 10)
1577 r(i, j, 21) = r(i, j, 21) + r(i, k, 12)*r(k, j, 15)
1583 r(1, 1, nv) = -r(1, 1, n)
1584 r(1, 2, nv) = -r(1, 2, n)
1585 r(1, 3, nv) = -r(1, 3, n)
1586 r(2, 1, nv) = -r(2, 1, n)
1587 r(2, 2, nv) = -r(2, 2, n)
1588 r(2, 3, nv) = -r(2, 3, n)
1589 r(3, 1, nv) = -r(3, 1, n)
1590 r(3, 2, nv) = -r(3, 2, n)
1591 r(3, 3, nv) = -r(3, 3, n)
Defines the basic variable types.
integer, parameter, public dp
Crystal-symmetry routines originating from the K290/ACMI code.
subroutine, public group1s(iout, a1, a2, a3, nat, ty, x, b1, b2, b3, ihg, ihc, isy, li, nc, indpg, ib, ntvec, v, f0, r, tvec, origin, rx, isc, delta)
...
Collection of simple mathematical functions and subroutines.
subroutine, public invmat(a, info)
returns inverse of matrix using the lapack routines DGETRF and DGETRI
subroutine, public diag(n, a, d, v)
Diagonalize matrix a. The eigenvalues are returned in vector d and the eigenvectors are returned in m...
Utilities for string manipulations.
elemental subroutine, public xstring(string, ia, ib)
...