oomph::SiskoTanMilRegWithBlendingConstitutiveEquation< DIM > Class Template Reference

#include <generalised_newtonian_constitutive_models.h>

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

Public Member Functions

 SiskoTanMilRegWithBlendingConstitutiveEquation (double *alpha_pt, double *flow_index_pt, double *critical_second_invariant_pt)
 "Cutoff regularised" Sisko 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

doubleAlpha_pt
 pre-factor alpha More...
 
doubleFlow_index_pt
 power law index n More...
 
doubleCritical_second_invariant_pt
 

Detailed Description

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

A GeneralisedNewtonianConstitutiveEquation class defining a Sisko fluid using Tanner and Milthorpe's (1983) regularisation with a smooth transition using a cubic (for n < 1)

Constructor & Destructor Documentation

◆ SiskoTanMilRegWithBlendingConstitutiveEquation()

template<unsigned DIM>
oomph::SiskoTanMilRegWithBlendingConstitutiveEquation< DIM >::SiskoTanMilRegWithBlendingConstitutiveEquation ( double alpha_pt,
double flow_index_pt,
double critical_second_invariant_pt 
)
inline

"Cutoff regularised" Sisko constitutive equation

get the cutoff viscosity

get the zero shear viscosity

704  : GeneralisedNewtonianConstitutiveEquation<DIM>(),
705  Alpha_pt(alpha_pt),
706  Flow_index_pt(flow_index_pt),
707  Critical_second_invariant_pt(critical_second_invariant_pt)
708  {
710  double cut_off_viscosity = calculate_cutoff_viscosity();
711 
713  double zero_shear_viscosity = calculate_zero_shear_viscosity();
714 
715  oomph_info << "SiskoTanMilRegWithBlendingConstitutiveEquation: "
716  << " zero shear viscosity = " << zero_shear_viscosity
717  << std::endl;
718 
719  oomph_info << "SiskoTanMilRegWithBlendingConstitutiveEquation: "
720  << " cut off viscosity = " << cut_off_viscosity << std::endl;
721 
722  oomph_info << " "
723  << " cutoff invariant = " << *Critical_second_invariant_pt
724  << std::endl;
725  }
double * Flow_index_pt
power law index n
Definition: generalised_newtonian_constitutive_models.h:691
double * Alpha_pt
pre-factor alpha
Definition: generalised_newtonian_constitutive_models.h:688
double calculate_zero_shear_viscosity()
Function that calculates the viscosity at zero I2.
Definition: generalised_newtonian_constitutive_models.h:747
double * Critical_second_invariant_pt
Definition: generalised_newtonian_constitutive_models.h:695
double calculate_cutoff_viscosity()
Definition: generalised_newtonian_constitutive_models.h:729
OomphInfo oomph_info
Definition: oomph_definitions.cc:319

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

Member Function Documentation

◆ calculate_cutoff_viscosity()

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

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

730  {
731  // Calculate the Newtonian cutoff viscosity from the constitutive
732  // equation and the cutoff value of the second invariant
733  return 1.0 +
734  (*Alpha_pt) * pow((2.0 * sqrt((*Critical_second_invariant_pt))),
735  *Flow_index_pt - 1.0);
736  }
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 pow(const bfloat16 &a, const bfloat16 &b)
Definition: BFloat16.h:625

References oomph::SiskoTanMilRegWithBlendingConstitutiveEquation< DIM >::Critical_second_invariant_pt, oomph::SiskoTanMilRegWithBlendingConstitutiveEquation< DIM >::Flow_index_pt, Eigen::bfloat16_impl::pow(), and sqrt().

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

◆ calculate_fitting_parameters_of_cubic()

template<unsigned DIM>
void oomph::SiskoTanMilRegWithBlendingConstitutiveEquation< DIM >::calculate_fitting_parameters_of_cubic ( double a,
double b 
)
inline
772  {
773  // get the viscosity at the cutoff invariant
774  double Cut_off_viscosity = calculate_cutoff_viscosity();
775 
776  // calculate the offset at zero shear
777  double epsilon =
778  calculate_viscosity_offset_at_zero_shear(Cut_off_viscosity);
779 
780  a =
781  1.0 /
782  (4.0 * pow((*Critical_second_invariant_pt), 3.0) *
783  pow((*Critical_second_invariant_pt), 5.0 / 2.0)) *
784  (8.0 * (Cut_off_viscosity + epsilon - 1.0) *
785  pow((*Critical_second_invariant_pt), 5.0 / 2.0) +
786  pow(2.0, (*Flow_index_pt)) * ((*Flow_index_pt) - 1.0) * (*Alpha_pt) *
789  pow(2.0, (*Flow_index_pt) + 2.0) * (*Alpha_pt) *
790  pow((*Critical_second_invariant_pt), (*Flow_index_pt) / 2.0 + 2.0));
791 
792  b =
793  1.0 /
794  (4.0 * pow((*Critical_second_invariant_pt), 2.0) *
795  pow((*Critical_second_invariant_pt), 5.0 / 2.0)) *
796  (-12.0 * (Cut_off_viscosity + epsilon - 1.0) *
797  pow((*Critical_second_invariant_pt), 5.0 / 2.0) -
798  pow(2.0, (*Flow_index_pt)) * ((*Flow_index_pt) - 1.0) * (*Alpha_pt) *
801  3.0 * pow(2.0, (*Flow_index_pt) + 1.0) * (*Alpha_pt) *
802  pow((*Critical_second_invariant_pt), (*Flow_index_pt) / 2.0 + 2.0));
803  }
Scalar * b
Definition: benchVecAdd.cpp:17
double calculate_viscosity_offset_at_zero_shear(double &cut_off_viscosity)
Definition: generalised_newtonian_constitutive_models.h:741
const Scalar * a
Definition: level2_cplx_impl.h:32
double epsilon
Definition: osc_ring_sarah_asymptotics.h:43

