oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM > Class Template Reference

#include <generalised_newtonian_constitutive_models.h>

+ Inheritance diagram for oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >:

Public Member Functions

 CassonTanMilRegWithBlendingConstitutiveEquation (double *yield_stress_pt, double *critical_second_invariant_pt)
 "Cutoff regularised" Casson constitutive equation More...
 
double calculate_cutoff_viscosity ()
 
double calculate_viscosity_offset_at_zero_shear (double &cut_off_viscosity)
 
double calculate_zero_shear_viscosity ()
 Function that calculates the viscosity at zero I2. More...
 
void report_cut_off_values (double &cut_off_invariant, double &cut_off_viscosity, double &zero_shear_viscosity)
 Report cutoff values. More...
 
void calculate_fitting_parameters_of_cubic (double &a, double &b)
 
double viscosity (const double &second_invariant_of_rate_of_strain_tensor)
 Viscosity ratio as a fct of strain rate invariant. More...
 
double dviscosity_dinvariant (const double &second_invariant_of_rate_of_strain_tensor)
 Deriv of viscosity w.r.t. strain rate invariant. More...
 
- Public Member Functions inherited from oomph::GeneralisedNewtonianConstitutiveEquation< DIM >
 GeneralisedNewtonianConstitutiveEquation ()
 Empty constructor. More...
 
virtual ~GeneralisedNewtonianConstitutiveEquation ()
 Empty virtual destructor. More...
 

Private Attributes

doubleYield_stress_pt
 Yield stress. More...
 
doubleCritical_second_invariant_pt
 

Detailed Description

template<unsigned DIM>
class oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >

A GeneralisedNewtonianConstitutiveEquation class defining a Casson model fluid using Tanner and Milthorpe's (1983) regularisation with a smooth transition using a cubic

Constructor & Destructor Documentation

◆ CassonTanMilRegWithBlendingConstitutiveEquation()

template<unsigned DIM>
oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::CassonTanMilRegWithBlendingConstitutiveEquation ( double yield_stress_pt,
double critical_second_invariant_pt 
)
inline

"Cutoff regularised" Casson constitutive equation

get the cutoff viscosity

get the zero shear viscosity

905  : GeneralisedNewtonianConstitutiveEquation<DIM>(),
906  Yield_stress_pt(yield_stress_pt),
907  Critical_second_invariant_pt(critical_second_invariant_pt)
908  {
910  double cut_off_viscosity = calculate_cutoff_viscosity();
911 
913  double zero_shear_viscosity = calculate_zero_shear_viscosity();
914 
915  oomph_info << "CassonTanMilRegWithBlendingConstitutiveEquation: "
916  << " zero shear viscosity = " << zero_shear_viscosity
917  << std::endl;
918 
919  oomph_info << "CassonTanMilRegWithBlendingConstitutiveEquation: "
920  << " cut off viscosity = " << cut_off_viscosity << std::endl;
921 
922  oomph_info << " "
923  << " cutoff invariant = " << *Critical_second_invariant_pt
924  << std::endl;
925  }
double * Yield_stress_pt
Yield stress.
Definition: generalised_newtonian_constitutive_models.h:894
double calculate_cutoff_viscosity()
Definition: generalised_newtonian_constitutive_models.h:929
double * Critical_second_invariant_pt
Definition: generalised_newtonian_constitutive_models.h:898
double calculate_zero_shear_viscosity()
Function that calculates the viscosity at zero I2.
Definition: generalised_newtonian_constitutive_models.h:948
OomphInfo oomph_info
Definition: oomph_definitions.cc:319

References oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::calculate_cutoff_viscosity(), oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::calculate_zero_shear_viscosity(), oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::Critical_second_invariant_pt, and oomph::oomph_info.

Member Function Documentation

◆ calculate_cutoff_viscosity()

template<unsigned DIM>
double oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::calculate_cutoff_viscosity ( )
inline

Function that calculates the viscosity at the cutoff invariant Note: this is NOT the viscosity at zero I2

