Skip to content

Commit

Permalink
using the indices in scalar convection
Browse files Browse the repository at this point in the history
  • Loading branch information
pcarruscag committed Nov 7, 2021
1 parent 15a6915 commit ac3f474
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 31 deletions.
20 changes: 11 additions & 9 deletions SU2_CFD/include/numerics/scalar/scalar_convection.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,16 +47,18 @@
template <class FlowIndices>
class CUpwScalar : public CNumerics {
protected:
su2double a0 = 0.0; /*!< \brief The maximum of the face-normal velocity and 0 */
su2double a1 = 0.0; /*!< \brief The minimum of the face-normal velocity and 0 */
const FlowIndices idx; /*!< \brief Object to manage the access to the flow primitives. */
su2double a0 = 0.0; /*!< \brief The maximum of the face-normal velocity and 0. */
su2double a1 = 0.0; /*!< \brief The minimum of the face-normal velocity and 0. */
su2double* Flux = nullptr; /*!< \brief Final result, diffusive flux/residual. */
su2double** Jacobian_i = nullptr; /*!< \brief Flux Jacobian w.r.t. node i. */
su2double** Jacobian_j = nullptr; /*!< \brief Flux Jacobian w.r.t. node j. */

const bool implicit = false, incompressible = false, dynamic_grid = false;

/*!
* \brief A pure virtual function; Adds any extra variables to AD
* \brief A pure virtual function. Derived classes must use it to register the additional
* variables they use as preaccumulation inputs, e.g. the density for SST.
*/
virtual void ExtraADPreaccIn() = 0;

Expand All @@ -76,6 +78,7 @@ class CUpwScalar : public CNumerics {
*/
CUpwScalar(unsigned short ndim, unsigned short nvar, const CConfig* config)
: CNumerics(ndim, nvar, config),
idx(ndim, config->GetnSpecies()),
implicit(config->GetKind_TimeIntScheme_Turb() == EULER_IMPLICIT),
incompressible(config->GetKind_Regime() == ENUM_REGIME::INCOMPRESSIBLE),
dynamic_grid(config->GetDynamic_Grid()) {
Expand Down Expand Up @@ -117,22 +120,21 @@ class CUpwScalar : public CNumerics {
AD::SetPreaccIn(GridVel_i, nDim);
AD::SetPreaccIn(GridVel_j, nDim);
}
AD::SetPreaccIn(&V_i[idx.Velocity()], nDim);
AD::SetPreaccIn(&V_j[idx.Velocity()], nDim);

ExtraADPreaccIn();

Density_i = V_i[nDim + 2];
Density_j = V_j[nDim + 2];

su2double q_ij = 0.0;
if (dynamic_grid) {
for (unsigned short iDim = 0; iDim < nDim; iDim++) {
su2double Velocity_i = V_i[iDim + 1] - GridVel_i[iDim];
su2double Velocity_j = V_j[iDim + 1] - GridVel_j[iDim];
su2double Velocity_i = V_i[iDim + idx.Velocity()] - GridVel_i[iDim];
su2double Velocity_j = V_j[iDim + idx.Velocity()] - GridVel_j[iDim];
q_ij += 0.5 * (Velocity_i + Velocity_j) * Normal[iDim];
}
} else {
for (unsigned short iDim = 0; iDim < nDim; iDim++) {
q_ij += 0.5 * (V_i[iDim + 1] + V_j[iDim + 1]) * Normal[iDim];
q_ij += 0.5 * (V_i[iDim + idx.Velocity()] + V_j[iDim + idx.Velocity()]) * Normal[iDim];
}
}

Expand Down
21 changes: 7 additions & 14 deletions SU2_CFD/include/numerics/turbulent/turb_convection.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,6 @@ template <class FlowIndices>
class CUpwSca_TurbSA final : public CUpwScalar<FlowIndices> {
private:
using Base = CUpwScalar<FlowIndices>;
using Base::nDim;
using Base::V_i;
using Base::V_j;
using Base::a0;
using Base::a1;
using Base::Flux;
Expand All @@ -53,12 +50,9 @@ class CUpwSca_TurbSA final : public CUpwScalar<FlowIndices> {
using Base::implicit;

/*!
* \brief Adds any extra variables to AD
* \brief Adds any extra variables to AD.
*/
void ExtraADPreaccIn() override {
AD::SetPreaccIn(V_i, nDim+1);
AD::SetPreaccIn(V_j, nDim+1);
}
void ExtraADPreaccIn() override {}

/*!
* \brief SA specific steps in the ComputeResidual method
Expand Down Expand Up @@ -104,25 +98,24 @@ class CUpwSca_TurbSST final : public CUpwScalar<FlowIndices> {
using Base::Jacobian_j;
using Base::ScalarVar_i;
using Base::ScalarVar_j;
using Base::Density_i;
using Base::Density_j;
using Base::implicit;
using Base::idx;

/*!
* \brief Adds any extra variables to AD
*/
void ExtraADPreaccIn() override {
AD::SetPreaccIn(V_i, nDim+3);
AD::SetPreaccIn(V_j, nDim+3);
AD::SetPreaccIn(V_i[idx.Density()]);
AD::SetPreaccIn(V_j[idx.Density()]);
}

/*!
* \brief SST specific steps in the ComputeResidual method
* \param[in] config - Definition of the particular problem.
*/
void FinishResidualCalc(const CConfig* config) override {
Flux[0] = a0*Density_i*ScalarVar_i[0] + a1*Density_j*ScalarVar_j[0];
Flux[1] = a0*Density_i*ScalarVar_i[1] + a1*Density_j*ScalarVar_j[1];
Flux[0] = a0*V_i[idx.Density()]*ScalarVar_i[0] + a1*V_j[idx.Density()]*ScalarVar_j[0];
Flux[1] = a0*V_i[idx.Density()]*ScalarVar_i[1] + a1*V_j[idx.Density()]*ScalarVar_j[1];

if (implicit) {
Jacobian_i[0][0] = a0; Jacobian_i[0][1] = 0.0;
Expand Down
30 changes: 22 additions & 8 deletions SU2_CFD/src/drivers/CDriver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,10 @@
#include "../../include/interfaces/fsi/CFlowTractionInterface.hpp"
#include "../../include/interfaces/fsi/CDiscAdjFlowTractionInterface.hpp"

#include "../../include/variables/CEulerVariable.hpp"
#include "../../include/variables/CIncEulerVariable.hpp"
#include "../../include/variables/CNEMOEulerVariable.hpp"

#include "../../include/numerics/template.hpp"
#include "../../include/numerics/transition.hpp"
#include "../../include/numerics/radiation.hpp"
Expand Down Expand Up @@ -1309,8 +1313,14 @@ void CDriver::InstantiateTurbulentNumerics(unsigned short nVar_Turb, int offset,
}
}
/*--- Explicit instantiation of the template above, needed because it is defined in a cpp file, instead of hpp. ---*/
template void CDriver::InstantiateTurbulentNumerics<int>(unsigned short, int, const CConfig*,
const CSolver*, CNumerics****&) const;
template void CDriver::InstantiateTurbulentNumerics<CEulerVariable::CIndices<unsigned short>>(
unsigned short, int, const CConfig*, const CSolver*, CNumerics****&) const;

template void CDriver::InstantiateTurbulentNumerics<CIncEulerVariable::CIndices<unsigned short>>(
unsigned short, int, const CConfig*, const CSolver*, CNumerics****&) const;

template void CDriver::InstantiateTurbulentNumerics<CNEMOEulerVariable::CIndices<unsigned short>>(
unsigned short, int, const CConfig*, const CSolver*, CNumerics****&) const;

void CDriver::Numerics_Preprocessing(CConfig *config, CGeometry **geometry, CSolver ***solver, CNumerics ****&numerics) const {

Expand Down Expand Up @@ -1765,7 +1775,7 @@ void CDriver::Numerics_Preprocessing(CConfig *config, CGeometry **geometry, CSol

/*--- Solver definition for the Potential, Euler, Navier-Stokes NEMO problems ---*/

if ((NEMO_euler) || (NEMO_ns)) {
if (NEMO_euler || NEMO_ns) {

/*--- Definition of the convective scheme for each equation and mesh level ---*/
switch (config->GetKind_ConvNumScheme_Flow()) {
Expand Down Expand Up @@ -1918,11 +1928,15 @@ void CDriver::Numerics_Preprocessing(CConfig *config, CGeometry **geometry, CSol
/*--- Solver definition for the turbulent model problem ---*/

if (turbulent) {
/// TODO: Replace the dummy int type here for the real thing commented below.
InstantiateTurbulentNumerics<int>(nVar_Turb, offset, config, solver[MESH_0][TURB_SOL], numerics);
// if (incompressible) InstantiateTurbulentNumerics<CIncEulerVariable::Indices>(...);
// else if (nemo) InstantiateTurbulentNumerics<CNEMOEulerVariable::Indices>(...);
// else InstantiateTurbulentNumerics<CEulerVariable::Indices>(...);
if (incompressible)
InstantiateTurbulentNumerics<CIncEulerVariable::CIndices<unsigned short> >(nVar_Turb, offset, config,
solver[MESH_0][TURB_SOL], numerics);
else if (NEMO_ns)
InstantiateTurbulentNumerics<CNEMOEulerVariable::CIndices<unsigned short> >(nVar_Turb, offset, config,
solver[MESH_0][TURB_SOL], numerics);
else
InstantiateTurbulentNumerics<CEulerVariable::CIndices<unsigned short> >(nVar_Turb, offset, config,
solver[MESH_0][TURB_SOL], numerics);
}

/*--- Solver definition for the transition model problem ---*/
Expand Down

0 comments on commit ac3f474

Please sign in to comment.