Skip to content

Commit 34df599

Browse files
committed
Added Tangent_ShearViscosity_StrainRate member to all visous fluid materials.
1 parent 95333cf commit 34df599

15 files changed

Lines changed: 108 additions & 1 deletion

FEBioFluid/FEBinghamFluid.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,18 @@ double FEBinghamFluid::ShearViscosity(FEMaterialPoint& pt)
9999
return mu;
100100
}
101101

102+
double FEBinghamFluid::Tangent_ShearViscosity_StrainRate(FEMaterialPoint& mp)
103+
{
104+
FEFluidMaterialPoint& vt = *mp.ExtractData<FEFluidMaterialPoint>();
105+
mat3ds D = vt.RateOfDeformation();
106+
double dmu = 0;
107+
double gdot = sqrt(2 * (D.sqr()).tr());
108+
if (gdot > 0) {
109+
dmu = m_tauy / pow(gdot, 2) * ((1 + m_n * gdot) * exp(-m_n * gdot) - 1);
110+
}
111+
return dmu;
112+
}
113+
102114
//-----------------------------------------------------------------------------
103115
//! bulk viscosity
104116
double FEBinghamFluid::BulkViscosity(FEMaterialPoint& pt)

FEBioFluid/FEBinghamFluid.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ class FEBIOFLUID_API FEBinghamFluid : public FEViscousFluid
4949

5050
//! dynamic viscosity
5151
double ShearViscosity(FEMaterialPoint& mp) override;
52+
53+
//! derivative of shear viscosity w.r.t. strain rate
54+
double Tangent_ShearViscosity_StrainRate(FEMaterialPoint& mp) override;
5255

5356
//! bulk viscosity
5457
double BulkViscosity(FEMaterialPoint& mp) override;

FEBioFluid/FECarreauFluid.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,19 @@ double FECarreauFluid::ShearViscosity(FEMaterialPoint& pt)
9595
return mu;
9696
}
9797

98+
//! derivative of shear viscosity w.r.t. strain rate
99+
double FECarreauFluid::Tangent_ShearViscosity_StrainRate(FEMaterialPoint& mp)
100+
{
101+
FEFluidMaterialPoint& vt = *mp.ExtractData<FEFluidMaterialPoint>();
102+
mat3ds D = vt.RateOfDeformation();
103+
double gdot = sqrt(2 * (D.sqr()).tr());
104+
double lamg2 = m_lam * m_lam * gdot * gdot;
105+
106+
double dmu = 2 * (m_mu0 - m_mui) * (m_n - 1) * m_lam * m_lam * pow(1 + lamg2, (m_n - 3) * 0.5);
107+
108+
return dmu;
109+
}
110+
98111
//-----------------------------------------------------------------------------
99112
//! bulk viscosity
100113
double FECarreauFluid::BulkViscosity(FEMaterialPoint& pt)

FEBioFluid/FECarreauFluid.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ class FEBIOFLUID_API FECarreauFluid : public FEViscousFluid
5050
//! dynamic viscosity
5151
double ShearViscosity(FEMaterialPoint& mp) override;
5252

53+
//! derivative of shear viscosity w.r.t. strain rate
54+
double Tangent_ShearViscosity_StrainRate(FEMaterialPoint& mp) override;
55+
5356
//! bulk viscosity
5457
double BulkViscosity(FEMaterialPoint& mp) override;
5558

FEBioFluid/FECarreauYasudaFluid.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,20 @@ double FECarreauYasudaFluid::ShearViscosity(FEMaterialPoint& pt)
9999
return mu;
100100
}
101101

102+
//! derivative of shear viscosity w.r.t. strain rate
103+
double FECarreauYasudaFluid::Tangent_ShearViscosity_StrainRate(FEMaterialPoint& mp)
104+
{
105+
FEFluidMaterialPoint& vt = *mp.ExtractData<FEFluidMaterialPoint>();
106+
mat3ds D = vt.RateOfDeformation();
107+
double gdot = sqrt(2 * (D.sqr()).tr());
108+
double lamga = pow(m_lam * gdot, m_a);
109+
110+
double dmu = (m_a >= 2) ? 2 * (m_mu0 - m_mui) * (m_n - 1) * pow(m_lam, m_a) * pow(gdot, m_a - 2)
111+
* pow(1 + lamga, (m_n - m_a - 1) / m_a) : 0;
112+
113+
return dmu;
114+
}
115+
102116
//-----------------------------------------------------------------------------
103117
//! bulk viscosity
104118
double FECarreauYasudaFluid::BulkViscosity(FEMaterialPoint& pt)

FEBioFluid/FECarreauYasudaFluid.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ class FEBIOFLUID_API FECarreauYasudaFluid : public FEViscousFluid
5050
//! dynamic viscosity
5151
double ShearViscosity(FEMaterialPoint& mp) override;
5252

53+
//! derivative of shear viscosity w.r.t. strain rate
54+
double Tangent_ShearViscosity_StrainRate(FEMaterialPoint& mp) override;
55+
5356
//! bulk viscosity
5457
double BulkViscosity(FEMaterialPoint& mp) override;
5558

FEBioFluid/FECrossFluid.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,19 @@ double FECrossFluid::ShearViscosity(FEMaterialPoint& pt)
9696
return mu;
9797
}
9898

99+
//! derivative of shear viscosity w.r.t. strain rate
100+
double FECrossFluid::Tangent_ShearViscosity_StrainRate(FEMaterialPoint& mp)
101+
{
102+
FEFluidMaterialPoint& vt = *mp.ExtractData<FEFluidMaterialPoint>();
103+
mat3ds D = vt.RateOfDeformation();
104+
double gdot = sqrt(2 * (D.sqr()).tr());
105+
double lamg = m_lam * gdot;
106+
107+
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);
108+
109+
return dmu;
110+
}
111+
99112
//-----------------------------------------------------------------------------
100113
//! bulk viscosity
101114
double FECrossFluid::BulkViscosity(FEMaterialPoint& pt)

FEBioFluid/FECrossFluid.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ class FEBIOFLUID_API FECrossFluid : public FEViscousFluid
5050
//! dynamic viscosity
5151
double ShearViscosity(FEMaterialPoint& mp) override;
5252

53+
//! derivative of shear viscosity w.r.t. strain rate
54+
double Tangent_ShearViscosity_StrainRate(FEMaterialPoint& mp) override;
55+
5356
//! bulk viscosity
5457
double BulkViscosity(FEMaterialPoint& mp) override;
5558

FEBioFluid/FENewtonianFluid.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,12 @@ double FENewtonianFluid::ShearViscosity(FEMaterialPoint& mp)
106106
return m_mu;
107107
}
108108

109+
//! derivative of shear viscosity w.r.t. strain rate
110+
double FENewtonianFluid::Tangent_ShearViscosity_StrainRate(FEMaterialPoint& mp)
111+
{
112+
return 0.0;
113+
}
114+
109115
//-----------------------------------------------------------------------------
110116
//! bulk viscosity
111117
double FENewtonianFluid::BulkViscosity(FEMaterialPoint& mp)

FEBioFluid/FENewtonianFluid.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@ class FEBIOFLUID_API FENewtonianFluid : public FEViscousFluid
5757
//! dynamic viscosity
5858
double ShearViscosity(FEMaterialPoint& mp) override;
5959

60+
//! derivative of shear viscosity w.r.t. strain rate
61+
double Tangent_ShearViscosity_StrainRate(FEMaterialPoint& mp) override;
62+
6063
//! bulk viscosity
6164
double BulkViscosity(FEMaterialPoint& mp) override;
6265

0 commit comments

Comments
 (0)