930  {
931  // Calculate the Newtonian cutoff viscosity from the constitutive
932  // equation and the cutoff value of the second invariant
933  return (*Yield_stress_pt) / (2.0 * sqrt(*Critical_second_invariant_pt)) +
934  2.0 * sqrt(*Yield_stress_pt /
936  1.0;
937  }
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134

References oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::Critical_second_invariant_pt, sqrt(), and oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::Yield_stress_pt.

Referenced by oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::calculate_fitting_parameters_of_cubic(), oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::calculate_zero_shear_viscosity(), oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::CassonTanMilRegWithBlendingConstitutiveEquation(), and oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::report_cut_off_values().

◆ calculate_fitting_parameters_of_cubic()

template<unsigned DIM>
void oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::calculate_fitting_parameters_of_cubic ( double a,
double b 
)
inline
973  {
974  // get the viscosity at the cutoff invariant
975  double Cut_off_viscosity = calculate_cutoff_viscosity();
976 
977  // calculate the offset at zero shear
978  double epsilon =
979  calculate_viscosity_offset_at_zero_shear(Cut_off_viscosity);
980 
981  a = 1.0 / pow(*Critical_second_invariant_pt, 39.0 / 4.0) *
982  (pow(*Critical_second_invariant_pt, 27.0 / 4.0) *
983  (2.0 * (Cut_off_viscosity + epsilon) -
984  2.0 * sqrt(2.0) *
986  2.0) -
987  5.0 / 4.0 * (*Yield_stress_pt) *
988  pow(*Critical_second_invariant_pt, 25.0 / 4.0) -
989  1.0 / (2.0 * sqrt(2.0)) * sqrt(*Yield_stress_pt) *
990  pow(*Critical_second_invariant_pt, 13.0 / 2.0));
991 
992  b = 1.0 / pow(*Critical_second_invariant_pt, 27.0 / 4.0) *
993  (pow(*Critical_second_invariant_pt, 19.0 / 4.0) *
994  (-3.0 * (Cut_off_viscosity + epsilon) +
995  3.0 * sqrt(2.0) *
997  3.0) +
998  7.0 / 4.0 * (*Yield_stress_pt) *
999  pow(*Critical_second_invariant_pt, 17.0 / 4.0) +
1000  1.0 / (2.0 * sqrt(2.0)) * sqrt(*Yield_stress_pt) *
1001  pow(*Critical_second_invariant_pt, 9.0 / 2.0));
1002  }
Scalar * b
Definition: benchVecAdd.cpp:17
double calculate_viscosity_offset_at_zero_shear(double &cut_off_viscosity)
Definition: generalised_newtonian_constitutive_models.h:942
const Scalar * a
Definition: level2_cplx_impl.h:32
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 pow(const bfloat16 &a, const bfloat16 &b)
Definition: BFloat16.h:625
double epsilon
Definition: osc_ring_sarah_asymptotics.h:43

References a, b, oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::calculate_cutoff_viscosity(), oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::calculate_viscosity_offset_at_zero_shear(), oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::Critical_second_invariant_pt, oomph::SarahBL::epsilon, Eigen::bfloat16_impl::pow(), sqrt(), and oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::Yield_stress_pt.

Referenced by oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::dviscosity_dinvariant(), and oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::viscosity().

◆ calculate_viscosity_offset_at_zero_shear()

template<unsigned DIM>
double oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::calculate_viscosity_offset_at_zero_shear ( double cut_off_viscosity)
inline

Offset by how much the zero shear rate viscosity lies above the viscosity at I2_cutoff Hard-coded to a value that ensures a smooth transition

943  {
944  return cut_off_viscosity / 5.0;
945  }

Referenced by oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::calculate_fitting_parameters_of_cubic(), and oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::calculate_zero_shear_viscosity().

◆ calculate_zero_shear_viscosity()

template<unsigned DIM>
double oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::calculate_zero_shear_viscosity ( )
inline

◆ dviscosity_dinvariant()

template<unsigned DIM>
double oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::dviscosity_dinvariant ( const double second_invariant_of_rate_of_strain_tensor)
inlinevirtual

Deriv of viscosity w.r.t. strain rate invariant.

Implements oomph::GeneralisedNewtonianConstitutiveEquation< DIM >.

1050  {
1051  // Get the parameters of the cubic
1052  double a;
1053  double b;
1054 
1056 
1057  // Pre-multiply the second invariant with +/-1 depending on whether it's
1058  // positive or not
1059  double sign = -1.0;
1060  if (second_invariant_of_rate_of_strain_tensor >= 0.0)
1061  {
1062  sign = 1.0;
1063  }
1064 
1065  if (sign * second_invariant_of_rate_of_strain_tensor <
1067  {
1068  return sign * 3.0 * a *
1069  pow(sign * second_invariant_of_rate_of_strain_tensor, 2.0) +
1070  2.0 * b * second_invariant_of_rate_of_strain_tensor;
1071  }
1072  else
1073  {
1074  return -sqrt(*Yield_stress_pt) *
1075  second_invariant_of_rate_of_strain_tensor /
1076  (2.0 * sqrt(2.0) *
1077  pow(sign * second_invariant_of_rate_of_strain_tensor,
1078  9.0 / 4.0)) -
1079  (*Yield_stress_pt) * second_invariant_of_rate_of_strain_tensor /
1080  (4.0 * pow(sign * second_invariant_of_rate_of_strain_tensor,
1081  5.0 / 2.0));
1082  }
1083  }
void calculate_fitting_parameters_of_cubic(double &a, double &b)
Definition: generalised_newtonian_constitutive_models.h:972
T sign(T x)
Definition: cxx11_tensor_builtins_sycl.cpp:172

References a, b, oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::calculate_fitting_parameters_of_cubic(), oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::Critical_second_invariant_pt, Eigen::bfloat16_impl::pow(), SYCL::sign(), sqrt(), and oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::Yield_stress_pt.

◆ report_cut_off_values()

template<unsigned DIM>
void oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::report_cut_off_values ( double cut_off_invariant,
double cut_off_viscosity,
double zero_shear_viscosity 
)
inline

◆ viscosity()

template<unsigned DIM>
double oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::viscosity ( const double second_invariant_of_rate_of_strain_tensor)
inlinevirtual

Viscosity ratio as a fct of strain rate invariant.

Implements oomph::GeneralisedNewtonianConstitutiveEquation< DIM >.

1007  {
1008  // Get the parameters of the cubic
1009  double a;
1010  double b;
1011 
1013 
1014  double zero_shear_viscosity = calculate_zero_shear_viscosity();
1015 
1016  // Pre-multiply the second invariant with +/-1 depending on whether it's
1017  // positive or not
1018  double sign = -1.0;
1019  if (second_invariant_of_rate_of_strain_tensor >= 0.0)
1020  {
1021  sign = 1.0;
1022  }
1023 
1024  // if the second invariant is below the cutoff we have a constant,
1025  // Newtonian viscosity
1026  if (sign * second_invariant_of_rate_of_strain_tensor <
1028  {
1029  return a * pow(sign * second_invariant_of_rate_of_strain_tensor, 3.0) +
1030  b * pow(sign * second_invariant_of_rate_of_strain_tensor, 2.0) +
1031  zero_shear_viscosity;
1032  }
1033  else
1034  {
1035  // Calculate the square root of the absolute value of the
1036  // second invariant of the rate of strain tensor
1037  double measure_of_rate_of_strain =
1038  sqrt(sign * second_invariant_of_rate_of_strain_tensor);
1039 
1040  return *Yield_stress_pt / (2.0 * measure_of_rate_of_strain) +
1041  2.0 *
1042  sqrt(*Yield_stress_pt / (2.0 * measure_of_rate_of_strain)) +
1043  1.0;
1044  }
1045  }

References a, b, oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::calculate_fitting_parameters_of_cubic(), oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::calculate_zero_shear_viscosity(), oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::Critical_second_invariant_pt, Eigen::bfloat16_impl::pow(), SYCL::sign(), sqrt(), and oomph::CassonTanMilRegWithBlendingConstitutiveEquation< DIM >::Yield_stress_pt.

Member Data Documentation

◆ Critical_second_invariant_pt

◆ Yield_stress_pt


The documentation for this class was generated from the following file: