fermisurfer Git
Revisión | 221c7159066123312ffdb8b3290850b620b1c180 (tree) |
---|---|
Tiempo | 2020-11-09 16:03:25 |
Autor | Mitsuaki Kawamura <kawamitsuaki@gmai...> |
Commiter | Mitsuaki Kawamura |
Backup
@@ -26,7 +26,7 @@ function test() { | ||
26 | 26 | } |
27 | 27 | function terminal(msg) { |
28 | 28 | var p = document.getElementById('log'); |
29 | - p.innerHTML += "\n" + msg; | |
29 | + p.innerHTML += msg; | |
30 | 30 | } |
31 | 31 | /**@file |
32 | 32 | @brief Mathematical operations used in various step |
@@ -253,7 +253,7 @@ function bz_lines() | ||
253 | 253 | let vert = [[0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]; |
254 | 254 | /**/ |
255 | 255 | nbzl = 0; |
256 | - | |
256 | + bzl = []; | |
257 | 257 | /**/ |
258 | 258 | for (ibr = 0; ibr < 26; ++ibr) { |
259 | 259 | for (jbr = 0; jbr < 26; ++jbr) { |
@@ -267,8 +267,12 @@ function bz_lines() | ||
267 | 267 | lvert = bragg_vert(bragg, brnrm, ibr, jbr, nbr, vert[1], vert[0]); |
268 | 268 | if (lvert == 0) continue; |
269 | 269 | /**/ |
270 | - for (i = 0; i < 2; ++i) for (j = 0; j < 3; ++j) bzl[nbzl][i][j] = vert[i][j]; | |
271 | - nbzl = nbzl + 1; | |
270 | + bzl.push([]); | |
271 | + for (i = 0; i < 2; ++i) { | |
272 | + bzl[nbzl].push([]); | |
273 | + for (j = 0; j < 3; ++j) bzl[nbzl][i].push(vert[i][j]); | |
274 | + } | |
275 | + nbzl += 1; | |
272 | 276 | |
273 | 277 | }/*for (jbr = 0; jbr < 26; ++jbr)*/ |
274 | 278 | }/*for (ibr = 0; ibr < 26; ++ibr)*/ |
@@ -901,11 +905,13 @@ function draw() | ||
901 | 905 | Modify : ::nequator, ::kveq, ::kveq_rot |
902 | 906 | */ |
903 | 907 | function equator() { |
904 | - let ib = 0, itri = 0, i = 0, j = 0, nequator0 = 0; | |
908 | + let ib = 0, itri = 0, i = 0, j = 0; | |
905 | 909 | let sw = [0,0,0]; |
906 | 910 | let a = [[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]], prod = [0.0, 0.0, 0.0]; |
907 | 911 | let kveq_0 = [[0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]; |
908 | 912 | |
913 | + kveq = []; | |
914 | + nequator = []; | |
909 | 915 | terminal(" band # of equator\n"); |
910 | 916 | for (ib = 0; ib < nb; ib++) { |
911 | 917 | kveq.push([]); |
@@ -943,7 +949,7 @@ function equator() { | ||
943 | 949 | /* |
944 | 950 | Sum node-lines in all threads |
945 | 951 | */ |
946 | - nequator.push(kveq[ib].size); | |
952 | + nequator.push(kveq[ib].length); | |
947 | 953 | terminal(" " + String(ib + 1) + " " + String(nequator[ib])+ "\n"); |
948 | 954 | }/*for (ib = 0; ib < nb; ib++)*/ |
949 | 955 | }/*function equator()*/ |
@@ -1034,7 +1040,7 @@ function triangle( | ||
1034 | 1040 | a[i][j] = (brnrm[ibr] - prod[sw[j]]) / (prod[sw[i]] - prod[sw[j]]); |
1035 | 1041 | }/*for (j = 0; j < 3; ++j)*/ |
1036 | 1042 | }/*for (i = 0; i < 3; ++i)*/ |
1037 | - i = (0.5 * ((prod[sw[2]] / brnrm[ibr]) + 1.0)); | |
1043 | + i = Math.floor(0.5 * ((prod[sw[2]] / brnrm[ibr]) + 1.0)); | |
1038 | 1044 | bshift = -2.0 *i; |
1039 | 1045 | |
1040 | 1046 | if (brnrm[ibr] + thr > prod[sw[2]]) continue; |
@@ -1354,7 +1360,7 @@ function tetrahedron( | ||
1354 | 1360 | */ |
1355 | 1361 | function fermi_patch() |
1356 | 1362 | { |
1357 | - let ntri0 = 0, ib = 0, i0 = 0, i1 = 0, j0 = 0, start = [0, 0, 0], last = [0, 0, 0]; | |
1363 | + let ib = 0, i0 = 0, i1 = 0, j0 = 0, start = [0, 0, 0], last = [0, 0, 0]; | |
1358 | 1364 | let i = 0, j = 0, i2 = 0, j1 = 0, j2 = 0, ii0 = 0, ii1 = 0, ii2 = 0; |
1359 | 1365 | let kvec1 = [[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0], |
1360 | 1366 | [0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]], |
@@ -1382,8 +1388,16 @@ function fermi_patch() | ||
1382 | 1388 | } |
1383 | 1389 | terminal(" Computing patch ...\n"); |
1384 | 1390 | terminal(" band # of patchs\n"); |
1385 | - /**/ | |
1391 | +/**/ | |
1392 | + kvp = []; | |
1393 | + matp = []; | |
1394 | + nmlp = []; | |
1395 | + ntri = []; | |
1386 | 1396 | for (ib = 0; ib < nb; ++ib) { |
1397 | + kvp.push([]); | |
1398 | + matp.push([]); | |
1399 | + nmlp.push([]); | |
1400 | + ntri.push([]); | |
1387 | 1401 | for (j0 = start[0]; j0 < last[0]; ++j0) { |
1388 | 1402 | for (j1 = start[1]; j1 < last[1]; ++j1) { |
1389 | 1403 | for (j2 = start[2]; j2 < last[2]; ++j2) { |
@@ -1467,6 +1481,8 @@ function fermi_patch() | ||
1467 | 1481 | }/*for (j0 = start[0]; j0 < ng[0]; ++j0)*/ |
1468 | 1482 | }/*for (j1 = start[1]; j1 < ng[1]; ++j1)*/ |
1469 | 1483 | }/*for (j0 = start[0]; j0 < ng[0]; ++j0)*/ |
1484 | + ntri[ib] = kvp[ib].length; | |
1485 | + terminal(" " + String(ib + 1) + " " + String(ntri[ib]) + "\n"); | |
1470 | 1486 | }/*for (ib = 0; ib < nb; ++ib)*/ |
1471 | 1487 | terminal(" ... Done\n"); |
1472 | 1488 | } /* fermi_patch */ |
@@ -1633,7 +1649,6 @@ let batch_name; | ||
1633 | 1649 | let frmsf_file_name; |
1634 | 1650 | let lbatch = 0; |
1635 | 1651 | |
1636 | -wxTextCtrl* terminal; | |
1637 | 1652 | let refresh_interpol = 0; |
1638 | 1653 | let refresh_patch = 1; |
1639 | 1654 | let refresh_color = 1; |
@@ -1651,37 +1666,20 @@ function OnInit() | ||
1651 | 1666 | { |
1652 | 1667 | let ierr; |
1653 | 1668 | |
1654 | - myf = new MyFrame(NULL, argv[1], wxDefaultPosition, wxSize(windowx, windowy)); | |
1655 | 1669 | |
1656 | 1670 | terminal("\n"); |
1657 | - terminal("##### Welocome to FermiSurfer ver. ") << | |
1658 | - wxT(VERSION) << wxT(" #####\n"); | |
1659 | - terminal("\n"); | |
1660 | - if (argc < 2) { | |
1661 | - printf("\n"); | |
1662 | - printf(" Input file is not specified !\n"); | |
1663 | - printf(" Press any key to exit.\n"); | |
1664 | - ierr = getchar(); | |
1665 | - exit(-1); | |
1666 | - } | |
1667 | - /**/ | |
1671 | + /**/ | |
1668 | 1672 | terminal(" Initialize variables ...\n"); |
1669 | 1673 | terminal("\n"); |
1670 | 1674 | /* |
1671 | 1675 | Input from BXSF or FRMSF file |
1672 | 1676 | */ |
1673 | - if (frmsf_file_name.AfterLast(wxUniChar('.')).CmpNoCase(wxT("bxsf")) == 0) { | |
1674 | - read_bxsf(); | |
1675 | - } | |
1676 | - else { | |
1677 | - color_scale = read_file(); | |
1678 | - if (color_scale == 0)color_scale = 4; | |
1679 | - } | |
1677 | + color_scale = read_file(); | |
1678 | + if (color_scale == 0)color_scale = 4; | |
1680 | 1679 | /**/ |
1681 | 1680 | interpol_energy(); |
1682 | 1681 | init_corner(); |
1683 | 1682 | bragg_vector(); |
1684 | - modify_band(); | |
1685 | 1683 | /* |
1686 | 1684 | Brillouin zone |
1687 | 1685 | */ |
@@ -1702,9 +1700,6 @@ function OnInit() | ||
1702 | 1700 | terminal(" cursorkey or w,a,s,d : Move objects\n"); |
1703 | 1701 | terminal("\n"); |
1704 | 1702 | /**/ |
1705 | - if (lbatch == 1) { | |
1706 | - batch_draw(); | |
1707 | - } | |
1708 | 1703 | return true; |
1709 | 1704 | } /* main */ |
1710 | 1705 | /** |
@@ -1905,8 +1900,10 @@ function paint() | ||
1905 | 1900 | let mat2 = 0.0; |
1906 | 1901 | let theta = 0.0, abs = 0.0, theta2 = 0.0; |
1907 | 1902 | |
1903 | + clr = []; | |
1908 | 1904 | if (color_scale == 1) { |
1909 | 1905 | for (ib = 0; ib < nb; ib++) { |
1906 | + clr.push([]); | |
1910 | 1907 | for (itri = 0; itri < ntri[ib]; ++itri) { |
1911 | 1908 | for (i = 0; i < 3; ++i) { |
1912 | 1909 | /**/ |
@@ -1914,23 +1911,19 @@ function paint() | ||
1914 | 1911 | mat2 = mat2 * 4.0; |
1915 | 1912 | /**/ |
1916 | 1913 | if (mat2 <= 1.0) { |
1917 | - for (j = 0; j < 4; ++j) clr[ib][j + 4 * i + 12 * itri] | |
1918 | - = BarColor[1][j] * mat2 + BarColor[0][j] * (1.0 - mat2); | |
1914 | + for (j = 0; j < 4; ++j) clr[ib].push(BarColor[1][j] * mat2 + BarColor[0][j] * (1.0 - mat2)); | |
1919 | 1915 | } |
1920 | 1916 | else if (mat2 <= 2.0) { |
1921 | 1917 | mat2 = mat2 - 1.0; |
1922 | - for (j = 0; j < 4; ++j) clr[ib][j + 4 * i + 12 * itri] | |
1923 | - = BarColor[2][j] * mat2 + BarColor[1][j] * (1.0 - mat2); | |
1918 | + for (j = 0; j < 4; ++j) clr[ib].push(BarColor[2][j] * mat2 + BarColor[1][j] * (1.0 - mat2)); | |
1924 | 1919 | } |
1925 | 1920 | else if (mat2 <= 3.0) { |
1926 | 1921 | mat2 = mat2 - 2.0; |
1927 | - for (j = 0; j < 4; ++j) clr[ib][j + 4 * i + 12 * itri] | |
1928 | - = BarColor[3][j] * mat2 + BarColor[2][j] * (1.0 - mat2); | |
1922 | + for (j = 0; j < 4; ++j) clr[ib].push(BarColor[3][j] * mat2 + BarColor[2][j] * (1.0 - mat2)); | |
1929 | 1923 | } |
1930 | 1924 | else { |
1931 | 1925 | mat2 = mat2 - 3.0; |
1932 | - for (j = 0; j < 4; ++j) clr[ib][j + 4 * i + 12 * itri] | |
1933 | - = BarColor[4][j] * mat2 + BarColor[3][j] * (1.0 - mat2); | |
1926 | + for (j = 0; j < 4; ++j) clr[ib].push(BarColor[4][j] * mat2 + BarColor[3][j] * (1.0 - mat2)); | |
1934 | 1927 | } |
1935 | 1928 | }/*for (i = 0; i < 3; ++i)*/ |
1936 | 1929 | }/*for (itri = 0; itri < ntri[ib]; ++itri)*/ |
@@ -1939,6 +1932,7 @@ function paint() | ||
1939 | 1932 | else if (color_scale == 2) { |
1940 | 1933 | for (j = 0; j < 4; ++j) origin[j] = 1.0 - BackGroundColor[j]; |
1941 | 1934 | for (ib = 0; ib < nb; ib++) { |
1935 | + clr.push([]); | |
1942 | 1936 | for (itri = 0; itri < ntri[ib]; ++itri) { |
1943 | 1937 | for (i = 0; i < 3; ++i) { |
1944 | 1938 | /**/ |
@@ -1953,32 +1947,32 @@ function paint() | ||
1953 | 1947 | if (-3.0 <= theta && theta < -2.0) { |
1954 | 1948 | theta2 = theta + 3.0; |
1955 | 1949 | for (j = 0; j < 4; ++j) |
1956 | - clr[ib][j + 4 * i + 12 * itri] = blue[j] * theta2 + cyan[j] * (1.0 - theta2); | |
1950 | + clr[ib].push(blue[j] * theta2 + cyan[j] * (1.0 - theta2)); | |
1957 | 1951 | } |
1958 | 1952 | else if (-2.0 <= theta && theta < -1.0) { |
1959 | 1953 | theta2 = theta + 2.0; |
1960 | 1954 | for (j = 0; j < 4; ++j) |
1961 | - clr[ib][j + 4 * i + 12 * itri] = magenta[j] * theta2 + blue[j] * (1.0 - theta2); | |
1955 | + clr[ib].push(magenta[j] * theta2 + blue[j] * (1.0 - theta2)); | |
1962 | 1956 | } |
1963 | 1957 | else if (-1.0 <= theta && theta < 0.0) { |
1964 | 1958 | theta2 = theta + 1.0; |
1965 | 1959 | for (j = 0; j < 4; ++j) |
1966 | - clr[ib][j + 4 * i + 12 * itri] = red[j] * theta2 + magenta[j] * (1.0 - theta2); | |
1960 | + clr[ib].push(red[j] * theta2 + magenta[j] * (1.0 - theta2)); | |
1967 | 1961 | } |
1968 | 1962 | else if (0.0 <= theta && theta < 1.0) { |
1969 | 1963 | theta2 = theta; |
1970 | 1964 | for (j = 0; j < 4; ++j) |
1971 | - clr[ib][j + 4 * i + 12 * itri] = yellow[j] * theta2 + red[j] * (1.0 - theta2); | |
1965 | + clr[ib].push(yellow[j] * theta2 + red[j] * (1.0 - theta2)); | |
1972 | 1966 | } |
1973 | 1967 | else if (1.0 <= theta && theta < 2.0) { |
1974 | 1968 | theta2 = theta - 1.0; |
1975 | 1969 | for (j = 0; j < 4; ++j) |
1976 | - clr[ib][j + 4 * i + 12 * itri] = green[j] * theta2 + yellow[j] * (1.0 - theta2); | |
1970 | + clr[ib].push(green[j] * theta2 + yellow[j] * (1.0 - theta2)); | |
1977 | 1971 | } |
1978 | 1972 | else { |
1979 | 1973 | theta2 = theta - 2.0; |
1980 | 1974 | for (j = 0; j < 4; ++j) |
1981 | - clr[ib][j + 4 * i + 12 * itri] = cyan[j] * theta2 + green[j] * (1.0 - theta2); | |
1975 | + clr[ib].push(cyan[j] * theta2 + green[j] * (1.0 - theta2)); | |
1982 | 1976 | } |
1983 | 1977 | clr[ib][j + 4 * i + 12 * itri] = clr[ib][j + 4 * i + 12 * itri] * abs + origin[j] * (1.0 - abs); |
1984 | 1978 | }/*for (i = 0; i < 3; ++i)*/ |
@@ -1987,6 +1981,7 @@ function paint() | ||
1987 | 1981 | }/*if (color_scale == 2)*/ |
1988 | 1982 | else if (color_scale == 4) { |
1989 | 1983 | for (ib = 0; ib < nb; ib++) { |
1984 | + clr.push([]); | |
1990 | 1985 | for (itri = 0; itri < ntri[ib]; ++itri) { |
1991 | 1986 | for (i = 0; i < 3; ++i) { |
1992 | 1987 | /**/ |
@@ -1997,23 +1992,19 @@ function paint() | ||
1997 | 1992 | mat2 = mat2 * 4.0; |
1998 | 1993 | /**/ |
1999 | 1994 | if (mat2 <= 1.0) { |
2000 | - for (j = 0; j < 4; ++j) clr[ib][j + 4 * i + 12 * itri] | |
2001 | - = BarColor[1][j] * mat2 + BarColor[0][j] * (1.0 - mat2); | |
1995 | + for (j = 0; j < 4; ++j) clr[ib].push(BarColor[1][j] * mat2 + BarColor[0][j] * (1.0 - mat2)); | |
2002 | 1996 | } |
2003 | 1997 | else if (mat2 <= 2.0) { |
2004 | 1998 | mat2 = mat2 - 1.0; |
2005 | - for (j = 0; j < 4; ++j) clr[ib][j + 4 * i + 12 * itri] | |
2006 | - = BarColor[2][j] * mat2 + BarColor[1][j] * (1.0 - mat2); | |
1999 | + for (j = 0; j < 4; ++j) clr[ib].push(BarColor[2][j] * mat2 + BarColor[1][j] * (1.0 - mat2)); | |
2007 | 2000 | } |
2008 | 2001 | else if (mat2 <= 3.0) { |
2009 | 2002 | mat2 = mat2 - 2.0; |
2010 | - for (j = 0; j < 4; ++j) clr[ib][j + 4 * i + 12 * itri] | |
2011 | - = BarColor[3][j] * mat2 + BarColor[2][j] * (1.0 - mat2); | |
2003 | + for (j = 0; j < 4; ++j) clr[ib].push(BarColor[3][j] * mat2 + BarColor[2][j] * (1.0 - mat2)); | |
2012 | 2004 | } |
2013 | 2005 | else { |
2014 | 2006 | mat2 = mat2 - 3.0; |
2015 | - for (j = 0; j < 4; ++j) clr[ib][j + 4 * i + 12 * itri] | |
2016 | - = BarColor[4][j] * mat2 + BarColor[3][j] * (1.0 - mat2); | |
2007 | + for (j = 0; j < 4; ++j) clr[ib].push(BarColor[4][j] * mat2 + BarColor[3][j] * (1.0 - mat2)); | |
2017 | 2008 | } |
2018 | 2009 | }/*for (i = 0; i < 3; ++i)*/ |
2019 | 2010 | }/*for (itri = 0; itri < ntri[ib]; ++itri)*/ |
@@ -2021,6 +2012,7 @@ function paint() | ||
2021 | 2012 | }/*if (color_scale == 4)*/ |
2022 | 2013 | else if (color_scale == 3 || color_scale == 5) { |
2023 | 2014 | for (ib = 0; ib < nb; ib++) { |
2015 | + clr.push([]); | |
2024 | 2016 | /**/ |
2025 | 2017 | if (nb == 1) mat2 = 0.5; |
2026 | 2018 | else mat2 = 1.0 / (nb - 1) * ib; |
@@ -2029,8 +2021,7 @@ function paint() | ||
2029 | 2021 | if (mat2 <= 1.0) { |
2030 | 2022 | for (itri = 0; itri < ntri[ib]; ++itri) { |
2031 | 2023 | for (i = 0; i < 3; ++i) { |
2032 | - for (j = 0; j < 4; ++j) clr[ib][j + 4 * i + 12 * itri] | |
2033 | - = BarColor[1][j] * mat2 + BarColor[0][j] * (1.0 - mat2); | |
2024 | + for (j = 0; j < 4; ++j) clr[ib].push(BarColor[1][j] * mat2 + BarColor[0][j] * (1.0 - mat2)); | |
2034 | 2025 | } |
2035 | 2026 | } |
2036 | 2027 | } |
@@ -2038,8 +2029,7 @@ function paint() | ||
2038 | 2029 | mat2 = mat2 - 1.0; |
2039 | 2030 | for (itri = 0; itri < ntri[ib]; ++itri) { |
2040 | 2031 | for (i = 0; i < 3; ++i) { |
2041 | - for (j = 0; j < 4; ++j) clr[ib][j + 4 * i + 12 * itri] | |
2042 | - = BarColor[2][j] * mat2 + BarColor[1][j] * (1.0 - mat2); | |
2032 | + for (j = 0; j < 4; ++j) clr[ib].push(BarColor[2][j] * mat2 + BarColor[1][j] * (1.0 - mat2)); | |
2043 | 2033 | } |
2044 | 2034 | } |
2045 | 2035 | } |
@@ -2047,8 +2037,7 @@ function paint() | ||
2047 | 2037 | mat2 = mat2 - 2.0; |
2048 | 2038 | for (itri = 0; itri < ntri[ib]; ++itri) { |
2049 | 2039 | for (i = 0; i < 3; ++i) { |
2050 | - for (j = 0; j < 4; ++j) clr[ib][j + 4 * i + 12 * itri] | |
2051 | - = BarColor[3][j] * mat2 + BarColor[2][j] * (1.0 - mat2); | |
2040 | + for (j = 0; j < 4; ++j) clr[ib].push(BarColor[3][j] * mat2 + BarColor[2][j] * (1.0 - mat2)); | |
2052 | 2041 | } |
2053 | 2042 | } |
2054 | 2043 | } |
@@ -2056,14 +2045,14 @@ function paint() | ||
2056 | 2045 | mat2 = mat2 - 3.0; |
2057 | 2046 | for (itri = 0; itri < ntri[ib]; ++itri) { |
2058 | 2047 | for (i = 0; i < 3; ++i) { |
2059 | - for (j = 0; j < 4; ++j) clr[ib][j + 4 * i + 12 * itri] | |
2060 | - = BarColor[4][j] * mat2 + BarColor[3][j] * (1.0 - mat2); | |
2048 | + for (j = 0; j < 4; ++j) clr[ib].push(BarColor[4][j] * mat2 + BarColor[3][j] * (1.0 - mat2)); | |
2061 | 2049 | } |
2062 | 2050 | } |
2063 | 2051 | } |
2064 | 2052 | }/*for (ib = 0; ib < nb; ib++*/ |
2065 | 2053 | if (color_scale == 3) { |
2066 | 2054 | for (ib = 0; ib < nb; ib++) { |
2055 | + clr.push([]); | |
2067 | 2056 | for (itri = 0; itri < ntri[ib]; ++itri){ |
2068 | 2057 | for (i = 0; i < 3; ++i) { |
2069 | 2058 | for (j = 0; j < 3; ++j) { |
@@ -2079,18 +2068,20 @@ function paint() | ||
2079 | 2068 | }/*if (color_scale == 5)*/ |
2080 | 2069 | else if (color_scale == 6) { |
2081 | 2070 | for (ib = 0; ib < nb; ib++) { |
2071 | + clr.push([]); | |
2082 | 2072 | for (itri = 0; itri < ntri[ib]; ++itri) { |
2083 | 2073 | for (i = 0; i < 3; ++i) { |
2084 | 2074 | /**/ |
2085 | 2075 | mat2 = (matp[ib][itri][i][0] - patch_min) / (patch_max - patch_min); |
2086 | 2076 | /**/ |
2087 | - for (j = 0; j < 4; ++j) clr[ib][j + 4 * i + 12 * itri] = wgray[j] * mat2 + bgray[j] * (1.0 - mat2); | |
2077 | + for (j = 0; j < 4; ++j) clr[ib].push(wgray[j] * mat2 + bgray[j] * (1.0 - mat2)); | |
2088 | 2078 | }/*for (i = 0; i < 3; ++i)*/ |
2089 | 2079 | }/*for (itri = 0; itri < ntri[ib]; ++itri)*/ |
2090 | 2080 | }/*for (ib = 0; ib < nb; ib++)*/ |
2091 | 2081 | }/*if (color_scale == 6)*/ |
2092 | 2082 | else if (color_scale == 7) { |
2093 | 2083 | for (ib = 0; ib < nb; ib++) { |
2084 | + clr.push([]); | |
2094 | 2085 | for (itri = 0; itri < ntri[ib]; ++itri) { |
2095 | 2086 | for (i = 0; i < 3; ++i) { |
2096 | 2087 | /**/ |
@@ -2099,7 +2090,7 @@ function paint() | ||
2099 | 2090 | mat2 = Math.sqrt(mat2); |
2100 | 2091 | mat2 = (mat2 - patch_min) / (patch_max - patch_min); |
2101 | 2092 | /**/ |
2102 | - for (j = 0; j < 4; ++j) clr[ib][j + 4 * i + 12 * itri] = wgray[j] * mat2 + bgray[j] * (1.0 - mat2); | |
2093 | + for (j = 0; j < 4; ++j) clr[ib].push(wgray[j] * mat2 + bgray[j] * (1.0 - mat2)); | |
2103 | 2094 | }/*for (i = 0; i < 3; ++i)*/ |
2104 | 2095 | }/*for (itri = 0; itri < ntri[ib]; ++itri)*/ |
2105 | 2096 | }/*for (ib = 0; ib < nb; ib++)*/ |
@@ -2276,7 +2267,9 @@ function bragg_vector() | ||
2276 | 2267 | let i0, i1, i2, i, ibr; |
2277 | 2268 | /**/ |
2278 | 2269 | ibr = 0; |
2279 | - /**/ | |
2270 | + // | |
2271 | + bragg = []; | |
2272 | + brnrm = []; | |
2280 | 2273 | for (i0 = -1; i0 <= 1; ++i0) { |
2281 | 2274 | for (i1 = -1; i1 <= 1; ++i1) { |
2282 | 2275 | for (i2 = -1; i2 <= 1; ++i2) { |
@@ -2287,18 +2280,19 @@ function bragg_vector() | ||
2287 | 2280 | /* |
2288 | 2281 | Fractional -> Cartecian |
2289 | 2282 | */ |
2283 | + bragg.push([]); | |
2290 | 2284 | for (i = 0; i < 3; ++i) |
2291 | - bragg[ibr][i] = (i0 * bvec[0][i] | |
2285 | + bragg[ibr].push((i0 * bvec[0][i] | |
2292 | 2286 | + i1 * bvec[1][i] |
2293 | - + i2 * bvec[2][i]) * 0.5; | |
2287 | + + i2 * bvec[2][i]) * 0.5); | |
2294 | 2288 | /* |
2295 | 2289 | And its norm |
2296 | 2290 | */ |
2297 | - brnrm[ibr] = bragg[ibr][0] * bragg[ibr][0] | |
2298 | - + bragg[ibr][1] * bragg[ibr][1] | |
2299 | - + bragg[ibr][2] * bragg[ibr][2]; | |
2291 | + brnrm.push(bragg[ibr][0] * bragg[ibr][0] | |
2292 | + + bragg[ibr][1] * bragg[ibr][1] | |
2293 | + + bragg[ibr][2] * bragg[ibr][2]); | |
2300 | 2294 | /**/ |
2301 | - ibr = ibr + 1; | |
2295 | + ibr += 1; | |
2302 | 2296 | }/*for (i2 = -1; i2 <= 1; ++i2)*/ |
2303 | 2297 | }/*for (i1 = -1; i1 <= 1; ++i1)*/ |
2304 | 2298 | }/*for (i0 = -1; i0 <= 1; ++i0)*/ |
@@ -2896,30 +2890,35 @@ function allocate_griddata( | ||
2896 | 2890 | secvec_fr[2] = 1.0; |
2897 | 2891 | secscale = 0.0; |
2898 | 2892 | |
2893 | + eig0 = []; | |
2894 | + eig = []; | |
2895 | + mat0 = []; | |
2896 | + mat = []; | |
2897 | + vf = []; | |
2899 | 2898 | for (ib = 0; ib < nb; ib++) { |
2900 | - eig0.psuh([]); | |
2901 | - eig.psuh([]); | |
2902 | - mat0.psuh([]); | |
2903 | - mat.psuh([]); | |
2904 | - vf.psuh([]); | |
2899 | + eig0.push([]); | |
2900 | + eig.push([]); | |
2901 | + mat0.push([]); | |
2902 | + mat.push([]); | |
2903 | + vf.push([]); | |
2905 | 2904 | for (i0 = 0; i0 < ng0[0]; i0++) { |
2906 | - eig0[ib].psuh([]); | |
2907 | - eig[ib].psuh([]); | |
2908 | - mat0[ib].psuh([]); | |
2909 | - mat[ib].psuh([]); | |
2910 | - vf[ib].psuh([]); | |
2905 | + eig0[ib].push([]); | |
2906 | + eig[ib].push([]); | |
2907 | + mat0[ib].push([]); | |
2908 | + mat[ib].push([]); | |
2909 | + vf[ib].push([]); | |
2911 | 2910 | for (i1 = 0; i1 < ng0[1]; i1++) { |
2912 | - eig0[ib][i0].psuh([]); | |
2913 | - eig[ib][i0].psuh([]); | |
2914 | - mat0[ib][i0].psuh([]); | |
2915 | - mat[ib][i0].psuh([]); | |
2916 | - vf[ib][i0].psuh([]); | |
2911 | + eig0[ib][i0].push([]); | |
2912 | + eig[ib][i0].push([]); | |
2913 | + mat0[ib][i0].push([]); | |
2914 | + mat[ib][i0].push([]); | |
2915 | + vf[ib][i0].push([]); | |
2917 | 2916 | for (i2 = 0; i2 < ng0[2]; ++i2) { |
2918 | - eig0[ib][i0][i1].psuh(0.0); | |
2919 | - eig[ib][i0][i1].psuh(0.0); | |
2920 | - mat0[ib][i0][i1].psuh([0.0, 0.0, 0.0]); | |
2921 | - mat[ib][i0][i1].psuh([0.0, 0.0, 0.0]); | |
2922 | - vf[ib][i0][i1].psuh([0.0, 0.0, 0.0]); | |
2917 | + eig0[ib][i0][i1].push(0.0); | |
2918 | + eig[ib][i0][i1].push(0.0); | |
2919 | + mat0[ib][i0][i1].push([0.0, 0.0, 0.0]); | |
2920 | + mat[ib][i0][i1].push([0.0, 0.0, 0.0]); | |
2921 | + vf[ib][i0][i1].push([0.0, 0.0, 0.0]); | |
2923 | 2922 | } |
2924 | 2923 | } |
2925 | 2924 | } |
@@ -3028,13 +3027,24 @@ function read_file() | ||
3028 | 3027 | }/*for (i1 = 0; i1 < ng0[1]; ++i1)*/ |
3029 | 3028 | }/*for (i0 = 0; i0 < ng0[0]; ++i0)*/ |
3030 | 3029 | }/*for (ib = 0; ib < nb; ++ib)*/ |
3031 | - } | |
3030 | + }//for (iaxis = 0; iaxis < 1; iaxis++) | |
3031 | + // | |
3032 | + interpol_energy(); | |
3033 | + init_corner(); | |
3034 | + bragg_vector(); | |
3035 | + // | |
3036 | + //Brillouin zone | |
3037 | + // | |
3038 | + bz_lines(); | |
3039 | + calc_2dbz(); | |
3040 | + // | |
3041 | + max_and_min_bz(); | |
3042 | + // | |
3043 | + compute_patch_segment(); | |
3032 | 3044 | }; |
3033 | 3045 | reader.onerror = function () { |
3034 | 3046 | terminal("File can not be loaded."); |
3035 | 3047 | }; |
3036 | - | |
3037 | - | |
3038 | 3048 | return 1; |
3039 | 3049 | } /* read_file */ |
3040 | 3050 | /** |
@@ -3186,7 +3196,7 @@ function calc_2dbz() { | ||
3186 | 3196 | set2daxis(secvec, axis2d); |
3187 | 3197 | |
3188 | 3198 | nbzl2d = 0; |
3189 | - | |
3199 | + vec = []; | |
3190 | 3200 | for (jbr = 0; jbr < nbragg; ++jbr) { |
3191 | 3201 | /**/ |
3192 | 3202 | for (i = 0; i < 3; ++i) vert[1][i] = 0.0; |
@@ -3208,8 +3218,9 @@ function calc_2dbz() { | ||
3208 | 3218 | /* |
3209 | 3219 | Order bz lines |
3210 | 3220 | */ |
3211 | - for (i = 0; i < 3; i++) bzl2d[0][i] = vec[0][0][i]; | |
3212 | - for (i = 0; i < 3; i++) bzl2d[1][i] = vec[0][1][i]; | |
3221 | + bzl2d = [[], []]; | |
3222 | + for (i = 0; i < 3; i++) bzl2d[0].push(vec[0][0][i]); | |
3223 | + for (i = 0; i < 3; i++) bzl2d[1].push(vec[0][1][i]); | |
3213 | 3224 | for (ibzl = 0; ibzl < nbzl2d; ibzl++) { |
3214 | 3225 | |
3215 | 3226 | thr = 0.0; |
@@ -3248,6 +3259,7 @@ function calc_2dbz() { | ||
3248 | 3259 | + (bzl2d[jbr][1] - vec[ibzl][0][1]) * (bzl2d[jbr][1] - vec[ibzl][0][1]) |
3249 | 3260 | + (bzl2d[jbr][2] - vec[ibzl][0][2]) * (bzl2d[jbr][2] - vec[ibzl][0][2]); |
3250 | 3261 | if (prod < thr) { |
3262 | + bzl2d.push([]); | |
3251 | 3263 | for (i = 0; i < 3; i++) bzl2d[jbr + 1][i] = vec[ibzl][1][i]; |
3252 | 3264 | for (j = 0; j < 2; j++) for (i = 0; i < 3; i++) vec[ibzl][j][i] = 0.0; |
3253 | 3265 | } |
@@ -3256,7 +3268,8 @@ function calc_2dbz() { | ||
3256 | 3268 | + (bzl2d[jbr][1] - vec[ibzl][1][1]) * (bzl2d[jbr][1] - vec[ibzl][1][1]) |
3257 | 3269 | + (bzl2d[jbr][2] - vec[ibzl][1][2]) * (bzl2d[jbr][2] - vec[ibzl][1][2]); |
3258 | 3270 | if (prod < thr) { |
3259 | - for (i = 0; i < 3; i++) bzl2d[jbr + 1][i] = vec[ibzl][0][i]; | |
3271 | + bzl2d.push([]); | |
3272 | + for (i = 0; i < 3; i++) bzl2d[jbr + 1].push(vec[ibzl][0][i]); | |
3260 | 3273 | for (j = 0; j < 2; j++) for (i = 0; i < 3; i++) vec[ibzl][j][i] = 0.0; |
3261 | 3274 | } |
3262 | 3275 | }/*for (ibzl = 1; ibzl < *nbzl2d; ibzl++)*/ |
@@ -3264,8 +3277,10 @@ function calc_2dbz() { | ||
3264 | 3277 | /* |
3265 | 3278 | Project into 2D plane |
3266 | 3279 | */ |
3280 | + bzl2d_proj = []; | |
3267 | 3281 | for (ibzl = 0; ibzl < nbzl2d; ibzl++) { |
3268 | - for (i = 0; i < 3; i++) bzl2d_proj[ibzl][i] = bzl2d[ibzl][i]; | |
3282 | + bzl2d_proj.push([]); | |
3283 | + for (i = 0; i < 3; i++) bzl2d_proj[ibzl].push(bzl2d[ibzl][i]); | |
3269 | 3284 | proj_2d(axis2d, bzl2d_proj[ibzl]); |
3270 | 3285 | }/*for (ibzl = 0; ibzl < *nbzl2d; ibzl++)*/ |
3271 | 3286 | }/*calc_2dbz()*/ |
@@ -3283,9 +3298,12 @@ function calc_section() { | ||
3283 | 3298 | if (fbz != 1)return; |
3284 | 3299 | |
3285 | 3300 | terminal(" band # of Fermi-line\n"); |
3301 | + kv2d = []; | |
3302 | + clr2d = []; | |
3286 | 3303 | for (ib = 0; ib < nb; ib++) { |
3287 | 3304 | |
3288 | 3305 | kv2d.push([]); |
3306 | + clr2d.push([]); | |
3289 | 3307 | |
3290 | 3308 | for (itri = 0; itri < ntri[ib]; ++itri) { |
3291 | 3309 | /**/ |