From 4842d2a60952437bf955849ae333a94015d97ec9 Mon Sep 17 00:00:00 2001 From: Emily Boudreaux Date: Fri, 30 Jan 2026 13:25:29 -0500 Subject: [PATCH] docs(html): added html docs --- docs/html/Logo.png | Bin 0 -> 87021 bytes docs/html/_logo_8png.html | 117 + docs/html/annotated.html | 123 + docs/html/annotated_dup.js | 8 + docs/html/bc_s.png | Bin 0 -> 676 bytes docs/html/bc_sd.png | Bin 0 -> 635 bytes docs/html/classes.html | 122 + docs/html/clipboard.js | 61 + docs/html/closed.png | Bin 0 -> 132 bytes docs/html/config_8h.html | 139 + docs/html/config_8h.js | 4 + docs/html/config_8h__dep__incl.map | 18 + docs/html/config_8h__dep__incl.md5 | 1 + docs/html/config_8h__dep__incl.svg | 243 ++ docs/html/config_8h__dep__incl_org.svg | 160 + docs/html/cookie.js | 58 + docs/html/curvilinear_8cpp.html | 146 + docs/html/curvilinear_8cpp.js | 5 + docs/html/curvilinear_8cpp__incl.map | 20 + docs/html/curvilinear_8cpp__incl.md5 | 1 + docs/html/curvilinear_8cpp__incl.svg | 200 ++ docs/html/curvilinear_8cpp__incl_org.svg | 174 ++ docs/html/curvilinear_8h.html | 150 + docs/html/curvilinear_8h.js | 5 + docs/html/curvilinear_8h__dep__incl.map | 5 + docs/html/curvilinear_8h__dep__incl.md5 | 1 + docs/html/curvilinear_8h__dep__incl.svg | 66 + docs/html/curvilinear_8h__dep__incl_org.svg | 40 + docs/html/curvilinear_8h__incl.map | 9 + docs/html/curvilinear_8h__incl.md5 | 1 + docs/html/curvilinear_8h__incl.svg | 102 + docs/html/curvilinear_8h__incl_org.svg | 76 + docs/html/dir_000004_000002.html | 114 + docs/html/dir_000005_000002.html | 114 + docs/html/dir_000009_000000.html | 114 + docs/html/dir_000010_000002.html | 114 + docs/html/dir_000012_000002.html | 114 + .../dir_31a6c70da1404d38d1b51e38b19548a1.html | 128 + .../dir_31a6c70da1404d38d1b51e38b19548a1.js | 4 + ...r_31a6c70da1404d38d1b51e38b19548a1_dep.map | 4 + ...r_31a6c70da1404d38d1b51e38b19548a1_dep.md5 | 1 + ...r_31a6c70da1404d38d1b51e38b19548a1_dep.svg | 55 + ...a6c70da1404d38d1b51e38b19548a1_dep_org.svg | 29 + .../dir_3f4f28e99864f6e7d54ad0c93ce0a2a5.html | 134 + .../dir_3f4f28e99864f6e7d54ad0c93ce0a2a5.js | 7 + ...r_3f4f28e99864f6e7d54ad0c93ce0a2a5_dep.map | 10 + ...r_3f4f28e99864f6e7d54ad0c93ce0a2a5_dep.md5 | 1 + ...r_3f4f28e99864f6e7d54ad0c93ce0a2a5_dep.svg | 107 + ...4f28e99864f6e7d54ad0c93ce0a2a5_dep_org.svg | 81 + .../dir_49e56c817e5e54854c35e136979f97ca.html | 123 + .../dir_49e56c817e5e54854c35e136979f97ca.js | 4 + .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 130 + .../dir_68267d1309a1af8e8297ef4c3efbcdba.js | 5 + ...r_68267d1309a1af8e8297ef4c3efbcdba_dep.map | 7 + ...r_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 | 1 + ...r_68267d1309a1af8e8297ef4c3efbcdba_dep.svg | 81 + ...267d1309a1af8e8297ef4c3efbcdba_dep_org.svg | 55 + .../dir_82887d4f338e92537fa9d809bec8c614.html | 128 + .../dir_82887d4f338e92537fa9d809bec8c614.js | 4 + ...r_82887d4f338e92537fa9d809bec8c614_dep.map | 7 + ...r_82887d4f338e92537fa9d809bec8c614_dep.md5 | 1 + ...r_82887d4f338e92537fa9d809bec8c614_dep.svg | 77 + ...887d4f338e92537fa9d809bec8c614_dep_org.svg | 51 + .../dir_87d18a4dc5174905bfd7d2dc734defe6.html | 128 + .../dir_87d18a4dc5174905bfd7d2dc734defe6.js | 4 + ...r_87d18a4dc5174905bfd7d2dc734defe6_dep.map | 7 + ...r_87d18a4dc5174905bfd7d2dc734defe6_dep.md5 | 1 + ...r_87d18a4dc5174905bfd7d2dc734defe6_dep.svg | 77 + ...d18a4dc5174905bfd7d2dc734defe6_dep_org.svg | 51 + .../dir_936721fd6a792737eaef7358bcd49428.html | 132 + .../dir_936721fd6a792737eaef7358bcd49428.js | 6 + ...r_936721fd6a792737eaef7358bcd49428_dep.map | 7 + ...r_936721fd6a792737eaef7358bcd49428_dep.md5 | 1 + ...r_936721fd6a792737eaef7358bcd49428_dep.svg | 77 + ...6721fd6a792737eaef7358bcd49428_dep_org.svg | 51 + .../dir_9d5018b9ddb63a582aa4c6b91bec2f8c.html | 128 + .../dir_9d5018b9ddb63a582aa4c6b91bec2f8c.js | 4 + ...r_9d5018b9ddb63a582aa4c6b91bec2f8c_dep.map | 4 + ...r_9d5018b9ddb63a582aa4c6b91bec2f8c_dep.md5 | 1 + ...r_9d5018b9ddb63a582aa4c6b91bec2f8c_dep.svg | 55 + ...5018b9ddb63a582aa4c6b91bec2f8c_dep_org.svg | 29 + .../dir_9da86e8abab39b749c6020360d8e4403.html | 132 + .../dir_9da86e8abab39b749c6020360d8e4403.js | 6 + ...r_9da86e8abab39b749c6020360d8e4403_dep.map | 7 + ...r_9da86e8abab39b749c6020360d8e4403_dep.md5 | 1 + ...r_9da86e8abab39b749c6020360d8e4403_dep.svg | 77 + ...a86e8abab39b749c6020360d8e4403_dep_org.svg | 51 + .../dir_b0856f6b0d80ccb263b2f415c91f9e17.html | 128 + .../dir_b0856f6b0d80ccb263b2f415c91f9e17.js | 4 + ...r_b0856f6b0d80ccb263b2f415c91f9e17_dep.map | 5 + ...r_b0856f6b0d80ccb263b2f415c91f9e17_dep.md5 | 1 + ...r_b0856f6b0d80ccb263b2f415c91f9e17_dep.svg | 67 + ...856f6b0d80ccb263b2f415c91f9e17_dep_org.svg | 41 + .../dir_c34d5e8363cf0aa3fabc4f3fad3412a4.html | 128 + .../dir_c34d5e8363cf0aa3fabc4f3fad3412a4.js | 4 + ...r_c34d5e8363cf0aa3fabc4f3fad3412a4_dep.map | 4 + ...r_c34d5e8363cf0aa3fabc4f3fad3412a4_dep.md5 | 1 + ...r_c34d5e8363cf0aa3fabc4f3fad3412a4_dep.svg | 55 + ...4d5e8363cf0aa3fabc4f3fad3412a4_dep_org.svg | 29 + .../dir_c85d3e3c5052e9ad9ce18c6863244a25.html | 132 + .../dir_c85d3e3c5052e9ad9ce18c6863244a25.js | 6 + ...r_c85d3e3c5052e9ad9ce18c6863244a25_dep.map | 14 + ...r_c85d3e3c5052e9ad9ce18c6863244a25_dep.md5 | 1 + ...r_c85d3e3c5052e9ad9ce18c6863244a25_dep.svg | 133 + ...5d3e3c5052e9ad9ce18c6863244a25_dep_org.svg | 107 + .../dir_dc36fd7496f87f6989d6d6a9445d600c.html | 128 + .../dir_dc36fd7496f87f6989d6d6a9445d600c.js | 4 + ...r_dc36fd7496f87f6989d6d6a9445d600c_dep.map | 4 + ...r_dc36fd7496f87f6989d6d6a9445d600c_dep.md5 | 1 + ...r_dc36fd7496f87f6989d6d6a9445d600c_dep.svg | 55 + ...36fd7496f87f6989d6d6a9445d600c_dep_org.svg | 29 + docs/html/doc.svg | 12 + docs/html/docd.svg | 12 + docs/html/doxygen-awesome-sidebar-only.css | 116 + docs/html/doxygen-awesome.css | 2681 +++++++++++++++++ docs/html/doxygen.css | 1849 ++++++++++++ docs/html/doxygen.svg | 28 + docs/html/doxygen_crawl.html | 97 + docs/html/dynsections.js | 198 ++ docs/html/files.html | 145 + docs/html/files_dup.js | 5 + docs/html/folderclosed.svg | 11 + docs/html/folderclosedd.svg | 11 + docs/html/folderopen.svg | 17 + docs/html/folderopend.svg | 12 + docs/html/functions.html | 124 + docs/html/functions_vars.html | 124 + docs/html/graph_legend.html | 176 ++ docs/html/graph_legend.md5 | 1 + docs/html/graph_legend.svg | 167 + docs/html/index.html | 221 ++ docs/html/jquery.js | 204 ++ docs/html/mainpage_8md.html | 117 + docs/html/mapping_8cpp.html | 151 + docs/html/mapping_8cpp.js | 7 + docs/html/mapping_8cpp__incl.map | 15 + docs/html/mapping_8cpp__incl.md5 | 1 + docs/html/mapping_8cpp__incl.svg | 155 + docs/html/mapping_8cpp__incl_org.svg | 129 + docs/html/mapping_8h.html | 156 + docs/html/mapping_8h.js | 7 + docs/html/mapping_8h__dep__incl.map | 7 + docs/html/mapping_8h__dep__incl.md5 | 1 + docs/html/mapping_8h__dep__incl.svg | 84 + docs/html/mapping_8h__dep__incl_org.svg | 58 + docs/html/mapping_8h__incl.map | 9 + docs/html/mapping_8h__incl.md5 | 1 + docs/html/mapping_8h__incl.svg | 102 + docs/html/mapping_8h__incl_org.svg | 76 + docs/html/menu.js | 134 + docs/html/menudata.js | 40 + docs/html/mesh_8cpp.html | 154 + docs/html/mesh_8cpp.js | 7 + docs/html/mesh_8cpp__incl.map | 18 + docs/html/mesh_8cpp__incl.md5 | 1 + docs/html/mesh_8cpp__incl.svg | 182 ++ docs/html/mesh_8cpp__incl_org.svg | 156 + docs/html/mesh_8h.html | 165 + docs/html/mesh_8h.js | 12 + docs/html/mesh_8h__dep__incl.map | 5 + docs/html/mesh_8h__dep__incl.md5 | 1 + docs/html/mesh_8h__dep__incl.svg | 66 + docs/html/mesh_8h__dep__incl_org.svg | 40 + docs/html/mesh_8h__incl.map | 7 + docs/html/mesh_8h__incl.md5 | 1 + docs/html/mesh_8h__incl.svg | 84 + docs/html/mesh_8h__incl_org.svg | 58 + docs/html/mesh__utils_8cpp.html | 145 + docs/html/mesh__utils_8cpp.js | 5 + docs/html/mesh__utils_8cpp__incl.map | 10 + docs/html/mesh__utils_8cpp__incl.md5 | 1 + docs/html/mesh__utils_8cpp__incl.svg | 111 + docs/html/mesh__utils_8cpp__incl_org.svg | 85 + docs/html/mesh__utils_8h.html | 148 + docs/html/mesh__utils_8h.js | 5 + docs/html/mesh__utils_8h__dep__incl.map | 5 + docs/html/mesh__utils_8h__dep__incl.md5 | 1 + docs/html/mesh__utils_8h__dep__incl.svg | 67 + docs/html/mesh__utils_8h__dep__incl_org.svg | 41 + docs/html/mesh__utils_8h__incl.map | 5 + docs/html/mesh__utils_8h__incl.md5 | 1 + docs/html/mesh__utils_8h__incl.svg | 66 + docs/html/mesh__utils_8h__incl_org.svg | 40 + docs/html/minus.svg | 8 + docs/html/minusd.svg | 8 + docs/html/namespacemembers.html | 130 + docs/html/namespacemembers_enum.html | 116 + docs/html/namespacemembers_func.html | 129 + docs/html/namespaces.html | 125 + docs/html/namespaces_dup.js | 4 + docs/html/namespacestroid.html | 131 + docs/html/namespacestroid.js | 29 + docs/html/namespacestroid_1_1_i_o.html | 312 ++ docs/html/namespacestroid_1_1config.html | 126 + docs/html/namespacestroid_1_1config.js | 4 + docs/html/namespacestroid_1_1topology.html | 385 +++ docs/html/namespacestroid_1_1utils.html | 180 ++ docs/html/nav_f.png | Bin 0 -> 153 bytes docs/html/nav_fd.png | Bin 0 -> 169 bytes docs/html/nav_g.png | Bin 0 -> 95 bytes docs/html/nav_h.png | Bin 0 -> 98 bytes docs/html/nav_hd.png | Bin 0 -> 114 bytes docs/html/navtree.css | 149 + docs/html/navtree.js | 483 +++ docs/html/navtreedata.js | 65 + docs/html/navtreeindex0.js | 90 + docs/html/open.png | Bin 0 -> 123 bytes docs/html/plus.svg | 9 + docs/html/plusd.svg | 9 + docs/html/resize.js | 147 + docs/html/search/all_0.js | 8 + docs/html/search/all_1.js | 8 + docs/html/search/all_2.js | 9 + docs/html/search/all_3.js | 5 + docs/html/search/all_4.js | 8 + docs/html/search/all_5.js | 4 + docs/html/search/all_6.js | 6 + docs/html/search/all_7.js | 4 + docs/html/search/all_8.js | 17 + docs/html/search/all_9.js | 4 + docs/html/search/all_a.js | 4 + docs/html/search/all_b.js | 5 + docs/html/search/all_c.js | 9 + docs/html/search/all_d.js | 12 + docs/html/search/all_e.js | 7 + docs/html/search/all_f.js | 6 + docs/html/search/classes_0.js | 4 + docs/html/search/close.svg | 18 + docs/html/search/enums_0.js | 4 + docs/html/search/enumvalues_0.js | 4 + docs/html/search/enumvalues_1.js | 4 + docs/html/search/enumvalues_2.js | 4 + docs/html/search/files_0.js | 6 + docs/html/search/files_1.js | 4 + docs/html/search/files_2.js | 10 + docs/html/search/files_3.js | 5 + docs/html/search/functions_0.js | 6 + docs/html/search/functions_1.js | 4 + docs/html/search/functions_2.js | 4 + docs/html/search/functions_3.js | 5 + docs/html/search/functions_4.js | 5 + docs/html/search/functions_5.js | 5 + docs/html/search/functions_6.js | 4 + docs/html/search/functions_7.js | 5 + docs/html/search/mag.svg | 24 + docs/html/search/mag_d.svg | 24 + docs/html/search/mag_sel.svg | 31 + docs/html/search/mag_seld.svg | 31 + docs/html/search/namespaces_0.js | 8 + docs/html/search/pages_0.js | 4 + docs/html/search/search.css | 291 ++ docs/html/search/search.js | 694 +++++ docs/html/search/searchdata.js | 39 + docs/html/search/variables_0.js | 4 + docs/html/search/variables_1.js | 4 + docs/html/search/variables_2.js | 4 + docs/html/search/variables_3.js | 4 + docs/html/search/variables_4.js | 8 + docs/html/splitbar.png | Bin 0 -> 314 bytes docs/html/splitbard.png | Bin 0 -> 282 bytes ...oid_1_1config_1_1_mesh_config-members.html | 128 + ...tructstroid_1_1config_1_1_mesh_config.html | 308 ++ .../structstroid_1_1config_1_1_mesh_config.js | 12 + docs/html/svg.min.js | 46 + docs/html/sync_off.png | Bin 0 -> 853 bytes docs/html/sync_on.png | Bin 0 -> 845 bytes docs/html/tab_a.png | Bin 0 -> 142 bytes docs/html/tab_ad.png | Bin 0 -> 135 bytes docs/html/tab_b.png | Bin 0 -> 169 bytes docs/html/tab_bd.png | Bin 0 -> 173 bytes docs/html/tab_h.png | Bin 0 -> 177 bytes docs/html/tab_hd.png | Bin 0 -> 180 bytes docs/html/tab_s.png | Bin 0 -> 184 bytes docs/html/tab_sd.png | Bin 0 -> 188 bytes docs/html/tabs.css | 1 + docs/html/topology_8cpp.html | 147 + docs/html/topology_8cpp.js | 5 + docs/html/topology_8cpp__incl.map | 13 + docs/html/topology_8cpp__incl.md5 | 1 + docs/html/topology_8cpp__incl.svg | 137 + docs/html/topology_8cpp__incl_org.svg | 111 + docs/html/topology_8h.html | 146 + docs/html/topology_8h.js | 5 + docs/html/topology_8h__incl.map | 11 + docs/html/topology_8h__incl.md5 | 1 + docs/html/topology_8h__incl.svg | 120 + docs/html/topology_8h__incl_org.svg | 94 + 287 files changed, 20444 insertions(+) create mode 100644 docs/html/Logo.png create mode 100644 docs/html/_logo_8png.html create mode 100644 docs/html/annotated.html create mode 100644 docs/html/annotated_dup.js create mode 100644 docs/html/bc_s.png create mode 100644 docs/html/bc_sd.png create mode 100644 docs/html/classes.html create mode 100644 docs/html/clipboard.js create mode 100644 docs/html/closed.png create mode 100644 docs/html/config_8h.html create mode 100644 docs/html/config_8h.js create mode 100644 docs/html/config_8h__dep__incl.map create mode 100644 docs/html/config_8h__dep__incl.md5 create mode 100644 docs/html/config_8h__dep__incl.svg create mode 100644 docs/html/config_8h__dep__incl_org.svg create mode 100644 docs/html/cookie.js create mode 100644 docs/html/curvilinear_8cpp.html create mode 100644 docs/html/curvilinear_8cpp.js create mode 100644 docs/html/curvilinear_8cpp__incl.map create mode 100644 docs/html/curvilinear_8cpp__incl.md5 create mode 100644 docs/html/curvilinear_8cpp__incl.svg create mode 100644 docs/html/curvilinear_8cpp__incl_org.svg create mode 100644 docs/html/curvilinear_8h.html create mode 100644 docs/html/curvilinear_8h.js create mode 100644 docs/html/curvilinear_8h__dep__incl.map create mode 100644 docs/html/curvilinear_8h__dep__incl.md5 create mode 100644 docs/html/curvilinear_8h__dep__incl.svg create mode 100644 docs/html/curvilinear_8h__dep__incl_org.svg create mode 100644 docs/html/curvilinear_8h__incl.map create mode 100644 docs/html/curvilinear_8h__incl.md5 create mode 100644 docs/html/curvilinear_8h__incl.svg create mode 100644 docs/html/curvilinear_8h__incl_org.svg create mode 100644 docs/html/dir_000004_000002.html create mode 100644 docs/html/dir_000005_000002.html create mode 100644 docs/html/dir_000009_000000.html create mode 100644 docs/html/dir_000010_000002.html create mode 100644 docs/html/dir_000012_000002.html create mode 100644 docs/html/dir_31a6c70da1404d38d1b51e38b19548a1.html create mode 100644 docs/html/dir_31a6c70da1404d38d1b51e38b19548a1.js create mode 100644 docs/html/dir_31a6c70da1404d38d1b51e38b19548a1_dep.map create mode 100644 docs/html/dir_31a6c70da1404d38d1b51e38b19548a1_dep.md5 create mode 100644 docs/html/dir_31a6c70da1404d38d1b51e38b19548a1_dep.svg create mode 100644 docs/html/dir_31a6c70da1404d38d1b51e38b19548a1_dep_org.svg create mode 100644 docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5.html create mode 100644 docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5.js create mode 100644 docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5_dep.map create mode 100644 docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5_dep.md5 create mode 100644 docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5_dep.svg create mode 100644 docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5_dep_org.svg create mode 100644 docs/html/dir_49e56c817e5e54854c35e136979f97ca.html create mode 100644 docs/html/dir_49e56c817e5e54854c35e136979f97ca.js create mode 100644 docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html create mode 100644 docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js create mode 100644 docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map create mode 100644 docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 create mode 100644 docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.svg create mode 100644 docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep_org.svg create mode 100644 docs/html/dir_82887d4f338e92537fa9d809bec8c614.html create mode 100644 docs/html/dir_82887d4f338e92537fa9d809bec8c614.js create mode 100644 docs/html/dir_82887d4f338e92537fa9d809bec8c614_dep.map create mode 100644 docs/html/dir_82887d4f338e92537fa9d809bec8c614_dep.md5 create mode 100644 docs/html/dir_82887d4f338e92537fa9d809bec8c614_dep.svg create mode 100644 docs/html/dir_82887d4f338e92537fa9d809bec8c614_dep_org.svg create mode 100644 docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6.html create mode 100644 docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6.js create mode 100644 docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6_dep.map create mode 100644 docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6_dep.md5 create mode 100644 docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6_dep.svg create mode 100644 docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6_dep_org.svg create mode 100644 docs/html/dir_936721fd6a792737eaef7358bcd49428.html create mode 100644 docs/html/dir_936721fd6a792737eaef7358bcd49428.js create mode 100644 docs/html/dir_936721fd6a792737eaef7358bcd49428_dep.map create mode 100644 docs/html/dir_936721fd6a792737eaef7358bcd49428_dep.md5 create mode 100644 docs/html/dir_936721fd6a792737eaef7358bcd49428_dep.svg create mode 100644 docs/html/dir_936721fd6a792737eaef7358bcd49428_dep_org.svg create mode 100644 docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c.html create mode 100644 docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c.js create mode 100644 docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c_dep.map create mode 100644 docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c_dep.md5 create mode 100644 docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c_dep.svg create mode 100644 docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c_dep_org.svg create mode 100644 docs/html/dir_9da86e8abab39b749c6020360d8e4403.html create mode 100644 docs/html/dir_9da86e8abab39b749c6020360d8e4403.js create mode 100644 docs/html/dir_9da86e8abab39b749c6020360d8e4403_dep.map create mode 100644 docs/html/dir_9da86e8abab39b749c6020360d8e4403_dep.md5 create mode 100644 docs/html/dir_9da86e8abab39b749c6020360d8e4403_dep.svg create mode 100644 docs/html/dir_9da86e8abab39b749c6020360d8e4403_dep_org.svg create mode 100644 docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17.html create mode 100644 docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17.js create mode 100644 docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17_dep.map create mode 100644 docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17_dep.md5 create mode 100644 docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17_dep.svg create mode 100644 docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17_dep_org.svg create mode 100644 docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4.html create mode 100644 docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4.js create mode 100644 docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4_dep.map create mode 100644 docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4_dep.md5 create mode 100644 docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4_dep.svg create mode 100644 docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4_dep_org.svg create mode 100644 docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25.html create mode 100644 docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25.js create mode 100644 docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25_dep.map create mode 100644 docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25_dep.md5 create mode 100644 docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25_dep.svg create mode 100644 docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25_dep_org.svg create mode 100644 docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c.html create mode 100644 docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c.js create mode 100644 docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c_dep.map create mode 100644 docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c_dep.md5 create mode 100644 docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c_dep.svg create mode 100644 docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c_dep_org.svg create mode 100644 docs/html/doc.svg create mode 100644 docs/html/docd.svg create mode 100644 docs/html/doxygen-awesome-sidebar-only.css create mode 100644 docs/html/doxygen-awesome.css create mode 100644 docs/html/doxygen.css create mode 100644 docs/html/doxygen.svg create mode 100644 docs/html/doxygen_crawl.html create mode 100644 docs/html/dynsections.js create mode 100644 docs/html/files.html create mode 100644 docs/html/files_dup.js create mode 100644 docs/html/folderclosed.svg create mode 100644 docs/html/folderclosedd.svg create mode 100644 docs/html/folderopen.svg create mode 100644 docs/html/folderopend.svg create mode 100644 docs/html/functions.html create mode 100644 docs/html/functions_vars.html create mode 100644 docs/html/graph_legend.html create mode 100644 docs/html/graph_legend.md5 create mode 100644 docs/html/graph_legend.svg create mode 100644 docs/html/index.html create mode 100644 docs/html/jquery.js create mode 100644 docs/html/mainpage_8md.html create mode 100644 docs/html/mapping_8cpp.html create mode 100644 docs/html/mapping_8cpp.js create mode 100644 docs/html/mapping_8cpp__incl.map create mode 100644 docs/html/mapping_8cpp__incl.md5 create mode 100644 docs/html/mapping_8cpp__incl.svg create mode 100644 docs/html/mapping_8cpp__incl_org.svg create mode 100644 docs/html/mapping_8h.html create mode 100644 docs/html/mapping_8h.js create mode 100644 docs/html/mapping_8h__dep__incl.map create mode 100644 docs/html/mapping_8h__dep__incl.md5 create mode 100644 docs/html/mapping_8h__dep__incl.svg create mode 100644 docs/html/mapping_8h__dep__incl_org.svg create mode 100644 docs/html/mapping_8h__incl.map create mode 100644 docs/html/mapping_8h__incl.md5 create mode 100644 docs/html/mapping_8h__incl.svg create mode 100644 docs/html/mapping_8h__incl_org.svg create mode 100644 docs/html/menu.js create mode 100644 docs/html/menudata.js create mode 100644 docs/html/mesh_8cpp.html create mode 100644 docs/html/mesh_8cpp.js create mode 100644 docs/html/mesh_8cpp__incl.map create mode 100644 docs/html/mesh_8cpp__incl.md5 create mode 100644 docs/html/mesh_8cpp__incl.svg create mode 100644 docs/html/mesh_8cpp__incl_org.svg create mode 100644 docs/html/mesh_8h.html create mode 100644 docs/html/mesh_8h.js create mode 100644 docs/html/mesh_8h__dep__incl.map create mode 100644 docs/html/mesh_8h__dep__incl.md5 create mode 100644 docs/html/mesh_8h__dep__incl.svg create mode 100644 docs/html/mesh_8h__dep__incl_org.svg create mode 100644 docs/html/mesh_8h__incl.map create mode 100644 docs/html/mesh_8h__incl.md5 create mode 100644 docs/html/mesh_8h__incl.svg create mode 100644 docs/html/mesh_8h__incl_org.svg create mode 100644 docs/html/mesh__utils_8cpp.html create mode 100644 docs/html/mesh__utils_8cpp.js create mode 100644 docs/html/mesh__utils_8cpp__incl.map create mode 100644 docs/html/mesh__utils_8cpp__incl.md5 create mode 100644 docs/html/mesh__utils_8cpp__incl.svg create mode 100644 docs/html/mesh__utils_8cpp__incl_org.svg create mode 100644 docs/html/mesh__utils_8h.html create mode 100644 docs/html/mesh__utils_8h.js create mode 100644 docs/html/mesh__utils_8h__dep__incl.map create mode 100644 docs/html/mesh__utils_8h__dep__incl.md5 create mode 100644 docs/html/mesh__utils_8h__dep__incl.svg create mode 100644 docs/html/mesh__utils_8h__dep__incl_org.svg create mode 100644 docs/html/mesh__utils_8h__incl.map create mode 100644 docs/html/mesh__utils_8h__incl.md5 create mode 100644 docs/html/mesh__utils_8h__incl.svg create mode 100644 docs/html/mesh__utils_8h__incl_org.svg create mode 100644 docs/html/minus.svg create mode 100644 docs/html/minusd.svg create mode 100644 docs/html/namespacemembers.html create mode 100644 docs/html/namespacemembers_enum.html create mode 100644 docs/html/namespacemembers_func.html create mode 100644 docs/html/namespaces.html create mode 100644 docs/html/namespaces_dup.js create mode 100644 docs/html/namespacestroid.html create mode 100644 docs/html/namespacestroid.js create mode 100644 docs/html/namespacestroid_1_1_i_o.html create mode 100644 docs/html/namespacestroid_1_1config.html create mode 100644 docs/html/namespacestroid_1_1config.js create mode 100644 docs/html/namespacestroid_1_1topology.html create mode 100644 docs/html/namespacestroid_1_1utils.html create mode 100644 docs/html/nav_f.png create mode 100644 docs/html/nav_fd.png create mode 100644 docs/html/nav_g.png create mode 100644 docs/html/nav_h.png create mode 100644 docs/html/nav_hd.png create mode 100644 docs/html/navtree.css create mode 100644 docs/html/navtree.js create mode 100644 docs/html/navtreedata.js create mode 100644 docs/html/navtreeindex0.js create mode 100644 docs/html/open.png create mode 100644 docs/html/plus.svg create mode 100644 docs/html/plusd.svg create mode 100644 docs/html/resize.js create mode 100644 docs/html/search/all_0.js create mode 100644 docs/html/search/all_1.js create mode 100644 docs/html/search/all_2.js create mode 100644 docs/html/search/all_3.js create mode 100644 docs/html/search/all_4.js create mode 100644 docs/html/search/all_5.js create mode 100644 docs/html/search/all_6.js create mode 100644 docs/html/search/all_7.js create mode 100644 docs/html/search/all_8.js create mode 100644 docs/html/search/all_9.js create mode 100644 docs/html/search/all_a.js create mode 100644 docs/html/search/all_b.js create mode 100644 docs/html/search/all_c.js create mode 100644 docs/html/search/all_d.js create mode 100644 docs/html/search/all_e.js create mode 100644 docs/html/search/all_f.js create mode 100644 docs/html/search/classes_0.js create mode 100644 docs/html/search/close.svg create mode 100644 docs/html/search/enums_0.js create mode 100644 docs/html/search/enumvalues_0.js create mode 100644 docs/html/search/enumvalues_1.js create mode 100644 docs/html/search/enumvalues_2.js create mode 100644 docs/html/search/files_0.js create mode 100644 docs/html/search/files_1.js create mode 100644 docs/html/search/files_2.js create mode 100644 docs/html/search/files_3.js create mode 100644 docs/html/search/functions_0.js create mode 100644 docs/html/search/functions_1.js create mode 100644 docs/html/search/functions_2.js create mode 100644 docs/html/search/functions_3.js create mode 100644 docs/html/search/functions_4.js create mode 100644 docs/html/search/functions_5.js create mode 100644 docs/html/search/functions_6.js create mode 100644 docs/html/search/functions_7.js create mode 100644 docs/html/search/mag.svg create mode 100644 docs/html/search/mag_d.svg create mode 100644 docs/html/search/mag_sel.svg create mode 100644 docs/html/search/mag_seld.svg create mode 100644 docs/html/search/namespaces_0.js create mode 100644 docs/html/search/pages_0.js create mode 100644 docs/html/search/search.css create mode 100644 docs/html/search/search.js create mode 100644 docs/html/search/searchdata.js create mode 100644 docs/html/search/variables_0.js create mode 100644 docs/html/search/variables_1.js create mode 100644 docs/html/search/variables_2.js create mode 100644 docs/html/search/variables_3.js create mode 100644 docs/html/search/variables_4.js create mode 100644 docs/html/splitbar.png create mode 100644 docs/html/splitbard.png create mode 100644 docs/html/structstroid_1_1config_1_1_mesh_config-members.html create mode 100644 docs/html/structstroid_1_1config_1_1_mesh_config.html create mode 100644 docs/html/structstroid_1_1config_1_1_mesh_config.js create mode 100644 docs/html/svg.min.js create mode 100644 docs/html/sync_off.png create mode 100644 docs/html/sync_on.png create mode 100644 docs/html/tab_a.png create mode 100644 docs/html/tab_ad.png create mode 100644 docs/html/tab_b.png create mode 100644 docs/html/tab_bd.png create mode 100644 docs/html/tab_h.png create mode 100644 docs/html/tab_hd.png create mode 100644 docs/html/tab_s.png create mode 100644 docs/html/tab_sd.png create mode 100644 docs/html/tabs.css create mode 100644 docs/html/topology_8cpp.html create mode 100644 docs/html/topology_8cpp.js create mode 100644 docs/html/topology_8cpp__incl.map create mode 100644 docs/html/topology_8cpp__incl.md5 create mode 100644 docs/html/topology_8cpp__incl.svg create mode 100644 docs/html/topology_8cpp__incl_org.svg create mode 100644 docs/html/topology_8h.html create mode 100644 docs/html/topology_8h.js create mode 100644 docs/html/topology_8h__incl.map create mode 100644 docs/html/topology_8h__incl.md5 create mode 100644 docs/html/topology_8h__incl.svg create mode 100644 docs/html/topology_8h__incl_org.svg diff --git a/docs/html/Logo.png b/docs/html/Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d4b94f0009e39804ad925ee35665e17e4bf9b473 GIT binary patch literal 87021 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 + + + + + + +stroid: docs/static/Logo.png File Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Logo.png File Reference
+
+
+
+
+ + + + diff --git a/docs/html/annotated.html b/docs/html/annotated.html new file mode 100644 index 0000000..1726115 --- /dev/null +++ b/docs/html/annotated.html @@ -0,0 +1,123 @@ + + + + + + + +stroid: Class List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 123]
+ + + +
 Nstroid
 Nconfig
 CMeshConfigConfiguration parameters for stroid mesh generation
+
+
+
+ + + + diff --git a/docs/html/annotated_dup.js b/docs/html/annotated_dup.js new file mode 100644 index 0000000..ed02b46 --- /dev/null +++ b/docs/html/annotated_dup.js @@ -0,0 +1,8 @@ +var annotated_dup = +[ + [ "stroid", "namespacestroid.html", [ + [ "config", "namespacestroid_1_1config.html", [ + [ "MeshConfig", "structstroid_1_1config_1_1_mesh_config.html", "structstroid_1_1config_1_1_mesh_config" ] + ] ] + ] ] +]; \ No newline at end of file diff --git a/docs/html/bc_s.png b/docs/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/docs/html/bc_sd.png b/docs/html/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/docs/html/classes.html b/docs/html/classes.html new file mode 100644 index 0000000..f2b564b --- /dev/null +++ b/docs/html/classes.html @@ -0,0 +1,122 @@ + + + + + + + +stroid: Class Index + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+ +
+ + + + diff --git a/docs/html/clipboard.js b/docs/html/clipboard.js new file mode 100644 index 0000000..9da9f3c --- /dev/null +++ b/docs/html/clipboard.js @@ -0,0 +1,61 @@ +/** + +The code below is based on the Doxygen Awesome project, see +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2022 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +let clipboard_title = "Copy to clipboard" +let clipboard_icon = `` +let clipboard_successIcon = `` +let clipboard_successDuration = 1000 + +$(function() { + if(navigator.clipboard) { + const fragments = document.getElementsByClassName("fragment") + for(const fragment of fragments) { + const clipboard_div = document.createElement("div") + clipboard_div.classList.add("clipboard") + clipboard_div.innerHTML = clipboard_icon + clipboard_div.title = clipboard_title + $(clipboard_div).click(function() { + const content = this.parentNode.cloneNode(true) + // filter out line number and folded fragments from file listings + content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() }) + let text = content.textContent + // remove trailing newlines and trailing spaces from empty lines + text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'') + navigator.clipboard.writeText(text); + this.classList.add("success") + this.innerHTML = clipboard_successIcon + window.setTimeout(() => { // switch back to normal icon after timeout + this.classList.remove("success") + this.innerHTML = clipboard_icon + }, clipboard_successDuration); + }) + fragment.insertBefore(clipboard_div, fragment.firstChild) + } + } +}) diff --git a/docs/html/closed.png b/docs/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/docs/html/config_8h.html b/docs/html/config_8h.html new file mode 100644 index 0000000..257814d --- /dev/null +++ b/docs/html/config_8h.html @@ -0,0 +1,139 @@ + + + + + + + +stroid: src/include/stroid/config/config.h File Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
config.h File Reference
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+
+
+ + + + +

+Classes

struct  stroid::config::MeshConfig
 Configuration parameters for stroid mesh generation. More...
 
+ + + + + +

+Namespaces

namespace  stroid
 
namespace  stroid::config
 
+
+
+ + + + diff --git a/docs/html/config_8h.js b/docs/html/config_8h.js new file mode 100644 index 0000000..e42db01 --- /dev/null +++ b/docs/html/config_8h.js @@ -0,0 +1,4 @@ +var config_8h = +[ + [ "stroid::config::MeshConfig", "structstroid_1_1config_1_1_mesh_config.html", "structstroid_1_1config_1_1_mesh_config" ] +]; \ No newline at end of file diff --git a/docs/html/config_8h__dep__incl.map b/docs/html/config_8h__dep__incl.map new file mode 100644 index 0000000..1c938c7 --- /dev/null +++ b/docs/html/config_8h__dep__incl.map @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/docs/html/config_8h__dep__incl.md5 b/docs/html/config_8h__dep__incl.md5 new file mode 100644 index 0000000..3d79d0f --- /dev/null +++ b/docs/html/config_8h__dep__incl.md5 @@ -0,0 +1 @@ +1981f677764f42c4b4f0cb2161e8450f \ No newline at end of file diff --git a/docs/html/config_8h__dep__incl.svg b/docs/html/config_8h__dep__incl.svg new file mode 100644 index 0000000..90b65b4 --- /dev/null +++ b/docs/html/config_8h__dep__incl.svg @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +src/include/stroid/config/config.h + + +Node1 + + +src/include/stroid +/config/config.h + + + + + +Node2 + + +src/include/stroid +/topology/curvilinear.h + + + + + +Node1->Node2 + + + + + + + + +Node4 + + +src/include/stroid +/topology/mapping.h + + + + + +Node1->Node4 + + + + + + + + +Node6 + + +src/include/stroid +/topology/topology.h + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +src/lib/IO/mesh.cpp + + + + + +Node1->Node7 + + + + + + + + +Node8 + + +src/lib/topology/topology.cpp + + + + + +Node1->Node8 + + + + + + + + +Node3 + + +src/lib/topology/curvilinear.cpp + + + + + +Node2->Node3 + + + + + + + + +Node4->Node3 + + + + + + + + +Node5 + + +src/lib/topology/mapping.cpp + + + + + +Node4->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/config_8h__dep__incl_org.svg b/docs/html/config_8h__dep__incl_org.svg new file mode 100644 index 0000000..e368527 --- /dev/null +++ b/docs/html/config_8h__dep__incl_org.svg @@ -0,0 +1,160 @@ + + + + + + +src/include/stroid/config/config.h + + +Node1 + + +src/include/stroid +/config/config.h + + + + + +Node2 + + +src/include/stroid +/topology/curvilinear.h + + + + + +Node1->Node2 + + + + + + + + +Node4 + + +src/include/stroid +/topology/mapping.h + + + + + +Node1->Node4 + + + + + + + + +Node6 + + +src/include/stroid +/topology/topology.h + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +src/lib/IO/mesh.cpp + + + + + +Node1->Node7 + + + + + + + + +Node8 + + +src/lib/topology/topology.cpp + + + + + +Node1->Node8 + + + + + + + + +Node3 + + +src/lib/topology/curvilinear.cpp + + + + + +Node2->Node3 + + + + + + + + +Node4->Node3 + + + + + + + + +Node5 + + +src/lib/topology/mapping.cpp + + + + + +Node4->Node5 + + + + + + + + diff --git a/docs/html/cookie.js b/docs/html/cookie.js new file mode 100644 index 0000000..53ad21d --- /dev/null +++ b/docs/html/cookie.js @@ -0,0 +1,58 @@ +/*! + Cookie helper functions + Copyright (c) 2023 Dimitri van Heesch + Released under MIT license. +*/ +let Cookie = { + cookie_namespace: 'doxygen_', + + readSetting(cookie,defVal) { + if (window.chrome) { + const val = localStorage.getItem(this.cookie_namespace+cookie) || + sessionStorage.getItem(this.cookie_namespace+cookie); + if (val) return val; + } else { + let myCookie = this.cookie_namespace+cookie+"="; + if (document.cookie) { + const index = document.cookie.indexOf(myCookie); + if (index != -1) { + const valStart = index + myCookie.length; + let valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + return document.cookie.substring(valStart, valEnd); + } + } + } + return defVal; + }, + + writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete + if (window.chrome) { + if (days==0) { + sessionStorage.setItem(this.cookie_namespace+cookie,val); + } else { + localStorage.setItem(this.cookie_namespace+cookie,val); + } + } else { + let date = new Date(); + date.setTime(date.getTime()+(days*24*60*60*1000)); + const expiration = days!=0 ? "expires="+date.toGMTString()+";" : ""; + document.cookie = this.cookie_namespace + cookie + "=" + + val + "; SameSite=Lax;" + expiration + "path=/"; + } + }, + + eraseSetting(cookie) { + if (window.chrome) { + if (localStorage.getItem(this.cookie_namespace+cookie)) { + localStorage.removeItem(this.cookie_namespace+cookie); + } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) { + sessionStorage.removeItem(this.cookie_namespace+cookie); + } + } else { + this.writeSetting(cookie,'',-1); + } + }, +} diff --git a/docs/html/curvilinear_8cpp.html b/docs/html/curvilinear_8cpp.html new file mode 100644 index 0000000..59d7671 --- /dev/null +++ b/docs/html/curvilinear_8cpp.html @@ -0,0 +1,146 @@ + + + + + + + +stroid: src/lib/topology/curvilinear.cpp File Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
curvilinear.cpp File Reference
+
+
+
#include "stroid/topology/curvilinear.h"
+#include "stroid/topology/mapping.h"
+#include <iostream>
+#include <memory>
+
+Include dependency graph for curvilinear.cpp:
+
+
+
+
+ + + + + +

+Namespaces

namespace  stroid
 
namespace  stroid::topology
 
+ + + + + + + +

+Functions

void stroid::topology::PromoteToHighOrder (mfem::Mesh &mesh, const fourdst::config::Config< config::MeshConfig > &config)
 Promote a mesh to high-order by attaching an H1 nodal finite element space.
 
void stroid::topology::ProjectMesh (mfem::Mesh &mesh, const fourdst::config::Config< config::MeshConfig > &config)
 Project high-order mesh nodes using the configured curvilinear mapping.
 
+
+
+ + + + diff --git a/docs/html/curvilinear_8cpp.js b/docs/html/curvilinear_8cpp.js new file mode 100644 index 0000000..1379c5b --- /dev/null +++ b/docs/html/curvilinear_8cpp.js @@ -0,0 +1,5 @@ +var curvilinear_8cpp = +[ + [ "stroid::topology::ProjectMesh", "namespacestroid_1_1topology.html#a836ed13e5bac63e7952c3ce4e5532e78", null ], + [ "stroid::topology::PromoteToHighOrder", "namespacestroid_1_1topology.html#a5907aa2e639cda703d48d177abc37caf", null ] +]; \ No newline at end of file diff --git a/docs/html/curvilinear_8cpp__incl.map b/docs/html/curvilinear_8cpp__incl.map new file mode 100644 index 0000000..14961d1 --- /dev/null +++ b/docs/html/curvilinear_8cpp__incl.map @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/curvilinear_8cpp__incl.md5 b/docs/html/curvilinear_8cpp__incl.md5 new file mode 100644 index 0000000..7359c47 --- /dev/null +++ b/docs/html/curvilinear_8cpp__incl.md5 @@ -0,0 +1 @@ +b8eef4875e081be998fbcbc84a3978b1 \ No newline at end of file diff --git a/docs/html/curvilinear_8cpp__incl.svg b/docs/html/curvilinear_8cpp__incl.svg new file mode 100644 index 0000000..11516ce --- /dev/null +++ b/docs/html/curvilinear_8cpp__incl.svg @@ -0,0 +1,200 @@ + + + + + + + + + + + + +src/lib/topology/curvilinear.cpp + + +Node1 + + +src/lib/topology/curvilinear.cpp + + + + + +Node2 + + +stroid/topology/curvilinear.h + + + + + +Node1->Node2 + + + + + + + + +Node6 + + +stroid/topology/mapping.h + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +iostream + + + + + +Node1->Node7 + + + + + + + + +Node8 + + +memory + + + + + +Node1->Node8 + + + + + + + + +Node3 + + +mfem.hpp + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +stroid/config/config.h + + + + + +Node2->Node4 + + + + + + + + +Node5 + + +fourdst/config/config.h + + + + + +Node2->Node5 + + + + + + + + +Node6->Node3 + + + + + + + + +Node6->Node4 + + + + + + + + +Node6->Node5 + + + + + + + + + + + + + diff --git a/docs/html/curvilinear_8cpp__incl_org.svg b/docs/html/curvilinear_8cpp__incl_org.svg new file mode 100644 index 0000000..49fd241 --- /dev/null +++ b/docs/html/curvilinear_8cpp__incl_org.svg @@ -0,0 +1,174 @@ + + + + + + +src/lib/topology/curvilinear.cpp + + +Node1 + + +src/lib/topology/curvilinear.cpp + + + + + +Node2 + + +stroid/topology/curvilinear.h + + + + + +Node1->Node2 + + + + + + + + +Node6 + + +stroid/topology/mapping.h + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +iostream + + + + + +Node1->Node7 + + + + + + + + +Node8 + + +memory + + + + + +Node1->Node8 + + + + + + + + +Node3 + + +mfem.hpp + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +stroid/config/config.h + + + + + +Node2->Node4 + + + + + + + + +Node5 + + +fourdst/config/config.h + + + + + +Node2->Node5 + + + + + + + + +Node6->Node3 + + + + + + + + +Node6->Node4 + + + + + + + + +Node6->Node5 + + + + + + + + diff --git a/docs/html/curvilinear_8h.html b/docs/html/curvilinear_8h.html new file mode 100644 index 0000000..9a22b69 --- /dev/null +++ b/docs/html/curvilinear_8h.html @@ -0,0 +1,150 @@ + + + + + + + +stroid: src/include/stroid/topology/curvilinear.h File Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
curvilinear.h File Reference
+
+
+
#include "mfem.hpp"
+#include "stroid/config/config.h"
+#include "fourdst/config/config.h"
+
+Include dependency graph for curvilinear.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+
+
+ + + + + +

+Namespaces

namespace  stroid
 
namespace  stroid::topology
 
+ + + + + + + +

+Functions

void stroid::topology::PromoteToHighOrder (mfem::Mesh &mesh, const fourdst::config::Config< config::MeshConfig > &config)
 Promote a mesh to high-order by attaching an H1 nodal finite element space.
 
void stroid::topology::ProjectMesh (mfem::Mesh &mesh, const fourdst::config::Config< config::MeshConfig > &config)
 Project high-order mesh nodes using the configured curvilinear mapping.
 
+
+
+ + + + diff --git a/docs/html/curvilinear_8h.js b/docs/html/curvilinear_8h.js new file mode 100644 index 0000000..afbb0ab --- /dev/null +++ b/docs/html/curvilinear_8h.js @@ -0,0 +1,5 @@ +var curvilinear_8h = +[ + [ "stroid::topology::ProjectMesh", "namespacestroid_1_1topology.html#a836ed13e5bac63e7952c3ce4e5532e78", null ], + [ "stroid::topology::PromoteToHighOrder", "namespacestroid_1_1topology.html#a5907aa2e639cda703d48d177abc37caf", null ] +]; \ No newline at end of file diff --git a/docs/html/curvilinear_8h__dep__incl.map b/docs/html/curvilinear_8h__dep__incl.map new file mode 100644 index 0000000..46308f6 --- /dev/null +++ b/docs/html/curvilinear_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/curvilinear_8h__dep__incl.md5 b/docs/html/curvilinear_8h__dep__incl.md5 new file mode 100644 index 0000000..5f4b3af --- /dev/null +++ b/docs/html/curvilinear_8h__dep__incl.md5 @@ -0,0 +1 @@ +1ef7d734bf2c7c23d22f2dc767d814d9 \ No newline at end of file diff --git a/docs/html/curvilinear_8h__dep__incl.svg b/docs/html/curvilinear_8h__dep__incl.svg new file mode 100644 index 0000000..6d3283d --- /dev/null +++ b/docs/html/curvilinear_8h__dep__incl.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + +src/include/stroid/topology/curvilinear.h + + +Node1 + + +src/include/stroid +/topology/curvilinear.h + + + + + +Node2 + + +src/lib/topology/curvilinear.cpp + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/curvilinear_8h__dep__incl_org.svg b/docs/html/curvilinear_8h__dep__incl_org.svg new file mode 100644 index 0000000..803e4e1 --- /dev/null +++ b/docs/html/curvilinear_8h__dep__incl_org.svg @@ -0,0 +1,40 @@ + + + + + + +src/include/stroid/topology/curvilinear.h + + +Node1 + + +src/include/stroid +/topology/curvilinear.h + + + + + +Node2 + + +src/lib/topology/curvilinear.cpp + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/curvilinear_8h__incl.map b/docs/html/curvilinear_8h__incl.map new file mode 100644 index 0000000..300124e --- /dev/null +++ b/docs/html/curvilinear_8h__incl.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/curvilinear_8h__incl.md5 b/docs/html/curvilinear_8h__incl.md5 new file mode 100644 index 0000000..dd1dd14 --- /dev/null +++ b/docs/html/curvilinear_8h__incl.md5 @@ -0,0 +1 @@ +bb805b01e9860bf23e5856fbeb7bbf80 \ No newline at end of file diff --git a/docs/html/curvilinear_8h__incl.svg b/docs/html/curvilinear_8h__incl.svg new file mode 100644 index 0000000..b952938 --- /dev/null +++ b/docs/html/curvilinear_8h__incl.svg @@ -0,0 +1,102 @@ + + + + + + + + + + + + +src/include/stroid/topology/curvilinear.h + + +Node1 + + +src/include/stroid +/topology/curvilinear.h + + + + + +Node2 + + +mfem.hpp + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +stroid/config/config.h + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +fourdst/config/config.h + + + + + +Node1->Node4 + + + + + + + + + + + + + diff --git a/docs/html/curvilinear_8h__incl_org.svg b/docs/html/curvilinear_8h__incl_org.svg new file mode 100644 index 0000000..b30f764 --- /dev/null +++ b/docs/html/curvilinear_8h__incl_org.svg @@ -0,0 +1,76 @@ + + + + + + +src/include/stroid/topology/curvilinear.h + + +Node1 + + +src/include/stroid +/topology/curvilinear.h + + + + + +Node2 + + +mfem.hpp + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +stroid/config/config.h + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +fourdst/config/config.h + + + + + +Node1->Node4 + + + + + + + + diff --git a/docs/html/dir_000004_000002.html b/docs/html/dir_000004_000002.html new file mode 100644 index 0000000..b809222 --- /dev/null +++ b/docs/html/dir_000004_000002.html @@ -0,0 +1,114 @@ + + + + + + + +stroid: src/lib/IO -> include Relation + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+

IO → include Relation

File in src/lib/IOIncludes file in src/include
mesh.cppstroid / config / config.h
mesh.cppstroid / IO / mesh.h
+
+ + + + diff --git a/docs/html/dir_000005_000002.html b/docs/html/dir_000005_000002.html new file mode 100644 index 0000000..934a8c7 --- /dev/null +++ b/docs/html/dir_000005_000002.html @@ -0,0 +1,114 @@ + + + + + + + +stroid: src/lib -> include Relation + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + diff --git a/docs/html/dir_000009_000000.html b/docs/html/dir_000009_000000.html new file mode 100644 index 0000000..9f0dbcf --- /dev/null +++ b/docs/html/dir_000009_000000.html @@ -0,0 +1,114 @@ + + + + + + + +stroid: src/include/stroid/topology -> config Relation + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+

topology → config Relation

File in src/include/stroid/topologyIncludes file in src/include/stroid/config
curvilinear.hconfig.h
mapping.hconfig.h
topology.hconfig.h
+
+ + + + diff --git a/docs/html/dir_000010_000002.html b/docs/html/dir_000010_000002.html new file mode 100644 index 0000000..0a4b76d --- /dev/null +++ b/docs/html/dir_000010_000002.html @@ -0,0 +1,114 @@ + + + + + + + +stroid: src/lib/topology -> include Relation + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+

topology → include Relation

File in src/lib/topologyIncludes file in src/include
curvilinear.cppstroid / topology / curvilinear.h
curvilinear.cppstroid / topology / mapping.h
mapping.cppstroid / topology / mapping.h
topology.cppstroid / config / config.h
+
+ + + + diff --git a/docs/html/dir_000012_000002.html b/docs/html/dir_000012_000002.html new file mode 100644 index 0000000..d5c4ba4 --- /dev/null +++ b/docs/html/dir_000012_000002.html @@ -0,0 +1,114 @@ + + + + + + + +stroid: src/lib/utils -> include Relation + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+

utils → include Relation

File in src/lib/utilsIncludes file in src/include
mesh_utils.cppstroid / utils / mesh_utils.h
+
+ + + + diff --git a/docs/html/dir_31a6c70da1404d38d1b51e38b19548a1.html b/docs/html/dir_31a6c70da1404d38d1b51e38b19548a1.html new file mode 100644 index 0000000..4697d9c --- /dev/null +++ b/docs/html/dir_31a6c70da1404d38d1b51e38b19548a1.html @@ -0,0 +1,128 @@ + + + + + + + +stroid: src/include/stroid/IO Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
IO Directory Reference
+
+
+
+Directory dependency graph for IO:
+
+
+
+ + + + +

+Files

 mesh.h
 
+
+
+ + + + diff --git a/docs/html/dir_31a6c70da1404d38d1b51e38b19548a1.js b/docs/html/dir_31a6c70da1404d38d1b51e38b19548a1.js new file mode 100644 index 0000000..0ac5896 --- /dev/null +++ b/docs/html/dir_31a6c70da1404d38d1b51e38b19548a1.js @@ -0,0 +1,4 @@ +var dir_31a6c70da1404d38d1b51e38b19548a1 = +[ + [ "mesh.h", "mesh_8h.html", "mesh_8h" ] +]; \ No newline at end of file diff --git a/docs/html/dir_31a6c70da1404d38d1b51e38b19548a1_dep.map b/docs/html/dir_31a6c70da1404d38d1b51e38b19548a1_dep.map new file mode 100644 index 0000000..d7f574b --- /dev/null +++ b/docs/html/dir_31a6c70da1404d38d1b51e38b19548a1_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/dir_31a6c70da1404d38d1b51e38b19548a1_dep.md5 b/docs/html/dir_31a6c70da1404d38d1b51e38b19548a1_dep.md5 new file mode 100644 index 0000000..87a2367 --- /dev/null +++ b/docs/html/dir_31a6c70da1404d38d1b51e38b19548a1_dep.md5 @@ -0,0 +1 @@ +ca552089631a787b46f4183859a8aad9 \ No newline at end of file diff --git a/docs/html/dir_31a6c70da1404d38d1b51e38b19548a1_dep.svg b/docs/html/dir_31a6c70da1404d38d1b51e38b19548a1_dep.svg new file mode 100644 index 0000000..fe13325 --- /dev/null +++ b/docs/html/dir_31a6c70da1404d38d1b51e38b19548a1_dep.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + +src/include/stroid/IO + +clusterdir_3f4f28e99864f6e7d54ad0c93ce0a2a5 + + +stroid + + + + + +dir_31a6c70da1404d38d1b51e38b19548a1 + + +IO + + + + + + + + + + diff --git a/docs/html/dir_31a6c70da1404d38d1b51e38b19548a1_dep_org.svg b/docs/html/dir_31a6c70da1404d38d1b51e38b19548a1_dep_org.svg new file mode 100644 index 0000000..c954b32 --- /dev/null +++ b/docs/html/dir_31a6c70da1404d38d1b51e38b19548a1_dep_org.svg @@ -0,0 +1,29 @@ + + + + + + +src/include/stroid/IO + +clusterdir_3f4f28e99864f6e7d54ad0c93ce0a2a5 + + +stroid + + + + + +dir_31a6c70da1404d38d1b51e38b19548a1 + + +IO + + + + + diff --git a/docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5.html b/docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5.html new file mode 100644 index 0000000..fe0cbba --- /dev/null +++ b/docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5.html @@ -0,0 +1,134 @@ + + + + + + + +stroid: src/include/stroid Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
stroid Directory Reference
+
+
+
+Directory dependency graph for stroid:
+
+
+
+ + + + + + + + + + +

+Directories

 config
 
 IO
 
 topology
 
 utils
 
+
+
+ + + + diff --git a/docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5.js b/docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5.js new file mode 100644 index 0000000..56c4d38 --- /dev/null +++ b/docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5.js @@ -0,0 +1,7 @@ +var dir_3f4f28e99864f6e7d54ad0c93ce0a2a5 = +[ + [ "config", "dir_dc36fd7496f87f6989d6d6a9445d600c.html", "dir_dc36fd7496f87f6989d6d6a9445d600c" ], + [ "IO", "dir_31a6c70da1404d38d1b51e38b19548a1.html", "dir_31a6c70da1404d38d1b51e38b19548a1" ], + [ "topology", "dir_9da86e8abab39b749c6020360d8e4403.html", "dir_9da86e8abab39b749c6020360d8e4403" ], + [ "utils", "dir_9d5018b9ddb63a582aa4c6b91bec2f8c.html", "dir_9d5018b9ddb63a582aa4c6b91bec2f8c" ] +]; \ No newline at end of file diff --git a/docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5_dep.map b/docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5_dep.map new file mode 100644 index 0000000..7774bd2 --- /dev/null +++ b/docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5_dep.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5_dep.md5 b/docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5_dep.md5 new file mode 100644 index 0000000..d35bafe --- /dev/null +++ b/docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5_dep.md5 @@ -0,0 +1 @@ +b815693e1badcd6ad0f56a891383b798 \ No newline at end of file diff --git a/docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5_dep.svg b/docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5_dep.svg new file mode 100644 index 0000000..7cc84be --- /dev/null +++ b/docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5_dep.svg @@ -0,0 +1,107 @@ + + + + + + + + + + + + +src/include/stroid + +clusterdir_b0856f6b0d80ccb263b2f415c91f9e17 + + +include + + + + +clusterdir_3f4f28e99864f6e7d54ad0c93ce0a2a5 + + + + + + + +dir_3f4f28e99864f6e7d54ad0c93ce0a2a5 +stroid + + + +dir_dc36fd7496f87f6989d6d6a9445d600c + + +config + + + + + +dir_31a6c70da1404d38d1b51e38b19548a1 + + +IO + + + + + +dir_9da86e8abab39b749c6020360d8e4403 + + +topology + + + + + +dir_9da86e8abab39b749c6020360d8e4403->dir_dc36fd7496f87f6989d6d6a9445d600c + + + + + + +3 + + + + + +dir_9d5018b9ddb63a582aa4c6b91bec2f8c + + +utils + + + + + + + + + + diff --git a/docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5_dep_org.svg b/docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5_dep_org.svg new file mode 100644 index 0000000..9ab3621 --- /dev/null +++ b/docs/html/dir_3f4f28e99864f6e7d54ad0c93ce0a2a5_dep_org.svg @@ -0,0 +1,81 @@ + + + + + + +src/include/stroid + +clusterdir_b0856f6b0d80ccb263b2f415c91f9e17 + + +include + + + + +clusterdir_3f4f28e99864f6e7d54ad0c93ce0a2a5 + + + + + + + +dir_3f4f28e99864f6e7d54ad0c93ce0a2a5 +stroid + + + +dir_dc36fd7496f87f6989d6d6a9445d600c + + +config + + + + + +dir_31a6c70da1404d38d1b51e38b19548a1 + + +IO + + + + + +dir_9da86e8abab39b749c6020360d8e4403 + + +topology + + + + + +dir_9da86e8abab39b749c6020360d8e4403->dir_dc36fd7496f87f6989d6d6a9445d600c + + + + + + +3 + + + + + +dir_9d5018b9ddb63a582aa4c6b91bec2f8c + + +utils + + + + + diff --git a/docs/html/dir_49e56c817e5e54854c35e136979f97ca.html b/docs/html/dir_49e56c817e5e54854c35e136979f97ca.html new file mode 100644 index 0000000..34104b1 --- /dev/null +++ b/docs/html/dir_49e56c817e5e54854c35e136979f97ca.html @@ -0,0 +1,123 @@ + + + + + + + +stroid: docs Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
docs Directory Reference
+
+
+ + + + +

+Directories

 static
 
+
+
+ + + + diff --git a/docs/html/dir_49e56c817e5e54854c35e136979f97ca.js b/docs/html/dir_49e56c817e5e54854c35e136979f97ca.js new file mode 100644 index 0000000..5f19904 --- /dev/null +++ b/docs/html/dir_49e56c817e5e54854c35e136979f97ca.js @@ -0,0 +1,4 @@ +var dir_49e56c817e5e54854c35e136979f97ca = +[ + [ "static", "dir_c34d5e8363cf0aa3fabc4f3fad3412a4.html", "dir_c34d5e8363cf0aa3fabc4f3fad3412a4" ] +]; \ No newline at end of file diff --git a/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 0000000..d0e56a7 --- /dev/null +++ b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,130 @@ + + + + + + + +stroid: src Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
src Directory Reference
+
+
+
+Directory dependency graph for src:
+
+
+
+ + + + + + +

+Directories

 include
 
 lib
 
+
+
+ + + + diff --git a/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js new file mode 100644 index 0000000..43391b2 --- /dev/null +++ b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js @@ -0,0 +1,5 @@ +var dir_68267d1309a1af8e8297ef4c3efbcdba = +[ + [ "include", "dir_b0856f6b0d80ccb263b2f415c91f9e17.html", "dir_b0856f6b0d80ccb263b2f415c91f9e17" ], + [ "lib", "dir_c85d3e3c5052e9ad9ce18c6863244a25.html", "dir_c85d3e3c5052e9ad9ce18c6863244a25" ] +]; \ No newline at end of file diff --git a/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map new file mode 100644 index 0000000..7781d18 --- /dev/null +++ b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 new file mode 100644 index 0000000..aa33daf --- /dev/null +++ b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 @@ -0,0 +1 @@ +32f7a5be2d2ff8dc39a2a4b9db9092a6 \ No newline at end of file diff --git a/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.svg b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.svg new file mode 100644 index 0000000..e9d7332 --- /dev/null +++ b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + +src + +clusterdir_68267d1309a1af8e8297ef4c3efbcdba + + + + + + + +dir_68267d1309a1af8e8297ef4c3efbcdba +src + + + +dir_b0856f6b0d80ccb263b2f415c91f9e17 + + +include + + + + + +dir_c85d3e3c5052e9ad9ce18c6863244a25 + + +lib + + + + + +dir_c85d3e3c5052e9ad9ce18c6863244a25->dir_b0856f6b0d80ccb263b2f415c91f9e17 + + + + + + +7 + + + + + + + + + + diff --git a/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep_org.svg b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep_org.svg new file mode 100644 index 0000000..f411c1d --- /dev/null +++ b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep_org.svg @@ -0,0 +1,55 @@ + + + + + + +src + +clusterdir_68267d1309a1af8e8297ef4c3efbcdba + + + + + + + +dir_68267d1309a1af8e8297ef4c3efbcdba +src + + + +dir_b0856f6b0d80ccb263b2f415c91f9e17 + + +include + + + + + +dir_c85d3e3c5052e9ad9ce18c6863244a25 + + +lib + + + + + +dir_c85d3e3c5052e9ad9ce18c6863244a25->dir_b0856f6b0d80ccb263b2f415c91f9e17 + + + + + + +7 + + + + + diff --git a/docs/html/dir_82887d4f338e92537fa9d809bec8c614.html b/docs/html/dir_82887d4f338e92537fa9d809bec8c614.html new file mode 100644 index 0000000..fb29305 --- /dev/null +++ b/docs/html/dir_82887d4f338e92537fa9d809bec8c614.html @@ -0,0 +1,128 @@ + + + + + + + +stroid: src/lib/IO Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
IO Directory Reference
+
+
+
+Directory dependency graph for IO:
+
+
+
+ + + + +

+Files

 mesh.cpp
 
+
+
+ + + + diff --git a/docs/html/dir_82887d4f338e92537fa9d809bec8c614.js b/docs/html/dir_82887d4f338e92537fa9d809bec8c614.js new file mode 100644 index 0000000..a7a057e --- /dev/null +++ b/docs/html/dir_82887d4f338e92537fa9d809bec8c614.js @@ -0,0 +1,4 @@ +var dir_82887d4f338e92537fa9d809bec8c614 = +[ + [ "mesh.cpp", "mesh_8cpp.html", "mesh_8cpp" ] +]; \ No newline at end of file diff --git a/docs/html/dir_82887d4f338e92537fa9d809bec8c614_dep.map b/docs/html/dir_82887d4f338e92537fa9d809bec8c614_dep.map new file mode 100644 index 0000000..1658d23 --- /dev/null +++ b/docs/html/dir_82887d4f338e92537fa9d809bec8c614_dep.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/dir_82887d4f338e92537fa9d809bec8c614_dep.md5 b/docs/html/dir_82887d4f338e92537fa9d809bec8c614_dep.md5 new file mode 100644 index 0000000..58b4cf5 --- /dev/null +++ b/docs/html/dir_82887d4f338e92537fa9d809bec8c614_dep.md5 @@ -0,0 +1 @@ +3231d3feafcfb48db197b1ba201573ce \ No newline at end of file diff --git a/docs/html/dir_82887d4f338e92537fa9d809bec8c614_dep.svg b/docs/html/dir_82887d4f338e92537fa9d809bec8c614_dep.svg new file mode 100644 index 0000000..846707b --- /dev/null +++ b/docs/html/dir_82887d4f338e92537fa9d809bec8c614_dep.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + +src/lib/IO + +clusterdir_c85d3e3c5052e9ad9ce18c6863244a25 + + +lib + + + + + +dir_82887d4f338e92537fa9d809bec8c614 + + +IO + + + + + +dir_b0856f6b0d80ccb263b2f415c91f9e17 + + +include + + + + + +dir_82887d4f338e92537fa9d809bec8c614->dir_b0856f6b0d80ccb263b2f415c91f9e17 + + + + + + +2 + + + + + + + + + + diff --git a/docs/html/dir_82887d4f338e92537fa9d809bec8c614_dep_org.svg b/docs/html/dir_82887d4f338e92537fa9d809bec8c614_dep_org.svg new file mode 100644 index 0000000..fb607cb --- /dev/null +++ b/docs/html/dir_82887d4f338e92537fa9d809bec8c614_dep_org.svg @@ -0,0 +1,51 @@ + + + + + + +src/lib/IO + +clusterdir_c85d3e3c5052e9ad9ce18c6863244a25 + + +lib + + + + + +dir_82887d4f338e92537fa9d809bec8c614 + + +IO + + + + + +dir_b0856f6b0d80ccb263b2f415c91f9e17 + + +include + + + + + +dir_82887d4f338e92537fa9d809bec8c614->dir_b0856f6b0d80ccb263b2f415c91f9e17 + + + + + + +2 + + + + + diff --git a/docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6.html b/docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6.html new file mode 100644 index 0000000..49bb0e5 --- /dev/null +++ b/docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6.html @@ -0,0 +1,128 @@ + + + + + + + +stroid: src/lib/utils Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
utils Directory Reference
+
+
+
+Directory dependency graph for utils:
+
+
+
+ + + + +

+Files

 mesh_utils.cpp
 
+
+
+ + + + diff --git a/docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6.js b/docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6.js new file mode 100644 index 0000000..11f97d4 --- /dev/null +++ b/docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6.js @@ -0,0 +1,4 @@ +var dir_87d18a4dc5174905bfd7d2dc734defe6 = +[ + [ "mesh_utils.cpp", "mesh__utils_8cpp.html", "mesh__utils_8cpp" ] +]; \ No newline at end of file diff --git a/docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6_dep.map b/docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6_dep.map new file mode 100644 index 0000000..b2eaea4 --- /dev/null +++ b/docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6_dep.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6_dep.md5 b/docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6_dep.md5 new file mode 100644 index 0000000..7a0f78b --- /dev/null +++ b/docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6_dep.md5 @@ -0,0 +1 @@ +62ece51f3bfca5aa9f7321dddbaaeed5 \ No newline at end of file diff --git a/docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6_dep.svg b/docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6_dep.svg new file mode 100644 index 0000000..2334ed7 --- /dev/null +++ b/docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6_dep.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + +src/lib/utils + +clusterdir_c85d3e3c5052e9ad9ce18c6863244a25 + + +lib + + + + + +dir_87d18a4dc5174905bfd7d2dc734defe6 + + +utils + + + + + +dir_b0856f6b0d80ccb263b2f415c91f9e17 + + +include + + + + + +dir_87d18a4dc5174905bfd7d2dc734defe6->dir_b0856f6b0d80ccb263b2f415c91f9e17 + + + + + + +1 + + + + + + + + + + diff --git a/docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6_dep_org.svg b/docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6_dep_org.svg new file mode 100644 index 0000000..495c9e6 --- /dev/null +++ b/docs/html/dir_87d18a4dc5174905bfd7d2dc734defe6_dep_org.svg @@ -0,0 +1,51 @@ + + + + + + +src/lib/utils + +clusterdir_c85d3e3c5052e9ad9ce18c6863244a25 + + +lib + + + + + +dir_87d18a4dc5174905bfd7d2dc734defe6 + + +utils + + + + + +dir_b0856f6b0d80ccb263b2f415c91f9e17 + + +include + + + + + +dir_87d18a4dc5174905bfd7d2dc734defe6->dir_b0856f6b0d80ccb263b2f415c91f9e17 + + + + + + +1 + + + + + diff --git a/docs/html/dir_936721fd6a792737eaef7358bcd49428.html b/docs/html/dir_936721fd6a792737eaef7358bcd49428.html new file mode 100644 index 0000000..698914a --- /dev/null +++ b/docs/html/dir_936721fd6a792737eaef7358bcd49428.html @@ -0,0 +1,132 @@ + + + + + + + +stroid: src/lib/topology Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
topology Directory Reference
+
+
+
+Directory dependency graph for topology:
+
+
+
+ + + + + + + + +

+Files

 curvilinear.cpp
 
 mapping.cpp
 
 topology.cpp
 
+
+
+ + + + diff --git a/docs/html/dir_936721fd6a792737eaef7358bcd49428.js b/docs/html/dir_936721fd6a792737eaef7358bcd49428.js new file mode 100644 index 0000000..59601a1 --- /dev/null +++ b/docs/html/dir_936721fd6a792737eaef7358bcd49428.js @@ -0,0 +1,6 @@ +var dir_936721fd6a792737eaef7358bcd49428 = +[ + [ "curvilinear.cpp", "curvilinear_8cpp.html", "curvilinear_8cpp" ], + [ "mapping.cpp", "mapping_8cpp.html", "mapping_8cpp" ], + [ "topology.cpp", "topology_8cpp.html", "topology_8cpp" ] +]; \ No newline at end of file diff --git a/docs/html/dir_936721fd6a792737eaef7358bcd49428_dep.map b/docs/html/dir_936721fd6a792737eaef7358bcd49428_dep.map new file mode 100644 index 0000000..b40d3bf --- /dev/null +++ b/docs/html/dir_936721fd6a792737eaef7358bcd49428_dep.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/dir_936721fd6a792737eaef7358bcd49428_dep.md5 b/docs/html/dir_936721fd6a792737eaef7358bcd49428_dep.md5 new file mode 100644 index 0000000..73aeee4 --- /dev/null +++ b/docs/html/dir_936721fd6a792737eaef7358bcd49428_dep.md5 @@ -0,0 +1 @@ +a6827e6f70050682b6d24a1b9d480500 \ No newline at end of file diff --git a/docs/html/dir_936721fd6a792737eaef7358bcd49428_dep.svg b/docs/html/dir_936721fd6a792737eaef7358bcd49428_dep.svg new file mode 100644 index 0000000..58e278f --- /dev/null +++ b/docs/html/dir_936721fd6a792737eaef7358bcd49428_dep.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + +src/lib/topology + +clusterdir_c85d3e3c5052e9ad9ce18c6863244a25 + + +lib + + + + + +dir_936721fd6a792737eaef7358bcd49428 + + +topology + + + + + +dir_b0856f6b0d80ccb263b2f415c91f9e17 + + +include + + + + + +dir_936721fd6a792737eaef7358bcd49428->dir_b0856f6b0d80ccb263b2f415c91f9e17 + + + + + + +4 + + + + + + + + + + diff --git a/docs/html/dir_936721fd6a792737eaef7358bcd49428_dep_org.svg b/docs/html/dir_936721fd6a792737eaef7358bcd49428_dep_org.svg new file mode 100644 index 0000000..638757c --- /dev/null +++ b/docs/html/dir_936721fd6a792737eaef7358bcd49428_dep_org.svg @@ -0,0 +1,51 @@ + + + + + + +src/lib/topology + +clusterdir_c85d3e3c5052e9ad9ce18c6863244a25 + + +lib + + + + + +dir_936721fd6a792737eaef7358bcd49428 + + +topology + + + + + +dir_b0856f6b0d80ccb263b2f415c91f9e17 + + +include + + + + + +dir_936721fd6a792737eaef7358bcd49428->dir_b0856f6b0d80ccb263b2f415c91f9e17 + + + + + + +4 + + + + + diff --git a/docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c.html b/docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c.html new file mode 100644 index 0000000..45d405e --- /dev/null +++ b/docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c.html @@ -0,0 +1,128 @@ + + + + + + + +stroid: src/include/stroid/utils Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
utils Directory Reference
+
+
+
+Directory dependency graph for utils:
+
+
+
+ + + + +

+Files

 mesh_utils.h
 
+
+
+ + + + diff --git a/docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c.js b/docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c.js new file mode 100644 index 0000000..5a1ec02 --- /dev/null +++ b/docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c.js @@ -0,0 +1,4 @@ +var dir_9d5018b9ddb63a582aa4c6b91bec2f8c = +[ + [ "mesh_utils.h", "mesh__utils_8h.html", "mesh__utils_8h" ] +]; \ No newline at end of file diff --git a/docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c_dep.map b/docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c_dep.map new file mode 100644 index 0000000..c2111a6 --- /dev/null +++ b/docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c_dep.md5 b/docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c_dep.md5 new file mode 100644 index 0000000..6b3b9ed --- /dev/null +++ b/docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c_dep.md5 @@ -0,0 +1 @@ +df55410125b942793bb664278575ee94 \ No newline at end of file diff --git a/docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c_dep.svg b/docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c_dep.svg new file mode 100644 index 0000000..e6e614b --- /dev/null +++ b/docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c_dep.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + +src/include/stroid/utils + +clusterdir_3f4f28e99864f6e7d54ad0c93ce0a2a5 + + +stroid + + + + + +dir_9d5018b9ddb63a582aa4c6b91bec2f8c + + +utils + + + + + + + + + + diff --git a/docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c_dep_org.svg b/docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c_dep_org.svg new file mode 100644 index 0000000..287dfe5 --- /dev/null +++ b/docs/html/dir_9d5018b9ddb63a582aa4c6b91bec2f8c_dep_org.svg @@ -0,0 +1,29 @@ + + + + + + +src/include/stroid/utils + +clusterdir_3f4f28e99864f6e7d54ad0c93ce0a2a5 + + +stroid + + + + + +dir_9d5018b9ddb63a582aa4c6b91bec2f8c + + +utils + + + + + diff --git a/docs/html/dir_9da86e8abab39b749c6020360d8e4403.html b/docs/html/dir_9da86e8abab39b749c6020360d8e4403.html new file mode 100644 index 0000000..23e666a --- /dev/null +++ b/docs/html/dir_9da86e8abab39b749c6020360d8e4403.html @@ -0,0 +1,132 @@ + + + + + + + +stroid: src/include/stroid/topology Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
topology Directory Reference
+
+
+
+Directory dependency graph for topology:
+
+
+
+ + + + + + + + +

+Files

 curvilinear.h
 
 mapping.h
 
 topology.h
 
+
+
+ + + + diff --git a/docs/html/dir_9da86e8abab39b749c6020360d8e4403.js b/docs/html/dir_9da86e8abab39b749c6020360d8e4403.js new file mode 100644 index 0000000..7beae3e --- /dev/null +++ b/docs/html/dir_9da86e8abab39b749c6020360d8e4403.js @@ -0,0 +1,6 @@ +var dir_9da86e8abab39b749c6020360d8e4403 = +[ + [ "curvilinear.h", "curvilinear_8h.html", "curvilinear_8h" ], + [ "mapping.h", "mapping_8h.html", "mapping_8h" ], + [ "topology.h", "topology_8h.html", "topology_8h" ] +]; \ No newline at end of file diff --git a/docs/html/dir_9da86e8abab39b749c6020360d8e4403_dep.map b/docs/html/dir_9da86e8abab39b749c6020360d8e4403_dep.map new file mode 100644 index 0000000..f1e1e42 --- /dev/null +++ b/docs/html/dir_9da86e8abab39b749c6020360d8e4403_dep.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/dir_9da86e8abab39b749c6020360d8e4403_dep.md5 b/docs/html/dir_9da86e8abab39b749c6020360d8e4403_dep.md5 new file mode 100644 index 0000000..03b264d --- /dev/null +++ b/docs/html/dir_9da86e8abab39b749c6020360d8e4403_dep.md5 @@ -0,0 +1 @@ +19d94e8bef8dac3ca0c5b36cb64c7024 \ No newline at end of file diff --git a/docs/html/dir_9da86e8abab39b749c6020360d8e4403_dep.svg b/docs/html/dir_9da86e8abab39b749c6020360d8e4403_dep.svg new file mode 100644 index 0000000..17637ba --- /dev/null +++ b/docs/html/dir_9da86e8abab39b749c6020360d8e4403_dep.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + +src/include/stroid/topology + +clusterdir_3f4f28e99864f6e7d54ad0c93ce0a2a5 + + +stroid + + + + + +dir_dc36fd7496f87f6989d6d6a9445d600c + + +config + + + + + +dir_9da86e8abab39b749c6020360d8e4403 + + +topology + + + + + +dir_9da86e8abab39b749c6020360d8e4403->dir_dc36fd7496f87f6989d6d6a9445d600c + + + + + + +3 + + + + + + + + + + diff --git a/docs/html/dir_9da86e8abab39b749c6020360d8e4403_dep_org.svg b/docs/html/dir_9da86e8abab39b749c6020360d8e4403_dep_org.svg new file mode 100644 index 0000000..3c6e344 --- /dev/null +++ b/docs/html/dir_9da86e8abab39b749c6020360d8e4403_dep_org.svg @@ -0,0 +1,51 @@ + + + + + + +src/include/stroid/topology + +clusterdir_3f4f28e99864f6e7d54ad0c93ce0a2a5 + + +stroid + + + + + +dir_dc36fd7496f87f6989d6d6a9445d600c + + +config + + + + + +dir_9da86e8abab39b749c6020360d8e4403 + + +topology + + + + + +dir_9da86e8abab39b749c6020360d8e4403->dir_dc36fd7496f87f6989d6d6a9445d600c + + + + + + +3 + + + + + diff --git a/docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17.html b/docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17.html new file mode 100644 index 0000000..c7d0bb0 --- /dev/null +++ b/docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17.html @@ -0,0 +1,128 @@ + + + + + + + +stroid: src/include Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
include Directory Reference
+
+
+
+Directory dependency graph for include:
+
+
+
+ + + + +

+Directories

 stroid
 
+
+
+ + + + diff --git a/docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17.js b/docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17.js new file mode 100644 index 0000000..22133d9 --- /dev/null +++ b/docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17.js @@ -0,0 +1,4 @@ +var dir_b0856f6b0d80ccb263b2f415c91f9e17 = +[ + [ "stroid", "dir_3f4f28e99864f6e7d54ad0c93ce0a2a5.html", "dir_3f4f28e99864f6e7d54ad0c93ce0a2a5" ] +]; \ No newline at end of file diff --git a/docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17_dep.map b/docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17_dep.map new file mode 100644 index 0000000..b26b26d --- /dev/null +++ b/docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17_dep.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17_dep.md5 b/docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17_dep.md5 new file mode 100644 index 0000000..db79cf8 --- /dev/null +++ b/docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17_dep.md5 @@ -0,0 +1 @@ +d122226338cde97b2e93eef8f433cf66 \ No newline at end of file diff --git a/docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17_dep.svg b/docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17_dep.svg new file mode 100644 index 0000000..44dea48 --- /dev/null +++ b/docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17_dep.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +src/include + +clusterdir_68267d1309a1af8e8297ef4c3efbcdba + + +src + + + + +clusterdir_b0856f6b0d80ccb263b2f415c91f9e17 + + + + + + + +dir_b0856f6b0d80ccb263b2f415c91f9e17 +include + + + +dir_3f4f28e99864f6e7d54ad0c93ce0a2a5 + + +stroid + + + + + + + + + + diff --git a/docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17_dep_org.svg b/docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17_dep_org.svg new file mode 100644 index 0000000..498e471 --- /dev/null +++ b/docs/html/dir_b0856f6b0d80ccb263b2f415c91f9e17_dep_org.svg @@ -0,0 +1,41 @@ + + + + + + +src/include + +clusterdir_68267d1309a1af8e8297ef4c3efbcdba + + +src + + + + +clusterdir_b0856f6b0d80ccb263b2f415c91f9e17 + + + + + + + +dir_b0856f6b0d80ccb263b2f415c91f9e17 +include + + + +dir_3f4f28e99864f6e7d54ad0c93ce0a2a5 + + +stroid + + + + + diff --git a/docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4.html b/docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4.html new file mode 100644 index 0000000..51e1c3e --- /dev/null +++ b/docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4.html @@ -0,0 +1,128 @@ + + + + + + + +stroid: docs/static Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
static Directory Reference
+
+
+
+Directory dependency graph for static:
+
+
+
+ + + + +

+Files

 Logo.png
 
+
+
+ + + + diff --git a/docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4.js b/docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4.js new file mode 100644 index 0000000..6741c15 --- /dev/null +++ b/docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4.js @@ -0,0 +1,4 @@ +var dir_c34d5e8363cf0aa3fabc4f3fad3412a4 = +[ + [ "Logo.png", "_logo_8png.html", null ] +]; \ No newline at end of file diff --git a/docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4_dep.map b/docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4_dep.map new file mode 100644 index 0000000..a917bf1 --- /dev/null +++ b/docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4_dep.md5 b/docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4_dep.md5 new file mode 100644 index 0000000..fa6aea1 --- /dev/null +++ b/docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4_dep.md5 @@ -0,0 +1 @@ +4c1d9d4771b8108d8eba3adfb437b72d \ No newline at end of file diff --git a/docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4_dep.svg b/docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4_dep.svg new file mode 100644 index 0000000..53423d3 --- /dev/null +++ b/docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4_dep.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + +docs/static + +clusterdir_49e56c817e5e54854c35e136979f97ca + + +docs + + + + + +dir_c34d5e8363cf0aa3fabc4f3fad3412a4 + + +static + + + + + + + + + + diff --git a/docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4_dep_org.svg b/docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4_dep_org.svg new file mode 100644 index 0000000..74ca64c --- /dev/null +++ b/docs/html/dir_c34d5e8363cf0aa3fabc4f3fad3412a4_dep_org.svg @@ -0,0 +1,29 @@ + + + + + + +docs/static + +clusterdir_49e56c817e5e54854c35e136979f97ca + + +docs + + + + + +dir_c34d5e8363cf0aa3fabc4f3fad3412a4 + + +static + + + + + diff --git a/docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25.html b/docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25.html new file mode 100644 index 0000000..039e264 --- /dev/null +++ b/docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25.html @@ -0,0 +1,132 @@ + + + + + + + +stroid: src/lib Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
lib Directory Reference
+
+
+
+Directory dependency graph for lib:
+
+
+
+ + + + + + + + +

+Directories

 IO
 
 topology
 
 utils
 
+
+
+ + + + diff --git a/docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25.js b/docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25.js new file mode 100644 index 0000000..f04ecbb --- /dev/null +++ b/docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25.js @@ -0,0 +1,6 @@ +var dir_c85d3e3c5052e9ad9ce18c6863244a25 = +[ + [ "IO", "dir_82887d4f338e92537fa9d809bec8c614.html", "dir_82887d4f338e92537fa9d809bec8c614" ], + [ "topology", "dir_936721fd6a792737eaef7358bcd49428.html", "dir_936721fd6a792737eaef7358bcd49428" ], + [ "utils", "dir_87d18a4dc5174905bfd7d2dc734defe6.html", "dir_87d18a4dc5174905bfd7d2dc734defe6" ] +]; \ No newline at end of file diff --git a/docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25_dep.map b/docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25_dep.map new file mode 100644 index 0000000..82a40c0 --- /dev/null +++ b/docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25_dep.map @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25_dep.md5 b/docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25_dep.md5 new file mode 100644 index 0000000..e440e21 --- /dev/null +++ b/docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25_dep.md5 @@ -0,0 +1 @@ +5d9ef3125767d08f4f264c156680ff08 \ No newline at end of file diff --git a/docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25_dep.svg b/docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25_dep.svg new file mode 100644 index 0000000..db422b3 --- /dev/null +++ b/docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25_dep.svg @@ -0,0 +1,133 @@ + + + + + + + + + + + + +src/lib + +clusterdir_68267d1309a1af8e8297ef4c3efbcdba + + +src + + + + +clusterdir_c85d3e3c5052e9ad9ce18c6863244a25 + + + + + + + +dir_b0856f6b0d80ccb263b2f415c91f9e17 + + +include + + + + + +dir_c85d3e3c5052e9ad9ce18c6863244a25 +lib + + + +dir_82887d4f338e92537fa9d809bec8c614 + + +IO + + + + + +dir_82887d4f338e92537fa9d809bec8c614->dir_b0856f6b0d80ccb263b2f415c91f9e17 + + + + + + +2 + + + + + +dir_936721fd6a792737eaef7358bcd49428 + + +topology + + + + + +dir_936721fd6a792737eaef7358bcd49428->dir_b0856f6b0d80ccb263b2f415c91f9e17 + + + + + + +4 + + + + + +dir_87d18a4dc5174905bfd7d2dc734defe6 + + +utils + + + + + +dir_87d18a4dc5174905bfd7d2dc734defe6->dir_b0856f6b0d80ccb263b2f415c91f9e17 + + + + + + +1 + + + + + + + + + + diff --git a/docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25_dep_org.svg b/docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25_dep_org.svg new file mode 100644 index 0000000..8e77321 --- /dev/null +++ b/docs/html/dir_c85d3e3c5052e9ad9ce18c6863244a25_dep_org.svg @@ -0,0 +1,107 @@ + + + + + + +src/lib + +clusterdir_68267d1309a1af8e8297ef4c3efbcdba + + +src + + + + +clusterdir_c85d3e3c5052e9ad9ce18c6863244a25 + + + + + + + +dir_b0856f6b0d80ccb263b2f415c91f9e17 + + +include + + + + + +dir_c85d3e3c5052e9ad9ce18c6863244a25 +lib + + + +dir_82887d4f338e92537fa9d809bec8c614 + + +IO + + + + + +dir_82887d4f338e92537fa9d809bec8c614->dir_b0856f6b0d80ccb263b2f415c91f9e17 + + + + + + +2 + + + + + +dir_936721fd6a792737eaef7358bcd49428 + + +topology + + + + + +dir_936721fd6a792737eaef7358bcd49428->dir_b0856f6b0d80ccb263b2f415c91f9e17 + + + + + + +4 + + + + + +dir_87d18a4dc5174905bfd7d2dc734defe6 + + +utils + + + + + +dir_87d18a4dc5174905bfd7d2dc734defe6->dir_b0856f6b0d80ccb263b2f415c91f9e17 + + + + + + +1 + + + + + diff --git a/docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c.html b/docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c.html new file mode 100644 index 0000000..9e4fe8a --- /dev/null +++ b/docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c.html @@ -0,0 +1,128 @@ + + + + + + + +stroid: src/include/stroid/config Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
config Directory Reference
+
+
+
+Directory dependency graph for config:
+
+
+
+ + + + +

+Files

 config.h
 
+
+
+ + + + diff --git a/docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c.js b/docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c.js new file mode 100644 index 0000000..b31135f --- /dev/null +++ b/docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c.js @@ -0,0 +1,4 @@ +var dir_dc36fd7496f87f6989d6d6a9445d600c = +[ + [ "config.h", "config_8h.html", "config_8h" ] +]; \ No newline at end of file diff --git a/docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c_dep.map b/docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c_dep.map new file mode 100644 index 0000000..9f3e70c --- /dev/null +++ b/docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c_dep.md5 b/docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c_dep.md5 new file mode 100644 index 0000000..66c795e --- /dev/null +++ b/docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c_dep.md5 @@ -0,0 +1 @@ +08010ff88bb423668ee29dfac5186ac4 \ No newline at end of file diff --git a/docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c_dep.svg b/docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c_dep.svg new file mode 100644 index 0000000..ea9b0aa --- /dev/null +++ b/docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c_dep.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + +src/include/stroid/config + +clusterdir_3f4f28e99864f6e7d54ad0c93ce0a2a5 + + +stroid + + + + + +dir_dc36fd7496f87f6989d6d6a9445d600c + + +config + + + + + + + + + + diff --git a/docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c_dep_org.svg b/docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c_dep_org.svg new file mode 100644 index 0000000..70eff12 --- /dev/null +++ b/docs/html/dir_dc36fd7496f87f6989d6d6a9445d600c_dep_org.svg @@ -0,0 +1,29 @@ + + + + + + +src/include/stroid/config + +clusterdir_3f4f28e99864f6e7d54ad0c93ce0a2a5 + + +stroid + + + + + +dir_dc36fd7496f87f6989d6d6a9445d600c + + +config + + + + + diff --git a/docs/html/doc.svg b/docs/html/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/docs/html/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/html/docd.svg b/docs/html/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/docs/html/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/html/doxygen-awesome-sidebar-only.css b/docs/html/doxygen-awesome-sidebar-only.css new file mode 100644 index 0000000..853f6d6 --- /dev/null +++ b/docs/html/doxygen-awesome-sidebar-only.css @@ -0,0 +1,116 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + */ + +html { + /* side nav width. MUST be = `TREEVIEW_WIDTH`. + * Make sure it is wide enough to contain the page title (logo + title + version) + */ + --side-nav-fixed-width: 335px; + --menu-display: none; + + --top-height: 120px; + --toc-sticky-top: -25px; + --toc-max-height: calc(100vh - 2 * var(--spacing-medium) - 25px); +} + +#projectname { + white-space: nowrap; +} + + +@media screen and (min-width: 768px) { + html { + --searchbar-background: var(--page-background-color); + } + + #side-nav { + min-width: var(--side-nav-fixed-width); + max-width: var(--side-nav-fixed-width); + top: var(--top-height); + overflow: visible; + } + + #nav-tree, #side-nav { + height: calc(100vh - var(--top-height)) !important; + } + + #nav-tree { + padding: 0; + } + + #top { + display: block; + border-bottom: none; + height: var(--top-height); + margin-bottom: calc(0px - var(--top-height)); + max-width: var(--side-nav-fixed-width); + overflow: hidden; + background: var(--side-nav-background); + } + #main-nav { + float: left; + padding-right: 0; + } + + .ui-resizable-handle { + cursor: default; + width: 1px !important; + background: var(--separator-color); + box-shadow: 0 calc(-2 * var(--top-height)) 0 0 var(--separator-color); + } + + #nav-path { + position: fixed; + right: 0; + left: var(--side-nav-fixed-width); + bottom: 0; + width: auto; + } + + #doc-content { + height: calc(100vh - 31px) !important; + padding-bottom: calc(3 * var(--spacing-large)); + padding-top: calc(var(--top-height) - 80px); + box-sizing: border-box; + margin-left: var(--side-nav-fixed-width) !important; + } + + #MSearchBox { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium))); + } + + #MSearchField { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - 65px); + } + + #MSearchResultsWindow { + left: var(--spacing-medium) !important; + right: auto; + } +} diff --git a/docs/html/doxygen-awesome.css b/docs/html/doxygen-awesome.css new file mode 100644 index 0000000..c2f4114 --- /dev/null +++ b/docs/html/doxygen-awesome.css @@ -0,0 +1,2681 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +html { + /* primary theme color. This will affect the entire websites color scheme: links, arrows, labels, ... */ + --primary-color: #1779c4; + --primary-dark-color: #335c80; + --primary-light-color: #70b1e9; + + /* page base colors */ + --page-background-color: #ffffff; + --page-foreground-color: #2f4153; + --page-secondary-foreground-color: #6f7e8e; + + /* color for all separators on the website: hr, borders, ... */ + --separator-color: #dedede; + + /* border radius for all rounded components. Will affect many components, like dropdowns, memitems, codeblocks, ... */ + --border-radius-large: 8px; + --border-radius-small: 4px; + --border-radius-medium: 6px; + + /* default spacings. Most components reference these values for spacing, to provide uniform spacing on the page. */ + --spacing-small: 5px; + --spacing-medium: 10px; + --spacing-large: 16px; + + /* default box shadow used for raising an element above the normal content. Used in dropdowns, search result, ... */ + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.075); + + --odd-color: rgba(0,0,0,.028); + + /* font-families. will affect all text on the website + * font-family: the normal font for text, headlines, menus + * font-family-monospace: used for preformatted text in memtitle, code, fragments + */ + --font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif; + --font-family-monospace: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; + + /* font sizes */ + --page-font-size: 15.6px; + --navigation-font-size: 14.4px; + --toc-font-size: 13.4px; + --code-font-size: 14px; /* affects code, fragment */ + --title-font-size: 22px; + + /* content text properties. These only affect the page content, not the navigation or any other ui elements */ + --content-line-height: 27px; + /* The content is centered and constraint in it's width. To make the content fill the whole page, set the variable to auto.*/ + --content-maxwidth: 1050px; + --table-line-height: 24px; + --toc-sticky-top: var(--spacing-medium); + --toc-width: 200px; + --toc-max-height: calc(100vh - 2 * var(--spacing-medium) - 85px); + + /* colors for various content boxes: @warning, @note, @deprecated @bug */ + --warning-color: #faf3d8; + --warning-color-dark: #f3a600; + --warning-color-darker: #5f4204; + --note-color: #e4f3ff; + --note-color-dark: #1879C4; + --note-color-darker: #274a5c; + --todo-color: #e4dafd; + --todo-color-dark: #5b2bdd; + --todo-color-darker: #2a0d72; + --deprecated-color: #ecf0f3; + --deprecated-color-dark: #5b6269; + --deprecated-color-darker: #43454a; + --bug-color: #f8d1cc; + --bug-color-dark: #b61825; + --bug-color-darker: #75070f; + --invariant-color: #d8f1e3; + --invariant-color-dark: #44b86f; + --invariant-color-darker: #265532; + + /* blockquote colors */ + --blockquote-background: #f8f9fa; + --blockquote-foreground: #636568; + + /* table colors */ + --tablehead-background: #f1f1f1; + --tablehead-foreground: var(--page-foreground-color); + + /* menu-display: block | none + * Visibility of the top navigation on screens >= 768px. On smaller screen the menu is always visible. + * `GENERATE_TREEVIEW` MUST be enabled! + */ + --menu-display: block; + + --menu-focus-foreground: var(--page-background-color); + --menu-focus-background: var(--primary-color); + --menu-selected-background: rgba(0,0,0,.05); + + + --header-background: var(--page-background-color); + --header-foreground: var(--page-foreground-color); + + /* searchbar colors */ + --searchbar-background: var(--side-nav-background); + --searchbar-foreground: var(--page-foreground-color); + + /* searchbar size + * (`searchbar-width` is only applied on screens >= 768px. + * on smaller screens the searchbar will always fill the entire screen width) */ + --searchbar-height: 33px; + --searchbar-width: 210px; + --searchbar-border-radius: var(--searchbar-height); + + /* code block colors */ + --code-background: #f5f5f5; + --code-foreground: var(--page-foreground-color); + + /* fragment colors */ + --fragment-background: #F8F9FA; + --fragment-foreground: #37474F; + --fragment-keyword: #bb6bb2; + --fragment-keywordtype: #8258b3; + --fragment-keywordflow: #d67c3b; + --fragment-token: #438a59; + --fragment-comment: #969696; + --fragment-link: #5383d6; + --fragment-preprocessor: #46aaa5; + --fragment-linenumber-color: #797979; + --fragment-linenumber-background: #f4f4f5; + --fragment-linenumber-border: #e3e5e7; + --fragment-lineheight: 20px; + + /* sidebar navigation (treeview) colors */ + --side-nav-background: #fbfbfb; + --side-nav-foreground: var(--page-foreground-color); + --side-nav-arrow-opacity: 0; + --side-nav-arrow-hover-opacity: 0.9; + + --toc-background: var(--side-nav-background); + --toc-foreground: var(--side-nav-foreground); + + /* height of an item in any tree / collapsible table */ + --tree-item-height: 30px; + + --memname-font-size: var(--code-font-size); + --memtitle-font-size: 18px; + + --webkit-scrollbar-size: 7px; + --webkit-scrollbar-padding: 4px; + --webkit-scrollbar-color: var(--separator-color); + + --animation-duration: .12s +} + +@media screen and (max-width: 767px) { + html { + --page-font-size: 16px; + --navigation-font-size: 16px; + --toc-font-size: 15px; + --code-font-size: 15px; /* affects code, fragment */ + --title-font-size: 22px; + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.35); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #3b2e04; + --warning-color-dark: #f1b602; + --warning-color-darker: #ceb670; + --note-color: #163750; + --note-color-dark: #1982D2; + --note-color-darker: #dcf0fa; + --todo-color: #2a2536; + --todo-color-dark: #7661b3; + --todo-color-darker: #ae9ed6; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2e1917; + --bug-color-dark: #ad2617; + --bug-color-darker: #f5b1aa; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; + } +} + +/* dark mode variables are defined twice, to support both the dark-mode without and with doxygen-awesome-darkmode-toggle.js */ +html.dark-mode { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.30); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #3b2e04; + --warning-color-dark: #f1b602; + --warning-color-darker: #ceb670; + --note-color: #163750; + --note-color-dark: #1982D2; + --note-color-darker: #dcf0fa; + --todo-color: #2a2536; + --todo-color-dark: #7661b3; + --todo-color-darker: #ae9ed6; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2e1917; + --bug-color-dark: #ad2617; + --bug-color-darker: #f5b1aa; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; +} + +body { + color: var(--page-foreground-color); + background-color: var(--page-background-color); + font-size: var(--page-font-size); +} + +body, table, div, p, dl, #nav-tree .label, .title, +.sm-dox a, .sm-dox a:hover, .sm-dox a:focus, #projectname, +.SelectItem, #MSearchField, .navpath li.navelem a, +.navpath li.navelem a:hover, p.reference, p.definition, div.toc li, div.toc h3 { + font-family: var(--font-family); +} + +h1, h2, h3, h4, h5 { + margin-top: 1em; + font-weight: 600; + line-height: initial; +} + +p, div, table, dl, p.reference, p.definition { + font-size: var(--page-font-size); +} + +p.reference, p.definition { + color: var(--page-secondary-foreground-color); +} + +a:link, a:visited, a:hover, a:focus, a:active { + color: var(--primary-color) !important; + font-weight: 500; + background: none; +} + +a.anchor { + scroll-margin-top: var(--spacing-large); + display: block; +} + +/* + Title and top navigation + */ + +#top { + background: var(--header-background); + border-bottom: 1px solid var(--separator-color); +} + +@media screen and (min-width: 768px) { + #top { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; + } +} + +#main-nav { + flex-grow: 5; + padding: var(--spacing-small) var(--spacing-medium); +} + +#titlearea { + width: auto; + padding: var(--spacing-medium) var(--spacing-large); + background: none; + color: var(--header-foreground); + border-bottom: none; +} + +@media screen and (max-width: 767px) { + #titlearea { + padding-bottom: var(--spacing-small); + } +} + +#titlearea table tbody tr { + height: auto !important; +} + +#projectname { + font-size: var(--title-font-size); + font-weight: 600; +} + +#projectnumber { + font-family: inherit; + font-size: 60%; +} + +#projectbrief { + font-family: inherit; + font-size: 80%; +} + +#projectlogo { + vertical-align: middle; +} + +#projectlogo img { + max-height: calc(var(--title-font-size) * 2); + margin-right: var(--spacing-small); +} + +.sm-dox, .tabs, .tabs2, .tabs3 { + background: none; + padding: 0; +} + +.tabs, .tabs2, .tabs3 { + border-bottom: 1px solid var(--separator-color); + margin-bottom: -1px; +} + +.main-menu-btn-icon, .main-menu-btn-icon:before, .main-menu-btn-icon:after { + background: var(--page-secondary-foreground-color); +} + +@media screen and (max-width: 767px) { + .sm-dox a span.sub-arrow { + background: var(--code-background); + } + + #main-menu a.has-submenu span.sub-arrow { + color: var(--page-secondary-foreground-color); + border-radius: var(--border-radius-medium); + } + + #main-menu a.has-submenu:hover span.sub-arrow { + color: var(--page-foreground-color); + } +} + +@media screen and (min-width: 768px) { + .sm-dox li, .tablist li { + display: var(--menu-display); + } + + .sm-dox a span.sub-arrow { + border-color: var(--header-foreground) transparent transparent transparent; + } + + .sm-dox a:hover span.sub-arrow { + border-color: var(--menu-focus-foreground) transparent transparent transparent; + } + + .sm-dox ul a span.sub-arrow { + border-color: transparent transparent transparent var(--page-foreground-color); + } + + .sm-dox ul a:hover span.sub-arrow { + border-color: transparent transparent transparent var(--menu-focus-foreground); + } +} + +.sm-dox ul { + background: var(--page-background-color); + box-shadow: var(--box-shadow); + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium) !important; + padding: var(--spacing-small); + animation: ease-out 150ms slideInMenu; +} + +@keyframes slideInMenu { + from { + opacity: 0; + transform: translate(0px, -2px); + } + + to { + opacity: 1; + transform: translate(0px, 0px); + } +} + +.sm-dox ul a { + color: var(--page-foreground-color) !important; + background: var(--page-background-color); + font-size: var(--navigation-font-size); +} + +.sm-dox>li>ul:after { + border-bottom-color: var(--page-background-color) !important; +} + +.sm-dox>li>ul:before { + border-bottom-color: var(--separator-color) !important; +} + +.sm-dox ul a:hover, .sm-dox ul a:active, .sm-dox ul a:focus { + font-size: var(--navigation-font-size) !important; + color: var(--menu-focus-foreground) !important; + text-shadow: none; + background-color: var(--menu-focus-background); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a, .sm-dox a:focus, .tablist li, .tablist li a, .tablist li.current a { + text-shadow: none; + background: transparent; + background-image: none !important; + color: var(--header-foreground) !important; + font-weight: normal; + font-size: var(--navigation-font-size); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a:focus { + outline: auto; +} + +.sm-dox a:hover, .sm-dox a:active, .tablist li a:hover { + text-shadow: none; + font-weight: normal; + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; + border-radius: var(--border-radius-small) !important; + font-size: var(--navigation-font-size); +} + +.tablist li.current { + border-radius: var(--border-radius-small); + background: var(--menu-selected-background); +} + +.tablist li { + margin: var(--spacing-small) 0 var(--spacing-small) var(--spacing-small); +} + +.tablist a { + padding: 0 var(--spacing-large); +} + + +/* + Search box + */ + +#MSearchBox { + height: var(--searchbar-height); + background: var(--searchbar-background); + border-radius: var(--searchbar-border-radius); + border: 1px solid var(--separator-color); + overflow: hidden; + width: var(--searchbar-width); + position: relative; + box-shadow: none; + display: block; + margin-top: 0; +} + +/* until Doxygen 1.9.4 */ +.left img#MSearchSelect { + left: 0; + user-select: none; + padding-left: 8px; +} + +/* Doxygen 1.9.5 */ +.left span#MSearchSelect { + left: 0; + user-select: none; + margin-left: 8px; + padding: 0; +} + +.left #MSearchSelect[src$=".png"] { + padding-left: 0 +} + +.SelectionMark { + user-select: none; +} + +.tabs .left #MSearchSelect { + padding-left: 0; +} + +.tabs #MSearchBox { + position: absolute; + right: var(--spacing-medium); +} + +@media screen and (max-width: 767px) { + .tabs #MSearchBox { + position: relative; + right: 0; + margin-left: var(--spacing-medium); + margin-top: 0; + } +} + +#MSearchSelectWindow, #MSearchResultsWindow { + z-index: 9999; +} + +#MSearchBox.MSearchBoxActive { + border-color: var(--primary-color); + box-shadow: inset 0 0 0 1px var(--primary-color); +} + +#main-menu > li:last-child { + margin-right: 0; +} + +@media screen and (max-width: 767px) { + #main-menu > li:last-child { + height: 50px; + } +} + +#MSearchField { + font-size: var(--navigation-font-size); + height: calc(var(--searchbar-height) - 2px); + background: transparent; + width: calc(var(--searchbar-width) - 64px); +} + +.MSearchBoxActive #MSearchField { + color: var(--searchbar-foreground); +} + +#MSearchSelect { + top: calc(calc(var(--searchbar-height) / 2) - 11px); +} + +#MSearchBox span.left, #MSearchBox span.right { + background: none; + background-image: none; +} + +#MSearchBox span.right { + padding-top: calc(calc(var(--searchbar-height) / 2) - 12px); + position: absolute; + right: var(--spacing-small); +} + +.tabs #MSearchBox span.right { + top: calc(calc(var(--searchbar-height) / 2) - 12px); +} + +@keyframes slideInSearchResults { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } +} + +#MSearchResultsWindow { + left: auto !important; + right: var(--spacing-medium); + border-radius: var(--border-radius-large); + border: 1px solid var(--separator-color); + transform: translate(0, 20px); + box-shadow: var(--box-shadow); + animation: ease-out 280ms slideInSearchResults; + background: var(--page-background-color); +} + +iframe#MSearchResults { + margin: 4px; +} + +iframe { + color-scheme: normal; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) iframe#MSearchResults { + filter: invert() hue-rotate(180deg); + } +} + +html.dark-mode iframe#MSearchResults { + filter: invert() hue-rotate(180deg); +} + +#MSearchResults .SRPage { + background-color: transparent; +} + +#MSearchResults .SRPage .SREntry { + font-size: 10pt; + padding: var(--spacing-small) var(--spacing-medium); +} + +#MSearchSelectWindow { + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + box-shadow: var(--box-shadow); + background: var(--page-background-color); + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); +} + +#MSearchSelectWindow a.SelectItem { + font-size: var(--navigation-font-size); + line-height: var(--content-line-height); + margin: 0 var(--spacing-small); + border-radius: var(--border-radius-small); + color: var(--page-foreground-color) !important; + font-weight: normal; +} + +#MSearchSelectWindow a.SelectItem:hover { + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; +} + +@media screen and (max-width: 767px) { + #MSearchBox { + margin-top: var(--spacing-medium); + margin-bottom: var(--spacing-medium); + width: calc(100vw - 30px); + } + + #main-menu > li:last-child { + float: none !important; + } + + #MSearchField { + width: calc(100vw - 110px); + } + + @keyframes slideInSearchResultsMobile { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } + } + + #MSearchResultsWindow { + left: var(--spacing-medium) !important; + right: var(--spacing-medium); + overflow: auto; + transform: translate(0, 20px); + animation: ease-out 280ms slideInSearchResultsMobile; + width: auto !important; + } + + /* + * Overwrites for fixing the searchbox on mobile in doxygen 1.9.2 + */ + label.main-menu-btn ~ #searchBoxPos1 { + top: 3px !important; + right: 6px !important; + left: 45px; + display: flex; + } + + label.main-menu-btn ~ #searchBoxPos1 > #MSearchBox { + margin-top: 0; + margin-bottom: 0; + flex-grow: 2; + float: left; + } +} + +/* + Tree view + */ + +#side-nav { + padding: 0 !important; + background: var(--side-nav-background); + min-width: 8px; + max-width: 50vw; +} + +@media screen and (max-width: 767px) { + #side-nav { + display: none; + } + + #doc-content { + margin-left: 0 !important; + } +} + +#nav-tree { + background: transparent; + margin-right: 1px; +} + +#nav-tree .label { + font-size: var(--navigation-font-size); +} + +#nav-tree .item { + height: var(--tree-item-height); + line-height: var(--tree-item-height); + overflow: hidden; + text-overflow: ellipsis; +} + +#nav-tree .item > a:focus { + outline: none; +} + +#nav-sync { + bottom: 12px; + right: 12px; + top: auto !important; + user-select: none; +} + +#nav-tree .selected { + text-shadow: none; + background-image: none; + background-color: transparent; + position: relative; + color: var(--primary-color) !important; + font-weight: 500; +} + +#nav-tree .selected::after { + content: ""; + position: absolute; + top: 1px; + bottom: 1px; + left: 0; + width: 4px; + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + background: var(--primary-color); +} + + +#nav-tree a { + color: var(--side-nav-foreground) !important; + font-weight: normal; +} + +#nav-tree a:focus { + outline-style: auto; +} + +#nav-tree .arrow { + opacity: var(--side-nav-arrow-opacity); + background: none; +} + +.arrow { + color: inherit; + cursor: pointer; + font-size: 45%; + vertical-align: middle; + margin-right: 2px; + font-family: serif; + height: auto; + text-align: right; +} + +#nav-tree div.item:hover .arrow, #nav-tree a:focus .arrow { + opacity: var(--side-nav-arrow-hover-opacity); +} + +#nav-tree .selected a { + color: var(--primary-color) !important; + font-weight: bolder; + font-weight: 600; +} + +.ui-resizable-e { + width: 4px; + background: transparent; + box-shadow: inset -1px 0 0 0 var(--separator-color); +} + +/* + Contents + */ + +div.header { + border-bottom: 1px solid var(--separator-color); + background-color: var(--page-background-color); + background-image: none; +} + +@media screen and (min-width: 1000px) { + #doc-content > div > div.contents, + .PageDoc > div.contents { + display: flex; + flex-direction: row-reverse; + flex-wrap: nowrap; + align-items: flex-start; + } + + div.contents .textblock { + min-width: 200px; + flex-grow: 1; + } +} + +div.contents, div.header .title, div.header .summary { + max-width: var(--content-maxwidth); +} + +div.contents, div.header .title { + line-height: initial; + margin: calc(var(--spacing-medium) + .2em) auto var(--spacing-medium) auto; +} + +div.header .summary { + margin: var(--spacing-medium) auto 0 auto; +} + +div.headertitle { + padding: 0; +} + +div.header .title { + font-weight: 600; + font-size: 225%; + padding: var(--spacing-medium) var(--spacing-large); + word-break: break-word; +} + +div.header .summary { + width: auto; + display: block; + float: none; + padding: 0 var(--spacing-large); +} + +td.memSeparator { + border-color: var(--separator-color); +} + +span.mlabel { + background: var(--primary-color); + border: none; + padding: 4px 9px; + border-radius: 12px; + margin-right: var(--spacing-medium); +} + +span.mlabel:last-of-type { + margin-right: 2px; +} + +div.contents { + padding: 0 var(--spacing-large); +} + +div.contents p, div.contents li { + line-height: var(--content-line-height); +} + +div.contents div.dyncontent { + margin: var(--spacing-medium) 0; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) div.contents div.dyncontent img, + html:not(.light-mode) div.contents center img, + html:not(.light-mode) div.contents > table img, + html:not(.light-mode) div.contents div.dyncontent iframe, + html:not(.light-mode) div.contents center iframe, + html:not(.light-mode) div.contents table iframe, + html:not(.light-mode) div.contents .dotgraph iframe { + filter: brightness(89%) hue-rotate(180deg) invert(); + } +} + +html.dark-mode div.contents div.dyncontent img, +html.dark-mode div.contents center img, +html.dark-mode div.contents > table img, +html.dark-mode div.contents div.dyncontent iframe, +html.dark-mode div.contents center iframe, +html.dark-mode div.contents table iframe, +html.dark-mode div.contents .dotgraph iframe + { + filter: brightness(89%) hue-rotate(180deg) invert(); +} + +h2.groupheader { + border-bottom: 0px; + color: var(--page-foreground-color); + box-shadow: + 100px 0 var(--page-background-color), + -100px 0 var(--page-background-color), + 100px 0.75px var(--separator-color), + -100px 0.75px var(--separator-color), + 500px 0 var(--page-background-color), + -500px 0 var(--page-background-color), + 500px 0.75px var(--separator-color), + -500px 0.75px var(--separator-color), + 900px 0 var(--page-background-color), + -900px 0 var(--page-background-color), + 900px 0.75px var(--separator-color), + -900px 0.75px var(--separator-color), + 1400px 0 var(--page-background-color), + -1400px 0 var(--page-background-color), + 1400px 0.75px var(--separator-color), + -1400px 0.75px var(--separator-color), + 1900px 0 var(--page-background-color), + -1900px 0 var(--page-background-color), + 1900px 0.75px var(--separator-color), + -1900px 0.75px var(--separator-color); +} + +blockquote { + margin: 0 var(--spacing-medium) 0 var(--spacing-medium); + padding: var(--spacing-small) var(--spacing-large); + background: var(--blockquote-background); + color: var(--blockquote-foreground); + border-left: 0; + overflow: visible; + border-radius: var(--border-radius-medium); + overflow: visible; + position: relative; +} + +blockquote::before, blockquote::after { + font-weight: bold; + font-family: serif; + font-size: 360%; + opacity: .15; + position: absolute; +} + +blockquote::before { + content: "“"; + left: -10px; + top: 4px; +} + +blockquote::after { + content: "”"; + right: -8px; + bottom: -25px; +} + +blockquote p { + margin: var(--spacing-small) 0 var(--spacing-medium) 0; +} +.paramname, .paramname em { + font-weight: 600; + color: var(--primary-dark-color); +} + +.paramname > code { + border: 0; +} + +table.params .paramname { + font-weight: 600; + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + padding-right: var(--spacing-small); + line-height: var(--table-line-height); +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--primary-light-color); +} + +.alphachar a { + color: var(--page-foreground-color); +} + +.dotgraph { + max-width: 100%; + overflow-x: scroll; +} + +.dotgraph .caption { + position: sticky; + left: 0; +} + +/* Wrap Graphviz graphs with the `interactive_dotgraph` class if `INTERACTIVE_SVG = YES` */ +.interactive_dotgraph .dotgraph iframe { + max-width: 100%; +} + +/* + Table of Contents + */ + +div.contents .toc { + max-height: var(--toc-max-height); + min-width: var(--toc-width); + border: 0; + border-left: 1px solid var(--separator-color); + border-radius: 0; + background-color: var(--page-background-color); + box-shadow: none; + position: sticky; + top: var(--toc-sticky-top); + padding: 0 var(--spacing-large); + margin: var(--spacing-small) 0 var(--spacing-large) var(--spacing-large); +} + +div.toc h3 { + color: var(--toc-foreground); + font-size: var(--navigation-font-size); + margin: var(--spacing-large) 0 var(--spacing-medium) 0; +} + +div.toc li { + padding: 0; + background: none; + line-height: var(--toc-font-size); + margin: var(--toc-font-size) 0 0 0; +} + +div.toc li::before { + display: none; +} + +div.toc ul { + margin-top: 0 +} + +div.toc li a { + font-size: var(--toc-font-size); + color: var(--page-foreground-color) !important; + text-decoration: none; +} + +div.toc li a:hover, div.toc li a.active { + color: var(--primary-color) !important; +} + +div.toc li a.aboveActive { + color: var(--page-secondary-foreground-color) !important; +} + + +@media screen and (max-width: 999px) { + div.contents .toc { + max-height: 45vh; + float: none; + width: auto; + margin: 0 0 var(--spacing-medium) 0; + position: relative; + top: 0; + position: relative; + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + background-color: var(--toc-background); + box-shadow: var(--box-shadow); + } + + div.contents .toc.interactive { + max-height: calc(var(--navigation-font-size) + 2 * var(--spacing-large)); + overflow: hidden; + } + + div.contents .toc > h3 { + -webkit-tap-highlight-color: transparent; + cursor: pointer; + position: sticky; + top: 0; + background-color: var(--toc-background); + margin: 0; + padding: var(--spacing-large) 0; + display: block; + } + + div.contents .toc.interactive > h3::before { + content: ""; + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 5px solid var(--primary-color); + display: inline-block; + margin-right: var(--spacing-small); + margin-bottom: calc(var(--navigation-font-size) / 4); + transform: rotate(-90deg); + transition: transform var(--animation-duration) ease-out; + } + + div.contents .toc.interactive.open > h3::before { + transform: rotate(0deg); + } + + div.contents .toc.interactive.open { + max-height: 45vh; + overflow: auto; + transition: max-height 0.2s ease-in-out; + } + + div.contents .toc a, div.contents .toc a.active { + color: var(--primary-color) !important; + } + + div.contents .toc a:hover { + text-decoration: underline; + } +} + +/* + Code & Fragments + */ + +code, div.fragment, pre.fragment { + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + overflow: hidden; +} + +code { + display: inline; + background: var(--code-background); + color: var(--code-foreground); + padding: 2px 6px; +} + +div.fragment, pre.fragment { + margin: var(--spacing-medium) 0; + padding: calc(var(--spacing-large) - (var(--spacing-large) / 6)) var(--spacing-large); + background: var(--fragment-background); + color: var(--fragment-foreground); + overflow-x: auto; +} + +@media screen and (max-width: 767px) { + div.fragment, pre.fragment { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-right: 0; + } + + .contents > div.fragment, + .textblock > div.fragment, + .textblock > pre.fragment, + .textblock > .tabbed > ul > li > div.fragment, + .textblock > .tabbed > ul > li > pre.fragment, + .contents > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > pre.fragment, + .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + border-radius: 0; + border-left: 0; + } + + .textblock li > .fragment, + .textblock li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + } + + .memdoc li > .fragment, + .memdoc li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + } + + .textblock ul, .memdoc ul { + overflow: initial; + } + + .memdoc > div.fragment, + .memdoc > pre.fragment, + dl dd > div.fragment, + dl dd pre.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > div.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > pre.fragment, + dl dd > .doxygen-awesome-fragment-wrapper > div.fragment, + dl dd .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + border-radius: 0; + border-left: 0; + } +} + +code, code a, pre.fragment, div.fragment, div.fragment .line, div.fragment span, div.fragment .line a, div.fragment .line span { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size) !important; +} + +div.line:after { + margin-right: var(--spacing-medium); +} + +div.fragment .line, pre.fragment { + white-space: pre; + word-wrap: initial; + line-height: var(--fragment-lineheight); +} + +div.fragment span.keyword { + color: var(--fragment-keyword); +} + +div.fragment span.keywordtype { + color: var(--fragment-keywordtype); +} + +div.fragment span.keywordflow { + color: var(--fragment-keywordflow); +} + +div.fragment span.stringliteral { + color: var(--fragment-token) +} + +div.fragment span.comment { + color: var(--fragment-comment); +} + +div.fragment a.code { + color: var(--fragment-link) !important; +} + +div.fragment span.preprocessor { + color: var(--fragment-preprocessor); +} + +div.fragment span.lineno { + display: inline-block; + width: 27px; + border-right: none; + background: var(--fragment-linenumber-background); + color: var(--fragment-linenumber-color); +} + +div.fragment span.lineno a { + background: none; + color: var(--fragment-link) !important; +} + +div.fragment > .line:first-child .lineno { + box-shadow: -999999px 0px 0 999999px var(--fragment-linenumber-background), -999998px 0px 0 999999px var(--fragment-linenumber-border); + background-color: var(--fragment-linenumber-background) !important; +} + +div.line { + border-radius: var(--border-radius-small); +} + +div.line.glow { + background-color: var(--primary-light-color); + box-shadow: none; +} + +/* + dl warning, attention, note, deprecated, bug, ... + */ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, dl.invariant, dl.pre, dl.post, dl.todo, dl.remark { + padding: var(--spacing-medium); + margin: var(--spacing-medium) 0; + color: var(--page-background-color); + overflow: hidden; + margin-left: 0; + border-radius: var(--border-radius-small); +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention { + background: var(--warning-color); + border-left: 8px solid var(--warning-color-dark); + color: var(--warning-color-darker); +} + +dl.warning dt, dl.attention dt { + color: var(--warning-color-dark); +} + +dl.note, dl.remark { + background: var(--note-color); + border-left: 8px solid var(--note-color-dark); + color: var(--note-color-darker); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-dark); +} + +dl.todo { + background: var(--todo-color); + border-left: 8px solid var(--todo-color-dark); + color: var(--todo-color-darker); +} + +dl.todo dt a { + color: var(--todo-color-dark) !important; +} + +dl.bug dt a { + color: var(--todo-color-dark) !important; +} + +dl.bug { + background: var(--bug-color); + border-left: 8px solid var(--bug-color-dark); + color: var(--bug-color-darker); +} + +dl.bug dt a { + color: var(--bug-color-dark) !important; +} + +dl.deprecated { + background: var(--deprecated-color); + border-left: 8px solid var(--deprecated-color-dark); + color: var(--deprecated-color-darker); +} + +dl.deprecated dt a { + color: var(--deprecated-color-dark) !important; +} + +dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: var(--invariant-color); + border-left: 8px solid var(--invariant-color-dark); + color: var(--invariant-color-darker); +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: var(--invariant-color-dark); +} + +/* + memitem + */ + +div.memdoc, div.memproto, h2.memtitle { + box-shadow: none; + background-image: none; + border: none; +} + +div.memdoc { + padding: 0 var(--spacing-medium); + background: var(--page-background-color); +} + +h2.memtitle, div.memitem { + border: 1px solid var(--separator-color); + box-shadow: var(--box-shadow); +} + +h2.memtitle { + box-shadow: 0px var(--spacing-medium) 0 -1px var(--fragment-background), var(--box-shadow); +} + +div.memitem { + transition: none; +} + +div.memproto, h2.memtitle { + background: var(--fragment-background); +} + +h2.memtitle { + font-weight: 500; + font-size: var(--memtitle-font-size); + font-family: var(--font-family-monospace); + border-bottom: none; + border-top-left-radius: var(--border-radius-medium); + border-top-right-radius: var(--border-radius-medium); + word-break: break-all; + position: relative; +} + +h2.memtitle:after { + content: ""; + display: block; + background: var(--fragment-background); + height: var(--spacing-medium); + bottom: calc(0px - var(--spacing-medium)); + left: 0; + right: -14px; + position: absolute; + border-top-right-radius: var(--border-radius-medium); +} + +h2.memtitle > span.permalink { + font-size: inherit; +} + +h2.memtitle > span.permalink > a { + text-decoration: none; + padding-left: 3px; + margin-right: -4px; + user-select: none; + display: inline-block; + margin-top: -6px; +} + +h2.memtitle > span.permalink > a:hover { + color: var(--primary-dark-color) !important; +} + +a:target + h2.memtitle, a:target + h2.memtitle + div.memitem { + border-color: var(--primary-light-color); +} + +div.memitem { + border-top-right-radius: var(--border-radius-medium); + border-bottom-right-radius: var(--border-radius-medium); + border-bottom-left-radius: var(--border-radius-medium); + overflow: hidden; + display: block !important; +} + +div.memdoc { + border-radius: 0; +} + +div.memproto { + border-radius: 0 var(--border-radius-small) 0 0; + overflow: auto; + border-bottom: 1px solid var(--separator-color); + padding: var(--spacing-medium); + margin-bottom: -1px; +} + +div.memtitle { + border-top-right-radius: var(--border-radius-medium); + border-top-left-radius: var(--border-radius-medium); +} + +div.memproto table.memname { + font-family: var(--font-family-monospace); + color: var(--page-foreground-color); + font-size: var(--memname-font-size); + text-shadow: none; +} + +div.memproto div.memtemplate { + font-family: var(--font-family-monospace); + color: var(--primary-dark-color); + font-size: var(--memname-font-size); + margin-left: 2px; + text-shadow: none; +} + +table.mlabels, table.mlabels > tbody { + display: block; +} + +td.mlabels-left { + width: auto; +} + +td.mlabels-right { + margin-top: 3px; + position: sticky; + left: 0; +} + +table.mlabels > tbody > tr:first-child { + display: flex; + justify-content: space-between; + flex-wrap: wrap; +} + +.memname, .memitem span.mlabels { + margin: 0 +} + +/* + reflist + */ + +dl.reflist { + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-medium); + border: 1px solid var(--separator-color); + overflow: hidden; + padding: 0; +} + + +dl.reflist dt, dl.reflist dd { + box-shadow: none; + text-shadow: none; + background-image: none; + border: none; + padding: 12px; +} + + +dl.reflist dt { + font-weight: 500; + border-radius: 0; + background: var(--code-background); + border-bottom: 1px solid var(--separator-color); + color: var(--page-foreground-color) +} + + +dl.reflist dd { + background: none; +} + +/* + Table + */ + +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname), +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { + display: inline-block; + max-width: 100%; +} + +.contents > table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname):not(.classindex) { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); +} + +table.fieldtable, +table.markdownTable tbody, +table.doxtable tbody { + border: none; + margin: var(--spacing-medium) 0; + box-shadow: 0 0 0 1px var(--separator-color); + border-radius: var(--border-radius-small); +} + +table.markdownTable, table.doxtable, table.fieldtable { + padding: 1px; +} + +table.doxtable caption { + display: block; +} + +table.fieldtable { + border-collapse: collapse; + width: 100%; +} + +th.markdownTableHeadLeft, +th.markdownTableHeadRight, +th.markdownTableHeadCenter, +th.markdownTableHeadNone, +table.doxtable th { + background: var(--tablehead-background); + color: var(--tablehead-foreground); + font-weight: 600; + font-size: var(--page-font-size); +} + +th.markdownTableHeadLeft:first-child, +th.markdownTableHeadRight:first-child, +th.markdownTableHeadCenter:first-child, +th.markdownTableHeadNone:first-child, +table.doxtable tr th:first-child { + border-top-left-radius: var(--border-radius-small); +} + +th.markdownTableHeadLeft:last-child, +th.markdownTableHeadRight:last-child, +th.markdownTableHeadCenter:last-child, +th.markdownTableHeadNone:last-child, +table.doxtable tr th:last-child { + border-top-right-radius: var(--border-radius-small); +} + +table.markdownTable td, +table.markdownTable th, +table.fieldtable td, +table.fieldtable th, +table.doxtable td, +table.doxtable th { + border: 1px solid var(--separator-color); + padding: var(--spacing-small) var(--spacing-medium); +} + +table.markdownTable td:last-child, +table.markdownTable th:last-child, +table.fieldtable td:last-child, +table.fieldtable th:last-child, +table.doxtable td:last-child, +table.doxtable th:last-child { + border-right: none; +} + +table.markdownTable td:first-child, +table.markdownTable th:first-child, +table.fieldtable td:first-child, +table.fieldtable th:first-child, +table.doxtable td:first-child, +table.doxtable th:first-child { + border-left: none; +} + +table.markdownTable tr:first-child td, +table.markdownTable tr:first-child th, +table.fieldtable tr:first-child td, +table.fieldtable tr:first-child th, +table.doxtable tr:first-child td, +table.doxtable tr:first-child th { + border-top: none; +} + +table.markdownTable tr:last-child td, +table.markdownTable tr:last-child th, +table.fieldtable tr:last-child td, +table.fieldtable tr:last-child th, +table.doxtable tr:last-child td, +table.doxtable tr:last-child th { + border-bottom: none; +} + +table.markdownTable tr, table.doxtable tr { + border-bottom: 1px solid var(--separator-color); +} + +table.markdownTable tr:last-child, table.doxtable tr:last-child { + border-bottom: none; +} + +.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) { + display: block; +} + +.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { + display: table; + width: 100%; +} + +table.fieldtable th { + font-size: var(--page-font-size); + font-weight: 600; + background-image: none; + background-color: var(--tablehead-background); + color: var(--tablehead-foreground); +} + +table.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fieldinit, .fieldtable td.fielddoc, .fieldtable th { + border-bottom: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); +} + +table.fieldtable tr:last-child td:first-child { + border-bottom-left-radius: var(--border-radius-small); +} + +table.fieldtable tr:last-child td:last-child { + border-bottom-right-radius: var(--border-radius-small); +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--primary-light-color); + box-shadow: none; +} + +table.memberdecls { + display: block; + -webkit-tap-highlight-color: transparent; +} + +table.memberdecls tr[class^='memitem'] { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); +} + +table.memberdecls tr[class^='memitem'] .memTemplParams { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + color: var(--primary-dark-color); + white-space: normal; +} + +table.memberdecls .memItemLeft, +table.memberdecls .memItemRight, +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight, +table.memberdecls .memTemplParams { + transition: none; + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + background-color: var(--fragment-background); +} + +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight { + padding-top: 2px; +} + +table.memberdecls .memTemplParams { + border-bottom: 0; + border-left: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); + border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; + padding-bottom: var(--spacing-small); +} + +table.memberdecls .memTemplItemLeft { + border-radius: 0 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + border-top: 0; +} + +table.memberdecls .memTemplItemRight { + border-radius: 0 0 var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + padding-left: 0; + border-top: 0; +} + +table.memberdecls .memItemLeft { + border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + padding-left: var(--spacing-medium); + padding-right: 0; +} + +table.memberdecls .memItemRight { + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + padding-right: var(--spacing-medium); + padding-left: 0; + +} + +table.memberdecls .mdescLeft, table.memberdecls .mdescRight { + background: none; + color: var(--page-foreground-color); + padding: var(--spacing-small) 0; +} + +table.memberdecls .memItemLeft, +table.memberdecls .memTemplItemLeft { + padding-right: var(--spacing-medium); +} + +table.memberdecls .memSeparator { + background: var(--page-background-color); + height: var(--spacing-large); + border: 0; + transition: none; +} + +table.memberdecls .groupheader { + margin-bottom: var(--spacing-large); +} + +table.memberdecls .inherit_header td { + padding: 0 0 var(--spacing-medium) 0; + text-indent: -12px; + color: var(--page-secondary-foreground-color); +} + +table.memberdecls img[src="closed.png"], +table.memberdecls img[src="open.png"], +div.dynheader img[src="open.png"], +div.dynheader img[src="closed.png"] { + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 5px solid var(--primary-color); + margin-top: 8px; + display: block; + float: left; + margin-left: -10px; + transition: transform var(--animation-duration) ease-out; +} + +table.memberdecls img { + margin-right: 10px; +} + +table.memberdecls img[src="closed.png"], +div.dynheader img[src="closed.png"] { + transform: rotate(-90deg); + +} + +.compoundTemplParams { + font-family: var(--font-family-monospace); + color: var(--primary-dark-color); + font-size: var(--code-font-size); +} + +@media screen and (max-width: 767px) { + + table.memberdecls .memItemLeft, + table.memberdecls .memItemRight, + table.memberdecls .mdescLeft, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemLeft, + table.memberdecls .memTemplItemRight, + table.memberdecls .memTemplParams { + display: block; + text-align: left; + padding-left: var(--spacing-large); + margin: 0 calc(0px - var(--spacing-large)) 0 calc(0px - var(--spacing-large)); + border-right: none; + border-left: none; + border-radius: 0; + white-space: normal; + } + + table.memberdecls .memItemLeft, + table.memberdecls .mdescLeft, + table.memberdecls .memTemplItemLeft { + border-bottom: 0; + padding-bottom: 0; + } + + table.memberdecls .memTemplItemLeft { + padding-top: 0; + } + + table.memberdecls .mdescLeft { + margin-bottom: calc(0px - var(--page-font-size)); + } + + table.memberdecls .memItemRight, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemRight { + border-top: 0; + padding-top: 0; + padding-right: var(--spacing-large); + overflow-x: auto; + } + + table.memberdecls tr[class^='memitem']:not(.inherit) { + display: block; + width: calc(100vw - 2 * var(--spacing-large)); + } + + table.memberdecls .mdescRight { + color: var(--page-foreground-color); + } + + table.memberdecls tr.inherit { + visibility: hidden; + } + + table.memberdecls tr[style="display: table-row;"] { + display: block !important; + visibility: visible; + width: calc(100vw - 2 * var(--spacing-large)); + animation: fade .5s; + } + + @keyframes fade { + 0% { + opacity: 0; + max-height: 0; + } + + 100% { + opacity: 1; + max-height: 200px; + } + } +} + + +/* + Horizontal Rule + */ + +hr { + margin-top: var(--spacing-large); + margin-bottom: var(--spacing-large); + height: 1px; + background-color: var(--separator-color); + border: 0; +} + +.contents hr { + box-shadow: 100px 0 var(--separator-color), + -100px 0 var(--separator-color), + 500px 0 var(--separator-color), + -500px 0 var(--separator-color), + 900px 0 var(--separator-color), + -900px 0 var(--separator-color), + 1400px 0 var(--separator-color), + -1400px 0 var(--separator-color), + 1900px 0 var(--separator-color), + -1900px 0 var(--separator-color); +} + +.contents img, .contents .center, .contents center, .contents div.image object { + max-width: 100%; + overflow: auto; +} + +@media screen and (max-width: 767px) { + .contents .dyncontent > .center, .contents > center { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); + } +} + +/* + Directories + */ +div.directory { + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + width: auto; +} + +table.directory { + font-family: var(--font-family); + font-size: var(--page-font-size); + font-weight: normal; + width: 100%; +} + +table.directory td.entry, table.directory td.desc { + padding: calc(var(--spacing-small) / 2) var(--spacing-small); + line-height: var(--table-line-height); +} + +table.directory tr.even td:last-child { + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; +} + +table.directory tr.even td:first-child { + border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); +} + +table.directory tr.even:last-child td:last-child { + border-radius: 0 var(--border-radius-small) 0 0; +} + +table.directory tr.even:last-child td:first-child { + border-radius: var(--border-radius-small) 0 0 0; +} + +table.directory td.desc { + min-width: 250px; +} + +table.directory tr.even { + background-color: var(--odd-color); +} + +table.directory tr.odd { + background-color: transparent; +} + +.icona { + width: auto; + height: auto; + margin: 0 var(--spacing-small); +} + +.icon { + background: var(--primary-color); + border-radius: var(--border-radius-small); + font-size: var(--page-font-size); + padding: calc(var(--page-font-size) / 5); + line-height: var(--page-font-size); + transform: scale(0.8); + height: auto; + width: var(--page-font-size); + user-select: none; +} + +.iconfopen, .icondoc, .iconfclosed { + background-position: center; + margin-bottom: 0; + height: var(--table-line-height); +} + +.icondoc { + filter: saturate(0.2); +} + +@media screen and (max-width: 767px) { + div.directory { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) .iconfopen, html:not(.light-mode) .iconfclosed { + filter: hue-rotate(180deg) invert(); + } +} + +html.dark-mode .iconfopen, html.dark-mode .iconfclosed { + filter: hue-rotate(180deg) invert(); +} + +/* + Class list + */ + +.classindex dl.odd { + background: var(--odd-color); + border-radius: var(--border-radius-small); +} + +.classindex dl.even { + background-color: transparent; +} + +/* + Class Index Doxygen 1.8 +*/ + +table.classindex { + margin-left: 0; + margin-right: 0; + width: 100%; +} + +table.classindex table div.ah { + background-image: none; + background-color: initial; + border-color: var(--separator-color); + color: var(--page-foreground-color); + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-large); + padding: var(--spacing-small); +} + +div.qindex { + background-color: var(--odd-color); + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + padding: var(--spacing-small) 0; +} + +/* + Footer and nav-path + */ + +#nav-path { + width: 100%; +} + +#nav-path ul { + background-image: none; + background: var(--page-background-color); + border: none; + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + border-bottom: 0; + box-shadow: 0 0.75px 0 var(--separator-color); + font-size: var(--navigation-font-size); +} + +img.footer { + width: 60px; +} + +.navpath li.footer { + color: var(--page-secondary-foreground-color); +} + +address.footer { + color: var(--page-secondary-foreground-color); + margin-bottom: var(--spacing-large); +} + +#nav-path li.navelem { + background-image: none; + display: flex; + align-items: center; +} + +.navpath li.navelem a { + text-shadow: none; + display: inline-block; + color: var(--primary-color) !important; +} + +.navpath li.navelem b { + color: var(--primary-dark-color); + font-weight: 500; +} + +li.navelem { + padding: 0; + margin-left: -8px; +} + +li.navelem:first-child { + margin-left: var(--spacing-large); +} + +li.navelem:first-child:before { + display: none; +} + +#nav-path li.navelem:after { + content: ''; + border: 5px solid var(--page-background-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(4.2); + z-index: 10; + margin-left: 6px; +} + +#nav-path li.navelem:before { + content: ''; + border: 5px solid var(--separator-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(3.2); + margin-right: var(--spacing-small); +} + +.navpath li.navelem a:hover { + color: var(--primary-color); +} + +/* + Scrollbars for Webkit +*/ + +#nav-tree::-webkit-scrollbar, +div.fragment::-webkit-scrollbar, +pre.fragment::-webkit-scrollbar, +div.memproto::-webkit-scrollbar, +.contents center::-webkit-scrollbar, +.contents .center::-webkit-scrollbar, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar, +div.contents .toc::-webkit-scrollbar, +.contents .dotgraph::-webkit-scrollbar, +.contents .tabs-overview-container::-webkit-scrollbar { + background: transparent; + width: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + height: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); +} + +#nav-tree::-webkit-scrollbar-thumb, +div.fragment::-webkit-scrollbar-thumb, +pre.fragment::-webkit-scrollbar-thumb, +div.memproto::-webkit-scrollbar-thumb, +.contents center::-webkit-scrollbar-thumb, +.contents .center::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-thumb, +div.contents .toc::-webkit-scrollbar-thumb, +.contents .dotgraph::-webkit-scrollbar-thumb, +.contents .tabs-overview-container::-webkit-scrollbar-thumb { + background-color: transparent; + border: var(--webkit-scrollbar-padding) solid transparent; + border-radius: calc(var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + background-clip: padding-box; +} + +#nav-tree:hover::-webkit-scrollbar-thumb, +div.fragment:hover::-webkit-scrollbar-thumb, +pre.fragment:hover::-webkit-scrollbar-thumb, +div.memproto:hover::-webkit-scrollbar-thumb, +.contents center:hover::-webkit-scrollbar-thumb, +.contents .center:hover::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody:hover::-webkit-scrollbar-thumb, +div.contents .toc:hover::-webkit-scrollbar-thumb, +.contents .dotgraph:hover::-webkit-scrollbar-thumb, +.contents .tabs-overview-container:hover::-webkit-scrollbar-thumb { + background-color: var(--webkit-scrollbar-color); +} + +#nav-tree::-webkit-scrollbar-track, +div.fragment::-webkit-scrollbar-track, +pre.fragment::-webkit-scrollbar-track, +div.memproto::-webkit-scrollbar-track, +.contents center::-webkit-scrollbar-track, +.contents .center::-webkit-scrollbar-track, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-track, +div.contents .toc::-webkit-scrollbar-track, +.contents .dotgraph::-webkit-scrollbar-track, +.contents .tabs-overview-container::-webkit-scrollbar-track { + background: transparent; +} + +#nav-tree::-webkit-scrollbar-corner { + background-color: var(--side-nav-background); +} + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, +div.contents .toc { + overflow-x: auto; + overflow-x: overlay; +} + +#nav-tree { + overflow-x: auto; + overflow-y: auto; + overflow-y: overlay; +} + +/* + Scrollbars for Firefox +*/ + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, +div.contents .toc, +.contents .dotgraph, +.contents .tabs-overview-container { + scrollbar-width: thin; +} + +/* + Optional Dark mode toggle button +*/ + +doxygen-awesome-dark-mode-toggle { + display: inline-block; + margin: 0 0 0 var(--spacing-small); + padding: 0; + width: var(--searchbar-height); + height: var(--searchbar-height); + background: none; + border: none; + border-radius: var(--searchbar-height); + vertical-align: middle; + text-align: center; + line-height: var(--searchbar-height); + font-size: 22px; + display: flex; + align-items: center; + justify-content: center; + user-select: none; + cursor: pointer; +} + +doxygen-awesome-dark-mode-toggle > svg { + transition: transform var(--animation-duration) ease-in-out; +} + +doxygen-awesome-dark-mode-toggle:active > svg { + transform: scale(.5); +} + +doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.03); +} + +html.dark-mode doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.18); +} + +/* + Optional fragment copy button +*/ +.doxygen-awesome-fragment-wrapper { + position: relative; +} + +doxygen-awesome-fragment-copy-button { + opacity: 0; + background: var(--fragment-background); + width: 28px; + height: 28px; + position: absolute; + right: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + top: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + border: 1px solid var(--fragment-foreground); + cursor: pointer; + border-radius: var(--border-radius-small); + display: flex; + justify-content: center; + align-items: center; +} + +.doxygen-awesome-fragment-wrapper:hover doxygen-awesome-fragment-copy-button, doxygen-awesome-fragment-copy-button.success { + opacity: .28; +} + +doxygen-awesome-fragment-copy-button:hover, doxygen-awesome-fragment-copy-button.success { + opacity: 1 !important; +} + +doxygen-awesome-fragment-copy-button:active:not([class~=success]) svg { + transform: scale(.91); +} + +doxygen-awesome-fragment-copy-button svg { + fill: var(--fragment-foreground); + width: 18px; + height: 18px; +} + +doxygen-awesome-fragment-copy-button.success svg { + fill: rgb(14, 168, 14); +} + +doxygen-awesome-fragment-copy-button.success { + border-color: rgb(14, 168, 14); +} + +@media screen and (max-width: 767px) { + .textblock > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .textblock li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + dl dd > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button { + right: 0; + } +} + +/* + Optional paragraph link button +*/ + +a.anchorlink { + font-size: 90%; + margin-left: var(--spacing-small); + color: var(--page-foreground-color) !important; + text-decoration: none; + opacity: .15; + display: none; + transition: opacity var(--animation-duration) ease-in-out, color var(--animation-duration) ease-in-out; +} + +a.anchorlink svg { + fill: var(--page-foreground-color); +} + +h3 a.anchorlink svg, h4 a.anchorlink svg { + margin-bottom: -3px; + margin-top: -4px; +} + +a.anchorlink:hover { + opacity: .45; +} + +h2:hover a.anchorlink, h1:hover a.anchorlink, h3:hover a.anchorlink, h4:hover a.anchorlink { + display: inline-block; +} + +/* + Optional tab feature +*/ + +.tabbed > ul { + padding-inline-start: 0px; + margin: 0; + padding: var(--spacing-small) 0; +} + +.tabbed > ul > li { + display: none; +} + +.tabbed > ul > li.selected { + display: block; +} + +.tabs-overview-container { + overflow-x: auto; + display: block; + overflow-y: visible; +} + +.tabs-overview { + border-bottom: 1px solid var(--separator-color); + display: flex; + flex-direction: row; +} + +@media screen and (max-width: 767px) { + .tabs-overview-container { + margin: 0 calc(0px - var(--spacing-large)); + } + .tabs-overview { + padding: 0 var(--spacing-large) + } +} + +.tabs-overview button.tab-button { + color: var(--page-foreground-color); + margin: 0; + border: none; + background: transparent; + padding: calc(var(--spacing-large) / 2) 0; + display: inline-block; + font-size: var(--page-font-size); + cursor: pointer; + box-shadow: 0 1px 0 0 var(--separator-color); + position: relative; + + -webkit-tap-highlight-color: transparent; +} + +.tabs-overview button.tab-button .tab-title::before { + display: block; + content: attr(title); + font-weight: 600; + height: 0; + overflow: hidden; + visibility: hidden; +} + +.tabs-overview button.tab-button .tab-title { + float: left; + white-space: nowrap; + font-weight: normal; + padding: calc(var(--spacing-large) / 2) var(--spacing-large); + border-radius: var(--border-radius-medium); + transition: background-color var(--animation-duration) ease-in-out, font-weight var(--animation-duration) ease-in-out; +} + +.tabs-overview button.tab-button:not(:last-child) .tab-title { + box-shadow: 8px 0 0 -7px var(--separator-color); +} + +.tabs-overview button.tab-button:hover .tab-title { + background: var(--separator-color); + box-shadow: none; +} + +.tabs-overview button.tab-button.active .tab-title { + font-weight: 600; +} + +.tabs-overview button.tab-button::after { + content: ''; + display: block; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 0; + width: 0%; + margin: 0 auto; + border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; + background-color: var(--primary-color); + transition: width var(--animation-duration) ease-in-out, height var(--animation-duration) ease-in-out; +} + +.tabs-overview button.tab-button.active::after { + width: 100%; + box-sizing: border-box; + height: 3px; +} + + +/* + Navigation Buttons +*/ + +.section_buttons:not(:empty) { + margin-top: calc(var(--spacing-large) * 3); +} + +.section_buttons table.markdownTable { + display: block; + width: 100%; +} + +.section_buttons table.markdownTable tbody { + display: table !important; + width: 100%; + box-shadow: none; + border-spacing: 10px; +} + +.section_buttons table.markdownTable td { + padding: 0; +} + +.section_buttons table.markdownTable th { + display: none; +} + +.section_buttons table.markdownTable tr.markdownTableHead { + border: none; +} + +.section_buttons tr th, .section_buttons tr td { + background: none; + border: none; + padding: var(--spacing-large) 0 var(--spacing-small); +} + +.section_buttons a { + display: inline-block; + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + color: var(--page-secondary-foreground-color) !important; + text-decoration: none; + transition: color var(--animation-duration) ease-in-out, background-color var(--animation-duration) ease-in-out; +} + +.section_buttons a:hover { + color: var(--page-foreground-color) !important; + background-color: var(--odd-color); +} + +.section_buttons tr td.markdownTableBodyLeft a { + padding: var(--spacing-medium) var(--spacing-large) var(--spacing-medium) calc(var(--spacing-large) / 2); +} + +.section_buttons tr td.markdownTableBodyRight a { + padding: var(--spacing-medium) calc(var(--spacing-large) / 2) var(--spacing-medium) var(--spacing-large); +} + +.section_buttons tr td.markdownTableBodyLeft a::before, +.section_buttons tr td.markdownTableBodyRight a::after { + color: var(--page-secondary-foreground-color) !important; + display: inline-block; + transition: color .08s ease-in-out, transform .09s ease-in-out; +} + +.section_buttons tr td.markdownTableBodyLeft a::before { + content: '〈'; + padding-right: var(--spacing-large); +} + + +.section_buttons tr td.markdownTableBodyRight a::after { + content: '〉'; + padding-left: var(--spacing-large); +} + + +.section_buttons tr td.markdownTableBodyLeft a:hover::before { + color: var(--page-foreground-color) !important; + transform: translateX(-3px); +} + +.section_buttons tr td.markdownTableBodyRight a:hover::after { + color: var(--page-foreground-color) !important; + transform: translateX(3px); +} + +@media screen and (max-width: 450px) { + .section_buttons a { + width: 100%; + box-sizing: border-box; + } + + .section_buttons tr td:nth-of-type(1).markdownTableBodyLeft a { + border-radius: var(--border-radius-medium) 0 0 var(--border-radius-medium); + border-right: none; + } + + .section_buttons tr td:nth-of-type(2).markdownTableBodyRight a { + border-radius: 0 var(--border-radius-medium) var(--border-radius-medium) 0; + } +} diff --git a/docs/html/doxygen.css b/docs/html/doxygen.css new file mode 100644 index 0000000..90fba19 --- /dev/null +++ b/docs/html/doxygen.css @@ -0,0 +1,1849 @@ +/* The standard CSS for doxygen 1.13.2*/ + +body { + background-color: white; + color: black; +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: Roboto,sans-serif; + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-family: Roboto,sans-serif; + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: white; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: white; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: none; + background: linear-gradient(to bottom, transparent 0,transparent calc(100% - 1px), currentColor 100%); +} + +a:hover > span.arrow { + text-decoration: none; + background : #F9FAFC; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul.check { + list-style:none; + text-indent: -16px; + padding-left: 38px; +} +li.unchecked:before { + content: "\2610\A0"; +} +li.checked:before { + content: "\2611\A0"; +} + +ol { + text-indent: 0px; +} + +ul { + text-indent: 0px; + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; + overflow-y: hidden; + position: relative; + min-height: 12px; + margin: 10px 0px; + padding: 10px 10px; + border: 1px solid #C4CFE5; + border-radius: 4px; + background-color: #FBFCFD; + color: black; +} + +pre.fragment { + word-wrap: break-word; + font-size: 10pt; + line-height: 125%; + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +} + +.clipboard { + width: 24px; + height: 24px; + right: 5px; + top: 5px; + opacity: 0; + position: absolute; + display: inline; + overflow: hidden; + justify-content: center; + align-items: center; + cursor: pointer; +} + +.clipboard.success { + border: 1px solid black; + border-radius: 4px; +} + +.fragment:hover .clipboard, .clipboard.success { + opacity: .4; +} + +.clipboard:hover, .clipboard.success { + opacity: 1 !important; +} + +.clipboard:active:not([class~=success]) svg { + transform: scale(.91); +} + +.clipboard.success svg { + fill: #2EC82E; +} + +.clipboard.success { + border-color: #2EC82E; +} + +div.line { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid #00FF00; + color: black; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: #4665A2; + background-color: #D8D8D8; +} + +span.lineno a:hover { + color: #4665A2; + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: 104px; +} + +.compoundTemplParams { + color: #4665A2; + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000; +} + +span.keywordtype { + color: #604020; +} + +span.keywordflow { + color: #E08000; +} + +span.comment { + color: #800000; +} + +span.preprocessor { + color: #806020; +} + +span.stringliteral { + color: #002080; +} + +span.charliteral { + color: #008080; +} + +span.xmlcdata { + color: black; +} + +span.vhdldigit { + color: #FF00FF; +} + +span.vhdlchar { + color: #000000; +} + +span.vhdlkeyword { + color: #700070; +} + +span.vhdllogic { + color: #FF0000; +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #2D4068; +} + +th.dirtab { + background-color: #374F7F; + color: #FFFFFF; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: white; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; +} + +.paramname { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; + margin-left: 2px; +} + +.paramname em { + color: #602020; + font-style: normal; + margin-right: 1px; +} + +.paramname .paramdefval { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: #F8F9FC; +} + +.directory tr.even { + padding-left: 6px; + background-color: white; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial,Helvetica; + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.svg'); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.svg'); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.svg'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fieldinit { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fieldinit { + padding-top: 3px; + text-align: right; +} + + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#283A5D; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: white; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: #2A3D61; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* + +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention, dl.important { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +*/ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.important, dl.note, dl.deprecated, dl.bug, +dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { + padding: 10px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; + border-radius: 4px; +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention, dl.important { + background: #f8d1cc; + border-left: 8px solid #b61825; + color: #75070f; +} + +dl.warning dt, dl.attention dt, dl.important dt { + color: #b61825; +} + +dl.note, dl.remark { + background: #faf3d8; + border-left: 8px solid #f3a600; + color: #5f4204; +} + +dl.note dt, dl.remark dt { + color: #f3a600; +} + +dl.todo { + background: #e4f3ff; + border-left: 8px solid #1879C4; + color: #274a5c; +} + +dl.todo dt { + color: #1879C4; +} + +dl.test { + background: #e8e8ff; + border-left: 8px solid #3939C4; + color: #1a1a5c; +} + +dl.test dt { + color: #3939C4; +} + +dl.bug dt a { + color: #5b2bdd !important; +} + +dl.bug { + background: #e4dafd; + border-left: 8px solid #5b2bdd; + color: #2a0d72; +} + +dl.bug dt a { + color: #5b2bdd !important; +} + +dl.deprecated { + background: #ecf0f3; + border-left: 8px solid #5b6269; + color: #43454a; +} + +dl.deprecated dt a { + color: #5b6269 !important; +} + +dl.note dd, dl.warning dd, dl.pre dd, dl.post dd, +dl.remark dd, dl.attention dd, dl.important dd, dl.invariant dd, +dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: #d8f1e3; + border-left: 8px solid #44b86f; + color: #265532; +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: #44b86f; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: Tahoma,Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#side-nav #projectname +{ + font-size: 130%; +} + +#projectbrief +{ + font-size: 90%; + font-family: Tahoma,Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% Tahoma,Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; + background-color: white; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("data:image/svg+xml;utf8,&%238595;") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,'DejaVu Sans',Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Verdana,'DejaVu Sans',Geneva,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li[class^='level'] { + margin-left: 15px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.empty { + background-image: none; + margin-top: 0px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: black; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: #4665A2; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: Roboto,sans-serif; + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: white; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: gray; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: white; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: gray; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: gray; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: gray; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: gray; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: gray; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd +{ + display: inline-block; +} +tt, code, kbd +{ + vertical-align: top; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + diff --git a/docs/html/doxygen.svg b/docs/html/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/docs/html/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/doxygen_crawl.html b/docs/html/doxygen_crawl.html new file mode 100644 index 0000000..2f6cc12 --- /dev/null +++ b/docs/html/doxygen_crawl.html @@ -0,0 +1,97 @@ + + + +Validator / crawler helper + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/dynsections.js b/docs/html/dynsections.js new file mode 100644 index 0000000..3cc426a --- /dev/null +++ b/docs/html/dynsections.js @@ -0,0 +1,198 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function toggleVisibility(linkObj) { + return dynsection.toggleVisibility(linkObj); +} + +let dynsection = { + + // helper function + updateStripes : function() { + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); + }, + + toggleVisibility : function(linkObj) { + const base = $(linkObj).attr('id'); + const summary = $('#'+base+'-summary'); + const content = $('#'+base+'-content'); + const trigger = $('#'+base+'-trigger'); + const src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; + }, + + toggleLevel : function(level) { + $('table.directory tr').each(function() { + const l = this.id.split('_').length-1; + const i = $('#img'+this.id.substring(3)); + const a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + const id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + const start = $(this).attr('data-start'); + const end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + const line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); + }, +}; +/* @license-end */ diff --git a/docs/html/files.html b/docs/html/files.html new file mode 100644 index 0000000..f6fb948 --- /dev/null +++ b/docs/html/files.html @@ -0,0 +1,145 @@ + + + + + + + +stroid: File List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
File List
+
+
+
Here is a list of all files with brief descriptions:
+
[detail level 12345]
+ + + + + + + + + + + + + + + + + + + + + + + + + +
  docs
  static
 Logo.png
  src
  include
  stroid
  config
 config.h
  IO
 mesh.h
  topology
 curvilinear.h
 mapping.h
 topology.h
  utils
 mesh_utils.h
  lib
  IO
 mesh.cpp
  topology
 curvilinear.cpp
 mapping.cpp
 topology.cpp
  utils
 mesh_utils.cpp
+
+
+
+ + + + diff --git a/docs/html/files_dup.js b/docs/html/files_dup.js new file mode 100644 index 0000000..63f1153 --- /dev/null +++ b/docs/html/files_dup.js @@ -0,0 +1,5 @@ +var files_dup = +[ + [ "docs", "dir_49e56c817e5e54854c35e136979f97ca.html", "dir_49e56c817e5e54854c35e136979f97ca" ], + [ "src", "dir_68267d1309a1af8e8297ef4c3efbcdba.html", "dir_68267d1309a1af8e8297ef4c3efbcdba" ] +]; \ No newline at end of file diff --git a/docs/html/folderclosed.svg b/docs/html/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/docs/html/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/docs/html/folderclosedd.svg b/docs/html/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/docs/html/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/docs/html/folderopen.svg b/docs/html/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/docs/html/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/docs/html/folderopend.svg b/docs/html/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/docs/html/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/html/functions.html b/docs/html/functions.html new file mode 100644 index 0000000..6a52b83 --- /dev/null +++ b/docs/html/functions.html @@ -0,0 +1,124 @@ + + + + + + + +stroid: Class Members + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+
+
+ + + + diff --git a/docs/html/functions_vars.html b/docs/html/functions_vars.html new file mode 100644 index 0000000..56ad7d4 --- /dev/null +++ b/docs/html/functions_vars.html @@ -0,0 +1,124 @@ + + + + + + + +stroid: Class Members - Variables + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+
+
+ + + + diff --git a/docs/html/graph_legend.html b/docs/html/graph_legend.html new file mode 100644 index 0000000..e58cc71 --- /dev/null +++ b/docs/html/graph_legend.html @@ -0,0 +1,176 @@ + + + + + + + +stroid: Graph Legend + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance.
  • +
+
+
+ + + + diff --git a/docs/html/graph_legend.md5 b/docs/html/graph_legend.md5 new file mode 100644 index 0000000..34a71d6 --- /dev/null +++ b/docs/html/graph_legend.md5 @@ -0,0 +1 @@ +238bc3d95adc1929b3259d0c39010ed6 \ No newline at end of file diff --git a/docs/html/graph_legend.svg b/docs/html/graph_legend.svg new file mode 100644 index 0000000..2b1bc02 --- /dev/null +++ b/docs/html/graph_legend.svg @@ -0,0 +1,167 @@ + + + + + + +Graph Legend + + +Node9 + + +Inherited + + + + + +Node10 + + +PublicBase + + + + + +Node10->Node9 + + + + + + + + +Node11 + + +Truncated + + + + + +Node11->Node10 + + + + + + + + +Node13 + + +ProtectedBase + + + + + +Node13->Node9 + + + + + + + + +Node14 + + +PrivateBase + + + + + +Node14->Node9 + + + + + + + + +Node15 + + +Undocumented + + + + + +Node15->Node9 + + + + + + + + +Node16 + + +Templ< int > + + + + + +Node16->Node9 + + + + + + + + +Node17 + + +Templ< T > + + + + + +Node17->Node16 + + + + + +< int > + + + +Node18 + + +Used + + + + + +Node18->Node9 + + + + + +m_usedClass + + + diff --git a/docs/html/index.html b/docs/html/index.html new file mode 100644 index 0000000..709053e --- /dev/null +++ b/docs/html/index.html @@ -0,0 +1,221 @@ + + + + + + + +stroid: Stroid + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Stroid
+
+
+

+

+A multi-block mesh generation tool for stellar modeling

+

Stroid is a simple multi-block mesh generation tool designed to generate multi-domain meshes for 3D finite element modeling of stellar physics. It uses the MFEM library for mesh generation and manipulation and is capable of generating high-order curvilinear and non-singular meshes.

+
+

Note: Stroid is under active development and is not yet stable. Features and interfaces may change in future releases.

+
+

+Building and Installing

+

Stroid uses meson as its build system, specifically we require version 1.3.0 or higher. Further, stroid depends on C++23 standard library features, so both a compatible compiler and standard template library are required. All other dependencies are handled by meson and will be downloaded and built automatically.

+

+Building

+
git clone https://github.com/4D-STAR/stroid.git
+
cd stroid
+
meson setup build
+
meson compile -C build
+
meson test -C build
+
meson install -C build
+

+Running

+

Stroid can be used either from the command line or from C++. The command line interface is the simplest way to get started. After installation, the stroid generate command should be available in your terminal.

+
stroid generate --help
+

The main way to interface with this is through the subcommands (currently only generate and info are available):

+
stroid generate -c <path/to/config/file.toml>
+
stroid info -d
+

to save the default configuration to a file named default.toml

+

+Configuration File

+

Stroid uses a TOML configuration file to specify the parameters for mesh generation. An example configuration file is found below

+
[main]
+
core_steepness = 1.0
+
flattening = 0.0
+
include_external_domain = false
+
order = 3
+
r_core = 1.5
+
r_infinity = 6.0
+
r_instability = 1e-14
+
r_star = 5.0
+
refinement_levels = 4
+
+ + + + + + + + + + + + + + + + + + + + +
Parameter Description Default
refinement_levels Number of uniform refinement levels to apply to the mesh after generation 4
order The polynomial order of the finite elements in the mesh 3
include_external_domain Whether to include an external domain extending to r_infinity false
r_core The radius of the core region of the star 1.5
r_star The radius of the star 5.0
flattening The flattening factor of the star (0 for spherical, >0 for oblate) 0
r_infinity The outer radius of the external domain (if included) 6.0
r_instability The radius at which no transformations are applied to the initial topology (to avoid singularities) 1e-14
core_steepness The steepness of the transition between the core and envelope regions of the star 1.0
+

If no configuration file is provided, stroid will use the default parameters listed above. Further, configuration files need only include parameters that differ from the defaults, any parameters not specified will use the default values.

+

+C++ Interface

+

Stroid can be used as a library in C++ projects. After installation, include the stroid header and link against the stroid library.

+

A basic example of using stroid in C++ is shown below (note that you will need a glvis instance running on localhost:19916 to visualize the mesh):

#include <memory>
+
#include "mfem.hpp"
+
+ +
#include "stroid/IO/mesh.h"
+ + +
+
#include "fourdst/config/config.h"
+
+
int main() {
+
const fourdst::config::Config<stroid::config::MeshConfig> cfg;
+
+
const std::unique_ptr<mfem::Mesh> mesh = stroid::topology::BuildSkeleton(cfg);
+ + + +
+
+ +
}
+ + + +
void ViewMesh(mfem::Mesh &mesh, const std::string &title, VISUALIZATION_MODE mode, const std::string &vishost, int visport)
Stream a mesh to a running GLVis server for interactive viewing.
Definition mesh.cpp:25
+
@ BOUNDARY_ELEMENT_ID
Color boundary-adjacent elements by boundary attribute/ID.
Definition mesh.h:15
+
void PromoteToHighOrder(mfem::Mesh &mesh, const fourdst::config::Config< config::MeshConfig > &config)
Promote a mesh to high-order by attaching an H1 nodal finite element space.
Definition curvilinear.cpp:8
+
void Finalize(mfem::Mesh &mesh, const fourdst::config::Config< config::MeshConfig > &config)
Finalize topology, validate orientation, and apply uniform refinement.
Definition topology.cpp:59
+
void ProjectMesh(mfem::Mesh &mesh, const fourdst::config::Config< config::MeshConfig > &config)
Project high-order mesh nodes using the configured curvilinear mapping.
Definition curvilinear.cpp:14
+
std::unique_ptr< mfem::Mesh > BuildSkeleton(const fourdst::config::Config< config::MeshConfig > &config)
Build the initial multi-block mesh topology for the star model.
Definition topology.cpp:10
+ +

+Example Meshes

+

An example mesh with the default configuration parameters is shown below (coloration indicates attribute IDs of different regions): Example Mesh

+

+Funding

+

Stroid is developed as part of the 4D-STAR project.

+

4D-STAR is funded by European Research Council (ERC) under the Horizon Europe programme (Synergy Grant agreement No. 101071505: 4D-STAR) Work for this project is funded by the European Union. Views and opinions expressed are however those of the author(s) only and do not necessarily reflect those of the European Union or the European Research Council.

+
+ +
+
+ + + + diff --git a/docs/html/jquery.js b/docs/html/jquery.js new file mode 100644 index 0000000..875ada7 --- /dev/null +++ b/docs/html/jquery.js @@ -0,0 +1,204 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e} +var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp( +"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType +}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c +)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){ +return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll( +":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id") +)&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push( +"\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test( +a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null, +null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne +).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for( +var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n; +return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0, +r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r] +,C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each( +function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r, +"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})} +),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each( +"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t +){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t +]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i}, +getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within, +s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})), +this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t +).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split( +","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add( +this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{ +width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(), +!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){ +this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height +,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e, +i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left +)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e +){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0), +i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth( +)-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e, +function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0 +]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){ +targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se", +"n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if( +session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)} +closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if( +session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE, +function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset); +tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList, +finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight())); +return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")} +function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(), +elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight, +viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b, +"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery); +/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)), +mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend( +$.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy( +this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData( +"smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id" +).indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?( +this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for( +var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){ +return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if(( +!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&( +this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0 +]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass( +"highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){ +t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]" +)||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){ +t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"), +a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i, +downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2) +)&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t +)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0), +canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}}, +rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})} +return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1, +bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); diff --git a/docs/html/mainpage_8md.html b/docs/html/mainpage_8md.html new file mode 100644 index 0000000..7fd3c98 --- /dev/null +++ b/docs/html/mainpage_8md.html @@ -0,0 +1,117 @@ + + + + + + + +stroid: docs/static/mainpage.md File Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
docs/static/mainpage.md File Reference
+
+
+
+
+ + + + diff --git a/docs/html/mapping_8cpp.html b/docs/html/mapping_8cpp.html new file mode 100644 index 0000000..5fa4076 --- /dev/null +++ b/docs/html/mapping_8cpp.html @@ -0,0 +1,151 @@ + + + + + + + +stroid: src/lib/topology/mapping.cpp File Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
mapping.cpp File Reference
+
+
+
#include "stroid/topology/mapping.h"
+#include <cmath>
+#include <algorithm>
+
+Include dependency graph for mapping.cpp:
+
+
+
+
+ + + + + +

+Namespaces

namespace  stroid
 
namespace  stroid::topology
 
+ + + + + + + + + + + + + +

+Functions

void stroid::topology::ApplyEquiangular (mfem::Vector &pos)
 Apply an equiangular (gnomonic) projection to a point on a cube.
 
void stroid::topology::ApplySpheroidal (mfem::Vector &pos, const fourdst::config::Config< config::MeshConfig > &config)
 Apply spheroidal flattening along the Z axis.
 
void stroid::topology::ApplyKelvin (mfem::Vector &pos, const fourdst::config::Config< config::MeshConfig > &config)
 Apply Kelvin transform outside the stellar radius.
 
void stroid::topology::TransformPoint (mfem::Vector &pos, const fourdst::config::Config< config::MeshConfig > &config, int attribute_id)
 Map a point from the initial block topology to the curvilinear domain.
 
+
+
+ + + + diff --git a/docs/html/mapping_8cpp.js b/docs/html/mapping_8cpp.js new file mode 100644 index 0000000..fbbc436 --- /dev/null +++ b/docs/html/mapping_8cpp.js @@ -0,0 +1,7 @@ +var mapping_8cpp = +[ + [ "stroid::topology::ApplyEquiangular", "namespacestroid_1_1topology.html#a03f0b29ccf7d427a175de9ff75824b7c", null ], + [ "stroid::topology::ApplyKelvin", "namespacestroid_1_1topology.html#a59c54a10f726d323f8506b4a2edd7467", null ], + [ "stroid::topology::ApplySpheroidal", "namespacestroid_1_1topology.html#a7fbf58c40c03bc751d53f4a3273744fc", null ], + [ "stroid::topology::TransformPoint", "namespacestroid_1_1topology.html#a394e33bdfafdaccd6edfaae0642d3456", null ] +]; \ No newline at end of file diff --git a/docs/html/mapping_8cpp__incl.map b/docs/html/mapping_8cpp__incl.map new file mode 100644 index 0000000..b7e5516 --- /dev/null +++ b/docs/html/mapping_8cpp__incl.map @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/docs/html/mapping_8cpp__incl.md5 b/docs/html/mapping_8cpp__incl.md5 new file mode 100644 index 0000000..1f62239 --- /dev/null +++ b/docs/html/mapping_8cpp__incl.md5 @@ -0,0 +1 @@ +4bdfcf54667cf17336f1a89bd11d9f51 \ No newline at end of file diff --git a/docs/html/mapping_8cpp__incl.svg b/docs/html/mapping_8cpp__incl.svg new file mode 100644 index 0000000..165eff4 --- /dev/null +++ b/docs/html/mapping_8cpp__incl.svg @@ -0,0 +1,155 @@ + + + + + + + + + + + + +src/lib/topology/mapping.cpp + + +Node1 + + +src/lib/topology/mapping.cpp + + + + + +Node2 + + +stroid/topology/mapping.h + + + + + +Node1->Node2 + + + + + + + + +Node6 + + +cmath + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +algorithm + + + + + +Node1->Node7 + + + + + + + + +Node3 + + +mfem.hpp + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +stroid/config/config.h + + + + + +Node2->Node4 + + + + + + + + +Node5 + + +fourdst/config/config.h + + + + + +Node2->Node5 + + + + + + + + + + + + + diff --git a/docs/html/mapping_8cpp__incl_org.svg b/docs/html/mapping_8cpp__incl_org.svg new file mode 100644 index 0000000..61bea3a --- /dev/null +++ b/docs/html/mapping_8cpp__incl_org.svg @@ -0,0 +1,129 @@ + + + + + + +src/lib/topology/mapping.cpp + + +Node1 + + +src/lib/topology/mapping.cpp + + + + + +Node2 + + +stroid/topology/mapping.h + + + + + +Node1->Node2 + + + + + + + + +Node6 + + +cmath + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +algorithm + + + + + +Node1->Node7 + + + + + + + + +Node3 + + +mfem.hpp + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +stroid/config/config.h + + + + + +Node2->Node4 + + + + + + + + +Node5 + + +fourdst/config/config.h + + + + + +Node2->Node5 + + + + + + + + diff --git a/docs/html/mapping_8h.html b/docs/html/mapping_8h.html new file mode 100644 index 0000000..104fbbd --- /dev/null +++ b/docs/html/mapping_8h.html @@ -0,0 +1,156 @@ + + + + + + + +stroid: src/include/stroid/topology/mapping.h File Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
stroid v0.1.0 +
+
Multi-block curvilinear mesh generation
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
mapping.h File Reference
+
+
+
#include "mfem.hpp"
+#include "stroid/config/config.h"
+#include "fourdst/config/config.h"
+
+Include dependency graph for mapping.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+
+
+ + + + + +

+Namespaces

namespace  stroid
 
namespace  stroid::topology
 
+ + + + + + + + + + + + + +

+Functions

void stroid::topology::ApplyEquiangular (mfem::Vector &pos)
 Apply an equiangular (gnomonic) projection to a point on a cube.
 
void stroid::topology::ApplySpheroidal (mfem::Vector &pos, const fourdst::config::Config< config::MeshConfig > &config)
 Apply spheroidal flattening along the Z axis.
 
void stroid::topology::ApplyKelvin (mfem::Vector &pos, const fourdst::config::Config< config::MeshConfig > &config)
 Apply Kelvin transform outside the stellar radius.
 
void stroid::topology::TransformPoint (mfem::Vector &pos, const fourdst::config::Config< config::MeshConfig > &config, int attribute_id)
 Map a point from the initial block topology to the curvilinear domain.
 
+
+
+ + + + diff --git a/docs/html/mapping_8h.js b/docs/html/mapping_8h.js new file mode 100644 index 0000000..b37f73a --- /dev/null +++ b/docs/html/mapping_8h.js @@ -0,0 +1,7 @@ +var mapping_8h = +[ + [ "stroid::topology::ApplyEquiangular", "namespacestroid_1_1topology.html#a03f0b29ccf7d427a175de9ff75824b7c", null ], + [ "stroid::topology::ApplyKelvin", "namespacestroid_1_1topology.html#a59c54a10f726d323f8506b4a2edd7467", null ], + [ "stroid::topology::ApplySpheroidal", "namespacestroid_1_1topology.html#a7fbf58c40c03bc751d53f4a3273744fc", null ], + [ "stroid::topology::TransformPoint", "namespacestroid_1_1topology.html#a394e33bdfafdaccd6edfaae0642d3456", null ] +]; \ No newline at end of file diff --git a/docs/html/mapping_8h__dep__incl.map b/docs/html/mapping_8h__dep__incl.map new file mode 100644 index 0000000..0525b5a --- /dev/null +++ b/docs/html/mapping_8h__dep__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/mapping_8h__dep__incl.md5 b/docs/html/mapping_8h__dep__incl.md5 new file mode 100644 index 0000000..ff1680f --- /dev/null +++ b/docs/html/mapping_8h__dep__incl.md5 @@ -0,0 +1 @@ +f79ba543c56f1aac55d093e48f7a369f \ No newline at end of file diff --git a/docs/html/mapping_8h__dep__incl.svg b/docs/html/mapping_8h__dep__incl.svg new file mode 100644 index 0000000..af5d61e --- /dev/null +++ b/docs/html/mapping_8h__dep__incl.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + +src/include/stroid/topology/mapping.h + + +Node1 + + +src/include/stroid +/topology/mapping.h + + + + + +Node2 + + +src/lib/topology/curvilinear.cpp + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +src/lib/topology/mapping.cpp + + + + + +Node1->Node3 + + + + + + + + + + + + + diff --git a/docs/html/mapping_8h__dep__incl_org.svg b/docs/html/mapping_8h__dep__incl_org.svg new file mode 100644 index 0000000..50d3d12 --- /dev/null +++ b/docs/html/mapping_8h__dep__incl_org.svg @@ -0,0 +1,58 @@ + + + + + + +src/include/stroid/topology/mapping.h + + +Node1 + + +src/include/stroid +/topology/mapping.h + + + + + +Node2 + + +src/lib/topology/curvilinear.cpp + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +src/lib/topology/mapping.cpp + + + + + +Node1->Node3 + + + + + + + + diff --git a/docs/html/mapping_8h__incl.map b/docs/html/mapping_8h__incl.map new file mode 100644 index 0000000..374b151 --- /dev/null +++ b/docs/html/mapping_8h__incl.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/mapping_8h__incl.md5 b/docs/html/mapping_8h__incl.md5 new file mode 100644 index 0000000..667d70f --- /dev/null +++ b/docs/html/mapping_8h__incl.md5 @@ -0,0 +1 @@ +86a889bd4bc95c54b54525ea6b373586 \ No newline at end of file diff --git a/docs/html/mapping_8h__incl.svg b/docs/html/mapping_8h__incl.svg new file mode 100644 index 0000000..f2af59e --- /dev/null +++ b/docs/html/mapping_8h__incl.svg @@ -0,0 +1,102 @@ + + + + + + + + + + + + +src/include/stroid/topology/mapping.h + + +Node1 + + +src/include/stroid +/topology/mapping.h + + + + + +Node2 + + +mfem.hpp + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +stroid/config/config.h + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +fourdst/config/config.h + + + + + +Node1->Node4 + + + + + + + + + + + + + diff --git a/docs/html/mapping_8h__incl_org.svg b/docs/html/mapping_8h__incl_org.svg new file mode 100644 index 0000000..64bfccc --- /dev/null +++ b/docs/html/mapping_8h__incl_org.svg @@ -0,0 +1,76 @@ + + + + + + +src/include/stroid/topology/mapping.h + + +Node1 + + +src/include/stroid +/topology/mapping.h + + + + + +Node2 + + +mfem.hpp + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +stroid/config/config.h + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +fourdst/config/config.h + + + + + +Node1->Node4 + + + + + + + + diff --git a/docs/html/menu.js b/docs/html/menu.js new file mode 100644 index 0000000..0fd1e99 --- /dev/null +++ b/docs/html/menu.js @@ -0,0 +1,134 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search,treeview) { + function makeTree(data,relPath) { + let result=''; + if ('children' in data) { + result+='
    '; + for (let i in data.children) { + let url; + const link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + let searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
'+ + '
'+ + '
 '+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBoxHtml='
'+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + const $mainMenuState = $('#main-menu-state'); + let prevWidth = 0; + if ($mainMenuState.length) { + const initResizableIfExists = function() { + if (typeof initResizable==='function') initResizable(treeview); + } + // animate mobile menu + $mainMenuState.change(function() { + const $menu = $('#main-menu'); + let options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = () => $menu.css('display', 'block'); + $menu.hide().slideDown(options); + } else { + options['complete'] = () => $menu.css('display', 'none'); + $menu.show().slideUp(options); + } + }); + // set default menu visibility + const resetState = function() { + const $menu = $('#main-menu'); + const newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/docs/html/menudata.js b/docs/html/menudata.js new file mode 100644 index 0000000..c2de7d0 --- /dev/null +++ b/docs/html/menudata.js @@ -0,0 +1,40 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Namespaces",url:"namespaces.html",children:[ +{text:"Namespace List",url:"namespaces.html"}, +{text:"Namespace Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html"}, +{text:"Functions",url:"namespacemembers_func.html"}, +{text:"Enumerations",url:"namespacemembers_enum.html"}]}]}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html"}, +{text:"Variables",url:"functions_vars.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/docs/html/mesh_8cpp.html b/docs/html/mesh_8cpp.html new file mode 100644 index 0000000..72aa9b1 --- /dev/null +++ b/docs/html/mesh_8cpp.html @@ -0,0 +1,154 @@ + + + + + + + +stroid: src/lib/IO/mesh.cpp File Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    stroid v0.1.0 +
    +
    Multi-block curvilinear mesh generation
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    mesh.cpp File Reference
    +
    +
    +
    #include "mfem.hpp"
    +#include "stroid/config/config.h"
    +#include "stroid/IO/mesh.h"
    +#include <fstream>
    +#include <iostream>
    +#include <cstdint>
    +
    +Include dependency graph for mesh.cpp:
    +
    +
    +
    +
    + + + + + +

    +Namespaces

    namespace  stroid
     
    namespace  stroid::IO
     
    + + + + + + + + + + + + + +

    +Functions

    void stroid::IO::SaveMesh (const mfem::Mesh &mesh, const std::string &filename)
     Save a mesh to MFEM's native .mesh format.
     
    void stroid::IO::SaveVTU (mfem::Mesh &mesh, const std::string &exportName)
     Save a mesh as a ParaView VTU dataset.
     
    void stroid::IO::ViewMesh (mfem::Mesh &mesh, const std::string &title, VISUALIZATION_MODE mode, const std::string &vishost, int visport)
     Stream a mesh to a running GLVis server for interactive viewing.
     
    void stroid::IO::VisualizeFaceValence (mfem::Mesh &mesh)
     Visualize boundary face valence (1=surface, 2=internal).
     
    +
    +
    + + + + diff --git a/docs/html/mesh_8cpp.js b/docs/html/mesh_8cpp.js new file mode 100644 index 0000000..988fa2f --- /dev/null +++ b/docs/html/mesh_8cpp.js @@ -0,0 +1,7 @@ +var mesh_8cpp = +[ + [ "stroid::IO::SaveMesh", "namespacestroid_1_1_i_o.html#aeb567ddc70ff2d064c139dee87575830", null ], + [ "stroid::IO::SaveVTU", "namespacestroid_1_1_i_o.html#ab4c8bda7ab370e34376a7832fbf0951e", null ], + [ "stroid::IO::ViewMesh", "namespacestroid_1_1_i_o.html#a496f5c16eaffda5922a0b96c1f525dab", null ], + [ "stroid::IO::VisualizeFaceValence", "namespacestroid_1_1_i_o.html#a8100e130b3a49fdee48bc3c4d4e63963", null ] +]; \ No newline at end of file diff --git a/docs/html/mesh_8cpp__incl.map b/docs/html/mesh_8cpp__incl.map new file mode 100644 index 0000000..c24f84f --- /dev/null +++ b/docs/html/mesh_8cpp__incl.map @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/docs/html/mesh_8cpp__incl.md5 b/docs/html/mesh_8cpp__incl.md5 new file mode 100644 index 0000000..f7498e7 --- /dev/null +++ b/docs/html/mesh_8cpp__incl.md5 @@ -0,0 +1 @@ +03de2118e8632a757bd4ee512ec2bd8a \ No newline at end of file diff --git a/docs/html/mesh_8cpp__incl.svg b/docs/html/mesh_8cpp__incl.svg new file mode 100644 index 0000000..db9c517 --- /dev/null +++ b/docs/html/mesh_8cpp__incl.svg @@ -0,0 +1,182 @@ + + + + + + + + + + + + +src/lib/IO/mesh.cpp + + +Node1 + + +src/lib/IO/mesh.cpp + + + + + +Node2 + + +mfem.hpp + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +stroid/config/config.h + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +stroid/IO/mesh.h + + + + + +Node1->Node4 + + + + + + + + +Node6 + + +fstream + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +iostream + + + + + +Node1->Node7 + + + + + + + + +Node8 + + +cstdint + + + + + +Node1->Node8 + + + + + + + + +Node4->Node2 + + + + + + + + +Node5 + + +string + + + + + +Node4->Node5 + + + + + + + + + + + + + diff --git a/docs/html/mesh_8cpp__incl_org.svg b/docs/html/mesh_8cpp__incl_org.svg new file mode 100644 index 0000000..f4172a8 --- /dev/null +++ b/docs/html/mesh_8cpp__incl_org.svg @@ -0,0 +1,156 @@ + + + + + + +src/lib/IO/mesh.cpp + + +Node1 + + +src/lib/IO/mesh.cpp + + + + + +Node2 + + +mfem.hpp + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +stroid/config/config.h + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +stroid/IO/mesh.h + + + + + +Node1->Node4 + + + + + + + + +Node6 + + +fstream + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +iostream + + + + + +Node1->Node7 + + + + + + + + +Node8 + + +cstdint + + + + + +Node1->Node8 + + + + + + + + +Node4->Node2 + + + + + + + + +Node5 + + +string + + + + + +Node4->Node5 + + + + + + + + diff --git a/docs/html/mesh_8h.html b/docs/html/mesh_8h.html new file mode 100644 index 0000000..6f391d0 --- /dev/null +++ b/docs/html/mesh_8h.html @@ -0,0 +1,165 @@ + + + + + + + +stroid: src/include/stroid/IO/mesh.h File Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    stroid v0.1.0 +
    +
    Multi-block curvilinear mesh generation
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    mesh.h File Reference
    +
    +
    +
    #include <string>
    +#include "mfem.hpp"
    +
    +Include dependency graph for mesh.h:
    +
    +
    +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    +
    +
    + + + + + +

    +Namespaces

    namespace  stroid
     
    namespace  stroid::IO
     
    + + + + +

    +Enumerations

    enum class  stroid::IO::VISUALIZATION_MODE : uint8_t { stroid::IO::NONE +, stroid::IO::ELEMENT_ID +, stroid::IO::BOUNDARY_ELEMENT_ID + }
     Visualization modes for GLVis display. More...
     
    + + + + + + + + + + + + + +

    +Functions

    void stroid::IO::SaveMesh (const mfem::Mesh &mesh, const std::string &filename)
     Save a mesh to MFEM's native .mesh format.
     
    void stroid::IO::SaveVTU (mfem::Mesh &mesh, const std::string &exportName)
     Save a mesh as a ParaView VTU dataset.
     
    void stroid::IO::ViewMesh (mfem::Mesh &mesh, const std::string &title, VISUALIZATION_MODE mode, const std::string &vishost, int visport)
     Stream a mesh to a running GLVis server for interactive viewing.
     
    void stroid::IO::VisualizeFaceValence (mfem::Mesh &mesh)
     Visualize boundary face valence (1=surface, 2=internal).
     
    +
    +
    + + + + diff --git a/docs/html/mesh_8h.js b/docs/html/mesh_8h.js new file mode 100644 index 0000000..753b3a9 --- /dev/null +++ b/docs/html/mesh_8h.js @@ -0,0 +1,12 @@ +var mesh_8h = +[ + [ "stroid::IO::VISUALIZATION_MODE", "namespacestroid_1_1_i_o.html#ad4048304d8a0c7075d2b2a6e465d0b6e", [ + [ "stroid::IO::VISUALIZATION_MODE::NONE", "namespacestroid_1_1_i_o.html#ad4048304d8a0c7075d2b2a6e465d0b6eab50339a10e1de285ac99d4c3990b8693", null ], + [ "stroid::IO::VISUALIZATION_MODE::ELEMENT_ID", "namespacestroid_1_1_i_o.html#ad4048304d8a0c7075d2b2a6e465d0b6eac31a2fe3e97d218a154c1947b43d6bbf", null ], + [ "stroid::IO::VISUALIZATION_MODE::BOUNDARY_ELEMENT_ID", "namespacestroid_1_1_i_o.html#ad4048304d8a0c7075d2b2a6e465d0b6eaee96e14c2b71bd59252006289ba464cf", null ] + ] ], + [ "stroid::IO::SaveMesh", "namespacestroid_1_1_i_o.html#aeb567ddc70ff2d064c139dee87575830", null ], + [ "stroid::IO::SaveVTU", "namespacestroid_1_1_i_o.html#ab4c8bda7ab370e34376a7832fbf0951e", null ], + [ "stroid::IO::ViewMesh", "namespacestroid_1_1_i_o.html#a496f5c16eaffda5922a0b96c1f525dab", null ], + [ "stroid::IO::VisualizeFaceValence", "namespacestroid_1_1_i_o.html#a8100e130b3a49fdee48bc3c4d4e63963", null ] +]; \ No newline at end of file diff --git a/docs/html/mesh_8h__dep__incl.map b/docs/html/mesh_8h__dep__incl.map new file mode 100644 index 0000000..7125699 --- /dev/null +++ b/docs/html/mesh_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/mesh_8h__dep__incl.md5 b/docs/html/mesh_8h__dep__incl.md5 new file mode 100644 index 0000000..25a3d37 --- /dev/null +++ b/docs/html/mesh_8h__dep__incl.md5 @@ -0,0 +1 @@ +f9dd1f1f0ada45c031664e05baeddedf \ No newline at end of file diff --git a/docs/html/mesh_8h__dep__incl.svg b/docs/html/mesh_8h__dep__incl.svg new file mode 100644 index 0000000..7c9d524 --- /dev/null +++ b/docs/html/mesh_8h__dep__incl.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + +src/include/stroid/IO/mesh.h + + +Node1 + + +src/include/stroid +/IO/mesh.h + + + + + +Node2 + + +src/lib/IO/mesh.cpp + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/mesh_8h__dep__incl_org.svg b/docs/html/mesh_8h__dep__incl_org.svg new file mode 100644 index 0000000..dc8b185 --- /dev/null +++ b/docs/html/mesh_8h__dep__incl_org.svg @@ -0,0 +1,40 @@ + + + + + + +src/include/stroid/IO/mesh.h + + +Node1 + + +src/include/stroid +/IO/mesh.h + + + + + +Node2 + + +src/lib/IO/mesh.cpp + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/mesh_8h__incl.map b/docs/html/mesh_8h__incl.map new file mode 100644 index 0000000..e1680a4 --- /dev/null +++ b/docs/html/mesh_8h__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/mesh_8h__incl.md5 b/docs/html/mesh_8h__incl.md5 new file mode 100644 index 0000000..98ab67d --- /dev/null +++ b/docs/html/mesh_8h__incl.md5 @@ -0,0 +1 @@ +afe9d66dd2a249678e38f4e7d21fa29a \ No newline at end of file diff --git a/docs/html/mesh_8h__incl.svg b/docs/html/mesh_8h__incl.svg new file mode 100644 index 0000000..1cf7f78 --- /dev/null +++ b/docs/html/mesh_8h__incl.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + +src/include/stroid/IO/mesh.h + + +Node1 + + +src/include/stroid +/IO/mesh.h + + + + + +Node2 + + +string + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +mfem.hpp + + + + + +Node1->Node3 + + + + + + + + + + + + + diff --git a/docs/html/mesh_8h__incl_org.svg b/docs/html/mesh_8h__incl_org.svg new file mode 100644 index 0000000..67a6359 --- /dev/null +++ b/docs/html/mesh_8h__incl_org.svg @@ -0,0 +1,58 @@ + + + + + + +src/include/stroid/IO/mesh.h + + +Node1 + + +src/include/stroid +/IO/mesh.h + + + + + +Node2 + + +string + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +mfem.hpp + + + + + +Node1->Node3 + + + + + + + + diff --git a/docs/html/mesh__utils_8cpp.html b/docs/html/mesh__utils_8cpp.html new file mode 100644 index 0000000..1fcb5b5 --- /dev/null +++ b/docs/html/mesh__utils_8cpp.html @@ -0,0 +1,145 @@ + + + + + + + +stroid: src/lib/utils/mesh_utils.cpp File Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    stroid v0.1.0 +
    +
    Multi-block curvilinear mesh generation
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    mesh_utils.cpp File Reference
    +
    +
    +
    #include "stroid/utils/mesh_utils.h"
    +#include "mfem.hpp"
    +#include <print>
    +
    +Include dependency graph for mesh_utils.cpp:
    +
    +
    +
    +
    + + + + + +

    +Namespaces

    namespace  stroid
     
    namespace  stroid::utils
     
    + + + + + + + +

    +Functions

    void stroid::utils::MarkFlippedElements (mfem::Mesh &mesh)
     Mark elements with negative Jacobian determinant.
     
    void stroid::utils::MarkFlippedBoundaryElements (mfem::Mesh &mesh)
     Mark boundary elements whose outward normal orientation is flipped.
     
    +
    +
    + + + + diff --git a/docs/html/mesh__utils_8cpp.js b/docs/html/mesh__utils_8cpp.js new file mode 100644 index 0000000..186562e --- /dev/null +++ b/docs/html/mesh__utils_8cpp.js @@ -0,0 +1,5 @@ +var mesh__utils_8cpp = +[ + [ "stroid::utils::MarkFlippedBoundaryElements", "namespacestroid_1_1utils.html#ae047d97d7d5dc12812395909d00f5bbe", null ], + [ "stroid::utils::MarkFlippedElements", "namespacestroid_1_1utils.html#a22ab5809195bf85156607790f82b5e2d", null ] +]; \ No newline at end of file diff --git a/docs/html/mesh__utils_8cpp__incl.map b/docs/html/mesh__utils_8cpp__incl.map new file mode 100644 index 0000000..01b61b8 --- /dev/null +++ b/docs/html/mesh__utils_8cpp__incl.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/html/mesh__utils_8cpp__incl.md5 b/docs/html/mesh__utils_8cpp__incl.md5 new file mode 100644 index 0000000..3f3f4cf --- /dev/null +++ b/docs/html/mesh__utils_8cpp__incl.md5 @@ -0,0 +1 @@ +3355a8c256060a80ee8565f88e54695e \ No newline at end of file diff --git a/docs/html/mesh__utils_8cpp__incl.svg b/docs/html/mesh__utils_8cpp__incl.svg new file mode 100644 index 0000000..7dfb5a9 --- /dev/null +++ b/docs/html/mesh__utils_8cpp__incl.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + +src/lib/utils/mesh_utils.cpp + + +Node1 + + +src/lib/utils/mesh +_utils.cpp + + + + + +Node2 + + +stroid/utils/mesh_utils.h + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +mfem.hpp + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +print + + + + + +Node1->Node4 + + + + + + + + +Node2->Node3 + + + + + + + + + + + + + diff --git a/docs/html/mesh__utils_8cpp__incl_org.svg b/docs/html/mesh__utils_8cpp__incl_org.svg new file mode 100644 index 0000000..9a1b29c --- /dev/null +++ b/docs/html/mesh__utils_8cpp__incl_org.svg @@ -0,0 +1,85 @@ + + + + + + +src/lib/utils/mesh_utils.cpp + + +Node1 + + +src/lib/utils/mesh +_utils.cpp + + + + + +Node2 + + +stroid/utils/mesh_utils.h + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +mfem.hpp + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +print + + + + + +Node1->Node4 + + + + + + + + +Node2->Node3 + + + + + + + + diff --git a/docs/html/mesh__utils_8h.html b/docs/html/mesh__utils_8h.html new file mode 100644 index 0000000..d56fb2d --- /dev/null +++ b/docs/html/mesh__utils_8h.html @@ -0,0 +1,148 @@ + + + + + + + +stroid: src/include/stroid/utils/mesh_utils.h File Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    stroid v0.1.0 +
    +
    Multi-block curvilinear mesh generation
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    mesh_utils.h File Reference
    +
    +
    +
    #include "mfem.hpp"
    +
    +Include dependency graph for mesh_utils.h:
    +
    +
    +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    +
    +
    + + + + + +

    +Namespaces

    namespace  stroid
     
    namespace  stroid::utils
     
    + + + + + + + +

    +Functions

    void stroid::utils::MarkFlippedElements (mfem::Mesh &mesh)
     Mark elements with negative Jacobian determinant.
     
    void stroid::utils::MarkFlippedBoundaryElements (mfem::Mesh &mesh)
     Mark boundary elements whose outward normal orientation is flipped.
     
    +
    +
    + + + + diff --git a/docs/html/mesh__utils_8h.js b/docs/html/mesh__utils_8h.js new file mode 100644 index 0000000..6798f3a --- /dev/null +++ b/docs/html/mesh__utils_8h.js @@ -0,0 +1,5 @@ +var mesh__utils_8h = +[ + [ "stroid::utils::MarkFlippedBoundaryElements", "namespacestroid_1_1utils.html#ae047d97d7d5dc12812395909d00f5bbe", null ], + [ "stroid::utils::MarkFlippedElements", "namespacestroid_1_1utils.html#a22ab5809195bf85156607790f82b5e2d", null ] +]; \ No newline at end of file diff --git a/docs/html/mesh__utils_8h__dep__incl.map b/docs/html/mesh__utils_8h__dep__incl.map new file mode 100644 index 0000000..3d3268c --- /dev/null +++ b/docs/html/mesh__utils_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/mesh__utils_8h__dep__incl.md5 b/docs/html/mesh__utils_8h__dep__incl.md5 new file mode 100644 index 0000000..7f3510c --- /dev/null +++ b/docs/html/mesh__utils_8h__dep__incl.md5 @@ -0,0 +1 @@ +de670fa6b2670745aee89477f345c4fe \ No newline at end of file diff --git a/docs/html/mesh__utils_8h__dep__incl.svg b/docs/html/mesh__utils_8h__dep__incl.svg new file mode 100644 index 0000000..0a4ab07 --- /dev/null +++ b/docs/html/mesh__utils_8h__dep__incl.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +src/include/stroid/utils/mesh_utils.h + + +Node1 + + +src/include/stroid +/utils/mesh_utils.h + + + + + +Node2 + + +src/lib/utils/mesh +_utils.cpp + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/mesh__utils_8h__dep__incl_org.svg b/docs/html/mesh__utils_8h__dep__incl_org.svg new file mode 100644 index 0000000..4b6ab3f --- /dev/null +++ b/docs/html/mesh__utils_8h__dep__incl_org.svg @@ -0,0 +1,41 @@ + + + + + + +src/include/stroid/utils/mesh_utils.h + + +Node1 + + +src/include/stroid +/utils/mesh_utils.h + + + + + +Node2 + + +src/lib/utils/mesh +_utils.cpp + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/mesh__utils_8h__incl.map b/docs/html/mesh__utils_8h__incl.map new file mode 100644 index 0000000..1c9072c --- /dev/null +++ b/docs/html/mesh__utils_8h__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/mesh__utils_8h__incl.md5 b/docs/html/mesh__utils_8h__incl.md5 new file mode 100644 index 0000000..485602c --- /dev/null +++ b/docs/html/mesh__utils_8h__incl.md5 @@ -0,0 +1 @@ +9b2d93b00a4338b84ba80d223a34ed2c \ No newline at end of file diff --git a/docs/html/mesh__utils_8h__incl.svg b/docs/html/mesh__utils_8h__incl.svg new file mode 100644 index 0000000..77753d3 --- /dev/null +++ b/docs/html/mesh__utils_8h__incl.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + +src/include/stroid/utils/mesh_utils.h + + +Node1 + + +src/include/stroid +/utils/mesh_utils.h + + + + + +Node2 + + +mfem.hpp + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/mesh__utils_8h__incl_org.svg b/docs/html/mesh__utils_8h__incl_org.svg new file mode 100644 index 0000000..94d93a8 --- /dev/null +++ b/docs/html/mesh__utils_8h__incl_org.svg @@ -0,0 +1,40 @@ + + + + + + +src/include/stroid/utils/mesh_utils.h + + +Node1 + + +src/include/stroid +/utils/mesh_utils.h + + + + + +Node2 + + +mfem.hpp + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/minus.svg b/docs/html/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/docs/html/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/minusd.svg b/docs/html/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/docs/html/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/namespacemembers.html b/docs/html/namespacemembers.html new file mode 100644 index 0000000..ac43679 --- /dev/null +++ b/docs/html/namespacemembers.html @@ -0,0 +1,130 @@ + + + + + + + +stroid: Namespace Members + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    stroid v0.1.0 +
    +
    Multi-block curvilinear mesh generation
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    +
    +
    + + + + diff --git a/docs/html/namespacemembers_enum.html b/docs/html/namespacemembers_enum.html new file mode 100644 index 0000000..89d4bd9 --- /dev/null +++ b/docs/html/namespacemembers_enum.html @@ -0,0 +1,116 @@ + + + + + + + +stroid: Namespace Members + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    stroid v0.1.0 +
    +
    Multi-block curvilinear mesh generation
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace enums with links to the namespace documentation for each enum:
    +
    +
    + + + + diff --git a/docs/html/namespacemembers_func.html b/docs/html/namespacemembers_func.html new file mode 100644 index 0000000..1ea31fb --- /dev/null +++ b/docs/html/namespacemembers_func.html @@ -0,0 +1,129 @@ + + + + + + + +stroid: Namespace Members + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    stroid v0.1.0 +
    +
    Multi-block curvilinear mesh generation
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    +
    +
    + + + + diff --git a/docs/html/namespaces.html b/docs/html/namespaces.html new file mode 100644 index 0000000..3e7f362 --- /dev/null +++ b/docs/html/namespaces.html @@ -0,0 +1,125 @@ + + + + + + + +stroid: Namespace List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    stroid v0.1.0 +
    +
    Multi-block curvilinear mesh generation
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Namespace List
    +
    +
    +
    Here is a list of all namespaces with brief descriptions:
    +
    [detail level 12]
    + + + + + +
     Nstroid
     Nconfig
     NIO
     Ntopology
     Nutils
    +
    +
    +
    + + + + diff --git a/docs/html/namespaces_dup.js b/docs/html/namespaces_dup.js new file mode 100644 index 0000000..b76b6ad --- /dev/null +++ b/docs/html/namespaces_dup.js @@ -0,0 +1,4 @@ +var namespaces_dup = +[ + [ "stroid", "namespacestroid.html", "namespacestroid" ] +]; \ No newline at end of file diff --git a/docs/html/namespacestroid.html b/docs/html/namespacestroid.html new file mode 100644 index 0000000..233eab8 --- /dev/null +++ b/docs/html/namespacestroid.html @@ -0,0 +1,131 @@ + + + + + + + +stroid: stroid Namespace Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    stroid v0.1.0 +
    +
    Multi-block curvilinear mesh generation
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    stroid Namespace Reference
    +
    +
    + + + + + + + + + + +

    +Namespaces

    namespace  config
     
    namespace  IO
     
    namespace  topology
     
    namespace  utils
     
    +
    +
    + + + + diff --git a/docs/html/namespacestroid.js b/docs/html/namespacestroid.js new file mode 100644 index 0000000..c3af8c5 --- /dev/null +++ b/docs/html/namespacestroid.js @@ -0,0 +1,29 @@ +var namespacestroid = +[ + [ "config", "namespacestroid_1_1config.html", "namespacestroid_1_1config" ], + [ "IO", "namespacestroid_1_1_i_o.html", [ + [ "VISUALIZATION_MODE", "namespacestroid_1_1_i_o.html#ad4048304d8a0c7075d2b2a6e465d0b6e", [ + [ "NONE", "namespacestroid_1_1_i_o.html#ad4048304d8a0c7075d2b2a6e465d0b6eab50339a10e1de285ac99d4c3990b8693", null ], + [ "ELEMENT_ID", "namespacestroid_1_1_i_o.html#ad4048304d8a0c7075d2b2a6e465d0b6eac31a2fe3e97d218a154c1947b43d6bbf", null ], + [ "BOUNDARY_ELEMENT_ID", "namespacestroid_1_1_i_o.html#ad4048304d8a0c7075d2b2a6e465d0b6eaee96e14c2b71bd59252006289ba464cf", null ] + ] ], + [ "SaveMesh", "namespacestroid_1_1_i_o.html#aeb567ddc70ff2d064c139dee87575830", null ], + [ "SaveVTU", "namespacestroid_1_1_i_o.html#ab4c8bda7ab370e34376a7832fbf0951e", null ], + [ "ViewMesh", "namespacestroid_1_1_i_o.html#a496f5c16eaffda5922a0b96c1f525dab", null ], + [ "VisualizeFaceValence", "namespacestroid_1_1_i_o.html#a8100e130b3a49fdee48bc3c4d4e63963", null ] + ] ], + [ "topology", "namespacestroid_1_1topology.html", [ + [ "ApplyEquiangular", "namespacestroid_1_1topology.html#a03f0b29ccf7d427a175de9ff75824b7c", null ], + [ "ApplyKelvin", "namespacestroid_1_1topology.html#a59c54a10f726d323f8506b4a2edd7467", null ], + [ "ApplySpheroidal", "namespacestroid_1_1topology.html#a7fbf58c40c03bc751d53f4a3273744fc", null ], + [ "BuildSkeleton", "namespacestroid_1_1topology.html#abc0d8a1fb8e9c5ac0e259e4c93db7892", null ], + [ "Finalize", "namespacestroid_1_1topology.html#a62774bcba7ea1a485892dcd4bed6425b", null ], + [ "ProjectMesh", "namespacestroid_1_1topology.html#a836ed13e5bac63e7952c3ce4e5532e78", null ], + [ "PromoteToHighOrder", "namespacestroid_1_1topology.html#a5907aa2e639cda703d48d177abc37caf", null ], + [ "TransformPoint", "namespacestroid_1_1topology.html#a394e33bdfafdaccd6edfaae0642d3456", null ] + ] ], + [ "utils", "namespacestroid_1_1utils.html", [ + [ "MarkFlippedBoundaryElements", "namespacestroid_1_1utils.html#ae047d97d7d5dc12812395909d00f5bbe", null ], + [ "MarkFlippedElements", "namespacestroid_1_1utils.html#a22ab5809195bf85156607790f82b5e2d", null ] + ] ] +]; \ No newline at end of file diff --git a/docs/html/namespacestroid_1_1_i_o.html b/docs/html/namespacestroid_1_1_i_o.html new file mode 100644 index 0000000..3250e30 --- /dev/null +++ b/docs/html/namespacestroid_1_1_i_o.html @@ -0,0 +1,312 @@ + + + + + + + +stroid: stroid::IO Namespace Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    stroid v0.1.0 +
    +
    Multi-block curvilinear mesh generation
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    stroid::IO Namespace Reference
    +
    +
    + + + + + +

    +Enumerations

    enum class  VISUALIZATION_MODE : uint8_t { NONE +, ELEMENT_ID +, BOUNDARY_ELEMENT_ID + }
     Visualization modes for GLVis display. More...
     
    + + + + + + + + + + + + + +

    +Functions

    void SaveMesh (const mfem::Mesh &mesh, const std::string &filename)
     Save a mesh to MFEM's native .mesh format.
     
    void SaveVTU (mfem::Mesh &mesh, const std::string &exportName)
     Save a mesh as a ParaView VTU dataset.
     
    void ViewMesh (mfem::Mesh &mesh, const std::string &title, VISUALIZATION_MODE mode, const std::string &vishost, int visport)
     Stream a mesh to a running GLVis server for interactive viewing.
     
    void VisualizeFaceValence (mfem::Mesh &mesh)
     Visualize boundary face valence (1=surface, 2=internal).
     
    +

    Enumeration Type Documentation

    + +

    ◆ VISUALIZATION_MODE

    + +
    +
    + + + + + +
    + + + + +
    enum class stroid::IO::VISUALIZATION_MODE : uint8_t
    +
    +strong
    +
    + +

    Visualization modes for GLVis display.

    + + + + +
    Enumerator
    NONE 

    No attribute visualization (default rendering).

    +
    ELEMENT_ID 

    Color elements by their element attribute/ID.

    +
    BOUNDARY_ELEMENT_ID 

    Color boundary-adjacent elements by boundary attribute/ID.

    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ SaveMesh()

    + +
    +
    + + + + + + + + + + + +
    void stroid::IO::SaveMesh (const mfem::Mesh & mesh,
    const std::string & filename )
    +
    + +

    Save a mesh to MFEM's native .mesh format.

    +
    Parameters
    + + + +
    meshMesh to serialize.
    filenameOutput path (including extension).
    +
    +
    + +
    +
    + +

    ◆ SaveVTU()

    + +
    +
    + + + + + + + + + + + +
    void stroid::IO::SaveVTU (mfem::Mesh & mesh,
    const std::string & exportName )
    +
    + +

    Save a mesh as a ParaView VTU dataset.

    +
    Parameters
    + + + +
    meshMesh to export.
    exportNameOutput base name (ParaView will add extensions).
    +
    +
    + +
    +
    + +

    ◆ ViewMesh()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void stroid::IO::ViewMesh (mfem::Mesh & mesh,
    const std::string & title,
    VISUALIZATION_MODE mode,
    const std::string & vishost,
    int visport )
    +
    + +

    Stream a mesh to a running GLVis server for interactive viewing.

    +
    Parameters
    + + + + + + +
    meshMesh to display.
    titleWindow title shown in GLVis.
    modeAttribute visualization mode.
    vishostGLVis server host.
    visportGLVis server port.
    +
    +
    + +
    +
    + +

    ◆ VisualizeFaceValence()

    + +
    +
    + + + + + + + +
    void stroid::IO::VisualizeFaceValence (mfem::Mesh & mesh)
    +
    + +

    Visualize boundary face valence (1=surface, 2=internal).

    +
    Parameters
    + + +
    meshMesh whose boundary faces are inspected.
    +
    +
    + +
    +
    +
    +
    + + + + diff --git a/docs/html/namespacestroid_1_1config.html b/docs/html/namespacestroid_1_1config.html new file mode 100644 index 0000000..22b562b --- /dev/null +++ b/docs/html/namespacestroid_1_1config.html @@ -0,0 +1,126 @@ + + + + + + + +stroid: stroid::config Namespace Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    stroid v0.1.0 +
    +
    Multi-block curvilinear mesh generation
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    stroid::config Namespace Reference
    +
    +
    + + + + + +

    +Classes

    struct  MeshConfig
     Configuration parameters for stroid mesh generation. More...
     
    +
    +
    + + + + diff --git a/docs/html/namespacestroid_1_1config.js b/docs/html/namespacestroid_1_1config.js new file mode 100644 index 0000000..edb6deb --- /dev/null +++ b/docs/html/namespacestroid_1_1config.js @@ -0,0 +1,4 @@ +var namespacestroid_1_1config = +[ + [ "MeshConfig", "structstroid_1_1config_1_1_mesh_config.html", "structstroid_1_1config_1_1_mesh_config" ] +]; \ No newline at end of file diff --git a/docs/html/namespacestroid_1_1topology.html b/docs/html/namespacestroid_1_1topology.html new file mode 100644 index 0000000..be81d3f --- /dev/null +++ b/docs/html/namespacestroid_1_1topology.html @@ -0,0 +1,385 @@ + + + + + + + +stroid: stroid::topology Namespace Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    stroid v0.1.0 +
    +
    Multi-block curvilinear mesh generation
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    stroid::topology Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    void PromoteToHighOrder (mfem::Mesh &mesh, const fourdst::config::Config< config::MeshConfig > &config)
     Promote a mesh to high-order by attaching an H1 nodal finite element space.
     
    void ProjectMesh (mfem::Mesh &mesh, const fourdst::config::Config< config::MeshConfig > &config)
     Project high-order mesh nodes using the configured curvilinear mapping.
     
    void ApplyEquiangular (mfem::Vector &pos)
     Apply an equiangular (gnomonic) projection to a point on a cube.
     
    void ApplySpheroidal (mfem::Vector &pos, const fourdst::config::Config< config::MeshConfig > &config)
     Apply spheroidal flattening along the Z axis.
     
    void ApplyKelvin (mfem::Vector &pos, const fourdst::config::Config< config::MeshConfig > &config)
     Apply Kelvin transform outside the stellar radius.
     
    void TransformPoint (mfem::Vector &pos, const fourdst::config::Config< config::MeshConfig > &config, int attribute_id)
     Map a point from the initial block topology to the curvilinear domain.
     
    std::unique_ptr< mfem::Mesh > BuildSkeleton (const fourdst::config::Config< config::MeshConfig > &config)
     Build the initial multi-block mesh topology for the star model.
     
    void Finalize (mfem::Mesh &mesh, const fourdst::config::Config< config::MeshConfig > &config)
     Finalize topology, validate orientation, and apply uniform refinement.
     
    +

    Function Documentation

    + +

    ◆ ApplyEquiangular()

    + +
    +
    + + + + + + + +
    void stroid::topology::ApplyEquiangular (mfem::Vector & pos)
    +
    + +

    Apply an equiangular (gnomonic) projection to a point on a cube.

    +
    Parameters
    + + +
    posPosition vector updated in-place.
    +
    +
    + +
    +
    + +

    ◆ ApplyKelvin()

    + +
    +
    + + + + + + + + + + + +
    void stroid::topology::ApplyKelvin (mfem::Vector & pos,
    const fourdst::config::Config< config::MeshConfig > & config )
    +
    + +

    Apply Kelvin transform outside the stellar radius.

    +
    Parameters
    + + + +
    posPosition vector updated in-place.
    configMesh configuration (uses r_star and r_infinity).
    +
    +
    + +
    +
    + +

    ◆ ApplySpheroidal()

    + +
    +
    + + + + + + + + + + + +
    void stroid::topology::ApplySpheroidal (mfem::Vector & pos,
    const fourdst::config::Config< config::MeshConfig > & config )
    +
    + +

    Apply spheroidal flattening along the Z axis.

    +
    Parameters
    + + + +
    posPosition vector updated in-place.
    configMesh configuration (uses flattening).
    +
    +
    + +
    +
    + +

    ◆ BuildSkeleton()

    + +
    +
    + + + + + + + +
    std::unique_ptr< mfem::Mesh > stroid::topology::BuildSkeleton (const fourdst::config::Config< config::MeshConfig > & config)
    +
    + +

    Build the initial multi-block mesh topology for the star model.

    +
    Parameters
    + + +
    configMesh configuration (uses radii and domain flags).
    +
    +
    +
    Returns
    Newly allocated mesh skeleton (not yet refined or curved).
    + +
    +
    + +

    ◆ Finalize()

    + +
    +
    + + + + + + + + + + + +
    void stroid::topology::Finalize (mfem::Mesh & mesh,
    const fourdst::config::Config< config::MeshConfig > & config )
    +
    + +

    Finalize topology, validate orientation, and apply uniform refinement.

    +
    Parameters
    + + + +
    meshMesh to finalize in-place.
    configMesh configuration (uses refinement_levels).
    +
    +
    + +
    +
    + +

    ◆ ProjectMesh()

    + +
    +
    + + + + + + + + + + + +
    void stroid::topology::ProjectMesh (mfem::Mesh & mesh,
    const fourdst::config::Config< config::MeshConfig > & config )
    +
    + +

    Project high-order mesh nodes using the configured curvilinear mapping.

    +

    Requires nodes to be present (call PromoteToHighOrder first).

    Parameters
    + + + +
    meshMesh to update in-place.
    configMesh configuration (uses radii, flattening, and mapping parameters).
    +
    +
    + +
    +
    + +

    ◆ PromoteToHighOrder()

    + +
    +
    + + + + + + + + + + + +
    void stroid::topology::PromoteToHighOrder (mfem::Mesh & mesh,
    const fourdst::config::Config< config::MeshConfig > & config )
    +
    + +

    Promote a mesh to high-order by attaching an H1 nodal finite element space.

    +
    Parameters
    + + + +
    meshMesh to update in-place.
    configMesh configuration (uses order).
    +
    +
    + +
    +
    + +

    ◆ TransformPoint()

    + +
    +
    + + + + + + + + + + + + + + + + +
    void stroid::topology::TransformPoint (mfem::Vector & pos,
    const fourdst::config::Config< config::MeshConfig > & config,
    int attribute_id )
    +
    + +

    Map a point from the initial block topology to the curvilinear domain.

    +
    Parameters
    + + + + +
    posPosition vector updated in-place.
    configMesh configuration (uses radii, flattening, instability radius, and core steepness).
    attribute_idElement attribute ID (currently unused).
    +
    +
    + +
    +
    +
    +
    + + + + diff --git a/docs/html/namespacestroid_1_1utils.html b/docs/html/namespacestroid_1_1utils.html new file mode 100644 index 0000000..6d35d01 --- /dev/null +++ b/docs/html/namespacestroid_1_1utils.html @@ -0,0 +1,180 @@ + + + + + + + +stroid: stroid::utils Namespace Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    stroid v0.1.0 +
    +
    Multi-block curvilinear mesh generation
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    stroid::utils Namespace Reference
    +
    +
    + + + + + + + + +

    +Functions

    void MarkFlippedElements (mfem::Mesh &mesh)
     Mark elements with negative Jacobian determinant.
     
    void MarkFlippedBoundaryElements (mfem::Mesh &mesh)
     Mark boundary elements whose outward normal orientation is flipped.
     
    +

    Function Documentation

    + +

    ◆ MarkFlippedBoundaryElements()

    + +
    +
    + + + + + + + +
    void stroid::utils::MarkFlippedBoundaryElements (mfem::Mesh & mesh)
    +
    + +

    Mark boundary elements whose outward normal orientation is flipped.

    +

    Boundary elements detected as flipped are assigned attribute 500.

    Parameters
    + + +
    meshMesh to scan and update in-place.
    +
    +
    + +
    +
    + +

    ◆ MarkFlippedElements()

    + +
    +
    + + + + + + + +
    void stroid::utils::MarkFlippedElements (mfem::Mesh & mesh)
    +
    + +

    Mark elements with negative Jacobian determinant.

    +

    Elements detected as flipped are assigned attribute 999.

    Parameters
    + + +
    meshMesh to scan and update in-place.
    +
    +
    + +
    +
    +
    +
    + + + + diff --git a/docs/html/nav_f.png b/docs/html/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/docs/html/nav_fd.png b/docs/html/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/docs/html/nav_g.png b/docs/html/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/docs/html/navtree.css b/docs/html/navtree.css new file mode 100644 index 0000000..6b1e5e4 --- /dev/null +++ b/docs/html/navtree.css @@ -0,0 +1,149 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: white; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree .selected .arrow { + color: #9CAFD4; + text-shadow: none; +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:white; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: $width; + overflow : hidden; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:url('splitbar.png'); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-repeat:repeat-x; + background-color: #F9FAFC; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/docs/html/navtree.js b/docs/html/navtree.js new file mode 100644 index 0000000..2d4fa84 --- /dev/null +++ b/docs/html/navtree.js @@ -0,0 +1,483 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function initNavTree(toroot,relpath) { + let navTreeSubIndices = []; + const ARROW_DOWN = '▼'; + const ARROW_RIGHT = '►'; + const NAVPATH_COOKIE_NAME = ''+'navpath'; + + const getData = function(varName) { + const i = varName.lastIndexOf('/'); + const n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/-/g,'_')); + } + + const stripPath = function(uri) { + return uri.substring(uri.lastIndexOf('/')+1); + } + + const stripPath2 = function(uri) { + const i = uri.lastIndexOf('/'); + const s = uri.substring(i+1); + const m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; + } + + const hashValue = function() { + return $(location).attr('hash').substring(1).replace(/[^\w-]/g,''); + } + + const hashUrl = function() { + return '#'+hashValue(); + } + + const pathName = function() { + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;()]/g, ''); + } + + const storeLink = function(link) { + if (!$("#nav-sync").hasClass('sync')) { + Cookie.writeSetting(NAVPATH_COOKIE_NAME,link,0); + } + } + + const deleteLink = function() { + Cookie.eraseSetting(NAVPATH_COOKIE_NAME); + } + + const cachedLink = function() { + return Cookie.readSetting(NAVPATH_COOKIE_NAME,''); + } + + const getScript = function(scriptName,func) { + const head = document.getElementsByTagName("head")[0]; + const script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); + } + + const createIndent = function(o,domNode,node) { + let level=-1; + let n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + const imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=ARROW_RIGHT; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=ARROW_RIGHT; + node.expanded = false; + } else { + expandNode(o, node, false, true); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + let span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } + } + + let animationInProgress = false; + + const gotoAnchor = function(anchor,aname) { + let pos, docContent = $('#doc-content'); + let ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || ancParent.hasClass('fieldtype') || + ancParent.is(':header')) { + pos = ancParent.offset().top; + } else if (anchor.position()) { + pos = anchor.offset().top; + } + if (pos) { + const dcOffset = docContent.offset().top; + const dcHeight = docContent.height(); + const dcScrHeight = docContent[0].scrollHeight + const dcScrTop = docContent.scrollTop(); + let dist = Math.abs(Math.min(pos-dcOffset,dcScrHeight-dcHeight-dcScrTop)); + animationInProgress = true; + docContent.animate({ + scrollTop: pos + dcScrTop - dcOffset + },Math.max(50,Math.min(500,dist)),function() { + animationInProgress=false; + if (anchor.parent().attr('class')=='memItemLeft') { + let rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname') { + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype') { + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + }); + } + } + + const newNode = function(o, po, text, link, childrenData, lastNode) { + const node = { + children : [], + childrenData : childrenData, + depth : po.depth + 1, + relpath : po.relpath, + isLast : lastNode, + li : document.createElement("li"), + parentNode : po, + itemDiv : document.createElement("div"), + labelSpan : document.createElement("span"), + label : document.createTextNode(text), + expanded : false, + childrenUL : null, + getChildrenUL : function() { + if (!this.childrenUL) { + this.childrenUL = document.createElement("ul"); + this.childrenUL.className = "children_ul"; + this.childrenUL.style.display = "none"; + this.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }, + }; + + node.itemDiv.className = "item"; + node.labelSpan.className = "label"; + createIndent(o,node.itemDiv,node); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + const a = document.createElement("a"); + node.labelSpan.appendChild(a); + po.getChildrenUL().appendChild(node.li); + a.appendChild(node.label); + if (link) { + let url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + const aname = '#'+link.split('#')[1]; + const srcPage = stripPath(pathName()); + const targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : aname; + a.onclick = function() { + storeLink(link); + aPPar = $(a).parent().parent(); + if (!aPPar.hasClass('selected')) { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + aPPar.addClass('selected'); + aPPar.attr('id','selected'); + } + const anchor = $(aname); + gotoAnchor(anchor,aname); + }; + } else { + a.href = url; + a.onclick = () => storeLink(link); + } + } else if (childrenData != null) { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + return node; + } + + const showRoot = function() { + const headerHeight = $("#top").height(); + const footerHeight = $("#nav-path").height(); + const windowHeight = $(window).height() - headerHeight - footerHeight; + (function() { // retry until we can scroll to the selected item + try { + const navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); + } + + const expandNode = function(o, node, imm, setFocus) { + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + const varName = node.childrenData; + getScript(node.relpath+varName,function() { + node.childrenData = getData(varName); + expandNode(o, node, imm, setFocus); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = ARROW_DOWN; + node.expanded = true; + if (setFocus) { + $(node.expandToggle).focus(); + } + } + } + } + + const glowEffect = function(n,duration) { + n.addClass('glow').delay(duration).queue(function(next) { + $(this).removeClass('glow');next(); + }); + } + + const highlightAnchor = function() { + const aname = hashUrl(); + const anchor = $(aname); + gotoAnchor(anchor,aname); + } + + const selectAndHighlight = function(hash,n) { + let a; + if (hash) { + const link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + let topOffset=5; + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + showRoot(); + } + + const showNode = function(o, node, index, hash) { + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + const varName = node.childrenData; + getScript(node.relpath+varName,function() { + node.childrenData = getData(varName); + showNode(o,node,index,hash); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = ARROW_DOWN; + node.expanded = true; + const n = node.children[o.breadcrumbs[index]]; + if (index+11 ? '#'+parts[1].replace(/[^\w-]/g,'') : ''; + } + if (hash.match(/^#l\d+$/)) { + const anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + const url=root+hash; + let i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function() { + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + }); + } + } + + const showSyncOff = function(n,relpath) { + n.html(''); + } + + const showSyncOn = function(n,relpath) { + n.html(''); + } + + const o = { + toroot : toroot, + node : { + childrenData : NAVTREE, + children : [], + childrenUL : document.createElement("ul"), + getChildrenUL : function() { return this.childrenUL }, + li : document.getElementById("nav-tree-contents"), + depth : 0, + relpath : relpath, + expanded : false, + isLast : true, + plus_img : document.createElement("span"), + }, + }; + o.node.li.appendChild(o.node.childrenUL); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = ARROW_RIGHT; + + const navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + + navSync.click(() => { + const navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } + }); + + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + + $(window).bind('hashchange', () => { + if (!animationInProgress) { + if (window.location.hash && window.location.hash.length>1) { + let a; + if ($(location).attr('hash')) { + const clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + + + diff --git a/docs/html/plusd.svg b/docs/html/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/docs/html/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/resize.js b/docs/html/resize.js new file mode 100644 index 0000000..178d03b --- /dev/null +++ b/docs/html/resize.js @@ -0,0 +1,147 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function initResizable(treeview) { + let sidenav,navtree,content,header,footer,barWidth=6; + const RESIZE_COOKIE_NAME = ''+'width'; + + function resizeWidth() { + const sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(sidenavWidth)+"px"}); + } + Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); + } + + function restoreWidth(navWidth) { + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + } + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight(treeview) { + const headerHeight = header.outerHeight(); + const windowHeight = $(window).height(); + let contentHeight; + if (treeview) + { + const footerHeight = footer.outerHeight(); + let navtreeHeight,sideNavHeight; + if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */ + contentHeight = windowHeight - headerHeight - footerHeight; + navtreeHeight = contentHeight; + sideNavHeight = contentHeight; + } else if (page_layout==1) { /* DISABLE_INDEX=YES */ + contentHeight = windowHeight - footerHeight; + navtreeHeight = windowHeight - headerHeight; + sideNavHeight = windowHeight; + } + navtree.css({height:navtreeHeight + "px"}); + sidenav.css({height:sideNavHeight + "px"}); + } + else + { + contentHeight = windowHeight - headerHeight; + } + content.css({height:contentHeight + "px"}); + if (location.hash.slice(1)) { + (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); + } + } + + function collapseExpand() { + let newWidth; + if (sidenav.width()>0) { + newWidth=0; + } else { + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + newWidth = (width>250 && width<$(window).width()) ? width : 250; + } + restoreWidth(newWidth); + const sidenavWidth = $(sidenav).outerWidth(); + Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); + } + + header = $("#top"); + content = $("#doc-content"); + footer = $("#nav-path"); + sidenav = $("#side-nav"); + if (!treeview) { +// title = $("#titlearea"); +// titleH = $(title).height(); +// let animating = false; +// content.on("scroll", function() { +// slideOpts = { duration: 200, +// step: function() { +// contentHeight = $(window).height() - header.outerHeight(); +// content.css({ height : contentHeight + "px" }); +// }, +// done: function() { animating=false; } +// }; +// if (content.scrollTop()>titleH && title.css('display')!='none' && !animating) { +// title.slideUp(slideOpts); +// animating=true; +// } else if (content.scrollTop()<=titleH && title.css('display')=='none' && !animating) { +// title.slideDown(slideOpts); +// animating=true; +// } +// }); + } else { + navtree = $("#nav-tree"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + } + $(window).resize(function() { resizeHeight(treeview); }); + if (treeview) + { + const device = navigator.userAgent.toLowerCase(); + const touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + if (width) { restoreWidth(width); } else { resizeWidth(); } + } + resizeHeight(treeview); + const url = location.href; + const i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + const _preventDefault = function(evt) { evt.preventDefault(); }; + if (treeview) + { + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + // workaround for firefox + $("body").css({overflow: "hidden"}); + } + $(window).on('load',function() { resizeHeight(treeview); }); +} +/* @license-end */ diff --git a/docs/html/search/all_0.js b/docs/html/search/all_0.js new file mode 100644 index 0000000..041f46c --- /dev/null +++ b/docs/html/search/all_0.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['a_20multi_20block_20mesh_20generation_20tool_20for_20stellar_20modeling_0',['A multi-block mesh generation tool for stellar modeling',['../index.html#autotoc_md1',1,'']]], + ['and_20installing_1',['Building and Installing',['../index.html#autotoc_md2',1,'']]], + ['applyequiangular_2',['ApplyEquiangular',['../namespacestroid_1_1topology.html#a03f0b29ccf7d427a175de9ff75824b7c',1,'stroid::topology']]], + ['applykelvin_3',['ApplyKelvin',['../namespacestroid_1_1topology.html#a59c54a10f726d323f8506b4a2edd7467',1,'stroid::topology']]], + ['applyspheroidal_4',['ApplySpheroidal',['../namespacestroid_1_1topology.html#a7fbf58c40c03bc751d53f4a3273744fc',1,'stroid::topology']]] +]; diff --git a/docs/html/search/all_1.js b/docs/html/search/all_1.js new file mode 100644 index 0000000..6b3970d --- /dev/null +++ b/docs/html/search/all_1.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['block_20mesh_20generation_20tool_20for_20stellar_20modeling_0',['A multi-block mesh generation tool for stellar modeling',['../index.html#autotoc_md1',1,'']]], + ['boundary_5felement_5fid_1',['BOUNDARY_ELEMENT_ID',['../namespacestroid_1_1_i_o.html#ad4048304d8a0c7075d2b2a6e465d0b6eaee96e14c2b71bd59252006289ba464cf',1,'stroid::IO']]], + ['building_2',['Building',['../index.html#autotoc_md3',1,'']]], + ['building_20and_20installing_3',['Building and Installing',['../index.html#autotoc_md2',1,'']]], + ['buildskeleton_4',['BuildSkeleton',['../namespacestroid_1_1topology.html#abc0d8a1fb8e9c5ac0e259e4c93db7892',1,'stroid::topology']]] +]; diff --git a/docs/html/search/all_2.js b/docs/html/search/all_2.js new file mode 100644 index 0000000..d4538bf --- /dev/null +++ b/docs/html/search/all_2.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['c_20interface_0',['C++ Interface',['../index.html#autotoc_md6',1,'']]], + ['config_2eh_1',['config.h',['../config_8h.html',1,'']]], + ['configuration_20file_2',['Configuration File',['../index.html#autotoc_md5',1,'']]], + ['core_5fsteepness_3',['core_steepness',['../structstroid_1_1config_1_1_mesh_config.html#aed32864839b149c94842801b6413d94d',1,'stroid::config::MeshConfig']]], + ['curvilinear_2ecpp_4',['curvilinear.cpp',['../curvilinear_8cpp.html',1,'']]], + ['curvilinear_2eh_5',['curvilinear.h',['../curvilinear_8h.html',1,'']]] +]; diff --git a/docs/html/search/all_3.js b/docs/html/search/all_3.js new file mode 100644 index 0000000..0741bc3 --- /dev/null +++ b/docs/html/search/all_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['element_5fid_0',['ELEMENT_ID',['../namespacestroid_1_1_i_o.html#ad4048304d8a0c7075d2b2a6e465d0b6eac31a2fe3e97d218a154c1947b43d6bbf',1,'stroid::IO']]], + ['example_20meshes_1',['Example Meshes',['../index.html#autotoc_md7',1,'']]] +]; diff --git a/docs/html/search/all_4.js b/docs/html/search/all_4.js new file mode 100644 index 0000000..74e2e6b --- /dev/null +++ b/docs/html/search/all_4.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['file_0',['Configuration File',['../index.html#autotoc_md5',1,'']]], + ['finalize_1',['Finalize',['../namespacestroid_1_1topology.html#a62774bcba7ea1a485892dcd4bed6425b',1,'stroid::topology']]], + ['flattening_2',['flattening',['../structstroid_1_1config_1_1_mesh_config.html#affad4638b0ae7b710f2b2db992f6f584',1,'stroid::config::MeshConfig']]], + ['for_20stellar_20modeling_3',['A multi-block mesh generation tool for stellar modeling',['../index.html#autotoc_md1',1,'']]], + ['funding_4',['Funding',['../index.html#autotoc_md8',1,'']]] +]; diff --git a/docs/html/search/all_5.js b/docs/html/search/all_5.js new file mode 100644 index 0000000..f0f8782 --- /dev/null +++ b/docs/html/search/all_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['generation_20tool_20for_20stellar_20modeling_0',['A multi-block mesh generation tool for stellar modeling',['../index.html#autotoc_md1',1,'']]] +]; diff --git a/docs/html/search/all_6.js b/docs/html/search/all_6.js new file mode 100644 index 0000000..cc8b57a --- /dev/null +++ b/docs/html/search/all_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['include_5fexternal_5fdomain_0',['include_external_domain',['../structstroid_1_1config_1_1_mesh_config.html#a062652781f4f3ea0b7ca8764362a7368',1,'stroid::config::MeshConfig']]], + ['installing_1',['Building and Installing',['../index.html#autotoc_md2',1,'']]], + ['interface_2',['C++ Interface',['../index.html#autotoc_md6',1,'']]] +]; diff --git a/docs/html/search/all_7.js b/docs/html/search/all_7.js new file mode 100644 index 0000000..93617ff --- /dev/null +++ b/docs/html/search/all_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['logo_2epng_0',['Logo.png',['../_logo_8png.html',1,'']]] +]; diff --git a/docs/html/search/all_8.js b/docs/html/search/all_8.js new file mode 100644 index 0000000..853e1aa --- /dev/null +++ b/docs/html/search/all_8.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['mainpage_2emd_0',['mainpage.md',['../mainpage_8md.html',1,'']]], + ['mapping_2ecpp_1',['mapping.cpp',['../mapping_8cpp.html',1,'']]], + ['mapping_2eh_2',['mapping.h',['../mapping_8h.html',1,'']]], + ['markflippedboundaryelements_3',['MarkFlippedBoundaryElements',['../namespacestroid_1_1utils.html#ae047d97d7d5dc12812395909d00f5bbe',1,'stroid::utils']]], + ['markflippedelements_4',['MarkFlippedElements',['../namespacestroid_1_1utils.html#a22ab5809195bf85156607790f82b5e2d',1,'stroid::utils']]], + ['mesh_20generation_20tool_20for_20stellar_20modeling_5',['A multi-block mesh generation tool for stellar modeling',['../index.html#autotoc_md1',1,'']]], + ['mesh_2ecpp_6',['mesh.cpp',['../mesh_8cpp.html',1,'']]], + ['mesh_2eh_7',['mesh.h',['../mesh_8h.html',1,'']]], + ['mesh_5futils_2ecpp_8',['mesh_utils.cpp',['../mesh__utils_8cpp.html',1,'']]], + ['mesh_5futils_2eh_9',['mesh_utils.h',['../mesh__utils_8h.html',1,'']]], + ['meshconfig_10',['MeshConfig',['../structstroid_1_1config_1_1_mesh_config.html',1,'stroid::config']]], + ['meshes_11',['Example Meshes',['../index.html#autotoc_md7',1,'']]], + ['modeling_12',['A multi-block mesh generation tool for stellar modeling',['../index.html#autotoc_md1',1,'']]], + ['multi_20block_20mesh_20generation_20tool_20for_20stellar_20modeling_13',['A multi-block mesh generation tool for stellar modeling',['../index.html#autotoc_md1',1,'']]] +]; diff --git a/docs/html/search/all_9.js b/docs/html/search/all_9.js new file mode 100644 index 0000000..bc369c8 --- /dev/null +++ b/docs/html/search/all_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['none_0',['NONE',['../namespacestroid_1_1_i_o.html#ad4048304d8a0c7075d2b2a6e465d0b6eab50339a10e1de285ac99d4c3990b8693',1,'stroid::IO']]] +]; diff --git a/docs/html/search/all_a.js b/docs/html/search/all_a.js new file mode 100644 index 0000000..54e4e33 --- /dev/null +++ b/docs/html/search/all_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['order_0',['order',['../structstroid_1_1config_1_1_mesh_config.html#a860e78f1906acb0c3aa08d55f94de3fd',1,'stroid::config::MeshConfig']]] +]; diff --git a/docs/html/search/all_b.js b/docs/html/search/all_b.js new file mode 100644 index 0000000..0d4b130 --- /dev/null +++ b/docs/html/search/all_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['projectmesh_0',['ProjectMesh',['../namespacestroid_1_1topology.html#a836ed13e5bac63e7952c3ce4e5532e78',1,'stroid::topology']]], + ['promotetohighorder_1',['PromoteToHighOrder',['../namespacestroid_1_1topology.html#a5907aa2e639cda703d48d177abc37caf',1,'stroid::topology']]] +]; diff --git a/docs/html/search/all_c.js b/docs/html/search/all_c.js new file mode 100644 index 0000000..957153d --- /dev/null +++ b/docs/html/search/all_c.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['r_5fcore_0',['r_core',['../structstroid_1_1config_1_1_mesh_config.html#a5c68a895f73dc82a38a8daac22a83ad7',1,'stroid::config::MeshConfig']]], + ['r_5finfinity_1',['r_infinity',['../structstroid_1_1config_1_1_mesh_config.html#ac7546899ebbfe191ea3a8bf2403b31eb',1,'stroid::config::MeshConfig']]], + ['r_5finstability_2',['r_instability',['../structstroid_1_1config_1_1_mesh_config.html#a4da6d99ff7ba24d2f917e1fd98ddd877',1,'stroid::config::MeshConfig']]], + ['r_5fstar_3',['r_star',['../structstroid_1_1config_1_1_mesh_config.html#a3fe80a30990d484dcc39b6f9a0befc05',1,'stroid::config::MeshConfig']]], + ['refinement_5flevels_4',['refinement_levels',['../structstroid_1_1config_1_1_mesh_config.html#a8cafcbebf64ae251517118eb152de981',1,'stroid::config::MeshConfig']]], + ['running_5',['Running',['../index.html#autotoc_md4',1,'']]] +]; diff --git a/docs/html/search/all_d.js b/docs/html/search/all_d.js new file mode 100644 index 0000000..4d9b9c4 --- /dev/null +++ b/docs/html/search/all_d.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['savemesh_0',['SaveMesh',['../namespacestroid_1_1_i_o.html#aeb567ddc70ff2d064c139dee87575830',1,'stroid::IO']]], + ['savevtu_1',['SaveVTU',['../namespacestroid_1_1_i_o.html#ab4c8bda7ab370e34376a7832fbf0951e',1,'stroid::IO']]], + ['stellar_20modeling_2',['A multi-block mesh generation tool for stellar modeling',['../index.html#autotoc_md1',1,'']]], + ['stroid_3',['Stroid',['../index.html',1,'']]], + ['stroid_4',['stroid',['../namespacestroid.html',1,'']]], + ['stroid_3a_3aconfig_5',['config',['../namespacestroid_1_1config.html',1,'stroid']]], + ['stroid_3a_3aio_6',['IO',['../namespacestroid_1_1_i_o.html',1,'stroid']]], + ['stroid_3a_3atopology_7',['topology',['../namespacestroid_1_1topology.html',1,'stroid']]], + ['stroid_3a_3autils_8',['utils',['../namespacestroid_1_1utils.html',1,'stroid']]] +]; diff --git a/docs/html/search/all_e.js b/docs/html/search/all_e.js new file mode 100644 index 0000000..617c2af --- /dev/null +++ b/docs/html/search/all_e.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['tool_20for_20stellar_20modeling_0',['A multi-block mesh generation tool for stellar modeling',['../index.html#autotoc_md1',1,'']]], + ['topology_2ecpp_1',['topology.cpp',['../topology_8cpp.html',1,'']]], + ['topology_2eh_2',['topology.h',['../topology_8h.html',1,'']]], + ['transformpoint_3',['TransformPoint',['../namespacestroid_1_1topology.html#a394e33bdfafdaccd6edfaae0642d3456',1,'stroid::topology']]] +]; diff --git a/docs/html/search/all_f.js b/docs/html/search/all_f.js new file mode 100644 index 0000000..95cbf6d --- /dev/null +++ b/docs/html/search/all_f.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['viewmesh_0',['ViewMesh',['../namespacestroid_1_1_i_o.html#a496f5c16eaffda5922a0b96c1f525dab',1,'stroid::IO']]], + ['visualization_5fmode_1',['VISUALIZATION_MODE',['../namespacestroid_1_1_i_o.html#ad4048304d8a0c7075d2b2a6e465d0b6e',1,'stroid::IO']]], + ['visualizefacevalence_2',['VisualizeFaceValence',['../namespacestroid_1_1_i_o.html#a8100e130b3a49fdee48bc3c4d4e63963',1,'stroid::IO']]] +]; diff --git a/docs/html/search/classes_0.js b/docs/html/search/classes_0.js new file mode 100644 index 0000000..34c9671 --- /dev/null +++ b/docs/html/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['meshconfig_0',['MeshConfig',['../structstroid_1_1config_1_1_mesh_config.html',1,'stroid::config']]] +]; diff --git a/docs/html/search/close.svg b/docs/html/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/docs/html/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/docs/html/search/enums_0.js b/docs/html/search/enums_0.js new file mode 100644 index 0000000..1e40e8b --- /dev/null +++ b/docs/html/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['visualization_5fmode_0',['VISUALIZATION_MODE',['../namespacestroid_1_1_i_o.html#ad4048304d8a0c7075d2b2a6e465d0b6e',1,'stroid::IO']]] +]; diff --git a/docs/html/search/enumvalues_0.js b/docs/html/search/enumvalues_0.js new file mode 100644 index 0000000..cd3c907 --- /dev/null +++ b/docs/html/search/enumvalues_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['boundary_5felement_5fid_0',['BOUNDARY_ELEMENT_ID',['../namespacestroid_1_1_i_o.html#ad4048304d8a0c7075d2b2a6e465d0b6eaee96e14c2b71bd59252006289ba464cf',1,'stroid::IO']]] +]; diff --git a/docs/html/search/enumvalues_1.js b/docs/html/search/enumvalues_1.js new file mode 100644 index 0000000..4894a43 --- /dev/null +++ b/docs/html/search/enumvalues_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['element_5fid_0',['ELEMENT_ID',['../namespacestroid_1_1_i_o.html#ad4048304d8a0c7075d2b2a6e465d0b6eac31a2fe3e97d218a154c1947b43d6bbf',1,'stroid::IO']]] +]; diff --git a/docs/html/search/enumvalues_2.js b/docs/html/search/enumvalues_2.js new file mode 100644 index 0000000..bc369c8 --- /dev/null +++ b/docs/html/search/enumvalues_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['none_0',['NONE',['../namespacestroid_1_1_i_o.html#ad4048304d8a0c7075d2b2a6e465d0b6eab50339a10e1de285ac99d4c3990b8693',1,'stroid::IO']]] +]; diff --git a/docs/html/search/files_0.js b/docs/html/search/files_0.js new file mode 100644 index 0000000..cce96dc --- /dev/null +++ b/docs/html/search/files_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['config_2eh_0',['config.h',['../config_8h.html',1,'']]], + ['curvilinear_2ecpp_1',['curvilinear.cpp',['../curvilinear_8cpp.html',1,'']]], + ['curvilinear_2eh_2',['curvilinear.h',['../curvilinear_8h.html',1,'']]] +]; diff --git a/docs/html/search/files_1.js b/docs/html/search/files_1.js new file mode 100644 index 0000000..93617ff --- /dev/null +++ b/docs/html/search/files_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['logo_2epng_0',['Logo.png',['../_logo_8png.html',1,'']]] +]; diff --git a/docs/html/search/files_2.js b/docs/html/search/files_2.js new file mode 100644 index 0000000..162942b --- /dev/null +++ b/docs/html/search/files_2.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['mainpage_2emd_0',['mainpage.md',['../mainpage_8md.html',1,'']]], + ['mapping_2ecpp_1',['mapping.cpp',['../mapping_8cpp.html',1,'']]], + ['mapping_2eh_2',['mapping.h',['../mapping_8h.html',1,'']]], + ['mesh_2ecpp_3',['mesh.cpp',['../mesh_8cpp.html',1,'']]], + ['mesh_2eh_4',['mesh.h',['../mesh_8h.html',1,'']]], + ['mesh_5futils_2ecpp_5',['mesh_utils.cpp',['../mesh__utils_8cpp.html',1,'']]], + ['mesh_5futils_2eh_6',['mesh_utils.h',['../mesh__utils_8h.html',1,'']]] +]; diff --git a/docs/html/search/files_3.js b/docs/html/search/files_3.js new file mode 100644 index 0000000..08bbe03 --- /dev/null +++ b/docs/html/search/files_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['topology_2ecpp_0',['topology.cpp',['../topology_8cpp.html',1,'']]], + ['topology_2eh_1',['topology.h',['../topology_8h.html',1,'']]] +]; diff --git a/docs/html/search/functions_0.js b/docs/html/search/functions_0.js new file mode 100644 index 0000000..01799da --- /dev/null +++ b/docs/html/search/functions_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['applyequiangular_0',['ApplyEquiangular',['../namespacestroid_1_1topology.html#a03f0b29ccf7d427a175de9ff75824b7c',1,'stroid::topology']]], + ['applykelvin_1',['ApplyKelvin',['../namespacestroid_1_1topology.html#a59c54a10f726d323f8506b4a2edd7467',1,'stroid::topology']]], + ['applyspheroidal_2',['ApplySpheroidal',['../namespacestroid_1_1topology.html#a7fbf58c40c03bc751d53f4a3273744fc',1,'stroid::topology']]] +]; diff --git a/docs/html/search/functions_1.js b/docs/html/search/functions_1.js new file mode 100644 index 0000000..f2b7b61 --- /dev/null +++ b/docs/html/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['buildskeleton_0',['BuildSkeleton',['../namespacestroid_1_1topology.html#abc0d8a1fb8e9c5ac0e259e4c93db7892',1,'stroid::topology']]] +]; diff --git a/docs/html/search/functions_2.js b/docs/html/search/functions_2.js new file mode 100644 index 0000000..580f270 --- /dev/null +++ b/docs/html/search/functions_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['finalize_0',['Finalize',['../namespacestroid_1_1topology.html#a62774bcba7ea1a485892dcd4bed6425b',1,'stroid::topology']]] +]; diff --git a/docs/html/search/functions_3.js b/docs/html/search/functions_3.js new file mode 100644 index 0000000..9d2a617 --- /dev/null +++ b/docs/html/search/functions_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['markflippedboundaryelements_0',['MarkFlippedBoundaryElements',['../namespacestroid_1_1utils.html#ae047d97d7d5dc12812395909d00f5bbe',1,'stroid::utils']]], + ['markflippedelements_1',['MarkFlippedElements',['../namespacestroid_1_1utils.html#a22ab5809195bf85156607790f82b5e2d',1,'stroid::utils']]] +]; diff --git a/docs/html/search/functions_4.js b/docs/html/search/functions_4.js new file mode 100644 index 0000000..0d4b130 --- /dev/null +++ b/docs/html/search/functions_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['projectmesh_0',['ProjectMesh',['../namespacestroid_1_1topology.html#a836ed13e5bac63e7952c3ce4e5532e78',1,'stroid::topology']]], + ['promotetohighorder_1',['PromoteToHighOrder',['../namespacestroid_1_1topology.html#a5907aa2e639cda703d48d177abc37caf',1,'stroid::topology']]] +]; diff --git a/docs/html/search/functions_5.js b/docs/html/search/functions_5.js new file mode 100644 index 0000000..16e6534 --- /dev/null +++ b/docs/html/search/functions_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['savemesh_0',['SaveMesh',['../namespacestroid_1_1_i_o.html#aeb567ddc70ff2d064c139dee87575830',1,'stroid::IO']]], + ['savevtu_1',['SaveVTU',['../namespacestroid_1_1_i_o.html#ab4c8bda7ab370e34376a7832fbf0951e',1,'stroid::IO']]] +]; diff --git a/docs/html/search/functions_6.js b/docs/html/search/functions_6.js new file mode 100644 index 0000000..c7452b2 --- /dev/null +++ b/docs/html/search/functions_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['transformpoint_0',['TransformPoint',['../namespacestroid_1_1topology.html#a394e33bdfafdaccd6edfaae0642d3456',1,'stroid::topology']]] +]; diff --git a/docs/html/search/functions_7.js b/docs/html/search/functions_7.js new file mode 100644 index 0000000..5a6190d --- /dev/null +++ b/docs/html/search/functions_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['viewmesh_0',['ViewMesh',['../namespacestroid_1_1_i_o.html#a496f5c16eaffda5922a0b96c1f525dab',1,'stroid::IO']]], + ['visualizefacevalence_1',['VisualizeFaceValence',['../namespacestroid_1_1_i_o.html#a8100e130b3a49fdee48bc3c4d4e63963',1,'stroid::IO']]] +]; diff --git a/docs/html/search/mag.svg b/docs/html/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/docs/html/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/docs/html/search/mag_d.svg b/docs/html/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/docs/html/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/docs/html/search/mag_sel.svg b/docs/html/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/docs/html/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/docs/html/search/mag_seld.svg b/docs/html/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/docs/html/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/docs/html/search/namespaces_0.js b/docs/html/search/namespaces_0.js new file mode 100644 index 0000000..6452499 --- /dev/null +++ b/docs/html/search/namespaces_0.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['stroid_0',['stroid',['../namespacestroid.html',1,'']]], + ['stroid_3a_3aconfig_1',['config',['../namespacestroid_1_1config.html',1,'stroid']]], + ['stroid_3a_3aio_2',['IO',['../namespacestroid_1_1_i_o.html',1,'stroid']]], + ['stroid_3a_3atopology_3',['topology',['../namespacestroid_1_1topology.html',1,'stroid']]], + ['stroid_3a_3autils_4',['utils',['../namespacestroid_1_1utils.html',1,'stroid']]] +]; diff --git a/docs/html/search/pages_0.js b/docs/html/search/pages_0.js new file mode 100644 index 0000000..748df49 --- /dev/null +++ b/docs/html/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['stroid_0',['Stroid',['../index.html',1,'']]] +]; diff --git a/docs/html/search/search.css b/docs/html/search/search.css new file mode 100644 index 0000000..d7b0f90 --- /dev/null +++ b/docs/html/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: url('mag_sel.svg'); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: url('mag.svg'); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial,Verdana,sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: black; +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial,Verdana,sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: black; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: black; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: white; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid black; + background-color: #EEF1F7; + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: #EEF1F7; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial,Verdana,sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial,Verdana,sans-serif; + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial,Verdana,sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial,Verdana,sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/docs/html/search/search.js b/docs/html/search/search.js new file mode 100644 index 0000000..666af01 --- /dev/null +++ b/docs/html/search/search.js @@ -0,0 +1,694 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +const SEARCH_COOKIE_NAME = ''+'search_grp'; + +const searchResults = new SearchResults(); + +/* A class handling everything associated with the search panel. + + Parameters: + name - The name of the global variable that will be + storing this instance. Is needed to be able to set timeouts. + resultPath - path to use for external files +*/ +function SearchBox(name, resultsPath, extension) { + if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } + if (!extension || extension == "") { extension = ".html"; } + + function getXPos(item) { + let x = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + x += item.offsetLeft; + item = item.offsetParent; + } + } + return x; + } + + function getYPos(item) { + let y = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + y += item.offsetTop; + item = item.offsetParent; + } + } + return y; + } + + // ---------- Instance variables + this.name = name; + this.resultsPath = resultsPath; + this.keyTimeout = 0; + this.keyTimeoutLength = 500; + this.closeSelectionTimeout = 300; + this.lastSearchValue = ""; + this.lastResultsPage = ""; + this.hideTimeout = 0; + this.searchIndex = 0; + this.searchActive = false; + this.extension = extension; + + // ----------- DOM Elements + + this.DOMSearchField = () => document.getElementById("MSearchField"); + this.DOMSearchSelect = () => document.getElementById("MSearchSelect"); + this.DOMSearchSelectWindow = () => document.getElementById("MSearchSelectWindow"); + this.DOMPopupSearchResults = () => document.getElementById("MSearchResults"); + this.DOMPopupSearchResultsWindow = () => document.getElementById("MSearchResultsWindow"); + this.DOMSearchClose = () => document.getElementById("MSearchClose"); + this.DOMSearchBox = () => document.getElementById("MSearchBox"); + + // ------------ Event Handlers + + // Called when focus is added or removed from the search field. + this.OnSearchFieldFocus = function(isActive) { + this.Activate(isActive); + } + + this.OnSearchSelectShow = function() { + const searchSelectWindow = this.DOMSearchSelectWindow(); + const searchField = this.DOMSearchSelect(); + + const left = getXPos(searchField); + const top = getYPos(searchField) + searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + + // stop selection hide timer + if (this.hideTimeout) { + clearTimeout(this.hideTimeout); + this.hideTimeout=0; + } + return false; // to avoid "image drag" default event + } + + this.OnSearchSelectHide = function() { + this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this), + this.closeSelectionTimeout); + } + + // Called when the content of the search field is changed. + this.OnSearchFieldChange = function(evt) { + if (this.keyTimeout) { // kill running timer + clearTimeout(this.keyTimeout); + this.keyTimeout = 0; + } + + const e = evt ? evt : window.event; // for IE + if (e.keyCode==40 || e.keyCode==13) { + if (e.shiftKey==1) { + this.OnSearchSelectShow(); + const win=this.DOMSearchSelectWindow(); + for (let i=0;i do a search + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) { // Up + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } else if (e.keyCode==13 || e.keyCode==27) { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() { + this.keyTimeout = 0; + + // strip leading whitespace + const searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + const code = searchValue.toLowerCase().charCodeAt(0); + let idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) { // surrogate pair + idxChar = searchValue.substr(0, 2); + } + + let jsFile; + let idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) { + const hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + const loadJS = function(url, impl, loc) { + const scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + const domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + const domSearchBox = this.DOMSearchBox(); + const domPopupSearchResults = this.DOMPopupSearchResults(); + const domSearchClose = this.DOMSearchClose(); + const resultsPath = this.resultsPath; + + const handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') { + domSearchClose.style.display = 'inline-block'; + let left = getXPos(domSearchBox) + 150; + let top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + const maxWidth = document.body.clientWidth; + const maxHeight = document.body.clientHeight; + let width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + let height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } else if (!isActive) { // directly remove the panel + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults() { + + function convertToId(search) { + let result = ''; + for (let i=0;i. + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) { + const parentElement = document.getElementById(id); + let element = parentElement.firstChild; + + while (element && element!=parentElement) { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) { + element = element.firstChild; + } else if (element.nextSibling) { + element = element.nextSibling; + } else { + do { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) { + const element = this.FindChildElement(id); + if (element) { + if (element.style.display == 'block') { + element.style.display = 'none'; + } else { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) { + if (!search) { // get search word from URL + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + const resultRows = document.getElementsByTagName("div"); + let matches = 0; + + let i = 0; + while (i < resultRows.length) { + const row = resultRows.item(i); + if (row.className == "SRResult") { + let rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) { + row.style.display = 'block'; + matches++; + } else { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) { // no results + document.getElementById("NoMatches").style.display='block'; + } else { // at least one result + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) { + if (e.type == "keydown") { + this.repeatOn = false; + this.lastKey = e.keyCode; + } else if (e.type == "keypress") { + if (!this.repeatOn) { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } else if (e.type == "keyup") { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + const newIndex = itemIndex-1; + let focusItem = this.NavPrev(newIndex); + if (focusItem) { + let child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') { // children visible + let n=0; + let tmpElem; + for (;;) { // search for last child + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) { + focusItem = tmpElem; + } else { // found it! + break; + } + n++; + } + } + } + if (focusItem) { + focusItem.focus(); + } else { // return focus to search field + document.getElementById("MSearchField").focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = itemIndex+1; + let focusItem; + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') { // children visible + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } else if (this.lastKey==39) { // Right + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } else if (this.lastKey==37) { // Left + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + if (childIndex>0) { + const newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } else { // already at first child, jump to parent + document.getElementById('Item'+itemIndex).focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = childIndex+1; + let elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) { // last child, jump to parent next parent + elem = this.NavNext(itemIndex+1); + } + if (elem) { + elem.focus(); + } + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } +} + +function createResults(resultsPath) { + + function setKeyActions(elem,action) { + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); + } + + function setClassAttr(elem,attr) { + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); + } + + const results = document.getElementById("SRResults"); + results.innerHTML = ''; + searchData.forEach((elem,index) => { + const id = elem[0]; + const srResult = document.createElement('div'); + srResult.setAttribute('id','SR_'+id); + setClassAttr(srResult,'SRResult'); + const srEntry = document.createElement('div'); + setClassAttr(srEntry,'SREntry'); + const srLink = document.createElement('a'); + srLink.setAttribute('id','Item'+index); + setKeyActions(srLink,'return searchResults.Nav(event,'+index+')'); + setClassAttr(srLink,'SRSymbol'); + srLink.innerHTML = elem[1][0]; + srEntry.appendChild(srLink); + if (elem[1].length==2) { // single result + srLink.setAttribute('href',resultsPath+elem[1][1][0]); + srLink.setAttribute('onclick','searchBox.CloseResultsWindow()'); + if (elem[1][1][1]) { + srLink.setAttribute('target','_parent'); + } else { + srLink.setAttribute('target','_blank'); + } + const srScope = document.createElement('span'); + setClassAttr(srScope,'SRScope'); + srScope.innerHTML = elem[1][1][2]; + srEntry.appendChild(srScope); + } else { // multiple results + srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); + const srChildren = document.createElement('div'); + setClassAttr(srChildren,'SRChildren'); + for (let c=0; c-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/docs/html/splitbard.png b/docs/html/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/docs/html/structstroid_1_1config_1_1_mesh_config-members.html b/docs/html/structstroid_1_1config_1_1_mesh_config-members.html new file mode 100644 index 0000000..75f2464 --- /dev/null +++ b/docs/html/structstroid_1_1config_1_1_mesh_config-members.html @@ -0,0 +1,128 @@ + + + + + + + +stroid: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    stroid v0.1.0 +
    +
    Multi-block curvilinear mesh generation
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/docs/html/structstroid_1_1config_1_1_mesh_config.html b/docs/html/structstroid_1_1config_1_1_mesh_config.html new file mode 100644 index 0000000..83a108d --- /dev/null +++ b/docs/html/structstroid_1_1config_1_1_mesh_config.html @@ -0,0 +1,308 @@ + + + + + + + +stroid: stroid::config::MeshConfig Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    stroid v0.1.0 +
    +
    Multi-block curvilinear mesh generation
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    stroid::config::MeshConfig Struct Reference
    +
    +
    + +

    Configuration parameters for stroid mesh generation. + More...

    + +

    #include <config.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    int refinement_levels = 4
     Number of uniform refinement passes applied after topology creation. @toml [main].refinement_levels.
     
    int order = 3
     Polynomial order for high-order elements. @toml [main].order.
     
    bool include_external_domain = false
     Whether to include an external domain extending to r_infinity.
     
    double r_core = 1.5
     Radius of the stellar core region. @toml [main].r_core.
     
    double r_star = 5.0
     Radius of the stellar surface. @toml [main].r_star.
     
    double flattening = 0
     Flattening factor for spheroidal shaping (0 = spherical, >0 = oblate). @toml [main].flattening.
     
    double r_infinity = 6.0
     Outer radius of the external domain when enabled. @toml [main].r_infinity.
     
    double r_instability = 1e-14
     Radius inside which transformations are skipped to avoid singularities. @toml [main].r_instability.
     
    double core_steepness = 1.0
     Controls the smoothness/steepness of the core-to-envelope transition. @toml [main].core_steepness.
     
    +

    Detailed Description

    +

    Configuration parameters for stroid mesh generation.

    +

    These values are typically loaded via fourdst::config::Config<stroid::config::MeshConfig> from a TOML file. The README shows the expected TOML layout under the [main] table. Unspecified keys use the defaults defined here.

    +

    Member Data Documentation

    + +

    ◆ core_steepness

    + +
    +
    + + + + +
    double stroid::config::MeshConfig::core_steepness = 1.0
    +
    + +

    Controls the smoothness/steepness of the core-to-envelope transition. @toml [main].core_steepness.

    + +
    +
    + +

    ◆ flattening

    + +
    +
    + + + + +
    double stroid::config::MeshConfig::flattening = 0
    +
    + +

    Flattening factor for spheroidal shaping (0 = spherical, >0 = oblate). @toml [main].flattening.

    + +
    +
    + +

    ◆ include_external_domain

    + +
    +
    + + + + +
    bool stroid::config::MeshConfig::include_external_domain = false
    +
    + +

    Whether to include an external domain extending to r_infinity.

    +

    Currently this flag does not affect mesh generation. @toml [main].include_external_domain

    + +
    +
    + +

    ◆ order

    + +
    +
    + + + + +
    int stroid::config::MeshConfig::order = 3
    +
    + +

    Polynomial order for high-order elements. @toml [main].order.

    + +
    +
    + +

    ◆ r_core

    + +
    +
    + + + + +
    double stroid::config::MeshConfig::r_core = 1.5
    +
    + +

    Radius of the stellar core region. @toml [main].r_core.

    + +
    +
    + +

    ◆ r_infinity

    + +
    +
    + + + + +
    double stroid::config::MeshConfig::r_infinity = 6.0
    +
    + +

    Outer radius of the external domain when enabled. @toml [main].r_infinity.

    + +
    +
    + +

    ◆ r_instability

    + +
    +
    + + + + +
    double stroid::config::MeshConfig::r_instability = 1e-14
    +
    + +

    Radius inside which transformations are skipped to avoid singularities. @toml [main].r_instability.

    + +
    +
    + +

    ◆ r_star

    + +
    +
    + + + + +
    double stroid::config::MeshConfig::r_star = 5.0
    +
    + +

    Radius of the stellar surface. @toml [main].r_star.

    + +
    +
    + +

    ◆ refinement_levels

    + +
    +
    + + + + +
    int stroid::config::MeshConfig::refinement_levels = 4
    +
    + +

    Number of uniform refinement passes applied after topology creation. @toml [main].refinement_levels.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/docs/html/structstroid_1_1config_1_1_mesh_config.js b/docs/html/structstroid_1_1config_1_1_mesh_config.js new file mode 100644 index 0000000..e123f5a --- /dev/null +++ b/docs/html/structstroid_1_1config_1_1_mesh_config.js @@ -0,0 +1,12 @@ +var structstroid_1_1config_1_1_mesh_config = +[ + [ "core_steepness", "structstroid_1_1config_1_1_mesh_config.html#aed32864839b149c94842801b6413d94d", null ], + [ "flattening", "structstroid_1_1config_1_1_mesh_config.html#affad4638b0ae7b710f2b2db992f6f584", null ], + [ "include_external_domain", "structstroid_1_1config_1_1_mesh_config.html#a062652781f4f3ea0b7ca8764362a7368", null ], + [ "order", "structstroid_1_1config_1_1_mesh_config.html#a860e78f1906acb0c3aa08d55f94de3fd", null ], + [ "r_core", "structstroid_1_1config_1_1_mesh_config.html#a5c68a895f73dc82a38a8daac22a83ad7", null ], + [ "r_infinity", "structstroid_1_1config_1_1_mesh_config.html#ac7546899ebbfe191ea3a8bf2403b31eb", null ], + [ "r_instability", "structstroid_1_1config_1_1_mesh_config.html#a4da6d99ff7ba24d2f917e1fd98ddd877", null ], + [ "r_star", "structstroid_1_1config_1_1_mesh_config.html#a3fe80a30990d484dcc39b6f9a0befc05", null ], + [ "refinement_levels", "structstroid_1_1config_1_1_mesh_config.html#a8cafcbebf64ae251517118eb152de981", null ] +]; \ No newline at end of file diff --git a/docs/html/svg.min.js b/docs/html/svg.min.js new file mode 100644 index 0000000..916732f --- /dev/null +++ b/docs/html/svg.min.js @@ -0,0 +1,46 @@ +/*! +* @svgdotjs/svg.js - A lightweight library for manipulating and animating SVG. +* @version 3.1.2 +* https://svgjs.dev/ +* +* @copyright Wout Fierens +* @license MIT +* +* BUILT: Wed Jan 26 2022 23:19:07 GMT+0100 (Mitteleuropäische Normalzeit) +*/var SVG=function(){"use strict";const methods$1={};const names=[];function registerMethods(name,m){if(Array.isArray(name)){for(const _name of name){registerMethods(_name,m)}return}if(typeof name==="object"){for(const _name in name){registerMethods(_name,name[_name])}return}addMethodNames(Object.getOwnPropertyNames(m));methods$1[name]=Object.assign(methods$1[name]||{},m)}function getMethodsFor(name){return methods$1[name]||{}}function getMethodNames(){return[...new Set(names)]}function addMethodNames(_names){names.push(..._names)}function map(array,block){let i;const il=array.length;const result=[];for(i=0;i=0;i--){assignNewId(node.children[i])}if(node.id){node.id=eid(node.nodeName);return node}return node}function extend(modules,methods){let key,i;modules=Array.isArray(modules)?modules:[modules];for(i=modules.length-1;i>=0;i--){for(key in methods){modules[i].prototype[key]=methods[key]}}}function wrapWithAttrCheck(fn){return function(...args){const o=args[args.length-1];if(o&&o.constructor===Object&&!(o instanceof Array)){return fn.apply(this,args.slice(0,-1)).attr(o)}else{return fn.apply(this,args)}}}function siblings(){return this.parent().children()}function position(){return this.parent().index(this)}function next(){return this.siblings()[this.position()+1]}function prev(){return this.siblings()[this.position()-1]}function forward(){const i=this.position();const p=this.parent();p.add(this.remove(),i+1);return this}function backward(){const i=this.position();const p=this.parent();p.add(this.remove(),i?i-1:0);return this}function front(){const p=this.parent();p.add(this.remove());return this}function back(){const p=this.parent();p.add(this.remove(),0);return this}function before(element){element=makeInstance(element);element.remove();const i=this.position();this.parent().add(element,i);return this}function after(element){element=makeInstance(element);element.remove();const i=this.position();this.parent().add(element,i+1);return this}function insertBefore(element){element=makeInstance(element);element.before(this);return this}function insertAfter(element){element=makeInstance(element);element.after(this);return this}registerMethods("Dom",{siblings:siblings,position:position,next:next,prev:prev,forward:forward,backward:backward,front:front,back:back,before:before,after:after,insertBefore:insertBefore,insertAfter:insertAfter});const numberAndUnit=/^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i;const hex=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;const rgb=/rgb\((\d+),(\d+),(\d+)\)/;const reference=/(#[a-z_][a-z0-9\-_]*)/i;const transforms=/\)\s*,?\s*/;const whitespace=/\s/g;const isHex=/^#[a-f0-9]{3}$|^#[a-f0-9]{6}$/i;const isRgb=/^rgb\(/;const isBlank=/^(\s+)?$/;const isNumber=/^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;const isImage=/\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i;const delimiter=/[\s,]+/;const isPathLetter=/[MLHVCSQTAZ]/i;var regex={__proto__:null,numberAndUnit:numberAndUnit,hex:hex,rgb:rgb,reference:reference,transforms:transforms,whitespace:whitespace,isHex:isHex,isRgb:isRgb,isBlank:isBlank,isNumber:isNumber,isImage:isImage,delimiter:delimiter,isPathLetter:isPathLetter};function classes(){const attr=this.attr("class");return attr==null?[]:attr.trim().split(delimiter)}function hasClass(name){return this.classes().indexOf(name)!==-1}function addClass(name){if(!this.hasClass(name)){const array=this.classes();array.push(name);this.attr("class",array.join(" "))}return this}function removeClass(name){if(this.hasClass(name)){this.attr("class",this.classes().filter(function(c){return c!==name}).join(" "))}return this}function toggleClass(name){return this.hasClass(name)?this.removeClass(name):this.addClass(name)}registerMethods("Dom",{classes:classes,hasClass:hasClass,addClass:addClass,removeClass:removeClass,toggleClass:toggleClass});function css(style,val){const ret={};if(arguments.length===0){this.node.style.cssText.split(/\s*;\s*/).filter(function(el){return!!el.length}).forEach(function(el){const t=el.split(/\s*:\s*/);ret[t[0]]=t[1]});return ret}if(arguments.length<2){if(Array.isArray(style)){for(const name of style){const cased=camelCase(name);ret[name]=this.node.style[cased]}return ret}if(typeof style==="string"){return this.node.style[camelCase(style)]}if(typeof style==="object"){for(const name in style){this.node.style[camelCase(name)]=style[name]==null||isBlank.test(style[name])?"":style[name]}}}if(arguments.length===2){this.node.style[camelCase(style)]=val==null||isBlank.test(val)?"":val}return this}function show(){return this.css("display","")}function hide(){return this.css("display","none")}function visible(){return this.css("display")!=="none"}registerMethods("Dom",{css:css,show:show,hide:hide,visible:visible});function data(a,v,r){if(a==null){return this.data(map(filter(this.node.attributes,el=>el.nodeName.indexOf("data-")===0),el=>el.nodeName.slice(5)))}else if(a instanceof Array){const data={};for(const key of a){data[key]=this.data(key)}return data}else if(typeof a==="object"){for(v in a){this.data(v,a[v])}}else if(arguments.length<2){try{return JSON.parse(this.attr("data-"+a))}catch(e){return this.attr("data-"+a)}}else{this.attr("data-"+a,v===null?null:r===true||typeof v==="string"||typeof v==="number"?v:JSON.stringify(v))}return this}registerMethods("Dom",{data:data});function remember(k,v){if(typeof arguments[0]==="object"){for(const key in k){this.remember(key,k[key])}}else if(arguments.length===1){return this.memory()[k]}else{this.memory()[k]=v}return this}function forget(){if(arguments.length===0){this._memory={}}else{for(let i=arguments.length-1;i>=0;i--){delete this.memory()[arguments[i]]}}return this}function memory(){return this._memory=this._memory||{}}registerMethods("Dom",{remember:remember,forget:forget,memory:memory});function sixDigitHex(hex){return hex.length===4?["#",hex.substring(1,2),hex.substring(1,2),hex.substring(2,3),hex.substring(2,3),hex.substring(3,4),hex.substring(3,4)].join(""):hex}function componentHex(component){const integer=Math.round(component);const bounded=Math.max(0,Math.min(255,integer));const hex=bounded.toString(16);return hex.length===1?"0"+hex:hex}function is(object,space){for(let i=space.length;i--;){if(object[space[i]]==null){return false}}return true}function getParameters(a,b){const params=is(a,"rgb")?{_a:a.r,_b:a.g,_c:a.b,_d:0,space:"rgb"}:is(a,"xyz")?{_a:a.x,_b:a.y,_c:a.z,_d:0,space:"xyz"}:is(a,"hsl")?{_a:a.h,_b:a.s,_c:a.l,_d:0,space:"hsl"}:is(a,"lab")?{_a:a.l,_b:a.a,_c:a.b,_d:0,space:"lab"}:is(a,"lch")?{_a:a.l,_b:a.c,_c:a.h,_d:0,space:"lch"}:is(a,"cmyk")?{_a:a.c,_b:a.m,_c:a.y,_d:a.k,space:"cmyk"}:{_a:0,_b:0,_c:0,space:"rgb"};params.space=b||params.space;return params}function cieSpace(space){if(space==="lab"||space==="xyz"||space==="lch"){return true}else{return false}}function hueToRgb(p,q,t){if(t<0)t+=1;if(t>1)t-=1;if(t<1/6)return p+(q-p)*6*t;if(t<1/2)return q;if(t<2/3)return p+(q-p)*(2/3-t)*6;return p}class Color{constructor(...inputs){this.init(...inputs)}static isColor(color){return color&&(color instanceof Color||this.isRgb(color)||this.test(color))}static isRgb(color){return color&&typeof color.r==="number"&&typeof color.g==="number"&&typeof color.b==="number"}static random(mode="vibrant",t,u){const{random,round,sin,PI:pi}=Math;if(mode==="vibrant"){const l=(81-57)*random()+57;const c=(83-45)*random()+45;const h=360*random();const color=new Color(l,c,h,"lch");return color}else if(mode==="sine"){t=t==null?random():t;const r=round(80*sin(2*pi*t/.5+.01)+150);const g=round(50*sin(2*pi*t/.5+4.6)+200);const b=round(100*sin(2*pi*t/.5+2.3)+150);const color=new Color(r,g,b);return color}else if(mode==="pastel"){const l=(94-86)*random()+86;const c=(26-9)*random()+9;const h=360*random();const color=new Color(l,c,h,"lch");return color}else if(mode==="dark"){const l=10+10*random();const c=(125-75)*random()+86;const h=360*random();const color=new Color(l,c,h,"lch");return color}else if(mode==="rgb"){const r=255*random();const g=255*random();const b=255*random();const color=new Color(r,g,b);return color}else if(mode==="lab"){const l=100*random();const a=256*random()-128;const b=256*random()-128;const color=new Color(l,a,b,"lab");return color}else if(mode==="grey"){const grey=255*random();const color=new Color(grey,grey,grey);return color}else{throw new Error("Unsupported random color mode")}}static test(color){return typeof color==="string"&&(isHex.test(color)||isRgb.test(color))}cmyk(){const{_a,_b,_c}=this.rgb();const[r,g,b]=[_a,_b,_c].map(v=>v/255);const k=Math.min(1-r,1-g,1-b);if(k===1){return new Color(0,0,0,1,"cmyk")}const c=(1-r-k)/(1-k);const m=(1-g-k)/(1-k);const y=(1-b-k)/(1-k);const color=new Color(c,m,y,k,"cmyk");return color}hsl(){const{_a,_b,_c}=this.rgb();const[r,g,b]=[_a,_b,_c].map(v=>v/255);const max=Math.max(r,g,b);const min=Math.min(r,g,b);const l=(max+min)/2;const isGrey=max===min;const delta=max-min;const s=isGrey?0:l>.5?delta/(2-max-min):delta/(max+min);const h=isGrey?0:max===r?((g-b)/delta+(gparseInt(v));Object.assign(this,{_a:_a,_b:_b,_c:_c,_d:0,space:"rgb"})}else if(isHex.test(a)){const hexParse=v=>parseInt(v,16);const[,_a,_b,_c]=hex.exec(sixDigitHex(a)).map(hexParse);Object.assign(this,{_a:_a,_b:_b,_c:_c,_d:0,space:"rgb"})}else throw Error("Unsupported string format, can't construct Color")}const{_a,_b,_c,_d}=this;const components=this.space==="rgb"?{r:_a,g:_b,b:_c}:this.space==="xyz"?{x:_a,y:_b,z:_c}:this.space==="hsl"?{h:_a,s:_b,l:_c}:this.space==="lab"?{l:_a,a:_b,b:_c}:this.space==="lch"?{l:_a,c:_b,h:_c}:this.space==="cmyk"?{c:_a,m:_b,y:_c,k:_d}:{};Object.assign(this,components)}lab(){const{x,y,z}=this.xyz();const l=116*y-16;const a=500*(x-y);const b=200*(y-z);const color=new Color(l,a,b,"lab");return color}lch(){const{l,a,b}=this.lab();const c=Math.sqrt(a**2+b**2);let h=180*Math.atan2(b,a)/Math.PI;if(h<0){h*=-1;h=360-h}const color=new Color(l,c,h,"lch");return color}rgb(){if(this.space==="rgb"){return this}else if(cieSpace(this.space)){let{x,y,z}=this;if(this.space==="lab"||this.space==="lch"){let{l,a,b}=this;if(this.space==="lch"){const{c,h}=this;const dToR=Math.PI/180;a=c*Math.cos(dToR*h);b=c*Math.sin(dToR*h)}const yL=(l+16)/116;const xL=a/500+yL;const zL=yL-b/200;const ct=16/116;const mx=.008856;const nm=7.787;x=.95047*(xL**3>mx?xL**3:(xL-ct)/nm);y=1*(yL**3>mx?yL**3:(yL-ct)/nm);z=1.08883*(zL**3>mx?zL**3:(zL-ct)/nm)}const rU=x*3.2406+y*-1.5372+z*-.4986;const gU=x*-.9689+y*1.8758+z*.0415;const bU=x*.0557+y*-.204+z*1.057;const pow=Math.pow;const bd=.0031308;const r=rU>bd?1.055*pow(rU,1/2.4)-.055:12.92*rU;const g=gU>bd?1.055*pow(gU,1/2.4)-.055:12.92*gU;const b=bU>bd?1.055*pow(bU,1/2.4)-.055:12.92*bU;const color=new Color(255*r,255*g,255*b);return color}else if(this.space==="hsl"){let{h,s,l}=this;h/=360;s/=100;l/=100;if(s===0){l*=255;const color=new Color(l,l,l);return color}const q=l<.5?l*(1+s):l+s-l*s;const p=2*l-q;const r=255*hueToRgb(p,q,h+1/3);const g=255*hueToRgb(p,q,h);const b=255*hueToRgb(p,q,h-1/3);const color=new Color(r,g,b);return color}else if(this.space==="cmyk"){const{c,m,y,k}=this;const r=255*(1-Math.min(1,c*(1-k)+k));const g=255*(1-Math.min(1,m*(1-k)+k));const b=255*(1-Math.min(1,y*(1-k)+k));const color=new Color(r,g,b);return color}else{return this}}toArray(){const{_a,_b,_c,_d,space}=this;return[_a,_b,_c,_d,space]}toHex(){const[r,g,b]=this._clamped().map(componentHex);return`#${r}${g}${b}`}toRgb(){const[rV,gV,bV]=this._clamped();const string=`rgb(${rV},${gV},${bV})`;return string}toString(){return this.toHex()}xyz(){const{_a:r255,_b:g255,_c:b255}=this.rgb();const[r,g,b]=[r255,g255,b255].map(v=>v/255);const rL=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92;const gL=g>.04045?Math.pow((g+.055)/1.055,2.4):g/12.92;const bL=b>.04045?Math.pow((b+.055)/1.055,2.4):b/12.92;const xU=(rL*.4124+gL*.3576+bL*.1805)/.95047;const yU=(rL*.2126+gL*.7152+bL*.0722)/1;const zU=(rL*.0193+gL*.1192+bL*.9505)/1.08883;const x=xU>.008856?Math.pow(xU,1/3):7.787*xU+16/116;const y=yU>.008856?Math.pow(yU,1/3):7.787*yU+16/116;const z=zU>.008856?Math.pow(zU,1/3):7.787*zU+16/116;const color=new Color(x,y,z,"xyz");return color}_clamped(){const{_a,_b,_c}=this.rgb();const{max,min,round}=Math;const format=v=>max(0,min(round(v),255));return[_a,_b,_c].map(format)}}class Point{constructor(...args){this.init(...args)}clone(){return new Point(this)}init(x,y){const base={x:0,y:0};const source=Array.isArray(x)?{x:x[0],y:x[1]}:typeof x==="object"?{x:x.x,y:x.y}:{x:x,y:y};this.x=source.x==null?base.x:source.x;this.y=source.y==null?base.y:source.y;return this}toArray(){return[this.x,this.y]}transform(m){return this.clone().transformO(m)}transformO(m){if(!Matrix.isMatrixLike(m)){m=new Matrix(m)}const{x,y}=this;this.x=m.a*x+m.c*y+m.e;this.y=m.b*x+m.d*y+m.f;return this}}function point(x,y){return new Point(x,y).transform(this.screenCTM().inverse())}function closeEnough(a,b,threshold){return Math.abs(b-a)<(threshold||1e-6)}class Matrix{constructor(...args){this.init(...args)}static formatTransforms(o){const flipBoth=o.flip==="both"||o.flip===true;const flipX=o.flip&&(flipBoth||o.flip==="x")?-1:1;const flipY=o.flip&&(flipBoth||o.flip==="y")?-1:1;const skewX=o.skew&&o.skew.length?o.skew[0]:isFinite(o.skew)?o.skew:isFinite(o.skewX)?o.skewX:0;const skewY=o.skew&&o.skew.length?o.skew[1]:isFinite(o.skew)?o.skew:isFinite(o.skewY)?o.skewY:0;const scaleX=o.scale&&o.scale.length?o.scale[0]*flipX:isFinite(o.scale)?o.scale*flipX:isFinite(o.scaleX)?o.scaleX*flipX:flipX;const scaleY=o.scale&&o.scale.length?o.scale[1]*flipY:isFinite(o.scale)?o.scale*flipY:isFinite(o.scaleY)?o.scaleY*flipY:flipY;const shear=o.shear||0;const theta=o.rotate||o.theta||0;const origin=new Point(o.origin||o.around||o.ox||o.originX,o.oy||o.originY);const ox=origin.x;const oy=origin.y;const position=new Point(o.position||o.px||o.positionX||NaN,o.py||o.positionY||NaN);const px=position.x;const py=position.y;const translate=new Point(o.translate||o.tx||o.translateX,o.ty||o.translateY);const tx=translate.x;const ty=translate.y;const relative=new Point(o.relative||o.rx||o.relativeX,o.ry||o.relativeY);const rx=relative.x;const ry=relative.y;return{scaleX:scaleX,scaleY:scaleY,skewX:skewX,skewY:skewY,shear:shear,theta:theta,rx:rx,ry:ry,tx:tx,ty:ty,ox:ox,oy:oy,px:px,py:py}}static fromArray(a){return{a:a[0],b:a[1],c:a[2],d:a[3],e:a[4],f:a[5]}}static isMatrixLike(o){return o.a!=null||o.b!=null||o.c!=null||o.d!=null||o.e!=null||o.f!=null}static matrixMultiply(l,r,o){const a=l.a*r.a+l.c*r.b;const b=l.b*r.a+l.d*r.b;const c=l.a*r.c+l.c*r.d;const d=l.b*r.c+l.d*r.d;const e=l.e+l.a*r.e+l.c*r.f;const f=l.f+l.b*r.e+l.d*r.f;o.a=a;o.b=b;o.c=c;o.d=d;o.e=e;o.f=f;return o}around(cx,cy,matrix){return this.clone().aroundO(cx,cy,matrix)}aroundO(cx,cy,matrix){const dx=cx||0;const dy=cy||0;return this.translateO(-dx,-dy).lmultiplyO(matrix).translateO(dx,dy)}clone(){return new Matrix(this)}decompose(cx=0,cy=0){const a=this.a;const b=this.b;const c=this.c;const d=this.d;const e=this.e;const f=this.f;const determinant=a*d-b*c;const ccw=determinant>0?1:-1;const sx=ccw*Math.sqrt(a*a+b*b);const thetaRad=Math.atan2(ccw*b,ccw*a);const theta=180/Math.PI*thetaRad;const ct=Math.cos(thetaRad);const st=Math.sin(thetaRad);const lam=(a*c+b*d)/determinant;const sy=c*sx/(lam*a-b)||d*sx/(lam*b+a);const tx=e-cx+cx*ct*sx+cy*(lam*ct*sx-st*sy);const ty=f-cy+cx*st*sx+cy*(lam*st*sx+ct*sy);return{scaleX:sx,scaleY:sy,shear:lam,rotate:theta,translateX:tx,translateY:ty,originX:cx,originY:cy,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f}}equals(other){if(other===this)return true;const comp=new Matrix(other);return closeEnough(this.a,comp.a)&&closeEnough(this.b,comp.b)&&closeEnough(this.c,comp.c)&&closeEnough(this.d,comp.d)&&closeEnough(this.e,comp.e)&&closeEnough(this.f,comp.f)}flip(axis,around){return this.clone().flipO(axis,around)}flipO(axis,around){return axis==="x"?this.scaleO(-1,1,around,0):axis==="y"?this.scaleO(1,-1,0,around):this.scaleO(-1,-1,axis,around||axis)}init(source){const base=Matrix.fromArray([1,0,0,1,0,0]);source=source instanceof Element?source.matrixify():typeof source==="string"?Matrix.fromArray(source.split(delimiter).map(parseFloat)):Array.isArray(source)?Matrix.fromArray(source):typeof source==="object"&&Matrix.isMatrixLike(source)?source:typeof source==="object"?(new Matrix).transform(source):arguments.length===6?Matrix.fromArray([].slice.call(arguments)):base;this.a=source.a!=null?source.a:base.a;this.b=source.b!=null?source.b:base.b;this.c=source.c!=null?source.c:base.c;this.d=source.d!=null?source.d:base.d;this.e=source.e!=null?source.e:base.e;this.f=source.f!=null?source.f:base.f;return this}inverse(){return this.clone().inverseO()}inverseO(){const a=this.a;const b=this.b;const c=this.c;const d=this.d;const e=this.e;const f=this.f;const det=a*d-b*c;if(!det)throw new Error("Cannot invert "+this);const na=d/det;const nb=-b/det;const nc=-c/det;const nd=a/det;const ne=-(na*e+nc*f);const nf=-(nb*e+nd*f);this.a=na;this.b=nb;this.c=nc;this.d=nd;this.e=ne;this.f=nf;return this}lmultiply(matrix){return this.clone().lmultiplyO(matrix)}lmultiplyO(matrix){const r=this;const l=matrix instanceof Matrix?matrix:new Matrix(matrix);return Matrix.matrixMultiply(l,r,this)}multiply(matrix){return this.clone().multiplyO(matrix)}multiplyO(matrix){const l=this;const r=matrix instanceof Matrix?matrix:new Matrix(matrix);return Matrix.matrixMultiply(l,r,this)}rotate(r,cx,cy){return this.clone().rotateO(r,cx,cy)}rotateO(r,cx=0,cy=0){r=radians(r);const cos=Math.cos(r);const sin=Math.sin(r);const{a,b,c,d,e,f}=this;this.a=a*cos-b*sin;this.b=b*cos+a*sin;this.c=c*cos-d*sin;this.d=d*cos+c*sin;this.e=e*cos-f*sin+cy*sin-cx*cos+cx;this.f=f*cos+e*sin-cx*sin-cy*cos+cy;return this}scale(x,y,cx,cy){return this.clone().scaleO(...arguments)}scaleO(x,y=x,cx=0,cy=0){if(arguments.length===3){cy=cx;cx=y;y=x}const{a,b,c,d,e,f}=this;this.a=a*x;this.b=b*y;this.c=c*x;this.d=d*y;this.e=e*x-cx*x+cx;this.f=f*y-cy*y+cy;return this}shear(a,cx,cy){return this.clone().shearO(a,cx,cy)}shearO(lx,cx=0,cy=0){const{a,b,c,d,e,f}=this;this.a=a+b*lx;this.c=c+d*lx;this.e=e+f*lx-cy*lx;return this}skew(x,y,cx,cy){return this.clone().skewO(...arguments)}skewO(x,y=x,cx=0,cy=0){if(arguments.length===3){cy=cx;cx=y;y=x}x=radians(x);y=radians(y);const lx=Math.tan(x);const ly=Math.tan(y);const{a,b,c,d,e,f}=this;this.a=a+b*lx;this.b=b+a*ly;this.c=c+d*lx;this.d=d+c*ly;this.e=e+f*lx-cy*lx;this.f=f+e*ly-cx*ly;return this}skewX(x,cx,cy){return this.skew(x,0,cx,cy)}skewY(y,cx,cy){return this.skew(0,y,cx,cy)}toArray(){return[this.a,this.b,this.c,this.d,this.e,this.f]}toString(){return"matrix("+this.a+","+this.b+","+this.c+","+this.d+","+this.e+","+this.f+")"}transform(o){if(Matrix.isMatrixLike(o)){const matrix=new Matrix(o);return matrix.multiplyO(this)}const t=Matrix.formatTransforms(o);const current=this;const{x:ox,y:oy}=new Point(t.ox,t.oy).transform(current);const transformer=(new Matrix).translateO(t.rx,t.ry).lmultiplyO(current).translateO(-ox,-oy).scaleO(t.scaleX,t.scaleY).skewO(t.skewX,t.skewY).shearO(t.shear).rotateO(t.theta).translateO(ox,oy);if(isFinite(t.px)||isFinite(t.py)){const origin=new Point(ox,oy).transform(transformer);const dx=isFinite(t.px)?t.px-origin.x:0;const dy=isFinite(t.py)?t.py-origin.y:0;transformer.translateO(dx,dy)}transformer.translateO(t.tx,t.ty);return transformer}translate(x,y){return this.clone().translateO(x,y)}translateO(x,y){this.e+=x||0;this.f+=y||0;return this}valueOf(){return{a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f}}}function ctm(){return new Matrix(this.node.getCTM())}function screenCTM(){if(typeof this.isRoot==="function"&&!this.isRoot()){const rect=this.rect(1,1);const m=rect.node.getScreenCTM();rect.remove();return new Matrix(m)}return new Matrix(this.node.getScreenCTM())}register(Matrix,"Matrix");function parser(){if(!parser.nodes){const svg=makeInstance().size(2,0);svg.node.style.cssText=["opacity: 0","position: absolute","left: -100%","top: -100%","overflow: hidden"].join(";");svg.attr("focusable","false");svg.attr("aria-hidden","true");const path=svg.path().node;parser.nodes={svg:svg,path:path}}if(!parser.nodes.svg.node.parentNode){const b=globals.document.body||globals.document.documentElement;parser.nodes.svg.addTo(b)}return parser.nodes}function isNulledBox(box){return!box.width&&!box.height&&!box.x&&!box.y}function domContains(node){return node===globals.document||(globals.document.documentElement.contains||function(node){while(node.parentNode){node=node.parentNode}return node===globals.document}).call(globals.document.documentElement,node)}class Box{constructor(...args){this.init(...args)}addOffset(){this.x+=globals.window.pageXOffset;this.y+=globals.window.pageYOffset;return new Box(this)}init(source){const base=[0,0,0,0];source=typeof source==="string"?source.split(delimiter).map(parseFloat):Array.isArray(source)?source:typeof source==="object"?[source.left!=null?source.left:source.x,source.top!=null?source.top:source.y,source.width,source.height]:arguments.length===4?[].slice.call(arguments):base;this.x=source[0]||0;this.y=source[1]||0;this.width=this.w=source[2]||0;this.height=this.h=source[3]||0;this.x2=this.x+this.w;this.y2=this.y+this.h;this.cx=this.x+this.w/2;this.cy=this.y+this.h/2;return this}isNulled(){return isNulledBox(this)}merge(box){const x=Math.min(this.x,box.x);const y=Math.min(this.y,box.y);const width=Math.max(this.x+this.width,box.x+box.width)-x;const height=Math.max(this.y+this.height,box.y+box.height)-y;return new Box(x,y,width,height)}toArray(){return[this.x,this.y,this.width,this.height]}toString(){return this.x+" "+this.y+" "+this.width+" "+this.height}transform(m){if(!(m instanceof Matrix)){m=new Matrix(m)}let xMin=Infinity;let xMax=-Infinity;let yMin=Infinity;let yMax=-Infinity;const pts=[new Point(this.x,this.y),new Point(this.x2,this.y),new Point(this.x,this.y2),new Point(this.x2,this.y2)];pts.forEach(function(p){p=p.transform(m);xMin=Math.min(xMin,p.x);xMax=Math.max(xMax,p.x);yMin=Math.min(yMin,p.y);yMax=Math.max(yMax,p.y)});return new Box(xMin,yMin,xMax-xMin,yMax-yMin)}}function getBox(el,getBBoxFn,retry){let box;try{box=getBBoxFn(el.node);if(isNulledBox(box)&&!domContains(el.node)){throw new Error("Element not in the dom")}}catch(e){box=retry(el)}return box}function bbox(){const getBBox=node=>node.getBBox();const retry=el=>{try{const clone=el.clone().addTo(parser().svg).show();const box=clone.node.getBBox();clone.remove();return box}catch(e){throw new Error(`Getting bbox of element "${el.node.nodeName}" is not possible: ${e.toString()}`)}};const box=getBox(this,getBBox,retry);const bbox=new Box(box);return bbox}function rbox(el){const getRBox=node=>node.getBoundingClientRect();const retry=el=>{throw new Error(`Getting rbox of element "${el.node.nodeName}" is not possible`)};const box=getBox(this,getRBox,retry);const rbox=new Box(box);if(el){return rbox.transform(el.screenCTM().inverseO())}return rbox.addOffset()}function inside(x,y){const box=this.bbox();return x>box.x&&y>box.y&&x{return fnOrMethodName.call(el,el,i,arr)})}else{return this.map(el=>{return el[fnOrMethodName](...args)})}},toArray(){return Array.prototype.concat.apply([],this)}});const reserved=["toArray","constructor","each"];List.extend=function(methods){methods=methods.reduce((obj,name)=>{if(reserved.includes(name))return obj;if(name[0]==="_")return obj;obj[name]=function(...attrs){return this.each(name,...attrs)};return obj},{});extend([List],methods)};function baseFind(query,parent){return new List(map((parent||globals.document).querySelectorAll(query),function(node){return adopt(node)}))}function find(query){return baseFind(query,this.node)}function findOne(query){return adopt(this.node.querySelector(query))}let listenerId=0;const windowEvents={};function getEvents(instance){let n=instance.getEventHolder();if(n===globals.window)n=windowEvents;if(!n.events)n.events={};return n.events}function getEventTarget(instance){return instance.getEventTarget()}function clearEvents(instance){let n=instance.getEventHolder();if(n===globals.window)n=windowEvents;if(n.events)n.events={}}function on(node,events,listener,binding,options){const l=listener.bind(binding||node);const instance=makeInstance(node);const bag=getEvents(instance);const n=getEventTarget(instance);events=Array.isArray(events)?events:events.split(delimiter);if(!listener._svgjsListenerId){listener._svgjsListenerId=++listenerId}events.forEach(function(event){const ev=event.split(".")[0];const ns=event.split(".")[1]||"*";bag[ev]=bag[ev]||{};bag[ev][ns]=bag[ev][ns]||{};bag[ev][ns][listener._svgjsListenerId]=l;n.addEventListener(ev,l,options||false)})}function off(node,events,listener,options){const instance=makeInstance(node);const bag=getEvents(instance);const n=getEventTarget(instance);if(typeof listener==="function"){listener=listener._svgjsListenerId;if(!listener)return}events=Array.isArray(events)?events:(events||"").split(delimiter);events.forEach(function(event){const ev=event&&event.split(".")[0];const ns=event&&event.split(".")[1];let namespace,l;if(listener){if(bag[ev]&&bag[ev][ns||"*"]){n.removeEventListener(ev,bag[ev][ns||"*"][listener],options||false);delete bag[ev][ns||"*"][listener]}}else if(ev&&ns){if(bag[ev]&&bag[ev][ns]){for(l in bag[ev][ns]){off(n,[ev,ns].join("."),l)}delete bag[ev][ns]}}else if(ns){for(event in bag){for(namespace in bag[event]){if(ns===namespace){off(n,[event,ns].join("."))}}}}else if(ev){if(bag[ev]){for(namespace in bag[ev]){off(n,[ev,namespace].join("."))}delete bag[ev]}}else{for(event in bag){off(n,event)}clearEvents(instance)}})}function dispatch(node,event,data,options){const n=getEventTarget(node);if(event instanceof globals.window.Event){n.dispatchEvent(event)}else{event=new globals.window.CustomEvent(event,{detail:data,cancelable:true,...options});n.dispatchEvent(event)}return event}class EventTarget extends Base{addEventListener(){}dispatch(event,data,options){return dispatch(this,event,data,options)}dispatchEvent(event){const bag=this.getEventHolder().events;if(!bag)return true;const events=bag[event.type];for(const i in events){for(const j in events[i]){events[i][j](event)}}return!event.defaultPrevented}fire(event,data,options){this.dispatch(event,data,options);return this}getEventHolder(){return this}getEventTarget(){return this}off(event,listener,options){off(this,event,listener,options);return this}on(event,listener,binding,options){on(this,event,listener,binding,options);return this}removeEventListener(){}}register(EventTarget,"EventTarget");function noop(){}const timeline={duration:400,ease:">",delay:0};const attrs={"fill-opacity":1,"stroke-opacity":1,"stroke-width":0,"stroke-linejoin":"miter","stroke-linecap":"butt",fill:"#000000",stroke:"#000000",opacity:1,x:0,y:0,cx:0,cy:0,width:0,height:0,r:0,rx:0,ry:0,offset:0,"stop-opacity":1,"stop-color":"#000000","text-anchor":"start"};var defaults={__proto__:null,noop:noop,timeline:timeline,attrs:attrs};class SVGArray extends Array{constructor(...args){super(...args);this.init(...args)}clone(){return new this.constructor(this)}init(arr){if(typeof arr==="number")return this;this.length=0;this.push(...this.parse(arr));return this}parse(array=[]){if(array instanceof Array)return array;return array.trim().split(delimiter).map(parseFloat)}toArray(){return Array.prototype.concat.apply([],this)}toSet(){return new Set(this)}toString(){return this.join(" ")}valueOf(){const ret=[];ret.push(...this);return ret}}class SVGNumber{constructor(...args){this.init(...args)}convert(unit){return new SVGNumber(this.value,unit)}divide(number){number=new SVGNumber(number);return new SVGNumber(this/number,this.unit||number.unit)}init(value,unit){unit=Array.isArray(value)?value[1]:unit;value=Array.isArray(value)?value[0]:value;this.value=0;this.unit=unit||"";if(typeof value==="number"){this.value=isNaN(value)?0:!isFinite(value)?value<0?-34e37:+34e37:value}else if(typeof value==="string"){unit=value.match(numberAndUnit);if(unit){this.value=parseFloat(unit[1]);if(unit[5]==="%"){this.value/=100}else if(unit[5]==="s"){this.value*=1e3}this.unit=unit[5]}}else{if(value instanceof SVGNumber){this.value=value.valueOf();this.unit=value.unit}}return this}minus(number){number=new SVGNumber(number);return new SVGNumber(this-number,this.unit||number.unit)}plus(number){number=new SVGNumber(number);return new SVGNumber(this+number,this.unit||number.unit)}times(number){number=new SVGNumber(number);return new SVGNumber(this*number,this.unit||number.unit)}toArray(){return[this.value,this.unit]}toJSON(){return this.toString()}toString(){return(this.unit==="%"?~~(this.value*1e8)/1e6:this.unit==="s"?this.value/1e3:this.value)+this.unit}valueOf(){return this.value}}const hooks=[];function registerAttrHook(fn){hooks.push(fn)}function attr(attr,val,ns){if(attr==null){attr={};val=this.node.attributes;for(const node of val){attr[node.nodeName]=isNumber.test(node.nodeValue)?parseFloat(node.nodeValue):node.nodeValue}return attr}else if(attr instanceof Array){return attr.reduce((last,curr)=>{last[curr]=this.attr(curr);return last},{})}else if(typeof attr==="object"&&attr.constructor===Object){for(val in attr)this.attr(val,attr[val])}else if(val===null){this.node.removeAttribute(attr)}else if(val==null){val=this.node.getAttribute(attr);return val==null?attrs[attr]:isNumber.test(val)?parseFloat(val):val}else{val=hooks.reduce((_val,hook)=>{return hook(attr,_val,this)},val);if(typeof val==="number"){val=new SVGNumber(val)}else if(Color.isColor(val)){val=new Color(val)}else if(val.constructor===Array){val=new SVGArray(val)}if(attr==="leading"){if(this.leading){this.leading(val)}}else{typeof ns==="string"?this.node.setAttributeNS(ns,attr,val.toString()):this.node.setAttribute(attr,val.toString())}if(this.rebuild&&(attr==="font-size"||attr==="x")){this.rebuild()}}return this}class Dom extends EventTarget{constructor(node,attrs){super();this.node=node;this.type=node.nodeName;if(attrs&&node!==attrs){this.attr(attrs)}}add(element,i){element=makeInstance(element);if(element.removeNamespace&&this.node instanceof globals.window.SVGElement){element.removeNamespace()}if(i==null){this.node.appendChild(element.node)}else if(element.node!==this.node.childNodes[i]){this.node.insertBefore(element.node,this.node.childNodes[i])}return this}addTo(parent,i){return makeInstance(parent).put(this,i)}children(){return new List(map(this.node.children,function(node){return adopt(node)}))}clear(){while(this.node.hasChildNodes()){this.node.removeChild(this.node.lastChild)}return this}clone(deep=true){this.writeDataToDom();return new this.constructor(assignNewId(this.node.cloneNode(deep)))}each(block,deep){const children=this.children();let i,il;for(i=0,il=children.length;i=0}html(htmlOrFn,outerHTML){return this.xml(htmlOrFn,outerHTML,html)}id(id){if(typeof id==="undefined"&&!this.node.id){this.node.id=eid(this.type)}return this.attr("id",id)}index(element){return[].slice.call(this.node.childNodes).indexOf(element.node)}last(){return adopt(this.node.lastChild)}matches(selector){const el=this.node;const matcher=el.matches||el.matchesSelector||el.msMatchesSelector||el.mozMatchesSelector||el.webkitMatchesSelector||el.oMatchesSelector||null;return matcher&&matcher.call(el,selector)}parent(type){let parent=this;if(!parent.node.parentNode)return null;parent=adopt(parent.node.parentNode);if(!type)return parent;do{if(typeof type==="string"?parent.matches(type):parent instanceof type)return parent}while(parent=adopt(parent.node.parentNode));return parent}put(element,i){element=makeInstance(element);this.add(element,i);return element}putIn(parent,i){return makeInstance(parent).add(this,i)}remove(){if(this.parent()){this.parent().removeElement(this)}return this}removeElement(element){this.node.removeChild(element.node);return this}replace(element){element=makeInstance(element);if(this.node.parentNode){this.node.parentNode.replaceChild(element.node,this.node)}return element}round(precision=2,map=null){const factor=10**precision;const attrs=this.attr(map);for(const i in attrs){if(typeof attrs[i]==="number"){attrs[i]=Math.round(attrs[i]*factor)/factor}}this.attr(attrs);return this}svg(svgOrFn,outerSVG){return this.xml(svgOrFn,outerSVG,svg)}toString(){return this.id()}words(text){this.node.textContent=text;return this}wrap(node){const parent=this.parent();if(!parent){return this.addTo(node)}const position=parent.index(this);return parent.put(node,position).put(this)}writeDataToDom(){this.each(function(){this.writeDataToDom()});return this}xml(xmlOrFn,outerXML,ns){if(typeof xmlOrFn==="boolean"){ns=outerXML;outerXML=xmlOrFn;xmlOrFn=null}if(xmlOrFn==null||typeof xmlOrFn==="function"){outerXML=outerXML==null?true:outerXML;this.writeDataToDom();let current=this;if(xmlOrFn!=null){current=adopt(current.node.cloneNode(true));if(outerXML){const result=xmlOrFn(current);current=result||current;if(result===false)return""}current.each(function(){const result=xmlOrFn(this);const _this=result||this;if(result===false){this.remove()}else if(result&&this!==_this){this.replace(_this)}},true)}return outerXML?current.node.outerHTML:current.node.innerHTML}outerXML=outerXML==null?false:outerXML;const well=create("wrapper",ns);const fragment=globals.document.createDocumentFragment();well.innerHTML=xmlOrFn;for(let len=well.children.length;len--;){fragment.appendChild(well.firstElementChild)}const parent=this.parent();return outerXML?this.replace(fragment)&&parent:this.add(fragment)}}extend(Dom,{attr:attr,find:find,findOne:findOne});register(Dom,"Dom");class Element extends Dom{constructor(node,attrs){super(node,attrs);this.dom={};this.node.instance=this;if(node.hasAttribute("svgjs:data")){this.setData(JSON.parse(node.getAttribute("svgjs:data"))||{})}}center(x,y){return this.cx(x).cy(y)}cx(x){return x==null?this.x()+this.width()/2:this.x(x-this.width()/2)}cy(y){return y==null?this.y()+this.height()/2:this.y(y-this.height()/2)}defs(){const root=this.root();return root&&root.defs()}dmove(x,y){return this.dx(x).dy(y)}dx(x=0){return this.x(new SVGNumber(x).plus(this.x()))}dy(y=0){return this.y(new SVGNumber(y).plus(this.y()))}getEventHolder(){return this}height(height){return this.attr("height",height)}move(x,y){return this.x(x).y(y)}parents(until=this.root()){const isSelector=typeof until==="string";if(!isSelector){until=makeInstance(until)}const parents=new List;let parent=this;while((parent=parent.parent())&&parent.node!==globals.document&&parent.nodeName!=="#document-fragment"){parents.push(parent);if(!isSelector&&parent.node===until.node){break}if(isSelector&&parent.matches(until)){break}if(parent.node===this.root().node){return null}}return parents}reference(attr){attr=this.attr(attr);if(!attr)return null;const m=(attr+"").match(reference);return m?makeInstance(m[1]):null}root(){const p=this.parent(getClass(root));return p&&p.root()}setData(o){this.dom=o;return this}size(width,height){const p=proportionalSize(this,width,height);return this.width(new SVGNumber(p.width)).height(new SVGNumber(p.height))}width(width){return this.attr("width",width)}writeDataToDom(){this.node.removeAttribute("svgjs:data");if(Object.keys(this.dom).length){this.node.setAttribute("svgjs:data",JSON.stringify(this.dom))}return super.writeDataToDom()}x(x){return this.attr("x",x)}y(y){return this.attr("y",y)}}extend(Element,{bbox:bbox,rbox:rbox,inside:inside,point:point,ctm:ctm,screenCTM:screenCTM});register(Element,"Element");const sugar={stroke:["color","width","opacity","linecap","linejoin","miterlimit","dasharray","dashoffset"],fill:["color","opacity","rule"],prefix:function(t,a){return a==="color"?t:t+"-"+a}};["fill","stroke"].forEach(function(m){const extension={};let i;extension[m]=function(o){if(typeof o==="undefined"){return this.attr(m)}if(typeof o==="string"||o instanceof Color||Color.isRgb(o)||o instanceof Element){this.attr(m,o)}else{for(i=sugar[m].length-1;i>=0;i--){if(o[sugar[m][i]]!=null){this.attr(sugar.prefix(m,sugar[m][i]),o[sugar[m][i]])}}}return this};registerMethods(["Element","Runner"],extension)});registerMethods(["Element","Runner"],{matrix:function(mat,b,c,d,e,f){if(mat==null){return new Matrix(this)}return this.attr("transform",new Matrix(mat,b,c,d,e,f))},rotate:function(angle,cx,cy){return this.transform({rotate:angle,ox:cx,oy:cy},true)},skew:function(x,y,cx,cy){return arguments.length===1||arguments.length===3?this.transform({skew:x,ox:y,oy:cx},true):this.transform({skew:[x,y],ox:cx,oy:cy},true)},shear:function(lam,cx,cy){return this.transform({shear:lam,ox:cx,oy:cy},true)},scale:function(x,y,cx,cy){return arguments.length===1||arguments.length===3?this.transform({scale:x,ox:y,oy:cx},true):this.transform({scale:[x,y],ox:cx,oy:cy},true)},translate:function(x,y){return this.transform({translate:[x,y]},true)},relative:function(x,y){return this.transform({relative:[x,y]},true)},flip:function(direction="both",origin="center"){if("xybothtrue".indexOf(direction)===-1){origin=direction;direction="both"}return this.transform({flip:direction,origin:origin},true)},opacity:function(value){return this.attr("opacity",value)}});registerMethods("radius",{radius:function(x,y=x){const type=(this._element||this).type;return type==="radialGradient"?this.attr("r",new SVGNumber(x)):this.rx(x).ry(y)}});registerMethods("Path",{length:function(){return this.node.getTotalLength()},pointAt:function(length){return new Point(this.node.getPointAtLength(length))}});registerMethods(["Element","Runner"],{font:function(a,v){if(typeof a==="object"){for(v in a)this.font(v,a[v]);return this}return a==="leading"?this.leading(v):a==="anchor"?this.attr("text-anchor",v):a==="size"||a==="family"||a==="weight"||a==="stretch"||a==="variant"||a==="style"?this.attr("font-"+a,v):this.attr(a,v)}});const methods=["click","dblclick","mousedown","mouseup","mouseover","mouseout","mousemove","mouseenter","mouseleave","touchstart","touchmove","touchleave","touchend","touchcancel"].reduce(function(last,event){const fn=function(f){if(f===null){this.off(event)}else{this.on(event,f)}return this};last[event]=fn;return last},{});registerMethods("Element",methods);function untransform(){return this.attr("transform",null)}function matrixify(){const matrix=(this.attr("transform")||"").split(transforms).slice(0,-1).map(function(str){const kv=str.trim().split("(");return[kv[0],kv[1].split(delimiter).map(function(str){return parseFloat(str)})]}).reverse().reduce(function(matrix,transform){if(transform[0]==="matrix"){return matrix.lmultiply(Matrix.fromArray(transform[1]))}return matrix[transform[0]].apply(matrix,transform[1])},new Matrix);return matrix}function toParent(parent,i){if(this===parent)return this;const ctm=this.screenCTM();const pCtm=parent.screenCTM().inverse();this.addTo(parent,i).untransform().transform(pCtm.multiply(ctm));return this}function toRoot(i){return this.toParent(this.root(),i)}function transform(o,relative){if(o==null||typeof o==="string"){const decomposed=new Matrix(this).decompose();return o==null?decomposed:decomposed[o]}if(!Matrix.isMatrixLike(o)){o={...o,origin:getOrigin(o,this)}}const cleanRelative=relative===true?this:relative||false;const result=new Matrix(cleanRelative).transform(o);return this.attr("transform",result)}registerMethods("Element",{untransform:untransform,matrixify:matrixify,toParent:toParent,toRoot:toRoot,transform:transform});class Container extends Element{flatten(parent=this,index){this.each(function(){if(this instanceof Container){return this.flatten().ungroup()}});return this}ungroup(parent=this.parent(),index=parent.index(this)){index=index===-1?parent.children().length:index;this.each(function(i,children){return children[children.length-i-1].toParent(parent,index)});return this.remove()}}register(Container,"Container");class Defs extends Container{constructor(node,attrs=node){super(nodeOrNew("defs",node),attrs)}flatten(){return this}ungroup(){return this}}register(Defs,"Defs");class Shape extends Element{}register(Shape,"Shape");function rx(rx){return this.attr("rx",rx)}function ry(ry){return this.attr("ry",ry)}function x$3(x){return x==null?this.cx()-this.rx():this.cx(x+this.rx())}function y$3(y){return y==null?this.cy()-this.ry():this.cy(y+this.ry())}function cx$1(x){return this.attr("cx",x)}function cy$1(y){return this.attr("cy",y)}function width$2(width){return width==null?this.rx()*2:this.rx(new SVGNumber(width).divide(2))}function height$2(height){return height==null?this.ry()*2:this.ry(new SVGNumber(height).divide(2))}var circled={__proto__:null,rx:rx,ry:ry,x:x$3,y:y$3,cx:cx$1,cy:cy$1,width:width$2,height:height$2};class Ellipse extends Shape{constructor(node,attrs=node){super(nodeOrNew("ellipse",node),attrs)}size(width,height){const p=proportionalSize(this,width,height);return this.rx(new SVGNumber(p.width).divide(2)).ry(new SVGNumber(p.height).divide(2))}}extend(Ellipse,circled);registerMethods("Container",{ellipse:wrapWithAttrCheck(function(width=0,height=width){return this.put(new Ellipse).size(width,height).move(0,0)})});register(Ellipse,"Ellipse");class Fragment extends Dom{constructor(node=globals.document.createDocumentFragment()){super(node)}xml(xmlOrFn,outerXML,ns){if(typeof xmlOrFn==="boolean"){ns=outerXML;outerXML=xmlOrFn;xmlOrFn=null}if(xmlOrFn==null||typeof xmlOrFn==="function"){const wrapper=new Dom(create("wrapper",ns));wrapper.add(this.node.cloneNode(true));return wrapper.xml(false,ns)}return super.xml(xmlOrFn,false,ns)}}register(Fragment,"Fragment");function from(x,y){return(this._element||this).type==="radialGradient"?this.attr({fx:new SVGNumber(x),fy:new SVGNumber(y)}):this.attr({x1:new SVGNumber(x),y1:new SVGNumber(y)})}function to(x,y){return(this._element||this).type==="radialGradient"?this.attr({cx:new SVGNumber(x),cy:new SVGNumber(y)}):this.attr({x2:new SVGNumber(x),y2:new SVGNumber(y)})}var gradiented={__proto__:null,from:from,to:to};class Gradient extends Container{constructor(type,attrs){super(nodeOrNew(type+"Gradient",typeof type==="string"?null:type),attrs)}attr(a,b,c){if(a==="transform")a="gradientTransform";return super.attr(a,b,c)}bbox(){return new Box}targets(){return baseFind('svg [fill*="'+this.id()+'"]')}toString(){return this.url()}update(block){this.clear();if(typeof block==="function"){block.call(this,this)}return this}url(){return'url("#'+this.id()+'")'}}extend(Gradient,gradiented);registerMethods({Container:{gradient(...args){return this.defs().gradient(...args)}},Defs:{gradient:wrapWithAttrCheck(function(type,block){return this.put(new Gradient(type)).update(block)})}});register(Gradient,"Gradient");class Pattern extends Container{constructor(node,attrs=node){super(nodeOrNew("pattern",node),attrs)}attr(a,b,c){if(a==="transform")a="patternTransform";return super.attr(a,b,c)}bbox(){return new Box}targets(){return baseFind('svg [fill*="'+this.id()+'"]')}toString(){return this.url()}update(block){this.clear();if(typeof block==="function"){block.call(this,this)}return this}url(){return'url("#'+this.id()+'")'}}registerMethods({Container:{pattern(...args){return this.defs().pattern(...args)}},Defs:{pattern:wrapWithAttrCheck(function(width,height,block){return this.put(new Pattern).update(block).attr({x:0,y:0,width:width,height:height,patternUnits:"userSpaceOnUse"})})}});register(Pattern,"Pattern");class Image extends Shape{constructor(node,attrs=node){super(nodeOrNew("image",node),attrs)}load(url,callback){if(!url)return this;const img=new globals.window.Image;on(img,"load",function(e){const p=this.parent(Pattern);if(this.width()===0&&this.height()===0){this.size(img.width,img.height)}if(p instanceof Pattern){if(p.width()===0&&p.height()===0){p.size(this.width(),this.height())}}if(typeof callback==="function"){callback.call(this,e)}},this);on(img,"load error",function(){off(img)});return this.attr("href",img.src=url,xlink)}}registerAttrHook(function(attr,val,_this){if(attr==="fill"||attr==="stroke"){if(isImage.test(val)){val=_this.root().defs().image(val)}}if(val instanceof Image){val=_this.root().defs().pattern(0,0,pattern=>{pattern.add(val)})}return val});registerMethods({Container:{image:wrapWithAttrCheck(function(source,callback){return this.put(new Image).size(0,0).load(source,callback)})}});register(Image,"Image");class PointArray extends SVGArray{bbox(){let maxX=-Infinity;let maxY=-Infinity;let minX=Infinity;let minY=Infinity;this.forEach(function(el){maxX=Math.max(el[0],maxX);maxY=Math.max(el[1],maxY);minX=Math.min(el[0],minX);minY=Math.min(el[1],minY)});return new Box(minX,minY,maxX-minX,maxY-minY)}move(x,y){const box=this.bbox();x-=box.x;y-=box.y;if(!isNaN(x)&&!isNaN(y)){for(let i=this.length-1;i>=0;i--){this[i]=[this[i][0]+x,this[i][1]+y]}}return this}parse(array=[0,0]){const points=[];if(array instanceof Array){array=Array.prototype.concat.apply([],array)}else{array=array.trim().split(delimiter).map(parseFloat)}if(array.length%2!==0)array.pop();for(let i=0,len=array.length;i=0;i--){if(box.width)this[i][0]=(this[i][0]-box.x)*width/box.width+box.x;if(box.height)this[i][1]=(this[i][1]-box.y)*height/box.height+box.y}return this}toLine(){return{x1:this[0][0],y1:this[0][1],x2:this[1][0],y2:this[1][1]}}toString(){const array=[];for(let i=0,il=this.length;i":function(pos){return-Math.cos(pos*Math.PI)/2+.5},">":function(pos){return Math.sin(pos*Math.PI/2)},"<":function(pos){return-Math.cos(pos*Math.PI/2)+1},bezier:function(x1,y1,x2,y2){return function(t){if(t<0){if(x1>0){return y1/x1*t}else if(x2>0){return y2/x2*t}else{return 0}}else if(t>1){if(x2<1){return(1-y2)/(1-x2)*t+(y2-x2)/(1-x2)}else if(x1<1){return(1-y1)/(1-x1)*t+(y1-x1)/(1-x1)}else{return 1}}else{return 3*t*(1-t)**2*y1+3*t**2*(1-t)*y2+t**3}}},steps:function(steps,stepPosition="end"){stepPosition=stepPosition.split("-").reverse()[0];let jumps=steps;if(stepPosition==="none"){--jumps}else if(stepPosition==="both"){++jumps}return(t,beforeFlag=false)=>{let step=Math.floor(t*steps);const jumping=t*step%1===0;if(stepPosition==="start"||stepPosition==="both"){++step}if(beforeFlag&&jumping){--step}if(t>=0&&step<0){step=0}if(t<=1&&step>jumps){step=jumps}return step/jumps}}};class Stepper{done(){return false}}class Ease extends Stepper{constructor(fn=timeline.ease){super();this.ease=easing[fn]||fn}step(from,to,pos){if(typeof from!=="number"){return pos<1?from:to}return from+(to-from)*this.ease(pos)}}class Controller extends Stepper{constructor(fn){super();this.stepper=fn}done(c){return c.done}step(current,target,dt,c){return this.stepper(current,target,dt,c)}}function recalculate(){const duration=(this._duration||500)/1e3;const overshoot=this._overshoot||0;const eps=1e-10;const pi=Math.PI;const os=Math.log(overshoot/100+eps);const zeta=-os/Math.sqrt(pi*pi+os*os);const wn=3.9/(zeta*duration);this.d=2*zeta*wn;this.k=wn*wn}class Spring extends Controller{constructor(duration=500,overshoot=0){super();this.duration(duration).overshoot(overshoot)}step(current,target,dt,c){if(typeof current==="string")return current;c.done=dt===Infinity;if(dt===Infinity)return target;if(dt===0)return current;if(dt>100)dt=16;dt/=1e3;const velocity=c.velocity||0;const acceleration=-this.d*velocity-this.k*(current-target);const newPosition=current+velocity*dt+acceleration*dt*dt/2;c.velocity=velocity+acceleration*dt;c.done=Math.abs(target-newPosition)+Math.abs(velocity)<.002;return c.done?target:newPosition}}extend(Spring,{duration:makeSetterGetter("_duration",recalculate),overshoot:makeSetterGetter("_overshoot",recalculate)});class PID extends Controller{constructor(p=.1,i=.01,d=0,windup=1e3){super();this.p(p).i(i).d(d).windup(windup)}step(current,target,dt,c){if(typeof current==="string")return current;c.done=dt===Infinity;if(dt===Infinity)return target;if(dt===0)return current;const p=target-current;let i=(c.integral||0)+p*dt;const d=(p-(c.error||0))/dt;const windup=this._windup;if(windup!==false){i=Math.max(-windup,Math.min(i,windup))}c.error=p;c.integral=i;c.done=Math.abs(p)<.001;return c.done?target:current+(this.P*p+this.I*i+this.D*d)}}extend(PID,{windup:makeSetterGetter("_windup"),p:makeSetterGetter("P"),i:makeSetterGetter("I"),d:makeSetterGetter("D")});const segmentParameters={M:2,L:2,H:1,V:1,C:6,S:4,Q:4,T:2,A:7,Z:0};const pathHandlers={M:function(c,p,p0){p.x=p0.x=c[0];p.y=p0.y=c[1];return["M",p.x,p.y]},L:function(c,p){p.x=c[0];p.y=c[1];return["L",c[0],c[1]]},H:function(c,p){p.x=c[0];return["H",c[0]]},V:function(c,p){p.y=c[0];return["V",c[0]]},C:function(c,p){p.x=c[4];p.y=c[5];return["C",c[0],c[1],c[2],c[3],c[4],c[5]]},S:function(c,p){p.x=c[2];p.y=c[3];return["S",c[0],c[1],c[2],c[3]]},Q:function(c,p){p.x=c[2];p.y=c[3];return["Q",c[0],c[1],c[2],c[3]]},T:function(c,p){p.x=c[0];p.y=c[1];return["T",c[0],c[1]]},Z:function(c,p,p0){p.x=p0.x;p.y=p0.y;return["Z"]},A:function(c,p){p.x=c[5];p.y=c[6];return["A",c[0],c[1],c[2],c[3],c[4],c[5],c[6]]}};const mlhvqtcsaz="mlhvqtcsaz".split("");for(let i=0,il=mlhvqtcsaz.length;i=0;i--){l=this[i][0];if(l==="M"||l==="L"||l==="T"){this[i][1]+=x;this[i][2]+=y}else if(l==="H"){this[i][1]+=x}else if(l==="V"){this[i][1]+=y}else if(l==="C"||l==="S"||l==="Q"){this[i][1]+=x;this[i][2]+=y;this[i][3]+=x;this[i][4]+=y;if(l==="C"){this[i][5]+=x;this[i][6]+=y}}else if(l==="A"){this[i][6]+=x;this[i][7]+=y}}}return this}parse(d="M0 0"){if(Array.isArray(d)){d=Array.prototype.concat.apply([],d).toString()}return pathParser(d)}size(width,height){const box=this.bbox();let i,l;box.width=box.width===0?1:box.width;box.height=box.height===0?1:box.height;for(i=this.length-1;i>=0;i--){l=this[i][0];if(l==="M"||l==="L"||l==="T"){this[i][1]=(this[i][1]-box.x)*width/box.width+box.x;this[i][2]=(this[i][2]-box.y)*height/box.height+box.y}else if(l==="H"){this[i][1]=(this[i][1]-box.x)*width/box.width+box.x}else if(l==="V"){this[i][1]=(this[i][1]-box.y)*height/box.height+box.y}else if(l==="C"||l==="S"||l==="Q"){this[i][1]=(this[i][1]-box.x)*width/box.width+box.x;this[i][2]=(this[i][2]-box.y)*height/box.height+box.y;this[i][3]=(this[i][3]-box.x)*width/box.width+box.x;this[i][4]=(this[i][4]-box.y)*height/box.height+box.y;if(l==="C"){this[i][5]=(this[i][5]-box.x)*width/box.width+box.x;this[i][6]=(this[i][6]-box.y)*height/box.height+box.y}}else if(l==="A"){this[i][1]=this[i][1]*width/box.width;this[i][2]=this[i][2]*height/box.height;this[i][6]=(this[i][6]-box.x)*width/box.width+box.x;this[i][7]=(this[i][7]-box.y)*height/box.height+box.y}}return this}toString(){return arrayToString(this)}}const getClassForType=value=>{const type=typeof value;if(type==="number"){return SVGNumber}else if(type==="string"){if(Color.isColor(value)){return Color}else if(delimiter.test(value)){return isPathLetter.test(value)?PathArray:SVGArray}else if(numberAndUnit.test(value)){return SVGNumber}else{return NonMorphable}}else if(morphableTypes.indexOf(value.constructor)>-1){return value.constructor}else if(Array.isArray(value)){return SVGArray}else if(type==="object"){return ObjectBag}else{return NonMorphable}};class Morphable{constructor(stepper){this._stepper=stepper||new Ease("-");this._from=null;this._to=null;this._type=null;this._context=null;this._morphObj=null}at(pos){return this._morphObj.morph(this._from,this._to,pos,this._stepper,this._context)}done(){const complete=this._context.map(this._stepper.done).reduce(function(last,curr){return last&&curr},true);return complete}from(val){if(val==null){return this._from}this._from=this._set(val);return this}stepper(stepper){if(stepper==null)return this._stepper;this._stepper=stepper;return this}to(val){if(val==null){return this._to}this._to=this._set(val);return this}type(type){if(type==null){return this._type}this._type=type;return this}_set(value){if(!this._type){this.type(getClassForType(value))}let result=new this._type(value);if(this._type===Color){result=this._to?result[this._to[4]]():this._from?result[this._from[4]]():result}if(this._type===ObjectBag){result=this._to?result.align(this._to):this._from?result.align(this._from):result}result=result.toConsumable();this._morphObj=this._morphObj||new this._type;this._context=this._context||Array.apply(null,Array(result.length)).map(Object).map(function(o){o.done=true;return o});return result}}class NonMorphable{constructor(...args){this.init(...args)}init(val){val=Array.isArray(val)?val[0]:val;this.value=val;return this}toArray(){return[this.value]}valueOf(){return this.value}}class TransformBag{constructor(...args){this.init(...args)}init(obj){if(Array.isArray(obj)){obj={scaleX:obj[0],scaleY:obj[1],shear:obj[2],rotate:obj[3],translateX:obj[4],translateY:obj[5],originX:obj[6],originY:obj[7]}}Object.assign(this,TransformBag.defaults,obj);return this}toArray(){const v=this;return[v.scaleX,v.scaleY,v.shear,v.rotate,v.translateX,v.translateY,v.originX,v.originY]}}TransformBag.defaults={scaleX:1,scaleY:1,shear:0,rotate:0,translateX:0,translateY:0,originX:0,originY:0};const sortByKey=(a,b)=>{return a[0]b[0]?1:0};class ObjectBag{constructor(...args){this.init(...args)}align(other){const values=this.values;for(let i=0,il=values.length;ilast.concat(curr),[]);return this}toArray(){return this.values}valueOf(){const obj={};const arr=this.values;while(arr.length){const key=arr.shift();const Type=arr.shift();const num=arr.shift();const values=arr.splice(0,num);obj[key]=new Type(values)}return obj}}const morphableTypes=[NonMorphable,TransformBag,ObjectBag];function registerMorphableType(type=[]){morphableTypes.push(...[].concat(type))}function makeMorphable(){extend(morphableTypes,{to(val){return(new Morphable).type(this.constructor).from(this.toArray()).to(val)},fromArray(arr){this.init(arr);return this},toConsumable(){return this.toArray()},morph(from,to,pos,stepper,context){const mapper=function(i,index){return stepper.step(i,to[index],pos,context[index],context)};return this.fromArray(from.map(mapper))}})}class Path extends Shape{constructor(node,attrs=node){super(nodeOrNew("path",node),attrs)}array(){return this._array||(this._array=new PathArray(this.attr("d")))}clear(){delete this._array;return this}height(height){return height==null?this.bbox().height:this.size(this.bbox().width,height)}move(x,y){return this.attr("d",this.array().move(x,y))}plot(d){return d==null?this.array():this.clear().attr("d",typeof d==="string"?d:this._array=new PathArray(d))}size(width,height){const p=proportionalSize(this,width,height);return this.attr("d",this.array().size(p.width,p.height))}width(width){return width==null?this.bbox().width:this.size(width,this.bbox().height)}x(x){return x==null?this.bbox().x:this.move(x,this.bbox().y)}y(y){return y==null?this.bbox().y:this.move(this.bbox().x,y)}}Path.prototype.MorphArray=PathArray;registerMethods({Container:{path:wrapWithAttrCheck(function(d){return this.put(new Path).plot(d||new PathArray)})}});register(Path,"Path");function array(){return this._array||(this._array=new PointArray(this.attr("points")))}function clear(){delete this._array;return this}function move$2(x,y){return this.attr("points",this.array().move(x,y))}function plot(p){return p==null?this.array():this.clear().attr("points",typeof p==="string"?p:this._array=new PointArray(p))}function size$1(width,height){const p=proportionalSize(this,width,height);return this.attr("points",this.array().size(p.width,p.height))}var poly={__proto__:null,array:array,clear:clear,move:move$2,plot:plot,size:size$1};class Polygon extends Shape{constructor(node,attrs=node){super(nodeOrNew("polygon",node),attrs)}}registerMethods({Container:{polygon:wrapWithAttrCheck(function(p){return this.put(new Polygon).plot(p||new PointArray)})}});extend(Polygon,pointed);extend(Polygon,poly);register(Polygon,"Polygon");class Polyline extends Shape{constructor(node,attrs=node){super(nodeOrNew("polyline",node),attrs)}}registerMethods({Container:{polyline:wrapWithAttrCheck(function(p){return this.put(new Polyline).plot(p||new PointArray)})}});extend(Polyline,pointed);extend(Polyline,poly);register(Polyline,"Polyline");class Rect extends Shape{constructor(node,attrs=node){super(nodeOrNew("rect",node),attrs)}}extend(Rect,{rx:rx,ry:ry});registerMethods({Container:{rect:wrapWithAttrCheck(function(width,height){return this.put(new Rect).size(width,height)})}});register(Rect,"Rect");class Queue{constructor(){this._first=null;this._last=null}first(){return this._first&&this._first.value}last(){return this._last&&this._last.value}push(value){const item=typeof value.next!=="undefined"?value:{value:value,next:null,prev:null};if(this._last){item.prev=this._last;this._last.next=item;this._last=item}else{this._last=item;this._first=item}return item}remove(item){if(item.prev)item.prev.next=item.next;if(item.next)item.next.prev=item.prev;if(item===this._last)this._last=item.prev;if(item===this._first)this._first=item.next;item.prev=null;item.next=null}shift(){const remove=this._first;if(!remove)return null;this._first=remove.next;if(this._first)this._first.prev=null;this._last=this._first?this._last:null;return remove.value}}const Animator={nextDraw:null,frames:new Queue,timeouts:new Queue,immediates:new Queue,timer:()=>globals.window.performance||globals.window.Date,transforms:[],frame(fn){const node=Animator.frames.push({run:fn});if(Animator.nextDraw===null){Animator.nextDraw=globals.window.requestAnimationFrame(Animator._draw)}return node},timeout(fn,delay){delay=delay||0;const time=Animator.timer().now()+delay;const node=Animator.timeouts.push({run:fn,time:time});if(Animator.nextDraw===null){Animator.nextDraw=globals.window.requestAnimationFrame(Animator._draw)}return node},immediate(fn){const node=Animator.immediates.push(fn);if(Animator.nextDraw===null){Animator.nextDraw=globals.window.requestAnimationFrame(Animator._draw)}return node},cancelFrame(node){node!=null&&Animator.frames.remove(node)},clearTimeout(node){node!=null&&Animator.timeouts.remove(node)},cancelImmediate(node){node!=null&&Animator.immediates.remove(node)},_draw(now){let nextTimeout=null;const lastTimeout=Animator.timeouts.last();while(nextTimeout=Animator.timeouts.shift()){if(now>=nextTimeout.time){nextTimeout.run()}else{Animator.timeouts.push(nextTimeout)}if(nextTimeout===lastTimeout)break}let nextFrame=null;const lastFrame=Animator.frames.last();while(nextFrame!==lastFrame&&(nextFrame=Animator.frames.shift())){nextFrame.run(now)}let nextImmediate=null;while(nextImmediate=Animator.immediates.shift()){nextImmediate()}Animator.nextDraw=Animator.timeouts.first()||Animator.frames.first()?globals.window.requestAnimationFrame(Animator._draw):null}};const makeSchedule=function(runnerInfo){const start=runnerInfo.start;const duration=runnerInfo.runner.duration();const end=start+duration;return{start:start,duration:duration,end:end,runner:runnerInfo.runner}};const defaultSource=function(){const w=globals.window;return(w.performance||w.Date).now()};class Timeline extends EventTarget{constructor(timeSource=defaultSource){super();this._timeSource=timeSource;this._startTime=0;this._speed=1;this._persist=0;this._nextFrame=null;this._paused=true;this._runners=[];this._runnerIds=[];this._lastRunnerId=-1;this._time=0;this._lastSourceTime=0;this._lastStepTime=0;this._step=this._stepFn.bind(this,false);this._stepImmediate=this._stepFn.bind(this,true)}active(){return!!this._nextFrame}finish(){this.time(this.getEndTimeOfTimeline()+1);return this.pause()}getEndTime(){const lastRunnerInfo=this.getLastRunnerInfo();const lastDuration=lastRunnerInfo?lastRunnerInfo.runner.duration():0;const lastStartTime=lastRunnerInfo?lastRunnerInfo.start:this._time;return lastStartTime+lastDuration}getEndTimeOfTimeline(){const endTimes=this._runners.map(i=>i.start+i.runner.duration());return Math.max(0,...endTimes)}getLastRunnerInfo(){return this.getRunnerInfoById(this._lastRunnerId)}getRunnerInfoById(id){return this._runners[this._runnerIds.indexOf(id)]||null}pause(){this._paused=true;return this._continue()}persist(dtOrForever){if(dtOrForever==null)return this._persist;this._persist=dtOrForever;return this}play(){this._paused=false;return this.updateTime()._continue()}reverse(yes){const currentSpeed=this.speed();if(yes==null)return this.speed(-currentSpeed);const positive=Math.abs(currentSpeed);return this.speed(yes?-positive:positive)}schedule(runner,delay,when){if(runner==null){return this._runners.map(makeSchedule)}let absoluteStartTime=0;const endTime=this.getEndTime();delay=delay||0;if(when==null||when==="last"||when==="after"){absoluteStartTime=endTime}else if(when==="absolute"||when==="start"){absoluteStartTime=delay;delay=0}else if(when==="now"){absoluteStartTime=this._time}else if(when==="relative"){const runnerInfo=this.getRunnerInfoById(runner.id);if(runnerInfo){absoluteStartTime=runnerInfo.start+delay;delay=0}}else if(when==="with-last"){const lastRunnerInfo=this.getLastRunnerInfo();const lastStartTime=lastRunnerInfo?lastRunnerInfo.start:this._time;absoluteStartTime=lastStartTime}else{throw new Error('Invalid value for the "when" parameter')}runner.unschedule();runner.timeline(this);const persist=runner.persist();const runnerInfo={persist:persist===null?this._persist:persist,start:absoluteStartTime+delay,runner:runner};this._lastRunnerId=runner.id;this._runners.push(runnerInfo);this._runners.sort((a,b)=>a.start-b.start);this._runnerIds=this._runners.map(info=>info.runner.id);this.updateTime()._continue();return this}seek(dt){return this.time(this._time+dt)}source(fn){if(fn==null)return this._timeSource;this._timeSource=fn;return this}speed(speed){if(speed==null)return this._speed;this._speed=speed;return this}stop(){this.time(0);return this.pause()}time(time){if(time==null)return this._time;this._time=time;return this._continue(true)}unschedule(runner){const index=this._runnerIds.indexOf(runner.id);if(index<0)return this;this._runners.splice(index,1);this._runnerIds.splice(index,1);runner.timeline(null);return this}updateTime(){if(!this.active()){this._lastSourceTime=this._timeSource()}return this}_continue(immediateStep=false){Animator.cancelFrame(this._nextFrame);this._nextFrame=null;if(immediateStep)return this._stepImmediate();if(this._paused)return this;this._nextFrame=Animator.frame(this._step);return this}_stepFn(immediateStep=false){const time=this._timeSource();let dtSource=time-this._lastSourceTime;if(immediateStep)dtSource=0;const dtTime=this._speed*dtSource+(this._time-this._lastStepTime);this._lastSourceTime=time;if(!immediateStep){this._time+=dtTime;this._time=this._time<0?0:this._time}this._lastStepTime=this._time;this.fire("time",this._time);for(let k=this._runners.length;k--;){const runnerInfo=this._runners[k];const runner=runnerInfo.runner;const dtToStart=this._time-runnerInfo.start;if(dtToStart<=0){runner.reset()}}let runnersLeft=false;for(let i=0,len=this._runners.length;i0){this._continue()}else{this.pause();this.fire("finished")}return this}}registerMethods({Element:{timeline:function(timeline){if(timeline==null){this._timeline=this._timeline||new Timeline;return this._timeline}else{this._timeline=timeline;return this}}}});class Runner extends EventTarget{constructor(options){super();this.id=Runner.id++;options=options==null?timeline.duration:options;options=typeof options==="function"?new Controller(options):options;this._element=null;this._timeline=null;this.done=false;this._queue=[];this._duration=typeof options==="number"&&options;this._isDeclarative=options instanceof Controller;this._stepper=this._isDeclarative?options:new Ease;this._history={};this.enabled=true;this._time=0;this._lastTime=0;this._reseted=true;this.transforms=new Matrix;this.transformId=1;this._haveReversed=false;this._reverse=false;this._loopsDone=0;this._swing=false;this._wait=0;this._times=1;this._frameId=null;this._persist=this._isDeclarative?true:null}static sanitise(duration,delay,when){let times=1;let swing=false;let wait=0;duration=duration||timeline.duration;delay=delay||timeline.delay;when=when||"last";if(typeof duration==="object"&&!(duration instanceof Stepper)){delay=duration.delay||delay;when=duration.when||when;swing=duration.swing||swing;times=duration.times||times;wait=duration.wait||wait;duration=duration.duration||timeline.duration}return{duration:duration,delay:delay,swing:swing,times:times,wait:wait,when:when}}active(enabled){if(enabled==null)return this.enabled;this.enabled=enabled;return this}addTransform(transform,index){this.transforms.lmultiplyO(transform);return this}after(fn){return this.on("finished",fn)}animate(duration,delay,when){const o=Runner.sanitise(duration,delay,when);const runner=new Runner(o.duration);if(this._timeline)runner.timeline(this._timeline);if(this._element)runner.element(this._element);return runner.loop(o).schedule(o.delay,o.when)}clearTransform(){this.transforms=new Matrix;return this}clearTransformsFromQueue(){if(!this.done||!this._timeline||!this._timeline._runnerIds.includes(this.id)){this._queue=this._queue.filter(item=>{return!item.isTransform})}}delay(delay){return this.animate(0,delay)}duration(){return this._times*(this._wait+this._duration)-this._wait}during(fn){return this.queue(null,fn)}ease(fn){this._stepper=new Ease(fn);return this}element(element){if(element==null)return this._element;this._element=element;element._prepareRunner();return this}finish(){return this.step(Infinity)}loop(times,swing,wait){if(typeof times==="object"){swing=times.swing;wait=times.wait;times=times.times}this._times=times||Infinity;this._swing=swing||false;this._wait=wait||0;if(this._times===true){this._times=Infinity}return this}loops(p){const loopDuration=this._duration+this._wait;if(p==null){const loopsDone=Math.floor(this._time/loopDuration);const relativeTime=this._time-loopsDone*loopDuration;const position=relativeTime/this._duration;return Math.min(loopsDone+position,this._times)}const whole=Math.floor(p);const partial=p%1;const time=loopDuration*whole+this._duration*partial;return this.time(time)}persist(dtOrForever){if(dtOrForever==null)return this._persist;this._persist=dtOrForever;return this}position(p){const x=this._time;const d=this._duration;const w=this._wait;const t=this._times;const s=this._swing;const r=this._reverse;let position;if(p==null){const f=function(x){const swinging=s*Math.floor(x%(2*(w+d))/(w+d));const backwards=swinging&&!r||!swinging&&r;const uncliped=Math.pow(-1,backwards)*(x%(w+d))/d+backwards;const clipped=Math.max(Math.min(uncliped,1),0);return clipped};const endTime=t*(w+d)-w;position=x<=0?Math.round(f(1e-5)):x=0;this._lastPosition=position;const duration=this.duration();const justStarted=this._lastTime<=0&&this._time>0;const justFinished=this._lastTime=duration;this._lastTime=this._time;if(justStarted){this.fire("start",this)}const declarative=this._isDeclarative;this.done=!declarative&&!justFinished&&this._time>=duration;this._reseted=false;let converged=false;if(running||declarative){this._initialise(running);this.transforms=new Matrix;converged=this._run(declarative?dt:position);this.fire("step",this)}this.done=this.done||converged&&declarative;if(justFinished){this.fire("finished",this)}return this}time(time){if(time==null){return this._time}const dt=time-this._time;this.step(dt);return this}timeline(timeline){if(typeof timeline==="undefined")return this._timeline;this._timeline=timeline;return this}unschedule(){const timeline=this.timeline();timeline&&timeline.unschedule(this);return this}_initialise(running){if(!running&&!this._isDeclarative)return;for(let i=0,len=this._queue.length;ilast.lmultiplyO(curr);const getRunnerTransform=runner=>runner.transforms;function mergeTransforms(){const runners=this._transformationRunners.runners;const netTransform=runners.map(getRunnerTransform).reduce(lmultiply,new Matrix);this.transform(netTransform);this._transformationRunners.merge();if(this._transformationRunners.length()===1){this._frameId=null}}class RunnerArray{constructor(){this.runners=[];this.ids=[]}add(runner){if(this.runners.includes(runner))return;const id=runner.id+1;this.runners.push(runner);this.ids.push(id);return this}clearBefore(id){const deleteCnt=this.ids.indexOf(id+1)||1;this.ids.splice(0,deleteCnt,0);this.runners.splice(0,deleteCnt,new FakeRunner).forEach(r=>r.clearTransformsFromQueue());return this}edit(id,newRunner){const index=this.ids.indexOf(id+1);this.ids.splice(index,1,id+1);this.runners.splice(index,1,newRunner);return this}getByID(id){return this.runners[this.ids.indexOf(id+1)]}length(){return this.ids.length}merge(){let lastRunner=null;for(let i=0;irunner.id<=current.id).map(getRunnerTransform).reduce(lmultiply,new Matrix)},_addRunner(runner){this._transformationRunners.add(runner);Animator.cancelImmediate(this._frameId);this._frameId=Animator.immediate(mergeTransforms.bind(this))},_prepareRunner(){if(this._frameId==null){this._transformationRunners=(new RunnerArray).add(new FakeRunner(new Matrix(this)))}}}});const difference=(a,b)=>a.filter(x=>!b.includes(x));extend(Runner,{attr(a,v){return this.styleAttr("attr",a,v)},css(s,v){return this.styleAttr("css",s,v)},styleAttr(type,nameOrAttrs,val){if(typeof nameOrAttrs==="string"){return this.styleAttr(type,{[nameOrAttrs]:val})}let attrs=nameOrAttrs;if(this._tryRetarget(type,attrs))return this;let morpher=new Morphable(this._stepper).to(attrs);let keys=Object.keys(attrs);this.queue(function(){morpher=morpher.from(this.element()[type](keys))},function(pos){this.element()[type](morpher.at(pos).valueOf());return morpher.done()},function(newToAttrs){const newKeys=Object.keys(newToAttrs);const differences=difference(newKeys,keys);if(differences.length){const addedFromAttrs=this.element()[type](differences);const oldFromAttrs=new ObjectBag(morpher.from()).valueOf();Object.assign(oldFromAttrs,addedFromAttrs);morpher.from(oldFromAttrs)}const oldToAttrs=new ObjectBag(morpher.to()).valueOf();Object.assign(oldToAttrs,newToAttrs);morpher.to(oldToAttrs);keys=newKeys;attrs=newToAttrs});this._rememberMorpher(type,morpher);return this},zoom(level,point){if(this._tryRetarget("zoom",level,point))return this;let morpher=new Morphable(this._stepper).to(new SVGNumber(level));this.queue(function(){morpher=morpher.from(this.element().zoom())},function(pos){this.element().zoom(morpher.at(pos),point);return morpher.done()},function(newLevel,newPoint){point=newPoint;morpher.to(newLevel)});this._rememberMorpher("zoom",morpher);return this},transform(transforms,relative,affine){relative=transforms.relative||relative;if(this._isDeclarative&&!relative&&this._tryRetarget("transform",transforms)){return this}const isMatrix=Matrix.isMatrixLike(transforms);affine=transforms.affine!=null?transforms.affine:affine!=null?affine:!isMatrix;const morpher=new Morphable(this._stepper).type(affine?TransformBag:Matrix);let origin;let element;let current;let currentAngle;let startTransform;function setup(){element=element||this.element();origin=origin||getOrigin(transforms,element);startTransform=new Matrix(relative?undefined:element);element._addRunner(this);if(!relative){element._clearTransformRunnersBefore(this)}}function run(pos){if(!relative)this.clearTransform();const{x,y}=new Point(origin).transform(element._currentTransform(this));let target=new Matrix({...transforms,origin:[x,y]});let start=this._isDeclarative&¤t?current:startTransform;if(affine){target=target.decompose(x,y);start=start.decompose(x,y);const rTarget=target.rotate;const rCurrent=start.rotate;const possibilities=[rTarget-360,rTarget,rTarget+360];const distances=possibilities.map(a=>Math.abs(a-rCurrent));const shortest=Math.min(...distances);const index=distances.indexOf(shortest);target.rotate=possibilities[index]}if(relative){if(!isMatrix){target.rotate=transforms.rotate||0}if(this._isDeclarative&¤tAngle){start.rotate=currentAngle}}morpher.from(start);morpher.to(target);const affineParameters=morpher.at(pos);currentAngle=affineParameters.rotate;current=new Matrix(affineParameters);this.addTransform(current);element._addRunner(this);return morpher.done()}function retarget(newTransforms){if((newTransforms.origin||"center").toString()!==(transforms.origin||"center").toString()){origin=getOrigin(newTransforms,element)}transforms={...newTransforms,origin:origin}}this.queue(setup,run,retarget,true);this._isDeclarative&&this._rememberMorpher("transform",morpher);return this},x(x,relative){return this._queueNumber("x",x)},y(y){return this._queueNumber("y",y)},dx(x=0){return this._queueNumberDelta("x",x)},dy(y=0){return this._queueNumberDelta("y",y)},dmove(x,y){return this.dx(x).dy(y)},_queueNumberDelta(method,to){to=new SVGNumber(to);if(this._tryRetarget(method,to))return this;const morpher=new Morphable(this._stepper).to(to);let from=null;this.queue(function(){from=this.element()[method]();morpher.from(from);morpher.to(from+to)},function(pos){this.element()[method](morpher.at(pos));return morpher.done()},function(newTo){morpher.to(from+new SVGNumber(newTo))});this._rememberMorpher(method,morpher);return this},_queueObject(method,to){if(this._tryRetarget(method,to))return this;const morpher=new Morphable(this._stepper).to(to);this.queue(function(){morpher.from(this.element()[method]())},function(pos){this.element()[method](morpher.at(pos));return morpher.done()});this._rememberMorpher(method,morpher);return this},_queueNumber(method,value){return this._queueObject(method,new SVGNumber(value))},cx(x){return this._queueNumber("cx",x)},cy(y){return this._queueNumber("cy",y)},move(x,y){return this.x(x).y(y)},center(x,y){return this.cx(x).cy(y)},size(width,height){let box;if(!width||!height){box=this._element.bbox()}if(!width){width=box.width/box.height*height}if(!height){height=box.height/box.width*width}return this.width(width).height(height)},width(width){return this._queueNumber("width",width)},height(height){return this._queueNumber("height",height)},plot(a,b,c,d){if(arguments.length===4){return this.plot([a,b,c,d])}if(this._tryRetarget("plot",a))return this;const morpher=new Morphable(this._stepper).type(this._element.MorphArray).to(a);this.queue(function(){morpher.from(this._element.array())},function(pos){this._element.plot(morpher.at(pos));return morpher.done()});this._rememberMorpher("plot",morpher);return this},leading(value){return this._queueNumber("leading",value)},viewbox(x,y,width,height){return this._queueObject("viewbox",new Box(x,y,width,height))},update(o){if(typeof o!=="object"){return this.update({offset:arguments[0],color:arguments[1],opacity:arguments[2]})}if(o.opacity!=null)this.attr("stop-opacity",o.opacity);if(o.color!=null)this.attr("stop-color",o.color);if(o.offset!=null)this.attr("offset",o.offset);return this}});extend(Runner,{rx:rx,ry:ry,from:from,to:to});register(Runner,"Runner");class Svg extends Container{constructor(node,attrs=node){super(nodeOrNew("svg",node),attrs);this.namespace()}defs(){if(!this.isRoot())return this.root().defs();return adopt(this.node.querySelector("defs"))||this.put(new Defs)}isRoot(){return!this.node.parentNode||!(this.node.parentNode instanceof globals.window.SVGElement)&&this.node.parentNode.nodeName!=="#document-fragment"}namespace(){if(!this.isRoot())return this.root().namespace();return this.attr({xmlns:svg,version:"1.1"}).attr("xmlns:xlink",xlink,xmlns).attr("xmlns:svgjs",svgjs,xmlns)}removeNamespace(){return this.attr({xmlns:null,version:null}).attr("xmlns:xlink",null,xmlns).attr("xmlns:svgjs",null,xmlns)}root(){if(this.isRoot())return this;return super.root()}}registerMethods({Container:{nested:wrapWithAttrCheck(function(){return this.put(new Svg)})}});register(Svg,"Svg",true);class Symbol extends Container{constructor(node,attrs=node){super(nodeOrNew("symbol",node),attrs)}}registerMethods({Container:{symbol:wrapWithAttrCheck(function(){return this.put(new Symbol)})}});register(Symbol,"Symbol");function plain(text){if(this._build===false){this.clear()}this.node.appendChild(globals.document.createTextNode(text));return this}function length(){return this.node.getComputedTextLength()}function x$1(x,box=this.bbox()){if(x==null){return box.x}return this.attr("x",this.attr("x")+x-box.x)}function y$1(y,box=this.bbox()){if(y==null){return box.y}return this.attr("y",this.attr("y")+y-box.y)}function move$1(x,y,box=this.bbox()){return this.x(x,box).y(y,box)}function cx(x,box=this.bbox()){if(x==null){return box.cx}return this.attr("x",this.attr("x")+x-box.cx)}function cy(y,box=this.bbox()){if(y==null){return box.cy}return this.attr("y",this.attr("y")+y-box.cy)}function center(x,y,box=this.bbox()){return this.cx(x,box).cy(y,box)}function ax(x){return this.attr("x",x)}function ay(y){return this.attr("y",y)}function amove(x,y){return this.ax(x).ay(y)}function build(build){this._build=!!build;return this}var textable={__proto__:null,plain:plain,length:length,x:x$1,y:y$1,move:move$1,cx:cx,cy:cy,center:center,ax:ax,ay:ay,amove:amove,build:build};class Text extends Shape{constructor(node,attrs=node){super(nodeOrNew("text",node),attrs);this.dom.leading=new SVGNumber(1.3);this._rebuild=true;this._build=false}leading(value){if(value==null){return this.dom.leading}this.dom.leading=new SVGNumber(value);return this.rebuild()}rebuild(rebuild){if(typeof rebuild==="boolean"){this._rebuild=rebuild}if(this._rebuild){const self=this;let blankLineOffset=0;const leading=this.dom.leading;this.each(function(i){const fontSize=globals.window.getComputedStyle(this.node).getPropertyValue("font-size");const dy=leading*new SVGNumber(fontSize);if(this.dom.newLined){this.attr("x",self.attr("x"));if(this.text()==="\n"){blankLineOffset+=dy}else{this.attr("dy",i?dy+blankLineOffset:0);blankLineOffset=0}}});this.fire("rebuild")}return this}setData(o){this.dom=o;this.dom.leading=new SVGNumber(o.leading||1.3);return this}text(text){if(text===undefined){const children=this.node.childNodes;let firstLine=0;text="";for(let i=0,len=children.length;i{let bbox;try{bbox=child.bbox()}catch(e){return}const m=new Matrix(child);const matrix=m.translate(dx,dy).transform(m.inverse());const p=new Point(bbox.x,bbox.y).transform(matrix);child.move(p.x,p.y)});return this}function dx(dx){return this.dmove(dx,0)}function dy(dy){return this.dmove(0,dy)}function height(height,box=this.bbox()){if(height==null)return box.height;return this.size(box.width,height,box)}function move(x=0,y=0,box=this.bbox()){const dx=x-box.x;const dy=y-box.y;return this.dmove(dx,dy)}function size(width,height,box=this.bbox()){const p=proportionalSize(this,width,height,box);const scaleX=p.width/box.width;const scaleY=p.height/box.height;this.children().forEach((child,i)=>{const o=new Point(box).transform(new Matrix(child).inverse());child.scale(scaleX,scaleY,o.x,o.y)});return this}function width(width,box=this.bbox()){if(width==null)return box.width;return this.size(width,box.height,box)}function x(x,box=this.bbox()){if(x==null)return box.x;return this.move(x,box.y,box)}function y(y,box=this.bbox()){if(y==null)return box.y;return this.move(box.x,y,box)}var containerGeometry={__proto__:null,dmove:dmove,dx:dx,dy:dy,height:height,move:move,size:size,width:width,x:x,y:y};class G extends Container{constructor(node,attrs=node){super(nodeOrNew("g",node),attrs)}}extend(G,containerGeometry);registerMethods({Container:{group:wrapWithAttrCheck(function(){return this.put(new G)})}});register(G,"G");class A extends Container{constructor(node,attrs=node){super(nodeOrNew("a",node),attrs)}target(target){return this.attr("target",target)}to(url){return this.attr("href",url,xlink)}}extend(A,containerGeometry);registerMethods({Container:{link:wrapWithAttrCheck(function(url){return this.put(new A).to(url)})},Element:{unlink(){const link=this.linker();if(!link)return this;const parent=link.parent();if(!parent){return this.remove()}const index=parent.index(link);parent.add(this,index);link.remove();return this},linkTo(url){let link=this.linker();if(!link){link=new A;this.wrap(link)}if(typeof url==="function"){url.call(link,link)}else{link.to(url)}return this},linker(){const link=this.parent();if(link&&link.node.nodeName.toLowerCase()==="a"){return link}return null}}});register(A,"A");class Mask extends Container{constructor(node,attrs=node){super(nodeOrNew("mask",node),attrs)}remove(){this.targets().forEach(function(el){el.unmask()});return super.remove()}targets(){return baseFind('svg [mask*="'+this.id()+'"]')}}registerMethods({Container:{mask:wrapWithAttrCheck(function(){return this.defs().put(new Mask)})},Element:{masker(){return this.reference("mask")},maskWith(element){const masker=element instanceof Mask?element:this.parent().mask().add(element);return this.attr("mask",'url("#'+masker.id()+'")')},unmask(){return this.attr("mask",null)}}});register(Mask,"Mask");class Stop extends Element{constructor(node,attrs=node){super(nodeOrNew("stop",node),attrs)}update(o){if(typeof o==="number"||o instanceof SVGNumber){o={offset:arguments[0],color:arguments[1],opacity:arguments[2]}}if(o.opacity!=null)this.attr("stop-opacity",o.opacity);if(o.color!=null)this.attr("stop-color",o.color);if(o.offset!=null)this.attr("offset",new SVGNumber(o.offset));return this}}registerMethods({Gradient:{stop:function(offset,color,opacity){return this.put(new Stop).update(offset,color,opacity)}}});register(Stop,"Stop");function cssRule(selector,rule){if(!selector)return"";if(!rule)return selector;let ret=selector+"{";for(const i in rule){ret+=unCamelCase(i)+":"+rule[i]+";"}ret+="}";return ret}class Style extends Element{constructor(node,attrs=node){super(nodeOrNew("style",node),attrs)}addText(w=""){this.node.textContent+=w;return this}font(name,src,params={}){return this.rule("@font-face",{fontFamily:name,src:src,...params})}rule(selector,obj){return this.addText(cssRule(selector,obj))}}registerMethods("Dom",{style(selector,obj){return this.put(new Style).rule(selector,obj)},fontface(name,src,params){return this.put(new Style).font(name,src,params)}});register(Style,"Style");class TextPath extends Text{constructor(node,attrs=node){super(nodeOrNew("textPath",node),attrs)}array(){const track=this.track();return track?track.array():null}plot(d){const track=this.track();let pathArray=null;if(track){pathArray=track.plot(d)}return d==null?pathArray:this}track(){return this.reference("href")}}registerMethods({Container:{textPath:wrapWithAttrCheck(function(text,path){if(!(text instanceof Text)){text=this.text(text)}return text.path(path)})},Text:{path:wrapWithAttrCheck(function(track,importNodes=true){const textPath=new TextPath;if(!(track instanceof Path)){track=this.defs().path(track)}textPath.attr("href","#"+track,xlink);let node;if(importNodes){while(node=this.node.firstChild){textPath.node.appendChild(node)}}return this.put(textPath)}),textPath(){return this.findOne("textPath")}},Path:{text:wrapWithAttrCheck(function(text){if(!(text instanceof Text)){text=(new Text).addTo(this.parent()).text(text)}return text.path(this)}),targets(){return baseFind("svg textPath").filter(node=>{return(node.attr("href")||"").includes(this.id())})}}});TextPath.prototype.MorphArray=PathArray;register(TextPath,"TextPath");class Use extends Shape{constructor(node,attrs=node){super(nodeOrNew("use",node),attrs)}use(element,file){return this.attr("href",(file||"")+"#"+element,xlink)}}registerMethods({Container:{use:wrapWithAttrCheck(function(element,file){return this.put(new Use).use(element,file)})}});register(Use,"Use");const SVG$1=makeInstance;extend([Svg,Symbol,Image,Pattern,Marker],getMethodsFor("viewbox"));extend([Line,Polyline,Polygon,Path],getMethodsFor("marker"));extend(Text,getMethodsFor("Text"));extend(Path,getMethodsFor("Path"));extend(Defs,getMethodsFor("Defs"));extend([Text,Tspan],getMethodsFor("Tspan"));extend([Rect,Ellipse,Gradient,Runner],getMethodsFor("radius"));extend(EventTarget,getMethodsFor("EventTarget"));extend(Dom,getMethodsFor("Dom"));extend(Element,getMethodsFor("Element"));extend(Shape,getMethodsFor("Shape"));extend([Container,Fragment],getMethodsFor("Container"));extend(Gradient,getMethodsFor("Gradient"));extend(Runner,getMethodsFor("Runner"));List.extend(getMethodNames());registerMorphableType([SVGNumber,Color,Box,Matrix,SVGArray,PointArray,PathArray,Point]);makeMorphable();var svgMembers={__proto__:null,Morphable:Morphable,registerMorphableType:registerMorphableType,makeMorphable:makeMorphable,TransformBag:TransformBag,ObjectBag:ObjectBag,NonMorphable:NonMorphable,defaults:defaults,utils:utils,namespaces:namespaces,regex:regex,SVG:SVG$1,parser:parser,find:baseFind,getWindow:getWindow,registerWindow:registerWindow,restoreWindow:restoreWindow,saveWindow:saveWindow,withWindow:withWindow,Animator:Animator,Controller:Controller,Ease:Ease,PID:PID,Spring:Spring,easing:easing,Queue:Queue,Runner:Runner,Timeline:Timeline,Array:SVGArray,Box:Box,Color:Color,EventTarget:EventTarget,Matrix:Matrix,Number:SVGNumber,PathArray:PathArray,Point:Point,PointArray:PointArray,List:List,Circle:Circle,ClipPath:ClipPath,Container:Container,Defs:Defs,Dom:Dom,Element:Element,Ellipse:Ellipse,ForeignObject:ForeignObject,Fragment:Fragment,Gradient:Gradient,G:G,A:A,Image:Image,Line:Line,Marker:Marker,Mask:Mask,Path:Path,Pattern:Pattern,Polygon:Polygon,Polyline:Polyline,Rect:Rect,Shape:Shape,Stop:Stop,Style:Style,Svg:Svg,Symbol:Symbol,Text:Text,TextPath:TextPath,Tspan:Tspan,Use:Use,windowEvents:windowEvents,getEvents:getEvents,getEventTarget:getEventTarget,clearEvents:clearEvents,on:on,off:off,dispatch:dispatch,root:root,create:create,makeInstance:makeInstance,nodeOrNew:nodeOrNew,adopt:adopt,mockAdopt:mockAdopt,register:register,getClass:getClass,eid:eid,assignNewId:assignNewId,extend:extend,wrapWithAttrCheck:wrapWithAttrCheck};function SVG(element,isHTML){return makeInstance(element,isHTML)}Object.assign(SVG,svgMembers);return SVG}(); +/*! + @licstart The following is the entire license notice for the JavaScript code in this file. + The code below is based on SVGPan Library 1.2 and was modified for doxygen + to support both zooming and panning via the mouse and via embedded buttons. + + This code is licensed under the following BSD license: + + Copyright 2009-2010 Andrea Leofreddi . All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, are + permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY Andrea Leofreddi ``AS IS'' AND ANY EXPRESS OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Andrea Leofreddi OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + The views and conclusions contained in the software and documentation are those of the + authors and should not be interpreted as representing official policies, either expressed + or implied, of Andrea Leofreddi. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +var root=document.documentElement;var state="none";var stateOrigin;var stateTf=root.createSVGMatrix();var cursorGrab=' url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAMAAAAolt3jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAlQTFRFAAAA////////c3ilYwAAAAN0Uk5T//8A18oNQQAAAD1JREFUeNp0zlEKACAIA9Bt9z90bZBZkQj29qFBEuBOzQHSnWTTyckEfqUuZgFvslH4ch3qLCO/Kr8cAgwATw4Ax6XRCcoAAAAASUVORK5CYII="), move';var zoomSteps=10;var zoomInFactor;var zoomOutFactor;var windowWidth;var windowHeight;var svgDoc;var minZoom;var maxZoom;if(!window)window=this;function show(){if(window.innerHeight){windowWidth=window.innerWidth;windowHeight=window.innerHeight}else if(document.documentElement.clientWidth){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight}if(!windowWidth||!windowHeight){windowWidth=800;windowHeight=600}minZoom=Math.min(Math.min(viewHeight,windowHeight)/viewHeight,Math.min(viewWidth,windowWidth)/viewWidth);maxZoom=minZoom+1.5;zoomInFactor=Math.pow(maxZoom/minZoom,1/zoomSteps);zoomOutFactor=1/zoomInFactor;var g=svgDoc.getElementById("viewport");try{var bb=g.getBBox();var tx=(windowWidth-viewWidth*minZoom+8)/(2*minZoom);var ty=viewHeight+(windowHeight-viewHeight*minZoom)/(2*minZoom);var a="scale("+minZoom+") rotate(0) translate("+tx+" "+ty+")";g.setAttribute("transform",a)}catch(e){}}function init(evt){svgDoc=evt.target.ownerDocument;try{if(top.window&&top.window.registerShow){top.window.registerShow(sectionId,show)}}catch(e){}show();setAttributes(root,{onmousedown:"handleMouseDown(evt)",onmousemove:"handleMouseMove(evt)",onmouseup:"handleMouseUp(evt)"});if(window.addEventListener){if(navigator.userAgent.toLowerCase().indexOf("webkit")>=0||navigator.userAgent.toLowerCase().indexOf("opera")>=0||navigator.appVersion.indexOf("MSIE")!=-1){window.addEventListener("mousewheel",handleMouseWheel,false)}else{window.addEventListener("DOMMouseScroll",handleMouseWheel,false)}}}window.onresize=function(){if(svgDoc){show()}};function getEventPoint(evt){var p=root.createSVGPoint();p.x=evt.clientX;p.y=evt.clientY;return p}function setCTM(element,matrix){var s="matrix("+matrix.a+","+matrix.b+","+matrix.c+","+matrix.d+","+matrix.e+","+matrix.f+")";element.setAttribute("transform",s)}function setAttributes(element,attributes){for(i in attributes)element.setAttributeNS(null,i,attributes[i])}function doZoom(g,point,zoomFactor){var p=point.matrixTransform(g.getCTM().inverse());var k=root.createSVGMatrix().translate(p.x,p.y).scale(zoomFactor).translate(-p.x,-p.y);var n=g.getCTM().multiply(k);var s=Math.max(n.a,n.d);if(s>maxZoom)n=n.translate(p.x,p.y).scale(maxZoom/s).translate(-p.x,-p.y);else if(s');d.write("Print SVG");d.write('');d.write('
    '+xs+"
    ");d.write("");d.write("");d.close()}catch(e){alert("Failed to open popup window needed for printing!\n"+e.message)}}function highlightEdges(){var elems=document.getElementsByTagName("g");if(elems){for(var i=0;i g");function findEnclosingG(domEl){let curEl=domEl;while(curEl.nodeName!="g"||curEl.id.substr(0,4)!="Node"){curEl=curEl.parentElement}return curEl}function onMouseOverElem(domEl){let e=SVG(findEnclosingG(domEl.target));walk(s,e=>{if(SVG(e)!=s)SVG(e).attr("data-mouse-over-selected","false")});walk(e,e=>SVG(e).attr("data-mouse-over-selected","true"));let{nodes,edges}=getEdgesAndDistance1Nodes(SVG(e),s);for(let node of nodes){walk(node,e=>SVG(e).attr("data-mouse-over-selected","true"))}for(let edge of edges){walk(edge,e=>SVG(e).attr("data-mouse-over-selected","true"))}}function onMouseOutElem(domEl){let e=SVG(findEnclosingG(domEl.target));walk(s,e=>e.attr("data-mouse-over-selected",null))}let gs=s.find("g[id^=Node]");for(let g of gs){g.on("mouseover",onMouseOverElem);g.on("mouseout",onMouseOutElem)}} diff --git a/docs/html/sync_off.png b/docs/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/docs/html/sync_on.png b/docs/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/docs/html/tab_a.png b/docs/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/docs/html/tab_ad.png b/docs/html/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/docs/html/tab_s.png b/docs/html/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/docs/html/tab_sd.png b/docs/html/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/docs/html/tabs.css b/docs/html/tabs.css new file mode 100644 index 0000000..edbb424 --- /dev/null +++ b/docs/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#364D7C;-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:url('tab_b.png')}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255, 255, 255, 0.9);color:#283A5D;outline:0}.sm-dox a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255, 255, 255, 0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:white}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url('tab_b.png');line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url('tab_s.png');background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent white transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:white;-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555555;background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:white;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url('tab_b.png')}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:white}} diff --git a/docs/html/topology_8cpp.html b/docs/html/topology_8cpp.html new file mode 100644 index 0000000..471e004 --- /dev/null +++ b/docs/html/topology_8cpp.html @@ -0,0 +1,147 @@ + + + + + + + +stroid: src/lib/topology/topology.cpp File Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    stroid v0.1.0 +
    +
    Multi-block curvilinear mesh generation
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    topology.cpp File Reference
    +
    +
    +
    #include "mfem.hpp"
    +#include <vector>
    +#include <memory>
    +#include "stroid/config/config.h"
    +#include "fourdst/config/config.h"
    +
    +Include dependency graph for topology.cpp:
    +
    +
    +
    +
    + + + + + +

    +Namespaces

    namespace  stroid
     
    namespace  stroid::topology
     
    + + + + + + + +

    +Functions

    std::unique_ptr< mfem::Mesh > stroid::topology::BuildSkeleton (const fourdst::config::Config< config::MeshConfig > &config)
     Build the initial multi-block mesh topology for the star model.
     
    void stroid::topology::Finalize (mfem::Mesh &mesh, const fourdst::config::Config< config::MeshConfig > &config)
     Finalize topology, validate orientation, and apply uniform refinement.
     
    +
    +
    + + + + diff --git a/docs/html/topology_8cpp.js b/docs/html/topology_8cpp.js new file mode 100644 index 0000000..cddb0f2 --- /dev/null +++ b/docs/html/topology_8cpp.js @@ -0,0 +1,5 @@ +var topology_8cpp = +[ + [ "stroid::topology::BuildSkeleton", "namespacestroid_1_1topology.html#abc0d8a1fb8e9c5ac0e259e4c93db7892", null ], + [ "stroid::topology::Finalize", "namespacestroid_1_1topology.html#a62774bcba7ea1a485892dcd4bed6425b", null ] +]; \ No newline at end of file diff --git a/docs/html/topology_8cpp__incl.map b/docs/html/topology_8cpp__incl.map new file mode 100644 index 0000000..8896ed3 --- /dev/null +++ b/docs/html/topology_8cpp__incl.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/docs/html/topology_8cpp__incl.md5 b/docs/html/topology_8cpp__incl.md5 new file mode 100644 index 0000000..05c9694 --- /dev/null +++ b/docs/html/topology_8cpp__incl.md5 @@ -0,0 +1 @@ +9579b4c4c61aad1700ed9ec77f8cef0d \ No newline at end of file diff --git a/docs/html/topology_8cpp__incl.svg b/docs/html/topology_8cpp__incl.svg new file mode 100644 index 0000000..4a9b3df --- /dev/null +++ b/docs/html/topology_8cpp__incl.svg @@ -0,0 +1,137 @@ + + + + + + + + + + + + +src/lib/topology/topology.cpp + + +Node1 + + +src/lib/topology/topology.cpp + + + + + +Node2 + + +mfem.hpp + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +vector + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +memory + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +stroid/config/config.h + + + + + +Node1->Node5 + + + + + + + + +Node6 + + +fourdst/config/config.h + + + + + +Node1->Node6 + + + + + + + + + + + + + diff --git a/docs/html/topology_8cpp__incl_org.svg b/docs/html/topology_8cpp__incl_org.svg new file mode 100644 index 0000000..40a8d08 --- /dev/null +++ b/docs/html/topology_8cpp__incl_org.svg @@ -0,0 +1,111 @@ + + + + + + +src/lib/topology/topology.cpp + + +Node1 + + +src/lib/topology/topology.cpp + + + + + +Node2 + + +mfem.hpp + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +vector + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +memory + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +stroid/config/config.h + + + + + +Node1->Node5 + + + + + + + + +Node6 + + +fourdst/config/config.h + + + + + +Node1->Node6 + + + + + + + + diff --git a/docs/html/topology_8h.html b/docs/html/topology_8h.html new file mode 100644 index 0000000..9bfe801 --- /dev/null +++ b/docs/html/topology_8h.html @@ -0,0 +1,146 @@ + + + + + + + +stroid: src/include/stroid/topology/topology.h File Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    stroid v0.1.0 +
    +
    Multi-block curvilinear mesh generation
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    topology.h File Reference
    +
    +
    +
    #include "mfem.hpp"
    +#include "stroid/config/config.h"
    +#include "fourdst/config/config.h"
    +#include <memory>
    +
    +Include dependency graph for topology.h:
    +
    +
    +
    +
    + + + + + +

    +Namespaces

    namespace  stroid
     
    namespace  stroid::topology
     
    + + + + + + + +

    +Functions

    std::unique_ptr< mfem::Mesh > stroid::topology::BuildSkeleton (const fourdst::config::Config< config::MeshConfig > &config)
     Build the initial multi-block mesh topology for the star model.
     
    void stroid::topology::Finalize (mfem::Mesh &mesh, const fourdst::config::Config< config::MeshConfig > &config)
     Finalize topology, validate orientation, and apply uniform refinement.
     
    +
    +
    + + + + diff --git a/docs/html/topology_8h.js b/docs/html/topology_8h.js new file mode 100644 index 0000000..7e932b7 --- /dev/null +++ b/docs/html/topology_8h.js @@ -0,0 +1,5 @@ +var topology_8h = +[ + [ "stroid::topology::BuildSkeleton", "namespacestroid_1_1topology.html#abc0d8a1fb8e9c5ac0e259e4c93db7892", null ], + [ "stroid::topology::Finalize", "namespacestroid_1_1topology.html#a62774bcba7ea1a485892dcd4bed6425b", null ] +]; \ No newline at end of file diff --git a/docs/html/topology_8h__incl.map b/docs/html/topology_8h__incl.map new file mode 100644 index 0000000..878a986 --- /dev/null +++ b/docs/html/topology_8h__incl.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/topology_8h__incl.md5 b/docs/html/topology_8h__incl.md5 new file mode 100644 index 0000000..1bd48fe --- /dev/null +++ b/docs/html/topology_8h__incl.md5 @@ -0,0 +1 @@ +b2a69d423ae47906416c55db34906c94 \ No newline at end of file diff --git a/docs/html/topology_8h__incl.svg b/docs/html/topology_8h__incl.svg new file mode 100644 index 0000000..0bae36e --- /dev/null +++ b/docs/html/topology_8h__incl.svg @@ -0,0 +1,120 @@ + + + + + + + + + + + + +src/include/stroid/topology/topology.h + + +Node1 + + +src/include/stroid +/topology/topology.h + + + + + +Node2 + + +mfem.hpp + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +stroid/config/config.h + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +fourdst/config/config.h + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +memory + + + + + +Node1->Node5 + + + + + + + + + + + + + diff --git a/docs/html/topology_8h__incl_org.svg b/docs/html/topology_8h__incl_org.svg new file mode 100644 index 0000000..39c51a1 --- /dev/null +++ b/docs/html/topology_8h__incl_org.svg @@ -0,0 +1,94 @@ + + + + + + +src/include/stroid/topology/topology.h + + +Node1 + + +src/include/stroid +/topology/topology.h + + + + + +Node2 + + +mfem.hpp + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +stroid/config/config.h + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +fourdst/config/config.h + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +memory + + + + + +Node1->Node5 + + + + + + + +