Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion SU2_CFD/include/solvers/CFVMFlowSolverBase.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2413,7 +2413,7 @@ class CFVMFlowSolverBase : public CSolver {
*/
inline su2double GetCSkinFriction(unsigned short val_marker, unsigned long val_vertex,
unsigned short val_dim) const final {
return CSkinFriction[val_marker][val_dim][val_vertex];
return CSkinFriction[val_marker](val_vertex,val_dim);
}

/*!
Expand Down
11 changes: 5 additions & 6 deletions SU2_CFD/include/solvers/CFVMFlowSolverBase.inl
Original file line number Diff line number Diff line change
Expand Up @@ -197,9 +197,7 @@ void CFVMFlowSolverBase<V, R>::Allocate(const CConfig& config) {

/*--- Skin friction in all the markers ---*/

CSkinFriction.resize(nMarker);
for (iMarker = 0; iMarker < nMarker; iMarker++)
CSkinFriction[iMarker].resize(nDim, nVertex[iMarker]) = su2double(0.0);
Alloc3D(nMarker, nVertex, nDim, CSkinFriction);

/*--- Wall Shear Stress in all the markers ---*/

Expand Down Expand Up @@ -2412,8 +2410,8 @@ void CFVMFlowSolverBase<V, FlowRegime>::Friction_Forces(const CGeometry* geometr
unsigned long iVertex, iPoint, iPointNormal;
unsigned short iMarker, iMarker_Monitoring, iDim, jDim;
unsigned short T_INDEX = 0, TVE_INDEX = 0, VEL_INDEX = 0;
su2double Viscosity = 0.0, WallDist[3] = {0.0}, Area, TauNormal, RefVel2 = 0.0, dTn, dTven,
RefDensity = 0.0, GradTemperature, Density = 0.0, WallDistMod, FrictionVel,
su2double Viscosity = 0.0, WallDist[3] = {0.0}, Area, TauNormal, dTn, dTven,
GradTemperature, Density = 0.0, WallDistMod, FrictionVel,
UnitNormal[3] = {0.0}, TauElem[3] = {0.0}, TauTangent[3] = {0.0}, Tau[3][3] = {{0.0}}, Cp,
thermal_conductivity, MaxNorm = 8.0, Grad_Vel[3][3] = {{0.0}}, Grad_Temp[3] = {0.0}, AxiFactor;
const su2double *Coord = nullptr, *Coord_Normal = nullptr, *Normal = nullptr;
Expand Down Expand Up @@ -2443,6 +2441,7 @@ void CFVMFlowSolverBase<V, FlowRegime>::Friction_Forces(const CGeometry* geometr
}

const su2double factor = 1.0 / AeroCoeffForceRef;
const su2double factorFric = config->GetRefArea() * factor;

/*--- Variables initialization ---*/

Expand Down Expand Up @@ -2546,7 +2545,7 @@ void CFVMFlowSolverBase<V, FlowRegime>::Friction_Forces(const CGeometry* geometr
WallShearStress[iMarker][iVertex] = 0.0;
for (iDim = 0; iDim < nDim; iDim++) {
TauTangent[iDim] = TauElem[iDim] - TauNormal * UnitNormal[iDim];
CSkinFriction[iMarker][iDim][iVertex] = TauTangent[iDim] / (0.5 * RefDensity * RefVel2);
CSkinFriction[iMarker](iVertex,iDim) = TauTangent[iDim] * factorFric;
WallShearStress[iMarker][iVertex] += TauTangent[iDim] * TauTangent[iDim];
}
WallShearStress[iMarker][iVertex] = sqrt(WallShearStress[iMarker][iVertex]);
Expand Down
40 changes: 15 additions & 25 deletions SU2_CFD/src/solvers/CNSSolver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -184,16 +184,11 @@ void CNSSolver::Viscous_Residual(unsigned long iEdge, CGeometry *geometry, CSolv
void CNSSolver::Buffet_Monitoring(const CGeometry *geometry, const CConfig *config) {

unsigned long iVertex;
unsigned short Boundary, Monitoring, iMarker, iMarker_Monitoring, iDim;
unsigned short iMarker, iMarker_Monitoring;
const su2double* Vel_FS = Velocity_Inf;
su2double VelMag_FS = 0.0, SkinFrictionMag = 0.0, SkinFrictionDot = 0.0, *Normal, Area, Sref = config->GetRefArea();
su2double k = config->GetBuffet_k(), lam = config->GetBuffet_lambda();
string Marker_Tag, Monitoring_Tag;
const su2double k = config->GetBuffet_k(), lam = config->GetBuffet_lambda(), Sref = config->GetRefArea();

for (iDim = 0; iDim < nDim; iDim++){
VelMag_FS += Vel_FS[iDim]*Vel_FS[iDim];
}
VelMag_FS = sqrt(VelMag_FS);
const su2double VelMag_FS = GeometryToolbox::Norm(nDim, Vel_FS);

/*-- Variables initialization ---*/

Expand All @@ -209,24 +204,18 @@ void CNSSolver::Buffet_Monitoring(const CGeometry *geometry, const CConfig *conf

Buffet_Metric[iMarker] = 0.0;

Boundary = config->GetMarker_All_KindBC(iMarker);
Monitoring = config->GetMarker_All_Monitoring(iMarker);
const auto Monitoring = config->GetMarker_All_Monitoring(iMarker);

if ((Boundary == HEAT_FLUX) || (Boundary == ISOTHERMAL) || (Boundary == HEAT_FLUX) || (Boundary == CHT_WALL_INTERFACE)) {
if (config->GetViscous_Wall(iMarker)) {

/*--- Loop over the vertices to compute the buffet sensor ---*/

for (iVertex = 0; iVertex < geometry->nVertex[iMarker]; iVertex++) {

/*--- Perform dot product of skin friction with freestream velocity ---*/

SkinFrictionMag = 0.0;
SkinFrictionDot = 0.0;
for(iDim = 0; iDim < nDim; iDim++){
SkinFrictionMag += pow(CSkinFriction[iMarker][iDim][iVertex], 2);
SkinFrictionDot += CSkinFriction[iMarker][iDim][iVertex]*Vel_FS[iDim];
}
SkinFrictionMag = sqrt(SkinFrictionMag);
const su2double SkinFrictionMag = GeometryToolbox::Norm(nDim, CSkinFriction[iMarker][iVertex]);
su2double SkinFrictionDot = GeometryToolbox::DotProduct(nDim, CSkinFriction[iMarker][iVertex], Vel_FS);

/*--- Normalize the dot product ---*/

Expand All @@ -238,27 +227,28 @@ void CNSSolver::Buffet_Monitoring(const CGeometry *geometry, const CConfig *conf

/*--- Integrate buffet sensor ---*/

if(Monitoring == YES){
if (Monitoring == YES){

Normal = geometry->vertex[iMarker][iVertex]->GetNormal();
Area = GeometryToolbox::Norm(nDim, Normal);
auto Normal = geometry->vertex[iMarker][iVertex]->GetNormal();
su2double Area = GeometryToolbox::Norm(nDim, Normal);

Buffet_Metric[iMarker] += Buffet_Sensor[iMarker][iVertex]*Area/Sref;

}

}

if(Monitoring == YES){
if (Monitoring == YES){

Total_Buffet_Metric += Buffet_Metric[iMarker];

/*--- Per surface buffet metric ---*/

for (iMarker_Monitoring = 0; iMarker_Monitoring < config->GetnMarker_Monitoring(); iMarker_Monitoring++) {
Monitoring_Tag = config->GetMarker_Monitoring_TagBound(iMarker_Monitoring);
Marker_Tag = config->GetMarker_All_TagBound(iMarker);
if (Marker_Tag == Monitoring_Tag) Surface_Buffet_Metric[iMarker_Monitoring] = Buffet_Metric[iMarker];
auto Monitoring_Tag = config->GetMarker_Monitoring_TagBound(iMarker_Monitoring);
auto Marker_Tag = config->GetMarker_All_TagBound(iMarker);
if (Marker_Tag == Monitoring_Tag)
Surface_Buffet_Metric[iMarker_Monitoring] = Buffet_Metric[iMarker];
}

}
Expand Down