StabilizationUtils: remove pointless bool return values

use return values instead of out-params
This commit is contained in:
Arne Morten Kvarving 2023-10-16 11:05:01 +02:00
parent e4e61a9b74
commit 32d7f01872
3 changed files with 39 additions and 47 deletions

View File

@ -47,47 +47,44 @@ double getTauPt (double dt, double mu, const Vector& U,
} }
bool getTauNSPt (double dt, double mu, const Vector& U, std::pair<double,double>
const Matrix& G, double &tauM, double& tauC, getTauNSPt (double dt, double mu, const Vector& U,
const Matrix& G, const double Ct, const double Cl)
{
double tauM = getTauPt(dt,mu,U,G,Ct,Cl);
double tauC = 1.0 / (tauM*G.trace());
return {tauM, tauC};
}
std::pair<double,double>
getTauNSALEPt (double dt, double mu, const Vector& U,
const Matrix& G,
const double Ct, const double Cl) const double Ct, const double Cl)
{ {
tauM = getTauPt(dt,mu,U,G,Ct,Cl); double tauM = getTauPt(dt,mu,U,G,Ct,Cl);
tauC = 1.0/(tauM*G.trace()); double tauC = tauM*(U.dot(U));
return true;
return {tauM, tauC};
} }
bool getTauNSALEPt (double dt, double mu, const Vector& U, Vector getTauPtJac (const Vector& U, const Matrix& G,
const Matrix& G, double & tauM, double& tauC, const double tauM)
const double Ct, const double Cl)
{ {
tauM = getTauPt(dt,mu,U,G,Ct,Cl); return -pow(tauM,3)*G*U;
tauC = tauM*(U.dot(U));
return true;
} }
bool getTauPtJac (const Vector& U, const Matrix& G, std::pair<Vector,Vector>
const double tauM, Vector& tauMjac) getTauNSPtJac (const Vector& U, const Matrix& G,
const double tauM, const double& tauC)
{ {
tauMjac = -pow(tauM,3)*G*U; Vector tauMjac = getTauPtJac(U, G, tauM);
Vector tauCjac = (-tauC/tauM) * tauMjac;
return true; return {tauMjac, tauCjac};
}
bool getTauNSPtJac (const Vector& U, const Matrix& G,
const double tauM, const double& tauC,
Vector& tauMjac, Vector& tauCjac)
{
if (!getTauPtJac(U, G, tauM, tauMjac))
return false;
tauCjac = (-tauC/tauM) * tauMjac;
return true;
} }
} }

View File

