@@ -48,11 +48,11 @@ struct CSAVariables {
48
48
const su2double cb2_sigma = cb2 / sigma;
49
49
const su2double cw1 = cb1 / k2 + (1 + cb2) / sigma;
50
50
const su2double cr1 = 0.5 ;
51
- const su2double CRot = 1 .0 ;
51
+ const su2double CRot = 2 .0 ;
52
52
const su2double c2 = 0.7 , c3 = 0.9 ;
53
53
54
54
/* --- List of auxiliary functions ---*/
55
- su2double ft2, d_ft2, r, d_r, g, d_g, glim, fw, d_fw, Ji, d_Ji, S, Shat, d_Shat, fv1, d_fv1, fv2, d_fv2;
55
+ su2double ft2, d_ft2, r, d_r, g, d_g, glim, fw, d_fw, Ji, d_Ji, Shat, d_Shat, fv1, d_fv1, fv2, d_fv2, Prod ;
56
56
57
57
/* --- List of helpers ---*/
58
58
su2double Omega, dist_i_2, inv_k2_d2, inv_Shat, g_6, norm2_Grad;
@@ -151,20 +151,7 @@ class CSourceBase_TurbSA : public CNumerics {
151
151
Residual = 0.0 ;
152
152
Jacobian_i[0 ] = 0.0 ;
153
153
154
- /* --- Evaluate Omega with a rotational correction term. ---*/
155
-
156
- Omega::get (Vorticity_i, nDim, PrimVar_Grad_i + idx.Velocity (), var);
157
-
158
- /* --- Dacles-Mariani et. al. rotation correction ("-R"). ---*/
159
- if (options.rot ) {
160
- var.Omega += var.CRot * min (0.0 , StrainMag_i - var.Omega );
161
- /* --- Do not allow negative production for SA-neg. ---*/
162
- if (ScalarVar_i[0 ] < 0 ) var.Omega = abs (var.Omega );
163
- }
164
-
165
154
if (dist_i > 1e-10 ) {
166
- /* --- Vorticity ---*/
167
- var.S = var.Omega ;
168
155
169
156
var.dist_i_2 = pow (dist_i, 2 );
170
157
const su2double nu = laminar_viscosity / density;
@@ -188,12 +175,24 @@ class CSourceBase_TurbSA : public CNumerics {
188
175
var.fv2 = 1 - ScalarVar_i[0 ] / (nu + ScalarVar_i[0 ] * var.fv1 );
189
176
var.d_fv2 = -(1 / nu - Ji_2 * var.d_fv1 ) / pow (1 + var.Ji * var.fv1 , 2 );
190
177
191
- /* --- Compute ft2 term ---*/
192
- ft2::get (var);
178
+ /* --- Evaluate Omega with a rotational correction term. ---*/
179
+
180
+ Omega::get (Vorticity_i, nDim, PrimVar_Grad_i + idx.Velocity (), var);
193
181
194
182
/* --- Compute modified vorticity ---*/
195
183
ModVort::get (ScalarVar_i[0 ], nu, var);
196
184
var.inv_Shat = 1.0 / var.Shat ;
185
+ var.Prod = var.Shat ;
186
+
187
+ /* --- Dacles-Mariani et. al. rotation correction ("-R"). ---*/
188
+ if (options.rot ) {
189
+ var.Prod += var.CRot * min (0.0 , StrainMag_i - var.Omega );
190
+ /* --- Do not allow negative production for SA-neg. ---*/
191
+ if (ScalarVar_i[0 ] < 0 ) var.Prod = abs (var.Prod );
192
+ }
193
+
194
+ /* --- Compute ft2 term ---*/
195
+ ft2::get (var);
197
196
198
197
/* --- Compute auxiliary function r ---*/
199
198
rFunc::get (ScalarVar_i[0 ], var);
@@ -234,7 +233,6 @@ class CSourceBase_TurbSA : public CNumerics {
234
233
} else if (transition_LM){
235
234
236
235
var.intermittency = intermittency_eff_i;
237
- // var.intermittency = 1.0;
238
236
// Is wrong the reference from NASA?
239
237
// Original max(min(gamma, 0.5), 1.0) always gives 1 as result.
240
238
var.interDestrFactor = min (max (intermittency_i, 0.5 ), 1.0 );
@@ -347,12 +345,12 @@ struct Bsl {
347
345
348
346
/* --- Limiting of \hat{S} based on "Modifications and Clarifications for the Implementation of the Spalart-Allmaras Turbulence Model"
349
347
* Note 1 option c in https://turbmodels.larc.nasa.gov/spalart.html ---*/
350
- if (Sbar >= - c2 * var.S ) {
351
- var.Shat = var.S + Sbar;
348
+ if (Sbar >= - c2 * var.Omega ) {
349
+ var.Shat = var.Omega + Sbar;
352
350
} else {
353
- const su2double Num = var.S * (c2 * c2 * var.S + c3 * Sbar);
354
- const su2double Den = (c3 - 2 * c2) * var.S - Sbar;
355
- var.Shat = var.S + Num / Den;
351
+ const su2double Num = var.Omega * (c2 * c2 * var.Omega + c3 * Sbar);
352
+ const su2double Den = (c3 - 2 * c2) * var.Omega - Sbar;
353
+ var.Shat = var.Omega + Num / Den;
356
354
}
357
355
if (var.Shat <= 1e-10 ) {
358
356
var.Shat = 1e-10 ;
@@ -366,12 +364,12 @@ struct Bsl {
366
364
/* ! \brief Edward. */
367
365
struct Edw {
368
366
static void get (const su2double& nue, const su2double& nu, CSAVariables& var) {
369
- var.Shat = max (var.S * ((1.0 / max (var.Ji , 1.0e-16 )) + var.fv1 ), 1.0e-16 );
367
+ var.Shat = max (var.Omega * ((1.0 / max (var.Ji , 1.0e-16 )) + var.fv1 ), 1.0e-16 );
370
368
var.Shat = max (var.Shat , 1.0e-10 );
371
369
if (var.Shat <= 1.0e-10 ) {
372
370
var.d_Shat = 0.0 ;
373
371
} else {
374
- var.d_Shat = -var.S * pow (var.Ji , -2 ) / nu + var.S * var.d_fv1 ;
372
+ var.d_Shat = -var.Omega * pow (var.Ji , -2 ) / nu + var.Omega * var.d_fv1 ;
375
373
}
376
374
}
377
375
};
@@ -383,7 +381,7 @@ struct Neg {
383
381
// Baseline solution
384
382
Bsl::get (nue, nu, var);
385
383
} else {
386
- var.Shat = 1.0e-10 ;
384
+ var.Shat = var. Omega ;
387
385
var.d_Shat = 0.0 ;
388
386
}
389
387
/* --- Don't check whether Sbar <>= -cv2*S.
@@ -447,8 +445,8 @@ struct Bsl {
447
445
static void ComputeProduction (const su2double& nue, const CSAVariables& var, su2double& production,
448
446
su2double& jacobian) {
449
447
const su2double factor = var.intermittency * var.cb1 ;
450
- production = factor * (1.0 - var.ft2 ) * var.Shat * nue;
451
- jacobian += factor * (-var.Shat * nue * var.d_ft2 + (1.0 - var.ft2 ) * (nue * var.d_Shat + var.Shat ));
448
+ production = factor * (1.0 - var.ft2 ) * var.Prod * nue;
449
+ jacobian += factor * (-var.Prod * nue * var.d_ft2 + (1.0 - var.ft2 ) * (nue * var.d_Shat + var.Prod ));
452
450
}
453
451
454
452
static void ComputeDestruction (const su2double& nue, const CSAVariables& var, su2double& destruction,
@@ -481,7 +479,7 @@ struct Neg {
481
479
482
480
static void ComputeProduction (const su2double& nue, const CSAVariables& var, su2double& production,
483
481
su2double& jacobian) {
484
- const su2double dP_dnu = var.intermittency * var.cb1 * (1.0 - var.ct3 ) * var.S ;
482
+ const su2double dP_dnu = var.intermittency * var.cb1 * (1.0 - var.ct3 ) * var.Prod ;
485
483
production = dP_dnu * nue;
486
484
jacobian += dP_dnu;
487
485
}
0 commit comments