From f35ea4225f4225d36bc646fd0c068e77df353931 Mon Sep 17 00:00:00 2001 From: Ryan Black <56736259+ryanblack129@users.noreply.github.com> Date: Fri, 6 Mar 2026 12:01:49 -0500 Subject: [PATCH] Update Tangent_ShearViscosity_StrainRate --- FEBioFluid/FEBinghamFluid.cpp | 6 +++--- FEBioFluid/FECarreauFluid.cpp | 4 +++- FEBioFluid/FECarreauYasudaFluid.cpp | 4 +++- FEBioFluid/FECrossFluid.cpp | 4 +++- FEBioFluid/FEPowellEyringFluid.cpp | 4 +++- FEBioFluid/FEQuemadaFluid.cpp | 5 ++++- 6 files changed, 19 insertions(+), 8 deletions(-) diff --git a/FEBioFluid/FEBinghamFluid.cpp b/FEBioFluid/FEBinghamFluid.cpp index f4e3ab539..dc2f6dc7b 100644 --- a/FEBioFluid/FEBinghamFluid.cpp +++ b/FEBioFluid/FEBinghamFluid.cpp @@ -103,12 +103,12 @@ double FEBinghamFluid::Tangent_ShearViscosity_StrainRate(FEMaterialPoint& mp) { FEFluidMaterialPoint& vt = *mp.ExtractData(); mat3ds D = vt.RateOfDeformation(); - double dmu = 0; + double dmu_dgdot = 0; double gdot = sqrt(2 * (D.sqr()).tr()); if (gdot > 0) { - dmu = m_tauy / pow(gdot, 2) * ((1 + m_n * gdot) * exp(-m_n * gdot) - 1); + dmu_dgdot = m_tauy / pow(gdot, 2) * ((1 + m_n * gdot) * exp(-m_n * gdot) - 1); } - return dmu; + return dmu_dgdot; } //----------------------------------------------------------------------------- diff --git a/FEBioFluid/FECarreauFluid.cpp b/FEBioFluid/FECarreauFluid.cpp index f3e48feb2..e55731d88 100644 --- a/FEBioFluid/FECarreauFluid.cpp +++ b/FEBioFluid/FECarreauFluid.cpp @@ -105,7 +105,9 @@ double FECarreauFluid::Tangent_ShearViscosity_StrainRate(FEMaterialPoint& mp) double dmu = 2 * (m_mu0 - m_mui) * (m_n - 1) * m_lam * m_lam * pow(1 + lamg2, (m_n - 3) * 0.5); - return dmu; + double dmu_dgdot = 0.5 * gdot * dmu; + + return dmu_dgdot; } //----------------------------------------------------------------------------- diff --git a/FEBioFluid/FECarreauYasudaFluid.cpp b/FEBioFluid/FECarreauYasudaFluid.cpp index 816e6b77a..95f32a83c 100644 --- a/FEBioFluid/FECarreauYasudaFluid.cpp +++ b/FEBioFluid/FECarreauYasudaFluid.cpp @@ -110,7 +110,9 @@ double FECarreauYasudaFluid::Tangent_ShearViscosity_StrainRate(FEMaterialPoint& double dmu = (m_a >= 2) ? 2 * (m_mu0 - m_mui) * (m_n - 1) * pow(m_lam, m_a) * pow(gdot, m_a - 2) * pow(1 + lamga, (m_n - m_a - 1) / m_a) : 0; - return dmu; + double dmu_dgdot = 0.5 * gdot * dmu; + + return dmu_dgdot; } //----------------------------------------------------------------------------- diff --git a/FEBioFluid/FECrossFluid.cpp b/FEBioFluid/FECrossFluid.cpp index 65c76db45..8a052bb50 100644 --- a/FEBioFluid/FECrossFluid.cpp +++ b/FEBioFluid/FECrossFluid.cpp @@ -106,7 +106,9 @@ double FECrossFluid::Tangent_ShearViscosity_StrainRate(FEMaterialPoint& mp) double dmu = -2 * (m_mu0 - m_mui) * m_m * pow(m_lam, m_m) * pow(gdot, m_m - 2) / pow(1 + pow(lamg, m_m), 2); - return dmu; + double dmu_dgdot = 0.5 * gdot * dmu; + + return dmu_dgdot; } //----------------------------------------------------------------------------- diff --git a/FEBioFluid/FEPowellEyringFluid.cpp b/FEBioFluid/FEPowellEyringFluid.cpp index e85728f82..2997eea6e 100644 --- a/FEBioFluid/FEPowellEyringFluid.cpp +++ b/FEBioFluid/FEPowellEyringFluid.cpp @@ -107,7 +107,9 @@ double FEPowellEyringFluid::Tangent_ShearViscosity_StrainRate(FEMaterialPoint& m double dmu = (lamg < 1e-3) ? -2 * (m_mu0 - m_mui) * m_lam * m_lam / 3. : (2 * (m_mu0 - m_mui) * (gdot / sqrt(1 + pow(lamg, 2)) - asinh(lamg) / m_lam)) / pow(gdot, 3); - return dmu; + double dmu_dgdot = 0.5 * gdot * dmu; + + return dmu_dgdot; } //----------------------------------------------------------------------------- diff --git a/FEBioFluid/FEQuemadaFluid.cpp b/FEBioFluid/FEQuemadaFluid.cpp index 8ef7338ee..ee7c35e2e 100644 --- a/FEBioFluid/FEQuemadaFluid.cpp +++ b/FEBioFluid/FEQuemadaFluid.cpp @@ -107,7 +107,10 @@ double FEQuemadaFluid::Tangent_ShearViscosity_StrainRate(FEMaterialPoint& mp) double gdot = sqrt(2 * (D.sqr()).tr()); double grsqrt = sqrt(gdot / m_gc); double dmu = (gdot > 0) ? 4 * m_mu0 * m_H / m_gc * (m_k0 - m_ki) * (1 + grsqrt) / grsqrt / pow(-2 * (1 + grsqrt) + m_H * (m_k0 + m_ki * grsqrt), 3) : 0.0; - return dmu; + + double dmu_dgdot = 0.5 * gdot * dmu; + + return dmu_dgdot; } //-----------------------------------------------------------------------------