@ -40,13 +40,11 @@ namespace StabilizationUtils {
//! \param[in] mu Diffusion/viscosity parameter //! \param[in] mu Diffusion/viscosity parameter
//! \param[in] U Velocity vector //! \param[in] U Velocity vector
//! \param[in] G The G matrix //! \param[in] G The G matrix
//! \param[out] tauM Stabilization parameter for momentum
//! \param[out] tauC Stabilization parameter for continuity
//! \param[in] Ct VMS parameter //! \param[in] Ct VMS parameter
//! \param[in] Cl VMS parameter //! \param[in] Cl VMS parameter
//! \details Stabilization parameters in integration point //! \return Stabilization parameters in integration point
bool getTauNSPt(double dt, double mu, const Vector& U, const Matrix& G, std::pair<double,double>
double& tauM, double& tauC, getTauNSPt(double dt, double mu, const Vector& U, const Matrix& G,
const double Ct = 2.0, const double Cl = 36.0); const double Ct = 2.0, const double Cl = 36.0);
//! \brief Computes stabilization parameters for Navier-Stokes equations. //! \brief Computes stabilization parameters for Navier-Stokes equations.
@ -54,31 +52,28 @@ namespace StabilizationUtils {
//! \param[in] mu Diffusion/viscosity parameter //! \param[in] mu Diffusion/viscosity parameter
//! \param[in] U Velocity vector //! \param[in] U Velocity vector
//! \param[in] G The G matrix //! \param[in] G The G matrix
//! \param[out] tauM Stabilization parameter for momentum
//! \param[out] tauC Stabilization parameter for continuity
//! \param[in] Ct VMS parameter //! \param[in] Ct VMS parameter
//! \param[in] Cl VMS parameter //! \param[in] Cl VMS parameter
//! \details Stabilization parameters in integration point //! \return Stabilization parameters in integration point
bool getTauNSALEPt(double dt, double mu, const Vector& U, const Matrix& G, std::pair<double,double>
double& tauM, double& tauC, getTauNSALEPt(double dt, double mu, const Vector& U, const Matrix& G,
const double Ct = 2.0, const double Cl = 36.0); const double Ct = 2.0, const double Cl = 36.0);
//! \brief Computes variation of stability parameters with respect to velocity. //! \brief Computes variation of stability parameters with respect to velocity.
//! \param[in] U Velocity vector //! \param[in] U Velocity vector
//! \param[in] G The G matrix //! \param[in] G The G matrix
//! \param[in] tauM Stabilization parameter for momentum //! \param[in] tauM Stabilization parameter for momentum
//! \param[out] tauMjac Variation of tauM with respect to U Vector getTauPtJac(const Vector& U, const Matrix& G,
bool getTauPtJac(const Vector& U, const Matrix& G, const double tauM, Vector& tauMjac); const double tauM);
//! \brief Computes variation of stability parameters with respect to velocity. //! \brief Computes variation of stability parameters with respect to velocity.
//! \param[in] U Velocity vector //! \param[in] U Velocity vector
//! \param[in] G The G matrix //! \param[in] G The G matrix
//! \param[in] tauM Stabilization parameter for momentum //! \param[in] tauM Stabilization parameter for momentum
//! \param[in] tauC Stabilization parameter for continuity //! \param[in] tauC Stabilization parameter for continuity
//! \param[out] tauMjac Variation of tauM with respect to U std::pair<Vector,Vector>
//! \param[out] tauCjac Variation of tauC with respect to U getTauNSPtJac(const Vector& U, const Matrix& G,
bool getTauNSPtJac(const Vector& U, const Matrix& G, const double tauM, const double tauM, const double& tauC);
const double& tauC, Vector& tauMjac, Vector& tauCjac);
} }
#endif #endif

View File

@ -67,7 +67,7 @@ TEST(TestStabilizationUtils, GetTauNSPt)
utl::getGmat(J, &du[0], G); utl::getGmat(J, &du[0], G);
double tauM, tauC; double tauM, tauC;
ASSERT_TRUE(StabilizationUtils::getTauNSPt(0.1, 0.3, U, G, tauM, tauC)); std::tie(tauM,tauC) = StabilizationUtils::getTauNSPt(0.1, 0.3, U, G);
ASSERT_FLOAT_EQ(tauM, 0.016634906); ASSERT_FLOAT_EQ(tauM, 0.016634906);
ASSERT_FLOAT_EQ(tauC, 1.87858); ASSERT_FLOAT_EQ(tauC, 1.87858);
} }
@ -85,7 +85,7 @@ TEST(TestStabilizationUtils, GetTauNSALEPt)
utl::getGmat(J, &du[0], G); utl::getGmat(J, &du[0], G);
double tauM, tauC; double tauM, tauC;
ASSERT_TRUE(StabilizationUtils::getTauNSALEPt(0.1, 0.3, U, G, tauM, tauC)); std::tie(tauM,tauC) = StabilizationUtils::getTauNSALEPt(0.1, 0.3, U, G);
ASSERT_FLOAT_EQ(tauM, 0.016634906); ASSERT_FLOAT_EQ(tauM, 0.016634906);
ASSERT_FLOAT_EQ(tauC, 0.049904719); ASSERT_FLOAT_EQ(tauC, 0.049904719);
} }