Skip to content

Commit a05fee4

Browse files
committed
Adding VandV structure
1 parent 7ccc12a commit a05fee4

36 files changed

Lines changed: 321 additions & 1 deletion

_config.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,14 @@ defaults:
6464
seo:
6565
type: "WebPage"
6666

67+
- scope:
68+
path: _vandv
69+
type: vandv
70+
values:
71+
layout: vandv
72+
sectionid: vandv
73+
seo:
74+
type: "WebPage"
6775
collections:
6876
docs:
6977
permalink: /:collection/:path/
@@ -74,6 +82,9 @@ collections:
7482
tutorials:
7583
permalink: /:collection/:path/
7684
output: true
85+
vandv:
86+
permalink: /:collection/:path/
87+
output: true
7788
posts:
7889
permalink: /blog/:year/:month/:day/:title/
7990
output: true

_data/vandv.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
- title: Validation and Verification Suite
2+
vandv:
3+
- home
4+
5+
- title: Method of Manufactured Solutions
6+
vandv:
7+
- DG_UnitQuad
8+
- FVM_Incomp_Euler
9+
- FVM_Incomp_Navier_Stokes
10+
- FVM_Navier_Stokes
11+

_includes/head.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
<link rel="stylesheet" href="{{ "/css/font-awesome.min.css" | prepend: site.baseurl }}">
2020

2121
<link rel="shortcut icon" href="{{ "/favicon.ico?1" | prepend: site.baseurl }}">
22-
{% seo %}
2322

2423
<link rel="canonical" href="{{ page.url | replace:'index.html','' | prepend: site.baseurl | prepend: site.url }}">
2524
<link rel="alternate" type="application/rss+xml" title="{{ site.title }}" href="{{ "/feed.xml" | prepend: site.baseurl | prepend: site.url }}" />

_includes/vandv_nav.html

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
2+
{% for section in site.data.vandv %}
3+
<div class="panel panel-default">
4+
<div class="panel-heading">
5+
<h4 class="panel-title">
6+
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse-{{forloop.index}}" aria-expanded="false" aria-controls="collapse-{{forloop.index}}">
7+
{{ section.title }}
8+
</a>
9+
</h4>
10+
</div>
11+
<div id="collapse-{{forloop.index}}" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOne">
12+
<ul class="list-group">
13+
{% for item in section.vandv %}
14+
{% assign item_url = item | prepend:"/vandv/" | append:"/" %}
15+
{% assign p = site.vandv | where:"url", item_url | first %}
16+
<a class="list-group-item {% if item_url == page.url %}active{% endif %}" href="{{ p.url | prepend: site.baseurl }}">{{ p.title }}</a>
17+
{% endfor %}
18+
</ul>
19+
</div>
20+
</div>
21+
{% endfor %}
22+
</div>

_includes/vandv_section_nav.html

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
{% comment %}
2+
Map grabs the doc sections, giving us an array of arrays. Join, flattens all
3+
the items to a comma delimited string. Split turns it into an array again.
4+
{% endcomment %}
5+
{% assign vandv = site.data.vandv | map: 'vandv' | join: ',' | split: ',' %}
6+
7+
{% comment %}
8+
Because this is built for every page, lets find where we are in the ordered
9+
document list by comparing url strings. Then if there's something previous or
10+
next, lets build a link to it.
11+
{% endcomment %}
12+
13+
{% for document in vandv %}
14+
{% assign document_url = document | prepend:"/vandv/" | append:"/" %}
15+
{% if document_url == page.url %}
16+
<ul class="pager">
17+
{% if forloop.first %}
18+
<li class="previous disabled">
19+
<a>
20+
<span aria-hidden="true">&larr;</span> Previous
21+
</a>
22+
</li>
23+
{% else %}
24+
{% assign previous = forloop.index0 | minus: 1 %}
25+
{% assign previous_page = vandv[previous] | prepend:"/vandv/" | append:"/" %}
26+
<li class="previous">
27+
<a href="{{ previous_page | prepend: site.baseurl }}">
28+
<span aria-hidden="true">&larr;</span> Previous
29+
</a>
30+
</li>
31+
{% endif %}
32+
33+
{% if forloop.last %}
34+
<li class="next disabled">
35+
<a>
36+
Next <span aria-hidden="true">&rarr;</span>
37+
</a>
38+
</li>
39+
{% else %}
40+
{% assign next = forloop.index0 | plus: 1 %}
41+
{% assign next_page = vandv[next] | prepend:"/vandv/" | append:"/" %}
42+
<li class="next">
43+
<a href="{{ next_page | prepend: site.baseurl }}">
44+
Next <span aria-hidden="true">&rarr;</span>
45+
</a>
46+
</li>
47+
{% endif %}
48+
</div>
49+
<div class="clear"></div>
50+
{% break %}
51+
{% endif %}
52+
{% endfor %}

