diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..59d0962
Binary files /dev/null and b/.DS_Store differ
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 0000000..b41a7b4
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,8 @@
+source 'https://rubygems.org'
+gem 'github-pages', group: :jekyll_plugins
+
+# Add just-the-docs theme
+gem 'just-the-docs'
+
+# Add spaceship to have mathjax
+gem "jekyll-spaceship"
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 0000000..28cd8dd
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,280 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ activesupport (7.1.3.3)
+ base64
+ bigdecimal
+ concurrent-ruby (~> 1.0, >= 1.0.2)
+ connection_pool (>= 2.2.5)
+ drb
+ i18n (>= 1.6, < 2)
+ minitest (>= 5.1)
+ mutex_m
+ tzinfo (~> 2.0)
+ addressable (2.8.6)
+ public_suffix (>= 2.0.2, < 6.0)
+ base64 (0.2.0)
+ bigdecimal (3.1.8)
+ coffee-script (2.4.1)
+ coffee-script-source
+ execjs
+ coffee-script-source (1.12.2)
+ colorator (1.1.0)
+ commonmarker (0.23.10)
+ concurrent-ruby (1.3.1)
+ connection_pool (2.4.1)
+ dnsruby (1.72.1)
+ simpleidn (~> 0.2.1)
+ drb (2.2.1)
+ em-websocket (0.5.3)
+ eventmachine (>= 0.12.9)
+ http_parser.rb (~> 0)
+ ethon (0.16.0)
+ ffi (>= 1.15.0)
+ eventmachine (1.2.7)
+ execjs (2.9.1)
+ faraday (2.8.1)
+ base64
+ faraday-net_http (>= 2.0, < 3.1)
+ ruby2_keywords (>= 0.0.4)
+ faraday-net_http (3.0.2)
+ ffi (1.17.0)
+ forwardable-extended (2.6.0)
+ gemoji (4.1.0)
+ github-pages (231)
+ github-pages-health-check (= 1.18.2)
+ jekyll (= 3.9.5)
+ jekyll-avatar (= 0.8.0)
+ jekyll-coffeescript (= 1.2.2)
+ jekyll-commonmark-ghpages (= 0.4.0)
+ jekyll-default-layout (= 0.1.5)
+ jekyll-feed (= 0.17.0)
+ jekyll-gist (= 1.5.0)
+ jekyll-github-metadata (= 2.16.1)
+ jekyll-include-cache (= 0.2.1)
+ jekyll-mentions (= 1.6.0)
+ jekyll-optional-front-matter (= 0.3.2)
+ jekyll-paginate (= 1.1.0)
+ jekyll-readme-index (= 0.3.0)
+ jekyll-redirect-from (= 0.16.0)
+ jekyll-relative-links (= 0.6.1)
+ jekyll-remote-theme (= 0.4.3)
+ jekyll-sass-converter (= 1.5.2)
+ jekyll-seo-tag (= 2.8.0)
+ jekyll-sitemap (= 1.4.0)
+ jekyll-swiss (= 1.0.0)
+ jekyll-theme-architect (= 0.2.0)
+ jekyll-theme-cayman (= 0.2.0)
+ jekyll-theme-dinky (= 0.2.0)
+ jekyll-theme-hacker (= 0.2.0)
+ jekyll-theme-leap-day (= 0.2.0)
+ jekyll-theme-merlot (= 0.2.0)
+ jekyll-theme-midnight (= 0.2.0)
+ jekyll-theme-minimal (= 0.2.0)
+ jekyll-theme-modernist (= 0.2.0)
+ jekyll-theme-primer (= 0.6.0)
+ jekyll-theme-slate (= 0.2.0)
+ jekyll-theme-tactile (= 0.2.0)
+ jekyll-theme-time-machine (= 0.2.0)
+ jekyll-titles-from-headings (= 0.5.3)
+ jemoji (= 0.13.0)
+ kramdown (= 2.4.0)
+ kramdown-parser-gfm (= 1.1.0)
+ liquid (= 4.0.4)
+ mercenary (~> 0.3)
+ minima (= 2.5.1)
+ nokogiri (>= 1.13.6, < 2.0)
+ rouge (= 3.30.0)
+ terminal-table (~> 1.4)
+ github-pages-health-check (1.18.2)
+ addressable (~> 2.3)
+ dnsruby (~> 1.60)
+ octokit (>= 4, < 8)
+ public_suffix (>= 3.0, < 6.0)
+ typhoeus (~> 1.3)
+ html-pipeline (2.14.3)
+ activesupport (>= 2)
+ nokogiri (>= 1.4)
+ http_parser.rb (0.8.0)
+ i18n (1.14.5)
+ concurrent-ruby (~> 1.0)
+ jekyll (3.9.5)
+ addressable (~> 2.4)
+ colorator (~> 1.0)
+ em-websocket (~> 0.5)
+ i18n (>= 0.7, < 2)
+ jekyll-sass-converter (~> 1.0)
+ jekyll-watch (~> 2.0)
+ kramdown (>= 1.17, < 3)
+ liquid (~> 4.0)
+ mercenary (~> 0.3.3)
+ pathutil (~> 0.9)
+ rouge (>= 1.7, < 4)
+ safe_yaml (~> 1.0)
+ jekyll-avatar (0.8.0)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-coffeescript (1.2.2)
+ coffee-script (~> 2.2)
+ coffee-script-source (~> 1.12)
+ jekyll-commonmark (1.4.0)
+ commonmarker (~> 0.22)
+ jekyll-commonmark-ghpages (0.4.0)
+ commonmarker (~> 0.23.7)
+ jekyll (~> 3.9.0)
+ jekyll-commonmark (~> 1.4.0)
+ rouge (>= 2.0, < 5.0)
+ jekyll-default-layout (0.1.5)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-feed (0.17.0)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-gist (1.5.0)
+ octokit (~> 4.2)
+ jekyll-github-metadata (2.16.1)
+ jekyll (>= 3.4, < 5.0)
+ octokit (>= 4, < 7, != 4.4.0)
+ jekyll-include-cache (0.2.1)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-mentions (1.6.0)
+ html-pipeline (~> 2.3)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-optional-front-matter (0.3.2)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-paginate (1.1.0)
+ jekyll-readme-index (0.3.0)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-redirect-from (0.16.0)
+ jekyll (>= 3.3, < 5.0)
+ jekyll-relative-links (0.6.1)
+ jekyll (>= 3.3, < 5.0)
+ jekyll-remote-theme (0.4.3)
+ addressable (~> 2.0)
+ jekyll (>= 3.5, < 5.0)
+ jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0)
+ rubyzip (>= 1.3.0, < 3.0)
+ jekyll-sass-converter (1.5.2)
+ sass (~> 3.4)
+ jekyll-seo-tag (2.8.0)
+ jekyll (>= 3.8, < 5.0)
+ jekyll-sitemap (1.4.0)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-spaceship (0.5.3)
+ jekyll (>= 3.6, < 5.0)
+ nokogiri (~> 1.6)
+ rainbow (~> 3.0)
+ jekyll-swiss (1.0.0)
+ jekyll-theme-architect (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-cayman (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-dinky (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-hacker (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-leap-day (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-merlot (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-midnight (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-minimal (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-modernist (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-primer (0.6.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-github-metadata (~> 2.9)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-slate (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-tactile (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-time-machine (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-titles-from-headings (0.5.3)
+ jekyll (>= 3.3, < 5.0)
+ jekyll-watch (2.2.1)
+ listen (~> 3.0)
+ jemoji (0.13.0)
+ gemoji (>= 3, < 5)
+ html-pipeline (~> 2.2)
+ jekyll (>= 3.0, < 5.0)
+ just-the-docs (0.8.2)
+ jekyll (>= 3.8.5)
+ jekyll-include-cache
+ jekyll-seo-tag (>= 2.0)
+ rake (>= 12.3.1)
+ kramdown (2.4.0)
+ rexml
+ kramdown-parser-gfm (1.1.0)
+ kramdown (~> 2.0)
+ liquid (4.0.4)
+ listen (3.9.0)
+ rb-fsevent (~> 0.10, >= 0.10.3)
+ rb-inotify (~> 0.9, >= 0.9.10)
+ mercenary (0.3.6)
+ minima (2.5.1)
+ jekyll (>= 3.5, < 5.0)
+ jekyll-feed (~> 0.9)
+ jekyll-seo-tag (~> 2.1)
+ minitest (5.23.1)
+ mutex_m (0.2.0)
+ nokogiri (1.15.6-x86_64-linux)
+ racc (~> 1.4)
+ octokit (4.25.1)
+ faraday (>= 1, < 3)
+ sawyer (~> 0.9)
+ pathutil (0.16.2)
+ forwardable-extended (~> 2.6)
+ public_suffix (5.0.5)
+ racc (1.8.0)
+ rainbow (3.1.1)
+ rake (13.2.1)
+ rb-fsevent (0.11.2)
+ rb-inotify (0.11.1)
+ ffi (~> 1.0)
+ rexml (3.2.8)
+ strscan (>= 3.0.9)
+ rouge (3.30.0)
+ ruby2_keywords (0.0.5)
+ rubyzip (2.3.2)
+ safe_yaml (1.0.5)
+ sass (3.7.4)
+ sass-listen (~> 4.0.0)
+ sass-listen (4.0.0)
+ rb-fsevent (~> 0.9, >= 0.9.4)
+ rb-inotify (~> 0.9, >= 0.9.7)
+ sawyer (0.9.2)
+ addressable (>= 2.3.5)
+ faraday (>= 0.17.3, < 3)
+ simpleidn (0.2.3)
+ strscan (3.1.0)
+ terminal-table (1.8.0)
+ unicode-display_width (~> 1.1, >= 1.1.1)
+ typhoeus (1.4.1)
+ ethon (>= 0.9.0)
+ tzinfo (2.0.6)
+ concurrent-ruby (~> 1.0)
+ unicode-display_width (1.8.0)
+
+PLATFORMS
+ x86_64-linux
+
+DEPENDENCIES
+ github-pages
+ jekyll-spaceship
+ just-the-docs
+
+BUNDLED WITH
+ 2.4.22
diff --git a/_config.yml b/_config.yml
new file mode 100644
index 0000000..d90071c
--- /dev/null
+++ b/_config.yml
@@ -0,0 +1,63 @@
+title: VERTEX-CFD
+description: VERTEX-CFD is a performance portable software package for computational fluid dynamics (CFD) simulations on CPU or GPU architectures.
+baseurl: "/VERTEX-CFD"
+url: "https://ORNL.github.io"
+repository: ORNL/VERTEX-CFD
+
+#show_downloads: true
+#google_analytics:
+#theme: jekyll-theme-minimal
+
+permalink: pretty
+
+remote_theme: just-the-docs/just-the-docs
+
+plugins:
+ - jekyll-remote-theme
+ - jekyll-seo-tag
+ - jekyll-feed
+
+compress_html:
+ blanklines: true
+
+# Override purple (default) to ORNL green
+color_scheme: ornl_green
+
+logo: docs/figures/vertex_cfd_heated_flow_logo.png
+
+# External navigation links
+nav_external_links:
+ - title: VERTEX-CFD on GitHub
+ url: "https://github.com/ORNL/VERTEX-CFD"
+
+# Aux links for the upper right navigation
+aux_links:
+ "VERTEX-CFD on GitHub":
+ - "https://github.com/ORNL/VERTEX-CFD"
+
+# Makes Aux links open in a new tab. Default is false
+aux_links_new_tab: false
+
+# Enable callouts in markdown
+callouts_level: quiet # or loud
+callouts:
+ highlight:
+ color: yellow
+ important:
+ title: Important
+ color: blue
+ new:
+ title: New
+ color: green
+ note:
+ title: Note
+ color: purple
+ warning:
+ title: Warning
+ color: red
+ custom:
+ title: Note
+ color: ornl_green
+
+sass:
+ custom_stylesheet: _sass/custom/custom.scss
diff --git a/_includes/head_custom.html b/_includes/head_custom.html
new file mode 100644
index 0000000..16af50c
--- /dev/null
+++ b/_includes/head_custom.html
@@ -0,0 +1,10 @@
+{% if page.usemathjax %}
+
+
+{% endif %}
diff --git a/_sass/color_schemes/ornl_green.scss b/_sass/color_schemes/ornl_green.scss
new file mode 100644
index 0000000..fca6234
--- /dev/null
+++ b/_sass/color_schemes/ornl_green.scss
@@ -0,0 +1,4 @@
+$ornl-green: #007833;
+$link-color: $ornl-green;
+$btn-primary-color: $ornl-green;
+$sidebar-color: #ffffff;
diff --git a/_sass/custom/custom.scss b/_sass/custom/custom.scss
new file mode 100644
index 0000000..3f4925d
--- /dev/null
+++ b/_sass/custom/custom.scss
@@ -0,0 +1,73 @@
+.side-bar {
+ z-index: 0;
+ display: flex;
+ flex-wrap: wrap;
+ background-color: $sidebar-color;
+
+ @include mq(md) {
+ flex-flow: column nowrap;
+ position: fixed;
+ width: $nav-width-md;
+ height: 100%;
+ border-right: $border $border-color;
+ align-items: flex-end;
+ }
+
+ @include mq(lg) {
+ width: calc((70% - #{$nav-width + $content-width}) / 20 + #{$nav-width});
+ min-width: $nav-width;
+ }
+
+ & + .main {
+ @include mq(md) {
+ margin-left: $nav-width-md;
+ }
+
+ @include mq(lg) {
+ // stylelint-disable function-name-case
+ // disable for Max(), we want to use the CSS max() function
+ margin-left: Max(
+ #{$nav-width},
+ calc((70% - #{$nav-width + $content-width}) / 20 + #{$nav-width})
+ );
+ // stylelint-enable function-name-case
+ }
+
+ .main-header {
+ display: none;
+ background-color: $sidebar-color;
+
+ @include mq(md) {
+ display: flex;
+ background-color: $body-background-color;
+ }
+
+ &.nav-open {
+ display: block;
+
+ @include mq(md) {
+ display: flex;
+ }
+ }
+ }
+ }
+}
+
+body {
+ background-color: $grey-lt-000;
+}
+
+html, body {
+ height: 100%;
+}
+
+footer {
+ display: none;
+}
+
+.main {
+ #background-color: #ffffff;
+ min-height: 100vh;
+ background-color: #ffffff;
+ padding-bottom: 2rem;
+}
diff --git a/_sass/custom/setup.scss b/_sass/custom/setup.scss
new file mode 100644
index 0000000..2e277f6
--- /dev/null
+++ b/_sass/custom/setup.scss
@@ -0,0 +1,4 @@
+$ornl-green-000: #008542;
+$ornl-green-100: #008542;
+$ornl-green-200: #008542;
+$ornl-green-300: #008542;
diff --git a/cmake/FindCLANG_FORMAT.cmake b/cmake/FindCLANG_FORMAT.cmake
deleted file mode 100644
index 50a58d4..0000000
--- a/cmake/FindCLANG_FORMAT.cmake
+++ /dev/null
@@ -1,52 +0,0 @@
-# Find clang-format
-#
-# CLANG_FORMAT_EXECUTABLE - Path to clang-format executable
-# CLANG_FORMAT_FOUND - True if the clang-format executable was found.
-# CLANG_FORMAT_VERSION - The version of clang-format found
-#
-
-find_program(CLANG_FORMAT_EXECUTABLE
- NAMES clang-format
- clang-format-10
- clang-format-9
- clang-format-8
- clang-format-7
- clang-format-6.0
- clang-format-5.0
- clang-format-4.0
- clang-format-3.9
- clang-format-3.8
- clang-format-3.7
- clang-format-3.6
- clang-format-3.5
- clang-format-3.4
- clang-format-3.3
- DOC "clang-format executable")
-mark_as_advanced(CLANG_FORMAT_EXECUTABLE)
-
-# Extract version from command "clang-format -version"
-if(CLANG_FORMAT_EXECUTABLE)
- execute_process(COMMAND ${CLANG_FORMAT_EXECUTABLE} -version
- OUTPUT_VARIABLE clang_format_version
- ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
-
- if(clang_format_version MATCHES "^clang-format version .*")
- # clang_format_version sample: "clang-format version 3.9.1-4ubuntu3~16.04.1
- # (tags/RELEASE_391/rc2)"
- string(REGEX
- REPLACE "clang-format version ([.0-9]+).*"
- "\\1"
- CLANG_FORMAT_VERSION
- "${clang_format_version}")
- # CLANG_FORMAT_VERSION sample: "3.9.1"
- else()
- set(CLANG_FORMAT_VERSION 0.0)
- endif()
-else()
- set(CLANG_FORMAT_VERSION 0.0)
-endif()
-
-include(FindPackageHandleStandardArgs)
-# handle the QUIETLY and REQUIRED arguments and set CLANG_FORMAT_FOUND to TRUE
-# if all listed variables are TRUE
-find_package_handle_standard_args(CLANG_FORMAT REQUIRED_VARS CLANG_FORMAT_EXECUTABLE VERSION_VAR CLANG_FORMAT_VERSION)
diff --git a/cmake/FindGCOVR.cmake b/cmake/FindGCOVR.cmake
deleted file mode 100644
index d47dd6c..0000000
--- a/cmake/FindGCOVR.cmake
+++ /dev/null
@@ -1,24 +0,0 @@
-# Find gcovr
-#
-# GCOVR_EXECUTABLE - Path to gcovr executable
-# GCOVR_FOUND - True if the gcovr executable was found
-# GCOVR_VERSION - The version of gcovr found
-#
-
-find_program(GCOVR_EXECUTABLE
- NAMES gcovr
- DOC "gcovr executable")
-mark_as_advanced(GCOVR_EXECUTABLE)
-
-# Extract version from command "gcovr -version"
-if(GCOVR_EXECUTABLE)
- execute_process(COMMAND ${GCOVR_EXECUTABLE} --version
- OUTPUT_VARIABLE gcovr_version
- ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
- if(gcovr_version MATCHES "^gcovr ([.0-9]+)")
- set(GCOVR_VERSION ${CMAKE_MATCH_1})
- endif()
-endif()
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(GCOVR REQUIRED_VARS GCOVR_EXECUTABLE VERSION_VAR GCOVR_VERSION)
diff --git a/cmake/FindSuperLU_dist.cmake b/cmake/FindSuperLU_dist.cmake
deleted file mode 100644
index 300fa86..0000000
--- a/cmake/FindSuperLU_dist.cmake
+++ /dev/null
@@ -1,28 +0,0 @@
-# Find SuperLU_dist
-# SuperLU_dist_FOUND - True if SuperLU_dist was found
-# SuperLU_dist::SuperLU_dist - interface target
-
-find_path(SuperLU_dist_INCLUDE_DIR superlu_ddefs.h)
-find_library(SuperLU_dist_LIBRARY NAMES superlu_dist)
-
-mark_as_advanced(
- SuperLU_dist_INCLUDE_DIR
- SuperLU_dist_LIBRARY
-)
-
-include(FindPackageHandleStandardArgs)
-
-find_package_handle_standard_args(
- SuperLU_dist DEFAULT_MSG
- SuperLU_dist_LIBRARY SuperLU_dist_INCLUDE_DIR
-)
-
-if(SuperLU_dist_FOUND AND NOT TARGET SuperLU_dist::SuperLU_dist)
- add_library(SuperLU_dist::SuperLU_dist UNKNOWN IMPORTED)
- set_target_properties(SuperLU_dist::SuperLU_dist PROPERTIES
- IMPORTED_LOCATION "${SuperLU_dist_LIBRARY}"
- INTERFACE_INCLUDE_DIRECTORIES "${SuperLU_dist_INCLUDE_DIR}"
- )
- message("SuperLU_dist_LIBRARY: ${SuperLU_dist_LIBRARY}")
- message("SuperLU_dist_INCLUDE_DIR: ${SuperLU_dist_INCLUDE_DIR}")
-endif()
diff --git a/cmake/FindYAPF.cmake b/cmake/FindYAPF.cmake
deleted file mode 100644
index c595e6c..0000000
--- a/cmake/FindYAPF.cmake
+++ /dev/null
@@ -1,36 +0,0 @@
-# Find yapf
-#
-# YAPF_EXECUTABLE - Path to python-format executable
-# YAPF_FOUND - True if the python-format executable was found.
-# YAPF_VERSION - The version of python-format found
-#
-
-find_program(YAPF_EXECUTABLE
- NAMES yapf
- DOC "Python formatter executable")
-mark_as_advanced(YAPF_EXECUTABLE)
-
-# Extract version from command "yapf -version"
-if(YAPF_EXECUTABLE)
- execute_process(COMMAND ${YAPF_EXECUTABLE} -version
- OUTPUT_VARIABLE yapf_version
- ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
- if(yapf_version MATCHES "^yapf .*")
- # yapf_version sample: "yapf 0.32.0"
- string(REGEX
- REPLACE "yapf version ([.0-9]+).*"
- "\\1"
- YAPF_VERSION
- "${yapf_version}")
- # YAPF_VERSION sample: "0.32.0"
- else()
- set(YAPF_VERSION 0.0)
- endif()
-else()
- set(YAPF_VERSION 0.0)
-endif()
-
-include(FindPackageHandleStandardArgs)
-# handle the QUIETLY and REQUIRED arguments and set YAPF_FOUND to TRUE
-# if all listed variables are TRUE
-find_package_handle_standard_args(YAPF REQUIRED_VARS YAPF_EXECUTABLE VERSION_VAR YAPF_VERSION)
diff --git a/cmake/VertexCFDConfig.cmake.in b/cmake/VertexCFDConfig.cmake.in
deleted file mode 100644
index 6571362..0000000
--- a/cmake/VertexCFDConfig.cmake.in
+++ /dev/null
@@ -1,9 +0,0 @@
-include(CMakeFindDependencyMacro)
-list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}" )
-list(APPEND CMAKE_PREFIX_PATH @CMAKE_PREFIX_PATH@)
-find_dependency( Trilinos 13 REQUIRED COMPONENTS
- Kokkos
- Teuchos
- SEACASIoss
- STKMesh
- STKIO )
diff --git a/docs/contribution.md b/docs/contribution.md
new file mode 100644
index 0000000..fa75d5e
--- /dev/null
+++ b/docs/contribution.md
@@ -0,0 +1,21 @@
+---
+parent: VERTEX-CFD v1.0 User Guide
+title: Contributing to VERTEX-CFD
+nav_order: 4
+usemathjax: true
+---
+
+# How to contribute to VERTEX-CFD
+
+Contribution to VERTEX-CFD source code follows a strict process to warranty robustness and deployment on HPC platforms. Any change to the GitHub repo must be reviewed by one of the main developers listed on the [home](../index.md) page. If you are willing to contribute to the development of VERTEX-CFD, please review the [GitHub documentation on how to collaborate](https://docs.github.com/en/pull-requests) and follow the steps given below:
+- [Git clone VERTEX-CFD repo](https://github.com/ORNL/VERTEX-CFD) and [compile the source code](installation.md).
+- Create a new branch from the main branch.
+- Make changes to the source code.
+- Add/update unit test(s) and/or regression test(s) when needed.
+- Push changes to your remote branch and create a pull request (PR).
+- Add a description to the PR with results supporting the changes.
+- Tag a reviewer to the PR.
+
+A contributor will then review the PR and add comments to the changes. Make sure to address all comments and to respond to all threads. Once the reviewer resolves all threads and approves the PR, the branch will be merged to the [main branch](https://github.com/ORNL/VERTEX-CFD).
+
+If you have any questions or comments, please contact of the main contributors listed on the [home page](../index.md).
diff --git a/docs/figures/vertex_cfd_heated_flow_logo.png b/docs/figures/vertex_cfd_heated_flow_logo.png
new file mode 100644
index 0000000..33f5012
Binary files /dev/null and b/docs/figures/vertex_cfd_heated_flow_logo.png differ
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 0000000..e9fca69
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,13 @@
+---
+layout: page
+title: VERTEX-CFD v1.0 User Guide
+nav_order: 2
+has_children: true
+---
+
+# VERTEX-CFD v1.0 User Guide
+VERTEX-CFD is a free, open source multiphysics software for simulations of fusion applications released by Oak Ridge National Laboratory.
+---
+
+{: .custom }
+The User Guide v1.0 is currently under development and may be incomplete.
diff --git a/docs/installation.md b/docs/installation.md
new file mode 100644
index 0000000..fa9f00a
--- /dev/null
+++ b/docs/installation.md
@@ -0,0 +1,498 @@
+---
+parent: VERTEX-CFD v1.0 User Guide
+title: Installation and testing
+nav_order: 1
+---
+
+# Installation
+VERTEX-CFD supports both CPU and GPU solvers. Depending on the CPU/GPU supports, Trilinos must be compiled with the proper configurations because VERTEX-CFD relies on the Trilinos installation. For the VERTEX-CFD installation, Trilinos should be available in the system. Installation instructions for both Trilinos and VERTEX-CFD are available. If Trilinos is already built and ready, then you can skip to [VERTEX-CFD installation instructions](#vertex-cfd-installation). All of the scripts given in this file are also available in the [docs/scripts](https://github.com/ORNL/VERTEX-CFD/tree/gh-pages/docs/scripts) directory for the user's convenience.
+
+## Trilinos Installation
+Trilinos supports both CPU and GPU if configured accordingly. For the installation with CPU support only, we have a [spack](https://spack.readthedocs.io/en/latest/environments.html)-based procedure which is easier to follow. For GPU, as of now, Trilinos must be built manually. For both options, we suggest using a compute node instead of a login node, which would be a demanding process.
+
+### Trilinos-CPU Installation
+First, create a directory and git clone spack.
+
+```
+mkdir trilinos
+cd trilinos/
+git clone -c feature.manyFiles=true --depth=2 https://github.com/spack/spack.git
+```
+
+Next, create a file named `spack-trilinos16.yaml` which should contain the configuration presented below for spack. Pay special attention to `EDIT` entries because edits may be required, depending on your machine. Modules already available on your machine can be loaded using the `packages` section at the end of the file.
+
+```
+spack:
+ concretizer:
+ unify: when_possible
+
+ config:
+ build_stage:
+ - $spack/var/spack/spack-stage/build-$arch-$date/
+ misc_cache: $spack/.cache
+ build_jobs: 32
+ install_tree:
+ root: $spack/opt/spack/
+ projections:
+ all: install-{os}-{target}-{compiler.name}-{compiler.version}/{name}-{version}
+ keep_stage: true
+ verify_ssl: true
+ checksum: true
+ dirty: false
+ build_language: C
+ ccache: false
+ db_lock_timeout: 120
+ package_lock_timeout: null
+ shared_linking:
+ type: rpath
+ bind: false
+ allow_sgid: true
+ locks: true
+ suppress_gpg_warnings: false
+ connect_timeout: 10
+
+ compilers:
+ - compiler: # EDIT: change below with your compiler of choice
+ spec: gcc@13.2.0
+ paths: # EDIT: Change those based on the location of the compiler location you prefer
+ cc: /software/dev_tools/swtree/cs400/gcc/13.2.0/centos7.5_gnu8.5.0/bin/gcc
+ cxx: /software/dev_tools/swtree/cs400/gcc/13.2.0/centos7.5_gnu8.5.0/bin/g++
+ f77: /software/dev_tools/swtree/cs400/gcc/13.2.0/centos7.5_gnu8.5.0/bin/gfortran
+ fc: /software/dev_tools/swtree/cs400/gcc/13.2.0/centos7.5_gnu8.5.0/bin/gfortran
+ flags: {}
+ operating_system: centos7 # EDIT: update according to `spack arch`: just the OS version
+ target: x86_64
+ modules: # EDIT: update with a list of modules you want to load by default
+ - gcc/13.2.0
+
+ packages:
+ all:
+ target: [broadwell] # EDIT: Change this according to `spack arch`
+ compiler: [gcc@13.2.0] # EDIT: Change according to your compiler of choice
+ providers: # EDIT: Change versions below according to the default in your machine
+ mpi: [intel-oneapi-mkl]
+ blas: [intel-oneapi-mkl]
+ lapack: [intel-oneapi-mkl]
+ pkgconfig: [pkg-config]
+
+ specs:
+ - python
+ - ninja
+ - boost
+ - intel-oneapi-mkl
+ - googletest
+ - trilinos@16.0.0 +chaco+exodus+hdf5+intrepid2+kokkos+mpi+nox+openmp+panzer+phalanx+shards+shared+stk+tempus+zoltan2
+```
+
+Now, source the spack setup script and create an environment named `vertex`.
+
+```
+source spack/share/spack/setup-env.sh
+spack env create vertex spack-trilinos16.yaml
+spack env activate vertex
+spack spec
+```
+
+ `spack spec` will show the configuration of what is to be installed: make sure the configuration matches what was requested in the configuration file. Next, install Trilinos and its dependencies.
+
+```
+spack install
+```
+
+If the session is ended for any reason, then the user may need to reactivate the vertex spack env using `spack env activate vertex`. If all compiles without error, then the modules are ready to use. `spack location -i trilinos` will return the location of the Trilinos install. The modules can be set up using
+
+```
+spack module tcl refresh
+```
+Trilinos can be called by loading the module as shown below. The folder names may be different, depending on your machine configuration. We suggest finding the current folders instead of copying and pasting. As an example, on [CADES](https://www.ornl.gov/content/cades) in ORNL, they are located in
+
+```
+module use //share/spack/modules/linux-centos7-haswell/
+module load trilinos/16.0.0-gcc-13.2.0-qzebvtj
+```
+Trilinos and its dependencies are required to compile [VERTEX-CFD](#vertex-cfd-installation).
+
+### Trilinos-GPU Installation
+As of now, VERTEX-CFD-GPU installation is not supported by the spack. Hence, Trilinos with GPU support must be compiled manually. To install Trilinos-GPU, the first step is to clone Trilinos from the GitHub repo and checkout to `Trilinos-16-0-0` as follows:
+
+```
+git clone https://github.com/trilinos/Trilinos.git
+cd Trilinos
+git checkout trilinos-release-16-0-branch
+```
+
+Once you have checked out to the correct version, you can create a new folder for building Trilinos, as follows:
+
+```
+mkdir build
+cd build
+```
+
+Now the modules required to build Trilinos must be loaded. Create a file named `trilinos-cuda-env.sh`. The procedure for module loading differs, depending on the machine. The content of `trilinos-cuda-env.sh` in NERSC Perlmutter is given as an example below: this can be adjusted according to your machine's configurations:
+
+```
+#!/bin/bash
+
+module load PrgEnv-gnu/8.5.0
+module load gcc-native/12.3
+module load cudatoolkit/12.4
+module load craype-accel-nvidia80
+module load cray-libsci/23.12.5
+module load craype/2.7.30
+module load cray-mpich/8.1.28
+module load cray-hdf5-parallel/1.12.2.9
+module load cray-netcdf-hdf5parallel/4.9.0.9
+module load cray-parallel-netcdf/1.12.3.9
+module load cmake/3.30.2
+
+module load spack
+spack env activate cuda
+spack load metis
+spack load parmetis
+
+export MPICH_ENV_DISPLAY=1
+export MPICH_VERSION_DISPLAY=1
+export OMP_STACKSIZE=128M
+export OMP_PROC_BIND=spread
+export OMP_PLACES=threads
+export HDF5_USE_FILE_LOCKING=FALSE
+export MPICH_GPU_SUPPORT_ENABLED=1
+export CUDATOOLKIT_VERSION_STRING=${CRAY_CUDATOOLKIT_VERSION#*_}
+
+export CRAY_ACCEL_TARGET="nvidia80"
+
+export KOKKOS_MAP_DEVICE_ID_BY=mpi_rank
+export CUDA_MANAGED_FORCE_DEVICE_ALLOC=1
+export TPETRA_ASSUME_GPU_AWARE_MPI=0
+```
+
+Once this is ready, create a configuration script named `trilinos-cuda-config.sh` and include the following content:
+
+```
+#!/bin/bash
+# This is a sample Trilinos configuration script for Albany on perlmutter
+
+source trilinos-cuda-env.sh
+
+# Cleanup old cmake files
+rm -rf CMake*
+
+# Set Trilinos build path
+BUILD_DIR=`pwd`
+
+# EDIT: Change this based on your NVCC WRAPPER location
+NVCC_WRAPPER=
+
+# EDIT: Change with path to Trilinos source directory
+TRILINOS_SOURCE_DIR=
+
+# EDIT: Change with path to boost
+BOOST_DIR=
+
+TRILINOS_INSTALL_DIR=
+
+export CRAYPE_LINK_TYPE=dynamic
+export CRAY_CPU_TARGET=x86-64
+
+cmake \
+ -D CMAKE_C_COMPILER=cc \
+ -D CMAKE_CXX_COMPILER=${NVCC_WRAPPER} \
+ -D CMAKE_Fortran_COMPILER=ftn \
+\
+ -D CMAKE_INSTALL_PREFIX:PATH=${TRILINOS_INSTALL_DIR} \
+ -D CMAKE_BUILD_TYPE:STRING=RELEASE \
+\
+ -D BUILD_SHARED_LIBS=ON \
+ -D Trilinos_ENABLE_ALL_PACKAGES=ON \
+ -D Trilinos_ENABLE_SECONDARY_TESTED_CODE=ON \
+ -D Trilinos_ENABLE_EXPLICIT_INSTANTIATION=ON \
+ -D Trilinos_ENABLE_PyTrilinos=OFF \
+ -D Trilinos_SHOW_DEPRECATED_WARNINGS=OFF \
+ -D TPL_ENABLE_MPI=ON \
+ -D TPL_Netcdf_PARALLEL=FALSE \
+\
+ -D TPL_ENABLE_HDF5:STRING=ON \
+ -D HDF5_INCLUDE_DIRS:PATH=${HDF5_DIR}/include \
+ -D HDF5_LIBRARY_DIRS:PATH=${HDF5_DIR}/lib\
+\
+ -D TPL_ENABLE_Netcdf=ON \
+ -D Netcdf_INCLUDE_DIRS:PATH=${NETCDF_DIR}/include \
+ -D Netcdf_LIBRARY_DIRS:PATH=${NETCDF_DIR}/lib \
+\
+ -D Kokkos_ENABLE_CUDA:BOOL=ON \
+ -D Kokkos_ENABLE_CUDA_LAMBDA:BOOL=ON \
+ -D Kokkos_ENABLE_CUDA_UVM:BOOL=OFF \
+ -D Kokkos_ENABLE_IMPL_CUDA_MALLOC_ASYNC:BOOL=OFF \
+\
+ -D TPL_ENABLE_Boost:BOOL=ON \
+ -D TPL_ENABLE_BoostLib=ON \
+ -D Boost_INCLUDE_DIRS:PATH=${BOOST_DIR}/include \
+ -D Boost_LIBRARY_DIRS:PATH=${BOOST_DIR}/lib \
+\
+ -D TPL_ENABLE_Krino=OFF \
+ -D TPL_ENABLE_Matio=OFF \
+ -D TPL_ENABLE_CGNS=OFF \
+ -D TPL_ENABLE_METIS=ON \
+ -D TPL_ENABLE_ParMETIS=ON \
+ -D Trilinos_ENABLE_Stokhos:BOOL=OFF \
+\
+ -D TPL_ENABLE_SuperLU:BOOL=OFF \
+ -D ML_ENABLE_SuperLU:BOOL=OFF \
+ -D TPL_ENABLE_BLAS:BOOL=ON \
+ -D TPL_BLAS_LIBRARIES:STRING="${CRAY_PE_LIBSCI_PREFIX_DIR}/lib/libsci_gnu.so" \
+ -D TPL_ENABLE_LAPACK:BOOL=ON \
+ -D TPL_LAPACK_LIBRARIES:STRING="${CRAY_PE_LIBSCI_PREFIX_DIR}/lib/libsci_gnu.so" \
+\
+${TRILINOS_SOURCE_DIR}
+```
+
+As an example, in the NERSC Perlmutter system, for `NVCC_WRAPPER`, we used the wrapper available from the Sandia National Laboratories' GitHub page `https://github.com/sandialabs/Albany/blob/master/doc/LandIce/machines/perlmutter/nvcc_wrapper_a100`. After that, run the `trilinos-cuda-config.sh` script as:
+
+```
+./trilinos-cuda-config.sh
+```
+
+Once the configuration is completed, Trilinos-16-0-0-GPU can be built and installed as follows:
+
+```
+make -j install
+```
+
+After building and installation, Trilinos-GPU should be ready for [VERTEX-CFD installation](#vertex-cfd-installation).
+
+
+## VERTEX-CFD Installation
+
+Once Trilinos is installed on your system and ready to use, VERTEX-CFD can be installed. First, create a folder for VERTEX-CFD and clone from GitHub by using the following:
+```
+mkdir VERTEX-CFD
+cd VERTEX-CFD
+git clone https://github.com/ORNL/VERTEX-CFD.git
+```
+This will clone the VERTEX-CFD folder. In order to build VERTEX-CFD, create a new folder, as follows:
+```
+mkdir build
+cd build
+```
+
+Different environment files are needed in the build directory, depending on the CPU/GPU installation. For a GPU, you can use `trilinos-cuda-config.sh`. There is no need for a separate configuration script. However, for a CPU, you will need `vertex-env-cpu.sh`. The environment scripts are system-specific and may vary based on your system. Carefully modify these scripts based on your system. The content of `vertex-env-cpu.sh` is as follows:
+```
+#!/bin/bash
+module use # EDIT: Update this with the module location, as an example: module use spack/share/spack/modules/linux-centos7-broadwell/
+install=//share/spack/modules/linux-centos7-haswell/
+echo $install
+
+module load gcc/13.2.0
+
+module use $install
+module load gcc-runtime
+module load openmpi
+module load cmake
+module load ninja
+module load boost
+module load netcdf-c
+module load parmetis
+module load intel-oneapi-mkl
+module load cgns
+module load googletest
+module load hdf5
+module load zlib-ng
+module load trilinos/16.0.0-gcc-13.2.0-qzebvtj
+HDF5_DIR=//opt/spack/install-centos7-haswell-gcc-13.2.0/hdf5-1.14.5/
+ZLIB_DIR=//opt/spack/install-centos7-haswell-gcc-13.2.0/zlib-ng-2.2.3/
+
+GCC_ROOT=//
+unset LIBRARY_PATH
+```
+
+Please note that because these scripts are system-specific, they must be modified according to your system. Please carefully modify them and make sure they are loading the correct modules. The scripts shared here are succesfully used on CADES (CPU configuration) in ORNL and NERSC Perlmutter (GPU configuration). Once you have the environment script, source the script with one of the lines below based on the CPU/GPU installation:
+
+```
+source vertex-env-cpu.sh
+source trilinos-cuda-env.sh
+```
+
+Once the environment script is sourced, VERTEX-CFD must be configured. Create a configuration script named `vertex-config.sh` containing the following lines:
+```
+#!/bin/sh
+
+SOURCE=/
+INSTALL=""
+BUILD="RelWithDebInfo"
+
+rm -rf CMake*
+rm -rf .ninja*
+rm DartConfiguration.tcl
+rm CTestTestfile.cmake
+rm build.ninja
+rm VertexCFDConfig.cmake
+rm -rf Testing
+
+# EDIT: Uncomment this line for GPU and update this based on your NVCC WRAPPER location
+#NVCC_WRAPPER=
+
+# Unset variable set by spack modules.
+# If this is present, any directories present will be treated
+# as "implicit" library paths by CMake and it will strip them
+# out of the executable RPATHS. Then you have to set
+# LD_LIBRARY_PATH appropriately to run jobs.
+unset LIBRARY_PATH
+
+# EDIT: This command is for CPU. Comment it for GPU.
+cmake \
+ -D CMAKE_BUILD_TYPE=${BUILD} \
+ -D CMAKE_INSTALL_PREFIX=${INSTALL} \
+ -D VertexCFD_ENABLE_COVERAGE_BUILD=OFF \
+ -D CMAKE_CXX_FLAGS="-Wall -Wextra -Wpedantic -fdiagnostics-color" \
+ -D VertexCFD_ENABLE_TESTING=ON \
+ -D Trilinos_ROOT= \
+ \
+ ${SOURCE}
+
+# EDIT: Uncomment this command for GPU.
+#cmake \
+# -D CMAKE_BUILD_TYPE=${BUILD} \
+# -D CMAKE_INSTALL_PREFIX=${INSTALL} \
+# -D CMAKE_CXX_COMPILER=${NVCC_WRAPPER} \
+# -D VertexCFD_ENABLE_COVERAGE_BUILD=OFF \
+# -D CMAKE_CXX_FLAGS="-Wall -Wextra -Wpedantic -fdiagnostics-color" \
+# -D VertexCFD_ENABLE_TESTING=ON \
+# -D Trilinos_ROOT= \
+# \
+# ${SOURCE}
+```
+Please note that you must define `NVCC_WRAPPER` and `CMAKE_CXX_COMPILER` for the GPU version. Once the configuration script is ready, run it as follows:
+```
+./vertex-config.sh
+```
+
+When configured succesfully, you can use make to install as follows:
+```
+make -j install
+```
+If you wish to limit the number of cores in the installation, then append `-j` flag with the desired number of cores, such as `-j32`. This will build and install VERTEX-CFD. The binary will be located in `/bin/vertexcfd`. Once the installation is complete, unit and regression tests can be run to ensure that everything is working as expected. For testing instructions, refer to the following sections.
+
+# Testing
+The VERTEX-CFD development procedure strictly requires that a unit/regression test be developed for each capability added. Hence, it is suggested to run those tests to make sure that installation is properly completed and the functionalities are working as expected.
+
+## Unit Tests
+VERTEX-CFD includes a large amount of unit tests. In order to run these tests, you can use the job submission scripts given below which are written for SLURM scheduler.
+
+```
+#!/bin/bash
+#SBATCH -N 1
+#SBATCH --ntasks-per-node 32
+#SBATCH --time 0:10:00
+#SBATCH --output output.log
+#SBATCH --error error.log
+
+source /trilinos-cuda-config.sh
+#source /vertex-env-cpu.sh # For GPU comment above line, and use this line.
+
+export OMP_PROC_BIND=true
+export OMP_PLACES=threads
+
+export IOSS_PROPERTIES="COMPOSE_RESULTS=on:MINIMIZE_OPEN_FILES=on:MAXIMUM_NAME_LENGTH=64:DUPLICATE_FIELD_NAME_BEHAVIOR=WARNING"
+export EXODUS_NETCDF4=1
+
+export MAP_STRING=slot:pe=${SLURM_CPUS_PER_TASK}
+
+ctest -j ${SLURM_NTASKS_PER_NODE}
+```
+
+For another scheduler, such as PBS, you can convert the SLURM submission script. The example output screen for the unit tests is as follows:
+```
+ Start 1: VertexCFD_KokkosMPI_test_OPENMP_np_1_nt_1
+ Start 2: VertexCFD_KokkosMPI_test_OPENMP_np_1_nt_2
+ Start 3: VertexCFD_KokkosMPI_test_OPENMP_np_1_nt_4
+ Start 5: VertexCFD_KokkosMPI_test_OPENMP_np_2_nt_1
+ Start 6: VertexCFD_KokkosMPI_test_OPENMP_np_2_nt_2
+ Start 7: VertexCFD_KokkosMPI_test_OPENMP_np_2_nt_4
+ Start 8: VertexCFD_KokkosMPI_test_OPENMP_np_4_nt_1
+ 1/554 Test #8: VertexCFD_KokkosMPI_test_OPENMP_np_4_nt_1 .......................................... Passed 2.03 sec
+ Start 12: VertexCFD_EvaluatorTestHarness_test_OPENMP_np_1_nt_1
+ Start 13: VertexCFD_EvaluatorTestHarness_test_OPENMP_np_1_nt_2
+ Start 23: VertexCFD_Version_test_OPENMP_nt_1
+ 2/554 Test #2: VertexCFD_KokkosMPI_test_OPENMP_np_1_nt_2 .......................................... Passed 2.61 sec
+ Start 16: VertexCFD_EvaluatorTestHarness_test_OPENMP_np_2_nt_1
+ 3/554 Test #1: VertexCFD_KokkosMPI_test_OPENMP_np_1_nt_1 .......................................... Passed 2.61 sec
+ Start 27: VertexCFD_ParameterPack_test_OPENMP_nt_1
+ 4/554 Test #7: VertexCFD_KokkosMPI_test_OPENMP_np_2_nt_4 .......................................... Passed 2.61 sec
+ Start 9: VertexCFD_KokkosMPI_test_OPENMP_np_4_nt_2
+ 5/554 Test #3: VertexCFD_KokkosMPI_test_OPENMP_np_1_nt_4 .......................................... Passed 2.62 sec
+ .
+ .
+ .
+ 553/554 Test #550: VertexCFD_DivergenceAdvectionTest_test_OPENMP_nt_192 ............................... Passed 0.84 sec
+ Start 554: VertexCFD_FullInductionMHDProperties_test_OPENMP_nt_192
+ 554/554 Test #554: VertexCFD_FullInductionMHDProperties_test_OPENMP_nt_192 ............................ Passed 0.36 sec
+
+ 97% tests passed, 14 tests failed out of 554
+
+ Total Test time (real) = 1825.19 sec
+
+ The following tests FAILED:
+ 11 - VertexCFD_KokkosMPI_test_OPENMP_np_192_nt_1 (Failed)
+ 22 - VertexCFD_EvaluatorTestHarness_test_OPENMP_np_192_nt_1 (Failed)
+ 71 - VertexCFD_MeshManager_test_OPENMP_nt_1 (Failed)
+ 72 - VertexCFD_MeshManager_test_OPENMP_nt_2 (Failed)
+ 73 - VertexCFD_MeshManager_test_OPENMP_nt_4 (Failed)
+ 74 - VertexCFD_MeshManager_test_OPENMP_nt_192 (Failed)
+ 79 - VertexCFD_InitialConditionManager_test_OPENMP_nt_1 (Failed)
+ 80 - VertexCFD_InitialConditionManager_test_OPENMP_nt_2 (Failed)
+ 81 - VertexCFD_InitialConditionManager_test_OPENMP_nt_4 (Failed)
+ 82 - VertexCFD_InitialConditionManager_test_OPENMP_nt_192 (Failed)
+ 169 - VertexCFD_ExternalFields_test_OPENMP_np_192_nt_1 (Failed)
+ 180 - VertexCFD_Restart_test_OPENMP_np_192_nt_1 (Failed)
+ 191 - VertexCFD_GeometryPrimitives_test_OPENMP_np_192_nt_1 (Failed)
+ 202 - VertexCFD_WriteMatrix_test_OPENMP_np_192_nt_1 (Failed)
+```
+Note: several unit tests rely on restart files that are not compatible across architecture. The listed tests given above are expected to fail outside of the continuous integration pipelines.
+
+## Regression Tests
+VERTEX-CFD uses regression tests to make sure that the new capabilities do not introduce bugs/errors to the source code. In order to run regression tests, you can use the submission script provided below, which is written for SLURM scheduler:
+
+```
+#!/bin/bash
+#SBATCH -N 1
+#SBATCH --ntasks-per-node 32
+#SBATCH --output output.log
+#SBATCH --error error.log
+#SBATCH --job-name=regression-test
+
+source /trilinos-cuda-config.sh
+#source /vertex-env-cpu.sh # For GPU comment above line, and use this line.
+
+export OMP_PROC_BIND=true
+export OMP_PLACES=threads
+
+export IOSS_PROPERTIES="COMPOSE_RESULTS=on:MINIMIZE_OPEN_FILES=on:MAXIMUM_NAME_LENGTH=64:DUPLICATE_FIELD_NAME_BEHAVIOR=WARNING"
+export EXODUS_NETCDF4=1
+
+export MAP_STRING=slot:pe=${SLURM_CPUS_PER_TASK}
+
+cd regression_test
+pytest -k "test"
+```
+
+The example regression test output is as follows:
+
+```
+============================= test session starts ==============================
+platform linux -- Python 3.9.16, pytest-6.2.5, py-1.11.0, pluggy-1.5.0
+rootdir: /regression_test, configfile: pytest.ini
+collected 37 items
+
+test_full_induction_mhd/test_current_sheet/test_current_sheet.py::TestCurrentSheet::test_2d_long PASSED [ 6%]
+test_full_induction_mhd/test_mhd_ldc/test_mhd_ldc.py::TestMHDLDC::test_2d_rotated_mhd_ldc[bx] PASSED [ 13%]
+test_full_induction_mhd/test_mhd_ldc/test_mhd_ldc.py::TestMHDLDC::test_2d_rotated_mhd_ldc[by] PASSED [ 20%]
+.
+.
+.
+test_incompressible/test_taylor_green_vortex/test_taylor_green_vortex.py::TestTaylorGreenVortex::test_2d_mesh_convergence_laminar PASSED [ 93%]
+test_incompressible/test_wale_cavity/test_wale_cavity.py::TestWaleCavity::test_3d_wale_cavity PASSED [100%]
+========== 0 failed, 37 passed, 0 deselected in 40525.94s (11:15:25) ==========
+```
+
+
+
diff --git a/docs/scripts/slurm-submission-regression-test.sh b/docs/scripts/slurm-submission-regression-test.sh
new file mode 100644
index 0000000..943017f
--- /dev/null
+++ b/docs/scripts/slurm-submission-regression-test.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+#SBATCH -N 1
+#SBATCH --ntasks-per-node 32
+#SBATCH --output output.log
+#SBATCH --error error.log
+#SBATCH --job-name=regression-test
+
+source /trilinos-cuda-config.sh
+#source /vertex-env-cpu.sh # For GPU comment above line and use this line.
+
+export OMP_PROC_BIND=true
+export OMP_PLACES=threads
+
+export IOSS_PROPERTIES="COMPOSE_RESULTS=on:MINIMIZE_OPEN_FILES=on:MAXIMUM_NAME_LENGTH=64:DUPLICATE_FIELD_NAME_BEHAVIOR=WARNING"
+export EXODUS_NETCDF4=1
+
+export MAP_STRING=slot:pe=${SLURM_CPUS_PER_TASK}
+
+cd regression_test
+pytest -k "test"
diff --git a/docs/scripts/slurm-submission-run.sh b/docs/scripts/slurm-submission-run.sh
new file mode 100644
index 0000000..575ce47
--- /dev/null
+++ b/docs/scripts/slurm-submission-run.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+#SBATCH -N 1
+#SBATCH --ntasks-per-node=32
+#SBATCH --time=1:00:00
+#SBATCH -o output.log
+#SBATCH -e error.log
+
+source PATH_TO_ENVIRONMENT_SCRIPT
+
+export OMP_PROC_BIND=true
+export OMP_PLACES=threads
+
+mpirun /bin/vertexcfd --i=/incompressible_2d_channel.xml
diff --git a/docs/scripts/slurm-submission-unit-test.sh b/docs/scripts/slurm-submission-unit-test.sh
new file mode 100644
index 0000000..142bee1
--- /dev/null
+++ b/docs/scripts/slurm-submission-unit-test.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+#SBATCH -N 1
+#SBATCH --ntasks-per-node 32
+#SBATCH --time 0:10:00
+#SBATCH --output output.log
+#SBATCH --error error.log
+
+source /trilinos-cuda-config.sh
+#source /vertex-env-cpu.sh # For GPU comment above line and use this line.
+
+export OMP_PROC_BIND=true
+export OMP_PLACES=threads
+
+export IOSS_PROPERTIES="COMPOSE_RESULTS=on:MINIMIZE_OPEN_FILES=on:MAXIMUM_NAME_LENGTH=64:DUPLICATE_FIELD_NAME_BEHAVIOR=WARNING"
+export EXODUS_NETCDF4=1
+
+export MAP_STRING=slot:pe=${SLURM_CPUS_PER_TASK}
+
+ctest -j ${SLURM_NTASKS_PER_NODE}
diff --git a/docs/scripts/spack-trilinos16.yaml b/docs/scripts/spack-trilinos16.yaml
new file mode 100644
index 0000000..3ad1c3d
--- /dev/null
+++ b/docs/scripts/spack-trilinos16.yaml
@@ -0,0 +1,60 @@
+spack:
+ concretizer:
+ unify: when_possible
+
+ config:
+ build_stage:
+ - $spack/var/spack/spack-stage/build-$arch-$date/
+ misc_cache: $spack/.cache
+ build_jobs: 32
+ install_tree:
+ root: $spack/opt/spack/
+ projections:
+ all: install-{os}-{target}-{compiler.name}-{compiler.version}/{name}-{version}
+ keep_stage: true
+ verify_ssl: true
+ checksum: true
+ dirty: false
+ build_language: C
+ ccache: false
+ db_lock_timeout: 120
+ package_lock_timeout: null
+ shared_linking:
+ type: rpath
+ bind: false
+ allow_sgid: true
+ locks: true
+ suppress_gpg_warnings: false
+ connect_timeout: 10
+
+ compilers:
+ - compiler: # EDIT: change below with your compiler of choice
+ spec: gcc@13.2.0
+ paths: # EDIT: Change those based on the location of the compiler location you prefer
+ cc: /software/dev_tools/swtree/cs400/gcc/13.2.0/centos7.5_gnu8.5.0/bin/gcc
+ cxx: /software/dev_tools/swtree/cs400/gcc/13.2.0/centos7.5_gnu8.5.0/bin/g++
+ f77: /software/dev_tools/swtree/cs400/gcc/13.2.0/centos7.5_gnu8.5.0/bin/gfortran
+ fc: /software/dev_tools/swtree/cs400/gcc/13.2.0/centos7.5_gnu8.5.0/bin/gfortran
+ flags: {}
+ operating_system: centos7 # EDIT: update according to `spack arch`: just the OS version
+ target: x86_64
+ modules: # EDIT: update with a list of modules you want to load by default
+ - gcc/13.2.0
+
+ packages:
+ all:
+ target: [broadwell] # EDIT: Change this according to `spack arch`
+ compiler: [gcc@13.2.0] # EDIT: Change according to your compiler of choice
+ providers: # EDIT: Change versions below according to the default in your machine
+ mpi: [intel-oneapi-mkl]
+ blas: [intel-oneapi-mkl]
+ lapack: [intel-oneapi-mkl]
+ pkgconfig: [pkg-config]
+
+ specs:
+ - python
+ - ninja
+ - boost
+ - intel-oneapi-mkl
+ - googletest
+ - trilinos@16.0.0 +chaco+exodus+hdf5+intrepid2+kokkos+mpi+nox+openmp+panzer+phalanx+shards+shared+stk+tempus+zoltan2
diff --git a/docs/scripts/trilinos-cuda-config.sh b/docs/scripts/trilinos-cuda-config.sh
new file mode 100644
index 0000000..2465a87
--- /dev/null
+++ b/docs/scripts/trilinos-cuda-config.sh
@@ -0,0 +1,75 @@
+#!/bin/bash
+# This is a sample Trilinos configuration script for Albany on perlmutter
+
+source trilinos-cuda-env.sh
+
+# Cleanup old cmake files
+rm -rf CMake*
+
+# Set Trilinos build path
+BUILD_DIR=`pwd`
+
+# EDIT: Change this based on your NVCC WRAPPER location
+NVCC_WRAPPER=
+
+# EDIT: Change with path to Trilinos source directory
+TRILINOS_SOURCE_DIR=
+
+# EDIT: Change with path to boost
+BOOST_DIR=
+
+TRILINOS_INSTALL_DIR=
+
+export CRAYPE_LINK_TYPE=dynamic
+export CRAY_CPU_TARGET=x86-64
+
+cmake \
+ -D CMAKE_C_COMPILER=cc \
+ -D CMAKE_CXX_COMPILER=${NVCC_WRAPPER} \
+ -D CMAKE_Fortran_COMPILER=ftn \
+\
+ -D CMAKE_INSTALL_PREFIX:PATH=${TRILINOS_INSTALL_DIR} \
+ -D CMAKE_BUILD_TYPE:STRING=RELEASE \
+\
+ -D BUILD_SHARED_LIBS=ON \
+ -D Trilinos_ENABLE_ALL_PACKAGES=ON \
+ -D Trilinos_ENABLE_SECONDARY_TESTED_CODE=ON \
+ -D Trilinos_ENABLE_EXPLICIT_INSTANTIATION=ON \
+ -D Trilinos_ENABLE_PyTrilinos=OFF \
+ -D Trilinos_SHOW_DEPRECATED_WARNINGS=OFF \
+ -D TPL_ENABLE_MPI=ON \
+ -D TPL_Netcdf_PARALLEL=FALSE \
+\
+ -D TPL_ENABLE_HDF5:STRING=ON \
+ -D HDF5_INCLUDE_DIRS:PATH=${HDF5_DIR}/include \
+ -D HDF5_LIBRARY_DIRS:PATH=${HDF5_DIR}/lib\
+\
+ -D TPL_ENABLE_Netcdf=ON \
+ -D Netcdf_INCLUDE_DIRS:PATH=${NETCDF_DIR}/include \
+ -D Netcdf_LIBRARY_DIRS:PATH=${NETCDF_DIR}/lib \
+\
+ -D Kokkos_ENABLE_CUDA:BOOL=ON \
+ -D Kokkos_ENABLE_CUDA_LAMBDA:BOOL=ON \
+ -D Kokkos_ENABLE_CUDA_UVM:BOOL=OFF \
+ -D Kokkos_ENABLE_IMPL_CUDA_MALLOC_ASYNC:BOOL=OFF \
+\
+ -D TPL_ENABLE_Boost:BOOL=ON \
+ -D TPL_ENABLE_BoostLib=ON \
+ -D Boost_INCLUDE_DIRS:PATH=${BOOST_DIR}/include \
+ -D Boost_LIBRARY_DIRS:PATH=${BOOST_DIR}/lib \
+\
+ -D TPL_ENABLE_Krino=OFF \
+ -D TPL_ENABLE_Matio=OFF \
+ -D TPL_ENABLE_CGNS=OFF \
+ -D TPL_ENABLE_METIS=ON \
+ -D TPL_ENABLE_ParMETIS=ON \
+ -D Trilinos_ENABLE_Stokhos:BOOL=OFF \
+\
+ -D TPL_ENABLE_SuperLU:BOOL=OFF \
+ -D ML_ENABLE_SuperLU:BOOL=OFF \
+ -D TPL_ENABLE_BLAS:BOOL=ON \
+ -D TPL_BLAS_LIBRARIES:STRING="${CRAY_PE_LIBSCI_PREFIX_DIR}/lib/libsci_gnu.so" \
+ -D TPL_ENABLE_LAPACK:BOOL=ON \
+ -D TPL_LAPACK_LIBRARIES:STRING="${CRAY_PE_LIBSCI_PREFIX_DIR}/lib/libsci_gnu.so" \
+\
+${TRILINOS_SOURCE_DIR}
diff --git a/docs/scripts/trilinos-cuda-env.sh b/docs/scripts/trilinos-cuda-env.sh
new file mode 100644
index 0000000..f9afb96
--- /dev/null
+++ b/docs/scripts/trilinos-cuda-env.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+module load PrgEnv-gnu/8.5.0
+module load gcc-native/12.3
+module load cudatoolkit/12.4
+module load craype-accel-nvidia80
+module load cray-libsci/23.12.5
+module load craype/2.7.30
+module load cray-mpich/8.1.28
+module load cray-hdf5-parallel/1.12.2.9
+module load cray-netcdf-hdf5parallel/4.9.0.9
+module load cray-parallel-netcdf/1.12.3.9
+module load cmake/3.30.2
+
+module load spack
+spack env activate cuda
+spack load metis
+spack load parmetis
+
+export MPICH_ENV_DISPLAY=1
+export MPICH_VERSION_DISPLAY=1
+export OMP_STACKSIZE=128M
+export OMP_PROC_BIND=spread
+export OMP_PLACES=threads
+export HDF5_USE_FILE_LOCKING=FALSE
+export MPICH_GPU_SUPPORT_ENABLED=1
+export CUDATOOLKIT_VERSION_STRING=${CRAY_CUDATOOLKIT_VERSION#*_}
+
+export CRAY_ACCEL_TARGET="nvidia80"
+
+export KOKKOS_MAP_DEVICE_ID_BY=mpi_rank
+export CUDA_MANAGED_FORCE_DEVICE_ALLOC=1
+export TPETRA_ASSUME_GPU_AWARE_MPI=0
diff --git a/docs/scripts/vertex-config.sh b/docs/scripts/vertex-config.sh
new file mode 100644
index 0000000..a16da69
--- /dev/null
+++ b/docs/scripts/vertex-config.sh
@@ -0,0 +1,46 @@
+#!/bin/sh
+
+SOURCE=/
+INSTALL=""
+BUILD="RelWithDebInfo"
+
+rm -rf CMake*
+rm -rf .ninja*
+rm DartConfiguration.tcl
+rm CTestTestfile.cmake
+rm build.ninja
+rm VertexCFDConfig.cmake
+rm -rf Testing
+
+# EDIT: Uncomment this line for GPU and update this based on your NVCC WRAPPER location
+#NVCC_WRAPPER=
+
+# Unset variable set by spack modules.
+# If this is present, any directories present will be treated
+# as "implicit" library paths by CMake and it will strip them
+# out of the executable RPATHS. Then you have to set
+# LD_LIBRARY_PATH appropriately to run jobs.
+unset LIBRARY_PATH
+
+# EDIT: This command is for CPU. Comment it for GPU.
+cmake \
+ -D CMAKE_BUILD_TYPE=${BUILD} \
+ -D CMAKE_INSTALL_PREFIX=${INSTALL} \
+ -D VertexCFD_ENABLE_COVERAGE_BUILD=OFF \
+ -D CMAKE_CXX_FLAGS="-Wall -Wextra -Wpedantic -fdiagnostics-color" \
+ -D VertexCFD_ENABLE_TESTING=ON \
+ -D Trilinos_ROOT= \
+ \
+ ${SOURCE}
+
+# EDIT: Uncomment this command for GPU.
+#cmake \
+# -D CMAKE_BUILD_TYPE=${BUILD} \
+# -D CMAKE_INSTALL_PREFIX=${INSTALL} \
+# -D CMAKE_CXX_COMPILER=${NVCC_WRAPPER} \
+# -D VertexCFD_ENABLE_COVERAGE_BUILD=OFF \
+# -D CMAKE_CXX_FLAGS="-Wall -Wextra -Wpedantic -fdiagnostics-color" \
+# -D VertexCFD_ENABLE_TESTING=ON \
+# -D Trilinos_ROOT= \
+# \
+# ${SOURCE}
diff --git a/docs/scripts/vertex-env-cpu.sh b/docs/scripts/vertex-env-cpu.sh
new file mode 100644
index 0000000..ccd8b00
--- /dev/null
+++ b/docs/scripts/vertex-env-cpu.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+module use # EDIT: Update this with the module location, as an example: module use spack/share/spack/modules/linux-centos7-broadwell/
+install=//share/spack/modules/linux-centos7-haswell/
+echo $install
+
+module load gcc/13.2.0
+
+module use $install
+module load gcc-runtime
+module load openmpi
+module load cmake
+module load ninja
+module load boost
+module load netcdf-c
+module load parmetis
+module load intel-oneapi-mkl
+module load cgns
+module load googletest
+module load hdf5
+module load zlib-ng
+module load trilinos/16.0.0-gcc-13.2.0-qzebvtj
+HDF5_DIR=//opt/spack/install-centos7-haswell-gcc-13.2.0/hdf5-1.14.5/
+ZLIB_DIR=//opt/spack/install-centos7-haswell-gcc-13.2.0/zlib-ng-2.2.3/
+
+GCC_ROOT=//
+unset LIBRARY_PATH
diff --git a/docs/styles.css b/docs/styles.css
new file mode 100644
index 0000000..781b16f
--- /dev/null
+++ b/docs/styles.css
@@ -0,0 +1,46 @@
+body {
+ font-family: Arial, sans-serif;
+ margin: 0;
+ padding: 0;
+ background-color: #f4f4f4;
+}
+
+header {
+ background-color: #333;
+ color: #fff;
+ padding: 10px 0;
+ text-align: center;
+}
+
+nav ul {
+ list-style-type: none;
+ padding: 0;
+}
+
+nav ul li {
+ display: inline;
+ margin: 0 10px;
+}
+
+nav ul li a {
+ color: #fff;
+ text-decoration: none;
+}
+
+main {
+ padding: 20px;
+}
+
+h1, h2 {
+ color: #333;
+}
+
+footer {
+ background-color: #333;
+ color: #fff;
+ text-align: center;
+ padding: 10px 0;
+ position: absolute;
+ bottom: 0;
+ width: 100%;
+}
diff --git a/docs/theory.md b/docs/theory.md
new file mode 100644
index 0000000..daf4528
--- /dev/null
+++ b/docs/theory.md
@@ -0,0 +1,322 @@
+---
+parent: VERTEX-CFD v1.0 User Guide
+title: Theory
+nav_order: 2
+usemathjax: true
+---
+
+# Theory
+
+---
+
+## Governing equations
+
+VERTEX-CFD implements the entropically damped artificial compressibility (EDAC) Navier-Stokes equations, a temperature equation, and a magneto-hydrodynamics (MHD) equation (inductionless equation). Coupling between the different equations is ensured by the buoyancy force and the Lorentz force.
+
+$$
+\begin{align}
+\left\{
+\begin{matrix}
+ \nabla \cdot \mathbf{u} = 0 \\
+ \partial_t \mathbf{u} + (\mathbf{u} \cdot \nabla) \mathbf{u} = -\frac{1}{\rho}\nabla P + \nu \Delta \mathbf{u} + \frac{1}{\rho}\mathbf{J} \times \mathbf{B^0} - \mathbf{g} \beta (T - T_0) \\
+ \rho C_p \left( \partial_t T + \mathbf{u} \cdot \nabla T \right) = \nabla \cdot (k \nabla T ) + q^{'''} \\
+ \mathbf{J} = \sigma ( -\nabla \varphi + \mathbf{u} \times \mathbf{B^0} ) \\
+ \nabla \cdot (\sigma \nabla \varphi) = \nabla \cdot [ \sigma \mathbf{u} \times \mathbf{B^0} ]
+\end{matrix}
+\right.
+\end{align}
+$$
+
+The equations are recast in a conservative form and solved for the pressure $$P$$, the velocity $$\mathbf{u}$$, the temperature $$T$$, and the electric potential $$\varphi$$.
+
+$$
+\begin{align}\label{eq:pdes}
+\left\{
+\begin{matrix}
+ \nabla \cdot \mathbf{u} = 0 \\
+ \partial_t \rho \mathbf{u} + \rho (\mathbf{u} \cdot \nabla) \mathbf{u} = -\nabla P + \rho \nu \Delta \mathbf{u} + f^L - \rho \mathbf{g} \beta (T - T_0) \\
+ f^L = \mathbf{J} \times \mathbf{B^0} = \sigma \left( -\nabla \varphi \times \mathbf{B^0} + (\mathbf{B} \cdot \mathbf{u}) \cdot \mathbf{B^0} - ||\mathbf{B^0}||^2 \mathbf{u} \right) \\
+ \rho C_p \left( \partial_t T + \mathbf{u} \cdot \nabla T \right) = \nabla \cdot (k \nabla T ) + q^{'''} \\
+ \nabla \cdot (\sigma \nabla \varphi) = \nabla \cdot [ \sigma \mathbf{u} \times \mathbf{B^0} ]
+\end{matrix}
+\right.
+\end{align}
+$$
+
+
+## Discretized equations
+
+VERTEX-CFD employs a finite element discretization method and high-order implicit temporal integrators to integrate partial differential equations (PDEs). Numerical stability of the solution is ensured by using an L-stable implicit temporal integrator and the appropriate mesh density.
+
+A continuous Galerkin finite element method from the Trilinos package, Panzer \cite{panzer-website}, is employed to discretize the equations presented as Eq. \ref{eq:pdes}. Considering a finite dimensional subspace $$V^p_h$$, an approximate solution $$U_h$$ of $$U$$ can be expressed as
+
+$$
+\begin{equation}
+ U_h = \sum_i U_i \phi_i~~,
+\end{equation}
+$$
+
+where $$\phi_i \in V^p_h$$ is a basis function. A weak form of Eq. \ref{eq:pdes} is obtained by substituting $$U$$ with $$U_h$$, taking an inner product between each term of the partial differential equation and a test function and integrating over the computational volume:
+
+$$
+\begin{equation}\label{eq:weak-form}
+ \iiint \left[ \phi^T \partial_t U + \phi^T \nabla \cdot F(U) - \phi^T \nabla \cdot G(U, \nabla U) - \phi^T S(U) \right] d\Omega = 0.0~~.
+\end{equation}
+$$
+
+Equation \ref{eq:weak-form} can be further transformed by integrating per part the conservative fluxes to yield boundary fluxes denoted by the under script $$bc$$:
+
+$$
+\begin{align}\label{eq:weak-form-bc}
+\iiint \phi^T \partial_t U d\Omega - \iiint \nabla \phi^T \cdot F(U) d\Omega + \\ \iiint \nabla \cdot \phi^T \cdot G(U, \nabla U) d\Omega - \iiint \phi^T S(U) d\Omega \nonumber = \\ -\iint \phi^T F_{bc}(U) \vec{n} d \delta \Omega + \iint \phi^T G_{bc}(U, \nabla U) \vec{n} d \delta \Omega~~.
+\end{align}
+$$
+
+Boundary fluxes are evaluated at quadrature points, and their contribution is added to the global residuals. The boundary flux $$G$$ is evaluated with the symmetric interior penalty method. Implementation of the boundary conditions is further detailed in Section [Boundary conditions](#boundary-conditions).
+
+The time-derivative terms $$\partial_t U$$ are evaluated with a high-order temporal integrator (SDIRK-22 or SDIRK-54) from the Tempus package \cite{tempus-website}. Given a test function $$\phi_i$$ of order $$p$$, integral terms are evaluated with a $$p+1$$ quadrature rule. VERTEX-CFD does not currently implement any numerical method to stabilize the numerical solution and solely relies on the numerical dissipation from the discretization method and the implicit temporal integrator. This strategy has been sufficient for laminar flows, as demonstrated in the following sections.
+
+
+## Boundary conditions
+
+Boundary conditions are weakly imposed by computing numerical flux at the boundaries' provided boundary values. The boundary conditions implemented in VERTEX-CFD are listed below:
+
+The boundary conditions implemented in VERTEX-CFD are listed below:
+
+- [Periodic boundary](#periodic-boundary)
+- [Dirichlet with time-transient variation](#dirichlet-boundary)
+- [Symmetry for isothermal flow](#symmetry-boundary-condition)
+- [No-slip for viscous flow](#no-slip-boundary-condition)
+- [Rotating wall for isothermal flow](#rotating-wall-boundary-condition)
+- [Laminar flow](#laminar-flow)
+- [Outflow with back pressure](#outflow-boundary-condition)
+- [Cavity Lid](#cavity-Lid)
+
+The vector solution is denoted by $$U_{bc} = (P_{p,{bc}}, \mathbf{u}_{bc}, T_{bc}, \varphi_{bc})$$ at the boundary. It should be noted that when the energy equation and the electric potential equation are not solved, the temperature $$T_{bc}$$ and the electric potential $$\varphi_{bc}$$ are ignored.
+
+### Periodic boundary
+Users can set periodic boundaries in the input file by using the Trilinos specific syntax described in [Panzer_STK class](https://docs.trilinos.org/dev/packages/panzer/doc/html/Panzer__STK__PeriodicBC__Parser_8cpp_source.html). Meshes on periodic faces must be identical for the logic to work properly.
+
+### Dirichlet boundary
+The Dirichlet boundary condition denotes the Dirichlet boundary condition in VERTEX-CFD. The velocity is set equal to the user-specified values or Dirichlet values $$\mathbf{u}_D$$ while the Lagrange pressure and the boundary gradients are set to the interior values. The temperature is also set to a user-specified value $$T_{bc}$$. Linear ramping in time is also available and can be used to vary each primitive variable independently.
+
+$$
+\begin{equation}
+\left\{ \
+\begin{matrix}
+ u_{i,bc}(\mathbf{r}, t) = u_{i,D}(t) \\
+ P_{p,{bc}}(\mathbf{r}, t) = P(\mathbf{r}, t) \\
+ \partial_i U_{bc}(\mathbf{r}, t) = \partial_i U(\mathbf{r}, t) \\
+ T_{bc}(\mathbf{r}, t) = T_{D}
+\end{matrix}
+\right.
+\end{equation}
+$$
+
+### Symmetry boundary condition
+The symmetry boundary condition is a no-penetration condition. The normal component of the fluid velocity to the wall is zero, whereas the tangential component is unrestricted. The same observation is also valid for the temeprature gradient. Assuming the outward normal vector to a wall boundary is denoted by $$\mathbf{n}_{bc} = \left(n_{bc,x}, n_{bc,y}, n_{bc,z} \right)$$ in a 3D computational domain, the boundary condition for the primitive variables reads as follows:
+
+$$
+\begin{equation}
+\left\{
+\begin{matrix}
+ P_{bc}(\mathbf{r}, t) &=& P(\mathbf{r}, t) \\
+ \mathbf{u}_{bc}(\mathbf{r}, t) &=& \mathbf{u}(\mathbf{r}, t) - \left( \mathbf{u}(\mathbf{r}, t) \cdot \mathbf{n}_{bc} \right) \mathbf{n_{bc}} \\
+ T_{bc}(\mathbf{r}, t) &=& T(\mathbf{r}, t) \\
+ \varphi_{bc}(\mathbf{r}, t) &=& \varphi(\mathbf{r}, t)
+\end{matrix}
+\right.
+\end{equation}
+$$
+
+The boundary gradients are a function of the interior values:
+
+$$
+\begin{align}
+ \partial_i U_{bc}(\mathbf{r}, t) =& \partial_i U(\mathbf{r}, t) \nonumber\\
+ \partial_i T_{bc}(\mathbf{r}, t) =& \partial_i T(\mathbf{r}, t) - \left(\partial_i T(\mathbf{r}, t) \cdot \mathbf{n}_{bc} \right) n_{i} \\
+ \partial_i \varphi_{bc}(\mathbf{r}, t) =& \partial_i \varphi(\mathbf{r}, t) - \left(\partial_i \varphi(\mathbf{r}, t) \cdot \mathbf{n}_{bc} \right) n_{i} \nonumber
+\end{align}
+$$
+
+### No-slip boundary condition
+The \emph{no-slip} boundary condition is used to model a viscous flow interacting with a moving wall. The velocity of the flow and the wall are the same: this can be put in the following mathematical form:
+
+$$
+\begin{equation}
+ \mathbf{u_{bc}} = \mathbf{u_{wall}} \ ,
+\end{equation}
+$$
+
+where $$\mathbf{u_{wall}}$$ is a user input parameter that is defaulted to the zero vector. Because this is a wall, the temperature is set to the wall temperature $$T_{wall}$$. The Lagrange pressure is set to its interior value:
+
+$$
+\begin{equation}
+\left\{
+\begin{matrix}
+ P_{bc}(\mathbf{r}, t) &=& P(\mathbf{r}, t) \\
+ \mathbf{u}_{bc}(\mathbf{r}, t) &=& \mathbf{u_{wall}} \\
+ T_{bc}(\mathbf{r}, t) &=& T_{wall}
+\end{matrix}
+\right.
+\end{equation}
+$$
+
+All boundary gradients are set to the interior values:
+
+$$
+\begin{equation}
+ \partial_i f_{bc}(\mathbf{r}, t) = \partial_i f(\mathbf{r}, t)
+\end{equation}
+$$
+
+In VERTEX-CFD, the wall boundary velocity $$\mathbf{u_{wall}}$$ can linearly vary as a function of time. This is particularly useful when modeling flow with non-natural initial conditions (non-stationary flow over a stationary obstacle). The wall boundary velocity is set to initially match the flow velocity and linearly decreases to zero with time. This strategy is commonly adopted to ease the work of the numerical solver while developing steady-state flow.
+
+
+### Rotating wall boundary condition
+The \emph{rotating wall} boundary condition is used to model the interaction of a fluid with a rotating wall. The wall in contact with the fluid rotates with an angular velocity $$\omega_w$$ in the XY plane. The Lagrange pressure is set to the interior value, and the fluid velocity is computed from the angular velocity and the fluid temperature set to the wall temperature $$T_{wall}$$, as follows:
+
+$$
+\begin{equation}
+\left\{
+ \begin{matrix}
+ P_{bc}(\mathbf{r}, t) &=& P(\mathbf{r}, t) \\
+ \mathbf{u}_{bc}(\mathbf{r}, t) &=& \omega_{wall} \left(-y, x, 0.0 \right) \\
+ T_{bc}(\mathbf{r}, t) &=& T_{wall}
+ \end{matrix}
+\right.
+\end{equation}
+$$
+
+The Cartesian coordinates are defined as $$x$$ and $$y$$, and the z-component of the velocity is assumed to be zero when used in 3D.
+
+All boundary gradients are set to the interior values such as the following:
+
+$$
+\begin{equation}
+ \partial_i f_{bc}(\mathbf{r}, t) = \partial_i f(\mathbf{r}, t)
+\end{equation}
+$$
+
+### Laminar flow
+The laminar flow boundary condition sets a parabolic profile for the velocity in the wall normal direction. The input parameters are the average velocity amplitude $$u_i^{avg}$$, the coordinates of the two points on the circle which can be connected by a line that passes through the circle's center. The resultant inlet velocity profiles can be calculated as follows:
+
+$$
+\begin{equation}
+ u_i(x,y,z) = C_i u_i^{avg}\cdot\mathbf{n}\left(1.0 - \frac{r^2}{R^2}\right)~~,
+\end{equation}
+$$
+
+where $$R$$ is the characteristic radius of the circle, $$\mathbf{r}$$ is the distance to the circle center which is calculated from the two points provided by the user, and $$C_i$$ is a constant based on the dimensionality of the problem. In 2D, $$C_i$$ is $$3/2$$, whereas in 3D, it is $$2.0$$. This boundary condition can be used with 2D rectangular channels and 3D pipes. The flow direction is calculated based on the surface normals where the boundary condition is applied. A uniform inlet temperature can also be provided if solving for the temperature equation. The boundary conditions are as follows:
+
+$$
+\begin{equation}
+\left\{
+ \begin{matrix}
+ P_{bc}(\mathbf{r}, t) &=& P(\mathbf{r}, t) \\
+ \mathbf{u}_{bc}(\mathbf{r}, t) &=& \left(u_i\cdot n_x, u_i\cdot n_y, u_i\cdot n_z \right) \\
+ T_{bc}(\mathbf{r}, t) &=& T_{inlet}
+ \end{matrix}
+\right.
+\end{equation}
+$$
+
+All boundary gradients are set to interior values such as the following:
+
+$$
+\begin{equation}
+ \partial_i f_{bc}(\mathbf{r}, t) = \partial_i f(\mathbf{r}, t)
+\end{equation}
+$$
+
+### Outflow boundary condition
+The outflow boundary condition is employed when the back pressure at an outlet is known. The Lagrange pressure is computed from the back pressure $$P_b$$:
+
+$$
+\begin{equation}
+ P_{p,bc} = P_b
+\end{equation}
+$$
+
+The velocity, the temperature, and all boundary gradients are set to their respective interior values, as follows:
+
+$$
+\begin{equation}
+\left\{
+ \begin{matrix}
+ \mathbf{u}_{bc}(\mathbf{r}, t) &=& \mathbf{u}(\mathbf{r}, t) \\
+ \partial_i U_{bc}(\mathbf{r}, t) &=& \partial_i U(\mathbf{r}, t) \\
+ T_{bc}(\mathbf{r}, t) &=& T(\mathbf{r}, t) \\
+ \partial_i T_{bc}(\mathbf{r}, t) &=& \partial_i T(\mathbf{r}, t)
+ \end{matrix}
+\right.
+\end{equation}
+$$
+
+### Cavity Lid
+
+A special boundary condition is implemented for the lid-driven cavity case to provide a smooth transition from the lid velocity to the no-slip condition at the wall, as described by Leriche and Gavrilakis \cite{Leriche2000}. The condition assumes that the domain consists of a 2D or 3D cube with a half width of $$h$$, centered on the origin. The Lagrange pressure at the boundary is set to the interior value:
+
+$$
+\begin{equation}
+ P_{bc} \left(\mathbf{r}, t \right) = P \left(\mathbf{r}, t \right)
+\end{equation}
+$$
+
+If the energy equation is to be solved, then the boundary temperature is set to a specified constant value:
+
+$$
+\begin{equation}
+ T_{bc} \left(\mathbf{r}, t \right)= T_b
+\end{equation}
+$$
+
+The user is required to specify the index $$n$$ aligned with the boundary normal vector and the index $$v$$ of the direction in which the velocity is aligned. The velocity components are then defined as follows:
+
+$$
+\begin{equation}
+\left\{
+ \begin{matrix}
+ u_i &=& \left( 1 - \left(r_i / h \right)^{18} \right)^2 \\
+ u_{j \neq i} &=& 0
+ \end{matrix}
+\right.
+\end{equation}
+$$
+
+where $$u_i$$ is the nominal wall velocity and $$r_i$$ is the distance of the current location from the origin in the $$i^{th}$$ direction.
+
+## Initial conditions
+
+The initial conditions are specified for the velocity $$\mathbf{u}$$, the Lagrange pressure $$P$$, and the temperature $$T$$ when solving for the energy equation. The electric potential $$\varphi$$ is assumed constant and is set to $$\varphi_0$$ in all initial conditions presented below.
+
+### Uniform initial conditions
+The normalized Lagrange pressure, the velocity, and the temperature are initialized to constant values across each block of the computational domain:
+
+$$
+\begin{align}
+ \left\{
+ \begin{matrix}
+ P(\mathbf{r}, t) &=& P_{p,0} \\
+ \mathbf{u}(\mathbf{r}, t) &=& \mathbf{u}_0 \\
+ T(\mathbf{r}, t) &=& T_0
+ \end{matrix}
+ \right.
+\end{align}
+$$
+
+### Laminar flow
+When using the laminar flow initial condition, the x-component of the velocity is initialized with a parabolic profile. The Lagrange pressure and the temperature are initialized to constant values. The current implementation can be used for two geometries: a 2D rectangular channel and a 3D pipe. The parabolic profile is function of the average velocity and the channel height $$h$$ in 2D or the pipe diameter $$D$$ in 3D. It is assumed that the flow direction is aligned with the x-axis, which yields the following expressions:
+
+$$
+\begin{align}
+ \left\{
+ \begin{matrix}
+ P(\mathbf{r}, t) &=& P_{p,0} \\
+ \mathbf{u}(\mathbf{r}, t) &=& \left(\frac{3}{2}\cdot u_{avg}\left(1.0 - \frac{y^2}{h}\right), 0.0 \right) \text{ in 2D} \\
+ \mathbf{u}(\mathbf{r}, t) &=& \left(2\cdot u_{avg}\left(1.0 - \frac{y^2 + z^2}{D}\right), 0.0, 0.0 \right) \text{ in 3D} \\
+ T(\mathbf{r}, t) &=& T_0
+ \end{matrix}
+ \right.
+\end{align}
+$$
diff --git a/docs/usage.md b/docs/usage.md
new file mode 100644
index 0000000..2a50960
--- /dev/null
+++ b/docs/usage.md
@@ -0,0 +1,105 @@
+---
+parent: VERTEX-CFD v1.0 User Guide
+title: Usage
+nav_order: 3
+usemathjax: true
+---
+
+# Usage
+
+Once installed, VERTEX-CFD relies on two files. The first one is the 'vertexcfd' executable, and the second one is the input file for the simulation. After the installation, the executable is located in `/bin/vertexcfd`. The input file is case-specific, and there are example case files in `vertex-cfd/examples/inputs`. In this document, the input file located in `vertex-cfd/examples/inputs/incompressible/incompressible_2d_channel.xml` will be used as an example case.
+
+## Running a simulation
+In order to run a simulation in serial, vertexcfd can be called directly as
+
+```
+/bin/vertexcfd --i=PATH_TO_INPUT_FILE/incompressible_2d_channel.xml
+```
+To run in parallel, `mpirun` is required. An example script for the SLURM scheduler is below:
+```
+#!/bin/bash
+#SBATCH -N 1
+#SBATCH --ntasks-per-node=32
+#SBATCH --time=1:00:00
+#SBATCH -o output.log
+#SBATCH -e error.log
+
+source PATH_TO_ENVIRONMENT_SCRIPT
+
+export OMP_PROC_BIND=true
+export OMP_PLACES=threads
+
+mpirun /bin/vertexcfd --i=/incompressible_2d_channel.xml
+```
+Once the simulation starts, the example output should look like the following:
+```
+============================================================================
+Time Integration Begin
+Thu Mar 31 21:46:09 2022
+
+ Stepper = Backward Euler
+ Simulation Time Range [0, 0.2]
+----------------------------------------------------------------------------
+
+Time Step = 1; Order = 1
+CFL = 1.000e+00; dt = 6.186e-03; Time = 0.00000e+00
+ | Nonlinear | F 2-Norm | # Linear | R 2-Norm |
+ 0 6.65e-02
+ 1 2.03e-02 1 6.45e-16
+ 2 4.66e-04 1 4.25e-16
+ 3 5.40e-07 1 5.36e-16
+ 4 3.19e-13 1 6.58e-16
+Time step time to completion (s): 5.97e+00
+
+Time Step = 2; Order = 1
+CFL = 1.000e+00; dt = 5.644e-03; Time = 6.18583e-03
+ | Nonlinear | F 2-Norm | # Linear | R 2-Norm |
+ 0 5.73e-02
+ 1 5.72e-03 1 4.68e-16
+ 2 5.40e-05 1 4.01e-16
+ 3 3.47e-09 1 7.18e-16
+Time step time to completion (s): 8.96e+00
+
+Time Step = 3; Order = 1
+CFL = 1.000e+00; dt = 5.385e-03; Time = 1.18299e-02
+ | Nonlinear | F 2-Norm | # Linear | R 2-Norm |
+ 0 5.37e-02
+ 1 4.14e-03 1 4.17e-16
+ 2 3.35e-05 1 3.47e-16
+ 3 2.01e-09 1 5.54e-16
+Time step time to completion (s): 7.03e-01
+... ...
+... ...
+... ...
+... ...
+Time Step = 40; Order = 1
+CFL = 1.000e+00; dt = 4.853e-03; Time = 1.93731e-01
+ | Nonlinear | F 2-Norm | # Linear | R 2-Norm |
+ 0 3.57e-02
+ 1 1.15e-03 1 3.89e-16
+ 2 1.68e-06 1 3.90e-16
+ 3 1.66e-12 1 3.20e-16
+Time step time to completion (s): 1.73e+00
+ 41 * (dt = 4.852e-03, new = 1.417e-03) Adjusting dt to hit final time.
+
+Time Step = 41; Order = 1
+CFL = 1.000e+00; dt = 1.417e-03; Time = 1.98583e-01
+ | Nonlinear | F 2-Norm | # Linear | R 2-Norm |
+ 0 3.56e-02
+ 1 3.11e-04 1 2.95e-16
+ 2 3.67e-08 1 2.73e-16
+ 3 4.40e-16 1 2.86e-16
+Time step time to completion (s): 6.91e+00
+
+----------------------------------------------------------------------------
+Total runtime = 1.45e+02 sec
+ = 2.42e+00 min
+ = 0.04 hr
+Thu Mar 31 21:51:51 2022
+Time integration complete.
+============================================================================
+```
+Once the simulation is completed, the results should be ready for visualization. For the visualization, we suggest using ParaView. However, any visualization software that supports Exodus format should work. The example solution file screenshot visualized in Paraview is shown below:
+
+
+
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
deleted file mode 100644
index 9ce15a4..0000000
--- a/examples/CMakeLists.txt
+++ /dev/null
@@ -1,80 +0,0 @@
-set(REGRESSION_XML_FILES
- inputs/incompressible/incompressible_2d_backward_facing_step.xml
- inputs/incompressible/incompressible_2d_channel_periodic.xml
- inputs/incompressible/incompressible_2d_concentric_cylinder_convection.xml
- inputs/incompressible/incompressible_2d_heated_channel.xml
- inputs/incompressible/incompressible_2d_k_omega_turbulence_channel.xml
- inputs/incompressible/incompressible_2d_laminar_airfoil.xml
- inputs/incompressible/incompressible_2d_planar_poiseuille.xml
- inputs/incompressible/incompressible_2d_planar_poiseuille_cuda.xml
- inputs/incompressible/incompressible_2d_realizable_k_epsilon_turbulence_channel.xml
- inputs/incompressible/incompressible_2d_rotating_cylinder_viscous.xml
- inputs/incompressible/incompressible_2d_spalart_allmaras_turbulence_channel.xml
- inputs/incompressible/incompressible_2d_spalart_allmaras_turbulence_heated_channel.xml
- inputs/incompressible/incompressible_2d_standard_k_epsilon_turbulence_channel.xml
- inputs/incompressible/incompressible_2d_taylor_green_vortex.xml
- inputs/incompressible/incompressible_2d_tee_junction.xml
- inputs/incompressible/incompressible_3d_channel_periodic.xml
- inputs/incompressible/incompressible_2d_triangular_cavity_Re100.xml
- inputs/incompressible/incompressible_3d_wale_cavity.xml
- inputs/incompressible/incompressible_blunt_plate_laminar_flow_2d.xml
- inputs/incompressible/incompressible_oscillating_heated_laminar_flow_2d.xml
- inputs/induction_less_mhd/mhd_2d_hartmann_pb_periodic_insulating.xml
- inputs/induction_less_mhd/mhd_2d_hartmann_pb_periodic_insulating_cuda.xml
- inputs/full_induction_mhd/full_induction_vortex_2d_pb.xml
- inputs/full_induction_mhd/divergence_advection_2d.xml
- inputs/full_induction_mhd/current_sheet_2d.xml
- inputs/full_induction_mhd/ldc_2d_bx_010.xml
- inputs/full_induction_mhd/ldc_2d_mixed_b_050_rotated.xml
- )
-file(COPY ${REGRESSION_XML_FILES} DESTINATION .)
-
-set(REGRESSION_EXO_FILES
- mesh/incompressible/2d_backward_facing_step.exo
- mesh/incompressible/2d_concentric_convection.exo
- mesh/incompressible/2d_concentric_cylinders_rad10.exo
- mesh/incompressible/2d_concentric_cylinders_rad20.exo
- mesh/incompressible/2d_concentric_cylinders_rad40.exo
- mesh/incompressible/2d_concentric_cylinders_rad80.exo
- mesh/incompressible/2d_cyclinder_vertex_quad.exo
- mesh/incompressible/2d_laminar_airfoil_0aoa.exo
- mesh/incompressible/2d_laminar_airfoil_3aoa.exo
- mesh/incompressible/2d_laminar_airfoil_8aoa.exo
- mesh/incompressible/2d-short-channel-h-1-ret-180-yp-0-10.exo
- mesh/incompressible/2d_tee_junction.exo
- mesh/incompressible/2d_triangular_cavity.exo
- mesh/incompressible/bluntplate_square.exo
- mesh/incompressible/pipe_hex.exo
- mesh/incompressible/turbulent_channel_mesh_one.exo
- mesh/full_induction_mhd/ldc_bl_41x41_30deg.exo
- mesh/full_induction_mhd/ldc_bl_81x81.exo
- )
-file(COPY ${REGRESSION_EXO_FILES} DESTINATION .)
-
-install(FILES
- inputs/incompressible/incompressible_2d_backward_facing_step.xml
- inputs/incompressible/incompressible_2d_channel_periodic.xml
- inputs/incompressible/incompressible_2d_concentric_cylinder_convection.xml
- inputs/incompressible/incompressible_2d_laminar_airfoil.xml
- inputs/incompressible/incompressible_2d_planar_poiseuille.xml
- inputs/incompressible/incompressible_2d_realizable_k_epsilon_turbulence_channel.xml
- inputs/incompressible/incompressible_2d_rotating_cylinder_viscous.xml
- inputs/incompressible/incompressible_2d_tee_junction.xml
- inputs/incompressible/incompressible_3d_channel_periodic.xml
- inputs/incompressible/incompressible_3d_wale_cavity.xml
- inputs/incompressible/incompressible_blunt_plate_laminar_flow_2d.xml
- inputs/incompressible/incompressible_oscillating_heated_laminar_flow_2d.xml
- DESTINATION examples/incompressible)
-
-install(FILES
- mesh/incompressible/2d_backward_facing_step.exo
- mesh/incompressible/2d_concentric_convection.exo
- mesh/incompressible/2d_concentric_cylinders_rad40.exo
- mesh/incompressible/2d_cyclinder_vertex_quad.exo
- mesh/incompressible/2d_laminar_airfoil_0aoa.exo
- mesh/incompressible/2d_laminar_airfoil_3aoa.exo
- mesh/incompressible/2d_laminar_airfoil_8aoa.exo
- mesh/incompressible/2d_tee_junction.exo
- mesh/incompressible/bluntplate_square.exo
- mesh/incompressible/pipe_hex.exo
- DESTINATION examples/incompressible)
diff --git a/examples/README.md b/examples/README.md
deleted file mode 100644
index 649321b..0000000
--- a/examples/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-This directory contains input files in XML format that are used for regression testing but also could be used as a starting
-point for the development of new input files to run with VertexCFD. The input files are stored in the directory `inputs` while
-the meshes are stored in `meshes`.
diff --git a/examples/inputs/full_induction_mhd/current_sheet_2d.xml b/examples/inputs/full_induction_mhd/current_sheet_2d.xml
deleted file mode 100644
index 34fca4e..0000000
--- a/examples/inputs/full_induction_mhd/current_sheet_2d.xml
+++ /dev/null
@@ -1,383 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/full_induction_mhd/divergence_advection_2d.xml b/examples/inputs/full_induction_mhd/divergence_advection_2d.xml
deleted file mode 100644
index 365a803..0000000
--- a/examples/inputs/full_induction_mhd/divergence_advection_2d.xml
+++ /dev/null
@@ -1,299 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/full_induction_mhd/full_induction_vortex_2d_pb.xml b/examples/inputs/full_induction_mhd/full_induction_vortex_2d_pb.xml
deleted file mode 100644
index 23862b3..0000000
--- a/examples/inputs/full_induction_mhd/full_induction_vortex_2d_pb.xml
+++ /dev/null
@@ -1,291 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/full_induction_mhd/full_induction_vortex_2d_pb_cuda.xml b/examples/inputs/full_induction_mhd/full_induction_vortex_2d_pb_cuda.xml
deleted file mode 100644
index f687cb5..0000000
--- a/examples/inputs/full_induction_mhd/full_induction_vortex_2d_pb_cuda.xml
+++ /dev/null
@@ -1,285 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/full_induction_mhd/ldc_2d_bx_010.xml b/examples/inputs/full_induction_mhd/ldc_2d_bx_010.xml
deleted file mode 100644
index 2e1bd10..0000000
--- a/examples/inputs/full_induction_mhd/ldc_2d_bx_010.xml
+++ /dev/null
@@ -1,388 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/full_induction_mhd/ldc_2d_mixed_b_050_rotated.xml b/examples/inputs/full_induction_mhd/ldc_2d_mixed_b_050_rotated.xml
deleted file mode 100644
index ec7cc6c..0000000
--- a/examples/inputs/full_induction_mhd/ldc_2d_mixed_b_050_rotated.xml
+++ /dev/null
@@ -1,441 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/incompressible/incompressible_2d_backward_facing_step.xml b/examples/inputs/incompressible/incompressible_2d_backward_facing_step.xml
deleted file mode 100644
index ca163c5..0000000
--- a/examples/inputs/incompressible/incompressible_2d_backward_facing_step.xml
+++ /dev/null
@@ -1,280 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/incompressible/incompressible_2d_channel.xml b/examples/inputs/incompressible/incompressible_2d_channel.xml
deleted file mode 100644
index 64dec08..0000000
--- a/examples/inputs/incompressible/incompressible_2d_channel.xml
+++ /dev/null
@@ -1,280 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/incompressible/incompressible_2d_channel_periodic.xml b/examples/inputs/incompressible/incompressible_2d_channel_periodic.xml
deleted file mode 100644
index 3687fe8..0000000
--- a/examples/inputs/incompressible/incompressible_2d_channel_periodic.xml
+++ /dev/null
@@ -1,269 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/incompressible/incompressible_2d_concentric_cylinder_convection.xml b/examples/inputs/incompressible/incompressible_2d_concentric_cylinder_convection.xml
deleted file mode 100644
index f0031ae..0000000
--- a/examples/inputs/incompressible/incompressible_2d_concentric_cylinder_convection.xml
+++ /dev/null
@@ -1,274 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/incompressible/incompressible_2d_heated_channel.xml b/examples/inputs/incompressible/incompressible_2d_heated_channel.xml
deleted file mode 100644
index 41ce8a2..0000000
--- a/examples/inputs/incompressible/incompressible_2d_heated_channel.xml
+++ /dev/null
@@ -1,310 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/incompressible/incompressible_2d_k_omega_turbulence_channel.xml b/examples/inputs/incompressible/incompressible_2d_k_omega_turbulence_channel.xml
deleted file mode 100644
index c46fa16..0000000
--- a/examples/inputs/incompressible/incompressible_2d_k_omega_turbulence_channel.xml
+++ /dev/null
@@ -1,311 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/incompressible/incompressible_2d_laminar_airfoil.xml b/examples/inputs/incompressible/incompressible_2d_laminar_airfoil.xml
deleted file mode 100644
index b8291a8..0000000
--- a/examples/inputs/incompressible/incompressible_2d_laminar_airfoil.xml
+++ /dev/null
@@ -1,286 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/incompressible/incompressible_2d_planar_poiseuille.xml b/examples/inputs/incompressible/incompressible_2d_planar_poiseuille.xml
deleted file mode 100644
index 4898d51..0000000
--- a/examples/inputs/incompressible/incompressible_2d_planar_poiseuille.xml
+++ /dev/null
@@ -1,311 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/incompressible/incompressible_2d_planar_poiseuille_cuda.xml b/examples/inputs/incompressible/incompressible_2d_planar_poiseuille_cuda.xml
deleted file mode 100644
index 0d94a82..0000000
--- a/examples/inputs/incompressible/incompressible_2d_planar_poiseuille_cuda.xml
+++ /dev/null
@@ -1,313 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/incompressible/incompressible_2d_realizable_k_epsilon_turbulence_channel.xml b/examples/inputs/incompressible/incompressible_2d_realizable_k_epsilon_turbulence_channel.xml
deleted file mode 100644
index e9d9788..0000000
--- a/examples/inputs/incompressible/incompressible_2d_realizable_k_epsilon_turbulence_channel.xml
+++ /dev/null
@@ -1,320 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/incompressible/incompressible_2d_rotating_cylinder_viscous.xml b/examples/inputs/incompressible/incompressible_2d_rotating_cylinder_viscous.xml
deleted file mode 100644
index 7b3389b..0000000
--- a/examples/inputs/incompressible/incompressible_2d_rotating_cylinder_viscous.xml
+++ /dev/null
@@ -1,289 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/incompressible/incompressible_2d_spalart_allmaras_turbulence_channel.xml b/examples/inputs/incompressible/incompressible_2d_spalart_allmaras_turbulence_channel.xml
deleted file mode 100644
index f29e9b7..0000000
--- a/examples/inputs/incompressible/incompressible_2d_spalart_allmaras_turbulence_channel.xml
+++ /dev/null
@@ -1,314 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/incompressible/incompressible_2d_spalart_allmaras_turbulence_heated_channel.xml b/examples/inputs/incompressible/incompressible_2d_spalart_allmaras_turbulence_heated_channel.xml
deleted file mode 100644
index 1e85c1f..0000000
--- a/examples/inputs/incompressible/incompressible_2d_spalart_allmaras_turbulence_heated_channel.xml
+++ /dev/null
@@ -1,366 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/incompressible/incompressible_2d_spalart_allmaras_turbulence_model.xml b/examples/inputs/incompressible/incompressible_2d_spalart_allmaras_turbulence_model.xml
deleted file mode 100644
index bae9f57..0000000
--- a/examples/inputs/incompressible/incompressible_2d_spalart_allmaras_turbulence_model.xml
+++ /dev/null
@@ -1,298 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/incompressible/incompressible_2d_standard_k_epsilon_turbulence_channel.xml b/examples/inputs/incompressible/incompressible_2d_standard_k_epsilon_turbulence_channel.xml
deleted file mode 100644
index deb52cf..0000000
--- a/examples/inputs/incompressible/incompressible_2d_standard_k_epsilon_turbulence_channel.xml
+++ /dev/null
@@ -1,316 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/incompressible/incompressible_2d_taylor_green_vortex.xml b/examples/inputs/incompressible/incompressible_2d_taylor_green_vortex.xml
deleted file mode 100644
index 020e151..0000000
--- a/examples/inputs/incompressible/incompressible_2d_taylor_green_vortex.xml
+++ /dev/null
@@ -1,256 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/incompressible/incompressible_2d_tee_junction.xml b/examples/inputs/incompressible/incompressible_2d_tee_junction.xml
deleted file mode 100644
index 66c08ca..0000000
--- a/examples/inputs/incompressible/incompressible_2d_tee_junction.xml
+++ /dev/null
@@ -1,317 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/incompressible/incompressible_2d_triangular_cavity_Re100.xml b/examples/inputs/incompressible/incompressible_2d_triangular_cavity_Re100.xml
deleted file mode 100644
index 2f7ed15..0000000
--- a/examples/inputs/incompressible/incompressible_2d_triangular_cavity_Re100.xml
+++ /dev/null
@@ -1,275 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/incompressible/incompressible_3d_channel_periodic.xml b/examples/inputs/incompressible/incompressible_3d_channel_periodic.xml
deleted file mode 100644
index 981746a..0000000
--- a/examples/inputs/incompressible/incompressible_3d_channel_periodic.xml
+++ /dev/null
@@ -1,257 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/incompressible/incompressible_3d_wale_cavity.xml b/examples/inputs/incompressible/incompressible_3d_wale_cavity.xml
deleted file mode 100644
index 1940b7d..0000000
--- a/examples/inputs/incompressible/incompressible_3d_wale_cavity.xml
+++ /dev/null
@@ -1,358 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/incompressible/incompressible_blunt_plate_laminar_flow_2d.xml b/examples/inputs/incompressible/incompressible_blunt_plate_laminar_flow_2d.xml
deleted file mode 100644
index 84f9873..0000000
--- a/examples/inputs/incompressible/incompressible_blunt_plate_laminar_flow_2d.xml
+++ /dev/null
@@ -1,277 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/incompressible/incompressible_oscillating_heated_laminar_flow_2d.xml b/examples/inputs/incompressible/incompressible_oscillating_heated_laminar_flow_2d.xml
deleted file mode 100644
index 2db1085..0000000
--- a/examples/inputs/incompressible/incompressible_oscillating_heated_laminar_flow_2d.xml
+++ /dev/null
@@ -1,351 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/incompressible/incompressible_oscillating_laminar_flow_2d.xml b/examples/inputs/incompressible/incompressible_oscillating_laminar_flow_2d.xml
deleted file mode 100644
index 845c27a..0000000
--- a/examples/inputs/incompressible/incompressible_oscillating_laminar_flow_2d.xml
+++ /dev/null
@@ -1,290 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/induction_less_mhd/mhd_2d_hartmann_pb_periodic_insulating.xml b/examples/inputs/induction_less_mhd/mhd_2d_hartmann_pb_periodic_insulating.xml
deleted file mode 100644
index 70e9f94..0000000
--- a/examples/inputs/induction_less_mhd/mhd_2d_hartmann_pb_periodic_insulating.xml
+++ /dev/null
@@ -1,348 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/induction_less_mhd/mhd_2d_hartmann_pb_periodic_insulating_cuda.xml b/examples/inputs/induction_less_mhd/mhd_2d_hartmann_pb_periodic_insulating_cuda.xml
deleted file mode 100644
index fa211a0..0000000
--- a/examples/inputs/induction_less_mhd/mhd_2d_hartmann_pb_periodic_insulating_cuda.xml
+++ /dev/null
@@ -1,344 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/simple_box_2d.xml b/examples/inputs/simple_box_2d.xml
deleted file mode 100644
index 98a16b4..0000000
--- a/examples/inputs/simple_box_2d.xml
+++ /dev/null
@@ -1,269 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/inputs/simple_box_3d.xml b/examples/inputs/simple_box_3d.xml
deleted file mode 100644
index 4e3dd41..0000000
--- a/examples/inputs/simple_box_3d.xml
+++ /dev/null
@@ -1,300 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/mesh/full_induction_mhd/ldc_bl_41x41_30deg.exo b/examples/mesh/full_induction_mhd/ldc_bl_41x41_30deg.exo
deleted file mode 100644
index f787569..0000000
--- a/examples/mesh/full_induction_mhd/ldc_bl_41x41_30deg.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a8b99bceed3e3c2a50d3b0f67617ce2da5f234195faa9c6b6a0b07e0365e0915
-size 108692
diff --git a/examples/mesh/full_induction_mhd/ldc_bl_81x81.exo b/examples/mesh/full_induction_mhd/ldc_bl_81x81.exo
deleted file mode 100644
index 294e96a..0000000
--- a/examples/mesh/full_induction_mhd/ldc_bl_81x81.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:59a13417b2ab7365be74c4e2a266a12846b476e134f16c48033aee3f718f0c32
-size 343060
diff --git a/examples/mesh/incompressible/2d-short-channel-h-1-ret-180-yp-0-10.exo b/examples/mesh/incompressible/2d-short-channel-h-1-ret-180-yp-0-10.exo
deleted file mode 100644
index 00a30bd..0000000
--- a/examples/mesh/incompressible/2d-short-channel-h-1-ret-180-yp-0-10.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:40d56305d2e801871f9d6b2b6747791961044665062fdd749be8df3942c7c184
-size 85533
diff --git a/examples/mesh/incompressible/2d_backward_facing_step.exo b/examples/mesh/incompressible/2d_backward_facing_step.exo
deleted file mode 100644
index b3181a3..0000000
--- a/examples/mesh/incompressible/2d_backward_facing_step.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f5bbd1325ca2e4b70a7294153b86550d1b04e6995dbeb9cec40e0a44f48ac98c
-size 807604
diff --git a/examples/mesh/incompressible/2d_concentric_convection.exo b/examples/mesh/incompressible/2d_concentric_convection.exo
deleted file mode 100644
index 6b53d1b..0000000
--- a/examples/mesh/incompressible/2d_concentric_convection.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:907b99feb601f07b4564aa03b20e534171d2ac5ad338d45c44c28a41956b853f
-size 114440
diff --git a/examples/mesh/incompressible/2d_concentric_cylinders_rad10.exo b/examples/mesh/incompressible/2d_concentric_cylinders_rad10.exo
deleted file mode 100644
index 8dd5445..0000000
--- a/examples/mesh/incompressible/2d_concentric_cylinders_rad10.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5292f05779eecb20d7d89e8dd4cc915f7b22844529a2d944a1dc502949ea82fc
-size 32520
diff --git a/examples/mesh/incompressible/2d_concentric_cylinders_rad20.exo b/examples/mesh/incompressible/2d_concentric_cylinders_rad20.exo
deleted file mode 100644
index 40497c4..0000000
--- a/examples/mesh/incompressible/2d_concentric_cylinders_rad20.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e3eb195ca6df5da1da1abd5447719dc486e92322b02eeae37059e14e379a1ebe
-size 115800
diff --git a/examples/mesh/incompressible/2d_concentric_cylinders_rad40.exo b/examples/mesh/incompressible/2d_concentric_cylinders_rad40.exo
deleted file mode 100644
index 322f85e..0000000
--- a/examples/mesh/incompressible/2d_concentric_cylinders_rad40.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c09ec0c85aff8fedbae871b30076ea75c8d064688d94fab41975225b31134a92
-size 440760
diff --git a/examples/mesh/incompressible/2d_concentric_cylinders_rad80.exo b/examples/mesh/incompressible/2d_concentric_cylinders_rad80.exo
deleted file mode 100644
index 75b6096..0000000
--- a/examples/mesh/incompressible/2d_concentric_cylinders_rad80.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:78adbb59b0d2be47ade1464ef08a18451aa8df44754c7c5d1cf3e6ccb1e96eb4
-size 1724280
diff --git a/examples/mesh/incompressible/2d_cyclinder_vertex_quad.exo b/examples/mesh/incompressible/2d_cyclinder_vertex_quad.exo
deleted file mode 100644
index f5045b2..0000000
--- a/examples/mesh/incompressible/2d_cyclinder_vertex_quad.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:27835ca20522b75584d300c8d2747a801430a8c118d91165279c87c1d556539b
-size 1335072
diff --git a/examples/mesh/incompressible/2d_laminar_airfoil_0aoa.exo b/examples/mesh/incompressible/2d_laminar_airfoil_0aoa.exo
deleted file mode 100755
index ebd9540..0000000
--- a/examples/mesh/incompressible/2d_laminar_airfoil_0aoa.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e386ffd07c9a0ff97fc16c6043104dbf146bb7c7c92d9952a4c5a74097e42aef
-size 5807180
diff --git a/examples/mesh/incompressible/2d_laminar_airfoil_3aoa.exo b/examples/mesh/incompressible/2d_laminar_airfoil_3aoa.exo
deleted file mode 100755
index 898c587..0000000
--- a/examples/mesh/incompressible/2d_laminar_airfoil_3aoa.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:28d404461eaa20c2d324b7631fabc706929bfaefe33d32a248e9e8eb8e1f1f4e
-size 5802516
diff --git a/examples/mesh/incompressible/2d_laminar_airfoil_8aoa.exo b/examples/mesh/incompressible/2d_laminar_airfoil_8aoa.exo
deleted file mode 100755
index 6bee685..0000000
--- a/examples/mesh/incompressible/2d_laminar_airfoil_8aoa.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7c3ed907ac09b3aa6be93e6c70ab677eed62c45f5673214b1a36a15058dcc47c
-size 5807400
diff --git a/examples/mesh/incompressible/2d_tee_junction.exo b/examples/mesh/incompressible/2d_tee_junction.exo
deleted file mode 100644
index b1608fa..0000000
--- a/examples/mesh/incompressible/2d_tee_junction.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:130df07f9f3fcd2cfdee171b034e60fddddd0a95690b38a2eb9ae6bacc8f3a88
-size 536206
diff --git a/examples/mesh/incompressible/2d_triangular_cavity.exo b/examples/mesh/incompressible/2d_triangular_cavity.exo
deleted file mode 100644
index ae981b3..0000000
--- a/examples/mesh/incompressible/2d_triangular_cavity.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8dcadea201bb981a6f483d4fe3921ee581198f61f7a573d9437c10f068aa4f3d
-size 485914
diff --git a/examples/mesh/incompressible/bluntplate_square.exo b/examples/mesh/incompressible/bluntplate_square.exo
deleted file mode 100644
index f5fd934..0000000
--- a/examples/mesh/incompressible/bluntplate_square.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:65bec41d3dbcc6fbf1a61660179ffb2d1196b3a2b1e3452e45f0630dea609b63
-size 2182090
diff --git a/examples/mesh/incompressible/half_turbulent_channel_mesh_one.exo b/examples/mesh/incompressible/half_turbulent_channel_mesh_one.exo
deleted file mode 100644
index 9099d06..0000000
--- a/examples/mesh/incompressible/half_turbulent_channel_mesh_one.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a2e8de4e176d80387ddbaf3517eb07dc3d896b430cc0752d84ad64ee28626f04
-size 262423
diff --git a/examples/mesh/incompressible/pipe_hex.exo b/examples/mesh/incompressible/pipe_hex.exo
deleted file mode 100644
index ec5992f..0000000
--- a/examples/mesh/incompressible/pipe_hex.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d0666e8146b5dbc0600039a8795534d4396a368486068b910612adef16bf652d
-size 642600
diff --git a/examples/mesh/incompressible/turbulent_channel_mesh_one.exo b/examples/mesh/incompressible/turbulent_channel_mesh_one.exo
deleted file mode 100644
index 7b92bfa..0000000
--- a/examples/mesh/incompressible/turbulent_channel_mesh_one.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9dc06435d9af34f80c265f7de6ba87094ffcd81451ccff75fda44a2703e1dcda
-size 485823
diff --git a/examples/mesh/test_mesh_manager.exo b/examples/mesh/test_mesh_manager.exo
deleted file mode 100644
index 3d42b52..0000000
--- a/examples/mesh/test_mesh_manager.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2b6554f737d7ec75d77972f526fd524fa105192b689d59b5afcac37aa90b1d02
-size 163997
diff --git a/examples/post_processing/lambda-2-contour.py b/examples/post_processing/lambda-2-contour.py
deleted file mode 100644
index 620c698..0000000
--- a/examples/post_processing/lambda-2-contour.py
+++ /dev/null
@@ -1,85 +0,0 @@
-# Script for creating a lambda-2 contour for LES turbulence visualization.
-# Also calculates the vorticity field for coloring the isosurface.
-
-# For details on the lambda-2 criterion, see pp. 76-77 in:
-# J. Jeong and F. Hussain, “On the identification of a vortex,”
-# Journal of Fluid Mechanics, vol. 285, pp. 69–94, 1995,
-# doi: 10.1017/S0022112095000462.
-
-# Script generated using ParaView version 5.11.0
-
-################################################################################
-
-# USAGE:
-# 1. Open a ParaView instance and load desired solution file
-# 2. Import this script to Paraview by going to Macros -> Import new macro...
-# and then selecting this script in the browser.
-# 3. Run the macro by going to Macros -> lambda-2-contour
-# 4. You can then view a contour of the lambda-2 parameter in the pipeline
-# browser, and optionally color by the vorticity magnitude.
-
-################################################################################
-
-# Import the simple module from ParaView
-from paraview.simple import *
-# Disable automatic camera reset on 'Show'
-paraview.simple._DisableFirstRenderCameraReset()
-
-# Find source file
-solutionFile = FindSource('*.exo')
-
-# Merge blocks to allow manipulation of .exo data
-mergeBlocks1 = MergeBlocks(registrationName='MergeBlocks1', Input=solutionFile)
-
-UpdatePipeline(time=100.0, proxy=mergeBlocks1)
-
-# Merge velocity components into vector
-mergeVectorComponents1 = MergeVectorComponents(
- registrationName='MergeVectorComponents1', Input=mergeBlocks1)
-mergeVectorComponents1.XArray = 'velocity_0'
-mergeVectorComponents1.YArray = 'velocity_1'
-mergeVectorComponents1.ZArray = 'velocity_2'
-mergeVectorComponents1.OutputVectorName = 'velocity'
-
-UpdatePipeline(time=100.0, proxy=mergeVectorComponents1)
-
-# Use a programmable filter to calculate lambda2 criterion
-programmableFilter1 = ProgrammableFilter(
- registrationName='ProgrammableFilter1', Input=mergeVectorComponents1)
-programmableFilter1.Script = """import numpy as np
-
-vvector = inputs[0].PointData['velocity']
-
-vstrain = strain(vvector)
-vskew = gradient(vvector) - vstrain
-
-aaa = matmul(vstrain, vstrain) + matmul(vskew, vskew)
-
-lambdas = np.linalg.eigvals(aaa)
-lambdas = np.real(lambdas )
-lambda2 = sort(lambdas)[:,1]
-
-output.DeepCopy(inputs[0].VTKObject)
-output.PointData.append(lambda2, 'lambda2')"""
-programmableFilter1.RequestInformationScript = ''
-programmableFilter1.RequestUpdateExtentScript = ''
-programmableFilter1.PythonPath = ''
-
-UpdatePipeline(time=100.0, proxy=programmableFilter1)
-
-# Calculate vorticity field
-calculator1 = Calculator(registrationName='Calculator1',
- Input=programmableFilter1)
-calculator1.AttributeType = 'Cell Data'
-calculator1.ResultArrayName = 'vorticity'
-calculator1.Function = '(GRAD_velocity_2Y - GRAD_velocity_1Z) * iHat + (GRAD_velocity_0Z - GRAD_velocity_2X) * jHat + (GRAD_velocity_1X - GRAD_velocity_0Y) * kHat'
-
-UpdatePipeline(time=100.0, proxy=calculator1)
-
-# Contour by lambda2 = 0
-contour1 = Contour(registrationName='Contour1', Input=calculator1)
-contour1.ContourBy = ['POINTS', 'lambda2']
-contour1.Isosurfaces = [0.0]
-contour1.PointMergeMethod = 'Uniform Binning'
-
-UpdatePipeline(time=100.0, proxy=contour1)
diff --git a/index.md b/index.md
new file mode 100644
index 0000000..5e186f9
--- /dev/null
+++ b/index.md
@@ -0,0 +1,44 @@
+---
+layout: default
+title: Home
+nav_order: 1
+permalink: /
+---
+
+
+
+An open-source CFD code for multiphysics modeling and simulation with a focus on fusion applications.
+{: .fs-6 .fw-300 }
+
+[User Guide](docs/index.html){: .btn .btn-primary .fs-5 .mb-4 .mb-md-0 .mr-2 }
+[View it on GitHub](https://github.com/ORNL/VERTEX-CFD){: .btn .fs-5 .mb-4 .mb-md-0 }
+
+---
+
+## Contributing
+We encourage you to contribute to VERTEX-CFD! Please review the [how to contribute](docs/contribution.md) page.
+
+#### Contributors
+- [Marco Delchini](https://www.ornl.gov/staff-profile/marc-olivier-delchini)
+- [Kellis Kincaid](https://www.ornl.gov/staff-profile/kellis-c-kincaid)
+- [Furkan Oz](https://www.ornl.gov/staff-profile/furkan-oz)
+- [Kalyan Gottiparthi](https://www.ornl.gov/staff-profile/kalyan-c-gottiparthi)
+- [Jason W. DeGraw](https://www.ornl.gov/staff-profile/jason-w-degraw)
+- [Doug Stefanski](https://www.ornl.gov/staff-profile/douglas-l-stefanski)
+- [Filipe L. Brandao](https://www.ornl.gov/staff-profile/filipe-leite-brandao)
+- [Ryan Savery](https://impact.ornl.gov/en/persons/ryan-savery)
+
+## Citing
+If you use VERTEX-CFD in your work, please cite the Zenodo DOI [](https://doi.org/10.5281/zenodo.14907174) of the version you used as a software citation:
+```bibtex
+@software{vertex-cfd,
+ author = {AUTHORS},
+ title = {VERTEX-CFD: Release 1.0},
+ month = jun,
+ year = 2024,
+ publisher = {Zenodo},
+ version = {1.0.0},
+ doi = {DOI_NUMBER},
+ url = {DOI_URL}
+}
+```
diff --git a/regression_test/exodiff_file.txt b/regression_test/exodiff_file.txt
deleted file mode 100644
index 6e32eda..0000000
--- a/regression_test/exodiff_file.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-DEFAULT TOLERANCE relative 1.E-8 absolute 1.E-7 floor 1.E-14
-COORDINATES absolute 1.E-12
-TIME STEPS absolute 1.E-14
-NODAL VARIABLES absolute 1.E-8
diff --git a/regression_test/pytest.ini b/regression_test/pytest.ini
deleted file mode 100644
index 3296dd3..0000000
--- a/regression_test/pytest.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[pytest]
-markers =
- push: marks tests that are to be run after pushing to branch (deselect with '-m "not push"')
- daily: marks tests that are to be run daily (deselect with '-m "not daily"')
- weekly: marks tests that are to be run weekly (deselect with '-m "not weekly"')
- incompressible: marks tests for incompressible model.
- mhd: marks for mhd model.
- gpu: marks for regression tests to run on GPU node.
diff --git a/regression_test/rename_variables_exodus.py.in b/regression_test/rename_variables_exodus.py.in
deleted file mode 100644
index a2a13c7..0000000
--- a/regression_test/rename_variables_exodus.py.in
+++ /dev/null
@@ -1,153 +0,0 @@
-# Import Python modules
-import sys
-import glob
-import argparse
-import os
-from os import path
-
-# Description:
-# This Python script implements logic to rename nodal and element variables
-# in Exodus files. The values remain un-changed. The changes in the Exodus
-# files are performed in place. Files to update are to be specified at the
-# command line. See documentation in the Wiki page under Software quality
-# assurance for further details.
-
-# Adding trilinos folder to the system path and import exodus3
-sys.path.insert(
- 0, '@TRILINOS_LIB@')
-import exodus3 as exodus
-
-# Argument parser
-parser = argparse.ArgumentParser(
- description='Replace field names in Exodus files')
-parser.add_argument('-v',
- '--verbose',
- action='store_true',
- help='more verbose output')
-parser.add_argument('files',
- nargs='+',
- help='exodus file(s) to modify',
- metavar='file')
-parser.add_argument('-n',
- '--node',
- nargs=2,
- action='append',
- help='node variable',
- metavar=('old-name', 'new-name'))
-parser.add_argument('-e',
- '--element',
- nargs=2,
- action='append',
- help='element variable',
- metavar=('old-name', 'new-name'))
-args = parser.parse_args()
-
-# Assign variable based on parsed arguments
-nodal_list = args.node
-elem_list = args.element
-if nodal_list is None and elem_list is None:
- print("\nPlease provide a list of node or element fields to replace.\n")
- parser.print_help()
- sys.exit()
-filename_list = args.files
-
-# Collect all Exodus files specified at the command line
-for f in filename_list:
- if not os.path.isfile(f):
- sys.exit(f"ERROR: The file '{f}' is not found.")
-
-
-# Verbose function (used when --verbose flag is passed to command line)
-def print_verbose(msg):
- if args.verbose:
- print(msg)
-
-
-# Funtion to replace fields
-def replace_field(exo, field_list, field_type):
- print_verbose(f"\n\tLoop over {field_type} fields to replace:")
- # Set `exo_put_node` function and field type
- exo_put_node = lambda: None
- if field_type == "nodal":
- exo_put_node = exo.put_node_variable_name
- field_type = "EX_NODAL"
- elif field_type == "element":
- exo_put_node = exo.put_element_variable_name
- field_type = "EX_ELEM_BLOCK"
- else:
- exo.close()
- sys.exit(
- f"\t\tError: Current field type '{field_type}' is not supported. Field type options are 'nodal' or 'element'."
- )
-
- # Loop over fields to replace
- exo_field_list = exo.get_variable_names(field_type)
- field_not_found = []
- for old_field, new_field in field_list:
- print_verbose(f"\n\t\t\tField to replace: {old_field}...")
- found = False
- # Look for exact match
- if old_field in exo_field_list:
- index = exo_field_list.index(old_field) + 1
- exo_put_node(new_field, index)
- found = True
- print_verbose(
- f"\t\t\t...Field {old_field} found with index {index} and replaced with {new_field}."
- )
- if not found:
- field_not_found.append(old_field)
- print_verbose(f"\t\t\t...WARNING: field {old_field} not found.")
- if field_not_found:
- print_verbose(
- f"\n\t\tWARNING: List of field(s) not found in the Exodus file {exo.fileName}:"
- )
- for old_field in field_not_found:
- print_verbose(f"\t\t- {old_field}")
-
- # Return list of fields not found
- return field_not_found
-
-
-# Loop over file list
-full_report = {}
-sep = 100 * "*"
-for filename in filename_list:
- print("\n" + sep)
-
- # Create exodus object from file
- exo = exodus.exodus(filename, mode='a')
-
- nodal_field_not_found = None
- elem_field_not_found = None
-
- try:
- # Nodal fields
- if nodal_list is not None:
- nodal_field_not_found = replace_field(exo, nodal_list, "nodal")
-
- # Element fields
- if elem_list is not None:
- elem_field_not_found = replace_field(exo, elem_list, "element")
- finally:
- # Close exodus object
- exo.close()
-
- # Store data in report (dictionary)
- full_report[filename] = {}
- if nodal_field_not_found is not None:
- full_report[filename]["nodal"] = nodal_field_not_found
- if elem_field_not_found is not None:
- full_report[filename]["element"] = elem_field_not_found
-
-# Print full report
-print("\n" + sep)
-print("Full report:")
-for filename in filename_list:
- print(f"\tFile name: {filename}")
- for key, values in full_report[filename].items():
- if values:
- print("\t\t" + key + " variables not updated:")
- for v in values:
- print(f"\t\t - {v}")
- else:
- print("\t\tall " + key + " variables updated.")
diff --git a/regression_test/test_incompressible/test_cavity/gold/incompressible_2d_triangular_cavity_Re100_solution.exo b/regression_test/test_incompressible/test_cavity/gold/incompressible_2d_triangular_cavity_Re100_solution.exo
deleted file mode 100644
index 4f57cb5..0000000
--- a/regression_test/test_incompressible/test_cavity/gold/incompressible_2d_triangular_cavity_Re100_solution.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9291bb12ce740d707a9cab981467d99678af8ff088fe5e3ee007053e9bf53852
-size 1274912
diff --git a/regression_test/test_incompressible/test_cavity/gold/incompressible_2d_triangular_cavity_Re400_solution.exo b/regression_test/test_incompressible/test_cavity/gold/incompressible_2d_triangular_cavity_Re400_solution.exo
deleted file mode 100644
index 28e175b..0000000
--- a/regression_test/test_incompressible/test_cavity/gold/incompressible_2d_triangular_cavity_Re400_solution.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9f58f9193002e8726c3fb3d66bc5d87b0c6f5767f76aa2dff9824f38693a5071
-size 1274912
diff --git a/regression_test/test_incompressible/test_cavity/gold/incompressible_2d_triangular_cavity_Re800_solution.exo b/regression_test/test_incompressible/test_cavity/gold/incompressible_2d_triangular_cavity_Re800_solution.exo
deleted file mode 100644
index 886c330..0000000
--- a/regression_test/test_incompressible/test_cavity/gold/incompressible_2d_triangular_cavity_Re800_solution.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7077218589ce653a2a0f8f3cc7f3c775c4511c392588bb3890b451097bce68c9
-size 1274912
diff --git a/regression_test/test_incompressible/test_cavity/test_cavity.py b/regression_test/test_incompressible/test_cavity/test_cavity.py
deleted file mode 100644
index 1403c4b..0000000
--- a/regression_test/test_incompressible/test_cavity/test_cavity.py
+++ /dev/null
@@ -1,100 +0,0 @@
-import sys
-import os
-import pytest
-
-import vertexcfd_test
-
-
-class TestCavity:
- # setup method for class
- @classmethod
- def setup_class(self):
- """ setup any state specific to the execution of the
- given class (which usually contains tests)."""
- print('\n***************** Setup class method *******************')
-
- # Class variables (to not change)
- self.mesh_file_path = vertexcfd_test.mesh_file_path
- self.input_file_path = vertexcfd_test.input_file_path
- self.vertexcfd_exec = vertexcfd_test.vertexcfd_exec
- self.exodiff_exec = vertexcfd_test.exodiff_exec
- self.main_path = vertexcfd_test.main_path
- self.no_exodiff_file = None
-
- # Change working directory to test directory
- self.test_path = os.path.dirname(os.path.realpath(__file__))
- os.chdir(self.test_path)
-
- # teardown method for class
- @classmethod
- def teardown_class(self):
- """ teardown any state that was previously
- setup with a call to setup_class."""
- print('\n****************** Teardown class method ******************')
- # Change working directory back to main directory
- os.chdir(vertexcfd_test.main_path)
-
- # setup method for each function
- def setup_method(self):
- """ setup test."""
- print('\nSetup method')
- # Initialize input file, mesh file and output file names
- self.input_file = None
- self.mesh_file = None
- self.output_file = None
-
- # teardown method for each function
- def teardown_method(self):
- """ teardown test."""
- print('\nTeardown method')
- # Delete input file, mesh file and output file
- vertexcfd_test.clean_working_directory(self)
-
- #############################################################################
- #############################################################################
- #############################################################################
- @pytest.mark.push
- @pytest.mark.daily
- @pytest.mark.weekly
- @pytest.mark.incompressible
- def test_2d_triangular_cavity(self, request):
- # Parameters
- mark_expr = request.config.option.markexpr
- vertexcfd_options = ()
- copy_xml_file = False
-
- # default parameters to be used on 'push'
- base_input_file = "incompressible_2d_triangular_cavity"
- self.input_file = base_input_file + "_Re100.xml"
- source_input_file = self.input_file
- output_name = base_input_file + "_Re100_solution.exo"
- nu = 0.8
-
- if ("daily" in mark_expr):
- self.input_file = base_input_file + "_Re400.xml"
- output_name = base_input_file + "_Re400_solution.exo"
- nu = 0.2
- elif ("weekly" in mark_expr):
- self.input_file = base_input_file + "_Re800.xml"
- output_name = base_input_file + "_Re800_solution.exo"
- nu = 0.1
-
- xml_args_to_replace_list = []
- xml_args_to_replace_list.append(
- vertexcfd_test.xml_args_to_replace('Parameter', 'name',
- 'Kinematic viscosity', nu))
- xml_args_to_replace_list.append(
- vertexcfd_test.xml_args_to_replace('Parameter', 'name',
- 'Exodus Output File',
- output_name))
-
- vertexcfd_test.create_xml_file_from_base_file(
- self, source_input_file, xml_args_to_replace_list)
-
- # Parameters for exodiff executables
- exodiff_options = ()
-
- #### The following code should not be modified ####
- # Run VertexCFD and call exodiff to compare to gold file
- vertexcfd_test.run_test(self, vertexcfd_options, exodiff_options,
- copy_xml_file)
diff --git a/regression_test/test_incompressible/test_pipe_flow/exodiff_file.txt b/regression_test/test_incompressible/test_pipe_flow/exodiff_file.txt
deleted file mode 100644
index fb64a95..0000000
--- a/regression_test/test_incompressible/test_pipe_flow/exodiff_file.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-DEFAULT TOLERANCE relative 1.E-8 absolute 1.E-7 floor 1.E-14
-COORDINATES absolute 1.E-12
-TIME STEPS absolute 1.E-8
-NODAL VARIABLES absolute 1.E-8
diff --git a/regression_test/test_incompressible/test_pipe_flow/gold/incompressible_2d_channel_periodic_solution.exo b/regression_test/test_incompressible/test_pipe_flow/gold/incompressible_2d_channel_periodic_solution.exo
deleted file mode 100644
index d8b3664..0000000
--- a/regression_test/test_incompressible/test_pipe_flow/gold/incompressible_2d_channel_periodic_solution.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a4fa171ad1cb4cb9bc294c82c08c75b6642abdf2d0e0dc26d449e92ac23a5827
-size 688136
diff --git a/regression_test/test_incompressible/test_pipe_flow/gold/incompressible_2d_heated_channel_solution.exo b/regression_test/test_incompressible/test_pipe_flow/gold/incompressible_2d_heated_channel_solution.exo
deleted file mode 100644
index 04b556f..0000000
--- a/regression_test/test_incompressible/test_pipe_flow/gold/incompressible_2d_heated_channel_solution.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:829352490118d2033883d361f46406a73f65b7c153dae48d80c9e18f3476cd9b
-size 932072
diff --git a/regression_test/test_incompressible/test_pipe_flow/gold/incompressible_3d_channel_periodic_solution.exo b/regression_test/test_incompressible/test_pipe_flow/gold/incompressible_3d_channel_periodic_solution.exo
deleted file mode 100644
index 37abcf7..0000000
--- a/regression_test/test_incompressible/test_pipe_flow/gold/incompressible_3d_channel_periodic_solution.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ea85bc3f661ac006dd92a7ac8caf972e8bcf4811fec3d349a0f5f9d43cf39809
-size 4714436
diff --git a/regression_test/test_incompressible/test_pipe_flow/test_pipe_flow.py b/regression_test/test_incompressible/test_pipe_flow/test_pipe_flow.py
deleted file mode 100644
index 68e5b11..0000000
--- a/regression_test/test_incompressible/test_pipe_flow/test_pipe_flow.py
+++ /dev/null
@@ -1,168 +0,0 @@
-import sys
-import os
-import pytest
-import re
-
-import vertexcfd_test
-
-
-class TestPipeFlow:
- # setup method for class
- @classmethod
- def setup_class(self):
- """ setup any state specific to the execution of the
- given class (which usually contains tests)."""
- print('\n***************** Setup class method *******************')
-
- # Class variables (to not change)
- self.mesh_file_path = vertexcfd_test.mesh_file_path
- self.input_file_path = vertexcfd_test.input_file_path
- self.vertexcfd_exec = vertexcfd_test.vertexcfd_exec
- self.exodiff_exec = vertexcfd_test.exodiff_exec
- self.main_path = vertexcfd_test.main_path
- self.no_exodiff_file = None
-
- # Change working directory to test directory
- self.test_path = os.path.dirname(os.path.realpath(__file__))
- os.chdir(self.test_path)
-
- # teardown method for class
- @classmethod
- def teardown_class(self):
- """ teardown any state that was previously
- setup with a call to setup_class."""
- print('\n****************** Teardown class method ******************')
- # Change working directory back to main directory
- os.chdir(vertexcfd_test.main_path)
-
- # setup method for each function
- def setup_method(self):
- """ setup test."""
- print('\nSetup method')
- # Initialize input file, mesh file and output file names
- self.input_file = None
- self.mesh_file = None
- self.output_file = None
-
- # teardown method for each function
- def teardown_method(self):
- """ teardown test."""
- print('\nTeardown method')
- # Delete input file, mesh file and output file
- vertexcfd_test.clean_working_directory(self)
-
- #############################################################################
- #############################################################################
- #############################################################################
-
- # Check inlet conditions (velocity and temperature)
- def check_inlet_conditions(self, capfd):
- # Get captured test output for parsing
- fd_out, fd_err = capfd.readouterr()
-
- # Let pytest re-capture the output
- sys.stdout.write(fd_out)
- sys.stderr.write(fd_err)
-
- pattern = re.compile(' Inlet - velocity_0 = (.+)\n')
- vels = [float(t) for t in pattern.findall(fd_out)]
- pattern = re.compile(' Inlet - temperature = (.+)\n')
- temps = [float(t) for t in pattern.findall(fd_out)]
-
- # Expected velocity and temperature values
- vel_exp = [0.000600000000, 0.000600000000]
- temp_exp = [4.0, 4.047127939785872]
-
- # Assert values
- assert len(vels) == 2
- assert len(temps) == 2
-
- for i in range(0, 2):
- assert vels[i] == pytest.approx(vel_exp[i], rel=1.0e-8)
- assert temps[i] == pytest.approx(temp_exp[i], rel=1.0e-8)
-
- # Check probe values
- def check_probe_values(self, capfd):
- # Get captured test output for parsing
- fd_out, fd_err = capfd.readouterr()
-
- # Let pytest re-capture the output
- sys.stdout.write(fd_out)
- sys.stderr.write(fd_err)
-
- pattern = re.compile(' Probe Upper 1 - temperature = (.+)\n')
- pb1 = [float(t) for t in pattern.findall(fd_out)]
- pattern = re.compile(' Probe Upper 2 - temperature = (.+)\n')
- pb2 = [float(t) for t in pattern.findall(fd_out)]
- pattern = re.compile(' Probe Right 1 - temperature = (.+)\n')
- pb3 = [float(t) for t in pattern.findall(fd_out)]
-
- # Expected velocity and temperature values
- pb1_exp = [20.0, 20.65956051875808]
- pb2_exp = [20.0, 20.03234994314487]
- pb3_exp = [
- 20.0, 20.00184327050597, 20.00184327047455, 20.00184327047455
- ]
-
- # Assert values
- assert len(pb1) == 2
- assert len(pb2) == 2
- assert len(pb3) == 4
-
- for i in range(0, 2):
- assert pb1[i] == pytest.approx(pb1_exp[i], rel=1.0e-8)
- assert pb2[i] == pytest.approx(pb2_exp[i], rel=1.0e-8)
-
- for i in range(0, 4):
- assert pb3[i] == pytest.approx(pb3_exp[i], rel=1.0e-8)
-
- @pytest.mark.push
- @pytest.mark.incompressible
- def test_2d_flow(self):
- #### Parameters to edit for each function ####
- # Parameters for VertexCFD run
- self.input_file = "incompressible_2d_channel_periodic.xml"
- vertexcfd_options = ()
-
- # Parameters for exodiff executables
- exodiff_options = ()
-
- #### The following code should not be modified ####
- # Run VertexCFD and call exodiff to compare to gold file
- vertexcfd_test.run_test(self, vertexcfd_options, exodiff_options)
-
- @pytest.mark.push
- @pytest.mark.incompressible
- def test_2d_heated_flow(self, capfd):
- #### Parameters to edit for each function ####
- # Parameters for VertexCFD run
- self.input_file = "incompressible_2d_heated_channel.xml"
- vertexcfd_options = ()
-
- # Parameters for exodiff executables
- exodiff_options = ()
-
- #### The following code should not be modified ####
- # Run VertexCFD and call exodiff to compare to gold file
- vertexcfd_test.run_test(self, vertexcfd_options, exodiff_options)
-
- # Check surface-averaged values
- self.check_inlet_conditions(capfd)
-
- # Check probe values
- self.check_probe_values(capfd)
-
- @pytest.mark.daily
- @pytest.mark.incompressible
- def test_3d_flow(self):
- #### Parameters to edit for each function ####
- # Parameters for VertexCFD run
- self.input_file = "incompressible_3d_channel_periodic.xml"
- vertexcfd_options = ()
-
- # Parameters for exodiff executables
- exodiff_options = ()
-
- #### The following code should not be modified ####
- # Run VertexCFD and call exodiff to compare to gold file
- vertexcfd_test.run_test(self, vertexcfd_options, exodiff_options)
diff --git a/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/exodiff_file.txt b/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/exodiff_file.txt
deleted file mode 100644
index f382805..0000000
--- a/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/exodiff_file.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-DEFAULT TOLERANCE relative 1.E-8 absolute 1.E-7 floor 1.E-14
-COORDINATES absolute 1.E-12
-TIME STEPS absolute 1.E-10
-NODAL VARIABLES absolute 1.E-8
diff --git a/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_cuda_re_100_ha_100_p_1_solution.exo b/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_cuda_re_100_ha_100_p_1_solution.exo
deleted file mode 100644
index 80a7a26..0000000
--- a/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_cuda_re_100_ha_100_p_1_solution.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:19687bf2f2317bbef602e82ce76be7e3dff391a0ade0127afff2bbb8b04a2eeb
-size 3054729
diff --git a/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_cuda_re_100_ha_100_p_2_solution.exo b/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_cuda_re_100_ha_100_p_2_solution.exo
deleted file mode 100644
index 67891bb..0000000
--- a/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_cuda_re_100_ha_100_p_2_solution.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:bdd5575b572639601a54a0fe835bee7f560472c0cd0e93120467eda6e7c3e518
-size 3054729
diff --git a/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_cuda_re_100_ha_1_p_1_solution.exo b/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_cuda_re_100_ha_1_p_1_solution.exo
deleted file mode 100644
index cc54b94..0000000
--- a/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_cuda_re_100_ha_1_p_1_solution.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:44fee22de9a33ff53e7eab978f0fe3d3f29451e8f73188c36f61644914941d1b
-size 120329
diff --git a/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_cuda_re_100_ha_1_p_2_solution.exo b/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_cuda_re_100_ha_1_p_2_solution.exo
deleted file mode 100644
index 6faad60..0000000
--- a/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_cuda_re_100_ha_1_p_2_solution.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:42c1b54b1ac7dafb722b90d788a6a07421447499795fe90c0ba71b9ac16a63bd
-size 120329
diff --git a/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_re_100_ha_100_p_1_solution.exo b/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_re_100_ha_100_p_1_solution.exo
deleted file mode 100644
index 2f8addb..0000000
--- a/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_re_100_ha_100_p_1_solution.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b152c425f7ac87cbeae91e73a119216b346ea3ee069e536a993bf246094817db
-size 3326668
diff --git a/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_re_100_ha_100_p_2_solution.exo b/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_re_100_ha_100_p_2_solution.exo
deleted file mode 100644
index 289a411..0000000
--- a/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_re_100_ha_100_p_2_solution.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1d23e3e20a1bc59acee9969cc95f93963ff3c9760605bb98d886a442ce000994
-size 3326668
diff --git a/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_re_100_ha_1_p_1_solution.exo b/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_re_100_ha_1_p_1_solution.exo
deleted file mode 100644
index 895759b..0000000
--- a/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_re_100_ha_1_p_1_solution.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c5cc41cfac806cecee3735729ce01e80974ee6ab0c7b4f9fb5f526dc67b7d938
-size 129819
diff --git a/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_re_100_ha_1_p_2_solution.exo b/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_re_100_ha_1_p_2_solution.exo
deleted file mode 100644
index fceb4b6..0000000
--- a/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/gold/mhd_2d_hartmann_pb_periodic_insulating_re_100_ha_1_p_2_solution.exo
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:29fa41c77db59a2b854d1ec9c4fbf5afb7bf0388e8734fa07a9441c6dbc82054
-size 129819
diff --git a/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/test_hartmann_problem.py b/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/test_hartmann_problem.py
deleted file mode 100644
index b7ad072..0000000
--- a/regression_test/test_induction_less_mhd_solver/test_hartmann_problem/test_hartmann_problem.py
+++ /dev/null
@@ -1,159 +0,0 @@
-import sys
-import os
-import pytest
-
-import vertexcfd_test
-
-
-class TestHartmannProblem:
- # setup method for class
- @classmethod
- def setup_class(self):
- """ setup any state specific to the execution of the
- given class (which usually contains tests)."""
- print('\n***************** Setup class method *******************')
-
- # Class variables (to not change)
- self.mesh_file_path = vertexcfd_test.mesh_file_path
- self.input_file_path = vertexcfd_test.input_file_path
- self.vertexcfd_exec = vertexcfd_test.vertexcfd_exec
- self.exodiff_exec = vertexcfd_test.exodiff_exec
- self.main_path = vertexcfd_test.main_path
- self.no_exodiff_file = None
-
- # Change working directory to test directory
- self.test_path = os.path.dirname(os.path.realpath(__file__))
- os.chdir(self.test_path)
-
- # teardown method for class
- @classmethod
- def teardown_class(self):
- """ teardown any state that was previously
- setup with a call to setup_class."""
- print('\n****************** Teardown class method ******************')
- # Change working directory back to main directory
- os.chdir(vertexcfd_test.main_path)
-
- # setup method for each function
- def setup_method(self):
- """ setup test."""
- print('\nSetup method')
- # Initialize input file, mesh file and output file names
- self.input_file = None
- self.mesh_file = None
- self.output_file = None
-
- # teardown method for each function
- def teardown_method(self):
- """ teardown test."""
- print('\nTeardown method')
- # Delete input file, mesh file and output file
- vertexcfd_test.clean_working_directory(self)
-
- #############################################################################
- #############################################################################
- #############################################################################
- @pytest.mark.push
- @pytest.mark.weekly
- @pytest.mark.mhd
- @pytest.mark.gpu
- def test_2d_hartmann_problem(self, request):
- #### Parameters to edit for each function ####
- # CPU or GPU
- run_gpu = False
- markers = request.config.option.markexpr.split()
- if ('gpu' in markers):
- run_gpu = True
-
- # Set polynomial order based on marker: p = 1 on push and gpu, and p = 2 on weekly
- p = 1
- ha = 1
- if ('gpu' in markers and 'push' in markers):
- p = 2
- ha = 1
- elif ('gpu' in markers and 'weekly' in markers):
- p = 1
- ha = 100
- elif ('weekly' in markers):
- p = 2
- ha = 100
-
- # Parameters for VertexCFD run
- vertexcfd_options = ()
-
- # Input file and output file
- copy_xml_file = False
- base_input_file = "mhd_2d_hartmann_pb_periodic_insulating"
- if run_gpu:
- base_input_file += "_cuda"
- source_input_file = base_input_file + ".xml"
- name = "_re_100_ha_" + str(ha) + "_p_" + str(p)
- base_input_file = source_input_file.split(".xml")[0]
- self.input_file = base_input_file + name + ".xml"
- output_name = base_input_file + name + "_solution.exo"
-
- # Set parameter values
- momentum_source = None
- ext_magn_field = None
- nx = None
- ny = None
- if ha == 1:
- momentum_source = "{0.04194528049, 0.0}"
- ext_magn_field = "{0.0, 0.1, 0.0}"
- nx = 8
- ny = 32
- elif ha == 100:
- momentum_source = "{101.010101, 0.0}"
- ext_magn_field = "{0.0, 10.0, 0.0}"
- nx = 64
- ny = 256
-
- # Update parameters in input file
- xml_args_to_replace_list = []
-
- xml_args_to_replace_list.append(
- vertexcfd_test.xml_args_to_replace('Parameter', 'name',
- 'Exodus Output File',
- output_name))
-
- xml_args_to_replace_list.append(
- vertexcfd_test.xml_args_to_replace('Parameter', 'name',
- 'Momentum Source',
- momentum_source))
-
- xml_args_to_replace_list.append(
- vertexcfd_test.xml_args_to_replace(
- 'Parameter', 'name', 'External Magnetic Field Value',
- ext_magn_field))
-
- xml_args_to_replace_list.append(
- vertexcfd_test.xml_args_to_replace('Parameter', 'name',
- 'X Elements', nx))
-
- xml_args_to_replace_list.append(
- vertexcfd_test.xml_args_to_replace('Parameter', 'name',
- 'Y Elements', ny))
-
- xml_args_to_replace_list.append(
- vertexcfd_test.xml_args_to_replace('Parameter', 'name',
- 'Basis Order', p))
-
- xml_args_to_replace_list.append(
- vertexcfd_test.xml_args_to_replace('Parameter', 'name',
- 'Integration Order', 2 * p))
-
- vertexcfd_test.create_xml_file_from_base_file(self,
- source_input_file,
- xml_args_to_replace_list,
- restart=False)
-
- # Parameters for exodiff executables
- exodiff_options = ()
-
- #### The following code should not be modified ####
- # Run VertexCFD and call exodiff to compare to gold file
- vertexcfd_test.run_test(self,
- vertexcfd_options,
- exodiff_options,
- copy_xml_file,
- run_gpu=run_gpu)
diff --git a/regression_test/test_taylor_green_vortex/test_taylor_green_vortex.py b/regression_test/test_taylor_green_vortex/test_taylor_green_vortex.py
deleted file mode 100644
index 8a84e9e..0000000
--- a/regression_test/test_taylor_green_vortex/test_taylor_green_vortex.py
+++ /dev/null
@@ -1,155 +0,0 @@
-import sys
-import os
-import pytest
-
-import vertexcfd_test
-
-
-class TestTaylorGreenVortex:
- # setup method for class
- @classmethod
- def setup_class(self):
- """ setup any state specific to the execution of the
- given class (which usually contains tests)."""
- print('\n***************** Setup class method *******************')
-
- # Class variables (to not change)
- self.mesh_file_path = vertexcfd_test.mesh_file_path
- self.input_file_path = vertexcfd_test.input_file_path
- self.vertexcfd_exec = vertexcfd_test.vertexcfd_exec
- self.exodiff_exec = vertexcfd_test.exodiff_exec
- self.main_path = vertexcfd_test.main_path
- self.no_exodiff_file = None
-
- # Change working directory to test directory
- self.test_path = os.path.dirname(os.path.realpath(__file__))
- os.chdir(self.test_path)
-
- # Gold values for L1/L2 error norms
- self.ref_error_norms = [[
- None,
- [
- 3.1354940494154192e-03, 4.8827471008265188e-03,
- 4.8827471008264806e-03
- ],
- [
- 6.1898331388840358e-04, 9.5931336430924428e-04,
- 9.5931336430924038e-04
- ]
- ],
- [
- None,
- [
- 7.2363659991042098e-04,
- 1.0898079401035921e-03,
- 1.0898079401035173e-03
- ],
- [
- 1.4131616203283908e-04,
- 2.1968921759816913e-04,
- 2.1968921759815726e-04
- ]
- ],
- [
- None,
- [
- 1.1253018483846534e-04,
- 1.8455771918065726e-04,
- 1.8455771918063306e-04
- ],
- [
- 2.2227805982151793e-05,
- 4.0783845770510348e-05,
- 4.0783845770502603e-05
- ]
- ]]
-
- # teardown method for class
- @classmethod
- def teardown_class(self):
- """ teardown any state that was previously
- setup with a call to setup_class."""
- print('\n****************** Teardown class method ******************')
- # Change working directory back to main directory
- os.chdir(vertexcfd_test.main_path)
-
- # setup method for each function
- def setup_method(self):
- """ setup test."""
- print('\nSetup method')
- # Initialize input file, mesh file and output file names
- self.input_file = None
- self.mesh_file = None
- self.output_file = None
-
- # teardown method for each function
- def teardown_method(self):
- """ teardown test."""
- print('\nTeardown method')
- # Delete input file, mesh file and output file
- #vertexcfd_test.clean_working_directory(self)
-
- #############################################################################
- #############################################################################
- #############################################################################
- @pytest.mark.push
- @pytest.mark.daily
- @pytest.mark.weekly
- @pytest.mark.incompressible
- def test_2d_mesh_convergence_laminar(self, request, capfd):
- #### Parameters to edit for each function ####
- # Parameters for VertexCFD run
- copy_xml_file = False
- restart = False
- exodiff_options = None
- base_input_file = "incompressible_2d_taylor_green_vortex"
- final_time = 50
- source_input_file = base_input_file + ".xml"
-
- # Parameters for mesh convergence study
- mark_expr = request.config.option.markexpr
- xy_list = [20]
- if (mark_expr == 'weekly'):
- xy_list = [20, 40]
- elif (mark_expr == 'weekly'):
- xy_list = [20, 40, 80]
- errors = []
-
- # Loop over all elements of 'xy_list'
- for i in range(0, len(xy_list)):
- xy = xy_list[i]
- self.input_file = base_input_file + "_" + str(
- final_time) + "_" + str(final_time) + "_" + str(xy) + ".xml"
- output_name = base_input_file + "_" + str(final_time) + "_" + str(
- xy) + "_solution.exo"
-
- xml_args_to_replace_list = []
- xml_args_to_replace_list.append(
- vertexcfd_test.xml_args_to_replace('Parameter', 'name',
- 'X Elements', xy))
- xml_args_to_replace_list.append(
- vertexcfd_test.xml_args_to_replace('Parameter', 'name',
- 'Y Elements', xy))
- xml_args_to_replace_list.append(
- vertexcfd_test.xml_args_to_replace('Parameter', 'name',
- 'Final Time', final_time))
- xml_args_to_replace_list.append(
- vertexcfd_test.xml_args_to_replace('Parameter', 'name',
- 'Exodus Output File',
- output_name))
-
- vertexcfd_test.create_xml_file_from_base_file(
- self, source_input_file, xml_args_to_replace_list, restart)
-
- # Clear replacing parameter list
- xml_args_to_replace_list.clear()
-
- vertexcfd_options = ()
-
- # Run VertexCFD (note that there is no comparison to gold file here)
- vertexcfd_test.run_test(self, vertexcfd_options, exodiff_options,
- copy_xml_file)
-
- # Compare error norms to gold values
- vertexcfd_test.compare_error_norms(self.ref_error_norms[i], capfd,
- 1.0e-10)
diff --git a/regression_test/vertexcfd_test.py.in b/regression_test/vertexcfd_test.py.in
deleted file mode 100644
index 622b21e..0000000
--- a/regression_test/vertexcfd_test.py.in
+++ /dev/null
@@ -1,552 +0,0 @@
-import os
-import sys
-import shutil
-import subprocess
-import glob
-import xml.etree.ElementTree as ET
-from collections import namedtuple
-import json
-import math
-import pytest
-import re
-
-##############################################
-############## Global variables ##############
-##############################################
-
-#### User dependent variables ####
-# List objects to store executables and paths
-exec_list_check = []
-path_list_check = []
-
-# Absolute path with exodiff executable (Make sure to use the same Trilinos
-# path as in the CMake file for consistency), and path to Workbench directory
-exodiff_exec = "@EXODIFF_PATH@"
-exec_list_check.append(exodiff_exec)
-
-### Variables that should not be modified ####
-
-# Main working directory
-main_path = os.path.dirname(os.path.realpath(__file__))
-path_list_check.append(main_path)
-parent_main_path = os.path.normpath(os.path.join(main_path, os.pardir))
-
-# Absolute path with mesh files
-mesh_file_path = "examples"
-mesh_file_path = os.path.join(parent_main_path, mesh_file_path)
-path_list_check.append(mesh_file_path)
-
-# Absolute path with input files
-input_file_path = "examples"
-input_file_path = os.path.join(parent_main_path, input_file_path)
-path_list_check.append(input_file_path)
-
-# Absolute path with VertexCFD executable
-vertexcfd_exec = os.path.join(parent_main_path, "src/vertexcfd")
-exec_list_check.append(vertexcfd_exec)
-
-# Declare tuples that is used to substitute values in XML files.
-# Defaults are give right-to-left, so optional entries appear on
-# the right and 'parent' is the only optional entry.
-xml_args_to_replace = namedtuple(
- 'xml_args_to_replace',
- ('tag', 'attribute', 'attribute_entry', 'new_value', 'parent'),
- defaults=('', ))
-
-# Check if all executables are valid
-for exec in exec_list_check:
- if not os.access(exec, os.X_OK):
- print(f"Error: executable {exec} is not valid.")
-
-# Check if all paths are valid
-for d in path_list_check:
- if not os.path.exists(d):
- raise FileNotFoundError(f"{d} folder does not exist!")
-
-# Output variables
-print(
- "\n\n============================= Global variables ============================="
-)
-print("Mesh file absolute path: ", mesh_file_path)
-print("Input file absolute path: ", input_file_path)
-print("VertexCFD executable absolute path: ", vertexcfd_exec)
-print("Exodiff executable absolute path: ", exodiff_exec)
-print(
- "=============================================================================\n"
-)
-
-##############################################
-############## Global functions ##############
-##############################################
-
-
-# Search a value in a XML file and return value if found, 'None' else.
-def search_value_through_xml_file(xml, tag, attribute, key_word):
- # find all tags with key word 'key_word'
- keyword_list = xml.findall(f'.//{tag}[@{attribute}="{key_word}"]')
- # Extract all entries and store them in a list to return. If empty,
- # 'None' is returned.
- if keyword_list:
- return [entry.get('value') for entry in keyword_list]
-
-
-# Find all tags with attribute="value" and set new_attribute="new_value".
-# If parent is provided, only find tags within a with name="parent".
-def modify_xml_tag(xml,
- name,
- attribute,
- value,
- new_attribute,
- new_value,
- parent=''):
- """
- Find all tags with attribute="value" and set new_attribute="new_value".
- If parent is provided, only find tags within a with name="parent".
- """
- if parent:
- parent = f'ParameterList[@name="{parent}"]/'
- tags = xml.findall(f'.//{parent}{name}[@{attribute}="{value}"]')
- if tags:
- for tag in tags:
- tag.set(new_attribute, str(new_value))
- else:
- raise Exception(f'Tag <{tag}> with {attribute}="{value}" not found.')
-
-
-# Read XML file
-def read_xml_from_file(file_name):
- return ET.parse(file_name)
-
-
-# Write XML data to a XML file
-def write_xml_to_file(xml, file_name):
- xml.write(file_name)
-
-
-# To handle restart capabilities: this function will set the `Read Restart File` to True
-# and will add the restart file to the XML input file to read from.
-def read_restart_file(self, xml_args_to_replace_list):
- restart_dir = "restart"
- # Look for a `restart_dir` directory in the test directory
- if not os.path.isdir(restart_dir):
- msg = "The restart directory {} could not be find in the test directory."
- sys.exit(msg.format(restart_dir))
-
- # Check if the `restart_dir` directory contains the restart files needed
- base = self.input_file.split(".xml")[0]
- data_file = base + "_read.data"
- dofmap_file = base + "_read.dofmap"
- if not os.path.isfile(os.path.join(restart_dir, data_file)):
- msg = "The restart directory does not contain the restart file {}."
- sys.exit(msg.format(data_file))
- if not os.path.isfile(os.path.join(restart_dir, dofmap_file)):
- msg = "The restart directory does not contain the restart file {}."
- sys.exit(msg.format(dofmap_file))
-
- # Set `Read Restart File` to `True`
- xml_args_to_replace_list.append(
- xml_args_to_replace('Parameter', 'name', 'Read Restart', 'true'))
-
- # Append parameters to the list of entries to modify in the XML file
- data_file_path = os.path.join(restart_dir, data_file)
- xml_args_to_replace_list.append(
- xml_args_to_replace('Parameter', 'name', 'Restart Data File Name',
- data_file_path))
-
- dofmap_file_path = os.path.join(restart_dir, dofmap_file)
- xml_args_to_replace_list.append(
- xml_args_to_replace('Parameter', 'name', 'Restart DOF Map File Name',
- dofmap_file_path))
-
-
-# Generate a input file mesh from a base file XML input file by
-# searching all entries in 'list_old_value' and replacing them with 'list_new_value'.
-def create_xml_file_from_base_file(self,
- base_input_file,
- xml_args_to_replace_list,
- restart=False):
- # Read base input file
- new_xml = read_xml_from_file(
- os.path.join(self.input_file_path, base_input_file))
-
- # If restart is set to True, add restart entries to `xml_args_to_replace_list`
- if restart:
- read_restart_file(self, xml_args_to_replace_list)
-
- # Loop over different parameters
- for replacement_args in xml_args_to_replace_list:
- tag = replacement_args.tag
- if replacement_args.tag == "Parameter":
- new_attribute = "value"
- elif replacement_args.tag == "Parameter name":
- tag = "Parameter"
- new_attribute = "name"
- elif replacement_args.tag == "ParameterList":
- new_attribute = "name"
- else:
- print(
- "Error: the tag name should be either 'Parameter' "
- "(to change the value of a parameter entry), "
- "'Parameter name' (to change the name of a parameter), "
- "or 'ParameterList' (to change the name of a parameter list).")
- sys.exit()
-
- modify_xml_tag(new_xml, tag, replacement_args.attribute,
- replacement_args.attribute_entry, new_attribute,
- replacement_args.new_value, replacement_args.parent)
-
- # Write new input file
- write_xml_to_file(new_xml, self.input_file)
-
-
-# Delete file by name
-def delete_file(self, file_name):
- if os.path.exists(file_name):
- try:
- os.remove(file_name)
- except OSError as e:
- print("Error: cannot delete %s : %s" % (file_name, e.strerror))
- raise e
- else:
- print("File %s does not exist in %s." % (file_name, self.test_path))
-
-
-# Copy file to a given path
-def copy_file(file_path, file_name, dest_path):
- shutil.copy(os.path.join(file_path, file_name), dest_path)
-
-
-# Get input file name, mesh type and mesh file, and output file name
-def setup_input_file(self, copy_xml_file):
- # Check if working directory contains an 'exodiff_file.txt' file. If not
- # use the default one.
- exodiff_file = "exodiff_file.txt"
- if not (os.path.isfile(exodiff_file)):
- self.no_exodiff_file = True
- shutil.copy(os.path.join(self.main_path, exodiff_file), self.test_path)
- else:
- self.no_exodiff_file = False
-
- # Copy XML file to working directory
- if copy_xml_file:
- copy_file(self.input_file_path, self.input_file, self.test_path)
-
- # Read in input file
- xml = read_xml_from_file(self.input_file)
-
- # Extract Exodus filenames from XML file
- self.output_file = search_value_through_xml_file(xml, 'Parameter', 'name',
- 'Exodus Output File')[0]
-
- mesh_input_type = search_value_through_xml_file(xml, 'Parameter', 'name',
- 'Mesh Input Type')[0]
- if mesh_input_type == "Inline":
- self.mesh_file = "Inline"
- else:
- self.mesh_file = search_value_through_xml_file(xml, 'Parameter',
- 'name', 'File Name')[0]
-
- # Copy mesh file to working directory if not Inline mesh type
- if not self.mesh_file == "Inline":
- try:
- shutil.copy(os.path.join(self.mesh_file_path, self.mesh_file),
- self.test_path)
- except OSError as e:
- print("Error: cannot copy %s : %s" % (self.mesh_file, e.strerror))
-
-
-# Copy files of failed regression tests to an artifact directory
-def copy_file_artifact_directory(self, exodiff_step):
- print("\n\nMove files to artifact directory:")
- # Create sub-working directory in the artifact directory
- test_dir_name = os.path.basename(os.path.normpath(self.test_path))
- test_dir_name = os.path.join("regression_failures", test_dir_name)
- fail_test_path = os.path.join(parent_main_path, test_dir_name)
- os.makedirs(fail_test_path, exist_ok=True)
- # List of files to move (XML, exodiff_test.txt and Exodus solution files)
- file_list = [self.input_file, self.output_file]
- if exodiff_step:
- file_list.append(self.output_file.rstrip(".exo") + "_diff.exo")
- file_list.append("exodiff_file.txt")
- # Copy files to artifact directory
- for f in file_list:
- new_f = os.path.join(fail_test_path, f)
- if os.path.isfile(new_f):
- os.remove(new_f)
- old_f = os.path.join(self.test_path, f)
- if os.path.isfile(old_f):
- shutil.copy(old_f, new_f)
- print(f" Copied file {old_f}.")
- print("\n\n")
-
-
-# Function to call subprocess run
-def subprocess_run(command):
- subprocess.run(command, shell=False, stderr=subprocess.STDOUT, check=True)
-
-
-# Run VertexCFD code
-def run_vertexcfd(self, vertexcfd_options, run_serial, run_gpu):
- # Build command to run VertexCFD (same command for Tpetra and Epetra linear algebra solver)
- command = ["mpirun"]
- if not run_gpu:
- command.append("--map-by")
- if not run_serial:
- command.append(os.environ.get("MAP_STRING"))
- else:
- command.append("ppr:1:node:pe=1")
- else:
- command.extend(["-np", "2"])
- command.append(self.vertexcfd_exec)
- command.append("--i=" + self.input_file)
- # vertexcfd_options is an empty list by default
- command.extend(vertexcfd_options)
- # Run VertexCFD
- try:
- subprocess_run(command)
- except Exception:
- copy_file_artifact_directory(self, exodiff_step=False)
- raise
-
-
-# Build the exodiff command to be exectuted to compare the gold
-# file and the solution file. It will create a `diff` file if
-# `create_diff` is set to True.
-def build_exodiff_command(self, exodiff_options, create_diff):
- # Parameters
- file_name = "exodiff_file.txt"
- test_output_file = self.output_file
- gold_output_file = getattr(self, 'gold_file', self.output_file)
- test_gold_path = os.path.join(self.test_path, "gold")
- base_file = self.output_file.rstrip(".exo")
- # Build command to run exodiff
- command = [self.exodiff_exec]
- command.extend(exodiff_options)
- if not create_diff:
- command.append("-file")
- command.append(os.path.join(self.test_path, file_name))
- command.append(os.path.join(self.test_path, test_output_file))
- command.append(os.path.join(test_gold_path, gold_output_file))
- if create_diff:
- command.append(os.path.join(self.test_path, base_file + "_diff.exo"))
- return command
-
-
-# Run 'exodiff' executable. 'create_diff' adds a third Exodus file
-# to compute the difference between the gold file and the solution file.
-def run_exodiff(self, exodiff_options):
- # Run exodiff
- try:
- # Assemble exodiff command line
- command = build_exodiff_command(self,
- exodiff_options,
- create_diff=False)
- subprocess_run(command)
- except:
- # Assemble command line to create a `diff` Exodus file from
- # the `exodiff` executable
- command = build_exodiff_command(self,
- exodiff_options,
- create_diff=True)
- try:
- subprocess_run(command)
- except:
- print("Warning: failed to create solution diff file")
-
- # Copy files to artifact directory and re-raise error
- copy_file_artifact_directory(self, exodiff_step=True)
- raise
-
-
-# Clean working directory by deleting input file, output file,
-# mesh file and exodiff file if any.
-def clean_working_directory(self):
- print("\nClean working directory:")
- # List of files to remove (always present in working directory)
- file_list_remove = [self.input_file]
- file_list_remove.append(self.output_file)
- # Remove file in 'file_list_remove'
- for file in file_list_remove:
- delete_file(self, file)
-
- # Remove exodiff file
- if self.no_exodiff_file:
- exodiff_file = "exodiff_file.txt"
- delete_file(self, exodiff_file)
-
- # Remove Exodus file (mesh file) if not Inline mesh type
- if not self.mesh_file == "Inline":
- delete_file(self, self.mesh_file)
-
- # Remove block of files with same format
- block_list_remove = ['*.data']
- block_list_remove.append('*.dofmap')
-
- for block in block_list_remove:
- file_list = glob.glob(block)
- for file_name in file_list:
- delete_file(self, file_name)
-
-
-# Run test by calling all above functions
-def run_test(self,
- vertexcfd_options,
- exodiff_options,
- copy_xml_file=True,
- run_serial=False,
- run_gpu=False):
- # Get input file, mesh file and output file
- setup_input_file(self, copy_xml_file)
-
- # Run VertexCFD job
- run_vertexcfd(self, vertexcfd_options, run_serial, run_gpu)
-
- # Check against gold file using exodiff. NOTE: 'command' has to be passed
- # as a string here with shell=True to get it to run.
- if (exodiff_options is not None):
- run_exodiff(self, exodiff_options)
-
-
-# Assert two JSON files (output file and gold file)
-def assert_json_files(self, gold_file_path):
- # Read in output json file
- with open(self.output_file, "r") as f:
- json_file = json.loads(f.read())
-
- # Read in gold json file
- with open(gold_file_path, "r") as g:
- gold_json_file = json.loads(g.read())
-
- # Assert json files
- assert json_file == gold_json_file
-
-
-# Compute convergence order
-def convergence_order(error1, error2, ncell1, ncell2):
- return math.log((error1 / error2), (ncell2 / ncell1))
-
-
-# Compare convergence order between reference and vertexcfd result
-def compare_convergence(error1,
- error2,
- reference,
- num1,
- num2,
- rel_tol=1e-12,
- abs_tol=0.0):
- for p in (1, 2):
- for err1, err2, ref in zip(error1[p], error2[p], reference[p]):
- assert ref == pytest.approx(convergence_order(
- err1, err2, num1, num2),
- rel=rel_tol,
- abs=abs_tol)
-
-
-# Compare error norms between expected value and vertexcfd result
-def compare_error_norms(expected, capfd, rel_tol=1e-12, abs_tol=0.0):
-
- # Get captured test output for parsing
- fd_out, fd_err = capfd.readouterr()
-
- # Let pytest re-capture the output
- sys.stdout.write(fd_out)
- sys.stderr.write(fd_err)
-
- num_expected = len(expected[1])
-
- # Regular expression for the final integrated error norms header.
- # This will capture the order of the norm.
- header_pattern = r'^Final (?:Temporal/)?Spatial Integrated L([12]) Error Norms:'
- # Regular expression for a single error norm, capturing value.
- error_pattern = r'\n \w+ = (.+)'
- # Combine to capture the expected number of error norms.
- pattern = re.compile(header_pattern + error_pattern * num_expected,
- re.MULTILINE)
-
- errors = [None] * 3
- for p, *err in pattern.findall(fd_out):
- p = int(p)
- errors[p] = [float(i) for i in err]
-
- # Compare L1, L2 Error Norm with expected values
- for p in (1, 2):
- for err, exp in zip(errors[p], expected[p]):
- if exp == 0.0:
- assert err == pytest.approx(exp, abs=1e-12)
- else:
- assert err == pytest.approx(exp, rel=rel_tol, abs=abs_tol)
-
- return errors
-
-
-# Log-log plot of L1/L2 error norms with number of cells
-def error_norm_plot(comp_error, ref_error, comp_ncell, ref_ncell, head_string,
- coordinate):
- import matplotlib.pyplot as plt
-
- font = {
- 'size': 16,
- }
-
- # Plot label function
- def label(var):
- return r'$\left\Vert {0} - \overline{{{0}}}\right\Vert^{{p=1,2}}$'.format(
- var)
-
- # Reorganize data.
- L1_comp_error = [row[1] for row in comp_error]
- L2_comp_error = [row[2] for row in comp_error]
- L1_ref_error = [row[1] for row in ref_error]
- L2_ref_error = [row[2] for row in ref_error]
-
- nvar = len(L1_comp_error[0])
-
- L1_comp = []
- L2_comp = []
- L1_ref = []
- L2_ref = []
- for i in range(nvar):
- L1_comp.append([row[i] for row in L1_comp_error])
- L2_comp.append([row[i] for row in L2_comp_error])
- L1_ref.append([row[i] for row in L1_ref_error])
- L2_ref.append([row[i] for row in L2_ref_error])
-
- # variale and file names
- var_name = [0] * nvar
- file_name = [0] * nvar
-
- var_name[0] = label(r'\rho')
- var_name[1] = label(r'\rho E')
- file_name[0] = 'rho.png'
- file_name[1] = 'rhoE.png'
- if coordinate == 'Cartesian':
- var_name[2] = label(r'\rho U_x')
- var_name[3] = label(r'\rho U_y')
- file_name[2] = 'rhoU_x.png'
- file_name[3] = 'rhoU_y.png'
- if nvar == 5:
- var_name[nvar - 1] = label(r'\rho U_z')
- file_name[nvar - 1] = 'rhoU_z.png'
- elif coordinate == 'RZ':
- var_name[2] = label(r'\rho U_r')
- var_name[3] = label(r'\rho U_z')
- file_name[2] = 'rhoU_r.png'
- file_name[3] = 'rhoU_z.png'
- if nvar == 5:
- var_name[nvar - 1] = label(r'\rho U_\theta')
- file_name[nvar - 1] = 'rhoU_theta.png'
-
- # Plot L1/L2 errors for each variables
- for i in range(nvar):
- if (L1_ref[i][0] == 0.0 or L2_ref[i][0] == 0.0):
- continue
- plt.loglog(ref_ncell, L1_ref[i], 'ro-', label='L1 ref error')
- plt.loglog(ref_ncell, L2_ref[i], 'r^-', label='L2 ref error')
- plt.loglog(comp_ncell, L1_comp[i], 'bo-', label='L1 comp error')
- plt.loglog(comp_ncell, L2_comp[i], 'b^-', label='L2 comp error')
- plt.ylabel(var_name[i], fontdict=font)
- plt.xlabel('N', fontdict=font)
- plt.xlim([ref_ncell[0] / 2, ref_ncell[-1] * 2])
- plt.legend(loc='upper right')
- plt.savefig(head_string + file_name[i])
- plt.close()
diff --git a/src/boundary_conditions/VertexCFD_BCStrategy_BoundaryFluxBase.cpp b/src/boundary_conditions/VertexCFD_BCStrategy_BoundaryFluxBase.cpp
deleted file mode 100644
index bd06967..0000000
--- a/src/boundary_conditions/VertexCFD_BCStrategy_BoundaryFluxBase.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "utils/VertexCFD_Utils_ExplicitTemplateInstantiation.hpp"
-
-#include "VertexCFD_BCStrategy_BoundaryFluxBase.hpp"
-#include "VertexCFD_BCStrategy_BoundaryFluxBase_impl.hpp"
-
-VERTEXCFD_INSTANTIATE_TEMPLATE_CLASS_EVAL_NUMSPACEDIM(
- VertexCFD::BoundaryCondition::BoundaryFluxBase)
diff --git a/src/boundary_conditions/VertexCFD_BCStrategy_BoundaryFluxBase.hpp b/src/boundary_conditions/VertexCFD_BCStrategy_BoundaryFluxBase.hpp
deleted file mode 100644
index e764c03..0000000
--- a/src/boundary_conditions/VertexCFD_BCStrategy_BoundaryFluxBase.hpp
+++ /dev/null
@@ -1,128 +0,0 @@
-#ifndef VERTEXCFD_BOUNDARYCONDITION_BOUNDARYFLUXBASE_HPP
-#define VERTEXCFD_BOUNDARYCONDITION_BOUNDARYFLUXBASE_HPP
-
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include
-#include
-
-#include
-
-namespace VertexCFD
-{
-namespace BoundaryCondition
-{
-//---------------------------------------------------------------------------//
-template
-class BoundaryFluxBase : public panzer::BCStrategy,
- public panzer::GlobalDataAcceptorDefaultImpl,
- public panzer::EvaluatorWithBaseImpl
-{
- public:
- // Space dimension
- static constexpr int num_space_dim = NumSpaceDim;
-
- BoundaryFluxBase(const panzer::BC& bc,
- const Teuchos::RCP& global_data);
-
- virtual void setup(const panzer::PhysicsBlock& side_pb,
- const Teuchos::ParameterList& user_data)
- = 0;
-
- virtual void buildAndRegisterEvaluators(
- PHX::FieldManager& fm,
- const panzer::PhysicsBlock& side_pb,
- const panzer::ClosureModelFactory_TemplateManager& factory,
- const Teuchos::ParameterList& models,
- const Teuchos::ParameterList& user_data) const
- = 0;
-
- virtual void buildAndRegisterScatterEvaluators(
- PHX::FieldManager& fm,
- const panzer::PhysicsBlock& side_pb,
- const panzer::LinearObjFactory& lof,
- const Teuchos::ParameterList& user_data) const
- = 0;
-
- virtual void buildAndRegisterGatherAndOrientationEvaluators(
- PHX::FieldManager& fm,
- const panzer::PhysicsBlock& side_pb,
- const panzer::LinearObjFactory& lof,
- const Teuchos::ParameterList& user_data) const
- = 0;
-
- virtual void postRegistrationSetup(typename panzer::Traits::SetupData d,
- PHX::FieldManager& vm)
- = 0;
-
- virtual void evaluateFields(typename panzer::Traits::EvalData d) = 0;
-
- // Local members
- void initialize(const panzer::PhysicsBlock& side_pb,
- std::unordered_map& dof_eq_map);
-
- auto getIntegrationBasis(const panzer::PhysicsBlock& side_pb,
- const std::string& dof_name) const;
-
- void registerDOFsGradient(PHX::FieldManager& fm,
- const panzer::PhysicsBlock& side_pb,
- const std::string& dof_name) const;
-
- void registerSideNormals(PHX::FieldManager& fm,
- const panzer::PhysicsBlock& side_pb) const;
-
- void registerConvectionTypeFluxOperator(
- std::pair dof_eq_pair,
- std::unordered_map>& eq_vct_map,
- const std::string& closure_name,
- PHX::FieldManager& fm,
- const panzer::PhysicsBlock& side_pb,
- const double& multiplier) const;
-
- void registerPenaltyAndViscousGradientOperator(
- std::pair dof_eq_pair,
- PHX::FieldManager& fm,
- const panzer::PhysicsBlock& side_pb,
- const Teuchos::ParameterList& user_params) const;
-
- void registerViscousTypeFluxOperator(
- std::pair dof_eq_pair,
- std::unordered_map>& eq_vct_map,
- const std::string closure_name,
- PHX::FieldManager& fm,
- const panzer::PhysicsBlock& side_pb,
- const double& multiplier) const;
-
- void registerResidual(
- std::pair dof_eq_pair,
- std::unordered_map>& eq_vct_map,
- PHX::FieldManager& fm,
- const panzer::PhysicsBlock& side_pb) const;
-
- void registerScatterOperator(
- std::pair dof_eq_pair,
- PHX::FieldManager& fm,
- const panzer::PhysicsBlock& side_pb,
- const panzer::LinearObjFactory& lof) const;
-
- auto integrationRule() const { return _ir; }
-
- protected:
- std::unordered_map bnd_prefix;
-
- private:
- int _integration_order;
- Teuchos::RCP _ir;
-};
-
-//---------------------------------------------------------------------------//
-
-} // end namespace BoundaryCondition
-} // end namespace VertexCFD
-
-#endif // end VERTEXCFD_BOUNDARYCONDITION_BOUNDARYFLUXBASE_HPP
diff --git a/src/boundary_conditions/VertexCFD_BCStrategy_BoundaryFluxBase_impl.hpp b/src/boundary_conditions/VertexCFD_BCStrategy_BoundaryFluxBase_impl.hpp
deleted file mode 100644
index 162bf3d..0000000
--- a/src/boundary_conditions/VertexCFD_BCStrategy_BoundaryFluxBase_impl.hpp
+++ /dev/null
@@ -1,347 +0,0 @@
-#ifndef VERTEXCFD_BOUNDARYCONDITION_BOUNDARYFLUXBASE_IMPL_HPP
-#define VERTEXCFD_BOUNDARYCONDITION_BOUNDARYFLUXBASE_IMPL_HPP
-
-#include "VertexCFD_BoundaryState_ViscousGradient.hpp"
-#include "VertexCFD_BoundaryState_ViscousPenaltyParameter.hpp"
-#include "VertexCFD_Integrator_BoundaryGradBasisDotVector.hpp"
-
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include
-#include
-
-#include