From 12210c30ae44311ec15981389d5f89e9f67e42ba Mon Sep 17 00:00:00 2001 From: Miroslav Stoyanov Date: Thu, 15 Aug 2024 19:54:59 -0400 Subject: [PATCH] added the current page --- current/annotated.html | 134 ++ current/annotated_dup.js | 8 + current/asgard.css | 385 ++++ current/asgard_8hpp.html | 158 ++ current/asgard_8hpp.js | 7 + current/asgard_8hpp_source.html | 223 ++ current/asgard__discretization_8hpp.html | 157 ++ current/asgard__discretization_8hpp.js | 4 + .../asgard__discretization_8hpp_source.html | 363 +++ current/asgard__program__options_8hpp.html | 255 +++ current/asgard__program__options_8hpp.js | 62 + .../asgard__program__options_8hpp_source.html | 569 +++++ current/asgard__reconstruct_8hpp.html | 145 ++ current/asgard__reconstruct_8hpp_source.html | 229 ++ current/bc_s.png | Bin 0 -> 679 bytes current/bc_sd.png | Bin 0 -> 516 bytes ...rd_1_1discretization__manager-members.html | 147 ++ ...lassasgard_1_1discretization__manager.html | 272 +++ .../classasgard_1_1discretization__manager.js | 21 + ...gard_1_1reconstruct__solution-members.html | 135 ++ .../classasgard_1_1reconstruct__solution.html | 311 +++ .../classasgard_1_1reconstruct__solution.js | 9 + current/classes.html | 138 ++ current/closed.png | Bin 0 -> 136 bytes .../dir_4e8d938e9ddb5a617c200d5739d1f41a.html | 127 ++ .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 143 ++ .../dir_68267d1309a1af8e8297ef4c3efbcdba.js | 7 + current/doc.svg | 12 + current/docd.svg | 12 + current/doxygen.css | 2027 +++++++++++++++++ current/doxygen.svg | 28 + current/dynsections.js | 192 ++ current/files.html | 135 ++ current/files_dup.js | 4 + current/folderclosed.svg | 11 + current/folderclosedd.svg | 11 + current/folderopen.svg | 17 + current/folderopend.svg | 12 + current/functions.html | 246 ++ current/functions_func.html | 204 ++ current/functions_vars.html | 153 ++ current/graph_legend.html | 186 ++ current/graph_legend.md5 | 1 + current/graph_legend.png | Bin 0 -> 23378 bytes current/group__asgard__common__options.html | 401 ++++ current/group__asgard__common__options.js | 72 + current/group__asgard__discretization.html | 323 +++ current/group__asgard__discretization.js | 29 + current/group__asgard__postprocess.html | 145 ++ current/group__asgard__postprocess.js | 12 + current/index.html | 167 ++ current/index.js | 6 + current/jquery.js | 34 + current/md_doxygen_2basic__usage.html | 162 ++ current/md_doxygen_2installation.html | 219 ++ current/menu.js | 136 ++ current/menudata.js | 65 + current/minus.svg | 8 + current/minusd.svg | 8 + current/nav_f.png | Bin 0 -> 165 bytes current/nav_fd.png | Bin 0 -> 130 bytes current/nav_g.png | Bin 0 -> 95 bytes current/nav_h.png | Bin 0 -> 100 bytes current/nav_hd.png | Bin 0 -> 87 bytes current/navtree.css | 149 ++ current/navtree.js | 559 +++++ current/navtreedata.js | 53 + current/navtreeindex0.js | 117 + current/open.png | Bin 0 -> 120 bytes current/pages.html | 132 ++ current/plus.svg | 9 + current/plusd.svg | 9 + current/resize.js | 155 ++ current/search/all_0.js | 20 + current/search/all_1.js | 5 + current/search/all_10.js | 9 + current/search/all_11.js | 26 + current/search/all_12.js | 9 + current/search/all_13.js | 5 + current/search/all_14.js | 4 + current/search/all_15.js | 5 + current/search/all_16.js | 4 + current/search/all_2.js | 11 + current/search/all_3.js | 15 + current/search/all_4.js | 6 + current/search/all_5.js | 5 + current/search/all_6.js | 9 + current/search/all_7.js | 4 + current/search/all_8.js | 12 + current/search/all_9.js | 5 + current/search/all_a.js | 6 + current/search/all_b.js | 9 + current/search/all_c.js | 6 + current/search/all_d.js | 7 + current/search/all_e.js | 15 + current/search/all_f.js | 4 + current/search/classes_0.js | 4 + current/search/classes_1.js | 4 + current/search/classes_2.js | 4 + current/search/close.svg | 18 + current/search/enums_0.js | 4 + current/search/enums_1.js | 4 + current/search/enums_2.js | 4 + current/search/enums_3.js | 4 + current/search/enums_4.js | 4 + current/search/enums_5.js | 4 + current/search/enums_6.js | 4 + current/search/enumvalues_0.js | 4 + current/search/enumvalues_1.js | 5 + current/search/enumvalues_2.js | 4 + current/search/enumvalues_3.js | 4 + current/search/enumvalues_4.js | 4 + current/search/enumvalues_5.js | 5 + current/search/enumvalues_6.js | 5 + current/search/enumvalues_7.js | 4 + current/search/enumvalues_8.js | 4 + current/search/enumvalues_9.js | 5 + current/search/files_0.js | 7 + current/search/functions_0.js | 5 + current/search/functions_1.js | 7 + current/search/functions_2.js | 8 + current/search/functions_3.js | 4 + current/search/functions_4.js | 5 + current/search/functions_5.js | 5 + current/search/functions_6.js | 4 + current/search/functions_7.js | 5 + current/search/functions_8.js | 4 + current/search/functions_9.js | 9 + current/search/functions_a.js | 6 + current/search/functions_b.js | 11 + current/search/functions_c.js | 5 + current/search/groups_0.js | 6 + current/search/groups_1.js | 4 + current/search/groups_2.js | 4 + current/search/groups_3.js | 4 + current/search/groups_4.js | 5 + current/search/groups_5.js | 4 + current/search/mag.svg | 24 + current/search/mag_d.svg | 24 + current/search/mag_sel.svg | 31 + current/search/mag_seld.svg | 31 + current/search/pages_0.js | 5 + current/search/pages_1.js | 4 + current/search/pages_2.js | 4 + current/search/pages_3.js | 4 + current/search/pages_4.js | 4 + current/search/pages_5.js | 4 + current/search/pages_6.js | 4 + current/search/search.css | 291 +++ current/search/search.js | 840 +++++++ current/search/searchdata.js | 39 + current/search/variables_0.js | 5 + current/search/variables_1.js | 5 + current/search/variables_2.js | 4 + current/search/variables_3.js | 4 + current/search/variables_4.js | 7 + current/search/variables_5.js | 4 + current/search/variables_6.js | 6 + current/search/variables_7.js | 4 + current/search/variables_8.js | 4 + current/search/variables_9.js | 4 + current/search/variables_a.js | 4 + current/search/variables_b.js | 11 + current/search/variables_c.js | 4 + current/search/variables_d.js | 4 + current/splitbar.png | Bin 0 -> 314 bytes current/splitbard.png | Bin 0 -> 264 bytes .../structasgard_1_1prog__opts-members.html | 169 ++ current/structasgard_1_1prog__opts.html | 368 +++ current/structasgard_1_1prog__opts.js | 40 + current/sync_off.png | Bin 0 -> 860 bytes current/sync_on.png | Bin 0 -> 846 bytes current/tab_a.png | Bin 0 -> 132 bytes current/tab_ad.png | Bin 0 -> 115 bytes current/tab_b.png | Bin 0 -> 187 bytes current/tab_bd.png | Bin 0 -> 129 bytes current/tab_h.png | Bin 0 -> 191 bytes current/tab_hd.png | Bin 0 -> 151 bytes current/tab_s.png | Bin 0 -> 201 bytes current/tab_sd.png | Bin 0 -> 139 bytes current/tabs.css | 1 + current/topics.html | 133 ++ current/topics.js | 6 + 183 files changed, 12741 insertions(+) create mode 100644 current/annotated.html create mode 100644 current/annotated_dup.js create mode 100644 current/asgard.css create mode 100644 current/asgard_8hpp.html create mode 100644 current/asgard_8hpp.js create mode 100644 current/asgard_8hpp_source.html create mode 100644 current/asgard__discretization_8hpp.html create mode 100644 current/asgard__discretization_8hpp.js create mode 100644 current/asgard__discretization_8hpp_source.html create mode 100644 current/asgard__program__options_8hpp.html create mode 100644 current/asgard__program__options_8hpp.js create mode 100644 current/asgard__program__options_8hpp_source.html create mode 100644 current/asgard__reconstruct_8hpp.html create mode 100644 current/asgard__reconstruct_8hpp_source.html create mode 100644 current/bc_s.png create mode 100644 current/bc_sd.png create mode 100644 current/classasgard_1_1discretization__manager-members.html create mode 100644 current/classasgard_1_1discretization__manager.html create mode 100644 current/classasgard_1_1discretization__manager.js create mode 100644 current/classasgard_1_1reconstruct__solution-members.html create mode 100644 current/classasgard_1_1reconstruct__solution.html create mode 100644 current/classasgard_1_1reconstruct__solution.js create mode 100644 current/classes.html create mode 100644 current/closed.png create mode 100644 current/dir_4e8d938e9ddb5a617c200d5739d1f41a.html create mode 100644 current/dir_68267d1309a1af8e8297ef4c3efbcdba.html create mode 100644 current/dir_68267d1309a1af8e8297ef4c3efbcdba.js create mode 100644 current/doc.svg create mode 100644 current/docd.svg create mode 100644 current/doxygen.css create mode 100644 current/doxygen.svg create mode 100644 current/dynsections.js create mode 100644 current/files.html create mode 100644 current/files_dup.js create mode 100644 current/folderclosed.svg create mode 100644 current/folderclosedd.svg create mode 100644 current/folderopen.svg create mode 100644 current/folderopend.svg create mode 100644 current/functions.html create mode 100644 current/functions_func.html create mode 100644 current/functions_vars.html create mode 100644 current/graph_legend.html create mode 100644 current/graph_legend.md5 create mode 100644 current/graph_legend.png create mode 100644 current/group__asgard__common__options.html create mode 100644 current/group__asgard__common__options.js create mode 100644 current/group__asgard__discretization.html create mode 100644 current/group__asgard__discretization.js create mode 100644 current/group__asgard__postprocess.html create mode 100644 current/group__asgard__postprocess.js create mode 100644 current/index.html create mode 100644 current/index.js create mode 100644 current/jquery.js create mode 100644 current/md_doxygen_2basic__usage.html create mode 100644 current/md_doxygen_2installation.html create mode 100644 current/menu.js create mode 100644 current/menudata.js create mode 100644 current/minus.svg create mode 100644 current/minusd.svg create mode 100644 current/nav_f.png create mode 100644 current/nav_fd.png create mode 100644 current/nav_g.png create mode 100644 current/nav_h.png create mode 100644 current/nav_hd.png create mode 100644 current/navtree.css create mode 100644 current/navtree.js create mode 100644 current/navtreedata.js create mode 100644 current/navtreeindex0.js create mode 100644 current/open.png create mode 100644 current/pages.html create mode 100644 current/plus.svg create mode 100644 current/plusd.svg create mode 100644 current/resize.js create mode 100644 current/search/all_0.js create mode 100644 current/search/all_1.js create mode 100644 current/search/all_10.js create mode 100644 current/search/all_11.js create mode 100644 current/search/all_12.js create mode 100644 current/search/all_13.js create mode 100644 current/search/all_14.js create mode 100644 current/search/all_15.js create mode 100644 current/search/all_16.js create mode 100644 current/search/all_2.js create mode 100644 current/search/all_3.js create mode 100644 current/search/all_4.js create mode 100644 current/search/all_5.js create mode 100644 current/search/all_6.js create mode 100644 current/search/all_7.js create mode 100644 current/search/all_8.js create mode 100644 current/search/all_9.js create mode 100644 current/search/all_a.js create mode 100644 current/search/all_b.js create mode 100644 current/search/all_c.js create mode 100644 current/search/all_d.js create mode 100644 current/search/all_e.js create mode 100644 current/search/all_f.js create mode 100644 current/search/classes_0.js create mode 100644 current/search/classes_1.js create mode 100644 current/search/classes_2.js create mode 100644 current/search/close.svg create mode 100644 current/search/enums_0.js create mode 100644 current/search/enums_1.js create mode 100644 current/search/enums_2.js create mode 100644 current/search/enums_3.js create mode 100644 current/search/enums_4.js create mode 100644 current/search/enums_5.js create mode 100644 current/search/enums_6.js create mode 100644 current/search/enumvalues_0.js create mode 100644 current/search/enumvalues_1.js create mode 100644 current/search/enumvalues_2.js create mode 100644 current/search/enumvalues_3.js create mode 100644 current/search/enumvalues_4.js create mode 100644 current/search/enumvalues_5.js create mode 100644 current/search/enumvalues_6.js create mode 100644 current/search/enumvalues_7.js create mode 100644 current/search/enumvalues_8.js create mode 100644 current/search/enumvalues_9.js create mode 100644 current/search/files_0.js create mode 100644 current/search/functions_0.js create mode 100644 current/search/functions_1.js create mode 100644 current/search/functions_2.js create mode 100644 current/search/functions_3.js create mode 100644 current/search/functions_4.js create mode 100644 current/search/functions_5.js create mode 100644 current/search/functions_6.js create mode 100644 current/search/functions_7.js create mode 100644 current/search/functions_8.js create mode 100644 current/search/functions_9.js create mode 100644 current/search/functions_a.js create mode 100644 current/search/functions_b.js create mode 100644 current/search/functions_c.js create mode 100644 current/search/groups_0.js create mode 100644 current/search/groups_1.js create mode 100644 current/search/groups_2.js create mode 100644 current/search/groups_3.js create mode 100644 current/search/groups_4.js create mode 100644 current/search/groups_5.js create mode 100644 current/search/mag.svg create mode 100644 current/search/mag_d.svg create mode 100644 current/search/mag_sel.svg create mode 100644 current/search/mag_seld.svg create mode 100644 current/search/pages_0.js create mode 100644 current/search/pages_1.js create mode 100644 current/search/pages_2.js create mode 100644 current/search/pages_3.js create mode 100644 current/search/pages_4.js create mode 100644 current/search/pages_5.js create mode 100644 current/search/pages_6.js create mode 100644 current/search/search.css create mode 100644 current/search/search.js create mode 100644 current/search/searchdata.js create mode 100644 current/search/variables_0.js create mode 100644 current/search/variables_1.js create mode 100644 current/search/variables_2.js create mode 100644 current/search/variables_3.js create mode 100644 current/search/variables_4.js create mode 100644 current/search/variables_5.js create mode 100644 current/search/variables_6.js create mode 100644 current/search/variables_7.js create mode 100644 current/search/variables_8.js create mode 100644 current/search/variables_9.js create mode 100644 current/search/variables_a.js create mode 100644 current/search/variables_b.js create mode 100644 current/search/variables_c.js create mode 100644 current/search/variables_d.js create mode 100644 current/splitbar.png create mode 100644 current/splitbard.png create mode 100644 current/structasgard_1_1prog__opts-members.html create mode 100644 current/structasgard_1_1prog__opts.html create mode 100644 current/structasgard_1_1prog__opts.js create mode 100644 current/sync_off.png create mode 100644 current/sync_on.png create mode 100644 current/tab_a.png create mode 100644 current/tab_ad.png create mode 100644 current/tab_b.png create mode 100644 current/tab_bd.png create mode 100644 current/tab_h.png create mode 100644 current/tab_hd.png create mode 100644 current/tab_s.png create mode 100644 current/tab_sd.png create mode 100644 current/tabs.css create mode 100644 current/topics.html create mode 100644 current/topics.js diff --git a/current/annotated.html b/current/annotated.html new file mode 100644 index 000000000..6d1643fd8 --- /dev/null +++ b/current/annotated.html @@ -0,0 +1,134 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: Class List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 12]
+ + + + +
 Nasgard
 Cdiscretization_managerWrapper around several aspects of the pde discretization
 Cprog_optsReads options from the command line and input files
 Creconstruct_solutionReconstruct the solution at arbitrary points in the domain from hierarchical data
+
+
+
+ + + + + + diff --git a/current/annotated_dup.js b/current/annotated_dup.js new file mode 100644 index 000000000..edfc180bb --- /dev/null +++ b/current/annotated_dup.js @@ -0,0 +1,8 @@ +var annotated_dup = +[ + [ "asgard", null, [ + [ "discretization_manager", "classasgard_1_1discretization__manager.html", "classasgard_1_1discretization__manager" ], + [ "prog_opts", "structasgard_1_1prog__opts.html", "structasgard_1_1prog__opts" ], + [ "reconstruct_solution", "classasgard_1_1reconstruct__solution.html", "classasgard_1_1reconstruct__solution" ] + ] ] +]; \ No newline at end of file diff --git a/current/asgard.css b/current/asgard.css new file mode 100644 index 000000000..1275f4af7 --- /dev/null +++ b/current/asgard.css @@ -0,0 +1,385 @@ +/****************************************************************************** +TABLE OF CONTENTS +1 - IMPORTS +2 - GLOBAL +3 - DOXYGEN OVERRIDES +******************************************************************************/ + + +/****************************************************************************** +1 - IMPORTS +******************************************************************************/ + +@import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200..1000;1,200..1000&family=Ubuntu:ital,wght@0,300;0,400;0,500;0,700;1,300;1,400;1,500;1,700&display=swap'); + + +/****************************************************************************** +2 - GLOBAL +******************************************************************************/ + +html, body { + height: 100% !important; +} + +#doc-content { + height: calc(100% - 112px); + background: #F0F0F0; +} + +html { + font-size: 100%; +} + +div.headertitle, div.contents, #main-nav, #projectname { + width: 95%; + margin: 1em auto; + display: block; + clear: both; +} + +div.contents { + max-width: 60em; + text-align: justify; + text-justify: inter-word; +} + +#side-nav { + background: #F0F0F0; + width: 21em; + height: calc(100% - 112px); +} + +#nav-tree { + background: #F0F0F0; + height: 100%; +} + + +/****************************************************************************** +3 - DOXYGEN OVERRIDES +******************************************************************************/ + +body, table, div, p, dl { + font-family: 'Ubuntu Sans Pro', sans-serif !important; + font-size: 1em; +} + +h1, h2, h3, h4, h5, h6 { + font-family: 'Ubuntu Sans', sans-serif !important; +} + +h2 { + font-size: 110%; +} + +/****************************************************************************** +3.1 - PAGE TITLE +******************************************************************************/ + +#titlearea { + border-bottom: none; + background: #1f3f19; +} + +#titlearea table { + width: 100%; + text-align: center; + background: url('https://tasmanian.ornl.gov/assets/webtreatsetc-starfield-patterns/JPGS/backgrounsetc-starfield-4.jpg') fixed repeat; +} + +#projectname { + font-size: 1.25em; + color: #fff; + text-shadow: #000 6px 4px 50px; +} + +.doxygen { + position: absolute; + color: #fff; + background: rgba(255, 255, 255, .5); + padding: 5px; + border-radius: 10px; + font-size: .75em; + right: 10px; + top: 10px; +} + +.doxygen img { + width: 60px; +} + +/****************************************************************************** +3.2 - Search +******************************************************************************/ + +#MSearchField, #MSearchBox .right, #MSearchBox .left { + background: #fff; +} + +#MSearchField { + font: 0.8em 'Source Sans Pro', sans-serif !important; + border-bottom: 2px solid #000; + padding-bottom: .5em; +} + +#MSearchBox { + width: 50%; + position: relative; + background: #fff; + margin: 10px auto 0; + height: 25px; + border-radius: 10px; + overflow: hidden; +} + +#MSearchBox .left{ + position: relative; + top: 5px; +} + +#MSearchBox .left, +#MSearchBox .left #MSearchField { + width:100% +} + +#MSearchResultsWindow { + left: 50% !important; + transform: translate(-50%, 4%); +} + + + + + +/****************************************************************************** +3.3 - MAIN MENU (TOP) +******************************************************************************/ + +#main-nav { + padding: 0; + margin: 0; + display: none; +} + +.sm-dox { + background-image: none; + background-color: #fff; +} + +.sm-dox a, .sm-dox a:focus, .sm-dox a:active, .sm-dox a:hover, .sm-dox a.highlighted { + background-image: none; + font-size: .85em; +} + +.sm-dox a, .sm-dox a:focus, .sm-dox a:hover, .sm-dox a:active { + color: #444; + text-shadow: none; +} + +.sm-dox a span.sub-arrow { + border-color: #517875 transparent transparent transparent; +} + +.sm-dox a:hover span.sub-arrow { + border-color: #517875 transparent transparent transparent; +} + +.sm-dox ul a:hover { + background-image: none; + background-color: #517875; +} + +#top { + border-bottom: 1px solid rgba(126, 88, 38, .75); + background: url('https://tasmanian.ornl.gov/assets/webtreatsetc-starfield-patterns/JPGS/backgrounsetc-starfield-4.jpg') fixed repeat; +} + + + + +/****************************************************************************** +3.4 - MAIN MENU (SIDE) +******************************************************************************/ + +/* +div#side-nav { + width: 0; +} + +div#side-nav:not([style*="width"]):hover { + transition: width .25s; + width: 3px; +} +*/ + +#nav-sync { + display: none; + +} + +div#nav-tree { + background-image: none; +} + +.ui-resizable-handle.ui-resizable-e { + border-right: 1px solid rgba(126, 88, 38, .75); + background: none; + +} + +/****************************************************************************** +3.5 - NAV PATH +******************************************************************************/ + +div.navpath { + display:none +} + + +/****************************************************************************** +3.6 - PAGE HEADER +******************************************************************************/ + +div.header{ + background-image: none; + background: #dcdcdc; + border-bottom: none; + margin-bottom: 1em; +} + +div.summary { + width: 100%; + text-align: center; + background: rgba(32, 90, 22, .45); +} + +div.summary a { + color: #fff; + font-weight: bold; +} + +.headertitle { + background-image: none; + background: #dcdcdc; + max-width: 60em; +} + +.title { + font: 2.0em 'Source Sans Pro', sans-serif; +} + + +/****************************************************************************** +4 - CONTENT +******************************************************************************/ +.PageDoc { + position: relative; + top: -16px; +} + + +/****************************************************************************** +4.1 - GROUP HEADER +******************************************************************************/ + +h2.groupheader { + border-bottom: 0; +} + + +/****************************************************************************** +4.2 - MEMBER TABLE +******************************************************************************/ + +table.memberdecls { + width: 100%; +} + +table.memberdecls tr td { + border: 0; +} + +tr.heading h2 { + margin-top: .5em; +} + +tr[class^="memitem:"] td { + padding: .5em; + border: 0; +} + +tr[class^="memitem:"] td.memTemplItemLeft, +tr[class^="memitem:"] td.memItemLeft { + background: rgba(85, 118, 79, .45); + color: #fff; + border: 0; +} + +tr[class^="memitem:"] td.memItemRight { + background: rgba(140, 220, 130, .45); + color: #000; + border: 0; +} + +tr[class^="memdesc:"] td { + padding: .5em; + border: 0; +} + +.memTemplParams { + font-size: 5.em; + font-weight: bold; +} + +.memtemplate { + font-size: 5.em; + font-weight: bold; +} + +tr[class^="separator:"] { + height: 1em; +} + + +/****************************************************************************** +4.3 - CODE FRAGMENT +******************************************************************************/ + +div.fragment { + border-radius: 5px; + border-color: black; + padding: 0.5em; +} + +div.line { + font-family: 'Ubuntu mono' !important; + font-size: 95%; + margin: .1em auto; +} + + +/****************************************************************************** +4.4 - MARKDOWN TABLE +******************************************************************************/ + +table.markdownTable { + width: 100%; +} + + +/****************************************************************************** +5 - FOOTER +******************************************************************************/ + +hr.footer { + border-color: transparent; +} + +address.footer { + margin-top: 1.5em; + padding: 3em 0; + text-align: center; + background: #fff; + color: #fff; + font-size: 1em; +} diff --git a/current/asgard_8hpp.html b/current/asgard_8hpp.html new file mode 100644 index 000000000..e1ba67414 --- /dev/null +++ b/current/asgard_8hpp.html @@ -0,0 +1,158 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: src/asgard.hpp File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
asgard.hpp File Reference
+
+
+ +

Main include file for all ASGarD methods and classes. +More...

+
#include "asgard_time_advance.hpp"
+
+

Go to the source code of this file.

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

+Functions

template<typename precision >
void asgard::simulate_builtin (prog_opts const &options)
 Simulates one of the builtin PDEs.
 
template<typename pde_class >
auto asgard::discretize (prog_opts const &options, verbosity_level verbosity=verbosity_level::quiet)
 Creates a discretization for the given pde and options.
 
template<typename pde_class >
void asgard::simulate (prog_opts const &options, verbosity_level verbosity=verbosity_level::quiet)
 One shot method, simulate the pde with the given options.
 
+void asgard::print_info (std::ostream &os=std::cout)
 Print core library information, e.g., build options and such.
 
+

Detailed Description

+

Main include file for all ASGarD methods and classes.

