oomph::HerschelBulkleyMenDutRegConstitutiveEquation< DIM > Class Template Reference

#include <generalised_newtonian_constitutive_models.h>

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

Public Member Functions

 HerschelBulkleyMenDutRegConstitutiveEquation (double *yield_stress_pt, double *flow_index_pt, double *zero_shear_viscosity_pt)
 "Exponentially regularised" Herschel Bulkley constitutive equation More...
 
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 tau_y More...
 
doubleFlow_index_pt
 power law index n More...
 
doubleZero_shear_viscosity_pt
 the viscosity at zero shear rate More...
 

Detailed Description

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

A GeneralisedNewtonianConstitutiveEquation class defining a Herschel-Bulkley fluid using Mendes and Dutra's (2004) regularisation

Constructor & Destructor Documentation

◆ HerschelBulkleyMenDutRegConstitutiveEquation()

template<unsigned DIM>
oomph::HerschelBulkleyMenDutRegConstitutiveEquation< DIM >::HerschelBulkleyMenDutRegConstitutiveEquation ( double yield_stress_pt,
double flow_index_pt,
double zero_shear_viscosity_pt 
)
inline

"Exponentially regularised" Herschel Bulkley constitutive equation

592  : GeneralisedNewtonianConstitutiveEquation<DIM>(),
593  Yield_stress_pt(yield_stress_pt),
594  Flow_index_pt(flow_index_pt),
595  Zero_shear_viscosity_pt(zero_shear_viscosity_pt)
596  {
597  }
double * Yield_stress_pt
yield stress tau_y
Definition: generalised_newtonian_constitutive_models.h:578
double * Zero_shear_viscosity_pt
the viscosity at zero shear rate
Definition: generalised_newtonian_constitutive_models.h:584
double * Flow_index_pt
power law index n
Definition: generalised_newtonian_constitutive_models.h:581

Member Function Documentation

◆ dviscosity_dinvariant()

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

632  {
633  // Pre-multiply the second invariant with +/-1 depending on whether it's
634  // positive or not
635  // Also, because the viscosity is exactly zero at zero invariant,
636  // we have to add a small value to it
637  double sign = -1.0;
638  double eps = 0.0;
639  if (second_invariant_of_rate_of_strain_tensor == 0.0)
640  {
641  eps = 1.0e-30;
642  sign = 1.0;
643  }
644  else if (second_invariant_of_rate_of_strain_tensor > 0.0)
645  {
646  sign = 1.0;
647  }
648 
649  // Calculate the square root of the absolute value of the
650  // second invariant of the rate of strain tensor
651  double measure_of_rate_of_strain =
652  sqrt(sign * (second_invariant_of_rate_of_strain_tensor + eps));
653 
654  return (1.0 - exp(-(*Zero_shear_viscosity_pt) * 2.0 *
655  measure_of_rate_of_strain / (*Yield_stress_pt))) *
656  (sign * pow(2.0, (*Flow_index_pt) - 2.0) *
657  ((*Flow_index_pt) - 1.0) *
658  pow(sign * (second_invariant_of_rate_of_strain_tensor + eps),
659  ((*Flow_index_pt) - 1.0) / 2.0 - 1.0) -
660  sign * (*Yield_stress_pt) /
661  (4.0 *
662  pow(sign * (second_invariant_of_rate_of_strain_tensor + eps),
663  3.0 / 2.0))) +
664  sign *
665  (((*Zero_shear_viscosity_pt) *
666  exp(-(*Zero_shear_viscosity_pt) * 2.0 *
667  measure_of_rate_of_strain / (*Yield_stress_pt))) /
668  ((*Yield_stress_pt) * measure_of_rate_of_strain)) *
669  (pow(2.0, (*Flow_index_pt) - 1.0) *
670  pow(sign * (second_invariant_of_rate_of_strain_tensor + eps),
671  ((*Flow_index_pt) - 1.0) / 2.0) +
672  (*Yield_stress_pt) / (2.0 * measure_of_rate_of_strain));
673  }
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
double eps
Definition: crbond_bessel.cc:24
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 exp(const bfloat16 &a)
Definition: BFloat16.h:615
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 pow(const bfloat16 &a, const bfloat16 &b)
Definition: BFloat16.h:625
T sign(T x)
Definition: cxx11_tensor_builtins_sycl.cpp:172

References CRBond_Bessel::eps, Eigen::bfloat16_impl::exp(), oomph::HerschelBulkleyMenDutRegConstitutiveEquation< DIM >::Flow_index_pt, Eigen::bfloat16_impl::pow(), SYCL::sign(), sqrt(), oomph::HerschelBulkleyMenDutRegConstitutiveEquation< DIM >::Yield_stress_pt, and oomph::HerschelBulkleyMenDutRegConstitutiveEquation< DIM >::Zero_shear_viscosity_pt.

◆ viscosity()

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

601  {
602  // Pre-multiply the second invariant with +/-1 depending on whether it's
603  // positive or not
604  // Also, because the viscosity is exactly zero at zero invariant,
605  // we have to add a small value to it
606  double sign = -1.0;
607  double eps = 0.0;
608  if (second_invariant_of_rate_of_strain_tensor == 0.0)
609  {
610  eps = 1.0e-30;
611  sign = 1.0;
612  }
613  else if (second_invariant_of_rate_of_strain_tensor > 0.0)
614  {
615  sign = 1.0;
616  }
617 
618  // Calculate the square root of the absolute value of the
619  // second invariant of the rate of strain tensor
620  double measure_of_rate_of_strain =
621  sqrt(sign * (second_invariant_of_rate_of_strain_tensor + eps));
622 
623  return (1.0 - exp(-(*Zero_shear_viscosity_pt) * 2.0 *
624  measure_of_rate_of_strain / (*Yield_stress_pt))) *
625  ((*Yield_stress_pt) / (2.0 * measure_of_rate_of_strain) +
626  pow((2.0 * measure_of_rate_of_strain), *Flow_index_pt - 1.0));
627  }

References CRBond_Bessel::eps, Eigen::bfloat16_impl::exp(), oomph::HerschelBulkleyMenDutRegConstitutiveEquation< DIM >::Flow_index_pt, Eigen::bfloat16_impl::pow(), SYCL::sign(), sqrt(), oomph::HerschelBulkleyMenDutRegConstitutiveEquation< DIM >::Yield_stress_pt, and oomph::HerschelBulkleyMenDutRegConstitutiveEquation< DIM >::Zero_shear_viscosity_pt.

Member Data Documentation

◆ Flow_index_pt

◆ Yield_stress_pt

◆ Zero_shear_viscosity_pt


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