@@ -123,28 +123,22 @@ void CAvgGrad_Base::SetStressTensor(const su2double *val_primvar,
123123 const su2double val_laminar_viscosity,
124124 const su2double val_eddy_viscosity) {
125125
126- unsigned short iDim, jDim;
127126 const su2double Density = val_primvar[nDim+2 ];
128- const su2double total_viscosity = val_laminar_viscosity + val_eddy_viscosity;
129-
130- su2double div_vel = 0.0 ;
131- for (iDim = 0 ; iDim < nDim; iDim++)
132- div_vel += val_gradprimvar[iDim+1 ][iDim];
133127
134- /* --- If UQ methodology is used, calculate tau using the perturbed reynolds stress tensor --- */
128+ /* --- If UQ methodology is used, use the perturbed Reynolds stress tensor
129+ * for the turbulent part of tau. Otherwise both the laminar and turbulent
130+ * parts of tau can be computed with the total viscosity. --- */
135131
136132 if (using_uq){
137- for (iDim = 0 ; iDim < nDim; iDim++)
138- for (jDim = 0 ; jDim < nDim; jDim++)
139- tau[ iDim][jDim] = val_laminar_viscosity*( val_gradprimvar[jDim+ 1 ][ iDim] + val_gradprimvar[ iDim+1 ][jDim] )
140- - TWO3*val_laminar_viscosity*div_vel*delta[iDim][ jDim] - Density * MeanPerturbedRSM[iDim][ jDim];
141-
133+ ComputeStressTensor (nDim, tau, val_gradprimvar+ 1 , val_laminar_viscosity); // laminar part
134+ // add turbulent part which was perturbed
135+ for ( unsigned short iDim = 0 ; iDim < nDim; iDim++ )
136+ for ( unsigned short jDim = 0 ; jDim < nDim; jDim++)
137+ tau[iDim][jDim] += (-Density) * MeanPerturbedRSM[iDim][jDim];
142138 } else {
143-
144- for (iDim = 0 ; iDim < nDim; iDim++)
145- for (jDim = 0 ; jDim < nDim; jDim++)
146- tau[iDim][jDim] = total_viscosity*( val_gradprimvar[jDim+1 ][iDim] + val_gradprimvar[iDim+1 ][jDim] )
147- - TWO3*total_viscosity*div_vel*delta[iDim][jDim];
139+ // compute both parts in one step
140+ const su2double total_viscosity = val_laminar_viscosity + val_eddy_viscosity;
141+ ComputeStressTensor (nDim, tau, val_gradprimvar+1 , total_viscosity, Density, 0.0 ); // TODO why ignore turb_ke?
148142 }
149143}
150144
@@ -217,67 +211,14 @@ void CAvgGrad_Base::AddTauWall(const su2double *val_normal,
217211 tau[iDim][jDim] = tau[iDim][jDim]*(val_tau_wall/WallShearStress);
218212}
219213
220- void CAvgGrad_Base::GetMeanRateOfStrainMatrix (su2double **S_ij) const
221- {
222- /* --- Calculate the rate of strain tensor, using mean velocity gradients --- */
223-
224- if (nDim == 3 ){
225- S_ij[0 ][0 ] = Mean_GradPrimVar[1 ][0 ];
226- S_ij[1 ][1 ] = Mean_GradPrimVar[2 ][1 ];
227- S_ij[2 ][2 ] = Mean_GradPrimVar[3 ][2 ];
228- S_ij[0 ][1 ] = 0.5 * (Mean_GradPrimVar[1 ][1 ] + Mean_GradPrimVar[2 ][0 ]);
229- S_ij[0 ][2 ] = 0.5 * (Mean_GradPrimVar[1 ][2 ] + Mean_GradPrimVar[3 ][0 ]);
230- S_ij[1 ][2 ] = 0.5 * (Mean_GradPrimVar[2 ][2 ] + Mean_GradPrimVar[3 ][1 ]);
231- S_ij[1 ][0 ] = S_ij[0 ][1 ];
232- S_ij[2 ][1 ] = S_ij[1 ][2 ];
233- S_ij[2 ][0 ] = S_ij[0 ][2 ];
234- }
235- else {
236- S_ij[0 ][0 ] = Mean_GradPrimVar[1 ][0 ];
237- S_ij[1 ][1 ] = Mean_GradPrimVar[2 ][1 ];
238- S_ij[2 ][2 ] = 0.0 ;
239- S_ij[0 ][1 ] = 0.5 * (Mean_GradPrimVar[1 ][1 ] + Mean_GradPrimVar[2 ][0 ]);
240- S_ij[0 ][2 ] = 0.0 ;
241- S_ij[1 ][2 ] = 0.0 ;
242- S_ij[1 ][0 ] = S_ij[0 ][1 ];
243- S_ij[2 ][1 ] = S_ij[1 ][2 ];
244- S_ij[2 ][0 ] = S_ij[0 ][2 ];
245-
246- }
247- }
248-
249214void CAvgGrad_Base::SetReynoldsStressMatrix (su2double turb_ke){
250-
251- unsigned short iDim, jDim;
252- su2double **S_ij = new su2double* [3 ];
253- su2double muT = Mean_Eddy_Viscosity;
254- su2double divVel = 0 ;
255- su2double density;
256- su2double TWO3 = 2.0 /3.0 ;
257- density = Mean_PrimVar[nDim+2 ];
258-
259- for (iDim = 0 ; iDim < 3 ; iDim++){
260- S_ij[iDim] = new su2double [3 ];
261- }
262-
263- GetMeanRateOfStrainMatrix (S_ij);
264-
265- /* --- Using rate of strain matrix, calculate Reynolds stress tensor --- */
266-
267- for (iDim = 0 ; iDim < 3 ; iDim++){
268- divVel += S_ij[iDim][iDim];
269- }
270-
271- for (iDim = 0 ; iDim < 3 ; iDim++){
272- for (jDim = 0 ; jDim < 3 ; jDim++){
273- MeanReynoldsStress[iDim][jDim] = TWO3 * turb_ke * delta3[iDim][jDim]
274- - muT / density * (2 * S_ij[iDim][jDim] - TWO3 * divVel * delta3[iDim][jDim]);
215+ su2double meandensity = Mean_PrimVar[nDim+2 ];
216+ ComputeStressTensor (nDim, MeanReynoldsStress, Mean_GradPrimVar+1 , Mean_Eddy_Viscosity, meandensity, turb_ke, true );
217+ for (unsigned short iDim=0 ; iDim<3 ; iDim++){
218+ for (unsigned short jDim=0 ; jDim<3 ; jDim++){
219+ MeanReynoldsStress[iDim][jDim] /= (-meandensity);
275220 }
276221 }
277-
278- for (iDim = 0 ; iDim < 3 ; iDim++)
279- delete [] S_ij[iDim];
280- delete [] S_ij;
281222}
282223
283224void CAvgGrad_Base::SetPerturbedRSM (su2double turb_ke, const CConfig* config){
0 commit comments