References a, oomph::SiskoTanMilRegWithBlendingConstitutiveEquation< DIM >::Alpha_pt, b, oomph::SiskoTanMilRegWithBlendingConstitutiveEquation< DIM >::calculate_cutoff_viscosity(), oomph::SiskoTanMilRegWithBlendingConstitutiveEquation< DIM >::calculate_viscosity_offset_at_zero_shear(), oomph::SiskoTanMilRegWithBlendingConstitutiveEquation< DIM >::Critical_second_invariant_pt, oomph::SarahBL::epsilon, oomph::SiskoTanMilRegWithBlendingConstitutiveEquation< DIM >::Flow_index_pt, and Eigen::bfloat16_impl::pow().

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

◆ calculate_viscosity_offset_at_zero_shear()

template<unsigned DIM>
double oomph::SiskoTanMilRegWithBlendingConstitutiveEquation< 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

742  {
743  return cut_off_viscosity / 5.0;
744  }

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

◆ calculate_zero_shear_viscosity()

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

◆ dviscosity_dinvariant()

template<unsigned DIM>
double oomph::SiskoTanMilRegWithBlendingConstitutiveEquation< 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 >.

849  {
850  // Get the parameters of the cubic
851  double a;
852  double b;
853 
855 
856  // Pre-multiply the second invariant with +/-1 depending on whether it's
857  // positive or not
858  double sign = -1.0;
859  if (second_invariant_of_rate_of_strain_tensor >= 0.0)
860  {
861  sign = 1.0;
862  }
863 
864  if (sign * second_invariant_of_rate_of_strain_tensor <
866  {
867  return sign * 3.0 * a *
868  pow(sign * second_invariant_of_rate_of_strain_tensor, 2.0) +
869  2.0 * b * second_invariant_of_rate_of_strain_tensor;
870  }
871  else
872  {
873  return (*Alpha_pt) * pow(2.0, (*Flow_index_pt) - 2.0) *
874  ((*Flow_index_pt) - 1.0) *
875  second_invariant_of_rate_of_strain_tensor *
876  pow(sign * second_invariant_of_rate_of_strain_tensor,
877  ((*Flow_index_pt) - 1.0) / 2.0 - 2.0);
878  }
879  }
void calculate_fitting_parameters_of_cubic(double &a, double &b)
Definition: generalised_newtonian_constitutive_models.h:771
T sign(T x)
Definition: cxx11_tensor_builtins_sycl.cpp:172

References a, oomph::SiskoTanMilRegWithBlendingConstitutiveEquation< DIM >::Alpha_pt, b, oomph::SiskoTanMilRegWithBlendingConstitutiveEquation< DIM >::calculate_fitting_parameters_of_cubic(), oomph::SiskoTanMilRegWithBlendingConstitutiveEquation< DIM >::Critical_second_invariant_pt, oomph::SiskoTanMilRegWithBlendingConstitutiveEquation< DIM >::Flow_index_pt, Eigen::bfloat16_impl::pow(), and SYCL::sign().

◆ report_cut_off_values()

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

◆ viscosity()

template<unsigned DIM>
double oomph::SiskoTanMilRegWithBlendingConstitutiveEquation< 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 >.

808  {
809  // Get the parameters of the cubic
810  double a;
811  double b;
812 
814 
815  double zero_shear_viscosity = calculate_zero_shear_viscosity();
816 
817  // Pre-multiply the second invariant with +/-1 depending on whether it's
818  // positive or not
819  double sign = -1.0;
820  if (second_invariant_of_rate_of_strain_tensor >= 0.0)
821  {
822  sign = 1.0;
823  }
824 
825  // if the second invariant is below the cutoff we have a constant,
826  // Newtonian viscosity
827  if (sign * second_invariant_of_rate_of_strain_tensor <
829  {
830  return a * pow(sign * second_invariant_of_rate_of_strain_tensor, 3.0) +
831  b * pow(sign * second_invariant_of_rate_of_strain_tensor, 2.0) +
832  zero_shear_viscosity;
833  }
834  else
835  {
836  // Calculate the square root of the absolute value of the
837  // second invariant of the rate of strain tensor
838  double measure_of_rate_of_strain =
839  sqrt(sign * second_invariant_of_rate_of_strain_tensor);
840 
841  return 1.0 + (*Alpha_pt) * pow((2.0 * measure_of_rate_of_strain),
842  *Flow_index_pt - 1.0);
843  }
844  }

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

Member Data Documentation

◆ Alpha_pt

◆ Critical_second_invariant_pt

◆ Flow_index_pt


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