+
Author
The ASGarD Team
+
+
+ + + + + + diff --git a/current/asgard_8hpp.js b/current/asgard_8hpp.js new file mode 100644 index 000000000..71a0d4ea7 --- /dev/null +++ b/current/asgard_8hpp.js @@ -0,0 +1,7 @@ +var asgard_8hpp = +[ + [ "simulate_builtin", "asgard_8hpp.html#ga999da55616b6bd2a69d7e18f508e6cc5", null ], + [ "discretize", "asgard_8hpp.html#gad164da3f9c1385970da2aa1bbe6ffcb2", null ], + [ "simulate", "asgard_8hpp.html#gaf9f5e5a47902e550bbafbcbe7b67cbff", null ], + [ "print_info", "asgard_8hpp.html#a7f82d4b2c7568ace08b2477afcba7a62", null ] +]; \ No newline at end of file diff --git a/current/asgard_8hpp_source.html b/current/asgard_8hpp_source.html new file mode 100644 index 000000000..c1aedf4d5 --- /dev/null +++ b/current/asgard_8hpp_source.html @@ -0,0 +1,223 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: src/asgard.hpp Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
asgard.hpp
+
+
+Go to the documentation of this file.
1#pragma once
+
2
+
3#include "asgard_time_advance.hpp"
+
4
+
12namespace asgard
+
13{
+
30template<typename precision>
+
+
31void simulate_builtin(prog_opts const &options)
+
32{
+
33 if (options.show_help)
+
34 {
+
35 if (get_local_rank() == 0)
+
36 options.print_help();
+
37 return;
+
38 }
+
39 if (options.show_version)
+
40 {
+
41 if (get_local_rank() == 0)
+
42 options.print_version_help();
+
43 return;
+
44 }
+
45 if (options.show_pde_help)
+
46 {
+
47 if (get_local_rank() == 0)
+
48 options.print_pde_help();
+
49 return;
+
50 }
+
51
+
52 rassert(options.pde_choice and options.pde_choice.value() != PDE_opts::custom,
+
53 "must provide a valid PDE choice");
+
54
+
55 discretization_manager discretization(make_PDE<precision>(options),
+ +
57
+
58 advance_time(discretization);
+
59
+
60 discretization.save_final_snapshot();
+
61
+
62 // collects the state across MPI ranks but ignores the result
+
63 discretization.current_mpistate();
+
64
+
65 node_out() << tools::timer.report() << '\n';
+
66}
+
+
67
+
91template<typename pde_class>
+
+ +
93{
+
94 static_assert(std::is_base_of_v<PDE<float>, pde_class> or std::is_base_of_v<PDE<double>, pde_class>,
+
95 "the requested PDE class must inherit from the asgard::PDE base-class");
+
96
+
97 return discretization_manager(make_custom_pde<pde_class>(options), verbosity);
+
98}
+
+
99
+
120template<typename pde_class>
+
+ +
122{
+
123 auto discretization = discretize<pde_class>(options, verbosity);
+
124
+ +
126
+
127 discretization.save_final_snapshot();
+
128}
+
+
129
+
131void print_info(std::ostream &os = std::cout);
+
132
+
133}
+
void print_info(std::ostream &os=std::cout)
Print core library information, e.g., build options and such.
+
Wrapper around several aspects of the pde discretization.
Definition asgard_discretization.hpp:72
+
fk::vector< precision > current_mpistate() const
collect the current state from across all mpi ranks
+
void save_final_snapshot() const
calls save-snapshot for the final step, if requested with -outfile
Definition asgard_discretization.hpp:142
+
verbosity_level
Allows reducing the amount of cout-noise.
Definition asgard_program_options.hpp:35
+
@ quiet
do not generate cout output, except on errors and important warnings
+
@ high
provide a detailed log of the various aspects of the simulation
+
void advance_time(discretization_manager< P > &manager, int64_t num_steps=-1)
Integrates in time until the final time or number of steps.
+
void simulate_builtin(prog_opts const &options)
Simulates one of the builtin PDEs.
Definition asgard.hpp:31
+
auto discretize(prog_opts const &options, verbosity_level verbosity=verbosity_level::quiet)
Creates a discretization for the given pde and options.
Definition asgard.hpp:92
+
void simulate(prog_opts const &options, verbosity_level verbosity=verbosity_level::quiet)
One shot method, simulate the pde with the given options.
Definition asgard.hpp:121
+
Reads options from the command line and input files.
Definition asgard_program_options.hpp:354
+
static void print_help(std::ostream &os=std::cout)
print list of ASGarD specific options
+
static void print_version_help(std::ostream &os=std::cout)
print version and build (cmake) options
+
bool show_help
indicates if the –help option was selected
Definition asgard_program_options.hpp:413
+
bool show_pde_help
indicates if the -pde? options was selected
Definition asgard_program_options.hpp:417
+
static void print_pde_help(std::ostream &os=std::cout)
print information about the builtin PDEs
+
bool show_version
indicates if the –version option was selected
Definition asgard_program_options.hpp:415
+
std::optional< PDE_opts > pde_choice
if set, one of the builtin PDEs will be used, keep unset for custom PDE projects
Definition asgard_program_options.hpp:361
+
+
+ + + + + + diff --git a/current/asgard__discretization_8hpp.html b/current/asgard__discretization_8hpp.html new file mode 100644 index 000000000..09c4aca01 --- /dev/null +++ b/current/asgard__discretization_8hpp.html @@ -0,0 +1,157 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: src/asgard_discretization.hpp File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
asgard_discretization.hpp File Reference
+
+
+ +

Defines the container class discretization_manager. +More...

+
#include "asgard_reconstruct.hpp"
+#include "asgard_boundary_conditions.hpp"
+#include "asgard_coefficients.hpp"
+#include "asgard_moment.hpp"
+#include "asgard_solver.hpp"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  asgard::discretization_manager< precision >
 Wrapper around several aspects of the pde discretization. More...
 
+ + + + + +

+Functions

template<typename P >
void asgard::advance_time (discretization_manager< P > &manager, int64_t num_steps=-1)
 Integrates in time until the final time or number of steps.
 
+

Detailed Description

+

Defines the container class discretization_manager.

+
Author
The ASGarD Team
+
+
+ + + + + + diff --git a/current/asgard__discretization_8hpp.js b/current/asgard__discretization_8hpp.js new file mode 100644 index 000000000..8efdbcae4 --- /dev/null +++ b/current/asgard__discretization_8hpp.js @@ -0,0 +1,4 @@ +var asgard__discretization_8hpp = +[ + [ "advance_time", "asgard__discretization_8hpp.html#ga2237b286ae85a14631d7f1bf88c6fb54", null ] +]; \ No newline at end of file diff --git a/current/asgard__discretization_8hpp_source.html b/current/asgard__discretization_8hpp_source.html new file mode 100644 index 000000000..f66b46cc4 --- /dev/null +++ b/current/asgard__discretization_8hpp_source.html @@ -0,0 +1,363 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: src/asgard_discretization.hpp Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
asgard_discretization.hpp
+
+
+Go to the documentation of this file.
1#pragma once
+ +
3#include "asgard_boundary_conditions.hpp"
+
4#include "asgard_coefficients.hpp"
+
5#include "asgard_moment.hpp"
+
6#include "asgard_solver.hpp"
+
7
+
8#ifdef ASGARD_IO_HIGHFIVE
+
9#include "asgard_io.hpp"
+
10#endif
+
11
+
19namespace asgard
+
20{
+
21
+
22// forward declare so we can declare the fiend time-advance
+
23template<typename precision>
+
24class discretization_manager;
+
25
+
40template<typename P> // implemented in time-advance
+ +
42
+
51template<typename P>
+
52struct matrix_factor
+
53{
+
55 fk::matrix<P> A;
+
57 std::vector<int> ipiv;
+
58};
+
59
+
70template<typename precision>
+
+ +
72{
+
73public:
+ + +
77
+
+ +
80 {
+
81 return grid.size() * fm::ipow(degree_ + 1, pde->num_dims());
+
82 }
+
+
83
+
85 int degree() const { return degree_; }
+
86
+
88 int64_t time_step() const { return time_step_; }
+
89
+
91 precision dt() const { return dt_; }
+
93 precision time() const { return time_; }
+
95 int64_t final_time_step() const { return final_time_step_; }
+
96
+
+ +
99 {
+
100 rassert(new_final_time_step >= time_step_,
+
101 "cannot set the time-step to an easier point in time");
+
102 final_time_step_ = new_final_time_step;
+
103 }
+
+
+ +
111 {
+
112 rassert(final_time_step_ + additional_time_steps >= time_step_,
+
113 "cannot set the time-step to an easier point in time");
+
114 final_time_step_ += additional_time_steps;
+
115 }
+
+
116
+
118 std::vector<precision> const &current_state() const { return state; }
+
119
+
+
121 void set_next_step(fk::vector<precision> const &next,
+
122 std::optional<precision> new_dt = {})
+
123 {
+
124 if (new_dt)
+
125 dt_ = new_dt.value();
+
126
+
127 state.resize(next.size());
+
128 std::copy(next.begin(), next.end(), state.begin());
+
129
+
130 time_ += dt_;
+
131
+
132 ++time_step_;
+
133
+
134 checkpoint();
+
135 }
+
+
136
+
138 void checkpoint() const;
+
140 void save_snapshot(std::filesystem::path const &filename) const;
+
+ +
143 {
+
144 if (not pde->options().outfile.empty())
+
145 save_snapshot(pde->options().outfile);
+
146 }
+
+
147
+
159 std::optional<std::array<std::vector<precision>, 2>> rmse_exact_sol() const;
+
160
+
162 fk::vector<precision> current_mpistate() const;
+
163
+
165 PDE<precision> const &get_pde() const { return *pde; }
+
167 adapt::distributed_grid<precision> const &get_grid() const { return grid; }
+
168
+
169#ifndef __ASGARD_DOXYGEN_SKIP_INTERNAL
+
171 auto const &get_transformer() const { return transformer; }
+
173 auto const &get_fixed_bc() const { return fixed_bc; }
+
174
+
176 kron_operators<precision> &get_kronops() const { return kronops; }
+
178 std::optional<matrix_factor<precision>> &get_op_matrix() const { return op_matrix; }
+
180 std::vector<moment<precision>> &get_moments() const { return moments; }
+
181#endif // __ASGARD_DOXYGEN_SKIP_INTERNAL
+
182
+
183#ifndef __ASGARD_DOXYGEN_SKIP_INTERNAL
+ + +
190#endif // __ASGARD_DOXYGEN_SKIP_INTERNAL
+
191
+
192protected:
+
193#ifndef __ASGARD_DOXYGEN_SKIP_INTERNAL
+
195 bool high_verbosity() const { return (verb == verbosity_level::high); }
+ +
198 {
+
199 kronops.clear();
+
200 auto const my_subgrid = grid.get_subgrid(get_rank());
+
201 fixed_bc = boundary_conditions::make_unscaled_bc_parts(
+
202 *pde, grid.get_table(), transformer, my_subgrid.row_start,
+
203 my_subgrid.row_stop);
+
204 if (op_matrix)
+
205 op_matrix.reset();
+
206 if (not moments.empty()
+
207 and pde->options().step_method.value() == time_advance::method::imex)
+ +
209 }
+
210 void reset_moments()
+
211 {
+
212 tools::time_event performance("update_system");
+
213
+
214 int const level = pde->get_dimensions()[0].get_level();
+
215 precision const min = pde->get_dimensions()[0].domain_min;
+
216 precision const max = pde->get_dimensions()[0].domain_max;
+
217 int const N_elements = fm::two_raised_to(level);
+
218
+ +
220
+
221 for (auto &m : moments)
+
222 {
+
223 m.createFlist(*pde);
+
224 expect(m.get_fList().size() > 0);
+
225
+
226 m.createMomentVector(*pde, grid.get_table());
+
227 expect(m.get_vector().size() > 0);
+
228
+
229 m.createMomentReducedMatrix(*pde, grid.get_table());
+
230 }
+
231
+
232 if (pde->do_poisson_solve())
+
233 {
+
234 // Setup poisson matrix initially
+
235 solver::setup_poisson(N_elements, min, max, pde->poisson_diag,
+
236 pde->poisson_off_diag);
+
237 }
+
238
+
239 pde->E_field.resize(quad_dense_size);
+
240 pde->phi.resize(quad_dense_size);
+
241 pde->E_source.resize(quad_dense_size);
+
242 }
+
243#endif // __ASGARD_DOXYGEN_SKIP_INTERNAL
+
244
+
245private:
+
246 verbosity_level verb;
+
247 std::unique_ptr<PDE<precision>> pde;
+
248
+
249 adapt::distributed_grid<precision> grid;
+
250
+
251 basis::wavelet_transform<precision, resource::host> transformer;
+
252
+
253 // easy access variables, avoids jumping into pde->options()
+
254 int degree_;
+
255
+
256 // extra parameters
+
257 precision dt_;
+
258 precision time_;
+
259 int64_t time_step_;
+
260
+
261 int64_t final_time_step_;
+
262
+
263 // recompute only when the grid changes
+
264 // left-right boundary conditions, time-independent components
+
265 std::array<boundary_conditions::unscaled_bc_parts<precision>, 2> fixed_bc;
+
266
+
267 // used for iterative solvers
+
268 mutable kron_operators<precision> kronops;
+
269 // used for direct solvers
+
270 mutable std::optional<matrix_factor<precision>> op_matrix;
+
271 // moments of the field
+
272 mutable std::vector<moment<precision>> moments;
+
273
+
274 // constantly changing
+
275 std::vector<precision> state;
+
276};
+
+
277
+
278} // namespace asgard
+
Provides the class for reconstructing solution at arbitrary points in the domain.
+
Wrapper around several aspects of the pde discretization.
Definition asgard_discretization.hpp:72
+
int64_t degrees_of_freedom() const
total degrees of freedom for the problem
Definition asgard_discretization.hpp:79
+
void set_final_time_step(int64_t new_final_time_step)
set new final time step, must be no less than the current time_step()
Definition asgard_discretization.hpp:98
+
void save_snapshot(std::filesystem::path const &filename) const
write out snapshot data, same as checkpoint but can be invoked manually
+
fk::vector< precision > current_mpistate() const
collect the current state from across all mpi ranks
+
int64_t final_time_step() const
get the currently set final time step
Definition asgard_discretization.hpp:95
+
int64_t time_step() const
get the current time-step number
Definition asgard_discretization.hpp:88
+
int degree() const
returns the degree of the discretization
Definition asgard_discretization.hpp:85
+
void checkpoint() const
write out checkpoint/restart data and data for plotting
+
precision time() const
get the current integration time
Definition asgard_discretization.hpp:93
+
void set_next_step(fk::vector< precision > const &next, std::optional< precision > new_dt={})
register the next time step and checkpoint
Definition asgard_discretization.hpp:121
+
void save_final_snapshot() const
calls save-snapshot for the final step, if requested with -outfile
Definition asgard_discretization.hpp:142
+
PDE< precision > const & get_pde() const
returns a ref to the original pde
Definition asgard_discretization.hpp:165
+
void add_time_steps(int64_t additional_time_steps)
add new time steps for simulation
Definition asgard_discretization.hpp:110
+
adapt::distributed_grid< precision > const & get_grid() const
returns a ref to the sparse grid
Definition asgard_discretization.hpp:167
+
std::vector< precision > const & current_state() const
return the current state, in wavelet format, local to this mpi rank
Definition asgard_discretization.hpp:118
+
std::optional< std::array< std::vector< precision >, 2 > > rmse_exact_sol() const
if analytic solution exists, return the rmse error
+
precision dt() const
get the current time-step size
Definition asgard_discretization.hpp:91
+
discretization_manager(std::unique_ptr< PDE< precision > > &&pde_in, verbosity_level vebosity=verbosity_level::quiet)
take ownership of the pde object and discretize the pde
+
verbosity_level
Allows reducing the amount of cout-noise.
Definition asgard_program_options.hpp:35
+
@ imex
implicit-explicit scheme for nonlinear Vlasov-Poisson problems
+
@ quiet
do not generate cout output, except on errors and important warnings
+
@ high
provide a detailed log of the various aspects of the simulation
+
void advance_time(discretization_manager< P > &manager, int64_t num_steps=-1)
Integrates in time until the final time or number of steps.
+
auto discretize(prog_opts const &options, verbosity_level verbosity=verbosity_level::quiet)
Creates a discretization for the given pde and options.
Definition asgard.hpp:92
+
+
+ + + + + + diff --git a/current/asgard__program__options_8hpp.html b/current/asgard__program__options_8hpp.html new file mode 100644 index 000000000..eee75022e --- /dev/null +++ b/current/asgard__program__options_8hpp.html @@ -0,0 +1,255 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: src/asgard_program_options.hpp File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
asgard_program_options.hpp File Reference
+
+
+ +

Defines common enums and the options manager class prog_opts. +More...

+
#include "asgard_tools.hpp"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

struct  asgard::prog_opts
 Reads options from the command line and input files. More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Enumerations

enum class  asgard::verbosity_level { verbosity_level::quiet +, verbosity_level::high + }
 Allows reducing the amount of cout-noise. More...
 
enum class  asgard::solve_opts { solve_opts::direct +, solve_opts::gmres +, solve_opts::bicgstab +, solve_opts::scalapack + }
 the available solvers for implicit time stepping More...
 
enum class  asgard::PDE_opts {
+  custom = 0 +, advection_1 +, continuity_1 +, continuity_2 +,
+  continuity_3 +, continuity_6 +, fokkerplanck_1d_pitch_E_case1 +, fokkerplanck_1d_pitch_E_case2 +,
+  fokkerplanck_1d_pitch_C +, fokkerplanck_1d_4p3 +, fokkerplanck_1d_4p4 +, fokkerplanck_1d_4p5 +,
+  fokkerplanck_2d_complete_case1 +, fokkerplanck_2d_complete_case2 +, fokkerplanck_2d_complete_case3 +, fokkerplanck_2d_complete_case4 +,
+  diffusion_1 +, diffusion_2 +, vlasov_lb_full_f +, vlasov_two_stream +,
+  relaxation_1x1v +, relaxation_1x2v +, relaxation_1x3v +, riemann_1x2v +,
+  riemann_1x3v +, collisional_landau +, collisional_landau_1x2v +, collisional_landau_1x3v +
+ }
 list of builtin PDE specifications, refer to the specs in the src/pde folder
 
enum class  PDE_case_opts {
+  case0 +, case1 +, case2 +, case3 +,
+  case4 +, case_count +
+ }
 
enum class  asgard::kronmult_mode { kronmult_mode::dense +, kronmult_mode::sparse + }
 Indicates whether we should be using sparse or dense kronmult. More...
 
enum class  asgard::grid_type { grid_type::sparse +, grid_type::dense +, grid_type::mixed + }
 Type of discretization grid. More...
 
enum class  asgard::time_advance::method { method::imp +, method::exp +, method::imex + }
 
enum  asgard::adapt_norm { asgard::l2 +, asgard::linf + }
 
+ + + + + + + + +

+Functions

+split_views asgard::split_argv (std::string_view const &opts)
 
+prog_opts asgard::make_opts (std::string const &cli)
 
+std::ostream & asgard::operator<< (std::ostream &os, prog_opts const &options)
 overload for writing options to a stream
 
+ + + + + +

+Variables

+int constexpr asgard::solver::novalue = -1
 
+double constexpr asgard::solver::notolerance = -1.0
 
+

Detailed Description

+

Defines common enums and the options manager class prog_opts.

+
Author
The ASGarD Team
+
+
+ + + + + + diff --git a/current/asgard__program__options_8hpp.js b/current/asgard__program__options_8hpp.js new file mode 100644 index 000000000..94447c453 --- /dev/null +++ b/current/asgard__program__options_8hpp.js @@ -0,0 +1,62 @@ +var asgard__program__options_8hpp = +[ + [ "verbosity_level", "asgard__program__options_8hpp.html#ga6c50a754f177f157e865946f8b68321f", [ + [ "quiet", "asgard__program__options_8hpp.html#gga6c50a754f177f157e865946f8b68321fa556966c7830465dc4623d62e32cec31d", null ], + [ "high", "asgard__program__options_8hpp.html#gga6c50a754f177f157e865946f8b68321fa8d966b2253a917086c8604959e152243", null ] + ] ], + [ "solve_opts", "asgard__program__options_8hpp.html#gab913190c29228e6ad8a39d18a50aaea7", [ + [ "direct", "asgard__program__options_8hpp.html#ggab913190c29228e6ad8a39d18a50aaea7a7caa701b2bd5a182b80c72b9bdf88e2d", null ], + [ "gmres", "asgard__program__options_8hpp.html#ggab913190c29228e6ad8a39d18a50aaea7ad43c33b8e3d5435d9cbe65c156887a02", null ], + [ "bicgstab", "asgard__program__options_8hpp.html#ggab913190c29228e6ad8a39d18a50aaea7ae123b37d2b5fd373237e049a1e68ca13", null ], + [ "scalapack", "asgard__program__options_8hpp.html#ggab913190c29228e6ad8a39d18a50aaea7a75ed89791e1997d58d57456262786673", null ] + ] ], + [ "PDE_opts", "asgard__program__options_8hpp.html#gad541250bcbd39977e699e8cc9d93100d", [ + [ "custom", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100da8b9035807842a4e4dbe009f3f1478127", null ], + [ "advection_1", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100da77c1fe3461338cade3f03e49d0a79957", null ], + [ "continuity_1", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100da230eddab1a3b4d7724a27719ef8d74a3", null ], + [ "continuity_2", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100da865c124d1b2ee486491bd2c6bc6f0253", null ], + [ "continuity_3", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100da6d26b34d055f62fa6286435fd9cbee4d", null ], + [ "continuity_6", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100daf4a3503dcd7f70e3b0889ef4808b7272", null ], + [ "fokkerplanck_1d_pitch_E_case1", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100dace253b409418fbd33b87f86cf193327b", null ], + [ "fokkerplanck_1d_pitch_E_case2", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100dac05571e1fdcf826efe2084930b10a71f", null ], + [ "fokkerplanck_1d_pitch_C", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100daa5e2ee06bd3245034948ad6f1307c10e", null ], + [ "fokkerplanck_1d_4p3", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100dab712b664a3b2cc369a66f66cfb18500d", null ], + [ "fokkerplanck_1d_4p4", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100daf94e80721c2f04d5751e48d3590f4add", null ], + [ "fokkerplanck_1d_4p5", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100da882b656de68011962550b467597d00d2", null ], + [ "fokkerplanck_2d_complete_case1", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100da3b0e480178bc50ac51dccd357486a05e", null ], + [ "fokkerplanck_2d_complete_case2", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100dad85965181035061a988f7a5289de33a8", null ], + [ "fokkerplanck_2d_complete_case3", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100dac626761af3e18d056cca224cc85135d1", null ], + [ "fokkerplanck_2d_complete_case4", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100da3ab3e24bbbcb79a41368abc1c1495821", null ], + [ "diffusion_1", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100da96ec7e9ee8291d4800f997e42027fc64", null ], + [ "diffusion_2", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100da2649bc9545a3bb23a5dabdc2802f6c37", null ], + [ "vlasov_lb_full_f", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100dab44090b3f20dd0dc8c72c8ff2919dcc9", null ], + [ "vlasov_two_stream", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100dab094f18f99a11257f44a66df12e4b91c", null ], + [ "relaxation_1x1v", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100da5e9a9268119e49647c35ee5051e37474", null ], + [ "relaxation_1x2v", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100da869e09e1f221b3bdbae1811a73a1a19c", null ], + [ "relaxation_1x3v", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100da2b44a8cdee6b8c6753ab727556195a83", null ], + [ "riemann_1x2v", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100da98d468d5790be7c569c3e2aa49b970f0", null ], + [ "riemann_1x3v", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100da3019f4dd4e72d5a105c13c0df9391baf", null ], + [ "collisional_landau", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100da1e46eb885b6184674dbc9a494cb32368", null ], + [ "collisional_landau_1x2v", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100da88ad4cae868a8e1a8a5cf0139301e9bc", null ], + [ "collisional_landau_1x3v", "asgard__program__options_8hpp.html#ggad541250bcbd39977e699e8cc9d93100da05052b07677831fde6af09bbcb1a12b2", null ] + ] ], + [ "kronmult_mode", "asgard__program__options_8hpp.html#ga6b51b79ca35557fbf6d9b8d4f79fddd2", [ + [ "dense", "asgard__program__options_8hpp.html#gga6b51b79ca35557fbf6d9b8d4f79fddd2a0eccef1fe0100f85b12e6eabe08eaff6", null ], + [ "sparse", "asgard__program__options_8hpp.html#gga6b51b79ca35557fbf6d9b8d4f79fddd2a5dabba66ddc7b1e6f193ff73d3c55e94", null ] + ] ], + [ "grid_type", "asgard__program__options_8hpp.html#ga7dbd43735a473f41375866c2042f815f", [ + [ "sparse", "asgard__program__options_8hpp.html#gga7dbd43735a473f41375866c2042f815fa5dabba66ddc7b1e6f193ff73d3c55e94", null ], + [ "dense", "asgard__program__options_8hpp.html#gga7dbd43735a473f41375866c2042f815fa0eccef1fe0100f85b12e6eabe08eaff6", null ], + [ "mixed", "asgard__program__options_8hpp.html#gga7dbd43735a473f41375866c2042f815fa1d770934d44de09b0d24f04fd01708ba", null ] + ] ], + [ "method", "asgard__program__options_8hpp.html#ga54dc8c95a692aa0ca4740dc972259be3", [ + [ "imp", "asgard__program__options_8hpp.html#gga54dc8c95a692aa0ca4740dc972259be3a72bb0a20dbae84efcc752cb287357197", null ], + [ "exp", "asgard__program__options_8hpp.html#gga54dc8c95a692aa0ca4740dc972259be3ab0ab0254bd58eb87eaee3172ba49fefb", null ], + [ "imex", "asgard__program__options_8hpp.html#gga54dc8c95a692aa0ca4740dc972259be3a1ee78c9863801107ef1bd05fbe4b22e1", null ] + ] ], + [ "adapt_norm", "asgard__program__options_8hpp.html#ga66a1204a68161bcfbf3bcf5726800aaa", [ + [ "l2", "asgard__program__options_8hpp.html#gga66a1204a68161bcfbf3bcf5726800aaaa52bf24b4561ae2daa76408d9d1dfb5af", null ], + [ "linf", "asgard__program__options_8hpp.html#gga66a1204a68161bcfbf3bcf5726800aaaa8e1bfde40fc388cd099c0999035b80ba", null ] + ] ], + [ "operator<<", "asgard__program__options_8hpp.html#ade50af2065d6fe3d72e86a36e916219e", null ] +]; \ No newline at end of file diff --git a/current/asgard__program__options_8hpp_source.html b/current/asgard__program__options_8hpp_source.html new file mode 100644 index 000000000..506b91403 --- /dev/null +++ b/current/asgard__program__options_8hpp_source.html @@ -0,0 +1,569 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: src/asgard_program_options.hpp Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
asgard_program_options.hpp
+
+
+Go to the documentation of this file.
1#pragma once
+
2#include "asgard_tools.hpp"
+
3
+
11namespace asgard
+
12{
+
+ +
35{
+
37 quiet,
+
39 high
+
40};
+
+
41
+
+
46enum class solve_opts
+
47{
+
49 direct,
+
51 gmres,
+ + +
56};
+
+
57
+
+
62enum class PDE_opts
+
63{
+
64 custom = 0, // user provided pde
+
65 advection_1,
+
66 continuity_1,
+
67 continuity_2,
+
68 continuity_3,
+
69 continuity_6,
+
70 fokkerplanck_1d_pitch_E_case1,
+
71 fokkerplanck_1d_pitch_E_case2,
+
72 fokkerplanck_1d_pitch_C,
+
73 fokkerplanck_1d_4p3,
+
74 fokkerplanck_1d_4p4,
+
75 fokkerplanck_1d_4p5,
+
76 fokkerplanck_2d_complete_case1,
+
77 fokkerplanck_2d_complete_case2,
+
78 fokkerplanck_2d_complete_case3,
+
79 fokkerplanck_2d_complete_case4,
+
80 diffusion_1,
+
81 diffusion_2,
+
82 vlasov_lb_full_f,
+
83 vlasov_two_stream,
+
84 relaxation_1x1v,
+
85 relaxation_1x2v,
+
86 relaxation_1x3v,
+
87 riemann_1x2v,
+
88 riemann_1x3v,
+
89 collisional_landau,
+
90 collisional_landau_1x2v,
+
91 collisional_landau_1x3v
+
92};
+
+
93
+
101enum class PDE_case_opts
+
102{
+
103 case0,
+
104 case1,
+
105 case2,
+
106 case3,
+
107 case4,
+
108 case_count
+
109};
+
110
+
+ +
119{
+
121 dense,
+
123 sparse
+
124};
+
+
125
+
+
130enum class grid_type
+
131{
+
133 sparse,
+
135 dense,
+
137 mixed
+
138};
+
+
139
+
140namespace time_advance
+
141{
+
+
146enum class method
+
147{
+
149 imp,
+
151 exp, // explicit is reserved keyword
+
153 imex
+
154};
+
+
155} // namespace time_advance
+
156
+
+ +
162{
+ +
166 linf
+ +
+
168
+
169namespace solver
+
170{
+
175int constexpr novalue = -1;
+
180double constexpr notolerance = -1.0;
+
181} // namespace solver
+
182
+
192struct vecstrview
+
193{
+
194 explicit vecstrview(std::vector<std::string_view> const &s) : s_(s)
+
195 {}
+
196
+
197 operator std::vector<std::string_view> const &() const { return s_; }
+
198
+
199 std::vector<std::string_view> const &s_;
+
200};
+
201
+
212struct split_views
+
213{
+
214 split_views(std::vector<std::string> &&own)
+
215 : own_(std::move(own)), strview(views_)
+
216 {
+
217 views_.reserve(own_.size() + 1);
+
218 views_.push_back("test");
+
219 for (auto &s : own_)
+
220 views_.emplace_back(s);
+
221 }
+
222 operator std::vector<std::string_view> const &()
+
223 {
+
224 return views_;
+
225 }
+
226 operator vecstrview const &()
+
227 {
+
228 return strview;
+
229 }
+
230 std::vector<std::string> own_;
+
231 std::vector<std::string_view> views_;
+
232 vecstrview strview;
+
233};
+
234
+
249split_views split_argv(std::string_view const &opts);
+
250
+
+ +
354{
+
356 std::string title;
+
358 std::string subtitle;
+
359
+
361 std::optional<PDE_opts> pde_choice;
+
362
+
364 std::vector<int> start_levels;
+
366 std::vector<int> max_levels;
+
367
+
369 std::optional<grid_type> grid;
+
371 std::optional<int> mgrid_group;
+
373 std::optional<int> degree;
+
374
+
376 std::optional<double> adapt_threshold;
+
378 std::optional<adapt_norm> anorm;
+
379
+
381 std::optional<time_advance::method> step_method;
+
383 std::optional<double> dt;
+
385 std::optional<int> num_time_steps;
+
386
+
388 std::optional<bool> set_electric;
+
389
+
391 std::optional<int> wavelet_output_freq;
+
392
+
394 std::optional<solve_opts> solver;
+
396 std::optional<double> isolver_tolerance;
+
398 std::optional<int> isolver_iterations;
+
400 std::optional<int> isolver_outer_iterations;
+
401
+
403 std::optional<kronmult_mode> kron_mode;
+
405 std::optional<int> memory_limit;
+
406
+
408 std::string restart_file;
+
410 std::filesystem::path outfile;
+
411
+
413 bool show_help = false;
+
415 bool show_version = false;
+
417 bool show_pde_help = false;
+
419 bool ignore_exact = false;
+
420
+
422 static void print_help(std::ostream &os = std::cout);
+
424 static void print_version_help(std::ostream &os = std::cout);
+
426 static void print_pde_help(std::ostream &os = std::cout);
+
428 void print_options(std::ostream &os = std::cout) const;
+
429
+
431 std::vector<std::string> externals;
+
432
+
434 std::string start_levels_str() const { return vect_to_str(start_levels); }
+
436 std::string max_levels_str() const { return vect_to_str(max_levels); }
+
437
+
439 prog_opts() = default;
+
440
+
442 prog_opts(int const argc, char const *const *argv,
+
443 bool ignore_unknown = true);
+
444
+
+
446 explicit prog_opts(std::filesystem::path const &filename)
+
447 : infile(filename)
+
448 {
+
449 process_file("<executable>");
+
450 }
+
+
451
+
+
453 explicit prog_opts(vecstrview const &argv)
+
454 {
+
455 process_inputs(argv, handle_mode::ignore_unknown);
+
456 }
+
+
457
+
459 template<typename out_type>
+
+
460 std::optional<out_type> file_value(std::string_view const &s) const
+
461 {
+
462 return get_val<out_type>(filedata, s);
+
463 }
+
+
465 template<typename out_type>
+
+
466 std::optional<out_type> extra_cli_value(std::string_view const &s) const
+
467 {
+ +
469 }
+
+
470
+
471private:
+
473 enum class optentry
+
474 {
+
475 show_help,
+
476 version_help,
+
477 pde_help,
+
478 input_file,
+ +
480 title,
+
481 subtitle,
+
482 grid_mode,
+ + + + + + +
489 degree,
+ + +
492 output_file,
+
493 dt,
+ +
495 solver,
+ +
497 kron_mode,
+
498 isol_tolerance,
+
499 isol_iterations,
+
500 isol_outer_iterations,
+ +
502 };
+
503 enum class handle_mode
+
504 {
+
505 warn_on_unknown, // print warning
+
506 ignore_unknown, // do nothing (user inputs)
+
507 save_unknown // reading from file
+
508 };
+
509
+
511 std::filesystem::path infile;
+
512
+
514 std::vector<std::string> filedata;
+
516 void process_file(std::string_view const &exec_name);
+
517
+
519 void process_inputs(std::vector<std::string_view> const &argv,
+
520 handle_mode mode);
+
522 static std::optional<PDE_opts> get_pde_opt(std::string_view const &pde_str);
+
523
+
525 static std::vector<int> parse_ints(std::string const &number_string)
+
526 {
+
527 std::stringstream number_stream(number_string);
+
528 std::vector<int> result;
+
529 result.reserve(max_num_dimensions);
+
530 while (!number_stream.eof())
+
531 {
+
532 std::string word;
+ +
534 int temp_int = -1;
+
535
+
536 // remove any leading or trailing '"'
+
537 size_t pos = word.find_first_of('\"');
+
538 if (pos != std::string::npos)
+
539 word.erase(word.begin() + pos);
+
540
+
541 if (std::stringstream(word) >> temp_int)
+
542 {
+
543 if (result.size() == max_num_dimensions)
+
544 { // too many ints, return invalid result
+
545 result.clear();
+
546 return result;
+
547 }
+
548 else
+
549 result.push_back(temp_int);
+
550 }
+
551 }
+
552
+
553 return result;
+
554 }
+
555
+
556 template<typename out_type>
+
557 std::optional<out_type> get_val(std::vector<std::string> const &strs,
+
558 std::string_view const &s) const
+
559 {
+
560 static_assert(std::is_same_v<out_type, int> or std::is_same_v<out_type, bool>
+
561 or std::is_same_v<out_type, float> or std::is_same_v<out_type, double>
+
562 or std::is_same_v<out_type, std::string>,
+
563 "prog_opts can only process: int, float, double, bool or string");
+
564 for (size_t i = 0; i < strs.size(); i += 2)
+
565 {
+
566 if (strs[i] == s)
+
567 {
+
568 if (i + 1 == strs.size())
+
569 return {};
+
570 const std::string &val = strs[i + 1];
+
571 if constexpr (std::is_same_v<out_type, std::string>)
+
572 return val;
+
573 else if constexpr (std::is_same_v<out_type, int>)
+
574 return std::stoi(val);
+
575 else if constexpr (std::is_same_v<out_type, double>)
+
576 return std::stod(val);
+
577 else if constexpr (std::is_same_v<out_type, float>)
+
578 return std::stof(val);
+
579 else if constexpr (std::is_same_v<out_type, bool>)
+
580 {
+
581 if (val == "on" or val == "yes" or val == "enable" or val == "true"
+
582 or val == "1")
+
583 return true;
+
584 else if (val == "off" or val == "no" or val == "disable"
+
585 or val == "false" or val == "0")
+
586 return false;
+
587 else
+
588 return {};
+
589 }
+
590 }
+
591 }
+
592 return {};
+
593 }
+
594
+
596 static std::string vect_to_str(std::vector<int> const &ints)
+
597 {
+
598 std::string s = "";
+
599 for (auto i : ints)
+
600 s += ((i < 10) ? " " : " ") + std::to_string(i);
+
601 return s;
+
602 }
+
603};
+
+
604
+
611inline prog_opts make_opts(std::string const &cli)
+
612{
+
613 return prog_opts(split_argv(cli));
+
614}
+
615
+
+
617inline std::ostream &operator<<(std::ostream &os, prog_opts const &options)
+
618{
+
619 options.print_options(os);
+
620 return os;
+
621}
+
+
622
+
623} // namespace asgard
+
std::ostream & operator<<(std::ostream &os, prog_opts const &options)
overload for writing options to a stream
Definition asgard_program_options.hpp:617
+
method
Definition asgard_program_options.hpp:147
+
adapt_norm
Definition asgard_program_options.hpp:162
+
kronmult_mode
Indicates whether we should be using sparse or dense kronmult.
Definition asgard_program_options.hpp:119
+
verbosity_level
Allows reducing the amount of cout-noise.
Definition asgard_program_options.hpp:35
+
grid_type
Type of discretization grid.
Definition asgard_program_options.hpp:131
+
solve_opts
the available solvers for implicit time stepping
Definition asgard_program_options.hpp:47
+
PDE_opts
list of builtin PDE specifications, refer to the specs in the src/pde folder
Definition asgard_program_options.hpp:63
+
@ imex
implicit-explicit scheme for nonlinear Vlasov-Poisson problems
+
@ imp
implicit solve, backward Euler
+
@ exp
(default) explicit Runge–Kutta
+
@ l2
L-2 norm.
Definition asgard_program_options.hpp:164
+
@ linf
L-inf norm, a.k.a., max or sup norm.
Definition asgard_program_options.hpp:166
+
@ dense
Using a dense matrix (assumes everything is connected).
+
@ sparse
Using a sparse matrix (checks for connectivity).
+
@ quiet
do not generate cout output, except on errors and important warnings
+
@ high
provide a detailed log of the various aspects of the simulation
+
@ mixed
Dense tensor of two sparse grids.
+
@ scalapack
distributed direct solver, MPI-powered alternative to LAPACK
+
@ direct
direct solve using LAPACK, slow but stable
+
@ gmres
popular iterative solver, can be sensitive to the tolerance and restart frequency
+
@ bicgstab
alternative to gmres, cheaper when taking many steps between restarts
+
auto discretize(prog_opts const &options, verbosity_level verbosity=verbosity_level::quiet)
Creates a discretization for the given pde and options.
Definition asgard.hpp:92
+
Reads options from the command line and input files.
Definition asgard_program_options.hpp:354
+
std::optional< int > wavelet_output_freq
output frequency of wavelet data used for restarts or python plotting
Definition asgard_program_options.hpp:391
+
bool ignore_exact
indicates if the exact solution should be ignored or the error computed and shown every time-step
Definition asgard_program_options.hpp:419
+
prog_opts()=default
create empty options, allows to manually fill the options later
+
std::optional< int > memory_limit
local kron method only, sparse mode, keeps less data on the device
Definition asgard_program_options.hpp:405
+
std::optional< int > num_time_steps
number of fixed time steps to take
Definition asgard_program_options.hpp:385
+
std::optional< int > degree
degree of the polynomial basis
Definition asgard_program_options.hpp:373
+
static void print_help(std::ostream &os=std::cout)
print list of ASGarD specific options
+
prog_opts(std::filesystem::path const &filename)
process from a file
Definition asgard_program_options.hpp:446
+
std::optional< kronmult_mode > kron_mode
local kron method only, mode dense or sparse (faster but memory hungry)
Definition asgard_program_options.hpp:403
+
std::optional< out_type > file_value(std::string_view const &s) const
read an extra option from a file
Definition asgard_program_options.hpp:460
+
std::string start_levels_str() const
converts the start_levels to a human readable string
Definition asgard_program_options.hpp:434
+
std::optional< bool > set_electric
enable/disable the Poisson solver
Definition asgard_program_options.hpp:388
+
std::vector< int > max_levels
read from -max_levels
Definition asgard_program_options.hpp:366
+
std::optional< double > dt
fixed time step, if missing the default cfl condition will be used
Definition asgard_program_options.hpp:383
+
std::string title
if provided, the title helps organize projects with multiple files
Definition asgard_program_options.hpp:356
+
std::optional< adapt_norm > anorm
adaptivity norm, either l2 or linf
Definition asgard_program_options.hpp:378
+
std::optional< int > isolver_outer_iterations
max number of output gmres iterations
Definition asgard_program_options.hpp:400
+
std::string subtitle
if provided, the subtitile is an addition to the main title
Definition asgard_program_options.hpp:358
+
std::filesystem::path outfile
filename for the last time step
Definition asgard_program_options.hpp:410
+
std::string max_levels_str() const
converts the max_levels to a human readable string
Definition asgard_program_options.hpp:436
+
static void print_version_help(std::ostream &os=std::cout)
print version and build (cmake) options
+
std::optional< out_type > extra_cli_value(std::string_view const &s) const
read an extra option from the cli extras
Definition asgard_program_options.hpp:466
+
bool show_help
indicates if the –help option was selected
Definition asgard_program_options.hpp:413
+
prog_opts(vecstrview const &argv)
for testing purposes, can read from manually specified argc/argv
Definition asgard_program_options.hpp:453
+
bool show_pde_help
indicates if the -pde? options was selected
Definition asgard_program_options.hpp:417
+
std::optional< solve_opts > solver
solver for implicit or imex methods: direct, gmres, bicgstab
Definition asgard_program_options.hpp:394
+
std::optional< double > adapt_threshold
if set, enables grid adaptivity and provides the tolerance threshold
Definition asgard_program_options.hpp:376
+
std::vector< std::string > externals
argv input values unrecognized by ASGarD
Definition asgard_program_options.hpp:431
+
std::optional< time_advance::method > step_method
time stepping method, explicit, implicit or imex
Definition asgard_program_options.hpp:381
+
std::optional< int > isolver_iterations
max number of iterations (inner iterations for gmres)
Definition asgard_program_options.hpp:398
+
std::optional< double > isolver_tolerance
tolerance for the iterative solvers (gmres, bicgstab)
Definition asgard_program_options.hpp:396
+
static void print_pde_help(std::ostream &os=std::cout)
print information about the builtin PDEs
+
void print_options(std::ostream &os=std::cout) const
print the current set of options
+
std::vector< int > start_levels
read from -start_levels
Definition asgard_program_options.hpp:364
+
prog_opts(int const argc, char const *const *argv, bool ignore_unknown=true)
process the command line arguments, may yield warning if encountering unknown options
+
std::string restart_file
restart the simulation from a file
Definition asgard_program_options.hpp:408
+
bool show_version
indicates if the –version option was selected
Definition asgard_program_options.hpp:415
+
std::optional< grid_type > grid
sparse, dense or mixed grid
Definition asgard_program_options.hpp:369
+
std::optional< int > mgrid_group
if using mixed group, the size of the first mixed group
Definition asgard_program_options.hpp:371
+
std::optional< PDE_opts > pde_choice
if set, one of the builtin PDEs will be used, keep unset for custom PDE projects
Definition asgard_program_options.hpp:361
+
+
+ + + + + + diff --git a/current/asgard__reconstruct_8hpp.html b/current/asgard__reconstruct_8hpp.html new file mode 100644 index 000000000..4839d9ec2 --- /dev/null +++ b/current/asgard__reconstruct_8hpp.html @@ -0,0 +1,145 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: src/asgard_reconstruct.hpp File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
asgard_reconstruct.hpp File Reference
+
+
+ +

Provides the class for reconstructing solution at arbitrary points in the domain. +More...

+
#include "asgard_interpolation.hpp"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  asgard::reconstruct_solution
 Reconstruct the solution at arbitrary points in the domain from hierarchical data. More...
 
+

Detailed Description

+

Provides the class for reconstructing solution at arbitrary points in the domain.

+
Author
The ASGarD Team
+
+
+ + + + + + diff --git a/current/asgard__reconstruct_8hpp_source.html b/current/asgard__reconstruct_8hpp_source.html new file mode 100644 index 000000000..0f85658ea --- /dev/null +++ b/current/asgard__reconstruct_8hpp_source.html @@ -0,0 +1,229 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: src/asgard_reconstruct.hpp Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
asgard_reconstruct.hpp
+
+
+Go to the documentation of this file.
1#pragma once
+
2
+
3#include "asgard_interpolation.hpp"
+
4
+
12namespace asgard
+
13{
+
14
+
+ +
47{
+
48public:
+
64 template<typename precision>
+ +
66 int degree, precision const solution[]);
+
67
+
74 void set_domain_bounds(double const amin[], double const amax[]);
+
75
+
85 void reconstruct(double const x[], int num_x, double y[]) const;
+
86
+
88 int num_dimensions() const { return cells_.num_dimensions(); }
+
90 int64_t num_cells() const { return cells_.num_indexes(); }
+
91
+
95 void cell_centers(double x[]) const;
+
96
+
97protected:
+
98#ifndef __ASGARD_DOXYGEN_SKIP_INTERNAL
+
100 template<int degree>
+
101 void reconstruct(double const x[], int num_x, double y[]) const;
+
102
+
132 void build_tree();
+
133
+ +
137 std::vector<int> compute_levels() const;
+
153 template<int degree>
+
154 std::optional<double>
+
155 basis_value(int const p[], double const x[], double const c[],
+ +
157
+
161 template<int degree>
+
162 double walk_trees(const double x[]) const;
+
163#endif
+
164
+
165private:
+
166 int pterms_;
+
167 int64_t block_size_;
+
168
+
169 indexset cells_;
+
170 std::vector<double> coeff_;
+
171
+
172 std::array<double, max_num_dimensions> inv_slope, shift;
+
173 double domain_scale;
+
174
+
175 // tree for evaluation
+
176 std::vector<int> roots;
+
177 std::vector<int> pntr;
+
178 std::vector<int> indx;
+
179
+
180 // using singe vector so data is compact and cached more easily
+
181 // alias the location of the left-right basis
+
182 std::vector<double> wavelets;
+
183 // aliases to the structure above
+
184 double *wleft = nullptr;
+
185 double *wright = nullptr;
+
186};
+
+
187
+
188} // namespace asgard
+
189
+
190#ifndef __ASGARD_DOXYGEN_SKIP_INTERNAL
+
191extern "C"
+
192{
+
193// C-style bindings for the reconstruct_solution class
+
194// those will be called from Python ctypes, must match asgard.py
+
195
+
200void *asgard_make_dreconstruct_solution(int, int64_t, int const[],
+
201 int, double const[]);
+
206void *asgard_make_freconstruct_solution(int, int64_t, int const[],
+
207 int, float const[]);
+
212void asgard_pydelete_reconstruct_solution(void *);
+
217void asgard_delete_reconstruct_solution(void **);
+
218
+
223void asgard_reconstruct_solution_setbounds(void *, double const[],
+
224 double const[]);
+
225
+
230void asgard_reconstruct_solution(void const*, double const[], int, double[]);
+
235void asgard_reconstruct_cell_centers(void const *pntr, double x[]);
+
236
+
237} // extern "C"
+
238#endif
+
Reconstruct the solution at arbitrary points in the domain from hierarchical data.
Definition asgard_reconstruct.hpp:47
+
int64_t num_cells() const
Returns the number of SG cells.
Definition asgard_reconstruct.hpp:90
+
reconstruct_solution(int dims, int64_t num_cells, int const asg_cells[], int degree, precision const solution[])
Constructor, prepares the data-structures for reconstruction.
+
void set_domain_bounds(double const amin[], double const amax[])
Sets the min/max bound of the domain.
+
void cell_centers(double x[]) const
Returns the centers of the sparse grid cells.
+
void reconstruct(double const x[], int num_x, double y[]) const
Reconstruct the values of the solution at the given points.
+
int num_dimensions() const
Returns the number of dimensions.
Definition asgard_reconstruct.hpp:88
+
auto discretize(prog_opts const &options, verbosity_level verbosity=verbosity_level::quiet)
Creates a discretization for the given pde and options.
Definition asgard.hpp:92
+
+
+ + + + + + diff --git a/current/bc_s.png b/current/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..7908e1579b45f886d04f796fea75de5c31817ea7 GIT binary patch literal 679 zcmV;Y0$BZtP)$DFrzw_eRorXsO>03Z`;zIn2RR#iT)ZF2p>^V(05nLjeX zH-21*Z;b5@or-40=fm$`lmgVh`0)Euc1&qEU%Ru>73HQ4zqUS z^55A8YM1pqQJh$J!wUmbxc!iO5p9s&R;_g$^c5KwMs!>B&g0RT|$qY74avC7G( zNzQ8p04VnjjfJz23Oa&Zrw;;vOj^L-ZfLfNJ%Sv;0{|e?B~=X@QuF$`wdsXZXxES* z0Az~m8_a5a{h93a!YgDSY%ksP2xb*6gT zAXBZG&80FS005ayo$fi@6KVHIPn)UJ4dtc?n%u<2$$d+%z6Ag%_g|FRrzgq1edYiF N002ovPDHLkV1nN}J5T@s literal 0 HcmV?d00001 diff --git a/current/bc_sd.png b/current/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..99ce74f247d47fe73ad66d3552aaeb0007a300a0 GIT binary patch literal 516 zcmV+f0{i`mP)WJ0AdU#Y6Q;bA%gtuz?$ztg=|o zs*jtg8yeU^g=R~~L9hDg&IW-BO$n$#KPPALQhGA?a6wY%-h@JY@@mo7q}_Nm9q=i9 z{hAMl@%`Jo$%97WjS!L-j{Gvv6<_MeTmEymu|f$6Ccu0jA@d; zL1Qkfw9=&TA+@^6N0!!$?$uWd&kih;pW#BaAKjfF2OO+Pvk9 z&)mxnSAuYq1W=kj`Nh3B?87q&Apn%-6`99y7)e*v`4Iq^Vvi+0<-IP2GqplK-noHk zVTe63Bam>D1LYfBW*2P-04(0H{vX`KF7h)aiBLdaU#C^i*KB0bm*-j`{r)sty3ytneodc!G`rU>4ha z*(GZLV3V?&nKUY+t^t6}2AAJwdp`icEcy(b^8Nw + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
asgard::discretization_manager< precision > Member List
+
+
+ +

This is the complete list of members for asgard::discretization_manager< precision >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
add_time_steps(int64_t additional_time_steps)asgard::discretization_manager< precision >inline
checkpoint() constasgard::discretization_manager< precision >
current_mpistate() constasgard::discretization_manager< precision >
current_state() constasgard::discretization_manager< precision >inline
degree() constasgard::discretization_manager< precision >inline
degrees_of_freedom() constasgard::discretization_manager< precision >inline
discretization_manager(std::unique_ptr< PDE< precision > > &&pde_in, verbosity_level vebosity=verbosity_level::quiet)asgard::discretization_manager< precision >
dt() constasgard::discretization_manager< precision >inline
final_time_step() constasgard::discretization_manager< precision >inline
get_grid() constasgard::discretization_manager< precision >inline
get_pde() constasgard::discretization_manager< precision >inline
rmse_exact_sol() constasgard::discretization_manager< precision >
save_final_snapshot() constasgard::discretization_manager< precision >inline
save_snapshot(std::filesystem::path const &filename) constasgard::discretization_manager< precision >
set_final_time_step(int64_t new_final_time_step)asgard::discretization_manager< precision >inline
set_next_step(fk::vector< precision > const &next, std::optional< precision > new_dt={})asgard::discretization_manager< precision >inline
time() constasgard::discretization_manager< precision >inline
time_step() constasgard::discretization_manager< precision >inline
+
+ + + + + + diff --git a/current/classasgard_1_1discretization__manager.html b/current/classasgard_1_1discretization__manager.html new file mode 100644 index 000000000..11e7fc69d --- /dev/null +++ b/current/classasgard_1_1discretization__manager.html @@ -0,0 +1,272 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: asgard::discretization_manager< precision > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
asgard::discretization_manager< precision > Class Template Reference
+
+
+ +

Wrapper around several aspects of the pde discretization. + More...

+ +

#include <asgard_discretization.hpp>

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

+Public Member Functions

discretization_manager (std::unique_ptr< PDE< precision > > &&pde_in, verbosity_level vebosity=verbosity_level::quiet)
 take ownership of the pde object and discretize the pde
 
+int64_t degrees_of_freedom () const
 total degrees of freedom for the problem
 
+int degree () const
 returns the degree of the discretization
 
+int64_t time_step () const
 get the current time-step number
 
+precision dt () const
 get the current time-step size
 
+precision time () const
 get the current integration time
 
+int64_t final_time_step () const
 get the currently set final time step
 
+void set_final_time_step (int64_t new_final_time_step)
 set new final time step, must be no less than the current time_step()
 
void add_time_steps (int64_t additional_time_steps)
 add new time steps for simulation
 
+std::vector< precision > constcurrent_state () const
 return the current state, in wavelet format, local to this mpi rank
 
+void set_next_step (fk::vector< precision > const &next, std::optional< precision > new_dt={})
 register the next time step and checkpoint
 
+void checkpoint () const
 write out checkpoint/restart data and data for plotting
 
+void save_snapshot (std::filesystem::path const &filename) const
 write out snapshot data, same as checkpoint but can be invoked manually
 
+void save_final_snapshot () const
 calls save-snapshot for the final step, if requested with -outfile
 
std::optional< std::array< std::vector< precision >, 2 > > rmse_exact_sol () const
 if analytic solution exists, return the rmse error
 
+fk::vector< precisioncurrent_mpistate () const
 collect the current state from across all mpi ranks
 
+PDE< precision > constget_pde () const
 returns a ref to the original pde
 
+adapt::distributed_grid< precision > constget_grid () const
 returns a ref to the sparse grid
 
+

Detailed Description

+
template<typename precision>
+class asgard::discretization_manager< precision >

Wrapper around several aspects of the pde discretization.

+

Assumes ownership of the loaded PDE and builds the sparse grid and operators. The current state is set to the initial conditions and time is set to 0 (if a restart file is provided the state and time are loaded form the file).

+

Time integration can be performed with the advance_time() function.

+

Member Function Documentation

+ +

◆ add_time_steps()

+ +
+
+
+template<typename precision >
+ + + + + +
+ + + + + + + + +
void asgard::discretization_manager< precision >::add_time_steps (int64_t additional_time_steps)
+
+inline
+
+ +

add new time steps for simulation

+

could add negative number (i.e., subtract time steps) but cannot move the time before the current time_step()

+ +
+
+ +

◆ rmse_exact_sol()

+ +
+
+
+template<typename precision >
+ + + + + + + +
std::optional< std::array< std::vector< precision >, 2 > > asgard::discretization_manager< precision >::rmse_exact_sol () const
+
+ +

if analytic solution exists, return the rmse error

+

If no analytic solution has been specified, the optional will be empty. If an analytic solution exists, this will return both the absolute and relative rmse (normalized by the max entry of the exact solution). The vector contains an entry for each mpi rank.

+

(note: we are working on computing the rmse for all mpi ranks instead of per rank)

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + + diff --git a/current/classasgard_1_1discretization__manager.js b/current/classasgard_1_1discretization__manager.js new file mode 100644 index 000000000..578889c0d --- /dev/null +++ b/current/classasgard_1_1discretization__manager.js @@ -0,0 +1,21 @@ +var classasgard_1_1discretization__manager = +[ + [ "discretization_manager", "classasgard_1_1discretization__manager.html#adfb7ab38c9bb9d430d7db68551c25da4", null ], + [ "degrees_of_freedom", "classasgard_1_1discretization__manager.html#a0429ab964d0baaac3053d63373d3c8db", null ], + [ "degree", "classasgard_1_1discretization__manager.html#a434394297067419bf41a4bc65c1e07a1", null ], + [ "time_step", "classasgard_1_1discretization__manager.html#a3ff52943427629bbadcbc45c87530527", null ], + [ "dt", "classasgard_1_1discretization__manager.html#ad0abc8be1de4aec6c97a2d53bbe9d0ac", null ], + [ "time", "classasgard_1_1discretization__manager.html#a6136d41e47ac6b0608aa2a4b8f4f1495", null ], + [ "final_time_step", "classasgard_1_1discretization__manager.html#a3d5c023fae1de18e935a9a1c4462ed70", null ], + [ "set_final_time_step", "classasgard_1_1discretization__manager.html#a13e2759bd66f1bdce32e9875434be248", null ], + [ "add_time_steps", "classasgard_1_1discretization__manager.html#aaae436512728f99bf809d19c2de6b486", null ], + [ "current_state", "classasgard_1_1discretization__manager.html#abe689cf39c38c10bded512f09d697058", null ], + [ "set_next_step", "classasgard_1_1discretization__manager.html#a62f1d21a508af91d1fc7d44f8dbad471", null ], + [ "checkpoint", "classasgard_1_1discretization__manager.html#a44d0815467ce3ca66f7777da1c5cf91b", null ], + [ "save_snapshot", "classasgard_1_1discretization__manager.html#a16d3c55cf6d769b3127f8cb38ea34c8c", null ], + [ "save_final_snapshot", "classasgard_1_1discretization__manager.html#a683234a15797d986fcf1c816765e7bc3", null ], + [ "rmse_exact_sol", "classasgard_1_1discretization__manager.html#acb5ccd0f0a04921a7fe3ccd51fc8c84c", null ], + [ "current_mpistate", "classasgard_1_1discretization__manager.html#a39b9d235ec705cd64d3dd0b626544253", null ], + [ "get_pde", "classasgard_1_1discretization__manager.html#a6bc0a568fb961b1d96ad5f761193de7d", null ], + [ "get_grid", "classasgard_1_1discretization__manager.html#ab04340561d75b306f3ef3690846a7e13", null ] +]; \ No newline at end of file diff --git a/current/classasgard_1_1reconstruct__solution-members.html b/current/classasgard_1_1reconstruct__solution-members.html new file mode 100644 index 000000000..6eab413d3 --- /dev/null +++ b/current/classasgard_1_1reconstruct__solution-members.html @@ -0,0 +1,135 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
asgard::reconstruct_solution Member List
+
+
+ +

This is the complete list of members for asgard::reconstruct_solution, including all inherited members.

+ + + + + + + +
cell_centers(double x[]) constasgard::reconstruct_solution
num_cells() constasgard::reconstruct_solutioninline
num_dimensions() constasgard::reconstruct_solutioninline
reconstruct(double const x[], int num_x, double y[]) constasgard::reconstruct_solution
reconstruct_solution(int dims, int64_t num_cells, int const asg_cells[], int degree, precision const solution[])asgard::reconstruct_solution
set_domain_bounds(double const amin[], double const amax[])asgard::reconstruct_solution
+
+ + + + + + diff --git a/current/classasgard_1_1reconstruct__solution.html b/current/classasgard_1_1reconstruct__solution.html new file mode 100644 index 000000000..db059cece --- /dev/null +++ b/current/classasgard_1_1reconstruct__solution.html @@ -0,0 +1,311 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: asgard::reconstruct_solution Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
asgard::reconstruct_solution Class Reference
+
+
+ +

Reconstruct the solution at arbitrary points in the domain from hierarchical data. + More...

+ +

#include <asgard_reconstruct.hpp>

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

+Public Member Functions

template<typename precision >
 reconstruct_solution (int dims, int64_t num_cells, int const asg_cells[], int degree, precision const solution[])
 Constructor, prepares the data-structures for reconstruction.
 
void set_domain_bounds (double const amin[], double const amax[])
 Sets the min/max bound of the domain.
 
void reconstruct (double const x[], int num_x, double y[]) const
 Reconstruct the values of the solution at the given points.
 
+int num_dimensions () const
 Returns the number of dimensions.
 
+int64_t num_cells () const
 Returns the number of SG cells.
 
+void cell_centers (double x[]) const
 Returns the centers of the sparse grid cells.
 
+

Detailed Description

+

Reconstruct the solution at arbitrary points in the domain from hierarchical data.

+

The class is intended to be used from within Python for plotting and post-processing of the data. The API uses raw-arrays to facilitate interfacing with the Python ctypes module.

+

The reconstruction algorithms are taken from Tasmanian.

+

Constructor & Destructor Documentation

+ +

◆ reconstruct_solution()

+ +
+
+
+template<typename precision >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
asgard::reconstruct_solution::reconstruct_solution (int dims,
int64_t num_cells,
int const asg_cells[],
int degree,
precision const solution[] 
)
+
+ +

Constructor, prepares the data-structures for reconstruction.

+
Template Parameters
+ + +
precisionis auto-directed as float or double, reconstruction uses double precision but the coefficients can be provided in single precision
+
+
+
Parameters
+ + + + + + +
dimsis the problem number of dimenisons
num_cellsis the number of sparse grid cells (multi-indexes)
asg_cellsis an array of size 2 * dims * num_cells containing the multi-indexes in ASGarD format (level, index)
degreeis the polynomial order
solutionis the current set of coefficients representing the PDE solution, size is (degree + 1)^dims * num_cells
+
+
+ +
+
+

Member Function Documentation

+ +

◆ set_domain_bounds()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void asgard::reconstruct_solution::set_domain_bounds (double const amin[],
double const amax[] 
)
+
+ +

Sets the min/max bound of the domain.

+

Both arrays should have size equal to the number of dimensions, without this call the domain is set to the canonical (0, 1)

+ +
+
+ +

◆ reconstruct()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void asgard::reconstruct_solution::reconstruct (double const x[],
int num_x,
double y[] 
) const
+
+ +

Reconstruct the values of the solution at the given points.

+
Parameters
+ + + + +
xhas size num_x * number-of-dimensions and each strip of dims entries holds one point in the domain
num_xis the number of points for the reconstruction
yhas size num_x and will hold the values of the solution at the given set of points
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + + diff --git a/current/classasgard_1_1reconstruct__solution.js b/current/classasgard_1_1reconstruct__solution.js new file mode 100644 index 000000000..80046e717 --- /dev/null +++ b/current/classasgard_1_1reconstruct__solution.js @@ -0,0 +1,9 @@ +var classasgard_1_1reconstruct__solution = +[ + [ "reconstruct_solution", "classasgard_1_1reconstruct__solution.html#a422672cf40847ea4bcecd5cd076d0d29", null ], + [ "set_domain_bounds", "classasgard_1_1reconstruct__solution.html#a6d6343b22f9beed71a419003ae8b1cd9", null ], + [ "reconstruct", "classasgard_1_1reconstruct__solution.html#a8a3d9fa6e8d139b4dccc489532618b4c", null ], + [ "num_dimensions", "classasgard_1_1reconstruct__solution.html#aa201849cc0e12ef6662cf2549b370b53", null ], + [ "num_cells", "classasgard_1_1reconstruct__solution.html#a2ebd5460077f12f35331211e9bd6bed4", null ], + [ "cell_centers", "classasgard_1_1reconstruct__solution.html#a7183c0f4968688a3130a8c19d2d8f372", null ] +]; \ No newline at end of file diff --git a/current/classes.html b/current/classes.html new file mode 100644 index 000000000..2c0084e0c --- /dev/null +++ b/current/classes.html @@ -0,0 +1,138 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: Class Index + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+
+
D | P | R
+
+
+
D
+
discretization_manager (asgard)
+
+
P
+
prog_opts (asgard)
+
+
R
+
reconstruct_solution (asgard)
+
+
+
+ + + + + + diff --git a/current/closed.png b/current/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..19537caf92c2c881cb8bbc963332dfb87d1cc371 GIT binary patch literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V{+=$5Ar*{o?d_SQ@ z@QebpvBW{4CmtNzPaCm&|IW_OR(1HWE8o0HY=&(!ucLB-?DO6J_Gj6jF5h(7!gf>3 kK0kpwk2iVzIn}_P-Y$Cn#sk$WK%*HvUHx3vIVCg!0A?>QEC2ui literal 0 HcmV?d00001 diff --git a/current/dir_4e8d938e9ddb5a617c200d5739d1f41a.html b/current/dir_4e8d938e9ddb5a617c200d5739d1f41a.html new file mode 100644 index 000000000..4d1a4a7ad --- /dev/null +++ b/current/dir_4e8d938e9ddb5a617c200d5739d1f41a.html @@ -0,0 +1,127 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: doxygen Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
doxygen Directory Reference
+
+
+
+
+ + + + + + diff --git a/current/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/current/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 000000000..936fe6b1d --- /dev/null +++ b/current/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,143 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: src Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
src Directory Reference
+
+
+ + + + + + + + + + + + + + +

+Files

 asgard.hpp
 Main include file for all ASGarD methods and classes.
 
 asgard_discretization.hpp
 Defines the container class discretization_manager.
 
 asgard_program_options.hpp
 Defines common enums and the options manager class prog_opts.
 
 asgard_reconstruct.hpp
 Provides the class for reconstructing solution at arbitrary points in the domain.
 
+
+
+ + + + + + diff --git a/current/dir_68267d1309a1af8e8297ef4c3efbcdba.js b/current/dir_68267d1309a1af8e8297ef4c3efbcdba.js new file mode 100644 index 000000000..ade020c83 --- /dev/null +++ b/current/dir_68267d1309a1af8e8297ef4c3efbcdba.js @@ -0,0 +1,7 @@ +var dir_68267d1309a1af8e8297ef4c3efbcdba = +[ + [ "asgard.hpp", "asgard_8hpp.html", "asgard_8hpp" ], + [ "asgard_discretization.hpp", "asgard__discretization_8hpp.html", "asgard__discretization_8hpp" ], + [ "asgard_program_options.hpp", "asgard__program__options_8hpp.html", "asgard__program__options_8hpp" ], + [ "asgard_reconstruct.hpp", "asgard__reconstruct_8hpp.html", null ] +]; \ No newline at end of file diff --git a/current/doc.svg b/current/doc.svg new file mode 100644 index 000000000..f58b9f7bf --- /dev/null +++ b/current/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/current/docd.svg b/current/docd.svg new file mode 100644 index 000000000..4a331e296 --- /dev/null +++ b/current/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/current/doxygen.css b/current/doxygen.css new file mode 100644 index 000000000..6544b9e82 --- /dev/null +++ b/current/doxygen.css @@ -0,0 +1,2027 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #11271A; +--page-visited-link-color: #183725; + +/* index */ +--index-odd-item-bg-color: #EFF8F3; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F1F9F5; +--header-separator-color: #84C9A2; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #3A865B; +--group-header-color: #0C1C13; +--inherit-header-color: gray; + +--footer-foreground-color: #07100B; +--footer-logo-width: 104px; +--citation-label-color: #0B1911; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #204A32; +--directory-separator-color: #47A46F; +--separator-color: #1B3E2A; + +--blockquote-background-color: #ECF7F1; +--blockquote-border-color: #47A46F; + +--scrollbar-thumb-color: #47A46F; +--scrollbar-background-color: #F1F9F5; + +--icon-background-color: #2E6B49; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F1F9F5; +--memdecl-separator-color: #B6DFC7; +--memdecl-foreground-color: #555; +--memdecl-template-color: #183725; + +/* detailed member list */ +--memdef-border-color: #53B37D; +--memdef-title-background-color: #BFE3CF; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #B8E0C9; +--memdef-proto-text-color: #050C08; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #183725; + +/* tables */ +--table-cell-border-color: #08130D; +--table-header-background-color: #0D1F15; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #2E6B49; +--label-left-top-border-color: #204A32; +--label-right-bottom-border-color: #84C9A2; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F1F9F5; +--nav-foreground-color: #0C1D14; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #80C79F; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #060E0A; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #0C1D14; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #47A46F; +--nav-arrow-selected-color: #47A46F; + +/* table of contents */ +--toc-background-color: #E7F4ED; +--toc-border-color: #AADABF; +--toc-header-color: #183725; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F1F9F5; +--search-filter-foreground-color: black; +--search-filter-border-color: #3F9263; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #11271A; +--search-results-foreground-color: #142F20; +--search-results-background-color: #D8EEE1; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #183725; +--code-external-link-color: #183725; +--fragment-foreground-color: black; +--fragment-background-color: #F7FBF9; +--fragment-border-color: #84C9A2; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #183725; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #183725; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #183725; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #3F9263; +--page-visited-link-color: #4CAF77; + +/* index */ +--index-odd-item-bg-color: #000000; +--index-even-item-bg-color: black; +--index-header-color: #84C9A2; +--index-separator-color: #0B1911; + +/* header */ +--header-background-color: #000000; +--header-separator-color: #010201; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #060E0A; +--group-header-color: #3F9263; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #235237; +--footer-logo-width: 60px; +--citation-label-color: #3F9263; +--glow-color: cyan; + +--title-background-color: #000000; +--title-separator-color: #0C1C13; +--directory-separator-color: #060E0A; +--separator-color: #060E0A; + +--blockquote-background-color: #000101; +--blockquote-border-color: #060E0A; + +--scrollbar-thumb-color: #060E0A; +--scrollbar-background-color: #000000; + +--icon-background-color: #0B1911; +--icon-foreground-color: #84C9A2; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #000000; +--memdecl-separator-color: #07110C; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #347751; + +/* detailed member list */ +--memdef-border-color: #040A07; +--memdef-title-background-color: #020604; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #020403; +--memdef-proto-text-color: #48A671; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #347751; + +/* tables */ +--table-cell-border-color: #060E0A; +--table-header-background-color: #060E0A; +--table-header-foreground-color: #84C9A2; + +/* labels */ +--label-background-color: #0C1C13; +--label-left-top-border-color: #183725; +--label-right-bottom-border-color: #060E0A; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #000101; +--nav-foreground-color: #0C1D14; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #07100B; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #6BBE8F; +--nav-text-hover-color: #B1DDC4; +--nav-text-active-color: #B1DDC4; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #6BBE8F; +--nav-menu-background-color: #000000; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #0B1911; +--nav-arrow-selected-color: #3F9263; + +/* table of contents */ +--toc-background-color: #010302; +--toc-border-color: #030805; +--toc-header-color: #4CAF77; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #000101; +--search-filter-foreground-color: #3F9263; +--search-filter-border-color: #347751; +--search-filter-highlight-text-color: #75C297; +--search-filter-highlight-bg-color: #060E0A; +--search-results-background-color: #000101; +--search-results-foreground-color: #3F9263; +--search-results-border-color: #347751; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #09150E; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + 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 var(--glow-color); +} + +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: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.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: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +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 { + 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; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + 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: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +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 var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.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: var(--page-foreground-color); + 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.formulaDsp { + +} + +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: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + 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 var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +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: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + 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 var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* 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; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.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: var(--font-family-monospace); + 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: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + 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 var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + 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: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.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: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -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: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + 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:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + 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: var(--footer-foreground-color); +} + +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 var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + 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 { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.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: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + 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 var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.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: var(--footer-foreground-color); + 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: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +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 { + 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.section dd { + margin-bottom: 6px; +} + + +#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: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.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:var(--citation-label-color); + 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: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +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: var(--inherit-header-color); + 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: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + 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: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + 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: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + 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: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + 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 var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + 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, samp +{ + display: inline-block; +} +/* @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/current/doxygen.svg b/current/doxygen.svg new file mode 100644 index 000000000..2adb8d4fd --- /dev/null +++ b/current/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/current/dynsections.js b/current/dynsections.js new file mode 100644 index 000000000..b73c82889 --- /dev/null +++ b/current/dynsections.js @@ -0,0 +1,192 @@ +/* + @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) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var 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; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var 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 + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var 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 + var 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',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/current/files.html b/current/files.html new file mode 100644 index 000000000..0dc7a94e2 --- /dev/null +++ b/current/files.html @@ -0,0 +1,135 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: File List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 12]
+ + + + + +
  src
 asgard.hppMain include file for all ASGarD methods and classes
 asgard_discretization.hppDefines the container class discretization_manager
 asgard_program_options.hppDefines common enums and the options manager class prog_opts
 asgard_reconstruct.hppProvides the class for reconstructing solution at arbitrary points in the domain
+
+
+
+ + + + + + diff --git a/current/files_dup.js b/current/files_dup.js new file mode 100644 index 000000000..c3b39c499 --- /dev/null +++ b/current/files_dup.js @@ -0,0 +1,4 @@ +var files_dup = +[ + [ "src", "dir_68267d1309a1af8e8297ef4c3efbcdba.html", "dir_68267d1309a1af8e8297ef4c3efbcdba" ] +]; \ No newline at end of file diff --git a/current/folderclosed.svg b/current/folderclosed.svg new file mode 100644 index 000000000..091f65478 --- /dev/null +++ b/current/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/current/folderclosedd.svg b/current/folderclosedd.svg new file mode 100644 index 000000000..0ac417654 --- /dev/null +++ b/current/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/current/folderopen.svg b/current/folderopen.svg new file mode 100644 index 000000000..1f1090c2d --- /dev/null +++ b/current/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/current/folderopend.svg b/current/folderopend.svg new file mode 100644 index 000000000..87fe5673c --- /dev/null +++ b/current/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/current/functions.html b/current/functions.html new file mode 100644 index 000000000..d64e9a8ee --- /dev/null +++ b/current/functions.html @@ -0,0 +1,246 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- a -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- i -

+ + +

- k -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- w -

+
+
+ + + + + + diff --git a/current/functions_func.html b/current/functions_func.html new file mode 100644 index 000000000..964b975f4 --- /dev/null +++ b/current/functions_func.html @@ -0,0 +1,204 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- a -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- m -

+ + +

- n -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+
+
+ + + + + + diff --git a/current/functions_vars.html b/current/functions_vars.html new file mode 100644 index 000000000..bf495f1d6 --- /dev/null +++ b/current/functions_vars.html @@ -0,0 +1,153 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: Class Members - Variables + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented variables with links to the class documentation for each member:
+
+
+ + + + + + diff --git a/current/graph_legend.html b/current/graph_legend.html new file mode 100644 index 000000000..1afaf73e9 --- /dev/null +++ b/current/graph_legend.html @@ -0,0 +1,186 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: Graph Legend + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
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 labelled 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 labelled with the template parameters of the instance.
  • +
+
+
+ + + + + + diff --git a/current/graph_legend.md5 b/current/graph_legend.md5 new file mode 100644 index 000000000..da515da9d --- /dev/null +++ b/current/graph_legend.md5 @@ -0,0 +1 @@ +f74606a252eb303675caf37987d0b7af \ No newline at end of file diff --git a/current/graph_legend.png b/current/graph_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..c96a00f0d7d5ef6f6b3f994d589d5aa8e17f9cc6 GIT binary patch literal 23378 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 H9HRaM0AVC3 literal 0 HcmV?d00001 diff --git a/current/group__asgard__common__options.html b/current/group__asgard__common__options.html new file mode 100644 index 000000000..b52a5e8e0 --- /dev/null +++ b/current/group__asgard__common__options.html @@ -0,0 +1,401 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: ASGarD Common Options + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ASGarD Common Options
+
+
+ + + + + +

+Files

file  asgard_program_options.hpp
 Defines common enums and the options manager class prog_opts.
 
+ + + + +

+Classes

struct  asgard::prog_opts
 Reads options from the command line and input files. More...
 
+ + + + + + + + + + + + + + + + + + + + +

+Enumerations

enum class  asgard::verbosity_level { verbosity_level::quiet +, verbosity_level::high + }
 Allows reducing the amount of cout-noise. More...
 
enum class  asgard::solve_opts { solve_opts::direct +, solve_opts::gmres +, solve_opts::bicgstab +, solve_opts::scalapack + }
 the available solvers for implicit time stepping More...
 
enum class  asgard::PDE_opts {
+  custom = 0 +, advection_1 +, continuity_1 +, continuity_2 +,
+  continuity_3 +, continuity_6 +, fokkerplanck_1d_pitch_E_case1 +, fokkerplanck_1d_pitch_E_case2 +,
+  fokkerplanck_1d_pitch_C +, fokkerplanck_1d_4p3 +, fokkerplanck_1d_4p4 +, fokkerplanck_1d_4p5 +,
+  fokkerplanck_2d_complete_case1 +, fokkerplanck_2d_complete_case2 +, fokkerplanck_2d_complete_case3 +, fokkerplanck_2d_complete_case4 +,
+  diffusion_1 +, diffusion_2 +, vlasov_lb_full_f +, vlasov_two_stream +,
+  relaxation_1x1v +, relaxation_1x2v +, relaxation_1x3v +, riemann_1x2v +,
+  riemann_1x3v +, collisional_landau +, collisional_landau_1x2v +, collisional_landau_1x3v +
+ }
 list of builtin PDE specifications, refer to the specs in the src/pde folder
 
enum class  asgard::kronmult_mode { kronmult_mode::dense +, kronmult_mode::sparse + }
 Indicates whether we should be using sparse or dense kronmult. More...
 
enum class  asgard::grid_type { grid_type::sparse +, grid_type::dense +, grid_type::mixed + }
 Type of discretization grid. More...
 
enum class  asgard::time_advance::method { method::imp +, method::exp +, method::imex + }
 
enum  asgard::adapt_norm { asgard::l2 +, asgard::linf + }
 
+

Detailed Description

+

Common options shared by most or even all PDEs and discretization methods. The tools provided here allow for reading the options from either the command line or an input file and also specify PDE specific options.

+

Enumeration Type Documentation

+ +

◆ verbosity_level

+ +
+
+ + + + + +
+ + + + +
enum class asgard::verbosity_level
+
+strong
+
+ +

Allows reducing the amount of cout-noise.

+

The high noise is usually desired for large simulations as the cout stream will become a log for the various aspects of the problem. This is very useful for debugging, catching early problems and keeping an eye on a long simulation.

+

However, high noise is bad for testing and potentially some large applications, e.g., high verbosity may drown important messages from other sub-systems.

+ + + +
Enumerator
quiet 

do not generate cout output, except on errors and important warnings

+
high 

provide a detailed log of the various aspects of the simulation

+
+ +
+
+ +

◆ solve_opts

+ +
+
+ + + + + +
+ + + + +
enum class asgard::solve_opts
+
+strong
+
+ +

the available solvers for implicit time stepping

+ + + + + +
Enumerator
direct 

direct solve using LAPACK, slow but stable

+
gmres 

popular iterative solver, can be sensitive to the tolerance and restart frequency

+
bicgstab 

alternative to gmres, cheaper when taking many steps between restarts

+
scalapack 

distributed direct solver, MPI-powered alternative to LAPACK

+
+ +
+
+ +

◆ kronmult_mode

+ +
+
+ + + + + +
+ + + + +
enum class asgard::kronmult_mode
+
+strong
+
+ +

Indicates whether we should be using sparse or dense kronmult.

+

Used by the local kronmult, global kronmult (block or non-block case) will ignore these options.

+ + + +
Enumerator
dense 

Using a dense matrix (assumes everything is connected).

+
sparse 

Using a sparse matrix (checks for connectivity).

+
+ +
+
+ +

◆ grid_type

+ +
+
+ + + + + +
+ + + + +
enum class asgard::grid_type
+
+strong
+
+ +

Type of discretization grid.

+ + + + +
Enumerator
sparse 

Standard spars grid.

+
dense 

Dense grid.

+
mixed 

Dense tensor of two sparse grids.

+
+ +
+
+ +

◆ method

+ +
+
+ + + + + +
+ + + + +
enum class asgard::time_advance::method
+
+strong
+
+

types of time time advance methods, declared here to be used in the program options

+ + + + +
Enumerator
imp 

implicit solve, backward Euler

+
exp 

(default) explicit Runge–Kutta

+
imex 

implicit-explicit scheme for nonlinear Vlasov-Poisson problems

+
+ +
+
+ +

◆ adapt_norm

+ +
+
+

norm to use for adaptivity, experiments show little difference

+ + + +
Enumerator
l2 

L-2 norm.

+
linf 

L-inf norm, a.k.a., max or sup norm.

+
+ +
+
+
+
+ + + + + + diff --git a/current/group__asgard__common__options.js b/current/group__asgard__common__options.js new file mode 100644 index 000000000..f9d5f2cec --- /dev/null +++ b/current/group__asgard__common__options.js @@ -0,0 +1,72 @@ +var group__asgard__common__options = +[ + [ "asgard_program_options.hpp", "asgard__program__options_8hpp.html", null ], + [ "asgard::prog_opts", "structasgard_1_1prog__opts.html", [ + [ "prog_opts", "structasgard_1_1prog__opts.html#a0bc9863e43cfcef572871afb604fc2d2", null ], + [ "prog_opts", "structasgard_1_1prog__opts.html#ac346c18b2aaa6e5ddd5760330fd863b2", null ], + [ "prog_opts", "structasgard_1_1prog__opts.html#a3a21b84ad09c87031a97a47f4c92978a", null ], + [ "prog_opts", "structasgard_1_1prog__opts.html#a8f0a960af52da9d4c8df8b5a4a4e4534", null ], + [ "print_options", "structasgard_1_1prog__opts.html#ab3d91ca5006733bf61632646bb986686", null ], + [ "start_levels_str", "structasgard_1_1prog__opts.html#a4420d12a7fc8d5de612961c5ec4ef8ca", null ], + [ "max_levels_str", "structasgard_1_1prog__opts.html#a7d8c1c6e346a89eee9843ba042a8ddf4", null ], + [ "file_value", "structasgard_1_1prog__opts.html#a3f9d25d677cebcfb923da72a827688b5", null ], + [ "extra_cli_value", "structasgard_1_1prog__opts.html#a8030d9bde292b716a90e782e33fb89ca", null ], + [ "title", "structasgard_1_1prog__opts.html#a6e7a6245159b10c3edc35137ca8a97cd", null ], + [ "subtitle", "structasgard_1_1prog__opts.html#a7773c6a5528a7e226a99b2366a24d83c", null ], + [ "pde_choice", "structasgard_1_1prog__opts.html#afec68ece1ca142f315dba5976aeed4b5", null ], + [ "start_levels", "structasgard_1_1prog__opts.html#ac07f3aa1555326421f446bb40cd3eb23", null ], + [ "max_levels", "structasgard_1_1prog__opts.html#a5a256ab4f45cc60c60e8945d3ab3a0d9", null ], + [ "grid", "structasgard_1_1prog__opts.html#af262e151500fa66ee03d414be64f4862", null ], + [ "mgrid_group", "structasgard_1_1prog__opts.html#af476187bfa5612a4fbb699ce5041373f", null ], + [ "degree", "structasgard_1_1prog__opts.html#a188de9dc3c3a60e6b05946fff96ca855", null ], + [ "adapt_threshold", "structasgard_1_1prog__opts.html#a95dec6dce17aea2fe838551d534708fd", null ], + [ "anorm", "structasgard_1_1prog__opts.html#a71e1b12c53d65628b8b57751029c0ec4", null ], + [ "step_method", "structasgard_1_1prog__opts.html#aa7f1b2afc9cce8c52ae12bf6187f3700", null ], + [ "dt", "structasgard_1_1prog__opts.html#a6123a01c2dab828aeffaa23c188a6ac7", null ], + [ "num_time_steps", "structasgard_1_1prog__opts.html#a16934efeef64a7c01531f2cc6a90cabf", null ], + [ "set_electric", "structasgard_1_1prog__opts.html#a4878da968a3ee7e9bde5fb6c995f8527", null ], + [ "wavelet_output_freq", "structasgard_1_1prog__opts.html#a04ab4ead20d4f61367a4e3f3d8193ec9", null ], + [ "solver", "structasgard_1_1prog__opts.html#a949e474fcecce4c287977d877cfa16b1", null ], + [ "isolver_tolerance", "structasgard_1_1prog__opts.html#aaf16c55109b4d9adf71e7409da66a0cb", null ], + [ "isolver_iterations", "structasgard_1_1prog__opts.html#aae3ff3b1826642d662341b39d1307bdb", null ], + [ "isolver_outer_iterations", "structasgard_1_1prog__opts.html#a72924b0e5f2a95b1e2ab227c7d4dac05", null ], + [ "kron_mode", "structasgard_1_1prog__opts.html#a3d095bbb912cd33db58dfea9d415295a", null ], + [ "memory_limit", "structasgard_1_1prog__opts.html#a0e1a2795f936588ed27deaa7b2b296d2", null ], + [ "restart_file", "structasgard_1_1prog__opts.html#ac5ebf718b89f429b2788f3e8cf174a6a", null ], + [ "outfile", "structasgard_1_1prog__opts.html#a7ab7518a56acd9d8dc4dd6d27cfe3a25", null ], + [ "show_help", "structasgard_1_1prog__opts.html#a84c32b11b5effcb85826e0e34b05998b", null ], + [ "show_version", "structasgard_1_1prog__opts.html#adbcc2263948af7ec1cb563b1d0def5ec", null ], + [ "show_pde_help", "structasgard_1_1prog__opts.html#a93c15ac856d9f9b357ce459cb69ed2b0", null ], + [ "ignore_exact", "structasgard_1_1prog__opts.html#a0ae68b7d0039aa06787707848841b12c", null ], + [ "externals", "structasgard_1_1prog__opts.html#aa68046f253bf88a3745191b771708d88", null ] + ] ], + [ "asgard::verbosity_level", "group__asgard__common__options.html#ga6c50a754f177f157e865946f8b68321f", [ + [ "asgard::verbosity_level::quiet", "group__asgard__common__options.html#gga6c50a754f177f157e865946f8b68321fa556966c7830465dc4623d62e32cec31d", null ], + [ "asgard::verbosity_level::high", "group__asgard__common__options.html#gga6c50a754f177f157e865946f8b68321fa8d966b2253a917086c8604959e152243", null ] + ] ], + [ "asgard::solve_opts", "group__asgard__common__options.html#gab913190c29228e6ad8a39d18a50aaea7", [ + [ "asgard::solve_opts::direct", "group__asgard__common__options.html#ggab913190c29228e6ad8a39d18a50aaea7a7caa701b2bd5a182b80c72b9bdf88e2d", null ], + [ "asgard::solve_opts::gmres", "group__asgard__common__options.html#ggab913190c29228e6ad8a39d18a50aaea7ad43c33b8e3d5435d9cbe65c156887a02", null ], + [ "asgard::solve_opts::bicgstab", "group__asgard__common__options.html#ggab913190c29228e6ad8a39d18a50aaea7ae123b37d2b5fd373237e049a1e68ca13", null ], + [ "asgard::solve_opts::scalapack", "group__asgard__common__options.html#ggab913190c29228e6ad8a39d18a50aaea7a75ed89791e1997d58d57456262786673", null ] + ] ], + [ "asgard::PDE_opts", "group__asgard__common__options.html#gad541250bcbd39977e699e8cc9d93100d", null ], + [ "asgard::kronmult_mode", "group__asgard__common__options.html#ga6b51b79ca35557fbf6d9b8d4f79fddd2", [ + [ "asgard::kronmult_mode::dense", "group__asgard__common__options.html#gga6b51b79ca35557fbf6d9b8d4f79fddd2a0eccef1fe0100f85b12e6eabe08eaff6", null ], + [ "asgard::kronmult_mode::sparse", "group__asgard__common__options.html#gga6b51b79ca35557fbf6d9b8d4f79fddd2a5dabba66ddc7b1e6f193ff73d3c55e94", null ] + ] ], + [ "asgard::grid_type", "group__asgard__common__options.html#ga7dbd43735a473f41375866c2042f815f", [ + [ "asgard::grid_type::sparse", "group__asgard__common__options.html#gga7dbd43735a473f41375866c2042f815fa5dabba66ddc7b1e6f193ff73d3c55e94", null ], + [ "asgard::grid_type::dense", "group__asgard__common__options.html#gga7dbd43735a473f41375866c2042f815fa0eccef1fe0100f85b12e6eabe08eaff6", null ], + [ "asgard::grid_type::mixed", "group__asgard__common__options.html#gga7dbd43735a473f41375866c2042f815fa1d770934d44de09b0d24f04fd01708ba", null ] + ] ], + [ "asgard::time_advance::method", "group__asgard__common__options.html#ga54dc8c95a692aa0ca4740dc972259be3", [ + [ "asgard::time_advance::method::imp", "group__asgard__common__options.html#gga54dc8c95a692aa0ca4740dc972259be3a72bb0a20dbae84efcc752cb287357197", null ], + [ "asgard::time_advance::method::exp", "group__asgard__common__options.html#gga54dc8c95a692aa0ca4740dc972259be3ab0ab0254bd58eb87eaee3172ba49fefb", null ], + [ "asgard::time_advance::method::imex", "group__asgard__common__options.html#gga54dc8c95a692aa0ca4740dc972259be3a1ee78c9863801107ef1bd05fbe4b22e1", null ] + ] ], + [ "asgard::adapt_norm", "group__asgard__common__options.html#ga66a1204a68161bcfbf3bcf5726800aaa", [ + [ "asgard::l2", "group__asgard__common__options.html#gga66a1204a68161bcfbf3bcf5726800aaaa52bf24b4561ae2daa76408d9d1dfb5af", null ], + [ "asgard::linf", "group__asgard__common__options.html#gga66a1204a68161bcfbf3bcf5726800aaaa8e1bfde40fc388cd099c0999035b80ba", null ] + ] ] +]; \ No newline at end of file diff --git a/current/group__asgard__discretization.html b/current/group__asgard__discretization.html new file mode 100644 index 000000000..e80b94bb6 --- /dev/null +++ b/current/group__asgard__discretization.html @@ -0,0 +1,323 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: ASGarD Discretization Tools + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ASGarD Discretization Tools
+
+
+ + + + + + + + +

+Files

file  asgard.hpp
 Main include file for all ASGarD methods and classes.
 
file  asgard_discretization.hpp
 Defines the container class discretization_manager.
 
+ + + + +

+Classes

class  asgard::discretization_manager< precision >
 Wrapper around several aspects of the pde discretization. More...
 
+ + + + + + + + + + + + + + + + + +

+Functions

template<typename precision >
void asgard::simulate_builtin (prog_opts const &options)
 Simulates one of the builtin PDEs.
 
template<typename pde_class >
auto asgard::discretize (prog_opts const &options, verbosity_level verbosity=verbosity_level::quiet)
 Creates a discretization for the given pde and options.
 
template<typename pde_class >
void asgard::simulate (prog_opts const &options, verbosity_level verbosity=verbosity_level::quiet)
 One shot method, simulate the pde with the given options.
 
template<typename P >
void asgard::advance_time (discretization_manager< P > &manager, int64_t num_steps=-1)
 Integrates in time until the final time or number of steps.
 
+

Detailed Description

+

Given a PDE specification, these tools create a sparse grid discretization of the state, source and operator terms, and performs time-stepping integration in time.

+

Function Documentation

+ +

◆ simulate_builtin()

+ +
+
+
+template<typename precision >
+ + + + + + + + +
void asgard::simulate_builtin (prog_opts constoptions)
+
+ +

Simulates one of the builtin PDEs.

+

The options.pde_choice must contain a valid PDE_opts that is not PDE_opts::custom. This method is equivalent to calling the asgard executable.

+ +
+
+ +

◆ discretize()

+ +
+
+
+template<typename pde_class >
+ + + + + + + + + + + + + + + + + + +
auto asgard::discretize (prog_opts const & options,
verbosity_level verbosity = verbosity_level::quiet 
)
+
+ +

Creates a discretization for the given pde and options.

+

Creates a new asgard::discretization_manager, unlike the one-shot method asgard::simulate(), the discretization allows for finer control of the time steeping and output frequency.

+
Template Parameters
+ + +
pde_classis a user provided PDE specification that is derived from the base asgard::PDE class
+
+
+
Parameters
+ + + +
optionsis a set of options, either provided from the command line, a file or manually set by the user
verbosityindicates how much output ASGarD should provide, verbosity_level::high is useful for development and debugging while quiet is suitable for long simulations
+
+
+
Returns
an instance of asgard::discretization_manager
+

Note: options.pde_choice must be either empty (does not contain a value) or set to PDE_opts::custom

+ +
+
+ +

◆ simulate()

+ +
+
+
+template<typename pde_class >
+ + + + + + + + + + + + + + + + + + +
void asgard::simulate (prog_opts constoptions,
verbosity_level verbosity = verbosity_level::quiet 
)
+
+ +

One shot method, simulate the pde with the given options.

+

Creates a new PDE, discretizes it and advances in time according to the options specified by the prog_opts instance and the PDE specification.

+
Template Parameters
+ + +
pde_classis a user provided PDE specification that is derived from the base asgard::PDE class
+
+
+
Parameters
+ + + +
optionsis a set of options, either provided from the command line, a file or manually set by the user
verbosityindicates how much output ASGarD should provide, verbosity_level::high is useful for development and debugging while quiet is suitable for long simulations
+
+
+

Note: options.pde_choice must be either empty (does not contain a value) or set to PDE_opts::custom

+ +
+
+ +

◆ advance_time()

+ +
+
+
+template<typename P >
+ + + + + + + + + + + + + + + + + + +
void asgard::advance_time (discretization_manager< P > & manager,
int64_t num_steps = -1 
)
+
+ +

Integrates in time until the final time or number of steps.

+

This method manipulates the problems internal state, applying adaptivity, checkpointing and other related operations. The method is decalred as a friend to simplify the implementation is external to simplify the discretization_manager class, which will primarily focus on data storage.

+

The optional variable num_steps indicates the number of time steps to take:

    +
  • if zero, the method will return immediately,
  • +
  • if negative, integration will continue until the final time step
  • +
+ +
+
+
+
+ + + + + + diff --git a/current/group__asgard__discretization.js b/current/group__asgard__discretization.js new file mode 100644 index 000000000..4ca3f318e --- /dev/null +++ b/current/group__asgard__discretization.js @@ -0,0 +1,29 @@ +var group__asgard__discretization = +[ + [ "asgard.hpp", "asgard_8hpp.html", null ], + [ "asgard_discretization.hpp", "asgard__discretization_8hpp.html", null ], + [ "asgard::discretization_manager< precision >", "classasgard_1_1discretization__manager.html", [ + [ "discretization_manager", "classasgard_1_1discretization__manager.html#adfb7ab38c9bb9d430d7db68551c25da4", null ], + [ "degrees_of_freedom", "classasgard_1_1discretization__manager.html#a0429ab964d0baaac3053d63373d3c8db", null ], + [ "degree", "classasgard_1_1discretization__manager.html#a434394297067419bf41a4bc65c1e07a1", null ], + [ "time_step", "classasgard_1_1discretization__manager.html#a3ff52943427629bbadcbc45c87530527", null ], + [ "dt", "classasgard_1_1discretization__manager.html#ad0abc8be1de4aec6c97a2d53bbe9d0ac", null ], + [ "time", "classasgard_1_1discretization__manager.html#a6136d41e47ac6b0608aa2a4b8f4f1495", null ], + [ "final_time_step", "classasgard_1_1discretization__manager.html#a3d5c023fae1de18e935a9a1c4462ed70", null ], + [ "set_final_time_step", "classasgard_1_1discretization__manager.html#a13e2759bd66f1bdce32e9875434be248", null ], + [ "add_time_steps", "classasgard_1_1discretization__manager.html#aaae436512728f99bf809d19c2de6b486", null ], + [ "current_state", "classasgard_1_1discretization__manager.html#abe689cf39c38c10bded512f09d697058", null ], + [ "set_next_step", "classasgard_1_1discretization__manager.html#a62f1d21a508af91d1fc7d44f8dbad471", null ], + [ "checkpoint", "classasgard_1_1discretization__manager.html#a44d0815467ce3ca66f7777da1c5cf91b", null ], + [ "save_snapshot", "classasgard_1_1discretization__manager.html#a16d3c55cf6d769b3127f8cb38ea34c8c", null ], + [ "save_final_snapshot", "classasgard_1_1discretization__manager.html#a683234a15797d986fcf1c816765e7bc3", null ], + [ "rmse_exact_sol", "classasgard_1_1discretization__manager.html#acb5ccd0f0a04921a7fe3ccd51fc8c84c", null ], + [ "current_mpistate", "classasgard_1_1discretization__manager.html#a39b9d235ec705cd64d3dd0b626544253", null ], + [ "get_pde", "classasgard_1_1discretization__manager.html#a6bc0a568fb961b1d96ad5f761193de7d", null ], + [ "get_grid", "classasgard_1_1discretization__manager.html#ab04340561d75b306f3ef3690846a7e13", null ] + ] ], + [ "asgard::simulate_builtin", "group__asgard__discretization.html#ga999da55616b6bd2a69d7e18f508e6cc5", null ], + [ "asgard::discretize", "group__asgard__discretization.html#gad164da3f9c1385970da2aa1bbe6ffcb2", null ], + [ "asgard::simulate", "group__asgard__discretization.html#gaf9f5e5a47902e550bbafbcbe7b67cbff", null ], + [ "asgard::advance_time", "group__asgard__discretization.html#ga2237b286ae85a14631d7f1bf88c6fb54", null ] +]; \ No newline at end of file diff --git a/current/group__asgard__postprocess.html b/current/group__asgard__postprocess.html new file mode 100644 index 000000000..4e282254b --- /dev/null +++ b/current/group__asgard__postprocess.html @@ -0,0 +1,145 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: ASGarD Post Processing Tools + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ASGarD Post Processing Tools
+
+
+ + + + + +

+Files

file  asgard_reconstruct.hpp
 Provides the class for reconstructing solution at arbitrary points in the domain.
 
+ + + + +

+Classes

class  asgard::reconstruct_solution
 Reconstruct the solution at arbitrary points in the domain from hierarchical data. More...
 
+

Detailed Description

+

The internal data-structures of ASGarD store the solution state in hierarchical format, i.e., vector of coefficients associated with sparse grid points. Interpretation of the data in raw format is challenging at best but converting the data into a more standard dense-grid format is also not feasible in high dimensions.

+

The asgard::reconstruct_solution can find the value of the solution at arbitrary points of the domain but computing the sum of coefficients times the values of the basis functions. The class also comes with bindings for Python and MATLAB. See the included examples.

+
+
+ + + + + + diff --git a/current/group__asgard__postprocess.js b/current/group__asgard__postprocess.js new file mode 100644 index 000000000..3c6f86234 --- /dev/null +++ b/current/group__asgard__postprocess.js @@ -0,0 +1,12 @@ +var group__asgard__postprocess = +[ + [ "asgard_reconstruct.hpp", "asgard__reconstruct_8hpp.html", null ], + [ "asgard::reconstruct_solution", "classasgard_1_1reconstruct__solution.html", [ + [ "reconstruct_solution", "classasgard_1_1reconstruct__solution.html#a422672cf40847ea4bcecd5cd076d0d29", null ], + [ "set_domain_bounds", "classasgard_1_1reconstruct__solution.html#a6d6343b22f9beed71a419003ae8b1cd9", null ], + [ "reconstruct", "classasgard_1_1reconstruct__solution.html#a8a3d9fa6e8d139b4dccc489532618b4c", null ], + [ "num_dimensions", "classasgard_1_1reconstruct__solution.html#aa201849cc0e12ef6662cf2549b370b53", null ], + [ "num_cells", "classasgard_1_1reconstruct__solution.html#a2ebd5460077f12f35331211e9bd6bed4", null ], + [ "cell_centers", "classasgard_1_1reconstruct__solution.html#a7183c0f4968688a3130a8c19d2d8f372", null ] + ] ] +]; \ No newline at end of file diff --git a/current/index.html b/current/index.html new file mode 100644 index 000000000..c127bceee --- /dev/null +++ b/current/index.html @@ -0,0 +1,167 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: ASGarD - Adaptive Sparse Grid Discretization + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ASGarD - Adaptive Sparse Grid Discretization
+
+
+

To cite the ASGarD code in your work, please use: doi:10.11578/dc.20201125.5

+

Papers using ASGarD:

+

The ASGarD project has the goal of building a solver specifically targeting high-dimensional PDEs where the "curse-of-dimensionality" has previously precluded useful continuum / Eularian (grid or mesh based as opposed to Monte-Carlo sampling) simulation. Our approach is based on a Discontinuous-Galerkin finite-element solver build atop an adaptive hierarchical sparse-grid (note this is different from the "combination technique" when applied to sparse-grids).

+

Documentation of usage: https://ornl.github.io/project-asgard/asgard

+

The developer documentation contains information about how to contribute to the ASGarD project.

+

+Contact Us

+

Issues are a great way to discuss all aspects of the ASGarD project, whether it is to ask a general question, request a new feature, or propose a contribution to the code base.

+

The ASGarD project was initiated by David Green at Oak Ridge National Laboratory.

+

For technical questions, contact Miroslav Stoyanov (stoya.nosp@m.novm.nosp@m.k@orn.nosp@m.l.go.nosp@m.v) at Oak Ridge National Laboratory.

+

+Automated Test Status

+ + + + + + + + + + + + + + + + + +
Test Status (Develop)
format/clang Build Status
warnings/clang Build Status
unit/g++ Build Status
unit/clang++ Build Status
unit/g++/mpi Build Status
unit/g++/cuda Build Status
unit/g++/io Build Status
+

+Dependencies

+
    +
  • C++17
  • +
  • cmake 3.19
  • +
  • BLAS/LAPACK
  • +
+

See the detailed Installation instructions.

+
+
+
+ + + + + + diff --git a/current/index.js b/current/index.js new file mode 100644 index 000000000..0ce567caa --- /dev/null +++ b/current/index.js @@ -0,0 +1,6 @@ +var index = +[ + [ "Contact Us", "index.html#autotoc_md1", null ], + [ "Automated Test Status", "index.html#autotoc_md2", null ], + [ "Dependencies", "index.html#autotoc_md3", null ] +]; \ No newline at end of file diff --git a/current/jquery.js b/current/jquery.js new file mode 100644 index 000000000..1dffb65b5 --- /dev/null +++ b/current/jquery.js @@ -0,0 +1,34 @@ +/*! 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?"\ufffd":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"},$}); \ No newline at end of file diff --git a/current/md_doxygen_2basic__usage.html b/current/md_doxygen_2basic__usage.html new file mode 100644 index 000000000..425d5cc85 --- /dev/null +++ b/current/md_doxygen_2basic__usage.html @@ -0,0 +1,162 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: Basic Usage + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Basic Usage
+
+
+

The best place to start is with the examples installed in

<CMAKE_INSTRALL_PREFIX>/share/asgard/examples/
+

+Write your own PDE class

+

Similar to the provided examples, a PDE specification starts as a derived class from asgard::PDE, where we define the operator term and sources and call the parent initialize() method. While generally speaking the two-stage initialization is an anti-pattern, here this is done to provide maximum flexibility to the user. We are currently exploring alternative approaches to the API but the existing process will be supported for the foreseeable future.

+

In the provided example, the functions in the terms are using static members but those use std::function and are very flexible, e.g., those can accept lambda-closures. The main reason to use static methods can variables is to avoid potential issues that can arise from:

    +
  • capture of pointer this the lifetime of the object
  • +
  • the relocation of the object, moving the pointer/reference
  • +
  • capture by value (copy) vs. capture by reference The approach of static variables effectively creates a singleton class and avoids the above potential pitfalls, at the restriction of allowing the simulation of only one PDE instance at a time.
  • +
+

Additional examples are provided in the source folder src/pde/ while those contain a lot more capabilities than shown in the simple examples, most of those are rather cryptic and not intended for tutorial purposes. The ASGarD team is working to improve the presentation of the examples.

+

+Compile against the installed libasgard

+

The examples also include a simple CMakeLists.txt file that shows how to link to ASGarD. The key command is:

find_package(asgard)
+

The example CMake file contains the installation path which can be hardcoded into the custom project. Alternatively, the PATHS directive can be omitted but then we have to provide asgard_ROOT to the CMake configuration, as per the established CMake conventions.

+

As an alternative, there environment setup script:

source <CMAKE_INSTRALL_PREFIX>/share/asgard/asgard-env.sh
+

Which will set asgard_ROOT, the PATH to the asgard executable and the path to the python module.

+

+Running and plotting

+

The current way to plot and post-process the solution to a PDE is to first run the problem and output an HDF5 file. Then load the file using python and the provided asgard module or use the Python-MATLAB integration. This requires CMake options

-D ASGARD_USE_PYTHON=ON
+
-D ASGARD_IO_HIGHFIVE=ON
+

The data stored in the HDF5 file is in sparse grid hierarchical format, full reconstruction over a dense high-dimensional domain is computationally impractical to infeasible. The asgard python module links to the C++ code from libasgard and allows for fast reconstruction of 1D and 2D slices of the domain, or reconstruction at arbitrary set of points.

+

Python must be able to find the files for the asgard module, which an be done in several ways:

    +
  • source the asgard-env.sh setup script, see above
  • +
  • manually set PYTHONPATH environment variable
  • +
  • add the path to the python script directly
    import sys
    +
    sys.path.append('<CMAKE_INSTRALL_PREFIX>/lib/python<version>/site-packages/')
    +
    # using the ASGarD install prefix and python version
    +
  • +
  • setup a python venv and install ASGarD into the same python folder, i.e.,
    python3 -m venv <path-to-venv>
    +
    source <path-to-venv>/bin/activate
    +
    ...
    +
    cmake -DCMAKE_INSTALL_PREFIX=<path-to-venv> ....
    +
  • +
+

The installed examples contain Python and MATLAB demonstration scripts.

+
+
+
+ + + + + + diff --git a/current/md_doxygen_2installation.html b/current/md_doxygen_2installation.html new file mode 100644 index 000000000..aa11f7b1d --- /dev/null +++ b/current/md_doxygen_2installation.html @@ -0,0 +1,219 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: Installation + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + doxygen + 1.9.8 +
+
ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
+
+ +   + + + + +
+
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Installation
+
+
+ +

+

+Document Sections

+
    +
  • Requirements
  • +
  • Installation
  • +
  • Basic usage
  • +
+

+Requirements

+

Minimum requirements run ASGarD

+

Recommended but optional

    +
  • OpenMP for CPU multi-threading
      +
    • supported by GCC and most recent versions of Clang (16 or newer)
    • +
    +
  • +
  • If you have Nvidia GPU ASGarD can take advantage of the linear algebra libraries and custom CUDA kernels
  • +
  • HDF5 and HighFive libraries to output the solution state
  • +
  • Python bindings using h5py and numpy for easier visualization and HDF5 post-processing
  • +
+

Other CMake options

    +
  • dynamic/shared libraries are used by default, static build is possible with -DBUILD_SHARED_LIBS=OFF
      +
    • Python bindings require shared libraries
    • +
    +
  • +
  • tests with CMake's ctest are enabled by default, disable with -DASGARD_BUILD_TESTS=OFF
  • +
  • ASGarD builds with both single (float) and double precision, pick just one for faster compile time
  • +
+

ASGarD has the ability to automatically download and install OpenBLAS and HDF5. However, it is recommended to use system provided libraries, available in most Linux distributions and HPC systems.

+

Limited support

+

Note that ASGarD is under heavy development and some of the requirements may change. This document will be kept up-to-date with the changes.

+

+Installation

+

CMake uses out-of-source build, clone the repo and build in a subfolder

git clone https://github.com/project-asgard/asgard.git
+
cd asgard
+
mkdir build
+
cd build
+
cmake \
+
-D CMAKE_BUILD_TYPE=Release \
+
-D CMAKE_INSTALL_PREFIX=../install \
+
-D CMAKE_CXX_FLAGS="-march=native -mtune=native" \
+
-D ASGARD_USE_OPENMP=ON \
+
-D ASGARD_USE_PYTHON=ON \
+
-D ASGARD_IO_HIGHFIVE=ON \
+
-D ASGARD_PRECISIONS=double \
+
..
+
cmake --build . -j
+
ctest
+
cmake install .
+

On a OSX system, users have reported instabilities with the homebrew provided HDF5, especially on Apple M chips. Also, OpenMP has limited benefits, due to what appears to be kernel scheduling overhead. The BLAS/LAPACK acceleration needs a flag to enable the most recent mode.

cmake \
+
-D CMAKE_BUILD_TYPE=Release \
+
-D CMAKE_INSTALL_PREFIX=../install \
+
-D CMAKE_CXX_FLAGS="-march=native -mtune=native -DACCELERATE_NEW_LAPACK" \
+
-D ASGARD_USE_OPENMP=OFF \
+
-D ASGARD_USE_PYTHON=ON \
+
-D ASGARD_IO_HIGHFIVE=ON \
+
-D ASGARD_BUILD_HDF5=ON \
+
-D ASGARD_PRECISIONS=double \
+
..
+

The installation step is required to use ASGarD as a library for an external project, allowing the user to define their own PDE specification without intruding into the ASGarD code. However, the currently available equations and all tools can be used directly from the build folder.

+

It is recommended to use a dedicated CMAKE_INSTALL_PREFIX as opposed to common locations such as ~/.local or /opt/, which will make it easier to uninstall.

+

For specific platform build instructions, see this wiki page.

+

+Basic usage

+

List of all ASGarD flags is given by the executable

asgard --help
+

Check out the installed examples in

<CMAKE_INSTALL_PREFIX>/share/asgard/examples
+

Setting up the enronment paths can be done with

source <CMAKE_INSTALL_PREFIX>/share/asgard/asgard-env.sh
+

For more details, see the Basic Usage Section.

+

+(deprecated) ScaLAPACK Integration

+

The ASGARD_USE_SCALAPACK build option adds the "scalapack" solver option to ASGarD. In the implicit timestep method, this option distributes the matrix solve across multiple processes and nodes and enables larger problems that are too large for a single computer.

+

This build option is only available when ASGARD_USE_MPI=ON. Unfortunately, setting ASGARD_USE_SCALAPACK alone is not sufficient and doesn't change the ASGARD_USE_MPI setting.

+
+
+
+ + + + + + diff --git a/current/menu.js b/current/menu.js new file mode 100644 index 000000000..b0b26936a --- /dev/null +++ b/current/menu.js @@ -0,0 +1,136 @@ +/* + @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) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
    '; + for (var i in data.children) { + var url; + var link; + 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; + } + var 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('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var 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/current/menudata.js b/current/menudata.js new file mode 100644 index 000000000..b62af418d --- /dev/null +++ b/current/menudata.js @@ -0,0 +1,65 @@ +/* + @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:"Related Pages",url:"pages.html"}, +{text:"Topics",url:"topics.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",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"c",url:"functions.html#index_c"}, +{text:"d",url:"functions.html#index_d"}, +{text:"e",url:"functions.html#index_e"}, +{text:"f",url:"functions.html#index_f"}, +{text:"g",url:"functions.html#index_g"}, +{text:"i",url:"functions.html#index_i"}, +{text:"k",url:"functions.html#index_k"}, +{text:"m",url:"functions.html#index_m"}, +{text:"n",url:"functions.html#index_n"}, +{text:"o",url:"functions.html#index_o"}, +{text:"p",url:"functions.html#index_p"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"t",url:"functions.html#index_t"}, +{text:"w",url:"functions.html#index_w"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"c",url:"functions_func.html#index_c"}, +{text:"d",url:"functions_func.html#index_d"}, +{text:"e",url:"functions_func.html#index_e"}, +{text:"f",url:"functions_func.html#index_f"}, +{text:"g",url:"functions_func.html#index_g"}, +{text:"m",url:"functions_func.html#index_m"}, +{text:"n",url:"functions_func.html#index_n"}, +{text:"p",url:"functions_func.html#index_p"}, +{text:"r",url:"functions_func.html#index_r"}, +{text:"s",url:"functions_func.html#index_s"}, +{text:"t",url:"functions_func.html#index_t"}]}, +{text:"Variables",url:"functions_vars.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/current/minus.svg b/current/minus.svg new file mode 100644 index 000000000..f70d0c1a1 --- /dev/null +++ b/current/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/current/minusd.svg b/current/minusd.svg new file mode 100644 index 000000000..5f8e87962 --- /dev/null +++ b/current/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/current/nav_f.png b/current/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..cc008e306bcb350d836fe4aae54fff3f011b3ac5 GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQaPS3jv*C{Z}0BrJ!HV(8hE?h zIjhNG28*z>Ouc8CpR;TC%83))EsjpTciS=Ny?CMS57WofTcVZv(^uGRJJWMC@l%VZ zu=B3V?%jRLR(CAe51)*;3~R4kQT6TJp>t(k92Z?Yzi!_@VN>S$_urZ4n9F5{SU(m6 P+RNbS>gTe~DWM4fScE>z literal 0 HcmV?d00001 diff --git a/current/nav_fd.png b/current/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..15a91273b7ca0bcce29d707e58d13193f44b7f73 GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQl6eJjv*C{Z|5H5Z7|?DQX_tg zo&Vc?Gm{k_u1+>H4s3d~WNu^Kn>L>BVP+>kD6Gyc-dDB4_3O^~svmX1d@9WU1=`df fJ>Eb4cdPJsEB=iq1htL>4Q23j^>bP0l+XkK6R|HD literal 0 HcmV?d00001 diff --git a/current/nav_g.png b/current/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!K=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + 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=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, true); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var 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) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, setFocus) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var 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 = arrowDown; + node.expanded = true; + if (setFocus) { + $(node.expandToggle).focus(); + } + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var 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 + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var 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'); + } + var topOffset=5; + if (typeof page_layout!=='undefined' && page_layout==1) { + topOffset+=$('#top').outerHeight(); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var 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 = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var 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); + } + }); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var 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(); + } +} + +var loadTriggered = false; +var readyTriggered = false; +var loadObject,loadToRoot,loadUrl,loadRelPath; + +$(window).on('load',function(){ + if (readyTriggered) { // ready first + navTo(loadObject,loadToRoot,loadUrl,loadRelPath); + showRoot(); + } + loadTriggered=true; +}); + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + if (loadTriggered) { // load before ready + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + } else { // ready before load + loadObject = o; + loadToRoot = toroot; + loadUrl = hashUrl(); + loadRelPath = relpath; + readyTriggered=true; + } + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{V_MR?|Ar*{o=Q{E-DDW`ndmQ3O zo6soPlfW5dr_%EFZ2tD8XH%sZ>JAs_3M(AiqExsgFZz=U=dPD}dwAwl*2Y{d5MWbO S{;vZxiow&>&t;ucLK6V`k0X!( literal 0 HcmV?d00001 diff --git a/current/pages.html b/current/pages.html new file mode 100644 index 000000000..1f47eb693 --- /dev/null +++ b/current/pages.html @@ -0,0 +1,132 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: Related Pages + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + doxygen + 1.9.8 +
    +
    ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
    +
    + +   + + + + +
    +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    +
    +
    + + + + + + diff --git a/current/plus.svg b/current/plus.svg new file mode 100644 index 000000000..075201655 --- /dev/null +++ b/current/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/current/plusd.svg b/current/plusd.svg new file mode 100644 index 000000000..0c65bfe94 --- /dev/null +++ b/current/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/current/resize.js b/current/resize.js new file mode 100644 index 000000000..aaeb6fc0a --- /dev/null +++ b/current/resize.js @@ -0,0 +1,155 @@ +/* + @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 once=1; +function initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,barWidth=6,desktop_vp=768,titleHeight; + + function readSetting(cookie) + { + if (window.chrome) { + var val = localStorage.getItem(cookie_namespace+'_width'); + if (val) return val; + } else { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + } + return 250; + } + + function writeSetting(cookie, val) + { + if (window.chrome) { + localStorage.setItem(cookie_namespace+"_width",val); + } else { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; SameSite=Lax; expires=" + expiration+"; path=/"; + } + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(sidenavWidth)+"px"}); + } + writeSetting('width',sidenavWidth-barWidth); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + 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() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height(); + var contentHeight,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; + } + content.css({height:contentHeight + "px"}); + navtree.css({height:navtreeHeight + "px"}); + sidenav.css({height:sideNavHeight + "px"}); + if (location.hash.slice(1)) { + (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); + } + } + + function collapseExpand() + { + var newWidth; + if (sidenav.width()>0) { + newWidth=0; + } + else { + var width = readSetting('width'); + newWidth = (width>250 && width<$(window).width()) ? width : 250; + } + restoreWidth(newWidth); + var sidenavWidth = $(sidenav).outerWidth(); + writeSetting('width',sidenavWidth-barWidth); + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var 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; + } + var width = readSetting('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + if (once) { + $(".ui-resizable-handle").dblclick(collapseExpand); + once=0 + } + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/current/search/all_0.js b/current/search/all_0.js new file mode 100644 index 000000000..a34220ad4 --- /dev/null +++ b/current/search/all_0.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['adapt_5fnorm_0',['adapt_norm',['../group__asgard__common__options.html#ga66a1204a68161bcfbf3bcf5726800aaa',1,'asgard']]], + ['adapt_5fthreshold_1',['adapt_threshold',['../structasgard_1_1prog__opts.html#a95dec6dce17aea2fe838551d534708fd',1,'asgard::prog_opts']]], + ['adaptive_20sparse_20grid_20discretization_2',['ASGarD - Adaptive Sparse Grid Discretization',['../index.html',1,'']]], + ['add_5ftime_5fsteps_3',['add_time_steps',['../classasgard_1_1discretization__manager.html#aaae436512728f99bf809d19c2de6b486',1,'asgard::discretization_manager']]], + ['advance_5ftime_4',['advance_time',['../group__asgard__discretization.html#ga2237b286ae85a14631d7f1bf88c6fb54',1,'asgard']]], + ['against_20the_20installed_20libasgard_5',['Compile against the installed libasgard',['../md_doxygen_2basic__usage.html#autotoc_md12',1,'']]], + ['and_20plotting_6',['Running and plotting',['../md_doxygen_2basic__usage.html#autotoc_md13',1,'']]], + ['anorm_7',['anorm',['../structasgard_1_1prog__opts.html#a71e1b12c53d65628b8b57751029c0ec4',1,'asgard::prog_opts']]], + ['asgard_20adaptive_20sparse_20grid_20discretization_8',['ASGarD - Adaptive Sparse Grid Discretization',['../index.html',1,'']]], + ['asgard_20common_20options_9',['ASGarD Common Options',['../group__asgard__common__options.html',1,'']]], + ['asgard_20discretization_20tools_10',['ASGarD Discretization Tools',['../group__asgard__discretization.html',1,'']]], + ['asgard_20post_20processing_20tools_11',['ASGarD Post Processing Tools',['../group__asgard__postprocess.html',1,'']]], + ['asgard_2ehpp_12',['asgard.hpp',['../asgard_8hpp.html',1,'']]], + ['asgard_5fdiscretization_2ehpp_13',['asgard_discretization.hpp',['../asgard__discretization_8hpp.html',1,'']]], + ['asgard_5fprogram_5foptions_2ehpp_14',['asgard_program_options.hpp',['../asgard__program__options_8hpp.html',1,'']]], + ['asgard_5freconstruct_2ehpp_15',['asgard_reconstruct.hpp',['../asgard__reconstruct_8hpp.html',1,'']]], + ['automated_20test_20status_16',['Automated Test Status',['../index.html#autotoc_md2',1,'']]] +]; diff --git a/current/search/all_1.js b/current/search/all_1.js new file mode 100644 index 000000000..d968aaa12 --- /dev/null +++ b/current/search/all_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['basic_20usage_0',['basic usage',['../md_doxygen_2basic__usage.html',1,'Basic Usage'],['../md_doxygen_2installation.html#autotoc_md8',1,'Basic usage']]], + ['bicgstab_1',['bicgstab',['../group__asgard__common__options.html#ggab913190c29228e6ad8a39d18a50aaea7ae123b37d2b5fd373237e049a1e68ca13',1,'asgard']]] +]; diff --git a/current/search/all_10.js b/current/search/all_10.js new file mode 100644 index 000000000..93a6dfcc4 --- /dev/null +++ b/current/search/all_10.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['reconstruct_0',['reconstruct',['../classasgard_1_1reconstruct__solution.html#a8a3d9fa6e8d139b4dccc489532618b4c',1,'asgard::reconstruct_solution']]], + ['reconstruct_5fsolution_1',['reconstruct_solution',['../classasgard_1_1reconstruct__solution.html',1,'asgard::reconstruct_solution'],['../classasgard_1_1reconstruct__solution.html#a422672cf40847ea4bcecd5cd076d0d29',1,'asgard::reconstruct_solution::reconstruct_solution()']]], + ['requirements_2',['Requirements',['../md_doxygen_2installation.html#autotoc_md6',1,'']]], + ['restart_5ffile_3',['restart_file',['../structasgard_1_1prog__opts.html#ac5ebf718b89f429b2788f3e8cf174a6a',1,'asgard::prog_opts']]], + ['rmse_5fexact_5fsol_4',['rmse_exact_sol',['../classasgard_1_1discretization__manager.html#acb5ccd0f0a04921a7fe3ccd51fc8c84c',1,'asgard::discretization_manager']]], + ['running_20and_20plotting_5',['Running and plotting',['../md_doxygen_2basic__usage.html#autotoc_md13',1,'']]] +]; diff --git a/current/search/all_11.js b/current/search/all_11.js new file mode 100644 index 000000000..698402c9c --- /dev/null +++ b/current/search/all_11.js @@ -0,0 +1,26 @@ +var searchData= +[ + ['save_5ffinal_5fsnapshot_0',['save_final_snapshot',['../classasgard_1_1discretization__manager.html#a683234a15797d986fcf1c816765e7bc3',1,'asgard::discretization_manager']]], + ['save_5fsnapshot_1',['save_snapshot',['../classasgard_1_1discretization__manager.html#a16d3c55cf6d769b3127f8cb38ea34c8c',1,'asgard::discretization_manager']]], + ['scalapack_2',['scalapack',['../group__asgard__common__options.html#ggab913190c29228e6ad8a39d18a50aaea7a75ed89791e1997d58d57456262786673',1,'asgard']]], + ['scalapack_20integration_3',['(deprecated) ScaLAPACK Integration',['../md_doxygen_2installation.html#autotoc_md9',1,'']]], + ['sections_4',['Document Sections',['../md_doxygen_2installation.html#autotoc_md5',1,'']]], + ['set_5fdomain_5fbounds_5',['set_domain_bounds',['../classasgard_1_1reconstruct__solution.html#a6d6343b22f9beed71a419003ae8b1cd9',1,'asgard::reconstruct_solution']]], + ['set_5felectric_6',['set_electric',['../structasgard_1_1prog__opts.html#a4878da968a3ee7e9bde5fb6c995f8527',1,'asgard::prog_opts']]], + ['set_5ffinal_5ftime_5fstep_7',['set_final_time_step',['../classasgard_1_1discretization__manager.html#a13e2759bd66f1bdce32e9875434be248',1,'asgard::discretization_manager']]], + ['set_5fnext_5fstep_8',['set_next_step',['../classasgard_1_1discretization__manager.html#a62f1d21a508af91d1fc7d44f8dbad471',1,'asgard::discretization_manager']]], + ['show_5fhelp_9',['show_help',['../structasgard_1_1prog__opts.html#a84c32b11b5effcb85826e0e34b05998b',1,'asgard::prog_opts']]], + ['show_5fpde_5fhelp_10',['show_pde_help',['../structasgard_1_1prog__opts.html#a93c15ac856d9f9b357ce459cb69ed2b0',1,'asgard::prog_opts']]], + ['show_5fversion_11',['show_version',['../structasgard_1_1prog__opts.html#adbcc2263948af7ec1cb563b1d0def5ec',1,'asgard::prog_opts']]], + ['simulate_12',['simulate',['../group__asgard__discretization.html#gaf9f5e5a47902e550bbafbcbe7b67cbff',1,'asgard']]], + ['simulate_5fbuiltin_13',['simulate_builtin',['../group__asgard__discretization.html#ga999da55616b6bd2a69d7e18f508e6cc5',1,'asgard']]], + ['solve_5fopts_14',['solve_opts',['../group__asgard__common__options.html#gab913190c29228e6ad8a39d18a50aaea7',1,'asgard']]], + ['solver_15',['solver',['../structasgard_1_1prog__opts.html#a949e474fcecce4c287977d877cfa16b1',1,'asgard::prog_opts']]], + ['sparse_16',['sparse',['../group__asgard__common__options.html#gga6b51b79ca35557fbf6d9b8d4f79fddd2a5dabba66ddc7b1e6f193ff73d3c55e94',1,'sparseasgard'],['../group__asgard__common__options.html#gga7dbd43735a473f41375866c2042f815fa5dabba66ddc7b1e6f193ff73d3c55e94',1,'sparseasgard']]], + ['sparse_20grid_20discretization_17',['ASGarD - Adaptive Sparse Grid Discretization',['../index.html',1,'']]], + ['start_5flevels_18',['start_levels',['../structasgard_1_1prog__opts.html#ac07f3aa1555326421f446bb40cd3eb23',1,'asgard::prog_opts']]], + ['start_5flevels_5fstr_19',['start_levels_str',['../structasgard_1_1prog__opts.html#a4420d12a7fc8d5de612961c5ec4ef8ca',1,'asgard::prog_opts']]], + ['status_20',['Automated Test Status',['../index.html#autotoc_md2',1,'']]], + ['step_5fmethod_21',['step_method',['../structasgard_1_1prog__opts.html#aa7f1b2afc9cce8c52ae12bf6187f3700',1,'asgard::prog_opts']]], + ['subtitle_22',['subtitle',['../structasgard_1_1prog__opts.html#a7773c6a5528a7e226a99b2366a24d83c',1,'asgard::prog_opts']]] +]; diff --git a/current/search/all_12.js b/current/search/all_12.js new file mode 100644 index 000000000..aa74ab40c --- /dev/null +++ b/current/search/all_12.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['test_20status_0',['Automated Test Status',['../index.html#autotoc_md2',1,'']]], + ['the_20installed_20libasgard_1',['Compile against the installed libasgard',['../md_doxygen_2basic__usage.html#autotoc_md12',1,'']]], + ['time_2',['time',['../classasgard_1_1discretization__manager.html#a6136d41e47ac6b0608aa2a4b8f4f1495',1,'asgard::discretization_manager']]], + ['time_5fstep_3',['time_step',['../classasgard_1_1discretization__manager.html#a3ff52943427629bbadcbc45c87530527',1,'asgard::discretization_manager']]], + ['title_4',['title',['../structasgard_1_1prog__opts.html#a6e7a6245159b10c3edc35137ca8a97cd',1,'asgard::prog_opts']]], + ['tools_5',['tools',['../group__asgard__discretization.html',1,'ASGarD Discretization Tools'],['../group__asgard__postprocess.html',1,'ASGarD Post Processing Tools']]] +]; diff --git a/current/search/all_13.js b/current/search/all_13.js new file mode 100644 index 000000000..98993c770 --- /dev/null +++ b/current/search/all_13.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['us_0',['Contact Us',['../index.html#autotoc_md1',1,'']]], + ['usage_1',['usage',['../md_doxygen_2basic__usage.html',1,'Basic Usage'],['../md_doxygen_2installation.html#autotoc_md8',1,'Basic usage']]] +]; diff --git a/current/search/all_14.js b/current/search/all_14.js new file mode 100644 index 000000000..5275d87f5 --- /dev/null +++ b/current/search/all_14.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['verbosity_5flevel_0',['verbosity_level',['../group__asgard__common__options.html#ga6c50a754f177f157e865946f8b68321f',1,'asgard']]] +]; diff --git a/current/search/all_15.js b/current/search/all_15.js new file mode 100644 index 000000000..54fb25d0e --- /dev/null +++ b/current/search/all_15.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['wavelet_5foutput_5ffreq_0',['wavelet_output_freq',['../structasgard_1_1prog__opts.html#a04ab4ead20d4f61367a4e3f3d8193ec9',1,'asgard::prog_opts']]], + ['write_20your_20own_20pde_20class_1',['Write your own PDE class',['../md_doxygen_2basic__usage.html#autotoc_md11',1,'']]] +]; diff --git a/current/search/all_16.js b/current/search/all_16.js new file mode 100644 index 000000000..0b21444de --- /dev/null +++ b/current/search/all_16.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['your_20own_20pde_20class_0',['Write your own PDE class',['../md_doxygen_2basic__usage.html#autotoc_md11',1,'']]] +]; diff --git a/current/search/all_2.js b/current/search/all_2.js new file mode 100644 index 000000000..dab925784 --- /dev/null +++ b/current/search/all_2.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['cell_5fcenters_0',['cell_centers',['../classasgard_1_1reconstruct__solution.html#a7183c0f4968688a3130a8c19d2d8f372',1,'asgard::reconstruct_solution']]], + ['checkpoint_1',['checkpoint',['../classasgard_1_1discretization__manager.html#a44d0815467ce3ca66f7777da1c5cf91b',1,'asgard::discretization_manager']]], + ['class_2',['Write your own PDE class',['../md_doxygen_2basic__usage.html#autotoc_md11',1,'']]], + ['common_20options_3',['ASGarD Common Options',['../group__asgard__common__options.html',1,'']]], + ['compile_20against_20the_20installed_20libasgard_4',['Compile against the installed libasgard',['../md_doxygen_2basic__usage.html#autotoc_md12',1,'']]], + ['contact_20us_5',['Contact Us',['../index.html#autotoc_md1',1,'']]], + ['current_5fmpistate_6',['current_mpistate',['../classasgard_1_1discretization__manager.html#a39b9d235ec705cd64d3dd0b626544253',1,'asgard::discretization_manager']]], + ['current_5fstate_7',['current_state',['../classasgard_1_1discretization__manager.html#abe689cf39c38c10bded512f09d697058',1,'asgard::discretization_manager']]] +]; diff --git a/current/search/all_3.js b/current/search/all_3.js new file mode 100644 index 000000000..b1a47327e --- /dev/null +++ b/current/search/all_3.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['degree_0',['degree',['../structasgard_1_1prog__opts.html#a188de9dc3c3a60e6b05946fff96ca855',1,'asgard::prog_opts::degree'],['../classasgard_1_1discretization__manager.html#a434394297067419bf41a4bc65c1e07a1',1,'asgard::discretization_manager::degree() const']]], + ['degrees_5fof_5ffreedom_1',['degrees_of_freedom',['../classasgard_1_1discretization__manager.html#a0429ab964d0baaac3053d63373d3c8db',1,'asgard::discretization_manager']]], + ['dense_2',['dense',['../group__asgard__common__options.html#gga6b51b79ca35557fbf6d9b8d4f79fddd2a0eccef1fe0100f85b12e6eabe08eaff6',1,'denseasgard'],['../group__asgard__common__options.html#gga7dbd43735a473f41375866c2042f815fa0eccef1fe0100f85b12e6eabe08eaff6',1,'denseasgard']]], + ['dependencies_3',['Dependencies',['../index.html#autotoc_md3',1,'']]], + ['deprecated_20scalapack_20integration_4',['(deprecated) ScaLAPACK Integration',['../md_doxygen_2installation.html#autotoc_md9',1,'']]], + ['direct_5',['direct',['../group__asgard__common__options.html#ggab913190c29228e6ad8a39d18a50aaea7a7caa701b2bd5a182b80c72b9bdf88e2d',1,'asgard']]], + ['discretization_6',['ASGarD - Adaptive Sparse Grid Discretization',['../index.html',1,'']]], + ['discretization_20tools_7',['ASGarD Discretization Tools',['../group__asgard__discretization.html',1,'']]], + ['discretization_5fmanager_8',['discretization_manager',['../classasgard_1_1discretization__manager.html',1,'asgard::discretization_manager< precision >'],['../classasgard_1_1discretization__manager.html#adfb7ab38c9bb9d430d7db68551c25da4',1,'asgard::discretization_manager::discretization_manager()']]], + ['discretize_9',['discretize',['../group__asgard__discretization.html#gad164da3f9c1385970da2aa1bbe6ffcb2',1,'asgard']]], + ['document_20sections_10',['Document Sections',['../md_doxygen_2installation.html#autotoc_md5',1,'']]], + ['dt_11',['dt',['../structasgard_1_1prog__opts.html#a6123a01c2dab828aeffaa23c188a6ac7',1,'asgard::prog_opts::dt'],['../classasgard_1_1discretization__manager.html#ad0abc8be1de4aec6c97a2d53bbe9d0ac',1,'asgard::discretization_manager::dt()']]] +]; diff --git a/current/search/all_4.js b/current/search/all_4.js new file mode 100644 index 000000000..3e750507d --- /dev/null +++ b/current/search/all_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['exp_0',['exp',['../group__asgard__common__options.html#gga54dc8c95a692aa0ca4740dc972259be3ab0ab0254bd58eb87eaee3172ba49fefb',1,'asgard::time_advance']]], + ['externals_1',['externals',['../structasgard_1_1prog__opts.html#aa68046f253bf88a3745191b771708d88',1,'asgard::prog_opts']]], + ['extra_5fcli_5fvalue_2',['extra_cli_value',['../structasgard_1_1prog__opts.html#a8030d9bde292b716a90e782e33fb89ca',1,'asgard::prog_opts']]] +]; diff --git a/current/search/all_5.js b/current/search/all_5.js new file mode 100644 index 000000000..afab5d8bc --- /dev/null +++ b/current/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['file_5fvalue_0',['file_value',['../structasgard_1_1prog__opts.html#a3f9d25d677cebcfb923da72a827688b5',1,'asgard::prog_opts']]], + ['final_5ftime_5fstep_1',['final_time_step',['../classasgard_1_1discretization__manager.html#a3d5c023fae1de18e935a9a1c4462ed70',1,'asgard::discretization_manager']]] +]; diff --git a/current/search/all_6.js b/current/search/all_6.js new file mode 100644 index 000000000..7bb03d267 --- /dev/null +++ b/current/search/all_6.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['get_5fgrid_0',['get_grid',['../classasgard_1_1discretization__manager.html#ab04340561d75b306f3ef3690846a7e13',1,'asgard::discretization_manager']]], + ['get_5fpde_1',['get_pde',['../classasgard_1_1discretization__manager.html#a6bc0a568fb961b1d96ad5f761193de7d',1,'asgard::discretization_manager']]], + ['gmres_2',['gmres',['../group__asgard__common__options.html#ggab913190c29228e6ad8a39d18a50aaea7ad43c33b8e3d5435d9cbe65c156887a02',1,'asgard']]], + ['grid_3',['grid',['../structasgard_1_1prog__opts.html#af262e151500fa66ee03d414be64f4862',1,'asgard::prog_opts']]], + ['grid_20discretization_4',['ASGarD - Adaptive Sparse Grid Discretization',['../index.html',1,'']]], + ['grid_5ftype_5',['grid_type',['../group__asgard__common__options.html#ga7dbd43735a473f41375866c2042f815f',1,'asgard']]] +]; diff --git a/current/search/all_7.js b/current/search/all_7.js new file mode 100644 index 000000000..4fabe766e --- /dev/null +++ b/current/search/all_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['high_0',['high',['../group__asgard__common__options.html#gga6c50a754f177f157e865946f8b68321fa8d966b2253a917086c8604959e152243',1,'asgard']]] +]; diff --git a/current/search/all_8.js b/current/search/all_8.js new file mode 100644 index 000000000..6439be9b2 --- /dev/null +++ b/current/search/all_8.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['ignore_5fexact_0',['ignore_exact',['../structasgard_1_1prog__opts.html#a0ae68b7d0039aa06787707848841b12c',1,'asgard::prog_opts']]], + ['imex_1',['imex',['../group__asgard__common__options.html#gga54dc8c95a692aa0ca4740dc972259be3a1ee78c9863801107ef1bd05fbe4b22e1',1,'asgard::time_advance']]], + ['imp_2',['imp',['../group__asgard__common__options.html#gga54dc8c95a692aa0ca4740dc972259be3a72bb0a20dbae84efcc752cb287357197',1,'asgard::time_advance']]], + ['installation_3',['installation',['../md_doxygen_2installation.html',1,'Installation'],['../md_doxygen_2installation.html#autotoc_md7',1,'Installation']]], + ['installed_20libasgard_4',['Compile against the installed libasgard',['../md_doxygen_2basic__usage.html#autotoc_md12',1,'']]], + ['integration_5',['(deprecated) ScaLAPACK Integration',['../md_doxygen_2installation.html#autotoc_md9',1,'']]], + ['isolver_5fiterations_6',['isolver_iterations',['../structasgard_1_1prog__opts.html#aae3ff3b1826642d662341b39d1307bdb',1,'asgard::prog_opts']]], + ['isolver_5fouter_5fiterations_7',['isolver_outer_iterations',['../structasgard_1_1prog__opts.html#a72924b0e5f2a95b1e2ab227c7d4dac05',1,'asgard::prog_opts']]], + ['isolver_5ftolerance_8',['isolver_tolerance',['../structasgard_1_1prog__opts.html#aaf16c55109b4d9adf71e7409da66a0cb',1,'asgard::prog_opts']]] +]; diff --git a/current/search/all_9.js b/current/search/all_9.js new file mode 100644 index 000000000..50a558fc1 --- /dev/null +++ b/current/search/all_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['kron_5fmode_0',['kron_mode',['../structasgard_1_1prog__opts.html#a3d095bbb912cd33db58dfea9d415295a',1,'asgard::prog_opts']]], + ['kronmult_5fmode_1',['kronmult_mode',['../group__asgard__common__options.html#ga6b51b79ca35557fbf6d9b8d4f79fddd2',1,'asgard']]] +]; diff --git a/current/search/all_a.js b/current/search/all_a.js new file mode 100644 index 000000000..2da0eed0e --- /dev/null +++ b/current/search/all_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['l2_0',['l2',['../group__asgard__common__options.html#gga66a1204a68161bcfbf3bcf5726800aaaa52bf24b4561ae2daa76408d9d1dfb5af',1,'asgard']]], + ['libasgard_1',['Compile against the installed libasgard',['../md_doxygen_2basic__usage.html#autotoc_md12',1,'']]], + ['linf_2',['linf',['../group__asgard__common__options.html#gga66a1204a68161bcfbf3bcf5726800aaaa8e1bfde40fc388cd099c0999035b80ba',1,'asgard']]] +]; diff --git a/current/search/all_b.js b/current/search/all_b.js new file mode 100644 index 000000000..6c8182130 --- /dev/null +++ b/current/search/all_b.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['max_5flevels_0',['max_levels',['../structasgard_1_1prog__opts.html#a5a256ab4f45cc60c60e8945d3ab3a0d9',1,'asgard::prog_opts']]], + ['max_5flevels_5fstr_1',['max_levels_str',['../structasgard_1_1prog__opts.html#a7d8c1c6e346a89eee9843ba042a8ddf4',1,'asgard::prog_opts']]], + ['memory_5flimit_2',['memory_limit',['../structasgard_1_1prog__opts.html#a0e1a2795f936588ed27deaa7b2b296d2',1,'asgard::prog_opts']]], + ['method_3',['method',['../group__asgard__common__options.html#ga54dc8c95a692aa0ca4740dc972259be3',1,'asgard::time_advance']]], + ['mgrid_5fgroup_4',['mgrid_group',['../structasgard_1_1prog__opts.html#af476187bfa5612a4fbb699ce5041373f',1,'asgard::prog_opts']]], + ['mixed_5',['mixed',['../group__asgard__common__options.html#gga7dbd43735a473f41375866c2042f815fa1d770934d44de09b0d24f04fd01708ba',1,'asgard']]] +]; diff --git a/current/search/all_c.js b/current/search/all_c.js new file mode 100644 index 000000000..051e83c78 --- /dev/null +++ b/current/search/all_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['num_5fcells_0',['num_cells',['../classasgard_1_1reconstruct__solution.html#a2ebd5460077f12f35331211e9bd6bed4',1,'asgard::reconstruct_solution']]], + ['num_5fdimensions_1',['num_dimensions',['../classasgard_1_1reconstruct__solution.html#aa201849cc0e12ef6662cf2549b370b53',1,'asgard::reconstruct_solution']]], + ['num_5ftime_5fsteps_2',['num_time_steps',['../structasgard_1_1prog__opts.html#a16934efeef64a7c01531f2cc6a90cabf',1,'asgard::prog_opts']]] +]; diff --git a/current/search/all_d.js b/current/search/all_d.js new file mode 100644 index 000000000..95fb28e52 --- /dev/null +++ b/current/search/all_d.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['operator_3c_3c_0',['operator<<',['../asgard__program__options_8hpp.html#ade50af2065d6fe3d72e86a36e916219e',1,'asgard']]], + ['options_1',['ASGarD Common Options',['../group__asgard__common__options.html',1,'']]], + ['outfile_2',['outfile',['../structasgard_1_1prog__opts.html#a7ab7518a56acd9d8dc4dd6d27cfe3a25',1,'asgard::prog_opts']]], + ['own_20pde_20class_3',['Write your own PDE class',['../md_doxygen_2basic__usage.html#autotoc_md11',1,'']]] +]; diff --git a/current/search/all_e.js b/current/search/all_e.js new file mode 100644 index 000000000..2c346be6c --- /dev/null +++ b/current/search/all_e.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['pde_20class_0',['Write your own PDE class',['../md_doxygen_2basic__usage.html#autotoc_md11',1,'']]], + ['pde_5fchoice_1',['pde_choice',['../structasgard_1_1prog__opts.html#afec68ece1ca142f315dba5976aeed4b5',1,'asgard::prog_opts']]], + ['pde_5fopts_2',['PDE_opts',['../group__asgard__common__options.html#gad541250bcbd39977e699e8cc9d93100d',1,'asgard']]], + ['plotting_3',['Running and plotting',['../md_doxygen_2basic__usage.html#autotoc_md13',1,'']]], + ['post_20processing_20tools_4',['ASGarD Post Processing Tools',['../group__asgard__postprocess.html',1,'']]], + ['print_5fhelp_5',['print_help',['../structasgard_1_1prog__opts.html#a226b469cb532fefb60280ab86250e8c2',1,'asgard::prog_opts']]], + ['print_5finfo_6',['print_info',['../asgard_8hpp.html#a7f82d4b2c7568ace08b2477afcba7a62',1,'asgard']]], + ['print_5foptions_7',['print_options',['../structasgard_1_1prog__opts.html#ab3d91ca5006733bf61632646bb986686',1,'asgard::prog_opts']]], + ['print_5fpde_5fhelp_8',['print_pde_help',['../structasgard_1_1prog__opts.html#ab08ec34c911bfaa92176241e5cc3c63d',1,'asgard::prog_opts']]], + ['print_5fversion_5fhelp_9',['print_version_help',['../structasgard_1_1prog__opts.html#a7f515d9f319422a59b658d8d178c7d0a',1,'asgard::prog_opts']]], + ['processing_20tools_10',['ASGarD Post Processing Tools',['../group__asgard__postprocess.html',1,'']]], + ['prog_5fopts_11',['prog_opts',['../structasgard_1_1prog__opts.html',1,'asgard::prog_opts'],['../structasgard_1_1prog__opts.html#a0bc9863e43cfcef572871afb604fc2d2',1,'asgard::prog_opts::prog_opts()=default'],['../structasgard_1_1prog__opts.html#ac346c18b2aaa6e5ddd5760330fd863b2',1,'asgard::prog_opts::prog_opts(int const argc, char const *const *argv, bool ignore_unknown=true)'],['../structasgard_1_1prog__opts.html#a3a21b84ad09c87031a97a47f4c92978a',1,'asgard::prog_opts::prog_opts(std::filesystem::path const &filename)'],['../structasgard_1_1prog__opts.html#a8f0a960af52da9d4c8df8b5a4a4e4534',1,'asgard::prog_opts::prog_opts(vecstrview const &argv)']]] +]; diff --git a/current/search/all_f.js b/current/search/all_f.js new file mode 100644 index 000000000..ee7fd468b --- /dev/null +++ b/current/search/all_f.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['quiet_0',['quiet',['../group__asgard__common__options.html#gga6c50a754f177f157e865946f8b68321fa556966c7830465dc4623d62e32cec31d',1,'asgard']]] +]; diff --git a/current/search/classes_0.js b/current/search/classes_0.js new file mode 100644 index 000000000..90c4a45b4 --- /dev/null +++ b/current/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['discretization_5fmanager_0',['discretization_manager',['../classasgard_1_1discretization__manager.html',1,'asgard']]] +]; diff --git a/current/search/classes_1.js b/current/search/classes_1.js new file mode 100644 index 000000000..d6fb4db94 --- /dev/null +++ b/current/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['prog_5fopts_0',['prog_opts',['../structasgard_1_1prog__opts.html',1,'asgard']]] +]; diff --git a/current/search/classes_2.js b/current/search/classes_2.js new file mode 100644 index 000000000..c82cd86e3 --- /dev/null +++ b/current/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['reconstruct_5fsolution_0',['reconstruct_solution',['../classasgard_1_1reconstruct__solution.html',1,'asgard']]] +]; diff --git a/current/search/close.svg b/current/search/close.svg new file mode 100644 index 000000000..337d6cc13 --- /dev/null +++ b/current/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/current/search/enums_0.js b/current/search/enums_0.js new file mode 100644 index 000000000..46918d74a --- /dev/null +++ b/current/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['adapt_5fnorm_0',['adapt_norm',['../group__asgard__common__options.html#ga66a1204a68161bcfbf3bcf5726800aaa',1,'asgard']]] +]; diff --git a/current/search/enums_1.js b/current/search/enums_1.js new file mode 100644 index 000000000..dd3e7ffb1 --- /dev/null +++ b/current/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['grid_5ftype_0',['grid_type',['../group__asgard__common__options.html#ga7dbd43735a473f41375866c2042f815f',1,'asgard']]] +]; diff --git a/current/search/enums_2.js b/current/search/enums_2.js new file mode 100644 index 000000000..243c54eea --- /dev/null +++ b/current/search/enums_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['kronmult_5fmode_0',['kronmult_mode',['../group__asgard__common__options.html#ga6b51b79ca35557fbf6d9b8d4f79fddd2',1,'asgard']]] +]; diff --git a/current/search/enums_3.js b/current/search/enums_3.js new file mode 100644 index 000000000..a2e5d4ef3 --- /dev/null +++ b/current/search/enums_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['method_0',['method',['../group__asgard__common__options.html#ga54dc8c95a692aa0ca4740dc972259be3',1,'asgard::time_advance']]] +]; diff --git a/current/search/enums_4.js b/current/search/enums_4.js new file mode 100644 index 000000000..4ae21a413 --- /dev/null +++ b/current/search/enums_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pde_5fopts_0',['PDE_opts',['../group__asgard__common__options.html#gad541250bcbd39977e699e8cc9d93100d',1,'asgard']]] +]; diff --git a/current/search/enums_5.js b/current/search/enums_5.js new file mode 100644 index 000000000..f15d4727e --- /dev/null +++ b/current/search/enums_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['solve_5fopts_0',['solve_opts',['../group__asgard__common__options.html#gab913190c29228e6ad8a39d18a50aaea7',1,'asgard']]] +]; diff --git a/current/search/enums_6.js b/current/search/enums_6.js new file mode 100644 index 000000000..5275d87f5 --- /dev/null +++ b/current/search/enums_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['verbosity_5flevel_0',['verbosity_level',['../group__asgard__common__options.html#ga6c50a754f177f157e865946f8b68321f',1,'asgard']]] +]; diff --git a/current/search/enumvalues_0.js b/current/search/enumvalues_0.js new file mode 100644 index 000000000..9de5afb73 --- /dev/null +++ b/current/search/enumvalues_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bicgstab_0',['bicgstab',['../group__asgard__common__options.html#ggab913190c29228e6ad8a39d18a50aaea7ae123b37d2b5fd373237e049a1e68ca13',1,'asgard']]] +]; diff --git a/current/search/enumvalues_1.js b/current/search/enumvalues_1.js new file mode 100644 index 000000000..51518c4c7 --- /dev/null +++ b/current/search/enumvalues_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['dense_0',['dense',['../group__asgard__common__options.html#gga6b51b79ca35557fbf6d9b8d4f79fddd2a0eccef1fe0100f85b12e6eabe08eaff6',1,'denseasgard'],['../group__asgard__common__options.html#gga7dbd43735a473f41375866c2042f815fa0eccef1fe0100f85b12e6eabe08eaff6',1,'denseasgard']]], + ['direct_1',['direct',['../group__asgard__common__options.html#ggab913190c29228e6ad8a39d18a50aaea7a7caa701b2bd5a182b80c72b9bdf88e2d',1,'asgard']]] +]; diff --git a/current/search/enumvalues_2.js b/current/search/enumvalues_2.js new file mode 100644 index 000000000..963391be2 --- /dev/null +++ b/current/search/enumvalues_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['exp_0',['exp',['../group__asgard__common__options.html#gga54dc8c95a692aa0ca4740dc972259be3ab0ab0254bd58eb87eaee3172ba49fefb',1,'asgard::time_advance']]] +]; diff --git a/current/search/enumvalues_3.js b/current/search/enumvalues_3.js new file mode 100644 index 000000000..9f03ae735 --- /dev/null +++ b/current/search/enumvalues_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['gmres_0',['gmres',['../group__asgard__common__options.html#ggab913190c29228e6ad8a39d18a50aaea7ad43c33b8e3d5435d9cbe65c156887a02',1,'asgard']]] +]; diff --git a/current/search/enumvalues_4.js b/current/search/enumvalues_4.js new file mode 100644 index 000000000..4fabe766e --- /dev/null +++ b/current/search/enumvalues_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['high_0',['high',['../group__asgard__common__options.html#gga6c50a754f177f157e865946f8b68321fa8d966b2253a917086c8604959e152243',1,'asgard']]] +]; diff --git a/current/search/enumvalues_5.js b/current/search/enumvalues_5.js new file mode 100644 index 000000000..68dc1df59 --- /dev/null +++ b/current/search/enumvalues_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['imex_0',['imex',['../group__asgard__common__options.html#gga54dc8c95a692aa0ca4740dc972259be3a1ee78c9863801107ef1bd05fbe4b22e1',1,'asgard::time_advance']]], + ['imp_1',['imp',['../group__asgard__common__options.html#gga54dc8c95a692aa0ca4740dc972259be3a72bb0a20dbae84efcc752cb287357197',1,'asgard::time_advance']]] +]; diff --git a/current/search/enumvalues_6.js b/current/search/enumvalues_6.js new file mode 100644 index 000000000..8cde779f6 --- /dev/null +++ b/current/search/enumvalues_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['l2_0',['l2',['../group__asgard__common__options.html#gga66a1204a68161bcfbf3bcf5726800aaaa52bf24b4561ae2daa76408d9d1dfb5af',1,'asgard']]], + ['linf_1',['linf',['../group__asgard__common__options.html#gga66a1204a68161bcfbf3bcf5726800aaaa8e1bfde40fc388cd099c0999035b80ba',1,'asgard']]] +]; diff --git a/current/search/enumvalues_7.js b/current/search/enumvalues_7.js new file mode 100644 index 000000000..106a64a3a --- /dev/null +++ b/current/search/enumvalues_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['mixed_0',['mixed',['../group__asgard__common__options.html#gga7dbd43735a473f41375866c2042f815fa1d770934d44de09b0d24f04fd01708ba',1,'asgard']]] +]; diff --git a/current/search/enumvalues_8.js b/current/search/enumvalues_8.js new file mode 100644 index 000000000..ee7fd468b --- /dev/null +++ b/current/search/enumvalues_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['quiet_0',['quiet',['../group__asgard__common__options.html#gga6c50a754f177f157e865946f8b68321fa556966c7830465dc4623d62e32cec31d',1,'asgard']]] +]; diff --git a/current/search/enumvalues_9.js b/current/search/enumvalues_9.js new file mode 100644 index 000000000..3fa1d928a --- /dev/null +++ b/current/search/enumvalues_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['scalapack_0',['scalapack',['../group__asgard__common__options.html#ggab913190c29228e6ad8a39d18a50aaea7a75ed89791e1997d58d57456262786673',1,'asgard']]], + ['sparse_1',['sparse',['../group__asgard__common__options.html#gga6b51b79ca35557fbf6d9b8d4f79fddd2a5dabba66ddc7b1e6f193ff73d3c55e94',1,'sparseasgard'],['../group__asgard__common__options.html#gga7dbd43735a473f41375866c2042f815fa5dabba66ddc7b1e6f193ff73d3c55e94',1,'sparseasgard']]] +]; diff --git a/current/search/files_0.js b/current/search/files_0.js new file mode 100644 index 000000000..150970f2c --- /dev/null +++ b/current/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['asgard_2ehpp_0',['asgard.hpp',['../asgard_8hpp.html',1,'']]], + ['asgard_5fdiscretization_2ehpp_1',['asgard_discretization.hpp',['../asgard__discretization_8hpp.html',1,'']]], + ['asgard_5fprogram_5foptions_2ehpp_2',['asgard_program_options.hpp',['../asgard__program__options_8hpp.html',1,'']]], + ['asgard_5freconstruct_2ehpp_3',['asgard_reconstruct.hpp',['../asgard__reconstruct_8hpp.html',1,'']]] +]; diff --git a/current/search/functions_0.js b/current/search/functions_0.js new file mode 100644 index 000000000..80db485e1 --- /dev/null +++ b/current/search/functions_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['add_5ftime_5fsteps_0',['add_time_steps',['../classasgard_1_1discretization__manager.html#aaae436512728f99bf809d19c2de6b486',1,'asgard::discretization_manager']]], + ['advance_5ftime_1',['advance_time',['../group__asgard__discretization.html#ga2237b286ae85a14631d7f1bf88c6fb54',1,'asgard']]] +]; diff --git a/current/search/functions_1.js b/current/search/functions_1.js new file mode 100644 index 000000000..5da0a1dc4 --- /dev/null +++ b/current/search/functions_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['cell_5fcenters_0',['cell_centers',['../classasgard_1_1reconstruct__solution.html#a7183c0f4968688a3130a8c19d2d8f372',1,'asgard::reconstruct_solution']]], + ['checkpoint_1',['checkpoint',['../classasgard_1_1discretization__manager.html#a44d0815467ce3ca66f7777da1c5cf91b',1,'asgard::discretization_manager']]], + ['current_5fmpistate_2',['current_mpistate',['../classasgard_1_1discretization__manager.html#a39b9d235ec705cd64d3dd0b626544253',1,'asgard::discretization_manager']]], + ['current_5fstate_3',['current_state',['../classasgard_1_1discretization__manager.html#abe689cf39c38c10bded512f09d697058',1,'asgard::discretization_manager']]] +]; diff --git a/current/search/functions_2.js b/current/search/functions_2.js new file mode 100644 index 000000000..3dfe398ba --- /dev/null +++ b/current/search/functions_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['degree_0',['degree',['../classasgard_1_1discretization__manager.html#a434394297067419bf41a4bc65c1e07a1',1,'asgard::discretization_manager']]], + ['degrees_5fof_5ffreedom_1',['degrees_of_freedom',['../classasgard_1_1discretization__manager.html#a0429ab964d0baaac3053d63373d3c8db',1,'asgard::discretization_manager']]], + ['discretization_5fmanager_2',['discretization_manager',['../classasgard_1_1discretization__manager.html#adfb7ab38c9bb9d430d7db68551c25da4',1,'asgard::discretization_manager']]], + ['discretize_3',['discretize',['../group__asgard__discretization.html#gad164da3f9c1385970da2aa1bbe6ffcb2',1,'asgard']]], + ['dt_4',['dt',['../classasgard_1_1discretization__manager.html#ad0abc8be1de4aec6c97a2d53bbe9d0ac',1,'asgard::discretization_manager']]] +]; diff --git a/current/search/functions_3.js b/current/search/functions_3.js new file mode 100644 index 000000000..8636ffd04 --- /dev/null +++ b/current/search/functions_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['extra_5fcli_5fvalue_0',['extra_cli_value',['../structasgard_1_1prog__opts.html#a8030d9bde292b716a90e782e33fb89ca',1,'asgard::prog_opts']]] +]; diff --git a/current/search/functions_4.js b/current/search/functions_4.js new file mode 100644 index 000000000..afab5d8bc --- /dev/null +++ b/current/search/functions_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['file_5fvalue_0',['file_value',['../structasgard_1_1prog__opts.html#a3f9d25d677cebcfb923da72a827688b5',1,'asgard::prog_opts']]], + ['final_5ftime_5fstep_1',['final_time_step',['../classasgard_1_1discretization__manager.html#a3d5c023fae1de18e935a9a1c4462ed70',1,'asgard::discretization_manager']]] +]; diff --git a/current/search/functions_5.js b/current/search/functions_5.js new file mode 100644 index 000000000..ac766dbc8 --- /dev/null +++ b/current/search/functions_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['get_5fgrid_0',['get_grid',['../classasgard_1_1discretization__manager.html#ab04340561d75b306f3ef3690846a7e13',1,'asgard::discretization_manager']]], + ['get_5fpde_1',['get_pde',['../classasgard_1_1discretization__manager.html#a6bc0a568fb961b1d96ad5f761193de7d',1,'asgard::discretization_manager']]] +]; diff --git a/current/search/functions_6.js b/current/search/functions_6.js new file mode 100644 index 000000000..6634be8e8 --- /dev/null +++ b/current/search/functions_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['max_5flevels_5fstr_0',['max_levels_str',['../structasgard_1_1prog__opts.html#a7d8c1c6e346a89eee9843ba042a8ddf4',1,'asgard::prog_opts']]] +]; diff --git a/current/search/functions_7.js b/current/search/functions_7.js new file mode 100644 index 000000000..7560c4abb --- /dev/null +++ b/current/search/functions_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['num_5fcells_0',['num_cells',['../classasgard_1_1reconstruct__solution.html#a2ebd5460077f12f35331211e9bd6bed4',1,'asgard::reconstruct_solution']]], + ['num_5fdimensions_1',['num_dimensions',['../classasgard_1_1reconstruct__solution.html#aa201849cc0e12ef6662cf2549b370b53',1,'asgard::reconstruct_solution']]] +]; diff --git a/current/search/functions_8.js b/current/search/functions_8.js new file mode 100644 index 000000000..48d53de56 --- /dev/null +++ b/current/search/functions_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['operator_3c_3c_0',['operator<<',['../asgard__program__options_8hpp.html#ade50af2065d6fe3d72e86a36e916219e',1,'asgard']]] +]; diff --git a/current/search/functions_9.js b/current/search/functions_9.js new file mode 100644 index 000000000..cbf53691a --- /dev/null +++ b/current/search/functions_9.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['print_5fhelp_0',['print_help',['../structasgard_1_1prog__opts.html#a226b469cb532fefb60280ab86250e8c2',1,'asgard::prog_opts']]], + ['print_5finfo_1',['print_info',['../asgard_8hpp.html#a7f82d4b2c7568ace08b2477afcba7a62',1,'asgard']]], + ['print_5foptions_2',['print_options',['../structasgard_1_1prog__opts.html#ab3d91ca5006733bf61632646bb986686',1,'asgard::prog_opts']]], + ['print_5fpde_5fhelp_3',['print_pde_help',['../structasgard_1_1prog__opts.html#ab08ec34c911bfaa92176241e5cc3c63d',1,'asgard::prog_opts']]], + ['print_5fversion_5fhelp_4',['print_version_help',['../structasgard_1_1prog__opts.html#a7f515d9f319422a59b658d8d178c7d0a',1,'asgard::prog_opts']]], + ['prog_5fopts_5',['prog_opts',['../structasgard_1_1prog__opts.html#a0bc9863e43cfcef572871afb604fc2d2',1,'asgard::prog_opts::prog_opts()=default'],['../structasgard_1_1prog__opts.html#ac346c18b2aaa6e5ddd5760330fd863b2',1,'asgard::prog_opts::prog_opts(int const argc, char const *const *argv, bool ignore_unknown=true)'],['../structasgard_1_1prog__opts.html#a3a21b84ad09c87031a97a47f4c92978a',1,'asgard::prog_opts::prog_opts(std::filesystem::path const &filename)'],['../structasgard_1_1prog__opts.html#a8f0a960af52da9d4c8df8b5a4a4e4534',1,'asgard::prog_opts::prog_opts(vecstrview const &argv)']]] +]; diff --git a/current/search/functions_a.js b/current/search/functions_a.js new file mode 100644 index 000000000..d8938651d --- /dev/null +++ b/current/search/functions_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['reconstruct_0',['reconstruct',['../classasgard_1_1reconstruct__solution.html#a8a3d9fa6e8d139b4dccc489532618b4c',1,'asgard::reconstruct_solution']]], + ['reconstruct_5fsolution_1',['reconstruct_solution',['../classasgard_1_1reconstruct__solution.html#a422672cf40847ea4bcecd5cd076d0d29',1,'asgard::reconstruct_solution']]], + ['rmse_5fexact_5fsol_2',['rmse_exact_sol',['../classasgard_1_1discretization__manager.html#acb5ccd0f0a04921a7fe3ccd51fc8c84c',1,'asgard::discretization_manager']]] +]; diff --git a/current/search/functions_b.js b/current/search/functions_b.js new file mode 100644 index 000000000..75c385f41 --- /dev/null +++ b/current/search/functions_b.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['save_5ffinal_5fsnapshot_0',['save_final_snapshot',['../classasgard_1_1discretization__manager.html#a683234a15797d986fcf1c816765e7bc3',1,'asgard::discretization_manager']]], + ['save_5fsnapshot_1',['save_snapshot',['../classasgard_1_1discretization__manager.html#a16d3c55cf6d769b3127f8cb38ea34c8c',1,'asgard::discretization_manager']]], + ['set_5fdomain_5fbounds_2',['set_domain_bounds',['../classasgard_1_1reconstruct__solution.html#a6d6343b22f9beed71a419003ae8b1cd9',1,'asgard::reconstruct_solution']]], + ['set_5ffinal_5ftime_5fstep_3',['set_final_time_step',['../classasgard_1_1discretization__manager.html#a13e2759bd66f1bdce32e9875434be248',1,'asgard::discretization_manager']]], + ['set_5fnext_5fstep_4',['set_next_step',['../classasgard_1_1discretization__manager.html#a62f1d21a508af91d1fc7d44f8dbad471',1,'asgard::discretization_manager']]], + ['simulate_5',['simulate',['../group__asgard__discretization.html#gaf9f5e5a47902e550bbafbcbe7b67cbff',1,'asgard']]], + ['simulate_5fbuiltin_6',['simulate_builtin',['../group__asgard__discretization.html#ga999da55616b6bd2a69d7e18f508e6cc5',1,'asgard']]], + ['start_5flevels_5fstr_7',['start_levels_str',['../structasgard_1_1prog__opts.html#a4420d12a7fc8d5de612961c5ec4ef8ca',1,'asgard::prog_opts']]] +]; diff --git a/current/search/functions_c.js b/current/search/functions_c.js new file mode 100644 index 000000000..4964ef1a5 --- /dev/null +++ b/current/search/functions_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['time_0',['time',['../classasgard_1_1discretization__manager.html#a6136d41e47ac6b0608aa2a4b8f4f1495',1,'asgard::discretization_manager']]], + ['time_5fstep_1',['time_step',['../classasgard_1_1discretization__manager.html#a3ff52943427629bbadcbc45c87530527',1,'asgard::discretization_manager']]] +]; diff --git a/current/search/groups_0.js b/current/search/groups_0.js new file mode 100644 index 000000000..6f57490a2 --- /dev/null +++ b/current/search/groups_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['asgard_20common_20options_0',['ASGarD Common Options',['../group__asgard__common__options.html',1,'']]], + ['asgard_20discretization_20tools_1',['ASGarD Discretization Tools',['../group__asgard__discretization.html',1,'']]], + ['asgard_20post_20processing_20tools_2',['ASGarD Post Processing Tools',['../group__asgard__postprocess.html',1,'']]] +]; diff --git a/current/search/groups_1.js b/current/search/groups_1.js new file mode 100644 index 000000000..3095af9d3 --- /dev/null +++ b/current/search/groups_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['common_20options_0',['ASGarD Common Options',['../group__asgard__common__options.html',1,'']]] +]; diff --git a/current/search/groups_2.js b/current/search/groups_2.js new file mode 100644 index 000000000..3742a9f5a --- /dev/null +++ b/current/search/groups_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['discretization_20tools_0',['ASGarD Discretization Tools',['../group__asgard__discretization.html',1,'']]] +]; diff --git a/current/search/groups_3.js b/current/search/groups_3.js new file mode 100644 index 000000000..50370eb5b --- /dev/null +++ b/current/search/groups_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['options_0',['ASGarD Common Options',['../group__asgard__common__options.html',1,'']]] +]; diff --git a/current/search/groups_4.js b/current/search/groups_4.js new file mode 100644 index 000000000..e7516d7c7 --- /dev/null +++ b/current/search/groups_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['post_20processing_20tools_0',['ASGarD Post Processing Tools',['../group__asgard__postprocess.html',1,'']]], + ['processing_20tools_1',['ASGarD Post Processing Tools',['../group__asgard__postprocess.html',1,'']]] +]; diff --git a/current/search/groups_5.js b/current/search/groups_5.js new file mode 100644 index 000000000..43de5c912 --- /dev/null +++ b/current/search/groups_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['tools_0',['tools',['../group__asgard__discretization.html',1,'ASGarD Discretization Tools'],['../group__asgard__postprocess.html',1,'ASGarD Post Processing Tools']]] +]; diff --git a/current/search/mag.svg b/current/search/mag.svg new file mode 100644 index 000000000..ffb6cf0d0 --- /dev/null +++ b/current/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/current/search/mag_d.svg b/current/search/mag_d.svg new file mode 100644 index 000000000..4122773f9 --- /dev/null +++ b/current/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/current/search/mag_sel.svg b/current/search/mag_sel.svg new file mode 100644 index 000000000..553dba877 --- /dev/null +++ b/current/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/current/search/mag_seld.svg b/current/search/mag_seld.svg new file mode 100644 index 000000000..c906f84c8 --- /dev/null +++ b/current/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/current/search/pages_0.js b/current/search/pages_0.js new file mode 100644 index 000000000..e1cff462f --- /dev/null +++ b/current/search/pages_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['adaptive_20sparse_20grid_20discretization_0',['ASGarD - Adaptive Sparse Grid Discretization',['../index.html',1,'']]], + ['asgard_20adaptive_20sparse_20grid_20discretization_1',['ASGarD - Adaptive Sparse Grid Discretization',['../index.html',1,'']]] +]; diff --git a/current/search/pages_1.js b/current/search/pages_1.js new file mode 100644 index 000000000..6ff648021 --- /dev/null +++ b/current/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['basic_20usage_0',['Basic Usage',['../md_doxygen_2basic__usage.html',1,'']]] +]; diff --git a/current/search/pages_2.js b/current/search/pages_2.js new file mode 100644 index 000000000..e3a9d24c6 --- /dev/null +++ b/current/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['discretization_0',['ASGarD - Adaptive Sparse Grid Discretization',['../index.html',1,'']]] +]; diff --git a/current/search/pages_3.js b/current/search/pages_3.js new file mode 100644 index 000000000..a9e490dd4 --- /dev/null +++ b/current/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['grid_20discretization_0',['ASGarD - Adaptive Sparse Grid Discretization',['../index.html',1,'']]] +]; diff --git a/current/search/pages_4.js b/current/search/pages_4.js new file mode 100644 index 000000000..a604108d7 --- /dev/null +++ b/current/search/pages_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['installation_0',['Installation',['../md_doxygen_2installation.html',1,'']]] +]; diff --git a/current/search/pages_5.js b/current/search/pages_5.js new file mode 100644 index 000000000..a1690426f --- /dev/null +++ b/current/search/pages_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['sparse_20grid_20discretization_0',['ASGarD - Adaptive Sparse Grid Discretization',['../index.html',1,'']]] +]; diff --git a/current/search/pages_6.js b/current/search/pages_6.js new file mode 100644 index 000000000..f2f2eb550 --- /dev/null +++ b/current/search/pages_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['usage_0',['Basic Usage',['../md_doxygen_2basic__usage.html',1,'']]] +]; diff --git a/current/search/search.css b/current/search/search.css new file mode 100644 index 000000000..19f76f9d5 --- /dev/null +++ b/current/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: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + 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: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + 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: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -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: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + 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 var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + 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 var(--search-results-border-color); + background-color: var(--search-results-background-color); + 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: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + 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: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.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: var(--nav-gradient-active-image-parent); + 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/current/search/search.js b/current/search/search.js new file mode 100644 index 000000000..6fd40c677 --- /dev/null +++ b/current/search/search.js @@ -0,0 +1,840 @@ +/* + @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 convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var 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 + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var 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'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var 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(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var 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) + { + var 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); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var 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) + { + var focusItem; + while (1) + { + var 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) + { + var focusItem; + while (1) + { + var 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) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // 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 + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var 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 + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var 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) + { + var 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) + { + var 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 + { + var newIndex = childIndex+1; + var 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 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); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?<)E+2THg; zG(OBF;o5ZMfmcAt0)eHRTullRJj<4aMg&E-N_h%2D>*81NK2?lCvd;z<8lrv=FPj~ zd2aWk)5ZVUwz-}C^7!M|C*NxRzp8ltsG!_NgYlE6kO0ZZHt6oYlHE~y<{@HFQz|O! zOE$-bzQ4|Ybj8eT>E)BRA1!#l;P1az|F6rht-p5noc;V=wzcyrO*lJLNJmTRUx?S< Wx0g)1;ywu&CJdggelF{r5}E*`!)ToV literal 0 HcmV?d00001 diff --git a/current/splitbard.png b/current/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..b9511f248ada2479992758c3bed4c3b621869bd8 GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@Vh2Q#MzO1NJ9 zx_`Nw0IT}>L<3a`qfOk$#gf>k&Hcl{=+F2lCH~uAw(j5~Uw6oC&*#7X{k@Eh{ruR3 zdXdB~C7-|+%`O91!DSkUL|kVq;t0ki_>a|6@A%t~5BHSMx1aO<&G}arcK7bjtNXiS z&)&NKe?RYEYghZXXx+N<{J8KRs|gu~ZteB&Oh(?4P19^$&I7&1;OXk;vd$@?2>`TK BXHWnD literal 0 HcmV?d00001 diff --git a/current/structasgard_1_1prog__opts-members.html b/current/structasgard_1_1prog__opts-members.html new file mode 100644 index 000000000..3a00e3abb --- /dev/null +++ b/current/structasgard_1_1prog__opts-members.html @@ -0,0 +1,169 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + doxygen + 1.9.8 +
    +
    ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
    +
    + +   + + + + +
    +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    asgard::prog_opts Member List
    +
    +
    + +

    This is the complete list of members for asgard::prog_opts, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    adapt_thresholdasgard::prog_opts
    anormasgard::prog_opts
    degreeasgard::prog_opts
    dtasgard::prog_opts
    externalsasgard::prog_opts
    extra_cli_value(std::string_view const &s) constasgard::prog_optsinline
    file_value(std::string_view const &s) constasgard::prog_optsinline
    gridasgard::prog_opts
    ignore_exactasgard::prog_opts
    isolver_iterationsasgard::prog_opts
    isolver_outer_iterationsasgard::prog_opts
    isolver_toleranceasgard::prog_opts
    kron_modeasgard::prog_opts
    max_levelsasgard::prog_opts
    max_levels_str() constasgard::prog_optsinline
    memory_limitasgard::prog_opts
    mgrid_groupasgard::prog_opts
    num_time_stepsasgard::prog_opts
    outfileasgard::prog_opts
    pde_choiceasgard::prog_opts
    print_help(std::ostream &os=std::cout)asgard::prog_optsstatic
    print_options(std::ostream &os=std::cout) constasgard::prog_opts
    print_pde_help(std::ostream &os=std::cout)asgard::prog_optsstatic
    print_version_help(std::ostream &os=std::cout)asgard::prog_optsstatic
    prog_opts()=defaultasgard::prog_opts
    prog_opts(int const argc, char const *const *argv, bool ignore_unknown=true)asgard::prog_opts
    prog_opts(std::filesystem::path const &filename)asgard::prog_optsinlineexplicit
    prog_opts(vecstrview const &argv)asgard::prog_optsinlineexplicit
    restart_fileasgard::prog_opts
    set_electricasgard::prog_opts
    show_helpasgard::prog_opts
    show_pde_helpasgard::prog_opts
    show_versionasgard::prog_opts
    solverasgard::prog_opts
    start_levelsasgard::prog_opts
    start_levels_str() constasgard::prog_optsinline
    step_methodasgard::prog_opts
    subtitleasgard::prog_opts
    titleasgard::prog_opts
    wavelet_output_freqasgard::prog_opts
    +
    + + + + + + diff --git a/current/structasgard_1_1prog__opts.html b/current/structasgard_1_1prog__opts.html new file mode 100644 index 000000000..351c8fa57 --- /dev/null +++ b/current/structasgard_1_1prog__opts.html @@ -0,0 +1,368 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: asgard::prog_opts Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + doxygen + 1.9.8 +
    +
    ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
    +
    + +   + + + + +
    +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    + +

    Reads options from the command line and input files. + More...

    + +

    #include <asgard_program_options.hpp>

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

    +Public Member Functions

    +void print_options (std::ostream &os=std::cout) const
     print the current set of options
     
    +std::string start_levels_str () const
     converts the start_levels to a human readable string
     
    +std::string max_levels_str () const
     converts the max_levels to a human readable string
     
    prog_opts ()=default
     create empty options, allows to manually fill the options later
     
    prog_opts (int const argc, char const *const *argv, bool ignore_unknown=true)
     process the command line arguments, may yield warning if encountering unknown options
     
    prog_opts (std::filesystem::path const &filename)
     process from a file
     
    prog_opts (vecstrview const &argv)
     for testing purposes, can read from manually specified argc/argv
     
    +template<typename out_type >
    std::optional< out_typefile_value (std::string_view const &s) const
     read an extra option from a file
     
    +template<typename out_type >
    std::optional< out_typeextra_cli_value (std::string_view const &s) const
     read an extra option from the cli extras
     
    + + + + + + + + + + +

    +Static Public Member Functions

    +static void print_help (std::ostream &os=std::cout)
     print list of ASGarD specific options
     
    +static void print_version_help (std::ostream &os=std::cout)
     print version and build (cmake) options
     
    +static void print_pde_help (std::ostream &os=std::cout)
     print information about the builtin PDEs
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::string title
     if provided, the title helps organize projects with multiple files
     
    +std::string subtitle
     if provided, the subtitile is an addition to the main title
     
    +std::optional< PDE_optspde_choice
     if set, one of the builtin PDEs will be used, keep unset for custom PDE projects
     
    +std::vector< intstart_levels
     read from -start_levels
     
    +std::vector< intmax_levels
     read from -max_levels
     
    +std::optional< grid_typegrid
     sparse, dense or mixed grid
     
    +std::optional< intmgrid_group
     if using mixed group, the size of the first mixed group
     
    +std::optional< intdegree
     degree of the polynomial basis
     
    +std::optional< doubleadapt_threshold
     if set, enables grid adaptivity and provides the tolerance threshold
     
    +std::optional< adapt_normanorm
     adaptivity norm, either l2 or linf
     
    +std::optional< time_advance::methodstep_method
     time stepping method, explicit, implicit or imex
     
    +std::optional< doubledt
     fixed time step, if missing the default cfl condition will be used
     
    +std::optional< intnum_time_steps
     number of fixed time steps to take
     
    +std::optional< boolset_electric
     enable/disable the Poisson solver
     
    +std::optional< intwavelet_output_freq
     output frequency of wavelet data used for restarts or python plotting
     
    +std::optional< solve_optssolver
     solver for implicit or imex methods: direct, gmres, bicgstab
     
    +std::optional< doubleisolver_tolerance
     tolerance for the iterative solvers (gmres, bicgstab)
     
    +std::optional< intisolver_iterations
     max number of iterations (inner iterations for gmres)
     
    +std::optional< intisolver_outer_iterations
     max number of output gmres iterations
     
    +std::optional< kronmult_modekron_mode
     local kron method only, mode dense or sparse (faster but memory hungry)
     
    +std::optional< intmemory_limit
     local kron method only, sparse mode, keeps less data on the device
     
    +std::string restart_file
     restart the simulation from a file
     
    +std::filesystem::path outfile
     filename for the last time step
     
    +bool show_help = false
     indicates if the –help option was selected
     
    +bool show_version = false
     indicates if the –version option was selected
     
    +bool show_pde_help = false
     indicates if the -pde? options was selected
     
    +bool ignore_exact = false
     indicates if the exact solution should be ignored or the error computed and shown every time-step
     
    +std::vector< std::string > externals
     argv input values unrecognized by ASGarD
     
    +

    Detailed Description

    +

    Reads options from the command line and input files.

    +

    Processes all the options listed with

    ./asgard --help
    +
    auto discretize(prog_opts const &options, verbosity_level verbosity=verbosity_level::quiet)
    Creates a discretization for the given pde and options.
    Definition asgard.hpp:92
    +

    The file and command line capabilities are provided for convenience and are entirely optional. The asgsrd::prog_opts objects can be default-constructed as empty, i.e., no options provided, then each of the values can be set manually before passing into other ASGarD objects. In most cases, if an option is not set, a default values will be used based on the hardcoded PDE specification.

    +

    Reading from the command line example:

    int main(int argc, char **argv) {
    +
    + +
    +
    // force the use of imex irrespective of the cli options
    + +
    +
    // make a new PDE with these options
    + +
    @ imex
    implicit-explicit scheme for nonlinear Vlasov-Poisson problems
    +
    Reads options from the command line and input files.
    Definition asgard_program_options.hpp:354
    +

    This will process the inputs from argv and will also include any inputs from a file. If an option is present multiple times, the last option will take precedence, this options hard-coded in the file can be adjusted from the command line, but only if they appear after the -if option.

    +

    List of the standard ASGarD options can be seen with:

    ./asgard --help # from the command line
    + + +
    static void print_help(std::ostream &os=std::cout)
    print list of ASGarD specific options
    +

    If the input file options (-infile or -if) is encountered when processing the command line argv, then the corresponding file will be processed as well. The common options provided in the file (e.g., time-stepping method or starting levels) will override any command line options before the -infile/if option and will be overridden by any following command line options.

    +

    The input file format consists of simple pairs of keys-values separated by colon ":" Keys that match command line input options will be used as if provided by the command line, other values can be specified in the file and retrieved in the C++ code, e.g.,

    # ASGarD standard options
    + + +
    -max_levels : 7 8
    +
    +
    # user specific options
    +
    my keyname 1 : 1.E-4
    +
    my keyname 2 : 5
    + + +
    std::vector< int > max_levels
    read from -max_levels
    Definition asgard_program_options.hpp:366
    +
    std::vector< int > start_levels
    read from -start_levels
    Definition asgard_program_options.hpp:364
    +

    The three keys can be retrieved as double, int and bool respectively, or they can all be read as strings.

    +

    Reading extra options, e.g., if using the file above

    // bar.value() will be set to 1.E-4
    +
    std::optional<double> bar = options.file_value<double>("my keyname 1");
    +
    +
    // foo.value() will be set to 5
    +
    std::optional<int> foo = options.file_value<int>("my keyname 2");
    +
    +
    // extra_name will be set to "my favorite pde"
    +
    std::optional<std::string> extra_name = options.file_value<std::string>("my keyname 4");
    +
    +
    // key3 will be empty, the keyname is missing/misspelled
    +
    std::optional<bool> key3 = options.file_value<bool>("keyname 3");
    +

    Supported types are bool, int, float, double, and std::string. A good practice is to provide meaningful names for the keys, e.g., "temperature" or "Young's modulus".

    +

    Reading from a hard-coded filename reduces flexibility but can improve reproducibility:

    prog_opts options("intput_filename.txt")
    +

    Notes about the API:

      +
    • If the keyword is missing or it is missing a value, the optional will be empty.
    • +
    • The file_value() method may throw conversion error, e.g., trying to read an int from a sting describing a double.
    • +
    • Boolean values interpreted as true are "true", "on", "enable", "1", "yes"
    • +
    • Boolean values interpreted as false are "false", "off", "disable", "0", "no"
    • +
    • Other boolean values are not accepted, will return empty optional.
    • +
    • ASGarD will not automatically interpret or access or use any of the extra options provided in the file or the command line, those are a responsibility of the user code.
    • +
    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + + + diff --git a/current/structasgard_1_1prog__opts.js b/current/structasgard_1_1prog__opts.js new file mode 100644 index 000000000..0f8a04b11 --- /dev/null +++ b/current/structasgard_1_1prog__opts.js @@ -0,0 +1,40 @@ +var structasgard_1_1prog__opts = +[ + [ "prog_opts", "structasgard_1_1prog__opts.html#a0bc9863e43cfcef572871afb604fc2d2", null ], + [ "prog_opts", "structasgard_1_1prog__opts.html#ac346c18b2aaa6e5ddd5760330fd863b2", null ], + [ "prog_opts", "structasgard_1_1prog__opts.html#a3a21b84ad09c87031a97a47f4c92978a", null ], + [ "prog_opts", "structasgard_1_1prog__opts.html#a8f0a960af52da9d4c8df8b5a4a4e4534", null ], + [ "print_options", "structasgard_1_1prog__opts.html#ab3d91ca5006733bf61632646bb986686", null ], + [ "start_levels_str", "structasgard_1_1prog__opts.html#a4420d12a7fc8d5de612961c5ec4ef8ca", null ], + [ "max_levels_str", "structasgard_1_1prog__opts.html#a7d8c1c6e346a89eee9843ba042a8ddf4", null ], + [ "file_value", "structasgard_1_1prog__opts.html#a3f9d25d677cebcfb923da72a827688b5", null ], + [ "extra_cli_value", "structasgard_1_1prog__opts.html#a8030d9bde292b716a90e782e33fb89ca", null ], + [ "title", "structasgard_1_1prog__opts.html#a6e7a6245159b10c3edc35137ca8a97cd", null ], + [ "subtitle", "structasgard_1_1prog__opts.html#a7773c6a5528a7e226a99b2366a24d83c", null ], + [ "pde_choice", "structasgard_1_1prog__opts.html#afec68ece1ca142f315dba5976aeed4b5", null ], + [ "start_levels", "structasgard_1_1prog__opts.html#ac07f3aa1555326421f446bb40cd3eb23", null ], + [ "max_levels", "structasgard_1_1prog__opts.html#a5a256ab4f45cc60c60e8945d3ab3a0d9", null ], + [ "grid", "structasgard_1_1prog__opts.html#af262e151500fa66ee03d414be64f4862", null ], + [ "mgrid_group", "structasgard_1_1prog__opts.html#af476187bfa5612a4fbb699ce5041373f", null ], + [ "degree", "structasgard_1_1prog__opts.html#a188de9dc3c3a60e6b05946fff96ca855", null ], + [ "adapt_threshold", "structasgard_1_1prog__opts.html#a95dec6dce17aea2fe838551d534708fd", null ], + [ "anorm", "structasgard_1_1prog__opts.html#a71e1b12c53d65628b8b57751029c0ec4", null ], + [ "step_method", "structasgard_1_1prog__opts.html#aa7f1b2afc9cce8c52ae12bf6187f3700", null ], + [ "dt", "structasgard_1_1prog__opts.html#a6123a01c2dab828aeffaa23c188a6ac7", null ], + [ "num_time_steps", "structasgard_1_1prog__opts.html#a16934efeef64a7c01531f2cc6a90cabf", null ], + [ "set_electric", "structasgard_1_1prog__opts.html#a4878da968a3ee7e9bde5fb6c995f8527", null ], + [ "wavelet_output_freq", "structasgard_1_1prog__opts.html#a04ab4ead20d4f61367a4e3f3d8193ec9", null ], + [ "solver", "structasgard_1_1prog__opts.html#a949e474fcecce4c287977d877cfa16b1", null ], + [ "isolver_tolerance", "structasgard_1_1prog__opts.html#aaf16c55109b4d9adf71e7409da66a0cb", null ], + [ "isolver_iterations", "structasgard_1_1prog__opts.html#aae3ff3b1826642d662341b39d1307bdb", null ], + [ "isolver_outer_iterations", "structasgard_1_1prog__opts.html#a72924b0e5f2a95b1e2ab227c7d4dac05", null ], + [ "kron_mode", "structasgard_1_1prog__opts.html#a3d095bbb912cd33db58dfea9d415295a", null ], + [ "memory_limit", "structasgard_1_1prog__opts.html#a0e1a2795f936588ed27deaa7b2b296d2", null ], + [ "restart_file", "structasgard_1_1prog__opts.html#ac5ebf718b89f429b2788f3e8cf174a6a", null ], + [ "outfile", "structasgard_1_1prog__opts.html#a7ab7518a56acd9d8dc4dd6d27cfe3a25", null ], + [ "show_help", "structasgard_1_1prog__opts.html#a84c32b11b5effcb85826e0e34b05998b", null ], + [ "show_version", "structasgard_1_1prog__opts.html#adbcc2263948af7ec1cb563b1d0def5ec", null ], + [ "show_pde_help", "structasgard_1_1prog__opts.html#a93c15ac856d9f9b357ce459cb69ed2b0", null ], + [ "ignore_exact", "structasgard_1_1prog__opts.html#a0ae68b7d0039aa06787707848841b12c", null ], + [ "externals", "structasgard_1_1prog__opts.html#aa68046f253bf88a3745191b771708d88", null ] +]; \ No newline at end of file diff --git a/current/sync_off.png b/current/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3c8d6a76fc6d46c94a446e371cd68e1cd2816b0b GIT binary patch literal 860 zcmV-i1Ec(jP)(Yn1Ks4z?TWp&UA0(#5q$%-X)Q*mT{XU#KbGgh|G`yaiU*_IBlk?qk z=A7?)wdJju2M~=%ED!}^mY5_Q;&0I@I>e9S4nQQfC;`&MHc=7028iadI3rp_H!!3- z0W6Be5s?Eh0`X#{?JKt#^?xX>(@d|785TwA-&K$qud9n1Vp zOoEF|>+9+0`HfqrF9QrS(VNT0531OG^dSC!d;nInje4L-E|j1`nb2X^L)Yi;eHbwT z#>fl?p7qlo=mW62s>R9(Fj@R6k^n|QAb5a(GLqdrQ3o(ecIe>NigsGJa4??(yskrH z@5^fPTG1*J0bYR~u4eP#=7M8xzXXdOab8@X$Iz|$8@DA7HPpk mq5&UiwGuaigAT4YfYpCtU#|<}-@63>0000l7{KxGz4xeh>2!6~@}@SGvE6LpWX71t*l@O$L~yqxvy${h%-JH+xCRLc!ZsGM zHWmr)kAxG(7>xa?7q!hO=tXs@K=xv8xD7(ti`ySJ&D);mcF(=%Ue5{JeEZ}1;PEKu zIltfeJ-_FzE3orL04F8lWl<}t#R}mOH$+&R6KBNF0Crps2?|7y*cQJAaB^D=i+(W< zq=W&Gra^op$^jN2TeOSKVxJhY{?QFsqeXo45D&MGeDRss@06fkeC#kQfQ5Qjw3@$o z3aZM??E2{nvSoWVg+3ScKIZwWvO!{HE*a?b&CRlH`G+9ftIndSZ4%M_UJ^MF6ikZkXd#ZvQ?dj*y z5+8t_ZJMACND1GXQU*gu*b&g&0M1@2sb-|>82;y<1W31D6Fh6ZQ@*K&uRA~BnZhR$ z_nM!oXG7a-Y-(?cX>8j%YrT4kS4oi&9 z6?HKHPBJ|PpEiUT@UP*+6UYCOC0wQ-TW8>keNc~^vb-XI|D`B9AGhK8$9fix$Ldb*#nFU|ug5!P=onx5eIAFmUf z=;WQY5Opipvc&KLq%g9x60_?V>SHqeD?qwYoq;aTB{8pDGjhD_eWR0ee_Z9l$?t(= zEU&5Htygx?clqt7F+Ft?NJfUtK-YS1<}QGpv)Zi8 z1gpdq@fg4&n28tgMf0%xO}q)PNDk@4(>vNp-Ny0r9N@otU%dUGp1eyO5qSU)L5r)` z`fzK*v5w2}=A)$^uxYCR=}yI8Olt~AhTROTLrZmwXb=VQMxqICX}1zT#UC15Z-8|F Y0tBh7vlq=##sB~S07*qoM6N<$f~2FFg8%>k literal 0 HcmV?d00001 diff --git a/current/tab_a.png b/current/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..7e6404c4d4b1c3bb4291b308c2e8708a2c554261 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qr?~}jv*C{Z|61&HW+X)PhK8& z{_pqD195konp-Ap(eAM9P?q@a86(V;lFXgBb$eo+w;21 h_uc>h^WWhr#yK+>kL;hm!VzdJgQu&X%Q~loCIG#MGAaN7 literal 0 HcmV?d00001 diff --git a/current/tab_ad.png b/current/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..a2e83ae5607ef43e3d7c3e990c835622415568fb GIT binary patch literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QdXWWjv*C{Z|5>{F(_~_=YRWe zZ|Hf<2w~6Av_{{PjMfUCHJDsPs>g;=D(O`OhSt{jBp`e|4(gjbpYp zH~*g4R_1=Mx^|u7 ni^bb6ZArY#^SR?+)fdLNoudDbzABsybPa>2tDnm{r-UW|PHjza literal 0 HcmV?d00001 diff --git a/current/tab_bd.png b/current/tab_bd.png new file mode 100644 index 0000000000000000000000000000000000000000..03509a07d0b8e84dfd225d30660dfad1d2319575 GIT binary patch literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QXZZzjv*C{Z|8RMHW=_Q|J{=M zzm?N)sZerEP3I%o2iYE*B{yB)GOcy@9rNNX;k5_0Y-7GTxvfIx!F)MKmd}&@9+at7 ePOAHTfO+0q?uB+mZyy28WbkzLb6Mw<&;$Si^e=D# literal 0 HcmV?d00001 diff --git a/current/tab_h.png b/current/tab_h.png new file mode 100644 index 0000000000000000000000000000000000000000..c611062ed1f350d8991f49b2ecfc9b44cb6b18a2 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qf;0tjv*C{Z|C0SVoVfqJzqX; z{*oOtix$U7#HSo$b!~QA5|eGfd#bxa>wLTMp5uAj&)L0JRjIW#U17R4aHVm*%#3^A zee$f2UDrKqqj<{v%VyE$oZj=(et7rTAOGTatz_Y+e*$v7N?X!mOV6!bu}V9sT=1v< rZ8fiFYq;!#bZ_(D@^mqHRl{gATcGC18b*1bix@mz{an^LB{Ts5DK1K2 literal 0 HcmV?d00001 diff --git a/current/tab_hd.png b/current/tab_hd.png new file mode 100644 index 0000000000000000000000000000000000000000..eea2eb860e5138ddfd9834306c758dc5b1cf532b GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QgNOxjv*C{Z|7d*J*>dPI{)tq zAHl#ztu7_87yr0}4D4qfvbrA`$Mp5OsmkR9{b%=PygOAQ`n* literal 0 HcmV?d00001 diff --git a/current/tab_s.png b/current/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..140e08b75a3b93495c8ff5e2d37e60d4d0bf51d8 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QWHE~978G?-`>scY6@UzxY&JP z$Vl?^t{MF&-`qOv>BE-0!Cq9*g~iKpccyP{o=$m@#chH9>yux^Ey}C+dDXPxUd=hq zRWkd39o?O_WBOLLf6{Y`PraC8V6|?;ckegOJ$G~^^3r*tmL9t0v$1PJo!o`f$7b9# zPkZ(Gs+UcVyts1Ni*vcY9F6N#s#IQTtn6G?$-J{iqAkdhp$F(T22WQ%mvv4FO#qR( BQilKl literal 0 HcmV?d00001 diff --git a/current/tab_sd.png b/current/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..cc3820768991bfff60a490bc5c746fa88f440851 GIT binary patch literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QbC?Bjv*C{Z|^z^H5hO(A8$8o_um|-(}?w6li>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:0px/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:var(--nav-menu-button-color);-webkit-transition:all 0.25s;transition:all 0.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:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:none}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.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:var(--nav-menu-toggle-color);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{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{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{border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.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:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0px 1px 1px #000}.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:var(--nav-gradient-image);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:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) 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 var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);border-radius:5px !important;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 var(--nav-menu-foreground-color);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:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);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 var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) 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;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:var(--nav-gradient-image)}.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:var(--nav-menu-background-color)}} diff --git a/current/topics.html b/current/topics.html new file mode 100644 index 000000000..e0503db1f --- /dev/null +++ b/current/topics.html @@ -0,0 +1,133 @@ + + + + + + + + +ASGarD - Adaptive Sparse Grid Discretization v0.7.0: Topics + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + doxygen + 1.9.8 +
    +
    ASGarD - Adaptive Sparse Grid Discretization v0.7.0 +
    +
    + +   + + + + +
    +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Topics
    +
    +
    +
    Here is a list of all topics with brief descriptions:
    +
    +
    + + + + + + diff --git a/current/topics.js b/current/topics.js new file mode 100644 index 000000000..36cf8b1c6 --- /dev/null +++ b/current/topics.js @@ -0,0 +1,6 @@ +var topics = +[ + [ "ASGarD Discretization Tools", "group__asgard__discretization.html", "group__asgard__discretization" ], + [ "ASGarD Common Options", "group__asgard__common__options.html", "group__asgard__common__options" ], + [ "ASGarD Post Processing Tools", "group__asgard__postprocess.html", "group__asgard__postprocess" ] +]; \ No newline at end of file