_layouts/vandv.html

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
layout: default
3+
---
4+
5+
<div class="container">
6+
<div class="row">
7+
<div class="col-md-4">
8+
{% include vandv_nav.html %}
9+
</div>
10+
11+
<div class="col-md-8">
12+
<h1>{{ page.title }}</h1>
13+
<div id="markdown-content-container">{{ content }}</div>
14+
<p class="text-center">
15+
<br />
16+
<a target="_blank" href="{{site.git_edit_address}}/{{ page.path }}" class="btn btn-default githubEditButton" role="button">
17+
<i class="fa fa-pencil fa-lg"></i> Improve this page
18+
</a>
19+
</p>
20+
<hr>
21+
{% include vandv_section_nav.html %}
22+
</div>
23+
24+
</div>
25+
</div>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
title: Method of Manufactured Solutions (MMS) for Incompressible Euler
3+
permalink: /vandv/FVM_Incomp_Euler/
4+
---
5+
6+
The compute_order_of_accuracy.py script drives the other files in this folder. Simply set the number of ranks on which to run the cases by modifying the 'nRank' variable at the top of the script and then execute with:
7+
8+
$ compute_order_of_accuracy.py
9+
10+
The script will automatically generate the required meshes and executed SU2 solutions for up to four different cases on those meshes for comparison. Four config files are provided, but you can modify them or add new ones. Simply change the config files listed at the top of the compute_order_of_accuracy.py script. Postprocessing is also automatically performed by the script, including the creation of figures for global error vs relative grid size and observed order of accuracy vs relative grid size.
11+
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<p>The level of automation is significantly less than for the Finite Volume solver for this test case. The reason is that DG solver requires more monitoring to check the convergence. Below the steps are described how to run this test case.</p>
2+
3+
<p>Step 1: Create the grid composed out of quadrilateral elements of the required polynomial degree using create_grid_quad.py.</p>
4+
5+
<p>Step 2: Edit the .cfg file. Sample .cfg files are provided for polynomial degrees p = 1 to 5, which contain the typical parameters for this case.</p>
6+
7+
<p>Step 3: Run the case to convergence using SU2_CFD on an arbitrary number of ranks.</p>
8+
9+
<p>Step 4: Save the screen output to the file SU2_DG_n#N_p#P.out, where #N is the number of elements in one direction and #P is the polynomial degree. E.g. SU2_DG_n16_p4.out is the output for the grid, which contains 16 elements in x- and y-direction in combination with polynomial degree 4.</p>
10+
11+
<p>Step 5: Possible edit and run dg_accuracy.py, which carries out the postprocessing. Figures for global error vs relative grid size and observed order of accuracy vs relative grid size are created.</p>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<p>The compute_order_of_accuracy.py script drives the other files in this folder. Simply set the number of ranks on which to run the cases by modifying the ‘nRank’ variable at the top of the script and then execute with:</p>
2+
3+
<p>$ compute_order_of_accuracy.py</p>
4+
5+
<p>The script will automatically generate the required meshes and executed SU2 solutions for up to four different cases on those meshes for comparison. Four config files are provided, but you can modify them or add new ones. Simply change the config files listed at the top of the compute_order_of_accuracy.py script. Postprocessing is also automatically performed by the script, including the creation of figures for global error vs relative grid size and observed order of accuracy vs relative grid size.</p>
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<p align="center">
2+
<img src="/FVM_Navier_Stokes/images/accuracy_rms_rho.png" alt="Accuracy RMS Rho" width="435" />
3+
</p>
4+
5+
<p>This page contains the results of running MMS for the compressible Navier-Stokes system in order to formally verify the order-of-accuracy for the 2nd-order finite volume solver in SU2. These cases were completed with SU2 v7.0.0.</p>
6+
7+
<p>For more details, please see the presentation on the subject from the <a href="https://su2foundation.org/wp-content/uploads/2019/05/SU2_Verification_EdwinTom.pdf">4th Annual SU2 Developers Meeting</a>.</p>
8+
9+
<h2 id="problem-setup">Problem Setup</h2>
10+
11+
<p>The basic concept behind the Method of Manufactured Solutions (MMS) is to verify a code by ensuring that it reproduces a predefined solution (the “manufactured solution”) when the governing equations are forced with the source term that corresponds to the manufactured solution. Verification is then possible by computing formal order of accuracy using the global error on a sequence of refined grids.</p>
12+
13+
<p>The 2D manufactured solution used in this case for the compressible Navier-Stokes equations is given by:</p>
14+
15+
<p align="center">
16+
<img src="/FVM_Navier_Stokes/images/ns_mms.png" alt="NS MMS" width="500" />
17+
</p>
18+
19+
<p>which will be solved on a unit quad domain. Contours of the solution are shown below.</p>
20+
21+
<p align="center">
22+
<img src="/FVM_Navier_Stokes/images/ns_mms_density.png" alt="NS MMS Density" width="290" />
23+
<img src="/FVM_Navier_Stokes/images/ns_mms_pressure.png" alt="NS MMS Pressure" width="290" />
24+
<img src="/FVM_Navier_Stokes/images/ns_mms_mach.png" alt="NS MMS Mach" width="290" />
25+
</p>
26+
27+
<p>A symbolic manipulation package such as Maple or SymPy is used to generate the required source terms automatically by evaluating the governing equations at the manufactured solution.</p>
28+
29+
<h2 id="results">Results</h2>
30+
31+
<p>The results for solving the 2D MMS problem on a sequence of 5 grids are given below. The unit domain meshes are composed of quadrilaterals (triangles are also possible), and the mesh sizes are 9x9, 17x17, 33x33, 65x65, 129x129, and 257x257.</p>
32+
33+
<p>Several variations of the numerical methods are tested, namely the Roe upwind scheme with and without limiters, the JST scheme, and both the Green-Gauss and weighted least-squares approaches for computing flow variable gradients. In the figures, the abbreviations represent the following: Roe = Roe uwpind scheme with 2nd-order MUSCL reconstruction, JST = Jameson-Schmidt-Turkel centered scheme, GG = Green-Gauss gradient method, LIM = Venkatakrishnan-Wang limiter, WLS = Weighted Least-Squares gradient method.</p>
34+
35+
<p>Figures containing the formal order of accuracy and the global error for both L-infinity and L2 norms are shown below. The figures with the global error also present the ideal slopes for first- and second-order accuracy. As expected for the finite volume solver in SU2, all results correctly asymptote to second-order accuracy as the mesh is refined, which verifies the accuracy of the solver for the methods investigated.</p>
36+
37+
<p>If you would like to run the MMS problems for yourself, you can use the files available in the <a href="https://github.com/su2code/VandV/tree/master/mms/fvm_navierstokes">SU2 V&amp;V repository</a>. The compute_order_of_accuracy.py script drives the other files in this folder. Simply set the number of ranks on which to run the cases by modifying the ‘nRank’ variable at the top of the script and then execute with:</p>
38+
39+
<p>$ compute_order_of_accuracy.py</p>
40+
41+
<p>The script will automatically generate the required meshes and execute SU2 solutions for the four different cases on those meshes for comparison. Four config files are provided, but you can modify them or add new ones. Simply change the config files listed at the top of the compute_order_of_accuracy.py script. Postprocessing is also automatically performed by the script, including the creation of figures for global error vs relative grid size and observed order of accuracy vs relative grid size.</p>
42+
43+
<p align="center">
44+
<img src="/FVM_Navier_Stokes/images/slope_rms_rho.png" alt="Slope RMS Rho" width="435" />
45+
<img src="/FVM_Navier_Stokes/images/accuracy_rms_rho.png" alt="Accuracy RMS Rho" width="435" />
46+
<img src="/FVM_Navier_Stokes/images/slope_rms_rhou.png" alt="Slope RMS Rho-U" width="435" />
47+
<img src="/FVM_Navier_Stokes/images/accuracy_rms_rhou.png" alt="Accuracy RMS Rho-U" width="435" />
48+
<img src="/FVM_Navier_Stokes/images/slope_rms_rhov.png" alt="Slope RMS Rho-V" width="435" />
49+
<img src="/FVM_Navier_Stokes/images/accuracy_rms_rhov.png" alt="Accuracy RMS Rho-V" width="435" />
50+
<img src="/FVM_Navier_Stokes/images/slope_rms_rhoe.png" alt="Slope RMS Rho-E" width="435" />
51+
<img src="/FVM_Navier_Stokes/images/accuracy_rms_rhoe.png" alt="Accuracy RMS Rho-E" width="435" />
52+
<img src="/FVM_Navier_Stokes/images/slope_max_rho.png" alt="Slope Max Rho" width="435" />
53+
<img src="/FVM_Navier_Stokes/images/accuracy_max_rho.png" alt="Accuracy Max Rho" width="435" />
54+
<img src="/FVM_Navier_Stokes/images/slope_max_rhou.png" alt="Slope Max Rho-U" width="435" />
55+
<img src="/FVM_Navier_Stokes/images/accuracy_max_rhou.png" alt="Accuracy Max Rho-U" width="435" />
56+
<img src="/FVM_Navier_Stokes/images/slope_max_rhov.png" alt="Slope Max Rho-V" width="435" />
57+
<img src="/FVM_Navier_Stokes/images/accuracy_max_rhov.png" alt="Accuracy Max Rho-V" width="435" />
58+
<img src="/FVM_Navier_Stokes/images/slope_max_rhoe.png" alt="Slope Max Rho-E" width="435" />
59+
<img src="/FVM_Navier_Stokes/images/accuracy_max_rhoe.png" alt="Accuracy Max Rho-E" width="435" />
60+
</p>
61+

0 commit comments

Comments
 (0)