@@ -449,15 +449,15 @@ class CNumerics {
449449 * \param[in] nDim - 2 or 3
450450 * \param[out] rateofstrain - Rate of strain matrix
451451 * \param[in] velgrad - A velocity gradient matrix.
452- * \tparam TWOINDICES_1 - any type that supports the [][] interface
453- * \tparam TWOINDICES_2 - any type that supports the [][] interface
452+ * \tparam Mat1 - any type that supports the [][] interface
453+ * \tparam Mat2 - any type that supports the [][] interface
454454 */
455- template <class TWOINDICES_1 , class TWOINDICES_2 >
456- inline static void ComputeMeanRateOfStrainMatrix (unsigned short nDim, TWOINDICES_1 & rateofstrain, const TWOINDICES_2 & velgrad){
455+ template <class Mat1 , class Mat2 >
456+ FORCEINLINE static void ComputeMeanRateOfStrainMatrix (size_t nDim, Mat1 & rateofstrain, const Mat2 & velgrad){
457457
458458 /* --- Calculate the rate of strain tensor, using mean velocity gradients --- */
459459
460- if (nDim == 3 ){
460+ if (nDim == 3 ) {
461461 rateofstrain[0 ][0 ] = velgrad[0 ][0 ];
462462 rateofstrain[1 ][1 ] = velgrad[1 ][1 ];
463463 rateofstrain[2 ][2 ] = velgrad[2 ][2 ];
@@ -501,17 +501,17 @@ class CNumerics {
501501 * \tparam Mat2 - any type that supports the [][] interface
502502 */
503503 template <class Mat1 , class Mat2 , class Scalar >
504- FORCEINLINE static void ComputeStressTensor (int nDim, Mat1& stress, const Mat2& velgrad,
504+ FORCEINLINE static void ComputeStressTensor (size_t nDim, Mat1& stress, const Mat2& velgrad,
505505 Scalar viscosity, Scalar density=0.0 ,
506506 Scalar turb_ke=0.0 , bool reynolds3x3=false ){
507507 Scalar divVel = 0.0 ;
508- for (int iDim = 0 ; iDim < nDim; iDim++) {
508+ for (size_t iDim = 0 ; iDim < nDim; iDim++) {
509509 divVel += velgrad[iDim][iDim];
510510 }
511511 Scalar pTerm = 2 ./3 . * (divVel * viscosity + density * turb_ke);
512512
513- for (int iDim = 0 ; iDim < nDim; iDim++){
514- for (int jDim = 0 ; jDim < nDim; jDim++){
513+ for (size_t iDim = 0 ; iDim < nDim; iDim++){
514+ for (size_t jDim = 0 ; jDim < nDim; jDim++){
515515 stress[iDim][jDim] = viscosity * (velgrad[iDim][jDim]+velgrad[jDim][iDim]);
516516 }
517517 stress[iDim][iDim] -= pTerm;
@@ -534,42 +534,43 @@ class CNumerics {
534534 * \param[in,out] tau: Shear stress tensor.
535535 */
536536 template <class Mat1 , class Mat2 >
537- FORCEINLINE static void AddQCR (int nDim, const Mat1& gradvel, Mat2& tau) {
537+ FORCEINLINE static void AddQCR (size_t nDim, const Mat1& gradvel, Mat2& tau) {
538+ using Scalar = typename std::decay<decltype (gradvel[0 ][0 ])>::type;
538539
539- const su2double c_cr1= 0.3 ;
540+ const Scalar c_cr1 = 0.3 ;
540541
541542 /* --- Denominator Antisymmetric normalized rotation tensor ---*/
542543
543- su2double den_aux = 0.0 ;
544- for (int iDim = 0 ; iDim < nDim; iDim++)
545- for (int jDim = 0 ; jDim < nDim; jDim++)
546- den_aux += gradvel[iDim][jDim] * gradvel[iDim][jDim];
547- den_aux = sqrt (max (den_aux ,1E-10 ));
544+ Scalar factor = 0.0 ;
545+ for (size_t iDim = 0 ; iDim < nDim; iDim++)
546+ for (size_t jDim = 0 ; jDim < nDim; jDim++)
547+ factor += gradvel[iDim][jDim] * gradvel[iDim][jDim];
548+ factor = 1.0 / sqrt (max (factor ,1E-10 ));
548549
549550 /* --- Adding the QCR contribution ---*/
550551
551- su2double tauQCR[MAXNDIM][MAXNDIM] = {{0.0 }};
552+ Scalar tauQCR[MAXNDIM][MAXNDIM] = {{0.0 }};
552553
553- for (int iDim = 0 ; iDim < nDim; iDim++){
554- for (int jDim = 0 ; jDim < nDim; jDim++){
555- for (int kDim = 0 ; kDim < nDim; kDim ++){
556- su2double O_ik = (gradvel[iDim][kDim ] - gradvel[kDim ][iDim])/ den_aux ;
557- su2double O_jk = (gradvel[jDim][kDim ] - gradvel[kDim ][jDim])/ den_aux ;
558- tauQCR[iDim][jDim] = c_cr1 * (( O_ik * tau[jDim][kDim ]) + ( O_jk * tau[iDim][kDim ])) ;
554+ for (size_t iDim = 0 ; iDim < nDim; iDim++){
555+ for (size_t jDim = 0 ; jDim < nDim; jDim++){
556+ for (size_t kDim = 0 ; kDim < nDim; kDim ++){
557+ Scalar O_ik = (gradvel[iDim][kDim ] - gradvel[kDim ][iDim]) * factor ;
558+ Scalar O_jk = (gradvel[jDim][kDim ] - gradvel[kDim ][jDim]) * factor ;
559+ tauQCR[iDim][jDim] += O_ik * tau[jDim][kDim ] + O_jk * tau[iDim][kDim ];
559560 }
560561 }
561562 }
562563
563- for (int iDim = 0 ; iDim < nDim; iDim++)
564- for (int jDim = 0 ; jDim < nDim; jDim++)
565- tau[iDim][jDim] -= tauQCR[iDim][jDim];
564+ for (size_t iDim = 0 ; iDim < nDim; iDim++)
565+ for (size_t jDim = 0 ; jDim < nDim; jDim++)
566+ tau[iDim][jDim] -= c_cr1 * tauQCR[iDim][jDim];
566567 }
567568
568569 /* !
569570 * \brief Perturb the Reynolds stress tensor based on parameters.
570571 * \param[in] nDim - Dimension of the flow problem, 2 or 3.
571572 * \param[in] uq_eigval_comp - Component 1C 2C 3C.
572- * \param[in] uq_permute - Whether to swap order of eigen values .
573+ * \param[in] uq_permute - Whether to swap order of eigen vectors .
573574 * \param[in] uq_delta_b - Delta_b parameter.
574575 * \param[in] uq_urlx - Relaxation factor.
575576 * \param[in] velgrad - A velocity gradient matrix.
@@ -579,20 +580,20 @@ class CNumerics {
579580 * \param[out] MeanPerturbedRSM - Perturbed stress tensor.
580581 */
581582 template <class Mat1 , class Mat2 , class Scalar >
582- FORCEINLINE static void ComputePerturbedRSM (int nDim, int uq_eigval_comp, bool uq_permute, su2double uq_delta_b,
583+ NEVERINLINE static void ComputePerturbedRSM (size_t nDim, size_t uq_eigval_comp, bool uq_permute, su2double uq_delta_b,
583584 su2double uq_urlx, const Mat1& velgrad, Scalar density,
584585 Scalar viscosity, Scalar turb_ke, Mat2& MeanPerturbedRSM) {
585586 Scalar MeanReynoldsStress[3 ][3 ];
586587 ComputeStressTensor (nDim, MeanReynoldsStress, velgrad, viscosity, density, turb_ke, true );
587- for (int iDim = 0 ; iDim < 3 ; iDim++)
588- for (int jDim = 0 ; jDim < 3 ; jDim++)
588+ for (size_t iDim = 0 ; iDim < 3 ; iDim++)
589+ for (size_t jDim = 0 ; jDim < 3 ; jDim++)
589590 MeanReynoldsStress[iDim][jDim] /= -density;
590591
591592 /* --- Calculate anisotropic part of Reynolds Stress tensor --- */
592593
593594 Scalar A_ij[3 ][3 ];
594- for (int iDim = 0 ; iDim < 3 ; iDim++) {
595- for (int jDim = 0 ; jDim < 3 ; jDim++) {
595+ for (size_t iDim = 0 ; iDim < 3 ; iDim++) {
596+ for (size_t jDim = 0 ; jDim < 3 ; jDim++) {
596597 A_ij[iDim][jDim] = .5 * MeanReynoldsStress[iDim][jDim] / turb_ke;
597598 }
598599 A_ij[iDim][iDim] -= 1.0 /3.0 ;
@@ -643,19 +644,19 @@ class CNumerics {
643644
644645 /* permute eigenvectors if required */
645646 if (uq_permute) {
646- for (int jDim= 0 ; jDim< 3 ; jDim++)
647+ for (size_t jDim = 0 ; jDim < 3 ; jDim++)
647648 swap (Eig_Vec[0 ][jDim], Eig_Vec[2 ][jDim]);
648649 }
649650
650651 CBlasStructure::EigenRecomposition (A_ij, Eig_Vec, Eig_Val, 3 );
651652
652653 /* compute perturbed Reynolds stress matrix; using under-relaxation factor (uq_urlx)*/
653- for (int iDim = 0 ; iDim < 3 ; iDim++) {
654- for (int jDim = 0 ; jDim < 3 ; jDim++) {
654+ for (size_t iDim = 0 ; iDim < 3 ; iDim++) {
655+ for (size_t jDim = 0 ; jDim < 3 ; jDim++) {
655656 auto delta_ij = (jDim==iDim)? 1.0 : 0.0 ;
656657 MeanPerturbedRSM[iDim][jDim] = 2.0 * turb_ke * (A_ij[iDim][jDim] + 1.0 /3.0 * delta_ij);
657658 MeanPerturbedRSM[iDim][jDim] = MeanReynoldsStress[iDim][jDim] +
658- uq_urlx*(MeanPerturbedRSM[iDim][jDim] - MeanReynoldsStress[iDim][jDim]);
659+ uq_urlx*(MeanPerturbedRSM[iDim][jDim] - MeanReynoldsStress[iDim][jDim]);
659660 }
660661 }
661662 }
0 commit comments