Skip to content
Snippets Groups Projects
Commit 4532c72f authored by Paul Dechamps's avatar Paul Dechamps :speech_balloon:
Browse files

Merge branch 'su2interface' into dev

Added SU2 interface for Harrier 8.0.1.
parents aa7080ce 2dfc93cc
No related branches found
No related tags found
No related merge requests found
......@@ -89,6 +89,8 @@ def initBlast(iconfig, vconfig, iSolver='DART', task='analysis'):
# Inviscid solver
if iSolver == 'DART':
from blast.interfaces.dart.blDartInterface import DartInterface as interface
elif iSolver == 'SU2':
from blast.interfaces.su2.blSU2Interface import SU2Interface as interface
else:
raise RuntimeError(f"Solver {iSolver} currently not implemented")
......
This diff is collapsed.
/* Airfoil NACA0012 */
// This file was generated automatically using geoFoils v1.0 (https://github.com/Paul-Dech/geoFoils)
// @date: 2025-01-07 15:28:07
// @author: Paul Dechamps
// Geometry
DefineConstant[ xLgt = { 5.0, Name "Domain length (x-dir)" } ];
DefineConstant[ yLgt = { 5.0, Name "Domain length (y-dir)" } ];
// Mesh
DefineConstant[ growthRatio = { 1.5, Name "Growth Ratio" } ];
DefineConstant[ msTe = { 0.01, Name "Airfoil TE mesh size" } ];
DefineConstant[ msLe = { 0.01, Name "Airfoil LE mesh size" } ];
// Rotation
DefineConstant[ xRot = { 0.25, Name "Center of rotation" } ];
DefineConstant[ angle = { 0*Pi/180, Name "Angle of rotation" } ];
Geometry.AutoCoherence = 0; // Needed so that gmsh does not remove duplicate
If (growthRatio == 1.0)
msF = msLe;
Else
n = Log(1 - (1 - growthRatio) * xLgt / msLe) / Log(growthRatio);
msF = msLe * growthRatio^(n - 1);
EndIf
/**************
Geometry
**************/
Te = 1; // trailing edge
Le = 151; // leading edge
Point( 1 ) = { 1.0, -0.0, 0.0, msTe };
Point( 2 ) = { 0.99989034173742, 1.566142976e-05, 0.0};
Point( 3 ) = { 0.99956141504943, 6.262613794e-05, 0.0};
Point( 4 ) = { 0.99901336421414, 0.00014083544147, 0.0};
Point( 5 ) = { 0.99824642962475, 0.0002501917354, 0.0};
Point( 6 ) = { 0.99726094768414, 0.00039055879171, 0.0};
Point( 7 ) = { 0.99605735065724, 0.00056176217462, 0.0};
Point( 8 ) = { 0.99463616648149, 0.00076358976946, 0.0};
Point( 9 ) = { 0.99299801853525, 0.00099579242133, 0.0};
Point( 10 ) = { 0.99114362536434, 0.00125808467902, 0.0};
Point( 11 ) = { 0.9890738003669, 0.0015501456389, 0.0};
Point( 12 ) = { 0.98678945143658, 0.00187161988278, 0.0};
Point( 13 ) = { 0.98429158056432, 0.0022221185031, 0.0};
Point( 14 ) = { 0.98158128339883, 0.00260122020822, 0.0};
Point( 15 ) = { 0.97865974876603, 0.00300847250009, 0.0};
Point( 16 ) = { 0.97552825814758, 0.00344339291591, 0.0};
Point( 17 ) = { 0.97218818511874, 0.0039054703252, 0.0};
Point( 18 ) = { 0.96864099474595, 0.00439416627328, 0.0};
Point( 19 ) = { 0.96488824294413, 0.00490891636171, 0.0};
Point( 20 ) = { 0.96093157579425, 0.00544913165641, 0.0};
Point( 21 ) = { 0.9567727288213, 0.00601420011357, 0.0};
Point( 22 ) = { 0.95241352623301, 0.00660348801398, 0.0};
Point( 23 ) = { 0.94785588011971, 0.00721634139577, 0.0};
Point( 24 ) = { 0.94310178961561, 0.00785208747637, 0.0};
Point( 25 ) = { 0.93815334002193, 0.00851003605407, 0.0};
Point( 26 ) = { 0.93301270189222, 0.00918948088016, 0.0};
Point( 27 ) = { 0.92768213008025, 0.00988970099293, 0.0};
Point( 28 ) = { 0.92216396275101, 0.01060996200508, 0.0};
Point( 29 ) = { 0.91646062035505, 0.01134951733663, 0.0};
Point( 30 ) = { 0.91057460456685, 0.01210760938604, 0.0};
Point( 31 ) = { 0.90450849718747, 0.01288347063272, 0.0};
Point( 32 ) = { 0.8982649590121, 0.01367632466478, 0.0};
Point( 33 ) = { 0.89184672866292, 0.01448538712671, 0.0};
Point( 34 ) = { 0.88525662138789, 0.01530986658219, 0.0};
Point( 35 ) = { 0.87849752782588, 0.01614896528828, 0.0};
Point( 36 ) = { 0.8715724127387, 0.01700187987791, 0.0};
Point( 37 ) = { 0.86448431371071, 0.01786780194847, 0.0};
Point( 38 ) = { 0.8572363398164, 0.01874591855516, 0.0};
Point( 39 ) = { 0.84983167025668, 0.01963541260873, 0.0};
Point( 40 ) = { 0.84227355296434, 0.02053546317813, 0.0};
Point( 41 ) = { 0.83456530317943, 0.02144524569925, 0.0};
Point( 42 ) = { 0.82671030199505, 0.02236393209232, 0.0};
Point( 43 ) = { 0.81871199487434, 0.02329069079083, 0.0};
Point( 44 ) = { 0.81057389013916, 0.02422468668617, 0.0};
Point( 45 ) = { 0.80229955743119, 0.02516508099279, 0.0};
Point( 46 ) = { 0.79389262614624, 0.02611103103947, 0.0};
Point( 47 ) = { 0.78535678384222, 0.02706168999315, 0.0};
Point( 48 ) = { 0.77669577462167, 0.02801620652246, 0.0};
Point( 49 ) = { 0.7679133974895, 0.02897372440866, 0.0};
Point( 50 ) = { 0.75901350468657, 0.02993338211239, 0.0};
Point( 51 ) = { 0.75, 0.03089431230516, 0.0};
Point( 52 ) = { 0.74087683705086, 0.03185564137496, 0.0};
Point( 53 ) = { 0.73164801755993, 0.03281648891572, 0.0};
Point( 54 ) = { 0.72231758959246, 0.03377596721082, 0.0};
Point( 55 ) = { 0.71288964578254, 0.03473318072085, 0.0};
Point( 56 ) = { 0.7033683215379, 0.03568722558628, 0.0};
Point( 57 ) = { 0.69375779322605, 0.03663718915547, 0.0};
Point( 58 ) = { 0.68406227634234, 0.03758214954874, 0.0};
Point( 59 ) = { 0.67428602366091, 0.03852117526877, 0.0};
Point( 60 ) = { 0.66443332336929, 0.03945332486788, 0.0};
Point( 61 ) = { 0.65450849718747, 0.0403776466819, 0.0};
Point( 62 ) = { 0.64451589847224, 0.04129317864062, 0.0};
Point( 63 ) = { 0.63445991030763, 0.04219894816377, 0.0};
Point( 64 ) = { 0.62434494358243, 0.04309397215141, 0.0};
Point( 65 ) = { 0.61417543505533, 0.04397725707679, 0.0};
Point( 66 ) = { 0.60395584540888, 0.04484779918912, 0.0};
Point( 67 ) = { 0.59369065729286, 0.04570458483296, 0.0};
Point( 68 ) = { 0.58338437335805, 0.04654659089014, 0.0};
Point( 69 ) = { 0.57304151428121, 0.04737278534922, 0.0};
Point( 70 ) = { 0.56266661678215, 0.04818212800662, 0.0};
Point( 71 ) = { 0.55226423163383, 0.04897357130255, 0.0};
Point( 72 ) = { 0.54183892166616, 0.0497460612939, 0.0};
Point( 73 ) = { 0.53139525976466, 0.05049853876514, 0.0};
Point( 74 ) = { 0.5209378268646, 0.05122994047724, 0.0};
Point( 75 ) = { 0.51047120994168, 0.05193920055357, 0.0};
Point( 76 ) = { 0.5, 0.05262525200057, 0.0};
Point( 77 ) = { 0.48952879005832, 0.05328702835989, 0.0};
Point( 78 ) = { 0.4790621731354, 0.05392346548752, 0.0};
Point( 79 ) = { 0.46860474023534, 0.05453350345464, 0.0};
Point( 80 ) = { 0.45816107833384, 0.05511608856324, 0.0};
Point( 81 ) = { 0.44773576836617, 0.05567017546926, 0.0};
Point( 82 ) = { 0.43733338321785, 0.05619472940438, 0.0};
Point( 83 ) = { 0.42695848571879, 0.05668872848681, 0.0};
Point( 84 ) = { 0.41661562664195, 0.05715116611079, 0.0};
Point( 85 ) = { 0.40630934270714, 0.05758105340305, 0.0};
Point( 86 ) = { 0.39604415459112, 0.05797742173437, 0.0};
Point( 87 ) = { 0.38582456494467, 0.05833932527305, 0.0};
Point( 88 ) = { 0.37565505641757, 0.05866584356678, 0.0};
Point( 89 ) = { 0.36554008969237, 0.05895608413888, 0.0};
Point( 90 ) = { 0.35548410152776, 0.05920918508399, 0.0};
Point( 91 ) = { 0.34549150281253, 0.05942431764848, 0.0};
Point( 92 ) = { 0.33556667663071, 0.05960068878005, 0.0};
Point( 93 ) = { 0.32571397633909, 0.05973754363096, 0.0};
Point( 94 ) = { 0.31593772365766, 0.0598341679995, 0.0};
Point( 95 ) = { 0.30624220677395, 0.05988989069371, 0.0};
Point( 96 ) = { 0.2966316784621, 0.05990408580221, 0.0};
Point( 97 ) = { 0.28711035421746, 0.05987617485653, 0.0};
Point( 98 ) = { 0.27768241040754, 0.05980562887012, 0.0};
Point( 99 ) = { 0.26835198244007, 0.05969197023942, 0.0};
Point( 100 ) = { 0.25912316294914, 0.05953477449294, 0.0};
Point( 101 ) = { 0.25, 0.059333671875, 0.0};
Point( 102 ) = { 0.24098649531343, 0.05908834875129, 0.0};
Point( 103 ) = { 0.2320866025105, 0.05879854882451, 0.0};
Point( 104 ) = { 0.22330422537833, 0.058464074149, 0.0};
Point( 105 ) = { 0.21464321615778, 0.05808478593443, 0.0};
Point( 106 ) = { 0.20610737385376, 0.05766060512952, 0.0};
Point( 107 ) = { 0.19770044256881, 0.05719151277812, 0.0};
Point( 108 ) = { 0.18942610986084, 0.05667755014088, 0.0};
Point( 109 ) = { 0.18128800512566, 0.0561188185773, 0.0};
Point( 110 ) = { 0.17328969800495, 0.05551547918403, 0.0};
Point( 111 ) = { 0.16543469682057, 0.05486775218683, 0.0};
Point( 112 ) = { 0.15772644703566, 0.05417591608471, 0.0};
Point( 113 ) = { 0.15016832974332, 0.05344030654663, 0.0};
Point( 114 ) = { 0.1427636601836, 0.05266131506196, 0.0};
Point( 115 ) = { 0.13551568628929, 0.05183938734803, 0.0};
Point( 116 ) = { 0.1284275872613, 0.05097502151884, 0.0};
Point( 117 ) = { 0.12150247217412, 0.05006876602101, 0.0};
Point( 118 ) = { 0.11474337861211, 0.04912121734409, 0.0};
Point( 119 ) = { 0.10815327133708, 0.04813301751383, 0.0};
Point( 120 ) = { 0.1017350409879, 0.04710485137844, 0.0};
Point( 121 ) = { 0.09549150281253, 0.046037443699, 0.0};
Point( 122 ) = { 0.08942539543315, 0.04493155605656, 0.0};
Point( 123 ) = { 0.08353937964495, 0.04378798358951, 0.0};
Point( 124 ) = { 0.07783603724899, 0.04260755157605, 0.0};
Point( 125 ) = { 0.07231786991975, 0.04139111187757, 0.0};
Point( 126 ) = { 0.06698729810778, 0.04013953925954, 0.0};
Point( 127 ) = { 0.06184665997807, 0.03885372760755, 0.0};
Point( 128 ) = { 0.05689821038439, 0.03753458605692, 0.0};
Point( 129 ) = { 0.05214411988029, 0.03618303505469, 0.0};
Point( 130 ) = { 0.04758647376699, 0.0348000023736, 0.0};
Point( 131 ) = { 0.0432272711787, 0.03338641909797, 0.0};
Point( 132 ) = { 0.03906842420575, 0.03194321560181, 0.0};
Point( 133 ) = { 0.03511175705587, 0.03047131753953, 0.0};
Point( 134 ) = { 0.03135900525405, 0.0289716418698, 0.0};
Point( 135 ) = { 0.02781181488126, 0.02744509293315, 0.0};
Point( 136 ) = { 0.02447174185242, 0.0258925586035, 0.0};
Point( 137 ) = { 0.02134025123397, 0.02431490653389, 0.0};
Point( 138 ) = { 0.01841871660117, 0.02271298051574, 0.0};
Point( 139 ) = { 0.01570841943568, 0.02108759697117, 0.0};
Point( 140 ) = { 0.01321054856342, 0.01943954159657, 0.0};
Point( 141 ) = { 0.0109261996331, 0.01776956617535, 0.0};
Point( 142 ) = { 0.00885637463566, 0.01607838557678, 0.0};
Point( 143 ) = { 0.00700198146475, 0.01436667495681, 0.0};
Point( 144 ) = { 0.00536383351851, 0.01263506717596, 0.0};
Point( 145 ) = { 0.00394264934276, 0.01088415044781, 0.0};
Point( 146 ) = { 0.00273905231586, 0.009114466231, 0.0};
Point( 147 ) = { 0.00175357037525, 0.00732650737576, 0.0};
Point( 148 ) = { 0.00098663578586, 0.00552071653494, 0.0};
Point( 149 ) = { 0.00043858495057, 0.0036974848482, 0.0};
Point( 150 ) = { 0.00010965826258, 0.00185715090611, 0.0};
Point( 151 ) = { 0.0, 0.0, 0.0, msLe };
Point( 152 ) = { 0.00010965826258, -0.00185715090611, 0.0};
Point( 153 ) = { 0.00043858495057, -0.0036974848482, 0.0};
Point( 154 ) = { 0.00098663578586, -0.00552071653494, 0.0};
Point( 155 ) = { 0.00175357037525, -0.00732650737576, 0.0};
Point( 156 ) = { 0.00273905231586, -0.009114466231, 0.0};
Point( 157 ) = { 0.00394264934276, -0.01088415044781, 0.0};
Point( 158 ) = { 0.00536383351851, -0.01263506717596, 0.0};
Point( 159 ) = { 0.00700198146475, -0.01436667495681, 0.0};
Point( 160 ) = { 0.00885637463566, -0.01607838557678, 0.0};
Point( 161 ) = { 0.0109261996331, -0.01776956617535, 0.0};
Point( 162 ) = { 0.01321054856342, -0.01943954159657, 0.0};
Point( 163 ) = { 0.01570841943568, -0.02108759697117, 0.0};
Point( 164 ) = { 0.01841871660117, -0.02271298051574, 0.0};
Point( 165 ) = { 0.02134025123397, -0.02431490653389, 0.0};
Point( 166 ) = { 0.02447174185242, -0.0258925586035, 0.0};
Point( 167 ) = { 0.02781181488126, -0.02744509293315, 0.0};
Point( 168 ) = { 0.03135900525405, -0.0289716418698, 0.0};
Point( 169 ) = { 0.03511175705587, -0.03047131753953, 0.0};
Point( 170 ) = { 0.03906842420575, -0.03194321560181, 0.0};
Point( 171 ) = { 0.0432272711787, -0.03338641909797, 0.0};
Point( 172 ) = { 0.04758647376699, -0.0348000023736, 0.0};
Point( 173 ) = { 0.05214411988029, -0.03618303505469, 0.0};
Point( 174 ) = { 0.05689821038439, -0.03753458605692, 0.0};
Point( 175 ) = { 0.06184665997807, -0.03885372760755, 0.0};
Point( 176 ) = { 0.06698729810778, -0.04013953925954, 0.0};
Point( 177 ) = { 0.07231786991975, -0.04139111187757, 0.0};
Point( 178 ) = { 0.07783603724899, -0.04260755157605, 0.0};
Point( 179 ) = { 0.08353937964495, -0.04378798358951, 0.0};
Point( 180 ) = { 0.08942539543315, -0.04493155605656, 0.0};
Point( 181 ) = { 0.09549150281253, -0.046037443699, 0.0};
Point( 182 ) = { 0.1017350409879, -0.04710485137844, 0.0};
Point( 183 ) = { 0.10815327133708, -0.04813301751383, 0.0};
Point( 184 ) = { 0.11474337861211, -0.04912121734409, 0.0};
Point( 185 ) = { 0.12150247217412, -0.05006876602101, 0.0};
Point( 186 ) = { 0.1284275872613, -0.05097502151884, 0.0};
Point( 187 ) = { 0.13551568628929, -0.05183938734803, 0.0};
Point( 188 ) = { 0.1427636601836, -0.05266131506196, 0.0};
Point( 189 ) = { 0.15016832974332, -0.05344030654663, 0.0};
Point( 190 ) = { 0.15772644703566, -0.05417591608471, 0.0};
Point( 191 ) = { 0.16543469682057, -0.05486775218683, 0.0};
Point( 192 ) = { 0.17328969800495, -0.05551547918403, 0.0};
Point( 193 ) = { 0.18128800512566, -0.0561188185773, 0.0};
Point( 194 ) = { 0.18942610986084, -0.05667755014088, 0.0};
Point( 195 ) = { 0.19770044256881, -0.05719151277812, 0.0};
Point( 196 ) = { 0.20610737385376, -0.05766060512952, 0.0};
Point( 197 ) = { 0.21464321615778, -0.05808478593443, 0.0};
Point( 198 ) = { 0.22330422537833, -0.058464074149, 0.0};
Point( 199 ) = { 0.2320866025105, -0.05879854882451, 0.0};
Point( 200 ) = { 0.24098649531343, -0.05908834875129, 0.0};
Point( 201 ) = { 0.25, -0.059333671875, 0.0};
Point( 202 ) = { 0.25912316294914, -0.05953477449294, 0.0};
Point( 203 ) = { 0.26835198244007, -0.05969197023942, 0.0};
Point( 204 ) = { 0.27768241040754, -0.05980562887012, 0.0};
Point( 205 ) = { 0.28711035421746, -0.05987617485653, 0.0};
Point( 206 ) = { 0.2966316784621, -0.05990408580221, 0.0};
Point( 207 ) = { 0.30624220677395, -0.05988989069371, 0.0};
Point( 208 ) = { 0.31593772365766, -0.0598341679995, 0.0};
Point( 209 ) = { 0.32571397633909, -0.05973754363096, 0.0};
Point( 210 ) = { 0.33556667663071, -0.05960068878005, 0.0};
Point( 211 ) = { 0.34549150281253, -0.05942431764848, 0.0};
Point( 212 ) = { 0.35548410152776, -0.05920918508399, 0.0};
Point( 213 ) = { 0.36554008969237, -0.05895608413888, 0.0};
Point( 214 ) = { 0.37565505641757, -0.05866584356678, 0.0};
Point( 215 ) = { 0.38582456494467, -0.05833932527305, 0.0};
Point( 216 ) = { 0.39604415459112, -0.05797742173437, 0.0};
Point( 217 ) = { 0.40630934270714, -0.05758105340305, 0.0};
Point( 218 ) = { 0.41661562664195, -0.05715116611079, 0.0};
Point( 219 ) = { 0.42695848571879, -0.05668872848681, 0.0};
Point( 220 ) = { 0.43733338321785, -0.05619472940438, 0.0};
Point( 221 ) = { 0.44773576836617, -0.05567017546926, 0.0};
Point( 222 ) = { 0.45816107833384, -0.05511608856324, 0.0};
Point( 223 ) = { 0.46860474023534, -0.05453350345464, 0.0};
Point( 224 ) = { 0.4790621731354, -0.05392346548752, 0.0};
Point( 225 ) = { 0.48952879005832, -0.05328702835989, 0.0};
Point( 226 ) = { 0.5, -0.05262525200057, 0.0};
Point( 227 ) = { 0.51047120994168, -0.05193920055357, 0.0};
Point( 228 ) = { 0.5209378268646, -0.05122994047724, 0.0};
Point( 229 ) = { 0.53139525976466, -0.05049853876514, 0.0};
Point( 230 ) = { 0.54183892166616, -0.0497460612939, 0.0};
Point( 231 ) = { 0.55226423163383, -0.04897357130255, 0.0};
Point( 232 ) = { 0.56266661678215, -0.04818212800662, 0.0};
Point( 233 ) = { 0.57304151428121, -0.04737278534922, 0.0};
Point( 234 ) = { 0.58338437335805, -0.04654659089014, 0.0};
Point( 235 ) = { 0.59369065729286, -0.04570458483296, 0.0};
Point( 236 ) = { 0.60395584540888, -0.04484779918912, 0.0};
Point( 237 ) = { 0.61417543505533, -0.04397725707679, 0.0};
Point( 238 ) = { 0.62434494358243, -0.04309397215141, 0.0};
Point( 239 ) = { 0.63445991030763, -0.04219894816377, 0.0};
Point( 240 ) = { 0.64451589847224, -0.04129317864062, 0.0};
Point( 241 ) = { 0.65450849718747, -0.0403776466819, 0.0};
Point( 242 ) = { 0.66443332336929, -0.03945332486788, 0.0};
Point( 243 ) = { 0.67428602366091, -0.03852117526877, 0.0};
Point( 244 ) = { 0.68406227634234, -0.03758214954874, 0.0};
Point( 245 ) = { 0.69375779322605, -0.03663718915547, 0.0};
Point( 246 ) = { 0.7033683215379, -0.03568722558628, 0.0};
Point( 247 ) = { 0.71288964578254, -0.03473318072085, 0.0};
Point( 248 ) = { 0.72231758959246, -0.03377596721082, 0.0};
Point( 249 ) = { 0.73164801755993, -0.03281648891572, 0.0};
Point( 250 ) = { 0.74087683705086, -0.03185564137496, 0.0};
Point( 251 ) = { 0.75, -0.03089431230516, 0.0};
Point( 252 ) = { 0.75901350468657, -0.02993338211239, 0.0};
Point( 253 ) = { 0.7679133974895, -0.02897372440866, 0.0};
Point( 254 ) = { 0.77669577462167, -0.02801620652246, 0.0};
Point( 255 ) = { 0.78535678384222, -0.02706168999315, 0.0};
Point( 256 ) = { 0.79389262614624, -0.02611103103947, 0.0};
Point( 257 ) = { 0.80229955743119, -0.02516508099279, 0.0};
Point( 258 ) = { 0.81057389013916, -0.02422468668617, 0.0};
Point( 259 ) = { 0.81871199487434, -0.02329069079083, 0.0};
Point( 260 ) = { 0.82671030199505, -0.02236393209232, 0.0};
Point( 261 ) = { 0.83456530317943, -0.02144524569925, 0.0};
Point( 262 ) = { 0.84227355296434, -0.02053546317813, 0.0};
Point( 263 ) = { 0.84983167025668, -0.01963541260873, 0.0};
Point( 264 ) = { 0.8572363398164, -0.01874591855516, 0.0};
Point( 265 ) = { 0.86448431371071, -0.01786780194847, 0.0};
Point( 266 ) = { 0.8715724127387, -0.01700187987791, 0.0};
Point( 267 ) = { 0.87849752782588, -0.01614896528828, 0.0};
Point( 268 ) = { 0.88525662138789, -0.01530986658219, 0.0};
Point( 269 ) = { 0.89184672866292, -0.01448538712671, 0.0};
Point( 270 ) = { 0.8982649590121, -0.01367632466478, 0.0};
Point( 271 ) = { 0.90450849718747, -0.01288347063272, 0.0};
Point( 272 ) = { 0.91057460456685, -0.01210760938604, 0.0};
Point( 273 ) = { 0.91646062035505, -0.01134951733663, 0.0};
Point( 274 ) = { 0.92216396275101, -0.01060996200508, 0.0};
Point( 275 ) = { 0.92768213008025, -0.00988970099293, 0.0};
Point( 276 ) = { 0.93301270189222, -0.00918948088016, 0.0};
Point( 277 ) = { 0.93815334002193, -0.00851003605407, 0.0};
Point( 278 ) = { 0.94310178961561, -0.00785208747637, 0.0};
Point( 279 ) = { 0.94785588011971, -0.00721634139577, 0.0};
Point( 280 ) = { 0.95241352623301, -0.00660348801398, 0.0};
Point( 281 ) = { 0.9567727288213, -0.00601420011357, 0.0};
Point( 282 ) = { 0.96093157579425, -0.00544913165641, 0.0};
Point( 283 ) = { 0.96488824294413, -0.00490891636171, 0.0};
Point( 284 ) = { 0.96864099474595, -0.00439416627328, 0.0};
Point( 285 ) = { 0.97218818511874, -0.0039054703252, 0.0};
Point( 286 ) = { 0.97552825814758, -0.00344339291591, 0.0};
Point( 287 ) = { 0.97865974876603, -0.00300847250009, 0.0};
Point( 288 ) = { 0.98158128339883, -0.00260122020822, 0.0};
Point( 289 ) = { 0.98429158056432, -0.0022221185031, 0.0};
Point( 290 ) = { 0.98678945143658, -0.00187161988278, 0.0};
Point( 291 ) = { 0.9890738003669, -0.0015501456389, 0.0};
Point( 292 ) = { 0.99114362536434, -0.00125808467902, 0.0};
Point( 293 ) = { 0.99299801853525, -0.00099579242133, 0.0};
Point( 294 ) = { 0.99463616648149, -0.00076358976946, 0.0};
Point( 295 ) = { 0.99605735065724, -0.00056176217462, 0.0};
Point( 296 ) = { 0.99726094768414, -0.00039055879171, 0.0};
Point( 297 ) = { 0.99824642962475, -0.0002501917354, 0.0};
Point( 298 ) = { 0.99901336421414, -0.00014083544147, 0.0};
Point( 299 ) = { 0.99956141504943, -6.262613794e-05, 0.0};
Point( 300 ) = { 0.99989034173742, -1.566142976e-05, 0.0};
// Point( 301 ) = { 1.0, 0.0, 0.0, msTe };
Spline(1) = {Le:1}; // upper side
Spline(2) = {1, 300:Le}; // lower side
// Rotation
If (angle != 0)
For i In {Te:N:1}
Rotate{{0, 0, 1}, {xRot, 0, 0}, -angle} {Point{i};}
EndFor
EndIf
// Farfield
Point(10001) = {1+xLgt, 0, 0,msF};
Point(10002) = {1+xLgt, yLgt, 0,msF};
Point(10003) = {-xLgt, yLgt, 0,msF};
Point(10004) = {-xLgt, 0, 0,msF};
Point(10005) = {-xLgt,-yLgt, 0,msF};
Point(10006) = {1+xLgt, -yLgt, 0,msF};
Line(10001) = {10001, 10002};
Line(10002) = {10002, 10003};
Line(10003) = {10003, 10004};
Line(10004) = {10004, 10005};
Line(10005) = {10005, 10006};
Line(10006) = {10006, 10001};
// Front and wake
Line(10007) = {Le, 10004};
Line(10008) = {Te, 10001};
// Internal field
Line Loop(20001) = {10008, 10001, 10002, 10003, -10007, 1};
Line Loop(20002) = {10007, 10004, 10005, 10006, -10008, 2};
Plane Surface(30001) = {20001};
Plane Surface(30002) = {20002};
/*************************
Mesh Options
*************************/
Mesh.Algorithm = 5; // Delaunay
/*************************
Physical Groups
*************************/
Physical Line("farfield") = {10003, 10004, 10002, 10005, 10001, 10006};
Physical Line("airfoil") = {1};
Physical Line("airfoil_") = {2};
Physical Surface("field") = {30001, 30002};
This diff is collapsed.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright 2022 University of Liège
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# @author Paul Dechamps
# @date 2022 reworked 2025
# Test the vii implementation using SU2 as the inviscid solver
# Imports.
import blast.blUtils as vutils
from fwk.wutils import parseargs
def cfgSu2(verb):
import os
return {
'filename' : os.path.abspath(os.path.join(os.path.split(os.path.abspath(__file__))[0], "config.cfg")),
'meshfile': os.path.abspath(os.path.join(os.path.split(os.path.abspath(__file__))[0], "../../models/su2/n0012_su2.su2")),
'wingTags' : ['airfoil', 'airfoil_'],
'Verb': verb, # Verbosity level
}
def cfgBlast():
return {
'Re' : 1e7, # Freestream Reynolds number
'CFL0' : 2, # Inital CFL number of the calculation
'couplIter': 2, # Maximum number of iterations
'sections': {'airfoil': [0.0]},
'spans': {'airfoil': 1.0},
'couplTol' : 1e-4, # Tolerance of the VII methodology
'iterPrint': 1, # int, number of iterations between outputs
'resetInv' : True, # bool, flag to reset the inviscid calculation at every iteration.
'xtrF' : [None, 0.4], # Forced transition locations
'interpolator' : 'Matching',# Interpolator for the coupling
}
def main():
args = parseargs()
icfg = cfgSu2(args.verb)
vcfg = cfgBlast()
coupler, isol, vsol = vutils.initBlast(icfg, vcfg, iSolver='SU2', task='analysis')
coupler.run()
import numpy as np
cpi = np.loadtxt('Cp_inviscid.dat')
cpCorrected = np.loadtxt('Cp_viscous.dat')
import matplotlib.pyplot as plt
# Clear plt
plt.close('all')
plt.figure()
plt.plot(cpCorrected[:,0], cpCorrected[:,1], lw=3)
plt.plot(cpi[:,0], cpi[:,1], '--', lw=3)
plt.gca().invert_yaxis()
plt.show()
#plt.savefig('cp.png')
quit()
# Extract solution
# Display results
from matplotlib import pyplot as plt
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.plot(cpCorrected[:,0], cpCorrected[:,1], lw=3)
ax1.plot(su2API.cp0[:,0], su2API.cp0[:,1], '--', lw=1.5, color='black')
ax1.invert_yaxis()
ax1.set_ylabel('$c_p$')
ax2.plot(solsu2['xoc'], solsu2['Cf'], lw=3)
ax2.set_ylabel('$c_f$')
ax2.set_xlim([0,1])
plt.show()
plt.plot(cpCorrected[:,0], cpCorrected[:,1], lw=3, color='darkblue')
plt.plot(su2API.cp0[:,0], su2API.cp0[:,1], '--', lw=3, color='black')
plt.xticks([0, 1])
plt.yticks([-1, 0, 1])
plt.gca().invert_yaxis()
for i, spine in enumerate(plt.gca().spines.values()):
if i%2 != 0:
spine.set_visible(False)
plt.show()
if __name__ == "__main__":
main()
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% SU2 configuration file %
% Case description: Inviscid, internal flow over a bump in a channel %
% Author: Thomas D. Economon %
% Institution: Stanford University %
% Date: 2012.09.29 %
% File Version 4.0.2 "Cardinal" %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ------------- DIRECT, ADJOINT, AND LINEARIZED PROBLEM DEFINITION ------------%
%
% Physical governing equations (EULER, NAVIER_STOKES, NS_PLASMA)
%
SOLVER= EULER
%
% Mathematical problem (DIRECT, CONTINUOUS_ADJOINT)
MATH_PROBLEM= DIRECT
%
% Restart solution (NO, YES)
RESTART_SOL= NO
% -------------------- COMPRESSIBLE FREE-STREAM DEFINITION --------------------%
%
% Mach number (non-dimensional, based on the free-stream values)
MACH_NUMBER= 0.20
%
% Angle of attack (degrees, only for compressible flows)
AOA= 2.0
%
% Side-slip angle (degrees, only for compressible flows)
SIDESLIP_ANGLE= 0.0
%
% Free-stream pressure (101325.0 N/m^2 by default)
FREESTREAM_PRESSURE= 101300.0
%
% Free-stream temperature (288.15 K by default)
FREESTREAM_TEMPERATURE= 288.0
REF_DIMENSIONALIZATION= FREESTREAM_VEL_EQ_ONE
% ---------------------- REFERENCE VALUE DEFINITION ---------------------------%
%
% Reference origin for moment computation
REF_ORIGIN_MOMENT_X = 0.25
REF_ORIGIN_MOMENT_Y = 0.00
REF_ORIGIN_MOMENT_Z = 0.00
%
% Reference length for pitching, rolling, and yawing non-dimensional moment
REF_LENGTH= 1.0
%
% Reference area for force coefficients (0 implies automatic calculation)
REF_AREA= 1.0
% -------------------- BOUNDARY CONDITION DEFINITION --------------------------%
%
% Euler wall boundary marker(s) (NONE = no marker)
MARKER_EULER= ( airfoil, airfoil_ )
%
MARKER_MOVING= ( airfoil, airfoil_ )
%
SURFACE_MOVEMENT= (MOVING_WALL, MOVING_WALL)
%
% Motion mach number (non-dimensional). Used for initializing a viscous flow
% with the Reynolds number and for computing force coeffs. with dynamic meshes.
%MACH_MOTION= 0.
% Inlet boundary marker(s) (NONE = no marker)
% Format: ( inlet marker, total temperature, total pressure, flow_direction_x,
% flow_direction_y, flow_direction_z, ... ) where flow_direction is
% a unit vector.
% Default: Mach ~ 0.1
MARKER_FAR = (farfield)
% ------------------------ SURFACES IDENTIFICATION ----------------------------%
%
% Marker(s) of the surface to be plotted or designed
MARKER_PLOTTING= ( airfoil, airfoil_ )
%
% Marker(s) of the surface where the functional (Cd, Cl, etc.) will be evaluated
MARKER_MONITORING= ( airfoil, airfoil_ )
% ------------- COMMON PARAMETERS DEFINING THE NUMERICAL METHOD ---------------%
%
% Numerical method for spatial gradients (GREEN_GAUSS, WEIGHTED_LEAST_SQUARES)
NUM_METHOD_GRAD= WEIGHTED_LEAST_SQUARES
%
% Courant-Friedrichs-Lewy condition of the finest grid
CFL_NUMBER= 1e2
%
% Adaptive CFL number (NO, YES)
CFL_ADAPT= NO
%
% Parameters of the adaptive CFL number (factor down, factor up, CFL min value,
% CFL max value )
CFL_ADAPT_PARAM= ( 0.1, 5.0, 50.0, 1e10 )
%
% Runge-Kutta alpha coefficients
RK_ALPHA_COEFF= ( 0.66667, 0.66667, 1.000000 )
%
% Number of total iterations
ITER= 500
%
% ------------------------ LINEAR SOLVER DEFINITION ---------------------------%
%
% Linear solver for implicit formulations (BCGSTAB, FGMRES)
LINEAR_SOLVER= FGMRES
%
% Preconditioner of the Krylov linear solver (ILU, JACOBI, LINELET, LU_SGS)
LINEAR_SOLVER_PREC= ILU
%
% Minimum error of the linear solver for implicit formulations
LINEAR_SOLVER_ERROR= 1E-6
%
% Max number of iterations of the linear solver for the implicit formulation
LINEAR_SOLVER_ITER= 10
%
% -------------------------- MULTIGRID PARAMETERS -----------------------------%
%
% Multi-Grid Levels (0 = no multi-grid)
MGLEVEL= 0
%
% Multi-grid cycle (V_CYCLE, W_CYCLE, FULLMG_CYCLE)
MGCYCLE= W_CYCLE
%
% Multi-grid pre-smoothing level
MG_PRE_SMOOTH= ( 1, 2, 3, 3 )
%
% Multi-grid post-smoothing level
MG_POST_SMOOTH= ( 0, 0, 0, 0 )
%
% Jacobi implicit smoothing of the correction
MG_CORRECTION_SMOOTH= ( 0, 0, 0, 0 )
%
% Damping factor for the residual restriction
MG_DAMP_RESTRICTION= 1.0
%
% Damping factor for the correction prolongation
MG_DAMP_PROLONGATION= 1.0
% -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------%
%
% Convective numerical method (JST, LAX-FRIEDRICH, CUSP, ROE, AUSM, HLLC,
% TURKEL_PREC, MSW)
CONV_NUM_METHOD_FLOW= ROE
%
% 2nd and 4th order artificial dissipation coefficients
%JST_SENSOR_COEFF= ( 0.5, 0.02 )
%LAX_SENSOR_COEFF= 0.001
%
% Time discretization (RUNGE-KUTTA_EXPLICIT, EULER_IMPLICIT, EULER_EXPLICIT)
TIME_DISCRE_FLOW= EULER_IMPLICIT
%
% ----------------------- SLOPE LIMITER DEFINITION ----------------------------%
%
MUSCL_FLOW= YES
%
SLOPE_LIMITER_FLOW= VENKATAKRISHNAN
%
% Coefficient for the limiter
VENKAT_LIMITER_COEFF= 0.005
%
% --------------------------- CONVERGENCE PARAMETERS --------------------------%
%
% Convergence criteria (CAUCHY, RESIDUAL)
CONV_FIELD= RMS_DENSITY
%
% Min value of the residual (log10 of the residual)
CONV_RESIDUAL_MINVAL= -8
%
% Start convergence criteria at iteration number
CONV_STARTITER= 5
%
% Number of elements to apply the criteria
CONV_CAUCHY_ELEMS= 100
%
% Epsilon to control the series convergence
CONV_CAUCHY_EPS= 1E-10
% ------------------------- INPUT/OUTPUT INFORMATION --------------------------%
%
SCREEN_WRT_FREQ_INNER= 50
VOLUME_OUTPUT = SOLUTION, PRIMITIVE, RMS_DENSITY
% Mesh input file
MESH_FILENAME = path/to/mesh.su2
%
% Mesh input file format (SU2, CGNS, NETCDF_ASCII)
MESH_FORMAT= SU2
%
% Mesh output file
MESH_OUT_FILENAME= mesh_out.su2
%
% Restart flow input file
SOLUTION_FILENAME= solution_flow.dat
%
% Restart adjoint input file
SOLUTION_ADJ_FILENAME= solution_adj.dat
%
% Output file format (PARAVIEW, TECPLOT, STL)
TABULAR_FORMAT= CSV
%
% Output file convergence history (w/o extension)
CONV_FILENAME= history
%
% Output file restart flow
RESTART_FILENAME= restart_flow.dat
%
% Output file restart adjoint
RESTART_ADJ_FILENAME= restart_adj.dat
%
% Output file flow (w/o extension) variables
VOLUME_FILENAME= flow
%
% Output file adjoint (w/o extension) variables
VOLUME_ADJ_FILENAME= adjoint
%
% Output objective function gradient (using continuous adjoint)
GRAD_OBJFUNC_FILENAME= of_grad.dat
%
% Output file surface flow coefficient (w/o extension)
SURFACE_FILENAME= surface_flow
%
% Output file surface adjoint coefficient (w/o extension)
SURFACE_ADJ_FILENAME= surface_adjoint
%
%
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment